roosterjs 9.35.1 → 9.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/rooster-amd-min.js +1 -1
- package/dist/rooster-amd-min.js.map +1 -1
- package/dist/rooster-amd.d.ts +6 -2
- package/dist/rooster-amd.js +25 -24
- package/dist/rooster-amd.js.map +1 -1
- package/dist/rooster-min.js +1 -1
- package/dist/rooster-min.js.map +1 -1
- package/dist/rooster-react.js +53 -53
- package/dist/rooster-react.js.map +1 -1
- package/dist/rooster.d.ts +6 -2
- package/dist/rooster.js +25 -24
- package/dist/rooster.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rooster-react.js","mappings":";;;;;;;;;;;;;;AAAA,sDAA+B;AAC/B,sJAA2F;AAC3F,oGAA6D;AAC7D,oIAAyE;AACzE,uLAG8C;AAK9C,IAAM,UAAU,GAAG,4BAAc,EAAC;IAC9B,WAAW,EAAE;QACT,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,KAAK;QACb,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE;YACP,WAAW,EAAE,KAAK;SACrB;KACJ;IACD,iBAAiB,EAAE;QACf,WAAW,EAAE,aAAa;KAC7B;IACD,sBAAsB,EAAE;QACpB,WAAW,EAAE,SAAS;KACzB;CACJ,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAC7B,IAAyB,EACzB,QAAiC,EACjC,OAGS;IAET,IAAM,GAAG,GAAG,IAAI,CAAC,GAAc,CAAC;IAChC,IAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;IAEjD,OAAO,CACH,gCAAQ,OAAO,EAAE,WAAC,IAAI,cAAO,CAAC,CAAC,EAAE,IAAI,CAAC,EAAhB,CAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI;QACpD,6BACI,SAAS,EACL,UAAU,CAAC,WAAW;gBACtB,GAAG;gBACH,CAAC,GAAG,IAAI,gBAAgB,IAAI,GAAG,IAAI,sBAAsB;oBACrD,CAAC,CAAC,UAAU,CAAC,sBAAsB;oBACnC,CAAC,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAEvC,KAAK,EAAE;gBACH,eAAe,EAAE,WAAW;aAC/B,GAAQ,CACR,CACZ,CAAC;AACN,CAAC;AA1BD,8CA0BC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,QAA+B;IAClE,OAAO;QACH,KAAK,EAAE,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,+CAA4B,CAAC,CAAC,CAAC,mCAAsB;QACvF,aAAa,EAAE,6DAA2B,GAAE;QAC5C,gBAAgB,EAAE,IAAI;QACtB,UAAU,EACN,QAAQ,IAAI,YAAY;YACpB,CAAC,CAAC,UAAC,IAAI,EAAE,OAAO,IAAK,wBAAiB,CAAC,IAAI,EAAE,mCAAgB,EAAE,OAAO,CAAC,EAAlD,CAAkD;YACvE,CAAC,CAAC,UAAC,IAAI,EAAE,OAAO,IAAK,wBAAiB,CAAC,IAAI,EAAE,uBAAU,EAAE,OAAO,CAAC,EAA5C,CAA4C;QACzE,2BAA2B,EAAE;YACzB,SAAS,EAAE,kEAAgC,GAAE;SAChD;KACJ,CAAC;AACN,CAAC;AAbD,wDAaC;;;;;;;;;;;;;;ACnFD,qJAAmE;AAA1D,mJAAuB;AAChC,mIAAuD;AAA9C,iIAAiB;AAC1B,iKAAuE;AAA9D,kJAAsB;;;;;;;;;;;;;;ACA/B;;GAEG;AACH,IAAM,gBAAgB,GAAwC;IAC1D,mBAAmB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC5E,oBAAoB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC7E,qBAAqB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC9E,qBAAqB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC9E,kBAAkB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC3E,sBAAsB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC/E,wBAAwB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IACjF,yBAAyB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAClF,0BAA0B,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IACnF,0BAA0B,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IACnF,uBAAuB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAChF,2BAA2B,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IACpF,oBAAoB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC7E,wBAAwB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IACjF,mBAAmB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC5E,uBAAuB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAChF,yBAAyB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAClF,oBAAoB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;CAChF,CAAC;AAoCO,4CAAgB;AAlCzB;;;GAGG;AACH,IAAM,4BAA4B,GAAwC;IACtE,mBAAmB,EAAE,MAAM;IAC3B,oBAAoB,EAAE,OAAO;IAC7B,qBAAqB,EAAE,QAAQ;IAC/B,qBAAqB,EAAE,QAAQ;IAC/B,kBAAkB,EAAE,KAAK;IACzB,sBAAsB,EAAE,SAAS;IACjC,wBAAwB,EAAE,YAAY;IACtC,yBAAyB,EAAE,aAAa;IACxC,0BAA0B,EAAE,cAAc;IAC1C,0BAA0B,EAAE,cAAc;IAC1C,uBAAuB,EAAE,WAAW;IACpC,2BAA2B,EAAE,eAAe;IAC5C,oBAAoB,EAAE,OAAO;IAC7B,wBAAwB,EAAE,YAAY;IACtC,mBAAmB,EAAE,MAAM;IAC3B,uBAAuB,EAAE,WAAW;IACpC,yBAAyB,EAAE,aAAa;IACxC,oBAAoB,EAAE,OAAO;CAChC,CAAC;AAWyB,oEAA4B;AATvD;;;;GAIG;AACH,SAAS,uBAAuB,CAAC,GAAwB;IACrD,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAEwD,0DAAuB;;;;;;;;;;;;;;AC7DhF,oGAA6D;AAE7D,IAAM,UAAU,GAAG,4BAAc,EAAC;IAC9B,oBAAoB,EAAE;QAClB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE;YACJ,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,QAAQ;SACrB;KACJ;IACD,aAAa,EAAE;QACX,OAAO,EAAE,cAAc;QACvB,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,UAAU,EAAE;YACR,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,aAAa;YACzB,MAAM,EAAE,MAAM;SACjB;KACJ;CACJ,CAAC,CAAC;AAEH;;GAEG;AACH,SAAgB,gCAAgC;IAC5C,OAAO,UAAU,CAAC,oBAAoB,CAAC;AAC3C,CAAC;AAFD,4EAEC;AAED;;GAEG;AACH,SAAgB,2BAA2B;IACvC,OAAO,UAAU,CAAC,aAAa,CAAC;AACpC,CAAC;AAFD,kEAEC;;;;;;;;;;;;;;AClCD;;GAEG;AACH,IAAM,UAAU,GAAkC;IAC9C,kBAAkB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC3E,mBAAmB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC5E,oBAAoB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC7E,oBAAoB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC7E,iBAAiB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC1E,oBAAoB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC7E,aAAa,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IACtE,cAAc,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IACvE,eAAe,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IACxE,eAAe,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IACxE,YAAY,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IACrE,eAAe,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IACxE,iBAAiB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC1E,kBAAkB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC3E,mBAAmB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC5E,mBAAmB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC5E,gBAAgB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IACzE,mBAAmB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC5E,mBAAmB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC5E,oBAAoB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC7E,qBAAqB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC9E,qBAAqB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC9E,kBAAkB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC3E,qBAAqB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC9E,cAAc,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IACvE,kBAAkB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC3E,aAAa,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IACtE,iBAAiB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC1E,mBAAmB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC5E,cAAc,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;CAC1E,CAAC;AA+CO,gCAAU;AA7CnB;;GAEG;AACH,IAAM,sBAAsB,GAAkC;IAC1D,kBAAkB,EAAE,YAAY;IAChC,mBAAmB,EAAE,aAAa;IAClC,oBAAoB,EAAE,cAAc;IACpC,oBAAoB,EAAE,cAAc;IACpC,iBAAiB,EAAE,WAAW;IAC9B,oBAAoB,EAAE,cAAc;IACpC,aAAa,EAAE,MAAM;IACrB,cAAc,EAAE,OAAO;IACvB,eAAe,EAAE,QAAQ;IACzB,eAAe,EAAE,QAAQ;IACzB,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,QAAQ;IACzB,iBAAiB,EAAE,WAAW;IAC9B,kBAAkB,EAAE,YAAY;IAChC,mBAAmB,EAAE,aAAa;IAClC,mBAAmB,EAAE,aAAa;IAClC,gBAAgB,EAAE,UAAU;IAC5B,mBAAmB,EAAE,aAAa;IAClC,mBAAmB,EAAE,aAAa;IAClC,oBAAoB,EAAE,cAAc;IACpC,qBAAqB,EAAE,eAAe;IACtC,qBAAqB,EAAE,eAAe;IACtC,kBAAkB,EAAE,YAAY;IAChC,qBAAqB,EAAE,eAAe;IACtC,cAAc,EAAE,OAAO;IACvB,kBAAkB,EAAE,YAAY;IAChC,aAAa,EAAE,MAAM;IACrB,iBAAiB,EAAE,WAAW;IAC9B,mBAAmB,EAAE,aAAa;IAClC,cAAc,EAAE,OAAO;CAC1B,CAAC;AAWmB,wDAAsB;AAT3C;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,GAAkB;IACzC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAE4C,8CAAiB;;;;;;;;;;;;;;AC5E9D,oJAA8D;AAArD,wIAAiB;AAC1B,sJAAgE;AAAvD,2IAAkB;;;;;;;;;;;;;;ACT3B,sDAA+B;AAC/B,iEAAsC;AACtC,gGAA0D;AAC1D,kHAAoE;AAIpE;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,SAAyB,EAAE,KAAmB;IAC5E,OAAO;QACH,eAAe,EAAE,iBAAO;YACpB,IAAM,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC;YACpC,IAAM,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACrC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAE1B,QAAQ,CAAC,MAAM,CACX,oBAAC,+BAAc,IAAC,MAAM,EAAE,GAAG,CAAC,WAAY;gBACpC,oBAAC,qBAAa,IAAC,KAAK,EAAE,KAAK,IAAG,OAAO,CAAiB,CACzC,EACjB,GAAG,CACN,CAAC;YAEF,OAAO;gBACH,QAAQ,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;gBACrC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC,CAAC;QACN,CAAC;QACD,aAAa,EAAE;;YACX,IAAM,GAAG,GACL,SAAS;iBACT,eAAS,CAAC,aAAa,CAAC,WAAW,0CAAE,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAC;YAE/E,OAAO,GAAG,IAAI,KAAK,CAAC;QACxB,CAAC;KACJ,CAAC;AACN,CAAC;AA3BD,8CA2BC;;;;;;;;;;;;;;ACtCD;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAC9B,OAAwC,EACxC,GAAM,EACN,aAAgB;IAEhB,IAAM,GAAG,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,GAAG,CAAC,CAAC;IAE3B,IAAI,OAAO,GAAG,IAAI,UAAU,EAAE;QAC1B,OAAO,GAAG,EAAE,CAAC;KAChB;SAAM,IAAI,OAAO,GAAG,IAAI,QAAQ,EAAE;QAC/B,OAAO,GAAG,CAAC;KACd;SAAM;QACH,OAAO,aAAa,CAAC;KACxB;AACL,CAAC;AAdD,gDAcC;;;;;;;;;;;;;;ACrBD;;GAEG;AACH,SAAgB,oBAAoB,CAAC,WAA+B,EAAE,YAAyB;IAC3F,IAAI,WAAW,EAAE;QACb,OAAO,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;KACpD;SAAM;QACH,MAAM,IAAI,KAAK,CACX,4HAA4H,CAC/H,CAAC;KACL;AACL,CAAC;AARD,oDAQC;;;;;;;;;;;;;;ACbD,6KAA2E;AAAlE,0JAAuB;AAChC,gLAA8E;AAArE,gKAAyB;AAClC,mLAAgF;AAAvE,mKAA0B;AACnC,uLAAkF;AAAzE,sKAA2B;AACpC,sLAAkF;AAAzE,sKAA2B;;;;;;;;;;;;;;ACJpC,iLAA+E;AAC/E,2HAA2F;AAC3F,2HAAkG;AAClG,mKAA0E;AAM1E,IAAM,SAAS,GAAG,EAAE,CAAC;AACrB,IAAM,UAAU,GAAG,EAAE,CAAC;AAEtB,IAAM,oBAAoB,GAA6D;IACnF,GAAG,EAAE,sBAAsB;IAC3B,eAAe,EAAE,oBAAoB;IACrC,OAAO,EAAE,UAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW;QAC3C,IAAM,KAAK,GAAG,IAAwB,CAAC;QACvC,IAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC;QAE5B,qCAAe,EACX,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB;YACI,OAAO,EAAE;gBACL,QAAQ,EAAE,IAAI;gBACd,gBAAgB,EAAE,IAAI;gBACtB,SAAS,EAAE,SAAS;aACvB;SACJ,EACD,OAAO,CACV,CAAC,IAAI,CAAC,gBAAM;YACT,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,eAAe,CAAC;gBACnB,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,IAAI,MAAM,EAAE;gBACR,iDAAe,EAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;aAC3C;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAC;AAEF,IAAM,OAAO,GAAqD;IAC9D,wBAAwB,EAAE,CAAC;IAC3B,sBAAsB,EAAE,IAAI;IAC5B,uBAAuB,EAAE,GAAG;IAC5B,yBAAyB,EAAE,CAAC;CAC/B,CAAC;AAEF,IAAM,mBAAmB,GAA6D;IAClF,GAAG,EAAE,qBAAqB;IAC1B,eAAe,EAAE,MAAM;IACvB,QAAQ,EAAE;QACN,wBAAwB,EAAE,UAAU;QACpC,sBAAsB,EAAE,OAAO;QAC/B,uBAAuB,EAAE,QAAQ;QACjC,yBAAyB,EAAE,UAAU;KACxC;IACD,OAAO,EAAE,UAAC,GAAG,EAAE,MAAM,EAAE,CAAC;;QACpB,IAAM,SAAS,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3C,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE;YAC1C,OAAO;SACV;QAED,IAAM,UAAU,GAAG,aAAO,CAAC,GAAG,CAAC,mCAAI,CAAC,CAAC;QAErC,IAAI,UAAU,GAAG,CAAC,EAAE;YACV,SAAkC,SAAS,CAAC,KAAK,EAA/C,YAAY,oBAAE,aAAa,mBAAoB,CAAC;YAExD,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;SACvE;aAAM;YACH,UAAU,CAAC,MAAM,CAAC,CAAC;SACtB;IACL,CAAC;CACJ,CAAC;AAEF,IAAM,mBAAmB,GAA6D;IAClF,GAAG,EAAE,qBAAqB;IAC1B,eAAe,EAAE,cAAc;IAC/B,QAAQ,EAAE;QACN,uBAAuB,EAAE,MAAM;QAC/B,wBAAwB,EAAE,OAAO;KACpC;IACD,UAAU,EAAE,UAAC,CAAC,EAAE,IAAI,EAAE,WAAW;QAC7B,OAAO,CACH,CAAC,CAAC,YAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,kBAAkB,CAAC,QAAQ,CAAC;YAC3C,WAAW,CAAC,kBAAkB,CAAC,IAAwB,CAAC,CAC3D,CAAC;IACN,CAAC;IACD,OAAO,EAAE,UAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS;QAC5D,QAAQ,GAAG,EAAE;YACT,KAAK,yBAAyB;gBAC1B,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBACrC,MAAM;YACV,KAAK,0BAA0B;gBAC3B,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBACpC,MAAM;SACb;IACL,CAAC;CACJ,CAAC;AAEF,IAAM,iBAAiB,GAA6D;IAChF,GAAG,EAAE,mBAAmB;IACxB,eAAe,EAAE,YAAY;IAC7B,QAAQ,EAAE;QACN,mCAAmC,EAAE,mBAAmB;QACxD,iCAAiC,EAAE,iBAAiB;KACvD;IACD,UAAU,EAAE,UAAC,CAAC,EAAE,IAAI,EAAE,WAAW;QAC7B,OAAO,CACH,CAAC,CAAC,YAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,kBAAkB,CAAC,QAAQ,CAAC;YAC3C,WAAW,CAAC,kBAAkB,CAAC,IAAwB,CAAC,CAC3D,CAAC;IACN,CAAC;IACD,OAAO,EAAE,UAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS;QAC5D,QAAQ,GAAG,EAAE;YACT,KAAK,qCAAqC;gBACtC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,CAAC,YAAY,CAAC,CAAC;gBACnC,MAAM;YACV,KAAK,mCAAmC;gBACpC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,CAAC,UAAU,CAAC,CAAC;gBACjC,MAAM;SACb;IACL,CAAC;CACJ,CAAC;AAEF,IAAM,iBAAiB,GAA6D;IAChF,GAAG,EAAE,mBAAmB;IACxB,eAAe,EAAE,YAAY;IAC7B,UAAU,EAAE,UAAC,CAAC,EAAE,IAAI,EAAE,WAAW;QAC7B,OAAO,CACH,CAAC,CAAC,YAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,kBAAkB,CAAC,MAAM,CAAC;YACzC,WAAW,CAAC,kBAAkB,CAAC,IAAwB,CAAC,CAC3D,CAAC;IACN,CAAC;IACD,OAAO,EAAE,UAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS;QAC1D,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,EAAE,CAAC;IAC3B,CAAC;CACJ,CAAC;AAEF,IAAM,mBAAmB,GAA6D;IAClF,GAAG,EAAE,qBAAqB;IAC1B,eAAe,EAAE,cAAc;IAC/B,OAAO,EAAE,UAAC,CAAC,EAAE,MAAM,EAAE,IAAI;QACrB,WAAW,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;CACJ,CAAC;AAEF,IAAM,iBAAiB,GAA6D;IAChF,GAAG,EAAE,mBAAmB;IACxB,eAAe,EAAE,YAAY;IAC7B,OAAO,EAAE,UAAC,CAAC,EAAE,MAAM;;QACf,YAAM,CAAC,WAAW,EAAE,0CAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;CACJ,CAAC;AAEF,IAAM,gBAAgB,GAA6D;IAC/E,GAAG,EAAE,kBAAkB;IACvB,eAAe,EAAE,WAAW;IAC5B,OAAO,EAAE,UAAC,CAAC,EAAE,MAAM;;QACf,YAAM,CAAC,WAAW,EAAE,0CAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;CACJ,CAAC;AAEF,SAAS,wBAAwB,CAAC,MAAe,EAAE,CAAO;IACtD,IAAM,SAAS,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;IAC3C,OAAO,UAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,MAAK,OAAO,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,SAAgB,2BAA2B,CACvC,WAAyB,EACzB,OAAsD;IAEtD,OAAO,yDAAyB,EAC5B,WAAW,EACX;QACI,oBAAoB;QACpB,mBAAmB;QACnB,iBAAiB;QACjB,mBAAmB;QACnB,mBAAmB;QACnB,iBAAiB;QACjB,iBAAiB;QACjB,gBAAgB;KACnB,EACD,OAAO,EACP,wBAAwB,EACxB,WAAW,CACd,CAAC;AACN,CAAC;AApBD,kEAoBC;AAED,SAAS,WAAW,CAAC,MAAe;IAChC,MAAM,CAAC,kBAAkB,CACrB,eAAK;QACD,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,mDAAiB,EAAC,KAAK,EAAE,UAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ;YAC5C,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,iBAAO;gBACrB,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,IAAI,MAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,KAAI,WAAW,EAAE;oBACnE,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAE9C,IAAI,KAAK,IAAI,CAAC,EAAE;wBACZ,6CAAW,EAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;wBAC7C,OAAO,GAAG,IAAI,CAAC;qBAClB;iBACJ;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACnB,CAAC,EACD;QACI,OAAO,EAAE,aAAa;KACzB,CACJ,CAAC;AACN,CAAC;AAED,SAAS,kBAAkB,CACvB,MAAe,EACf,UAAkB,EAClB,YAAoB,EACpB,aAAqB;IAErB,6DAA2B,EAAC,MAAM,EAAE,aAAa,EAAE,iBAAO;QACtD,qDAAmB,EAAC,OAAO,EAAE,gBAAM;YAC/B,IAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAC7B;gBACI,YAAY;gBACZ,aAAa;gBACb,WAAW,EAAE,CAAC;gBACd,YAAY,EAAE,CAAC;gBACf,UAAU,EAAE,CAAC;gBACb,aAAa,EAAE,CAAC;gBAChB,QAAQ,EAAE,CAAC;aACd,EACD,MAAM,CACT,CAAC;YAEF,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACrB,SAAS,EACT,WAAW,CAAC,YAAY;gBACpB,CAAC,CAAC,GAAG,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC;gBACxD,UAAU,CACjB,CAAC;YACF,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACtB,UAAU,EACV,WAAW,CAAC,aAAa;gBACrB,CAAC,CAAC,GAAG,WAAW,CAAC,UAAU,GAAG,WAAW,CAAC,aAAa,CAAC;gBACxD,UAAU,CACjB,CAAC;YACF,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;YAC/B,WAAW,CAAC,QAAQ,GAAG,SAAS,CAAC;YACjC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;YACvC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;YAEzC,OAAO,WAAW,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,UAAU,CAAC,MAAe;IAC/B,6DAA2B,EAAC,MAAM,EAAE,aAAa,EAAE,iBAAO;QACtD,qDAAmB,EAAC,OAAO,EAAE,cAAM,WAAI,EAAJ,CAAI,CAAC,CAAC;QAEzC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QAC5B,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QAE7B,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC;IACrC,CAAC,CAAC,CAAC;AACP,CAAC;;;;;;;;;;;;;;ACpRD,iLAA+E;AAC/E,2HAA4E;AAC5E,2HAAiE;AACjE,mKAA0E;AAM1E,IAAM,uBAAuB,GAAiD;IAC1E,GAAG,EAAE,yBAAyB;IAC9B,eAAe,EAAE,cAAc;IAC/B,OAAO,EAAE,UAAC,CAAC,EAAE,MAAM,EAAE,IAAI;QACrB,oDAAkB,EAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC;CACJ,CAAC;AAEF,IAAM,sBAAsB,GAAiD;IACzE,GAAG,EAAE,wBAAwB;IAC7B,eAAe,EAAE,qBAAqB;IACtC,OAAO,EAAE,UAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW;QAC3C,IAAM,SAAS,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE/C,IAAI,SAAS,EAAE;YACH,QAAI,GAAS,SAAS,KAAlB,EAAE,EAAE,GAAK,SAAS,GAAd,CAAe;YAC/B,IAAI,aAAW,GAAG,IAAI,CAAC,KAAK,CAAC;YAE7B,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE;gBAChE,IAAI,KAAK,KAAK,EAAE,EAAE;oBACd,MAAM;iBACT;qBAAM,IAAI,8CAAY,EAAC,KAAK,EAAE,cAAc,CAAC,IAAI,iDAAe,EAAC,KAAK,EAAE,IAAI,CAAC,EAAE;oBAC5E,aAAW,IAAI,CAAC,CAAC;iBACpB;aACJ;YAED,qCAAe,EACX,WAAW,EACX,wBAAwB,EACxB,qBAAqB,EACrB;gBACI,KAAK,EAAE;oBACH,QAAQ,EAAE,yBAAyB;oBACnC,gBAAgB,EAAE,cAAc;oBAChC,SAAS,EAAE,aAAW,CAAC,QAAQ,EAAE;iBACpC;aACJ,EACD,OAAO,CACV,CAAC,IAAI,CAAC,gBAAM;gBACT,MAAM,CAAC,KAAK,EAAE,CAAC;gBAEf,IAAI,MAAM,EAAE;oBACR,IAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAEtC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,aAAW,EAAE;wBACrC,oDAAkB,EAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;qBAClD;iBACJ;YACL,CAAC,CAAC,CAAC;SACN;IACL,CAAC;CACJ,CAAC;AAEF,SAAS,cAAc,CAAC,MAAe,EAAE,IAAU;IAC/C,IAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;IACxC,IAAM,EAAE,GAAG,SAAS,CAAC,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5D,IAAM,IAAI,GAAG,EAAE,IAAK,SAAS,CAAC,0BAA0B,CAAC,EAAE,EAAE,IAAI,CAA6B,CAAC;IAE/F,OAAO,KAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,iBAAiB,EAAC,CAAC,CAAC,EAAE,IAAI,QAAE,EAAE,MAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,SAAgB,0BAA0B,CACtC,OAAuD;IAEvD,OAAO,yDAAyB,EAC5B,UAAU,EACV,CAAC,uBAAuB,EAAE,sBAAsB,CAAC,EACjD,OAAO,EACP,UAAC,MAAM,EAAE,IAAI,IAAK,QAAC,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,EAA9B,CAA8B,CACnD,CAAC;AACN,CAAC;AATD,gEASC;;;;;;;;;;;;;;;ACnFD,iLAA+E;AAC/E,2HAA2E;AAC3E,iLAAkF;AAIlF,sMAG6D;AAW7D,qKAGkD;AAElD,IAAM,qBAAqB,GAAgE;IACvF,wBAAwB,EAAE,aAAa;IACvC,wBAAwB,EAAE,aAAa;IACvC,uBAAuB,EAAE,YAAY;IACrC,wBAAwB,EAAE,aAAa;IACvC,wBAAwB,EAAE,aAAa;IACvC,yBAAyB,EAAE,cAAc;IACzC,sBAAsB,EAAE,WAAW;IACnC,uBAAuB,EAAE,YAAY;IACrC,uBAAuB,EAAE,YAAY;IACrC,sBAAsB,EAAE,WAAW;IACnC,uBAAuB,EAAE,YAAY;IACrC,uBAAuB,EAAE,YAAY;IACrC,8BAA8B,EAAE,mBAAmB;IACnD,4BAA4B,EAAE,iBAAiB;IAC/C,sBAAsB,EAAE,eAAe;IACvC,wBAAwB,EAAE,iBAAiB;IAC3C,uBAAuB,EAAE,gBAAgB;IACzC,qBAAqB,EAAE,cAAc;IACrC,wBAAwB,EAAE,iBAAiB;IAC3C,wBAAwB,EAAE,iBAAiB;IAC3C,2BAA2B,EAAE,WAAW;IACxC,6BAA6B,EAAE,aAAa;IAC5C,4BAA4B,EAAE,YAAY;CAC7C,CAAC;AAEF,IAAM,WAAW,mDACV,mCAAgB;IACnB,qCAAqC;IACrC,sBAAsB,EAAoB,IAAK,GAClD,CAAC;AAEF,SAAS,OAAO,CAAC,GAA+B,EAAE,MAAe;IAC7D,IAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAE7C,IAAI,SAAS,EAAE;QACX,2CAAS,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;KAChC;AACL,CAAC;AAED,IAAM,uBAAuB,GAAsD;IAC/E,GAAG,EAAE,qBAAqB;IAC1B,eAAe,EAAE,QAAQ;IACzB,QAAQ,EAAE;QACN,wBAAwB,EAAE,cAAc;QACxC,wBAAwB,EAAE,cAAc;QACxC,uBAAuB,EAAE,aAAa;QACtC,wBAAwB,EAAE,cAAc;KAC3C;IACD,OAAO;CACV,CAAC;AAEF,IAAM,uBAAuB,GAAsD;IAC/E,GAAG,EAAE,qBAAqB;IAC1B,eAAe,EAAE,QAAQ;IACzB,QAAQ,EAAE;QACN,yBAAyB,EAAE,eAAe;QAC1C,sBAAsB,EAAE,YAAY;QACpC,wBAAwB,EAAE,cAAc;KAC3C;IACD,OAAO;CACV,CAAC;AAEF,IAAM,sBAAsB,GAAqD;IAC7E,GAAG,EAAE,oBAAoB;IACzB,eAAe,EAAE,OAAO;IACxB,QAAQ,EAAE;QACN,uBAAuB,EAAE,aAAa;QACtC,uBAAuB,EAAE,aAAa;QACtC,sBAAsB,EAAE,YAAY;QACpC,uBAAuB,EAAE,aAAa;QACtC,GAAG,EAAE,GAAG;QACR,uBAAuB,EAAE,sBAAsB;KAClD;IACD,OAAO;CACV,CAAC;AAEF,IAAM,sBAAsB,GAAqD;IAC7E,GAAG,EAAE,oBAAoB;IACzB,eAAe,EAAE,OAAO;IACxB,QAAQ,EAAE;QACN,8BAA8B,EAAE,oBAAoB;QACpD,4BAA4B,EAAE,kBAAkB;KACnD;IACD,OAAO;CACV,CAAC;AAEF,IAAM,sBAAsB,GAAqD;IAC7E,GAAG,EAAE,oBAAoB;IACzB,eAAe,EAAE,YAAY;IAC7B,QAAQ,EAAE;QACN,sBAAsB,EAAE,YAAY;QACpC,wBAAwB,EAAE,cAAc;QACxC,uBAAuB,EAAE,aAAa;QACtC,GAAG,EAAE,GAAG;QACR,qBAAqB,EAAE,WAAW;QAClC,wBAAwB,EAAE,cAAc;QACxC,wBAAwB,EAAE,cAAc;KAC3C;IACD,OAAO;CACV,CAAC;AAEF,IAAM,2BAA2B,GAA0D;IACvF,GAAG,EAAE,yBAAyB;IAC9B,eAAe,EAAE,aAAa;IAC9B,QAAQ,EAAE;QACN,2BAA2B,EAAE,YAAY;QACzC,6BAA6B,EAAE,cAAc;QAC7C,4BAA4B,EAAE,aAAa;KAC9C;IACD,OAAO;CACV,CAAC;AAEF,IAAM,0BAA0B,GAAqD;IACjF,GAAG,EAAE,wBAAwB;IAC7B,eAAe,EAAE,SAAS;IAC1B,QAAQ,EAAE,+CAA4B;IACtC,OAAO,EAAE,UAAC,GAAG,EAAE,MAAM;QACjB,mDAAiB,EAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;IAC/D,CAAC;IACD,UAAU,EAAE,UAAC,IAAI,EAAE,KAAK,IAAK,gDAAiB,EAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,EAA3C,CAA2C;IACxE,aAAa,EAAE,6DAA2B,GAAE;IAC5C,2BAA2B,EAAE;QACzB,SAAS,EAAE,kEAAgC,GAAE;KAChD;CACJ,CAAC;AAEF,SAAS,eAAe,CAAC,MAAe,EAAE,IAAU;IAChD,IAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;IACxC,IAAM,EAAE,GAAG,SAAS,CAAC,0BAA0B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/D,IAAM,KAAK,GAAG,EAAE,IAAI,SAAS,CAAC,0BAA0B,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAEtE,OAAO,MAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,iBAAiB,EAAC,CAAC,CAAC,EAAE,KAAK,SAAE,EAAE,MAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,SAAgB,2BAA2B,CACvC,OAAsD;IAEtD,OAAO,yDAAyB,EAC5B,WAAW,EACoC;QAC3C,uBAAuB;QACvB,uBAAuB;QACvB,sBAAsB;QACtB,sBAAsB;QACtB,sBAAsB;QACtB,2BAA2B;QAC3B,0BAA0B;KAC7B,EACD,OAAO,EACP,UAAC,MAAM,EAAE,IAAI,IAAK,QAAC,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,EAA/B,CAA+B,CACpD,CAAC;AACN,CAAC;AAjBD,kEAiBC;;;;;;;;;;;;;;;ACrLD,sDAA+B;AAC/B,mIAAwE;AACxE,kHAAoE;AACpE,uKAA+E;AAI/E,SAAS,cAAc,CAAC,KAAqC;IACzD,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,OAAO,KAAK,CAAC,GAAG,CACZ,cAAI;QACA,WAAI,IAAI;YACJ,IAAI,EAAE,GAAG;YACT,GAAG,EAAE,UAAU,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,EAAE;SAC9C;IAHD,CAGC,CACR,CAAC;AACN,CAAC;AAED;IAAgC,kDAA0C;IAKtE;QAAA,YACI,kBAAM;YACF,MAAM,EAAE,UAAC,SAAS,EAAE,KAAK,EAAE,SAAS;gBAChC,IAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;gBAE9C,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC5B,KAAI,CAAC,QAAQ,GAAG,+CAAoB,EAChC,KAAI,CAAC,WAAW,EAChB,oBAAC,+BAAc,IACX,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,eAAe,GACxB,CACL,CAAC;iBACL;YACL,CAAC;YACD,OAAO,EAAE,WAAC;;gBACN,WAAI,CAAC,QAAQ,+CAAb,KAAI,CAAa,CAAC;gBAClB,KAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACzB,CAAC;SACJ,CAAC,SACL;QAxBO,iBAAW,GAAuB,IAAI,CAAC;QACvC,cAAQ,GAAwB,IAAI,CAAC;;IAuB7C,CAAC;IAED,0CAAc,GAAd,UAAe,WAAwB;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IACL,wBAAC;AAAD,CAAC,CA/B+B,uDAAqB,GA+BpD;AAED;;GAEG;AACH,SAAgB,uBAAuB;IACnC,OAAO,IAAI,iBAAiB,EAAE,CAAC;AACnC,CAAC;AAFD,0DAEC;;;;;;;;;;;;;;;ACxDD,iKAA2E;AAC3E,2HAA4D;AAM5D;;GAEG;AACH;IAMI;;;;;;OAMG;IACH,iCACY,QAAgB,EAChB,KAA2C,EAC3C,OAAmC,EACnC,kBAA6D,EAC7D,OAAkB;QAJlB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,UAAK,GAAL,KAAK,CAAsC;QAC3C,YAAO,GAAP,OAAO,CAA4B;QACnC,uBAAkB,GAAlB,kBAAkB,CAA2C;QAC7D,YAAO,GAAP,OAAO,CAAW;QAhBtB,WAAM,GAAmB,IAAI,CAAC;QAC9B,eAAU,GAAgB,IAAI,CAAC;QAC/B,gBAAW,GAAuB,IAAI,CAAC;IAe5C,CAAC;IAEJ;;OAEG;IACH,yCAAO,GAAP;QACI,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,4CAAU,GAAV,UAAW,MAAe;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,yCAAO,GAAP;QACI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,qDAAmB,GAAnB,UAAoB,IAAU;QAA9B,iBAUC;;QATG,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,OAAO,MAAM,KAAI,UAAI,CAAC,kBAAkB,+CAAvB,IAAI,EAAsB,MAAM,EAAE,IAAI,CAAC;YACpD,CAAC,CAAC,IAAI,CAAC,KAAK;iBACL,MAAM,CAAC,cAAI,IAAI,QAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,KAAI,CAAC,OAAO,CAAC,EAA/D,CAA+D,CAAC;iBAC/E,GAAG,CAAC,cAAI,IAAI,YAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAjC,CAAiC,CAAC;YACrD,CAAC,CAAC,EAAE,CAAC;IACb,CAAC;IAED,gDAAc,GAAd,UAAe,WAAwB;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAEO,kDAAgB,GAAxB,UACI,IAAwC,EACxC,IAAU;QAFd,iBAmCC;;QA/BG,IAAM,UAAU,GAAG,IAAI,CAAC,MAAM,KAAI,UAAI,CAAC,aAAa,+CAAlB,IAAI,EAAiB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAC;QAE1E,OAAO;YACH,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,2CAAkB,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC;YACtE,SAAS,EAAE,2CAAkB,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC;YAC3E,OAAO,EAAE,cAAM,YAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAA5B,CAA4B;YAC3C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,QAAQ;gBACvB,CAAC,yBACK,WAAW,EAAE,UAAC,CAAC,EAAE,QAAQ,IAAK,eAAQ,IAAI,KAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAA7C,CAA6C,EAC3E,KAAK,EAAE,+CAAa,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,aAAG;;wBAAI,QAAC;4BAC5C,GAAG,EAAE,GAAG;4BACR,IAAI,EAAE,GAAG;4BACT,IAAI,EAAE,2CAAkB,EAAC,KAAI,CAAC,OAAO,EAAE,GAAG,EAAE,UAAI,CAAC,QAAQ,0CAAG,GAAG,CAAC,CAAC;4BACjE,SAAS,EAAE,IAAI,CAAC,aAAa;4BAC7B,QAAQ,EAAE,IAAI,CAAC,UAAU;gCACrB,CAAC,CAAC,iBAAO,YAAI,iBAAI,CAAC,UAAU,+CAAf,IAAI,EAAc,OAAO,EAAE,cAAM,YAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAvB,CAAuB,CAAC;gCACtE,CAAC,CAAC,SAAS;4BACf,SAAS,EACL,GAAG,IAAI,UAAU;gCACb,CAAC,CAAC;oCACI,QAAQ,EAAE,WAAW;iCACxB;gCACH,CAAC,CAAC,SAAS;yBACtB,CAAC;qBAAA,CAAC,IACA,CAAC,IAAI,CAAC,2BAA2B,IAAI,EAAE,CAAC,EAEjD,CAAC,CAAC,SAAS;SAClB,CAAC;IACN,CAAC;IAEO,yCAAO,GAAf,UAAgB,IAAwC,EAAE,GAAY;QAClE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE;YACpD,IAAI,CAAC,OAAO,CACR,GAAG,EACH,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,OAAO,CACf,CAAC;SACL;IACL,CAAC;IACL,8BAAC;AAAD,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,yBAAyB,CACrC,QAAgB,EAChB,KAA2C,EAC3C,OAAmC,EACnC,kBAA6D,EAC7D,OAAkB;IAElB,OAAO,IAAI,uBAAuB,CAC9B,QAAQ,EACR,KAAK,EACL,OAAO,EACP,kBAAkB,EAClB,OAAO,CACV,CAAC;AACN,CAAC;AAdD,8DAcC;;;;;;;;;;;;;;;AC7ID,sDAA+B;AAC/B,wGAAoD;AAmBpD;;;GAGG;AACH,SAAgB,SAAS,CAAC,KAAqB;;IACnC,SAAK,GAAyE,KAAK,MAA9E,EAAE,OAAO,GAAgE,KAAK,QAArE,EAAE,UAAU,GAAoD,KAAK,WAAzD,EAAE,WAAW,GAAuC,KAAK,YAA5C,EAAE,OAAO,GAA8B,KAAK,QAAnC,EAAE,OAAO,GAAqB,KAAK,QAA1B,EAAE,EAAE,GAAiB,KAAK,GAAtB,EAAE,UAAU,GAAK,KAAK,WAAV,CAAW;IAC5F,IAAM,OAAO,GAAG,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAEhE,OAAO,CACH,sDACI,EAAE,EAAE,EAAE,EACN,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,mBAAG,EAAC,UAAU,CAAC,KAAK;YAC3B,GAAC,UAAU,CAAC,aAAa,IAAG,UAAU;gBACxC,EACF,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO,uBACG,IAAI,gBACX,OAAO,mBACJ,UAAU,IACrB,mBAAmB,CAAC,KAAK,CAAC,GAC7B,KAAK,CAAC,SAAS,IAAI,GAAG,CAClB,CACZ,CAAC;AACN,CAAC;AArBD,8BAqBC;AAED,SAAS,YAAY,CAAI,MAAW,EAAE,QAAkC;IACpE,IAAI,CAAC,MAAM,EAAE;QACT,OAAO,MAAM,CAAC;KACjB;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAC,MAAW,EAAE,GAAW;QACvD,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;YACf,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;SAC7B;QACD,OAAO,MAAM,CAAC;IAClB,CAAC,EAAE,EAAO,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAI,KAAqB;IACjD,OAAO,YAAY,CACf,KAAK,IAAI,EAAE,EACX,kBAAQ,IAAI,eAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAlE,CAAkE,CACjF,CAAC;AACN,CAAC;;;;;;;;;;;;;;ACjED,sDAA+B;AAC/B,wGAAoD;AACpD,2HAA4E;AAC5E,wGAA8E;AAC9E,2HAA4D;AAC5D,8FAAgD;AAChD,oGAA0D;AAiB1D;;GAEG;AACH,SAAgB,WAAW,CAAC,KAAuB;IACvC,mBAAe,GAAyC,KAAK,gBAA9C,EAAE,QAAQ,GAA+B,KAAK,SAApC,EAAE,KAA6B,KAAK,QAAtB,EAAZ,OAAO,mBAAG,EAAE,OAAE,UAAU,GAAK,KAAK,WAAV,CAAW;IACtE,IAAM,IAAI,GAAG,+CAAa,EAAC,qBAAS,CAAC,CAAC;IACtC,IAAM,aAAa,GAAG,UAAC,GAAW;QAC9B,IAAI,KAAK,CAAC,OAAO,EAAE;YACf,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SACtB;IACL,CAAC,CAAC;IAEF,OAAO;IACH,+DAA+D;IAC/D,6BAAK,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,EAAC,SAAS;QAC7C,oBAAC,qBAAS,IAAC,SAAS,EAAE,8BAAkB,CAAC,UAAU,IAC9C,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG,EAAE,KAAK;;YACjB,IAAM,QAAQ,GAAG,GAAG,KAAK,eAAe,CAAC;YACzC,IAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAElC,OAAO,CACH,oBAAC,qBAAW,IACR,aAAa,EAAE,UAAU,CAAC,aAAa,EACvC,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,GAAG;gBACR,gCACI,SAAS,EAAE,mBAAG,EAAC,UAAU,CAAC,YAAY;wBAClC,GAAC,UAAU,CAAC,QAAQ,IAAG,QAAQ;4BACjC,EACF,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EACzC,EAAE,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,GAAG,CAAC,EACnB,IAAI,EAAC,KAAK,mBACK,QAAQ,gBACX,YAAY,uBACN,MAAM,mBACT,KAAK,GAAG,CAAC,EACxB,QAAQ,EAAE,CAAC,kBACG,IAAI,CAAC,MAAM;oBACzB,oBAAC,WAAI,IAAC,QAAQ,EAAE,uCAA2B,CAAC,GAAG,CAAC,GAAI,CAC/C,CACC,CACjB,CAAC;QACN,CAAC,CAAC,CACM,CACV,CACT,CAAC;AACN,CAAC;AA5CD,kCA4CC;;;;;;;;;;;;;;;ACtED,sDAA+B;AAC/B,oGAAuE;AACvE,2HAAwE;AACxE,wGAA+E;AAC/E,0HAAwC;AACxC,gIAA4C;AAC5C,yIAAkD;AAClD,wGAA0D;AAC1D,8GAAwD;AACxD,oGAA6D;AAC7D,oIAAqD;AACrD,wGAA0D;AAC1D,gGAAqD;AAcrD,+GAA+G;AAC/G,6EAA6E;AAC7E,uDAAuD;AACvD,IAAM,qBAAqB,GAAG,CAAC,CAAC,CAAC;AACjC,IAAM,YAAY,GAAG,CAAC,CAAC;AACvB,IAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,IAAM,iCAAiC,GAAG,CAAC,CAAC;AAC5C,IAAM,aAAa,GAAG,EAAE,CAAC;AACzB,IAAM,qBAAqB,GAAa,CAAC,oBAAQ,CAAC,EAAE,EAAE,oBAAQ,CAAC,IAAI,CAAC,CAAC;AACrE,IAAM,aAAa,GAAa;IAC5B,oBAAQ,CAAC,IAAI;IACb,oBAAQ,CAAC,KAAK;IACd,oBAAQ,CAAC,EAAE;IACX,oBAAQ,CAAC,IAAI;IACb,oBAAQ,CAAC,IAAI;IACb,oBAAQ,CAAC,GAAG;CACf,CAAC;AAEF,IAAM,mBAAmB,GAAkB;IACvC,aAAa,EAAE,IAAI;IACnB,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,CAAC;IACX,eAAe,EAAE,IAAI;IACrB,UAAU,EAAE,KAAK;IACjB,eAAe,EAAE,yBAAe,CAAC,YAAY;CAChD,CAAC;AA2CF,IAAM,cAAc,GAAG;IACnB,gBAAgB,EAAE,uBAAuB;IACzC,YAAY,EAAE,mBAAmB;IACjC,QAAQ,EAAE,eAAe;IACzB,QAAQ,EAAE,eAAe;IACzB,QAAQ,EAAE,eAAe;IACzB,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,cAAc;CAC1B,CAAC;AAiBF,IAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,aAAa,CACrD,KAAqB,EACrB,GAAyB;IAEzB,IAAI,SAAqB,CAAC;IAC1B,IAAI,SAAsB,CAAC;IAC3B,IAAI,KAAuB,CAAC;IAEtB,6BAAoB,KAAK,CAAC,QAAQ,CAAS,CAAC,CAAC,MAA5C,KAAK,UAAE,QAAQ,QAA6B,CAAC;IAC9C,6BAAkB,KAAK,CAAC,QAAQ,CAAgB,OAAO,CAAC,MAAvD,IAAI,UAAE,OAAO,QAA0C,CAAC;IACzD,6BAA0C,KAAK,CAAC,QAAQ,CAAU,wBAAY,CAAC,MAA9E,gBAAgB,UAAE,mBAAmB,QAAyC,CAAC;IAChF,6BAAoC,KAAK,CAAC,QAAQ,CAAkB,QAAQ,CAAC,MAA5E,aAAa,UAAE,gBAAgB,QAA6C,CAAC;IAC9E,6BAA4B,KAAK,CAAC,QAAQ,CAAS,GAAG,CAAC,MAAtD,MAAM,UAAE,eAAe,QAA+B,CAAC;IACxD,6BAAgC,KAAK,CAAC,QAAQ,CAAS,EAAE,CAAC,MAAzD,WAAW,UAAE,cAAc,QAA8B,CAAC;IAEjE,IAAM,KAAK,GAAG,oBAAQ,GAAE,CAAC;IACzB,IAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAChD,IAAM,MAAM,GAAG,cAAY,KAAK,CAAC,MAAQ,CAAC;IAE1C,IAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAC9B,UAAC,MAAc,EAAE,SAAsC;QACnD,IAAI,CAAC,SAAS,EAAE;YACZ,SAAS,GAAG,YAAY,CAAC;SAC5B;QAED,IAAI,SAAS,KAAK,UAAU,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAC1C,MAAM,IAAI,YAAY,CAAC;SAC1B;QAED,IAAM,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;QAChC,IAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;QACvC,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,MAAM,EAAE;YACpC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnB,OAAO,QAAQ,CAAC;SACnB;QAED,OAAO,CAAC,CAAC,CAAC;IACd,CAAC,EACD,CAAC,KAAK,CAAC,CACV,CAAC;IAEF,IAAM,mBAAmB,GAAG,KAAK,CAAC,WAAW,CACzC,UAAC,IAAY,EAAE,aAAsB;QACjC,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,OAAO,EAAE,CAAC;SACb;QAED,IAAI,aAAa,EAAE;YACf,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC,EACD,EAAE,CACL,CAAC;IAEF,IAAM,wBAAwB,GAAG,KAAK,CAAC,WAAW,CAC9C,UAAC,KAAa;QACV,IAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,KAAK,EAAE;YACP,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;SAChC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC,EACD,CAAC,gBAAgB,CAAC,CACrB,CAAC;IAEF,IAAM,gBAAgB,GAAG,KAAK,CAAC,WAAW,CAAC;QACvC,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC;IAE9B,IAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CACpC,UAAC,cAAsB;QACnB,IAAM,qBAAqB,GAAG,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACxE,IAAM,OAAO,GAAkB,qBAAqB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QACvF,QAAQ,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,OAAO,CAAC,CAAC;QACjB,mBAAmB,CAAC,eAAe,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC,CAAC;QACrE,eAAe,CAAC,cAAc,CAAC,CAAC;QAChC,cAAc,CAAC,qBAAqB,CAAC,CAAC;IAC1C,CAAC,EACD,CAAC,IAAI,CAAC,CACT,CAAC;IAEF,IAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAC/B,UAAC,KAAa;QACV,IAAM,qBAAqB,GAAG,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChE,QAAQ,CAAC,CAAC,CAAC,CAAC;QACZ,mBAAmB,CAAC,eAAe,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC;QAClE,eAAe,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC,EACD,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,CACpC,CAAC;IAEF,IAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CACrC,UAAC,WAAmB,EAAE,IAAmB;QACrC,IAAM,WAAW,GAAG,IAAI,KAAK,OAAO,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE;YACd,OAAO,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,qBAAS,CAAC,aAAa,CAAC,CAAC;SACpE;QAED,IAAM,SAAS,GAAG,+BAAY,EAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,qBAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/E,CAAC,EACD,CAAC,IAAI,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAC1C,CAAC;IAEF,IAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CACpC,UAAC,KAAY,IAAK,QAAC,KAAK,CAAC,CAAC,CAAI,MAAM,SAAI,KAAK,CAAC,GAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAvC,CAAuC,EACzD,CAAC,MAAM,CAAC,CACX,CAAC;IAEF,KAAK,CAAC,mBAAmB,CACrB,GAAG,EACH,cAAM,QAAC;QACH,QAAQ;QACR,wBAAwB;QACxB,cAAc;QACd,eAAe;QACf,SAAS;QACT,gBAAgB;QAChB,mBAAmB;QACnB,cAAc;KACjB,CAAC,EATI,CASJ,EACF;QACI,QAAQ;QACR,wBAAwB;QACxB,cAAc;QACd,eAAe;QACf,SAAS;QACT,cAAc;QACd,gBAAgB;QAChB,mBAAmB;KACtB,CACJ,CAAC;IAEF,IAAM,iBAAiB,GAAG,UACtB,KAAqB,EACrB,KAAa,EACb,gBAAyB;QAEjB,WAAO,GAAK,KAAK,QAAV,CAAW;QAC1B,IAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;QACzC,IAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,MAAI,cAAc,CAAC,aAAa,CAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/E,IAAM,OAAO,GAAG,cAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,EAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5F,IAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QACnE,6IAA6I;QAC7I,wFAAwF;QACxF,OAAO,CACH,6BAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAC,SAAS;YAC1B,SAAS;YACV,6BACI,EAAE,EAAE,MAAM,EACV,IAAI,EAAC,SAAS,EACd,SAAS,EAAE,mBAAG,EAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,gBAAgB,CAAC;gBACnE,oBAAC,iBAAO,4BACA,mBAAmB,IACvB,IAAI,EAAC,SAAS,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,CAAC,OAAO,IAAI,CAAC,SAAS,EAC9B,SAAS,EAAE,UAAU,CAAC,OAAO,KAC5B,OAAO,CACF,CACR,CACJ,CACT,CAAC;IACN,CAAC,CAAC;IAEF,IAAM,gBAAgB,GAAG,UACrB,KAAqB,EACrB,KAAa,EACb,WAAmB,EACnB,aAA8B,EAC9B,gBAAyB;;QAEjB,kBAAc,GAAsB,KAAK,eAA3B,EAAE,eAAe,GAAK,KAAK,gBAAV,CAAW;QAClD,IAAM,OAAO,GAAG,cAAc,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACnD,IAAM,sBAAsB;YACxB,GAAC,cAAc,CAAC,YAAY,IAAG,MAAM;YACrC,GAAC,cAAc,CAAC,QAAQ,IAAG,MAAM;YACjC,GAAC,cAAc,CAAC,QAAQ,IAAG,SAAS;YACpC,GAAC,cAAc,CAAC,IAAI,IAAG,MAAM;eAChC,CAAC;QACF,IAAI,OAAO,EAAE;YACT,sBAAsB,CAAC,cAAc,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC;SACrE;QAED,OAAO,CACH,6BAAK,SAAS,EAAE,UAAU,CAAC,gBAAgB;YACtC,CAAC,cAAc,IAAI,CAChB,oBAAC,qBAAS,0BACN,IAAI,EAAC,UAAU,EACf,YAAY,EAAE,aAAG,IAAI,wBAAiB,CAAC,GAAG,CAAC,EAAtB,CAAsB,EAC3C,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,cAAc,EACxB,cAAc,EAAE,UAAU,CAAC,cAAc,EACzC,UAAU,EAAE,gBAAgB,EAC5B,SAAS,EAAE,eAAe,EAC1B,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,8BAAkB,EAC3B,eAAe,EACf,wBAAwB,EACxB,WAAW,CACd,EACD,SAAS,EAAE,8BAAkB,EACzB,eAAe,EACf,2BAA2B,EAC3B,WAAW,CACd,IACG,sBAAsB,EAC5B,CACL;YACA,IAAI,KAAK,MAAM;gBACZ,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,gBAAgB,CAAC;gBAC/D,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC,CACrD,CACT,CAAC;IACN,CAAC,CAAC;IAEF,IAAM,aAAa,GAAG,UAAC,CAAqC;QACxD,KAAK,GAAG,CAAC,CAAC,MAA0B,CAAC;IACzC,CAAC,CAAC;IAEF,IAAM,gBAAgB,GAAG,UAAC,CAAwC;QAC9D,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,oBAAQ,CAAC,KAAK,EAAE;YAClC,OAAO;SACV;QAED,IAAI,KAAK,IAAI,CAAC,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/D,QAAQ,CAAC,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;SACxC;IACL,CAAC,CAAC;IAEF,IAAM,eAAe,GAAG,UAAC,CAAwC;QAC7D,IAAI,CAAC,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC1C,OAAO;SACV;QACD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,IAAI,CAAC,CAAC,KAAK,KAAK,oBAAQ,CAAC,IAAI,EAAE;YAC3B,QAAQ,CAAC,CAAC,CAAC,CAAC;YACZ,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC;YACxB,OAAO;SACV;QACD,IAAI,CAAC,CAAC,KAAK,KAAK,oBAAQ,CAAC,GAAG,EAAE;YAC1B,QAAQ,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACtC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,uCAAuC;YACrF,OAAO;SACV;QAED,IAAM,SAAS,GACX,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC;QAC3E,IAAM,QAAQ,GAAG,QAAQ,CACrB,CAAC,CAAC,KAAK,KAAK,oBAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,oBAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7D,SAAS,CACZ,CAAC;QACF,IAAI,QAAQ,GAAG,CAAC,CAAC,EAAE;YACf,IAAM,eAAe,GACjB,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,iCAAiC,CAAC;YAC/E,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC,CAAC;YACvD,IAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC;YACvC,IAAM,aAAa,GAAG,UAAU,GAAG,eAAe,GAAG,aAAa,CAAC;YACnE,IAAM,aAAa,GAAG,UAAU,GAAG,aAAa,CAAC;YACjD,IAAM,gBAAgB,GAAG,aAAa,GAAG,aAAa,CAAC;YACvD,IAAI,UAAU,IAAI,aAAa,IAAI,aAAa,IAAI,gBAAgB,EAAE;gBAClE,OAAO,CAAC,0BAA0B;aACrC;YAED,SAAS,CAAC,SAAS,GAAG,UAAU,GAAG,aAAa,CAAC;SACpD;IACL,CAAC,CAAC;IAEF,IAAM,uBAAuB,GAAG,UAAC,KAAa,EAAE,gBAAyB;QAC7D,WAAO,GAAK,KAAK,QAAV,CAAW;QAC1B,OAAO,gBAAgB,CAAC,GAAG,CAAC,UAAC,KAAK,EAAE,UAAU,IAAK,QAC/C,oBAAC,qBAAS,IACN,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,EACzB,GAAG,EAAE,KAAK,CAAC,GAAG,EACd,WAAW,EAAE,cAAM,eAAQ,CAAC,UAAU,CAAC,EAApB,CAAoB,EACvC,OAAO,EAAE,cAAM,eAAQ,CAAC,UAAU,CAAC,EAApB,CAAoB,EACnC,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,KAAK,KAAK,UAAU,EAChC,OAAO,EAAE,WAAC,IAAI,eAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAlB,CAAkB,mBACjB,KAAK,GAAG,CAAC,kBACV,gBAAgB,CAAC,MAAM,GACvC,CACL,EAdkD,CAclD,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,IAAM,iBAAiB,GAAG,UACtB,KAAqB,EACrB,KAAa,EACb,gBAAyB;QAEjB,WAAO,GAAoC,KAAK,QAAzC,EAAE,aAAa,GAAqB,KAAK,cAA1B,EAAE,cAAc,GAAK,KAAK,eAAV,CAAW;QACzD,IAAM,SAAS,GAAG,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;QAElE,OAAO,CACH;YACI,6BACI,SAAS,EAAE,UAAU,CAAC,WAAW,wBACb,IAAI,EACxB,QAAQ,EAAE,qBAAqB,EAC/B,GAAG,EAAE,cAAc;gBACnB,oBAAC,qBAAS,IACN,EAAE,EAAE,MAAM,EACV,IAAI,EAAC,SAAS,EACd,SAAS,EAAE,UAAU,CAAC,eAAe,EACrC,GAAG,EAAE,oBAAoB,IACxB,uBAAuB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CACzC,CACV;YACL,CAAC,aAAa,IAAI,CACf,oBAAC,+BAAc,0BACX,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO,IACZ,cAAc,IAClB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,gBAAgB,EAAE,IAC3B,CACL,CACC,CACT,CAAC;IACN,CAAC,CAAC;IAEF,IAAM,cAAc,GAAG,UACnB,KAAqB,EACrB,KAAa,EACb,aAA8B,EAC9B,gBAAyB;QAEjB,WAAO,GAAiD,KAAK,QAAtD,EAAE,aAAa,GAAkC,KAAK,cAAvC,EAAE,WAAW,GAAqB,KAAK,YAA1B,EAAE,cAAc,GAAK,KAAK,eAAV,CAAW;QAEtE,IAAM,SAAS,GAAG,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;QAElE,OAAO,CACH,6BAAK,SAAS,EAAE,UAAU,CAAC,QAAQ;YAC/B,6BACI,SAAS,EAAE,UAAU,CAAC,YAAY,wBACd,IAAI,EACxB,QAAQ,EAAE,qBAAqB,EAC/B,GAAG,EAAE,cAAc;gBACnB,oBAAC,yBAAW,0BACR,OAAO,EAAE,OAAO,IACZ,WAAW,IACf,OAAO,EAAE,UAAU,EACnB,eAAe,EAAE,aAAa,EAC9B,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,IACxB;gBACF,6BAAK,IAAI,EAAC,UAAU,qBAAkB,QAAQ,CAAC,aAAa,CAAC;oBACzD;wBACI,oBAAC,qBAAS,IACN,EAAE,EAAE,MAAM,EACV,IAAI,EAAC,SAAS,EACd,SAAS,EAAE,UAAU,CAAC,eAAe,EACrC,GAAG,EAAE,oBAAoB,IACxB,uBAAuB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CACzC,CACV,CACJ,CACJ;YAEL,CAAC,aAAa,IAAI,CACf,oBAAC,+BAAc,0BACX,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO,IACZ,cAAc,IAClB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,gBAAgB,EAAE,IAC3B,CACL,CACC,CACT,CAAC;IACN,CAAC,CAAC;IAEF,IAAM,cAAc,GAAG,UAAC,GAAmB;QACvC,SAAS,GAAG,GAAG,CAAC;IACpB,CAAC,CAAC;IAEF,IAAM,UAAU,GAAG,UAAC,QAAgB;QAChC,IAAM,aAAa,GAAG,QAA2B,CAAC;QAClD,mBAAmB,CAAC,qBAAS,CAAC,aAAa,CAAC,CAAC,CAAC;QAC9C,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,IAAM,QAAQ,GAAG,UAAC,OAAwB;QACtC,OAAO,YAAU,OAAO,SAAI,KAAK,CAAC,MAAQ,CAAC;IAC/C,CAAC,CAAC;IAEF,IAAM,iBAAiB,GAAG,UAAC,GAAsB;QAC7C,IAAI,GAAG,EAAE;YACL,SAAS,GAAG,GAAG,CAAC;YAChB,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,EAAE;gBAClB,SAAS,CAAC,KAAK,EAAE,CAAC;gBAClB,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aACvD;SACJ;IACL,CAAC,CAAC;IAEF,IAAM,oBAAoB,GAAG,UAAC,GAAc;QACxC,IAAI,KAAK,CAAC,cAAc,IAAI,GAAG,EAAE;YAC7B,GAAG,CAAC,KAAK,EAAE,CAAC;SACf;QAED,IAAI,KAAK,EAAE;YACP,kGAAkG;YAClG,KAAK,CAAC,eAAe,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;YACvD,IAAM,SAAO,GAAG,cAAc,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACnD,6DAA6D;YAC7D,IAAI,SAAO,EAAE;gBACT,UAAU,CAAC,cAAM,YAAK,CAAC,YAAY,CAAC,cAAc,CAAC,gBAAgB,EAAE,SAAO,CAAC,EAA5D,CAA4D,EAAE,CAAC,CAAC,CAAC;aACrF;SACJ;IACL,CAAC,CAAC;IAEF,IAAM,cAAc,GAAG,UAAC,CAAM,EAAE,QAAiB;QAC7C,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;YAC9B,IAAM,qBAAqB,GAAG,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACnE,IAAM,OAAO,GAAkB,qBAAqB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YACvF,QAAQ,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,mBAAmB,CAAC,eAAe,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC;YAClE,cAAc,CAAC,QAAQ,CAAC,CAAC;YACzB,OAAO,CAAC,OAAO,CAAC,CAAC;SACpB;IACL,CAAC,CAAC;IAEF,IAAM,QAAQ,GAAG,UACb,CAAwE,EACxE,KAAY;QAEZ,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,KAAK,CAAC,QAAQ,EAAE;YAChB,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SACjC;IACL,CAAC,CAAC;IAEF,IAAM,UAAU,GAAG,UACf,KAAqB,EACrB,KAAa,EACb,WAAmB,EACnB,aAA8B,EAC9B,gBAAyB;QAEzB,OAAO,IAAI,KAAK,OAAO;YACnB,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC;YACnD,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;IACvF,CAAC,CAAC;IAEF,OAAO,0CAAG,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAI,CAAC;AACzF,CAAC,CAAC,CAAC;AAEH;;;GAGG;AACH,SAAgB,aAAa,CACzB,QAA0D,EAC1D,OAA+B,EAC/B,OAAmC,EACnC,MAAc,EACd,eAAmD;IAEnD,OAAO,CACH,oBAAC,SAAS,IACN,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,GAAc,CACvC,CAAC;AACN,CAAC;AAfD,sCAeC;AAED,IAAM,aAAa,GAAG;IAClB,IAAM,YAAY,GAAG,EAAE,CAAC;IACxB,IAAM,WAAW,GAAG,CAAC,CAAC,CAAC,gCAAgC;IACvD,IAAM,uBAAuB,GAAG,CAAC,CAAC;IAClC,IAAM,mBAAmB,GAAG,WAAW,GAAG,YAAY,GAAG,uBAAuB,CAAC;IACjF,OAAO,mBAAmB,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;AACjD,CAAC,CAAC;AAEF,IAAM,aAAa,GAAG;IAClB,IAAM,WAAW,GAAG,EAAE,CAAC;IACvB,IAAM,cAAc,GAAG,CAAC,CAAC;IACzB,IAAM,qBAAqB,GAAG,CAAC,CAAC;IAChC,IAAM,SAAS,GAAG,WAAW,GAAG,cAAc,GAAG,CAAC,GAAG,qBAAqB,CAAC;IAC3E,OAAO,SAAS,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;AACvC,CAAC,CAAC;AAEF,IAAM,qBAAqB,GAAG,+BAAe,EACzC,UAAC,KAAY;IACT,IAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,IAAM,MAAM,GAAmB;QAC3B,WAAW,EAAE;YACT,SAAS,EAAE,QAAQ;YACnB,QAAQ,EAAE;gBACN,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,UAAU;gBACpB,IAAI,EAAE,KAAK;gBACX,GAAG,EAAE,KAAK;gBACV,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,CAAC;gBACT,WAAW,EAAE,KAAK;gBAClB,WAAW,EAAE,OAAO;gBACpB,WAAW,EAAE,oBAAoB;gBACjC,WAAW,EAAE,SAAS;gBACtB,OAAO,EAAE,8BAA8B;aAC1C;SACJ;QAED,OAAO,EAAE;YACL,OAAO,EAAE,KAAK;SACjB;QAED,cAAc,EAAE;YACZ,OAAO,EAAE,KAAK;SACjB;QAED,WAAW,EAAE;YACT,SAAS,EAAE,aAAa,EAAE;YAC1B,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,QAAQ;SACtB;QAED,eAAe,EAAE;YACb,KAAK,EAAE,aAAa,EAAE;SACzB;QAED,YAAY,EAAE;YACV,SAAS,EAAE,aAAa,EAAE;YAC1B,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,QAAQ;YACnB,MAAM,EAAE,aAAa,EAAE;SAC1B;QAED,QAAQ,EAAE;YACN,QAAQ,EAAE,UAAU;SACvB;QAED,gBAAgB,EAAE;YACd,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,OAAO,CAAC,KAAK;SAC5B;QAED,KAAK,EAAE;YACH,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,UAAU;YACpB,UAAU,EAAE,OAAO,CAAC,KAAK;YACzB,UAAU,EAAE,6BAA6B;SAC5C;QAED,aAAa,EAAE;YACX,UAAU,EAAE,OAAO,CAAC,YAAY;SACnC;QAED,MAAM,EAAE;YACJ,GAAG,EAAE,MAAM;YACX,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,QAAQ;SACrB;QAED,aAAa,EAAE;YACX,OAAO,EAAE,cAAc;SAC1B;QAED,YAAY,EAAE;YACV,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,GAAG;YACX,YAAY,EAAE,WAAW;YACzB,OAAO,EAAE,CAAC;YACV,YAAY,EAAE,CAAC;YACf,OAAO,EAAE,cAAc;YACvB,KAAK,EAAE,OAAO,CAAC,SAAS;YACxB,UAAU,EAAE,OAAO,CAAC,KAAK;YACzB,SAAS,EAAE;gBACP,MAAM,EAAE,SAAS;aACpB;SACJ;QAED,QAAQ,EAAE;YACN,YAAY,EAAE,WAAW;YACzB,iBAAiB,EAAE,OAAO,CAAC,SAAS;SACvC;QAED,SAAS,EAAE;YACP,SAAS,EAAE,WAAW;YACtB,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,UAAU;YACpB,UAAU,EAAE,OAAO,CAAC,KAAK;SAC5B;QAED,aAAa,EAAE;YACX,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,cAAc;YACvB,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,MAAM;SACrB;QAED,yBAAyB,EAAE;YACvB,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,cAAc;YACvB,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,GAAG;YACV,GAAG,EAAE,GAAG;SACX;QAED,gBAAgB,EAAE;YACd,UAAU,EAAE,MAAM;YAClB,UAAU,EAAE,QAAQ;YACpB,QAAQ,EAAE,QAAQ;YAClB,YAAY,EAAE,UAAU;SAC3B;QAED,iCAAiC,EAAE;YAC/B,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,cAAc;YACvB,GAAG,EAAE,GAAG;YACR,UAAU,EAAE,QAAQ;YACpB,QAAQ,EAAE,QAAQ;YAClB,YAAY,EAAE,UAAU;YACxB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,OAAO;SACnB;KACJ,CAAC;IACF,OAAO,4BAAc,EAAC,MAAM,CAAC,CAAC;AAClC,CAAC,CACJ,CAAC;;;;;;;;;;;;;;ACvvBF,sDAA+B;AAC/B,oGAA+E;AAe/E,IAAM,cAAc,GAAG,kBAAkB,CAAC;AAE1C;;;GAGG;AACH,SAAgB,cAAc,CAAC,KAA0B;IAC7C,SAAK,GAAqC,KAAK,MAA1C,EAAE,OAAO,GAA4B,KAAK,QAAjC,EAAE,SAAS,GAAiB,KAAK,UAAtB,EAAE,UAAU,GAAK,KAAK,WAAV,CAAW;IAExD,IAAI,CAAC,SAAS,EAAE;QACZ,IAAM,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;QACpD,OAAO,CACH,6BAAK,SAAS,EAAE,UAAU,CAAC,SAAS;YAChC,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,eAAY,QAAQ,IAC9C,mBAAmB,CAClB;YACN,6BAAK,SAAS,EAAE,UAAU,CAAC,iCAAiC;gBACxD,oBAAC,qBAAW,IACR,OAAO,EAAE,mBAAmB,EAC5B,YAAY,EAAE,6BAAmB,CAAC,MAAM;oBACxC,8BAAM,IAAI,EAAC,OAAO,IAAE,mBAAmB,CAAQ,CACrC,CACZ,CACJ,CACT,CAAC;KACL;IAED,IAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,IAAM,WAAW,GAAG,MAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,EAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzE,OAAO,CACH,6BAAK,SAAS,EAAE,UAAU,CAAC,SAAS;QAChC,2BAAG,SAAS,EAAE,UAAU,CAAC,aAAa,EAAE,IAAI,EAAC,cAAc,iBAAa,MAAM,IACzE,IAAI,CACL;QAEJ,6BAAK,SAAS,EAAE,UAAU,CAAC,yBAAyB;YAChD,6BAAK,SAAS,EAAE,UAAU,CAAC,gBAAgB;gBACvC,oBAAC,qBAAW,IAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,6BAAmB,CAAC,MAAM,IACtE,WAAW,CACF,CACZ,CACJ,CACJ,CACT,CAAC;AACN,CAAC;AAvCD,wCAuCC;;;;;;;;;;;;;;;AC7DD,sDAA+B;AAC/B,oGAAuE;AACvE,uKAA+E;AAC/E,0HAA4C;AAqB5C,IAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,gBAAgB,CAC5D,KAAyB,EACzB,GAA6B;IAGzB,cAAU,GAQV,KAAK,WARK,EACV,OAAO,GAOP,KAAK,QAPE,EACP,gBAAgB,GAMhB,KAAK,iBANW,EAChB,aAAa,GAKb,KAAK,cALQ,EACb,eAAe,GAIf,KAAK,gBAJU,EACf,OAAO,GAGP,KAAK,QAHE,EACP,OAAO,GAEP,KAAK,QAFE,EACP,MAAM,GACN,KAAK,OADC,CACA;IACJ,6BAA6C,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAhE,gBAAgB,UAAE,sBAAsB,QAAwB,CAAC;IAExE,KAAK,CAAC,mBAAmB,CACrB,GAAG,EACH,cAAM,QAAC;QACH,OAAO;KACV,CAAC,EAFI,CAEJ,EACF,CAAC,OAAO,CAAC,CACZ,CAAC;IAEF,IAAM,KAAK,GAAG;QACV,CAAC,EAAE,UAAU,CAAC,IAAI;QAClB,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC;KAC9C,CAAC;IACF,IAAM,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzD,IAAI,CAAC,gBAAgB,EAAE;QACnB,aAAa,EAAE,CAAC;KACnB;IACD,IAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC;QACpC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO,EAAE,CAAC;IACd,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACH,0CACK,gBAAgB,IAAI,CACjB,oBAAC,iBAAO,IACJ,MAAM,EAAE,KAAK,EACb,eAAe,EAAE,yBAAe,CAAC,cAAc,EAC/C,aAAa,EAAE,KAAK,EACpB,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE,aAAa,IACvB,6BAAa,EAAC,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,CACrE,CACb,CACF,CACN,CAAC;AACN,CAAC,CAAC,CAAC;AASH;;;GAGG;AACH,SAAgB,gBAAgB,CAC5B,WAAwB,EACxB,UAAmB,EACnB,OAA+B,EAC/B,gBAAkE,EAClE,OAAmC,EACnC,eAA+C,EAC/C,aAAyB,EACzB,MAAc,EACd,eAAmD;IAEnD,IAAI,QAAQ,GAAwB,IAAI,CAAC;IACzC,IAAM,SAAS,GAAG;QACd,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,EAAI,CAAC;QACb,QAAQ,GAAG,IAAI,CAAC;IACpB,CAAC,CAAC;IAEF,QAAQ,GAAG,+CAAoB,EAC3B,WAAW,EACX,oBAAC,aAAa,IACV,GAAG,EAAE,eAAe,EACpB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,gBAAgB,EAClC,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,SAAS,GACpB,CACL,CAAC;AACN,CAAC;AA/BD,4CA+BC;;;;;;;;;;;;;;ACvHD,oJAA+D;AAAtD,wIAAiB;;;;;;;;;;;;;;;ACA1B,sDAA+B;AAC/B,wGAAyD;AACzD,2HAA+C;AAC/C,2JAAkE;AAClE,6HAAoD;AACpD,2HAKqC;AAMrC,kIAI8B;AAG9B,IAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,IAAM,qBAAqB,GAAG,EAAE,CAAC;AAEjC,wGAAwG;AACxG,mBAAmB;AACnB,iBAAiB;AACjB,iBAAiB;AACjB,IAAM,wBAAwB,GAAG,sGAAsG,CAAC;AAExI,0DAA0D;AAC1D,kBAAkB;AAClB,kCAAkC;AAClC,2BAA2B;AAC3B,yDAAyD;AACzD,IAAM,gBAAgB,GAAG,qDAAqD,CAAC;AAE/E;IAYI,qBAAoB,gBAAoD;QAAxE,iBAMC;QANmB,qBAAgB,GAAhB,gBAAgB,CAAoC;QAXhE,WAAM,GAAmB,IAAI,CAAC;QAC9B,0BAAqB,GAAY,KAAK,CAAC;QACvC,iBAAY,GAAY,KAAK,CAAC;QAC9B,iBAAY,GAAY,KAAK,CAAC;QAC9B,YAAO,GAAG,KAAK,CAAC,SAAS,EAAa,CAAC;QACvC,UAAK,GAAkB,IAAI,CAAC;QAC5B,gBAAW,GAAuB,IAAI,CAAC;QAEvC,oBAAe,GAAG,KAAK,CAAC,SAAS,EAAiB,CAAC;QACnD,WAAM,GAAG,CAAC,CAAC;QAuLX,kBAAa,GAAG,cAAM,YAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAA3B,CAA2B,CAAC;QAElD,qBAAgB,GAAG,UAAC,KAAY,EAAE,gBAAwB;;YAC9D,IAAI,KAAK,KAAK,qBAAS,EAAE;gBACrB,WAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;gBACvD,OAAO;aACV;YAED,KAAI,CAAC,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAC9C,CAAC,CAAC;QA7LE,IAAI,CAAC,OAAO,yEACL,sCAAuB,GACvB,kCAAmB,GACnB,iCAAkB,CACxB,CAAC;IACN,CAAC;IAED,oCAAc,GAAd,UAAe,WAAwB;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAEM,6BAAO,GAAd;QACI,OAAO,OAAO,CAAC;IACnB,CAAC;IAEM,6BAAO,GAAd;;QACI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5B,UAAI,CAAC,eAAe,CAAC,OAAO,0CAAE,OAAO,EAAE,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,CAAC;IAEM,gCAAU,GAAjB,UAAkB,MAAe;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAEM,mCAAa,GAApB,UAAqB,KAAkB;QACnC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACd,OAAO;SACV;QAED,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE;YAC/B,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACnC,IAAI,IAAI,CAAC,YAAY,EAAE;gBACnB,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;aACxD;iBAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE;gBAChE,YAAY;gBACZ,6DAA6D;gBAC7D,uCAAI,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAElB,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;gBACjC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;aAC7B;SACJ;aAAM,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO,IAAI,CAAC,+CAAa,EAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YACtE,IAAI,IAAI,CAAC,YAAY,EAAE;gBACnB,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;aACtD;iBAAM;gBACH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;aAC5C;SACJ;aAAM,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE;YACtC,YAAY;YACZ,yCAAyC;YACzC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;SAC/B;IACL,CAAC;IAED;;;;OAIG;IACK,iDAA2B,GAAnC,UAAoC,MAAe,EAAE,KAAmB;QACpE,iDAAiD;QACjD,8DAA8D;;QAE9D,IAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC1D,QAAQ,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;YACxB,KAAK,OAAO;gBACR,IAAM,aAAa,GAAG,UAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,gBAAgB,EAAE,CAAC;gBAC/D,8FAA8F;gBAC9F,IACI,CAAC,aAAa;oBACd,CAAC,gBAAgB;oBACjB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,gBAAgB,CAAC,EAChE;oBACE,MAAM;iBACT;qBAAM;oBACH,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;oBAClD,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;iBACpC;gBAED,MAAM;YACV,KAAK,WAAW,CAAC;YACjB,KAAK,YAAY;gBACb,UAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5E,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;gBACjC,MAAM;YACV,KAAK,QAAQ;gBACT,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAC5B,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;SACxC;IACL,CAAC;IAEO,uCAAiB,GAAzB,UACI,KAAmB,EACnB,aAAoB,EACpB,gBAAwB;;QAExB,IAAI,aAAa,KAAK,qBAAS,EAAE;YAC7B,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACjC,UAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACK,+CAAyB,GAAjC,UAAkC,MAAe,EAAE,KAAiB;;QAChE,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,OAAO;SACV;QACD,0CAA0C;QAC1C,yEAAyE;QACzE,IACI,IAAI,CAAC,KAAK;YACV,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,KAAK,oBAAQ,CAAC,KAAK,CAAC;gBACzE,KAAK,CAAC,QAAQ,CAAC,KAAK,KAAK,oBAAQ,CAAC,SAAS,CAAC,EAClD;YACE,gBAAI,CAAC,MAAM,0CAAE,WAAW,GAAG,WAAW,0CAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,UAAI,CAAC,eAAe,CAAC,OAAO,0CAAE,OAAO,EAAE,CAAC;SAC3C;QAED,IAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,gBAAgB,EAAE;YAClB,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,UAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;aACrD;iBAAM;gBACH,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;aAC/B;SACJ;aAAM;YACH,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;SAC/B;IACL,CAAC;IAEO,qCAAe,GAAvB,UAAwB,MAAe,EAAE,KAAiB;QACtD,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,OAAO;SACV;QAED,IACI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,KAAK,aAAa;YACnC,KAAK,CAAC,QAAQ,CAAC,KAAK,KAAK,qBAAqB,CAAC;YACnD,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,GAAG,EAC1C;YACE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;SAC9B;IACL,CAAC;IAEO,gCAAU,GAAlB;;QACI,IAAM,SAAS,GAAG,UAAI,CAAC,MAAM,0CAAE,eAAe,EAAE,CAAC;QACjD,IAAM,SAAS,GAAG,UAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,KAAI,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;QACrF,IAAM,YAAY,GAAG,8CAAY,EAAC,SAAS,EAAE,cAAc,CAAC;YACxD,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,aAAa,CAAC;QAC/B,IAAM,IAAI,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,qBAAqB,EAAE,CAAC;QAEnD,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;YAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;YAEd,uCAAgB,EACZ,IAAI,CAAC,WAAW,EAChB,IAAI,EACJ,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,gBAAgB,CACxB,CAAC;SACL;IACL,CAAC;IAaO,qCAAe,GAAvB,UAAwB,YAAqB;;QACzC,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,EAAE;YACpC,OAAO;SACV;QAED,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;aAAM,IAAI,IAAI,CAAC,eAAe,EAAE;YAC7B,UAAI,CAAC,eAAe,CAAC,OAAO,0CAAE,OAAO,EAAE,CAAC;SAC3C;IACL,CAAC;IAEO,iCAAW,GAAnB,UAAoB,KAAY,EAAE,gBAAwB;;QACtD,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YACvD,OAAO;SACV;QAED,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,eAAK;YAChC,mDAAiB,EAAC,KAAK,EAAE,UAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ;gBAC5C,IACI,MAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,KAAI,WAAW;oBAC/B,SAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,KAAI,CAAC;oBACrB,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,iBAAiB,EAC9C;oBACE,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClD,IAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;oBAElD,IACI,gBAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,WAAW,KAAI,MAAM;wBACtC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EACjD;wBACE,+CAAa,EAAC,KAAK,EAAE,eAAe,EAAE,iBAAO;4BACzC,OAAO,CAAC,IAAI;gCACR,OAAO,CAAC,IAAI,CAAC,SAAS,CAClB,CAAC,EACD,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAChD,GAAG,KAAK,CAAC,SAAS,CAAC;wBAC5B,CAAC,CAAC,CAAC;qBACN;iBACJ;gBAED,OAAO,IAAI,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,UAAI,CAAC,eAAe,CAAC,OAAO,0CAAE,OAAO,EAAE,CAAC;IAC5C,CAAC;IAEO,yCAAmB,GAA3B,UAA4B,MAAe;QACvC,IAAI,gBAAgB,GAAkB,IAAI,CAAC;QAE3C,MAAM,CAAC,kBAAkB,CAAC,eAAK;YAC3B,mDAAiB,EAAC,KAAK,EAAE,UAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ;gBAC5C,IACI,MAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,KAAI,WAAW;oBAC/B,SAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,KAAI,CAAC;oBACrB,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,iBAAiB,EAC9C;oBACE,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClD,IAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;oBAE9C,IAAI,YAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,KAAI,MAAM,EAAE;wBACpC,+FAA+F;wBAC/F,6DAA6D;wBAC7D,IAAM,SAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;wBACxD,gBAAgB,GAAG,UAAO,aAAP,SAAO,uBAAP,SAAO,CAAE,MAAM,KAAI,CAAC,CAAC,CAAC,CAAC,SAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;qBAC3E;iBACJ;gBAED,OAAO,IAAI,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,IAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1F,OAAO,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChG,CAAC;IAEO,0CAAoB,GAA5B,UAA6B,KAAmB;QAC5C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QAChC,KAAK,CAAC,QAAQ,CAAC,wBAAwB,EAAE,CAAC;IAC9C,CAAC;IACL,kBAAC;AAAD,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAC7B,gBAAoD;IAEpD,OAAO,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAAC;AAC7C,CAAC;AAJD,8CAIC;;;;;;;;;;;;;;AClVD;;;GAGG;AACU,+BAAuB,GAAG;IACnC,QAAQ,EAAE,MAAM;IAChB,iBAAiB,EAAE,sBAAsB;IACzC,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,mCAAmC;IAC9C,SAAS,EAAE,qCAAqC;IAChD,SAAS,EAAE,qCAAqC;IAChD,SAAS,EAAE,sCAAsC;IACjD,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,kCAAkC;IAC7C,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,uDAAuD;IAClE,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,6BAA6B;IACxC,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,iCAAiC;IAC5C,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,8BAA8B;IACzC,SAAS,EAAE,+CAA+C;IAC1D,SAAS,EAAE,6CAA6C;IACxD,SAAS,EAAE,sDAAsD;IACjE,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,gCAAgC;IAC3C,SAAS,EAAE,8BAA8B;IACzC,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,qCAAqC;IAChD,SAAS,EAAE,8BAA8B;IACzC,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,+BAA+B;IAC1C,SAAS,EAAE,4CAA4C;IACvD,SAAS,EAAE,oDAAoD;IAC/D,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,gCAAgC;IAC3C,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,qCAAqC;IAChD,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,+BAA+B;IAC1C,SAAS,EAAE,0CAA0C;IACrD,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,8BAA8B;IACzC,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,qCAAqC;IAChD,SAAS,EAAE,4BAA4B;IACvC,SAAS,EAAE,kCAAkC;IAC7C,SAAS,EAAE,yCAAyC;IACpD,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,mCAAmC;IAC9C,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,6BAA6B;IACxC,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,gCAAgC;IAC3C,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,4BAA4B;IACvC,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,2CAA2C;IACtD,SAAS,EAAE,kCAAkC;IAC7C,SAAS,EAAE,iCAAiC;IAC5C,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,8CAA8C;IACzD,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,kCAAkC;IAC7C,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,gCAAgC;IAC3C,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,8BAA8B;IACzC,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,mCAAmC;IAC9C,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,8BAA8B;IACzC,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,6BAA6B;IACxC,SAAS,EAAE,8BAA8B;IACzC,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,gCAAgC;IAC3C,SAAS,EAAE,+BAA+B;IAC1C,SAAS,EAAE,6BAA6B;IACxC,SAAS,EAAE,+BAA+B;IAC1C,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,6BAA6B;IACxC,SAAS,EAAE,gCAAgC;IAC3C,SAAS,EAAE,+BAA+B;IAC1C,SAAS,EAAE,8BAA8B;IACzC,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,8BAA8B;IACzC,SAAS,EAAE,iCAAiC;IAC5C,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,0CAA0C;IACrD,SAAS,EAAE,4CAA4C;IACvD,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,4BAA4B;IACvC,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,kCAAkC;IAC7C,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,gCAAgC;IAC3C,SAAS,EAAE,gCAAgC;IAC3C,SAAS,EAAE,gCAAgC;IAC3C,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,oCAAoC;IAC/C,SAAS,EAAE,oCAAoC;IAC/C,SAAS,EAAE,oCAAoC;IAC/C,SAAS,EAAE,oCAAoC;IAC/C,SAAS,EAAE,oCAAoC;IAC/C,SAAS,EAAE,oCAAoC;IAC/C,SAAS,EAAE,oCAAoC;IAC/C,SAAS,EAAE,oCAAoC;IAC/C,SAAS,EAAE,oCAAoC;IAC/C,SAAS,EAAE,oCAAoC;IAC/C,SAAS,EAAE,oCAAoC;IAC/C,SAAS,EAAE,6BAA6B;IACxC,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,4BAA4B;IACvC,SAAS,EAAE,iCAAiC;IAC5C,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,uCAAuC;IAClD,SAAS,EAAE,kDAAkD;IAC7D,SAAS,EAAE,gCAAgC;IAC3C,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,+BAA+B;IAC1C,SAAS,EAAE,gCAAgC;IAC3C,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,mCAAmC;IAC9C,SAAS,EAAE,kCAAkC;IAC7C,SAAS,EAAE,sDAAsD;IACjE,SAAS,EAAE,oCAAoC;IAC/C,SAAS,EAAE,6BAA6B;IACxC,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,4BAA4B;IACvC,SAAS,EAAE,gCAAgC;IAC3C,SAAS,EAAE,kCAAkC;IAC7C,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,OAAO;CACrB,CAAC;AAEF;;;GAGG;AACU,2BAAmB,GAAG;IAC/B,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,uCAAuC;IAClD,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,6BAA6B;IACxC,SAAS,EAAE,6BAA6B;IACxC,SAAS,EAAE,kCAAkC;IAC7C,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,uCAAuC;IAClD,SAAS,EAAE,gCAAgC;IAC3C,SAAS,EAAE,oCAAoC;IAC/C,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,iCAAiC;IAC5C,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,uCAAuC;IAClD,SAAS,EAAE,mCAAmC;IAC9C,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,8BAA8B;IACzC,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,iCAAiC;IAC5C,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,uCAAuC;IAClD,SAAS,EAAE,4BAA4B;IACvC,SAAS,EAAE,yCAAyC;IACpD,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,8BAA8B;IACzC,SAAS,EAAE,oCAAoC;IAC/C,SAAS,EAAE,+BAA+B;IAC1C,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,sCAAsC;IACjD,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,6BAA6B;IACxC,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,+CAA+C;IAC1D,SAAS,EAAE,4BAA4B;IACvC,SAAS,EAAE,sCAAsC;IACjD,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,mDAAmD;IAC9D,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,wCAAwC;IACnD,SAAS,EAAE,4BAA4B;IACvC,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,gFAAgF;IAC3F,SAAS,EAAE,4BAA4B;IACvC,SAAS,EAAE,8CAA8C;IACzD,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,+CAA+C;IAC1D,SAAS,EAAE,yCAAyC;IACpD,SAAS,EAAE,qCAAqC;IAChD,SAAS,EAAE,6CAA6C;IACxD,SAAS,EAAE,+BAA+B;IAC1C,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,sCAAsC;IACjD,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,sEAAsE;IACjF,SAAS,EAAE,6CAA6C;IACxD,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,4BAA4B;IACvC,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,+CAA+C;IAC1D,SAAS,EAAE,+BAA+B;IAC1C,SAAS,EAAE,+BAA+B;IAC1C,SAAS,EAAE,6DAA6D;IACxE,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,8DAA8D;IACzE,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,iDAAiD;IAC5D,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,4CAA4C;IACvD,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,uCAAuC;IAClD,SAAS,EAAE,wDAAwD;IACnE,SAAS,EAAE,4BAA4B;IACvC,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,qCAAqC;IAChD,SAAS,EAAE,0DAA0D;IACrE,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,6DAA6D;IACxE,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,oCAAoC;IAC/C,SAAS,EAAE,wCAAwC;IACnD,SAAS,EAAE,iCAAiC;IAC5C,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,mEAAmE;IAC9E,SAAS,EAAE,kCAAkC;IAC7C,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,6BAA6B;IACxC,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,iCAAiC;IAC5C,SAAS,EAAE,6BAA6B;IACxC,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,mCAAmC;IAC9C,SAAS,EAAE,wCAAwC;IACnD,SAAS,EAAE,8BAA8B;IACzC,SAAS,EAAE,2CAA2C;IACtD,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,4CAA4C;IACvD,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,sCAAsC;IACjD,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,+BAA+B;IAC1C,SAAS,EAAE,6BAA6B;IACxC,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,mCAAmC;IAC9C,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,4CAA4C;IACvD,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,sDAAsD;IACjE,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,sDAAsD;IACjE,SAAS,EAAE,qCAAqC;IAChD,SAAS,EAAE,+BAA+B;IAC1C,SAAS,EAAE,+EAA+E;IAC1F,SAAS,EAAE,+BAA+B;IAC1C,SAAS,EAAE,iCAAiC;IAC5C,SAAS,EAAE,sCAAsC;IACjD,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,mCAAmC;IAC9C,SAAS,EAAE,gCAAgC;IAC3C,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,0CAA0C;IACrD,SAAS,EAAE,6CAA6C;IACxD,SAAS,EAAE,4BAA4B;IACvC,SAAS,EAAE,qDAAqD;IAChE,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,6BAA6B;IACxC,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,0DAA0D;IACrE,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,mDAAmD;IAC9D,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,6BAA6B;IACxC,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,6BAA6B;IACxC,SAAS,EAAE,8DAA8D;IACzE,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,4BAA4B;IACvC,SAAS,EAAE,iDAAiD;IAC5D,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,qCAAqC;IAChD,SAAS,EAAE,mCAAmC;IAC9C,SAAS,EAAE,4BAA4B;IACvC,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,gDAAgD;IAC3D,SAAS,EAAE,+CAA+C;IAC1D,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,6CAA6C;IACxD,SAAS,EAAE,2DAA2D;IACtE,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,gCAAgC;IAC3C,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,qCAAqC;IAChD,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,8BAA8B;IACzC,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,gCAAgC;IAC3C,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,6BAA6B;IACxC,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,+BAA+B;IAC1C,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,uCAAuC;IAClD,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,mCAAmC;IAC9C,SAAS,EAAE,kCAAkC;IAC7C,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,6CAA6C;IACxD,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,oCAAoC;IAC/C,SAAS,EAAE,gCAAgC;IAC3C,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,mCAAmC;IAC9C,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,4DAA4D;IACvE,SAAS,EAAE,mDAAmD;IAC9D,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,YAAY;CAC1B,CAAC;AAEF;;;GAGG;AACU,0BAAkB,GAAG;IAC9B,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;CACrB,CAAC;;;;;;;;;;;;;;;AClsCF,2HAA4D;AAG5D,IAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC/C,IAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC/C,IAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC3C,IAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC/C,IAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAE/C;;GAEG;AACU,iBAAS,GAAU;IAC5B,GAAG,EAAE,MAAM;IACX,WAAW,EAAE,UAAU;IACvB,SAAS,EAAE,EAAE;CAChB,CAAC;AAEF;;GAEG;AACU,oBAAY,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAS,CAAC,CAAC;AAcrF;;;GAGG;AACU,iBAAS,GAAqC;IACvD,MAAM,EAAE;QACJ,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,OAAO;QACP,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,OAAO;QACP,OAAO;QACP,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC;QACrC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC9B,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC9B,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,OAAO;QACP,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC;QACrC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;KACvB;IACD,MAAM,EAAE;QACJ,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;KACvB;IACD,UAAU,EAAE;QACR,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;KACvB;IACD,IAAI,EAAE;QACF,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC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,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;KACpC;IACD,OAAO,EAAE;QACL,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB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2CAA2C,sCAAsC,UAAU,mBAAmB,IAAI;AAClH;;AAEO;AACP,+BAA+B,uCAAuC,YAAY,KAAK,OAAO;AAC9F;AACA;;AAEA;AACA,wCAAwC,4BAA4B;AACpE,CAAC;AACD;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP,2CAA2C;AAC3C;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEA,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;UChUF;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;UENA;UACA;UACA;UACA","sources":["webpack://roosterjsReact/./packages/roosterjs-react/lib/colorPicker/component/renderColorPicker.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/colorPicker/index.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/colorPicker/utils/backgroundColors.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/colorPicker/utils/getClassNamesForColorPicker.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/colorPicker/utils/textColors.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/common/index.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/common/utils/createUIUtilities.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/common/utils/getLocalizedString.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/common/utils/renderReactComponent.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/contextMenu/index.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/contextMenu/menus/createImageEditMenuProvider.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/contextMenu/menus/createListEditMenuProvider.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/contextMenu/menus/createTableEditMenuProvider.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/contextMenu/plugin/createContextMenuPlugin.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/contextMenu/utils/createContextMenuProvider.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/emoji/components/EmojiIcon.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/emoji/components/EmojiNavBar.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/emoji/components/EmojiPane.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/emoji/components/EmojiStatusBar.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/emoji/components/showEmojiCallout.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/emoji/index.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/emoji/plugin/createEmojiPlugin.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/emoji/type/EmojiStrings.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/emoji/utils/emojiList.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/emoji/utils/searchEmojis.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/index.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/inputDialog/component/InputDialog.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/inputDialog/component/InputDialogItem.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/inputDialog/index.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/inputDialog/utils/showInputDialog.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/pasteOptions/component/showPasteOptionPane.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/pasteOptions/index.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/pasteOptions/plugin/createPasteOptionPlugin.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/pasteOptions/utils/buttons.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/alignCenterButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/alignJustifyButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/alignLeftButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/alignRightButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/backgroundColorButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/blockQuoteButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/boldButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/bulletedListButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/clearFormatButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/codeButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/decreaseFontSizeButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/decreaseIndentButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/fontButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/fontSizeButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/increaseFontSizeButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/increaseIndentButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/insertImageButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/insertLinkButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/insertTableButton.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/italicButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/ltrButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/moreCommands.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/numberedListButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/redoButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/removeLinkButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/rtlButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/setHeadingLevelButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/strikethroughButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/subscriptButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/superscriptButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/textColorButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/underlineButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/undoButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/component/Ribbon.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/index.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/plugin/createRibbonPlugin.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/rooster/component/Rooster.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/rooster/index.ts","webpack://roosterjsReact/external var \"FluentUIReact\"","webpack://roosterjsReact/external var \"React\"","webpack://roosterjsReact/external var \"ReactDOM\"","webpack://roosterjsReact/external var \"roosterjs\"","webpack://roosterjsReact/./node_modules/tslib/tslib.es6.mjs","webpack://roosterjsReact/webpack/bootstrap","webpack://roosterjsReact/webpack/runtime/define property getters","webpack://roosterjsReact/webpack/runtime/hasOwnProperty shorthand","webpack://roosterjsReact/webpack/runtime/make namespace object","webpack://roosterjsReact/webpack/before-startup","webpack://roosterjsReact/webpack/startup","webpack://roosterjsReact/webpack/after-startup"],"sourcesContent":["import * as React from 'react';\nimport { BackgroundColorDropDownItems, BackgroundColors } from '../utils/backgroundColors';\nimport { mergeStyleSets } from '@fluentui/react/lib/Styling';\nimport { TextColorDropDownItems, TextColors } from '../utils/textColors';\nimport {\n getColorPickerContainerClassName,\n getColorPickerItemClassName,\n} from '../utils/getClassNamesForColorPicker';\nimport type { RibbonButtonDropDown } from '../../ribbon/type/RibbonButtonDropDown';\nimport type { IContextualMenuItem } from '@fluentui/react/lib/ContextualMenu';\nimport type { Colors } from 'roosterjs-content-model-types';\n\nconst classNames = mergeStyleSets({\n colorSquare: {\n width: '20px',\n height: '20px',\n margin: '4px',\n borderStyle: 'solid',\n borderWidth: '2px',\n '&:hover': {\n borderColor: 'red',\n },\n },\n colorSquareBorder: {\n borderColor: 'transparent',\n },\n colorSquareBorderWhite: {\n borderColor: '#bebebe',\n },\n});\n\n/**\n * @internal\n * Render a color picker\n * @param item Color items\n * @param colorDef Definition of colors\n * @param onClick On click event handler\n */\nexport function renderColorPicker<Strings extends string>(\n item: IContextualMenuItem,\n colorDef: Record<Strings, Colors>,\n onClick: (\n e: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>,\n item: IContextualMenuItem\n ) => void\n) {\n const key = item.key as Strings;\n const buttonColor = colorDef[key].lightModeColor;\n\n return (\n <button onClick={e => onClick(e, item)} title={item.text}>\n <div\n className={\n classNames.colorSquare +\n ' ' +\n (key == 'textColorWhite' || key == 'backgroundColorWhite'\n ? classNames.colorSquareBorderWhite\n : classNames.colorSquareBorder)\n }\n style={{\n backgroundColor: buttonColor,\n }}></div>\n </button>\n );\n}\n\n/**\n * Get a drop down data object of color picker used by drop down button\n * @param colorSet The set of color, text or background\n * @returns The color picker drop down for ribbon button\n */\nexport function getColorPickerDropDown(colorSet: 'text' | 'background'): RibbonButtonDropDown {\n return {\n items: colorSet == 'background' ? BackgroundColorDropDownItems : TextColorDropDownItems,\n itemClassName: getColorPickerItemClassName(),\n allowLivePreview: true,\n itemRender:\n colorSet == 'background'\n ? (item, onClick) => renderColorPicker(item, BackgroundColors, onClick)\n : (item, onClick) => renderColorPicker(item, TextColors, onClick),\n commandBarSubMenuProperties: {\n className: getColorPickerContainerClassName(),\n },\n };\n}\n","export { BackgroundColorKeys, TextColorKeys } from './types/stringKeys';\nexport { getBackgroundColorValue } from './utils/backgroundColors';\nexport { getTextColorValue } from './utils/textColors';\nexport { getColorPickerDropDown } from './component/renderColorPicker';\n","import type { Colors } from 'roosterjs-content-model-types';\nimport type { BackgroundColorKeys } from '../types/stringKeys';\n\n/**\n * @internal\n */\nconst BackgroundColors: Record<BackgroundColorKeys, Colors> = {\n backgroundColorCyan: { lightModeColor: '#00ffff', darkModeColor: '#005357' },\n backgroundColorGreen: { lightModeColor: '#00ff00', darkModeColor: '#005e00' },\n backgroundColorYellow: { lightModeColor: '#ffff00', darkModeColor: '#383e00' },\n backgroundColorOrange: { lightModeColor: '#ff8000', darkModeColor: '#bf4c00' },\n backgroundColorRed: { lightModeColor: '#ff0000', darkModeColor: '#ff2711' },\n backgroundColorMagenta: { lightModeColor: '#ff00ff', darkModeColor: '#e700e8' },\n backgroundColorLightCyan: { lightModeColor: '#80ffff', darkModeColor: '#004c4f' },\n backgroundColorLightGreen: { lightModeColor: '#80ff80', darkModeColor: '#005400' },\n backgroundColorLightYellow: { lightModeColor: '#ffff80', darkModeColor: '#343c00' },\n backgroundColorLightOrange: { lightModeColor: '#ffc080', darkModeColor: '#77480b' },\n backgroundColorLightRed: { lightModeColor: '#ff8080', darkModeColor: '#bc454a' },\n backgroundColorLightMagenta: { lightModeColor: '#ff80ff', darkModeColor: '#aa2bad' },\n backgroundColorWhite: { lightModeColor: '#ffffff', darkModeColor: '#333333' },\n backgroundColorLightGray: { lightModeColor: '#cccccc', darkModeColor: '#535353' },\n backgroundColorGray: { lightModeColor: '#999999', darkModeColor: '#777777' },\n backgroundColorDarkGray: { lightModeColor: '#666666', darkModeColor: '#a0a0a0' },\n backgroundColorDarkerGray: { lightModeColor: '#333333', darkModeColor: '#cfcfcf' },\n backgroundColorBlack: { lightModeColor: '#000000', darkModeColor: '#ffffff' },\n};\n\n/**\n * @internal\n * List of colors in drop down list\n */\nconst BackgroundColorDropDownItems: Record<BackgroundColorKeys, string> = {\n backgroundColorCyan: 'Cyan',\n backgroundColorGreen: 'Green',\n backgroundColorYellow: 'Yellow',\n backgroundColorOrange: 'Orange',\n backgroundColorRed: 'Red',\n backgroundColorMagenta: 'Magenta',\n backgroundColorLightCyan: 'Light cyan',\n backgroundColorLightGreen: 'Light green',\n backgroundColorLightYellow: 'Light yellow',\n backgroundColorLightOrange: 'Light orange',\n backgroundColorLightRed: 'Light red',\n backgroundColorLightMagenta: 'Light magenta',\n backgroundColorWhite: 'White',\n backgroundColorLightGray: 'Light gray',\n backgroundColorGray: 'Gray',\n backgroundColorDarkGray: 'Dark gray',\n backgroundColorDarkerGray: 'Darker gray',\n backgroundColorBlack: 'Black',\n};\n\n/**\n * Get mode independent color value of background color from the given color key\n * @param key The key to get color from\n * @returns A model independent color value of the given key\n */\nfunction getBackgroundColorValue(key: BackgroundColorKeys): Colors {\n return BackgroundColors[key];\n}\n\nexport { BackgroundColors, BackgroundColorDropDownItems, getBackgroundColorValue };\n","import { mergeStyleSets } from '@fluentui/react/lib/Styling';\n\nconst classNames = mergeStyleSets({\n colorPickerContainer: {\n width: '192px',\n padding: '8px',\n overflow: 'hidden',\n '& ul': {\n width: '192px',\n overflow: 'hidden',\n },\n },\n colorMenuItem: {\n display: 'inline-block',\n width: '32px',\n height: '32px',\n '& button': {\n padding: '0px',\n minWidth: '0px',\n background: 'transparent',\n border: 'none',\n },\n },\n});\n\n/**\n * @internal\n */\nexport function getColorPickerContainerClassName() {\n return classNames.colorPickerContainer;\n}\n\n/**\n * @internal\n */\nexport function getColorPickerItemClassName() {\n return classNames.colorMenuItem;\n}\n","import type { Colors } from 'roosterjs-content-model-types';\nimport type { TextColorKeys } from '../types/stringKeys';\n\n/**\n * @internal\n */\nconst TextColors: Record<TextColorKeys, Colors> = {\n textColorLightBlue: { lightModeColor: '#51a7f9', darkModeColor: '#0075c2' },\n textColorLightGreen: { lightModeColor: '#6fc040', darkModeColor: '#207a00' },\n textColorLightYellow: { lightModeColor: '#f5d427', darkModeColor: '#5d4d00' },\n textColorLightOrange: { lightModeColor: '#f3901d', darkModeColor: '#ab5500' },\n textColorLightRed: { lightModeColor: '#ed5c57', darkModeColor: '#df504d' },\n textColorLightPurple: { lightModeColor: '#b36ae2', darkModeColor: '#ab63da' },\n textColorBlue: { lightModeColor: '#0c64c0', darkModeColor: '#6da0ff' },\n textColorGreen: { lightModeColor: '#0c882a', darkModeColor: '#3da848' },\n textColorYellow: { lightModeColor: '#dcbe22', darkModeColor: '#6d5c00' },\n textColorOrange: { lightModeColor: '#de6a19', darkModeColor: '#d3610c' },\n textColorRed: { lightModeColor: '#c82613', darkModeColor: '#ff6847' },\n textColorPurple: { lightModeColor: '#763e9b', darkModeColor: '#d394f9' },\n textColorDarkBlue: { lightModeColor: '#174e86', darkModeColor: '#93b8f9' },\n textColorDarkGreen: { lightModeColor: '#0f5c1a', darkModeColor: '#7fc57b' },\n textColorDarkYellow: { lightModeColor: '#c3971d', darkModeColor: '#946f00' },\n textColorDarkOrange: { lightModeColor: '#be5b17', darkModeColor: '#de7633' },\n textColorDarkRed: { lightModeColor: '#861106', darkModeColor: '#ff9b7c' },\n textColorDarkPurple: { lightModeColor: '#5e327c', darkModeColor: '#dea9fd' },\n textColorDarkerBlue: { lightModeColor: '#002451', darkModeColor: '#cedbff' },\n textColorDarkerGreen: { lightModeColor: '#06400c', darkModeColor: '#a3da9b' },\n textColorDarkerYellow: { lightModeColor: '#a37519', darkModeColor: '#b5852a' },\n textColorDarkerOrange: { lightModeColor: '#934511', darkModeColor: '#ef935c' },\n textColorDarkerRed: { lightModeColor: '#570606', darkModeColor: '#ffc0b1' },\n textColorDarkerPurple: { lightModeColor: '#3b204d', darkModeColor: '#eecaff' },\n textColorWhite: { lightModeColor: '#ffffff', darkModeColor: '#333333' },\n textColorLightGray: { lightModeColor: '#cccccc', darkModeColor: '#535353' },\n textColorGray: { lightModeColor: '#999999', darkModeColor: '#777777' },\n textColorDarkGray: { lightModeColor: '#666666', darkModeColor: '#a0a0a0' },\n textColorDarkerGray: { lightModeColor: '#333333', darkModeColor: '#cfcfcf' },\n textColorBlack: { lightModeColor: '#000000', darkModeColor: '#ffffff' },\n};\n\n/**\n * @internal\n */\nconst TextColorDropDownItems: Record<TextColorKeys, string> = {\n textColorLightBlue: 'Light blue',\n textColorLightGreen: 'Light green',\n textColorLightYellow: 'Light yellow',\n textColorLightOrange: 'Light orange',\n textColorLightRed: 'Light red',\n textColorLightPurple: 'Light purple',\n textColorBlue: 'Blue',\n textColorGreen: 'Green',\n textColorYellow: 'Yellow',\n textColorOrange: 'Orange',\n textColorRed: 'Red',\n textColorPurple: 'Purple',\n textColorDarkBlue: 'Dark blue',\n textColorDarkGreen: 'Dark green',\n textColorDarkYellow: 'Dark yellow',\n textColorDarkOrange: 'Dark orange',\n textColorDarkRed: 'Dark red',\n textColorDarkPurple: 'Dark purple',\n textColorDarkerBlue: 'Darker blue',\n textColorDarkerGreen: 'Darker green',\n textColorDarkerYellow: 'Darker yellow',\n textColorDarkerOrange: 'Darker orange',\n textColorDarkerRed: 'Darker red',\n textColorDarkerPurple: 'Darker purple',\n textColorWhite: 'White',\n textColorLightGray: 'Light gray',\n textColorGray: 'Gray',\n textColorDarkGray: 'Dark gray',\n textColorDarkerGray: 'Darker gray',\n textColorBlack: 'Black',\n};\n\n/**\n * Get mode independent color value of text color from the given color key\n * @param key The key to get color from\n * @returns A model independent color value of the given key\n */\nfunction getTextColorValue(key: TextColorKeys): Colors {\n return TextColors[key];\n}\n\nexport { TextColors, TextColorDropDownItems, getTextColorValue };\n","export {\n LocalizedStrings,\n OkButtonStringKey,\n CancelButtonStringKey,\n MenuItemSplitterKey0,\n} from './type/LocalizedStrings';\nexport { UIUtilities } from './type/UIUtilities';\nexport { ReactEditorPlugin } from './type/ReactEditorPlugin';\nexport { createUIUtilities } from './utils/createUIUtilities';\nexport { getLocalizedString } from './utils/getLocalizedString';\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { ThemeProvider } from '@fluentui/react/lib/Theme';\nimport { WindowProvider } from '@fluentui/react/lib/WindowProvider';\nimport type { UIUtilities } from '../type/UIUtilities';\nimport type { PartialTheme } from '@fluentui/react/lib/Theme';\n\n/**\n * Create the UI Utilities object for plugins to render additional react components\n * @param container Container DIV of editor\n * @param theme Current theme used by editor\n * @returns A UIUtilities object\n */\nexport function createUIUtilities(container: HTMLDivElement, theme: PartialTheme): UIUtilities {\n return {\n renderComponent: element => {\n const doc = container.ownerDocument;\n const div = doc.createElement('div');\n doc.body.appendChild(div);\n\n ReactDOM.render(\n <WindowProvider window={doc.defaultView!}>\n <ThemeProvider theme={theme}>{element}</ThemeProvider>\n </WindowProvider>,\n div\n );\n\n return () => {\n ReactDOM.unmountComponentAtNode(div);\n doc.body.removeChild(div);\n };\n },\n isRightToLeft: () => {\n const dir =\n container &&\n container.ownerDocument.defaultView?.getComputedStyle(container).direction;\n\n return dir == 'rtl';\n },\n };\n}\n","import type { LocalizedStrings } from '../type/LocalizedStrings';\n\n/**\n * Get a localized string\n * @param strings The LocalizedStrings map\n * @param key Key of the string\n * @param defaultString Default unlocalized string, will be used if strings is not specified or the give key doesn't exist in strings\n * @returns A localized string from the string map, or defaultString\n */\nexport function getLocalizedString<T extends string, R extends string | null | undefined>(\n strings: LocalizedStrings<T> | undefined,\n key: T,\n defaultString: R\n) {\n const str = strings?.[key];\n\n if (typeof str == 'function') {\n return str();\n } else if (typeof str == 'string') {\n return str;\n } else {\n return defaultString;\n }\n}\n","import type { UIUtilities } from '../type/UIUtilities';\n\n/**\n * @internal\n */\nexport function renderReactComponent(uiUtilities: UIUtilities | null, reactElement: JSX.Element) {\n if (uiUtilities) {\n return uiUtilities.renderComponent(reactElement);\n } else {\n throw new Error(\n 'UIUtilities is required but not provided. Please call ReactEditorPlugin.setUIUtilities() to set a valid uiUtilities object'\n );\n }\n}\n","export { createContextMenuPlugin } from './plugin/createContextMenuPlugin';\nexport { createContextMenuProvider } from './utils/createContextMenuProvider';\nexport { createListEditMenuProvider } from './menus/createListEditMenuProvider';\nexport { createImageEditMenuProvider } from './menus/createImageEditMenuProvider';\nexport { createTableEditMenuProvider } from './menus/createTableEditMenuProvider';\nexport { ContextMenuItem } from './types/ContextMenuItem';\nexport {\n ListNumberMenuItemStringKey,\n ImageEditMenuItemStringKey,\n TableEditInsertMenuItemStringKey,\n TableEditDeleteMenuItemStringKey,\n TableEditMergeMenuItemStringKey,\n TableEditSplitMenuItemStringKey,\n TableEditAlignMenuItemStringKey,\n TableEditShadeMenuItemStringKey,\n TableEditMenuItemStringKey,\n TableEditAlignTableMenuItemStringKey,\n} from './types/ContextMenuItemStringKeys';\n","import { createContextMenuProvider } from '../utils/createContextMenuProvider';\nimport { formatImageWithContentModel, setImageAltText } from 'roosterjs-content-model-api';\nimport { iterateSelections, mutateBlock, updateImageMetadata } from 'roosterjs-content-model-dom';\nimport { showInputDialog } from '../../inputDialog/utils/showInputDialog';\nimport type { EditorPlugin, IEditor, ImageEditor } from 'roosterjs-content-model-types';\nimport type { ContextMenuItem } from '../types/ContextMenuItem';\nimport type { ImageEditMenuItemStringKey } from '../types/ContextMenuItemStringKeys';\nimport type { LocalizedStrings } from '../../common/type/LocalizedStrings';\n\nconst MIN_WIDTH = 10;\nconst MIN_HEIGHT = 10;\n\nconst ImageAltTextMenuItem: ContextMenuItem<ImageEditMenuItemStringKey, ImageEditor> = {\n key: 'menuNameImageAltText',\n unlocalizedText: 'Add alternate text',\n onClick: (_, editor, node, strings, uiUtilities) => {\n const image = node as HTMLImageElement;\n const initValue = image.alt;\n\n showInputDialog(\n uiUtilities,\n 'menuNameImageAltText',\n 'Add alternate text',\n {\n altText: {\n labelKey: null,\n unlocalizedLabel: null,\n initValue: initValue,\n },\n },\n strings\n ).then(values => {\n editor.focus();\n editor.setDOMSelection({\n type: 'image',\n image: image,\n });\n\n if (values) {\n setImageAltText(editor, values.altText);\n }\n });\n },\n};\n\nconst sizeMap: { [key in ImageEditMenuItemStringKey]?: number } = {\n menuNameImageSizeBestFit: 0,\n menuNameImageSizeSmall: 0.25,\n menuNameImageSizeMedium: 0.5,\n menuNameImageSizeOriginal: 1,\n};\n\nconst ImageResizeMenuItem: ContextMenuItem<ImageEditMenuItemStringKey, ImageEditor> = {\n key: 'menuNameImageResize',\n unlocalizedText: 'Size',\n subItems: {\n menuNameImageSizeBestFit: 'Best fit',\n menuNameImageSizeSmall: 'Small',\n menuNameImageSizeMedium: 'Medium',\n menuNameImageSizeOriginal: 'Original',\n },\n onClick: (key, editor, _) => {\n const selection = editor.getDOMSelection();\n if (!selection || selection.type !== 'image') {\n return;\n }\n\n const percentage = sizeMap[key] ?? 0;\n\n if (percentage > 0) {\n const { naturalWidth, naturalHeight } = selection.image;\n\n resizeByPercentage(editor, percentage, naturalWidth, naturalHeight);\n } else {\n resetImage(editor);\n }\n },\n};\n\nconst ImageRotateMenuItem: ContextMenuItem<ImageEditMenuItemStringKey, ImageEditor> = {\n key: 'menuNameImageRotate',\n unlocalizedText: 'Rotate image',\n subItems: {\n menuNameImageRotateLeft: 'Left',\n menuNameImageRotateRight: 'Right',\n },\n shouldShow: (_, node, imageEditor) => {\n return (\n !!imageEditor?.isOperationAllowed('rotate') &&\n imageEditor.canRegenerateImage(node as HTMLImageElement)\n );\n },\n onClick: (key, _editor, _node, _strings, _uiUtilities, imageEdit) => {\n switch (key) {\n case 'menuNameImageRotateLeft':\n imageEdit?.rotateImage(-Math.PI / 2);\n break;\n case 'menuNameImageRotateRight':\n imageEdit?.rotateImage(Math.PI / 2);\n break;\n }\n },\n};\n\nconst ImageFlipMenuItem: ContextMenuItem<ImageEditMenuItemStringKey, ImageEditor> = {\n key: 'menuNameImageFlip',\n unlocalizedText: 'Flip image',\n subItems: {\n menuNameImageRotateFlipHorizontally: 'Flip Horizontally',\n menuNameImageRotateFlipVertically: 'Flip Vertically',\n },\n shouldShow: (_, node, imageEditor) => {\n return (\n !!imageEditor?.isOperationAllowed('rotate') &&\n imageEditor.canRegenerateImage(node as HTMLImageElement)\n );\n },\n onClick: (key, _editor, _node, _strings, _uiUtilities, imageEdit) => {\n switch (key) {\n case 'menuNameImageRotateFlipHorizontally':\n imageEdit?.flipImage('horizontal');\n break;\n case 'menuNameImageRotateFlipVertically':\n imageEdit?.flipImage('vertical');\n break;\n }\n },\n};\n\nconst ImageCropMenuItem: ContextMenuItem<ImageEditMenuItemStringKey, ImageEditor> = {\n key: 'menuNameImageCrop',\n unlocalizedText: 'Crop image',\n shouldShow: (_, node, imageEditor) => {\n return (\n !!imageEditor?.isOperationAllowed('crop') &&\n imageEditor.canRegenerateImage(node as HTMLImageElement)\n );\n },\n onClick: (_, _editor, _node, _strings, _uiUtilities, imageEdit) => {\n imageEdit?.cropImage();\n },\n};\n\nconst ImageRemoveMenuItem: ContextMenuItem<ImageEditMenuItemStringKey, ImageEditor> = {\n key: 'menuNameImageRemove',\n unlocalizedText: 'Remove image',\n onClick: (_, editor, node) => {\n removeImage(editor);\n },\n};\n\nconst ImageCopyMenuItem: ContextMenuItem<ImageEditMenuItemStringKey, ImageEditor> = {\n key: 'menuNameImageCopy',\n unlocalizedText: 'Copy image',\n onClick: (_, editor) => {\n editor.getDocument()?.execCommand('copy');\n },\n};\n\nconst ImageCutMenuItem: ContextMenuItem<ImageEditMenuItemStringKey, ImageEditor> = {\n key: 'menuNameImageCut',\n unlocalizedText: 'Cut image',\n onClick: (_, editor) => {\n editor.getDocument()?.execCommand('cut');\n },\n};\n\nfunction shouldShowImageEditItems(editor: IEditor, _: Node) {\n const selection = editor.getDOMSelection();\n return selection?.type === 'image' && !!selection.image;\n}\n\n/**\n * Create a new instance of ContextMenuProvider to support image editing functionalities in context menu\n * @returns A new ContextMenuProvider\n */\nexport function createImageEditMenuProvider(\n imageEditor?: ImageEditor,\n strings?: LocalizedStrings<ImageEditMenuItemStringKey>\n): EditorPlugin {\n return createContextMenuProvider<ImageEditMenuItemStringKey, ImageEditor>(\n 'imageEdit',\n [\n ImageAltTextMenuItem,\n ImageResizeMenuItem,\n ImageCropMenuItem,\n ImageRemoveMenuItem,\n ImageRotateMenuItem,\n ImageFlipMenuItem,\n ImageCopyMenuItem,\n ImageCutMenuItem,\n ],\n strings,\n shouldShowImageEditItems,\n imageEditor\n );\n}\n\nfunction removeImage(editor: IEditor) {\n editor.formatContentModel(\n model => {\n let changed = false;\n\n iterateSelections(model, (_, __, block, segments) => {\n segments?.forEach(segment => {\n if (segment.segmentType == 'Image' && block?.blockType == 'Paragraph') {\n const index = block.segments.indexOf(segment);\n\n if (index >= 0) {\n mutateBlock(block).segments.splice(index, 1);\n changed = true;\n }\n }\n });\n });\n\n return changed;\n },\n {\n apiName: 'DeleteImage',\n }\n );\n}\n\nfunction resizeByPercentage(\n editor: IEditor,\n percentage: number,\n naturalWidth: number,\n naturalHeight: number\n) {\n formatImageWithContentModel(editor, 'resizeImage', segment => {\n updateImageMetadata(segment, format => {\n const validFormat = Object.assign(\n {\n naturalWidth,\n naturalHeight,\n leftPercent: 0,\n rightPercent: 0,\n topPercent: 0,\n bottomPercent: 0,\n angleRad: 0,\n },\n format\n );\n\n const newWidth = Math.max(\n MIN_WIDTH,\n validFormat.naturalWidth *\n (1 - validFormat.leftPercent - validFormat.rightPercent) *\n percentage\n );\n const newHeight = Math.max(\n MIN_HEIGHT,\n validFormat.naturalHeight *\n (1 - validFormat.topPercent - validFormat.bottomPercent) *\n percentage\n );\n validFormat.widthPx = newWidth;\n validFormat.heightPx = newHeight;\n segment.format.width = newWidth + 'px';\n segment.format.height = newHeight + 'px';\n\n return validFormat;\n });\n });\n}\n\nfunction resetImage(editor: IEditor) {\n formatImageWithContentModel(editor, 'resizeImage', segment => {\n updateImageMetadata(segment, () => null);\n\n delete segment.format.width;\n delete segment.format.height;\n\n segment.format.maxWidth = '100%';\n });\n}\n","import { createContextMenuProvider } from '../utils/createContextMenuProvider';\nimport { isElementOfType, isNodeOfType } from 'roosterjs-content-model-dom';\nimport { setListStartNumber } from 'roosterjs-content-model-api';\nimport { showInputDialog } from '../../inputDialog/utils/showInputDialog';\nimport type { EditorPlugin, IEditor } from 'roosterjs-content-model-types';\nimport type { ContextMenuItem } from '../types/ContextMenuItem';\nimport type { ListNumberMenuItemStringKey } from '../types/ContextMenuItemStringKeys';\nimport type { LocalizedStrings } from '../../common/type/LocalizedStrings';\n\nconst ListNumberResetMenuItem: ContextMenuItem<ListNumberMenuItemStringKey> = {\n key: 'menuNameListNumberReset',\n unlocalizedText: 'Restart at 1',\n onClick: (_, editor, node) => {\n setListStartNumber(editor, 1);\n },\n};\n\nconst ListNumberEditMenuItem: ContextMenuItem<ListNumberMenuItemStringKey> = {\n key: 'menuNameListNumberEdit',\n unlocalizedText: 'Set numbering value',\n onClick: (_, editor, node, strings, uiUtilities) => {\n const listAndLi = getEditingList(editor, node);\n\n if (listAndLi) {\n const { list, li } = listAndLi;\n let startNumber = list.start;\n\n for (let child = list.firstChild; child; child = child.nextSibling) {\n if (child === li) {\n break;\n } else if (isNodeOfType(child, 'ELEMENT_NODE') && isElementOfType(child, 'li')) {\n startNumber += 1;\n }\n }\n\n showInputDialog(\n uiUtilities,\n 'menuNameListNumberEdit',\n 'Set numbering value',\n {\n value: {\n labelKey: 'dialogTextSetListNumber',\n unlocalizedLabel: 'Set value to',\n initValue: startNumber.toString(),\n },\n },\n strings\n ).then(values => {\n editor.focus();\n\n if (values) {\n const result = parseInt(values.value);\n\n if (result > 0 && result != startNumber) {\n setListStartNumber(editor, Math.floor(result));\n }\n }\n });\n }\n },\n};\n\nfunction getEditingList(editor: IEditor, node: Node) {\n const domHelper = editor.getDOMHelper();\n const li = domHelper.findClosestElementAncestor(node, 'LI');\n const list = li && (domHelper.findClosestElementAncestor(li, 'ol') as HTMLOListElement | null);\n\n return list?.isContentEditable ? { list, li } : null;\n}\n\n/**\n * Create a new instance of ContextMenuProvider to support list number editing functionalities in context menu\n * @returns A new ContextMenuProvider\n */\nexport function createListEditMenuProvider(\n strings?: LocalizedStrings<ListNumberMenuItemStringKey>\n): EditorPlugin {\n return createContextMenuProvider(\n 'listEdit',\n [ListNumberResetMenuItem, ListNumberEditMenuItem],\n strings,\n (editor, node) => !!getEditingList(editor, node)\n );\n}\n","import { createContextMenuProvider } from '../utils/createContextMenuProvider';\nimport { editTable, setTableCellShade } from 'roosterjs-content-model-api';\nimport { renderColorPicker } from '../../colorPicker/component/renderColorPicker';\nimport type { Colors, EditorPlugin, IEditor, TableOperation } from 'roosterjs-content-model-types';\nimport type { ContextMenuItem } from '../types/ContextMenuItem';\nimport type { LocalizedStrings } from '../../common/type/LocalizedStrings';\nimport {\n getColorPickerContainerClassName,\n getColorPickerItemClassName,\n} from '../../colorPicker/utils/getClassNamesForColorPicker';\nimport type {\n TableEditMenuItemStringKey,\n TableEditInsertMenuItemStringKey,\n TableEditDeleteMenuItemStringKey,\n TableEditMergeMenuItemStringKey,\n TableEditSplitMenuItemStringKey,\n TableEditAlignMenuItemStringKey,\n TableEditShadeMenuItemStringKey,\n TableEditAlignTableMenuItemStringKey,\n} from '../types/ContextMenuItemStringKeys';\nimport {\n BackgroundColorDropDownItems,\n BackgroundColors,\n} from '../../colorPicker/utils/backgroundColors';\n\nconst TableEditOperationMap: Partial<Record<TableEditMenuItemStringKey, TableOperation>> = {\n menuNameTableInsertAbove: 'insertAbove',\n menuNameTableInsertBelow: 'insertBelow',\n menuNameTableInsertLeft: 'insertLeft',\n menuNameTableInsertRight: 'insertRight',\n menuNameTableDeleteTable: 'deleteTable',\n menuNameTableDeleteColumn: 'deleteColumn',\n menuNameTableDeleteRow: 'deleteRow',\n menuNameTableMergeAbove: 'mergeAbove',\n menuNameTableMergeBelow: 'mergeBelow',\n menuNameTableMergeLeft: 'mergeLeft',\n menuNameTableMergeRight: 'mergeRight',\n menuNameTableMergeCells: 'mergeCells',\n menuNameTableSplitHorizontally: 'splitHorizontally',\n menuNameTableSplitVertically: 'splitVertically',\n menuNameTableAlignLeft: 'alignCellLeft',\n menuNameTableAlignCenter: 'alignCellCenter',\n menuNameTableAlignRight: 'alignCellRight',\n menuNameTableAlignTop: 'alignCellTop',\n menuNameTableAlignMiddle: 'alignCellMiddle',\n menuNameTableAlignBottom: 'alignCellBottom',\n menuNameTableAlignTableLeft: 'alignLeft',\n menuNameTableAlignTableCenter: 'alignCenter',\n menuNameTableAlignTableRight: 'alignRight',\n};\n\nconst ColorValues = {\n ...BackgroundColors,\n // Add this value to satisfy compiler\n menuNameTableCellShade: <Colors>(<unknown>null),\n};\n\nfunction onClick(key: TableEditMenuItemStringKey, editor: IEditor) {\n const operation = TableEditOperationMap[key];\n\n if (operation) {\n editTable(editor, operation);\n }\n}\n\nconst TableEditInsertMenuItem: ContextMenuItem<TableEditInsertMenuItemStringKey> = {\n key: 'menuNameTableInsert',\n unlocalizedText: 'Insert',\n subItems: {\n menuNameTableInsertAbove: 'Insert above',\n menuNameTableInsertBelow: 'Insert below',\n menuNameTableInsertLeft: 'Insert left',\n menuNameTableInsertRight: 'Insert right',\n },\n onClick,\n};\n\nconst TableEditDeleteMenuItem: ContextMenuItem<TableEditDeleteMenuItemStringKey> = {\n key: 'menuNameTableDelete',\n unlocalizedText: 'Delete',\n subItems: {\n menuNameTableDeleteColumn: 'Delete column',\n menuNameTableDeleteRow: 'Delete row',\n menuNameTableDeleteTable: 'Delete table',\n },\n onClick,\n};\n\nconst TableEditMergeMenuItem: ContextMenuItem<TableEditMergeMenuItemStringKey> = {\n key: 'menuNameTableMerge',\n unlocalizedText: 'Merge',\n subItems: {\n menuNameTableMergeAbove: 'Merge above',\n menuNameTableMergeBelow: 'Merge below',\n menuNameTableMergeLeft: 'Merge left',\n menuNameTableMergeRight: 'Merge right',\n '-': '-',\n menuNameTableMergeCells: 'Merge selected cells',\n },\n onClick,\n};\n\nconst TableEditSplitMenuItem: ContextMenuItem<TableEditSplitMenuItemStringKey> = {\n key: 'menuNameTableSplit',\n unlocalizedText: 'Split',\n subItems: {\n menuNameTableSplitHorizontally: 'Split horizontally',\n menuNameTableSplitVertically: 'Split vertically',\n },\n onClick,\n};\n\nconst TableEditAlignMenuItem: ContextMenuItem<TableEditAlignMenuItemStringKey> = {\n key: 'menuNameTableAlign',\n unlocalizedText: 'Align cell',\n subItems: {\n menuNameTableAlignLeft: 'Align left',\n menuNameTableAlignCenter: 'Align center',\n menuNameTableAlignRight: 'Align right',\n '-': '-',\n menuNameTableAlignTop: 'Align top',\n menuNameTableAlignMiddle: 'Align middle',\n menuNameTableAlignBottom: 'Align bottom',\n },\n onClick,\n};\n\nconst TableEditAlignTableMenuItem: ContextMenuItem<TableEditAlignTableMenuItemStringKey> = {\n key: 'menuNameTableAlignTable',\n unlocalizedText: 'Align table',\n subItems: {\n menuNameTableAlignTableLeft: 'Align left',\n menuNameTableAlignTableCenter: 'Align center',\n menuNameTableAlignTableRight: 'Align right',\n },\n onClick,\n};\n\nconst TableEditCellShadeMenuItem: ContextMenuItem<TableEditShadeMenuItemStringKey> = {\n key: 'menuNameTableCellShade',\n unlocalizedText: 'Shading',\n subItems: BackgroundColorDropDownItems,\n onClick: (key, editor) => {\n setTableCellShade(editor, ColorValues[key].lightModeColor);\n },\n itemRender: (item, click) => renderColorPicker(item, ColorValues, click),\n itemClassName: getColorPickerItemClassName(),\n commandBarSubMenuProperties: {\n className: getColorPickerContainerClassName(),\n },\n};\n\nfunction getEditingTable(editor: IEditor, node: Node) {\n const domHelper = editor.getDOMHelper();\n const td = domHelper.findClosestElementAncestor(node, 'TD,TH');\n const table = td && domHelper.findClosestElementAncestor(td, 'table');\n\n return table?.isContentEditable ? { table, td } : null;\n}\n\n/**\n * Create a new instance of ContextMenuProvider to support table editing functionalities in context menu\n * @returns A new ContextMenuProvider\n */\nexport function createTableEditMenuProvider(\n strings?: LocalizedStrings<TableEditMenuItemStringKey>\n): EditorPlugin {\n return createContextMenuProvider(\n 'tableEdit',\n <ContextMenuItem<TableEditMenuItemStringKey>[]>[\n TableEditInsertMenuItem,\n TableEditDeleteMenuItem,\n TableEditMergeMenuItem,\n TableEditSplitMenuItem,\n TableEditAlignMenuItem,\n TableEditAlignTableMenuItem,\n TableEditCellShadeMenuItem,\n ],\n strings,\n (editor, node) => !!getEditingTable(editor, node)\n );\n}\n","import * as React from 'react';\nimport { ContextMenuPluginBase } from 'roosterjs-content-model-plugins';\nimport { ContextualMenu } from '@fluentui/react/lib/ContextualMenu';\nimport { renderReactComponent } from '../../common/utils/renderReactComponent';\nimport type { IContextualMenuItem } from '@fluentui/react/lib/ContextualMenu';\nimport type { ReactEditorPlugin, UIUtilities } from '../../common/index';\n\nfunction normalizeItems(items: (IContextualMenuItem | null)[]) {\n let dividerKey = 0;\n return items.map(\n item =>\n item || {\n name: '-',\n key: 'divider_' + (dividerKey++).toString(),\n }\n );\n}\n\nclass ContextMenuPlugin extends ContextMenuPluginBase<IContextualMenuItem>\n implements ReactEditorPlugin {\n private uiUtilities: UIUtilities | null = null;\n private disposer: (() => void) | null = null;\n\n constructor() {\n super({\n render: (container, items, onDismiss) => {\n const normalizedItems = normalizeItems(items);\n\n if (normalizedItems.length > 0) {\n this.disposer = renderReactComponent(\n this.uiUtilities,\n <ContextualMenu\n target={container}\n onDismiss={onDismiss}\n items={normalizedItems}\n />\n );\n }\n },\n dismiss: _ => {\n this.disposer?.();\n this.disposer = null;\n },\n });\n }\n\n setUIUtilities(uiUtilities: UIUtilities) {\n this.uiUtilities = uiUtilities;\n }\n}\n\n/**\n * Create a new instance of ContextMenu plugin with context menu implementation based on FluentUI.\n */\nexport function createContextMenuPlugin(): ContextMenuPluginBase<IContextualMenuItem> {\n return new ContextMenuPlugin();\n}\n","import { getLocalizedString } from '../../common/utils/getLocalizedString';\nimport { getObjectKeys } from 'roosterjs-content-model-dom';\nimport type { ContextMenuItem } from '../types/ContextMenuItem';\nimport type { IContextualMenuItem } from '@fluentui/react/lib/ContextualMenu';\nimport type { LocalizedStrings, ReactEditorPlugin, UIUtilities } from '../../common/index';\nimport type { ContextMenuProvider, EditorPlugin, IEditor } from 'roosterjs-content-model-types';\n\n/**\n * A plugin of editor to provide context menu items\n */\nclass ContextMenuProviderImpl<TString extends string, TContext>\n implements ContextMenuProvider<IContextualMenuItem>, ReactEditorPlugin {\n private editor: IEditor | null = null;\n private targetNode: Node | null = null;\n private uiUtilities: UIUtilities | null = null;\n\n /**\n * Create a new instance of ContextMenuProviderImpl class\n * @param menuName Name of this group of menus\n * @param items Menu items that will be show\n * @param strings Localized strings of these menu items\n * @param shouldAddMenuItems A general checker to decide if we should add this group of menu items\n */\n constructor(\n private menuName: string,\n private items: ContextMenuItem<TString, TContext>[],\n private strings?: LocalizedStrings<TString>,\n private shouldAddMenuItems?: (editor: IEditor, node: Node) => boolean,\n private context?: TContext\n ) {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return this.menuName;\n }\n\n /**\n * Initialize this plugin. This should only be called from Editor\n * @param editor Editor instance\n */\n initialize(editor: IEditor) {\n this.editor = editor;\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.editor = null;\n }\n\n getContextMenuItems(node: Node) {\n const editor = this.editor;\n\n this.targetNode = node;\n\n return editor && this.shouldAddMenuItems?.(editor, node)\n ? this.items\n .filter(item => !item.shouldShow || item.shouldShow(editor, node, this.context))\n .map(item => this.convertMenuItems(item, node))\n : [];\n }\n\n setUIUtilities(uiUtilities: UIUtilities) {\n this.uiUtilities = uiUtilities;\n }\n\n private convertMenuItems(\n item: ContextMenuItem<TString, TContext>,\n node: Node\n ): IContextualMenuItem {\n const selectedId = this.editor && item.getSelectedId?.(this.editor, node);\n\n return {\n key: item.key,\n data: item,\n text: getLocalizedString(this.strings, item.key, item.unlocalizedText),\n ariaLabel: getLocalizedString(this.strings, item.key, item.unlocalizedText),\n onClick: () => this.onClick(item, item.key),\n iconProps: item.iconProps,\n subMenuProps: item.subItems\n ? {\n onItemClick: (_, menuItem) => menuItem && this.onClick(item, menuItem.data),\n items: getObjectKeys(item.subItems).map(key => ({\n key: key,\n data: key,\n text: getLocalizedString(this.strings, key, item.subItems?.[key]),\n className: item.itemClassName,\n onRender: item.itemRender\n ? subItem => item.itemRender?.(subItem, () => this.onClick(item, key))\n : undefined,\n iconProps:\n key == selectedId\n ? {\n iconName: 'Checkmark',\n }\n : undefined,\n })),\n ...(item.commandBarSubMenuProperties || {}),\n }\n : undefined,\n };\n }\n\n private onClick(item: ContextMenuItem<TString, TContext>, key: TString) {\n if (this.editor && this.targetNode && this.uiUtilities) {\n item.onClick(\n key,\n this.editor,\n this.targetNode,\n this.strings,\n this.uiUtilities,\n this.context\n );\n }\n }\n}\n\n/**\n * Create a new instance of ContextMenuProviderImpl class\n * @param menuName Name of this group of menus\n * @param items Menu items that will be show\n * @param strings Localized strings of these menu items\n * @param shouldAddMenuItems A general checker to decide if we should add this group of menu items\n */\nexport function createContextMenuProvider<TString extends string, TContext>(\n menuName: string,\n items: ContextMenuItem<TString, TContext>[],\n strings?: LocalizedStrings<TString>,\n shouldAddMenuItems?: (editor: IEditor, node: Node) => boolean,\n context?: TContext\n): EditorPlugin {\n return new ContextMenuProviderImpl<TString, TContext>(\n menuName,\n items,\n strings,\n shouldAddMenuItems,\n context\n );\n}\n","import * as React from 'react';\nimport { css } from '@fluentui/react/lib/Utilities';\nimport type { Emoji } from '../type/Emoji';\nimport type { EmojiPaneStyle } from '../type/EmojiPaneStyles';\nimport type { IProcessedStyleSet } from '@fluentui/react/lib/Styling';\n/**\n * @internal\n * Emoji icon data\n */\nexport interface EmojiIconProps {\n id: string;\n emoji: Emoji;\n strings: Record<string, string>;\n classNames: IProcessedStyleSet<EmojiPaneStyle>;\n onClick?: (e: React.MouseEvent<EventTarget>) => void;\n onMouseOver?: (e: React.MouseEvent<EventTarget>) => void;\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n isSelected?: boolean;\n}\n\n/**\n * @internal\n * Emoji icon component\n */\nexport function EmojiIcon(props: EmojiIconProps) {\n const { emoji, onClick, isSelected, onMouseOver, onFocus, strings, id, classNames } = props;\n const content = emoji.description && strings[emoji.description];\n\n return (\n <button\n id={id}\n role=\"option\"\n className={css(classNames.emoji, {\n [classNames.emojiSelected]: isSelected,\n })}\n onClick={onClick}\n onMouseOver={onMouseOver}\n onFocus={onFocus}\n data-is-focusable={true}\n aria-label={content}\n aria-selected={isSelected}\n {...getDataAndAriaProps(props)}>\n {emoji.codePoint || '…'}\n </button>\n );\n}\n\nfunction reduceObject<T>(object: any, callback: (key: string) => boolean): T {\n if (!object) {\n return object;\n }\n\n return Object.keys(object).reduce((result: any, key: string) => {\n if (callback(key)) {\n result[key] = object[key];\n }\n return result;\n }, {} as T);\n}\n\nfunction getDataAndAriaProps<T>(props: EmojiIconProps): T {\n return reduceObject(\n props || {},\n propName => propName.indexOf('data-') === 0 || propName.indexOf('aria-') === 0\n );\n}\n","import * as React from 'react';\nimport { css } from '@fluentui/react/lib/Utilities';\nimport { EmojiFabricIconCharacterMap, EmojiList } from '../utils/emojiList';\nimport { FocusZone, FocusZoneDirection } from '@fluentui/react/lib/FocusZone';\nimport { getObjectKeys } from 'roosterjs-content-model-dom';\nimport { Icon } from '@fluentui/react/lib/Icon';\nimport { TooltipHost } from '@fluentui/react/lib/Tooltip';\nimport type { EmojiFamilyKeys } from '../utils/emojiList';\nimport type { EmojiPaneStyle } from '../type/EmojiPaneStyles';\nimport type { IProcessedStyleSet } from '@fluentui/react/lib/Styling';\n\n/**\n * @internal\n * Emoji Nav Bar data\n */\nexport interface EmojiNavBarProps {\n onClick?: (selected: string) => void;\n currentSelected?: string;\n getTabId?: (selected: EmojiFamilyKeys) => string;\n strings: Record<string, string>;\n classNames: IProcessedStyleSet<EmojiPaneStyle>;\n}\n\n/**\n * @internal\n */\nexport function EmojiNavBar(props: EmojiNavBarProps) {\n const { currentSelected, getTabId, strings = {}, classNames } = props;\n const keys = getObjectKeys(EmojiList);\n const onFamilyClick = (key: string) => {\n if (props.onClick) {\n props.onClick(key);\n }\n };\n\n return (\n // for each emoji family key, create a button to use as nav bar\n <div className={classNames.navBar} role=\"tablist\">\n <FocusZone direction={FocusZoneDirection.horizontal}>\n {keys.map((key, index) => {\n const selected = key === currentSelected;\n const friendlyName = strings[key];\n\n return (\n <TooltipHost\n hostClassName={classNames.navBarTooltip}\n content={friendlyName}\n key={key}>\n <button\n className={css(classNames.navBarButton, {\n [classNames.selected]: selected,\n })}\n key={key}\n onClick={onFamilyClick.bind(onclick, key)}\n id={getTabId?.(key)}\n role=\"tab\"\n aria-selected={selected}\n aria-label={friendlyName}\n data-is-focusable=\"true\"\n aria-posinset={index + 1}\n tabIndex={0}\n aria-setsize={keys.length}>\n <Icon iconName={EmojiFabricIconCharacterMap[key]} />\n </button>\n </TooltipHost>\n );\n })}\n </FocusZone>\n </div>\n );\n}\n","import * as React from 'react';\nimport { Callout, DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { CommonEmojis, EmojiList, MoreEmoji } from '../utils/emojiList';\nimport { css, KeyCodes, memoizeFunction } from '@fluentui/react/lib/Utilities';\nimport { EmojiIcon } from './EmojiIcon';\nimport { EmojiNavBar } from './EmojiNavBar';\nimport { EmojiStatusBar } from './EmojiStatusBar';\nimport { FocusZone } from '@fluentui/react/lib/FocusZone';\nimport { getLocalizedString } from '../../common/index';\nimport { mergeStyleSets } from '@fluentui/react/lib/Styling';\nimport { searchEmojis } from '../utils/searchEmojis';\nimport { TextField } from '@fluentui/react/lib/TextField';\nimport { useTheme } from '@fluentui/react/lib/Theme';\nimport type { EmojiPaneStyle } from '../type/EmojiPaneStyles';\nimport type { IProcessedStyleSet } from '@fluentui/react/lib/Styling';\nimport type { EmojiFamilyKeys } from '../utils/emojiList';\nimport type { EmojiIconProps } from './EmojiIcon';\nimport type { EmojiNavBarProps } from './EmojiNavBar';\nimport type { EmojiStatusBarProps } from './EmojiStatusBar';\nimport type { ICalloutProps } from '@fluentui/react/lib/Callout';\nimport type { Emoji } from '../type/Emoji';\nimport type { EmojiStringKeys } from '../type/EmojiStringKeys';\nimport type { LocalizedStrings } from '../../common/index';\nimport type { ITextField } from '@fluentui/react/lib/TextField';\nimport type { Theme } from '@fluentui/react/lib/Theme';\n\n// \"When a div contains an element that is bigger (either taller or wider) than the parent and has the property\n// overflow-x or overflow-y set to any value, then it can receive the focus.\"\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1069739\nconst TabIndexForFirefoxBug = -1;\nconst EmojisPerRow = 7;\nconst EmojiVisibleRowCount = 5;\nconst EmojiVisibleWithoutNavBarRowCount = 6;\nconst EmojiHeightPx = 40;\nconst VerticalDirectionKeys: number[] = [KeyCodes.up, KeyCodes.down];\nconst DirectionKeys: number[] = [\n KeyCodes.left,\n KeyCodes.right,\n KeyCodes.up,\n KeyCodes.down,\n KeyCodes.home,\n KeyCodes.end,\n];\n\nconst TooltipCalloutProps: ICalloutProps = {\n isBeakVisible: true,\n beakWidth: 16,\n gapSpace: 0,\n setInitialFocus: true,\n doNotLayer: false,\n directionalHint: DirectionalHint.bottomCenter,\n};\n\n/**\n * @internal\n * Types of emoji pane size\n */\nexport type EmojiPaneMode = 'Quick' | 'Partial' | 'Full';\n\n/**\n * @internal\n * Types of emoji Navigation direction\n */\nexport type EmojiPaneNavigateDirection = 'Horizontal' | 'Vertical';\n\n/**\n * @internal\n * Emoji Pane data\n */\nexport interface EmojiPaneState {\n index: number;\n mode: EmojiPaneMode;\n currentEmojiList: Emoji[];\n currentFamily: EmojiFamilyKeys;\n search: string;\n searchInBox: string;\n}\n\n/**\n * @internal\n * Emoji Pane customizable data\n */\nexport interface EmojiPaneProps {\n searchDisabled?: boolean;\n hideStatusBar?: boolean;\n navBarProps?: Partial<EmojiNavBarProps>;\n statusBarProps?: Partial<EmojiStatusBarProps>;\n emojiIconProps?: Partial<EmojiIconProps>;\n searchBoxString?: LocalizedStrings<EmojiStringKeys>;\n onSelect: (emoji: Emoji, wordBeforeCursor: string) => void;\n baseId: number;\n strings: Record<string, string>;\n}\n\nconst AriaAttributes = {\n ActiveDescendant: 'aria-activedescendant',\n AutoComplete: 'aria-autocomplete',\n Controls: 'aria-controls',\n Expanded: 'aria-expanded',\n HasPopup: 'aria-haspopup',\n Owns: 'aria-owns',\n Pressed: 'aria-pressed',\n};\n\n/**\n * @internal\n * Emoji pane component functions\n */\nexport interface EmojiPane {\n navigate: (change: number, direction?: EmojiPaneNavigateDirection) => number;\n getEmojiElementIdByIndex: (index: number) => string | null;\n getSelectedEmoji: () => Emoji;\n showFullPicker: (fullSearchText: string) => void;\n setSearch: (value: string) => void;\n normalizeSearchText: (text: string, colonIncluded: boolean) => string;\n getSearchResult: (searchValue: string, mode: EmojiPaneMode) => Emoji[];\n getEmojiIconId: (emoji: Emoji) => string;\n}\n\nconst EmojiPane = React.forwardRef(function EmojiPaneFunc(\n props: EmojiPaneProps,\n ref: React.Ref<EmojiPane>\n) {\n let searchBox: ITextField;\n let emojiBody: HTMLElement;\n let input: HTMLInputElement;\n\n const [index, setIndex] = React.useState<number>(0);\n const [mode, setMode] = React.useState<EmojiPaneMode>('Quick');\n const [currentEmojiList, setCurrentEmojiList] = React.useState<Emoji[]>(CommonEmojis);\n const [currentFamily, setCurrentFamily] = React.useState<EmojiFamilyKeys>('People');\n const [search, setSearchString] = React.useState<string>(':');\n const [searchInBox, setSearchInBox] = React.useState<string>('');\n\n const theme = useTheme();\n const classNames = getEmojiPaneClassName(theme);\n const listId = `EmojiPane${props.baseId}`;\n\n const navigate = React.useCallback(\n (change: number, direction?: EmojiPaneNavigateDirection): number => {\n if (!direction) {\n direction = 'Horizontal';\n }\n\n if (direction === 'Vertical' && index !== -1) {\n change *= EmojisPerRow;\n }\n\n const newIndex = index + change;\n const length = currentEmojiList.length;\n if (newIndex >= 0 && newIndex < length) {\n setIndex(newIndex);\n return newIndex;\n }\n\n return -1;\n },\n [index]\n );\n\n const normalizeSearchText = React.useCallback(\n (text: string, colonIncluded: boolean): string => {\n if (text == null) {\n return '';\n }\n\n if (colonIncluded) {\n text = text.substr(1);\n }\n return text.trim();\n },\n []\n );\n\n const getEmojiElementIdByIndex = React.useCallback(\n (index: number): string | null => {\n const emoji = currentEmojiList[index];\n if (emoji) {\n return getEmojiIconId(emoji);\n }\n\n return null;\n },\n [currentEmojiList]\n );\n\n const getSelectedEmoji = React.useCallback((): Emoji => {\n return currentEmojiList[index];\n }, [currentEmojiList, index]);\n\n const showFullPicker = React.useCallback(\n (fullSearchText: string): void => {\n const normalizedSearchValue = normalizeSearchText(fullSearchText, true);\n const newMode: EmojiPaneMode = normalizedSearchValue.length === 0 ? 'Full' : 'Partial';\n setIndex(newMode === 'Full' ? -1 : 0);\n setMode(newMode);\n setCurrentEmojiList(getSearchResult(normalizedSearchValue, newMode));\n setSearchString(fullSearchText);\n setSearchInBox(normalizedSearchValue);\n },\n [mode]\n );\n\n const setSearch = React.useCallback(\n (value: string): void => {\n const normalizedSearchValue = normalizeSearchText(value, false);\n setIndex(0);\n setCurrentEmojiList(getSearchResult(normalizedSearchValue, mode));\n setSearchString(value);\n },\n [index, search, currentEmojiList]\n );\n\n const getSearchResult = React.useCallback(\n (searchValue: string, mode: EmojiPaneMode): Emoji[] => {\n const isQuickMode = mode === 'Quick';\n if (!searchValue) {\n return isQuickMode ? currentEmojiList : EmojiList[currentFamily];\n }\n\n const emojiList = searchEmojis(searchValue, props.strings);\n return isQuickMode ? emojiList.slice(0, 5).concat([MoreEmoji]) : emojiList;\n },\n [mode, currentFamily, currentEmojiList]\n );\n\n const getEmojiIconId = React.useCallback(\n (emoji: Emoji) => (emoji ? `${listId}-${emoji.key}` : ''),\n [listId]\n );\n\n React.useImperativeHandle(\n ref,\n () => ({\n navigate,\n getEmojiElementIdByIndex,\n showFullPicker,\n getSearchResult,\n setSearch,\n getSelectedEmoji,\n normalizeSearchText,\n getEmojiIconId,\n }),\n [\n navigate,\n getEmojiElementIdByIndex,\n showFullPicker,\n getSearchResult,\n setSearch,\n getEmojiIconId,\n getSelectedEmoji,\n normalizeSearchText,\n ]\n );\n\n const renderQuickPicker = (\n props: EmojiPaneProps,\n index: number,\n currentEmojiList: Emoji[]\n ): JSX.Element => {\n const { strings } = props;\n const selectedEmoji = getSelectedEmoji();\n const target = selectedEmoji ? `#${getEmojiIconId(selectedEmoji)}` : undefined;\n const content = selectedEmoji?.description ? strings[selectedEmoji.description] : undefined;\n const emojiList = renderCurrentEmojiIcons(index, currentEmojiList);\n // note: we're using a callout since TooltipHost does not support manual trigger, and we need to show the tooltip since quick picker is shown\n // as an autocomplete menu (false focus based on transferring navigation keyboard event)\n return (\n <div id={listId} role=\"listbox\">\n {emojiList}\n <div\n id={listId}\n role=\"listbox\"\n className={css(classNames.quickPicker, classNames.roosterEmojiPane)}>\n <Callout\n {...TooltipCalloutProps}\n role=\"tooltip\"\n target={target}\n hidden={!content || !emojiList}\n className={classNames.tooltip}>\n {content}\n </Callout>\n </div>\n </div>\n );\n };\n\n const renderFullPicker = (\n props: EmojiPaneProps,\n index: number,\n searchInBox: string,\n currentFamily: EmojiFamilyKeys,\n currentEmojiList: Emoji[]\n ): JSX.Element => {\n const { searchDisabled, searchBoxString } = props;\n const emojiId = getEmojiIconId(getSelectedEmoji());\n const autoCompleteAttributes = {\n [AriaAttributes.AutoComplete]: 'list',\n [AriaAttributes.Expanded]: 'true',\n [AriaAttributes.HasPopup]: 'listbox',\n [AriaAttributes.Owns]: listId,\n };\n if (emojiId) {\n autoCompleteAttributes[AriaAttributes.ActiveDescendant] = emojiId;\n }\n\n return (\n <div className={classNames.roosterEmojiPane}>\n {!searchDisabled && (\n <TextField\n role=\"combobox\"\n componentRef={ref => searchRefCallback(ref)}\n value={searchInBox}\n onChange={onSearchChange}\n inputClassName={classNames.emojiTextInput}\n onKeyPress={onSearchKeyPress}\n onKeyDown={onSearchKeyDown}\n onFocus={onSearchFocus}\n placeholder={getLocalizedString(\n searchBoxString,\n 'emojiSearchPlaceholder',\n 'Search...'\n )}\n ariaLabel={getLocalizedString(\n searchBoxString,\n 'emojiSearchInputAriaLabel',\n 'Search...'\n )}\n {...autoCompleteAttributes}\n />\n )}\n {mode === 'Full'\n ? renderFullList(props, index, currentFamily, currentEmojiList)\n : renderPartialList(props, index, currentEmojiList)}\n </div>\n );\n };\n\n const onSearchFocus = (e: React.FocusEvent<HTMLInputElement>): void => {\n input = e.target as HTMLInputElement;\n };\n\n const onSearchKeyPress = (e: React.KeyboardEvent<HTMLInputElement>): void => {\n if (!e || e.which !== KeyCodes.enter) {\n return;\n }\n\n if (index >= 0 && currentEmojiList && currentEmojiList.length > 0) {\n onSelect(e, currentEmojiList[index]);\n }\n };\n\n const onSearchKeyDown = (e: React.KeyboardEvent<HTMLInputElement>): void => {\n if (!e || DirectionKeys.indexOf(e.which) < 0) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n if (e.which === KeyCodes.home) {\n setIndex(0);\n emojiBody.scrollTop = 0;\n return;\n }\n if (e.which === KeyCodes.end) {\n setIndex(currentEmojiList.length - 1);\n emojiBody.scrollTop = emojiBody.scrollHeight; // scrollHeight will be larger than max\n return;\n }\n\n const direction: EmojiPaneNavigateDirection =\n VerticalDirectionKeys.indexOf(e.which) < 0 ? 'Horizontal' : 'Vertical';\n const newIndex = navigate(\n e.which === KeyCodes.left || e.which === KeyCodes.up ? -1 : 1,\n direction\n );\n if (newIndex > -1) {\n const visibleRowCount =\n mode === 'Full' ? EmojiVisibleRowCount : EmojiVisibleWithoutNavBarRowCount;\n const currentRow = Math.floor(newIndex / EmojisPerRow);\n const visibleTop = emojiBody.scrollTop;\n const visibleBottom = visibleTop + visibleRowCount * EmojiHeightPx;\n const currentRowTop = currentRow * EmojiHeightPx;\n const currentRowBottom = currentRowTop + EmojiHeightPx;\n if (visibleTop <= currentRowTop && visibleBottom >= currentRowBottom) {\n return; // row is visible, so exit\n }\n\n emojiBody.scrollTop = currentRow * EmojiHeightPx;\n }\n };\n\n const renderCurrentEmojiIcons = (index: number, currentEmojiList: Emoji[]): JSX.Element[] => {\n const { strings } = props;\n return currentEmojiList.map((emoji, emojiIndex) => (\n <EmojiIcon\n strings={strings}\n id={getEmojiIconId(emoji)}\n key={emoji.key}\n onMouseOver={() => setIndex(emojiIndex)}\n onFocus={() => setIndex(emojiIndex)}\n emoji={emoji}\n classNames={classNames}\n isSelected={index === emojiIndex}\n onClick={e => onSelect(e, emoji)}\n aria-posinset={index + 1}\n aria-setsize={currentEmojiList.length}\n />\n ));\n };\n\n const renderPartialList = (\n props: EmojiPaneProps,\n index: number,\n currentEmojiList: Emoji[]\n ): JSX.Element => {\n const { strings, hideStatusBar, statusBarProps } = props;\n const hasResult = currentEmojiList && currentEmojiList.length > 0;\n\n return (\n <div>\n <div\n className={classNames.partialList}\n data-is-scrollable={true}\n tabIndex={TabIndexForFirefoxBug}\n ref={onEmojiBodyRef}>\n <FocusZone\n id={listId}\n role=\"listbox\"\n className={classNames.fullListContent}\n ref={focusZoneRefCallback}>\n {renderCurrentEmojiIcons(index, currentEmojiList)}\n </FocusZone>\n </div>\n {!hideStatusBar && (\n <EmojiStatusBar\n classNames={classNames}\n strings={strings}\n {...statusBarProps}\n hasResult={hasResult}\n emoji={getSelectedEmoji()}\n />\n )}\n </div>\n );\n };\n\n const renderFullList = (\n props: EmojiPaneProps,\n index: number,\n currentFamily: EmojiFamilyKeys,\n currentEmojiList: Emoji[]\n ): JSX.Element => {\n const { strings, hideStatusBar, navBarProps, statusBarProps } = props;\n\n const hasResult = currentEmojiList && currentEmojiList.length > 0;\n\n return (\n <div className={classNames.fullList}>\n <div\n className={classNames.fullListBody}\n data-is-scrollable={true}\n tabIndex={TabIndexForFirefoxBug}\n ref={onEmojiBodyRef}>\n <EmojiNavBar\n strings={strings}\n {...navBarProps}\n onClick={pivotClick}\n currentSelected={currentFamily}\n getTabId={getTabId}\n classNames={classNames}\n />\n <div role=\"tabpanel\" aria-labelledby={getTabId(currentFamily)}>\n <div>\n <FocusZone\n id={listId}\n role=\"listbox\"\n className={classNames.fullListContent}\n ref={focusZoneRefCallback}>\n {renderCurrentEmojiIcons(index, currentEmojiList)}\n </FocusZone>\n </div>\n </div>\n </div>\n\n {!hideStatusBar && (\n <EmojiStatusBar\n classNames={classNames}\n strings={strings}\n {...statusBarProps}\n hasResult={hasResult}\n emoji={getSelectedEmoji()}\n />\n )}\n </div>\n );\n };\n\n const onEmojiBodyRef = (ref: HTMLDivElement) => {\n emojiBody = ref;\n };\n\n const pivotClick = (selected: string): void => {\n const currentFamily = selected as EmojiFamilyKeys;\n setCurrentEmojiList(EmojiList[currentFamily]);\n setCurrentFamily(currentFamily);\n };\n\n const getTabId = (itemKey: EmojiFamilyKeys): string => {\n return `family_${itemKey}_${props.baseId}`;\n };\n\n const searchRefCallback = (ref: ITextField | null): void => {\n if (ref) {\n searchBox = ref;\n if (searchBox?.value) {\n searchBox.focus();\n searchBox.setSelectionStart(searchBox.value.length);\n }\n }\n };\n\n const focusZoneRefCallback = (ref: FocusZone): void => {\n if (props.searchDisabled && ref) {\n ref.focus();\n }\n\n if (input) {\n // make sure to announce the active descending after the focus zone containing the emojis is ready\n input.removeAttribute(AriaAttributes.ActiveDescendant);\n const emojiId = getEmojiIconId(getSelectedEmoji());\n // we need to delay so NVDA will announce the first selection\n if (emojiId) {\n setTimeout(() => input.setAttribute(AriaAttributes.ActiveDescendant, emojiId), 0);\n }\n }\n };\n\n const onSearchChange = (_: any, newValue?: string): void => {\n if (typeof newValue === 'string') {\n const normalizedSearchValue = normalizeSearchText(newValue, false);\n const newMode: EmojiPaneMode = normalizedSearchValue.length === 0 ? 'Full' : 'Partial';\n setIndex(newMode === 'Full' ? -1 : 0);\n setCurrentEmojiList(getSearchResult(normalizedSearchValue, mode));\n setSearchInBox(newValue);\n setMode(newMode);\n }\n };\n\n const onSelect = (\n e: React.MouseEvent<EventTarget> | React.KeyboardEvent<HTMLInputElement>,\n emoji: Emoji\n ): void => {\n e.stopPropagation();\n e.preventDefault();\n if (props.onSelect) {\n props.onSelect(emoji, search);\n }\n };\n\n const renderPane = (\n props: EmojiPaneProps,\n index: number,\n searchInBox: string,\n currentFamily: EmojiFamilyKeys,\n currentEmojiList: Emoji[]\n ) => {\n return mode === 'Quick'\n ? renderQuickPicker(props, index, currentEmojiList)\n : renderFullPicker(props, index, searchInBox, currentFamily, currentEmojiList);\n };\n\n return <>{renderPane(props, index, searchInBox, currentFamily, currentEmojiList)}</>;\n});\n\n/**\n * @internal\n * Emoji pane component\n */\nexport function showEmojiPane(\n onSelect: (emoji: Emoji, wordBeforeCursor: string) => void,\n strings: Record<string, string>,\n paneRef: React.RefObject<EmojiPane>,\n baseId: number,\n searchBoxString?: LocalizedStrings<EmojiStringKeys>\n) {\n return (\n <EmojiPane\n ref={paneRef}\n baseId={baseId}\n searchBoxString={searchBoxString}\n strings={strings}\n onSelect={onSelect}></EmojiPane>\n );\n}\n\nconst calcMaxHeight = () => {\n const buttonHeight = 40;\n const rowsOfIcons = 6; // including family bar if shown\n const bottomPaddingForContent = 5;\n const maxHeightForContent = rowsOfIcons * buttonHeight + bottomPaddingForContent;\n return maxHeightForContent.toString() + 'px';\n};\n\nconst calcPaneWidth = () => {\n const buttonWidth = 40;\n const pivotItemCount = 7;\n const paneHorizontalPadding = 1;\n const paneWidth = buttonWidth * pivotItemCount + 2 * paneHorizontalPadding;\n return paneWidth.toString() + 'px';\n};\n\nconst getEmojiPaneClassName = memoizeFunction(\n (theme: Theme): IProcessedStyleSet<EmojiPaneStyle> => {\n const palette = theme.palette;\n const styles: EmojiPaneStyle = {\n quickPicker: {\n overflowY: 'hidden',\n ':after': {\n content: '',\n position: 'absolute',\n left: '0px',\n top: '0px',\n bottom: '0px',\n right: '0px',\n zIndex: 1,\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: 'rgb(255, 255, 255)',\n borderImage: 'initial',\n outline: 'rgb(102, 102, 102) solid 1px',\n },\n },\n\n tooltip: {\n padding: '8px',\n },\n\n emojiTextInput: {\n padding: '6px',\n },\n\n partialList: {\n maxHeight: calcMaxHeight(),\n overflow: 'hidden',\n overflowY: 'scroll',\n },\n\n fullListContent: {\n width: calcPaneWidth(),\n },\n\n fullListBody: {\n maxHeight: calcMaxHeight(),\n overflow: 'hidden',\n overflowY: 'scroll',\n height: calcMaxHeight(),\n },\n\n fullList: {\n position: 'relative',\n },\n\n roosterEmojiPane: {\n padding: '1px',\n background: palette.white,\n },\n\n emoji: {\n fontSize: '18px',\n width: '40px',\n height: '40px',\n border: '0',\n position: 'relative',\n background: palette.white,\n transition: 'backgorund 0.5s ease-in-out',\n },\n\n emojiSelected: {\n background: palette.neutralLight,\n },\n\n navBar: {\n top: '-1px',\n zIndex: 10,\n position: 'sticky',\n },\n\n navBarTooltip: {\n display: 'inline-block',\n },\n\n navBarButton: {\n height: '40px',\n width: '40px',\n border: '0',\n borderBottom: 'solid 1px',\n padding: 0,\n marginBottom: 0,\n display: 'inline-block',\n color: palette.themeDark,\n background: palette.white,\n '&:hover': {\n cursor: 'default',\n },\n },\n\n selected: {\n borderBottom: '2px solid',\n borderBottomColor: palette.themeDark,\n },\n\n statusBar: {\n borderTop: 'solid 1px',\n height: '50px',\n overflow: 'hidden',\n position: 'relative',\n background: palette.white,\n },\n\n statusBarIcon: {\n padding: '4px',\n fontSize: '25px',\n display: 'inline-block',\n fontStyle: 'normal',\n fontWeight: 'normal',\n lineHeight: '40px',\n },\n\n statusBarDetailsContainer: {\n padding: '0 4px',\n lineHeight: '50px',\n position: 'absolute',\n display: 'inline-block',\n left: '40px',\n right: '0',\n top: '0',\n },\n\n statusBarDetails: {\n fontWeight: 'bold',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n\n statusBarNoResultDetailsContainer: {\n lineHeight: '50px',\n position: 'absolute',\n display: 'inline-block',\n top: '0',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n left: '0',\n padding: '0 8px',\n },\n };\n return mergeStyleSets(styles);\n }\n);\n","import * as React from 'react';\nimport { TooltipHost, TooltipOverflowMode } from '@fluentui/react/lib/Tooltip';\nimport type { Emoji } from '../type/Emoji';\nimport type { EmojiPaneStyle } from '../type/EmojiPaneStyles';\nimport type { IProcessedStyleSet } from '@fluentui/react/lib/Styling';\n/**\n * @internal\n * Emoji Status Bar data\n */\nexport interface EmojiStatusBarProps {\n emoji: Emoji;\n strings: Record<string, string>;\n hasResult: boolean;\n classNames: IProcessedStyleSet<EmojiPaneStyle>;\n}\n\nconst NO_SUGGESTIONS = 'emjDNoSuggetions';\n\n/**\n * @internal\n * Emoji status bar component\n */\nexport function EmojiStatusBar(props: EmojiStatusBarProps) {\n const { emoji, strings, hasResult, classNames } = props;\n\n if (!hasResult) {\n const noResultDescription = strings[NO_SUGGESTIONS];\n return (\n <div className={classNames.statusBar}>\n <div style={{ display: 'none' }} aria-live=\"polite\">\n {noResultDescription}\n </div>\n <div className={classNames.statusBarNoResultDetailsContainer}>\n <TooltipHost\n content={noResultDescription}\n overflowMode={TooltipOverflowMode.Parent}>\n <span role=\"alert\">{noResultDescription}</span>\n </TooltipHost>\n </div>\n </div>\n );\n }\n\n const icon = emoji ? emoji.codePoint : '';\n const description = emoji?.description ? strings[emoji.description] : '';\n\n return (\n <div className={classNames.statusBar}>\n <i className={classNames.statusBarIcon} role=\"presentation\" aria-hidden=\"true\">\n {icon}\n </i>\n\n <div className={classNames.statusBarDetailsContainer}>\n <div className={classNames.statusBarDetails}>\n <TooltipHost content={description} overflowMode={TooltipOverflowMode.Parent}>\n {description}\n </TooltipHost>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from 'react';\nimport { Callout, DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { renderReactComponent } from '../../common/utils/renderReactComponent';\nimport { showEmojiPane } from './EmojiPane';\nimport type { Emoji } from '../type/Emoji';\nimport type { EmojiPane } from './EmojiPane';\nimport type { EmojiStringKeys } from '../type/EmojiStringKeys';\nimport type { LocalizedStrings, UIUtilities } from '../../common/index';\n\n/**\n * @internal\n * Emoji callout data\n */\ninterface EmojiICallOutProps {\n cursorRect: DOMRect;\n strings: Record<string, string>;\n onSelectFromPane: (emoji: Emoji, wordBeforeCursor: string) => void;\n paneRef: React.RefObject<EmojiPane>;\n onHideCallout: () => void;\n searchBoxString?: LocalizedStrings<EmojiStringKeys>;\n dismiss: () => void;\n baseId: number;\n}\n\nconst EmojiICallout = React.forwardRef(function EmojiCalloutFunc(\n props: EmojiICallOutProps,\n ref: React.Ref<EmojiICallout>\n) {\n const {\n cursorRect,\n strings,\n onSelectFromPane,\n onHideCallout,\n searchBoxString,\n dismiss,\n paneRef,\n baseId,\n } = props;\n const [isCalloutVisible, toggleIsCalloutVisible] = React.useState(true);\n\n React.useImperativeHandle(\n ref,\n () => ({\n dismiss,\n }),\n [dismiss]\n );\n\n const point = {\n x: cursorRect.left,\n y: (cursorRect.top + cursorRect.bottom) / 2,\n };\n const gap = (cursorRect.bottom - cursorRect.top) / 2 + 5;\n if (!isCalloutVisible) {\n onHideCallout();\n }\n const toogleCallout = React.useCallback(() => {\n toggleIsCalloutVisible(false);\n dismiss();\n }, [dismiss]);\n\n return (\n <>\n {isCalloutVisible && (\n <Callout\n target={point}\n directionalHint={DirectionalHint.bottomAutoEdge}\n isBeakVisible={false}\n gapSpace={gap}\n onDismiss={toogleCallout}>\n {showEmojiPane(onSelectFromPane, strings, paneRef, baseId, searchBoxString)}\n </Callout>\n )}\n </>\n );\n});\n\n/**\n * @internal\n */\nexport interface EmojiICallout {\n dismiss: () => void;\n}\n\n/**\n * @internal\n * Enable emoji callout\n */\nexport function showEmojiCallout(\n uiUtilities: UIUtilities,\n cursorRect: DOMRect,\n strings: Record<string, string>,\n onSelectFromPane: (emoji: Emoji, wordBeforeCursor: string) => void,\n paneRef: React.RefObject<EmojiPane>,\n emojiCalloutRef: React.RefObject<EmojiICallout>,\n onHideCallout: () => void,\n baseId: number,\n searchBoxString?: LocalizedStrings<EmojiStringKeys>\n) {\n let disposer: (() => void) | null = null;\n const onDismiss = () => {\n disposer?.();\n disposer = null;\n };\n\n disposer = renderReactComponent(\n uiUtilities,\n <EmojiICallout\n ref={emojiCalloutRef}\n cursorRect={cursorRect}\n strings={strings}\n onSelectFromPane={onSelectFromPane}\n paneRef={paneRef}\n onHideCallout={onHideCallout}\n searchBoxString={searchBoxString}\n baseId={baseId}\n dismiss={onDismiss}\n />\n );\n}\n","export { createEmojiPlugin } from './plugin/createEmojiPlugin';\nexport { EmojiStringKeys } from './type/EmojiStringKeys';\n","import * as React from 'react';\nimport { KeyCodes } from '@fluentui/react/lib/Utilities';\nimport { MoreEmoji } from '../utils/emojiList';\nimport { showEmojiCallout } from '../components/showEmojiCallout';\nimport { undo } from 'roosterjs-content-model-core';\nimport {\n isModifierKey,\n isNodeOfType,\n iterateSelections,\n mutateSegment,\n} from 'roosterjs-content-model-dom';\nimport type { EmojiICallout } from '../components/showEmojiCallout';\nimport type { Emoji } from '../type/Emoji';\nimport type { EmojiPane } from '../components/EmojiPane';\nimport type { EmojiStringKeys } from '../type/EmojiStringKeys';\nimport type { LocalizedStrings, ReactEditorPlugin, UIUtilities } from '../../common/index';\nimport {\n EmojiDescriptionStrings,\n EmojiFamilyStrings,\n EmojiKeywordStrings,\n} from '../type/EmojiStrings';\nimport type { IEditor, KeyDownEvent, KeyUpEvent, PluginEvent } from 'roosterjs-content-model-types';\n\nconst KEYCODE_COLON = 186;\nconst KEYCODE_COLON_FIREFOX = 59;\n\n// Regex looks for an emoji right before the : to allow contextual search immediately following an emoji\n// MATCHES: 0: 😃:r\n// 1: 😃\n// 2: :r\nconst EMOJI_BEFORE_COLON_REGEX = /([\\u0023-\\u0039][\\u20e3]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\u00a9-\\u00ae]|[\\u2122-\\u3299])*([:;][^:]*)/;\n\n// White space matching regex. It matches following chars:\n// \\s: white space\n// \\u00A0: no-breaking white space\n// \\u200B: zero width space\n// \\u3000: full width space (which can come from JPN IME)\nconst WHITESPACE_REGEX = /[\\s\\u00A0\\u200B\\u3000]+([^\\s\\u00A0\\u200B\\u3000]*)$/i;\n\nclass EmojiPlugin implements ReactEditorPlugin {\n private editor: IEditor | null = null;\n private eventHandledOnKeyDown: boolean = false;\n private canUndoEmoji: boolean = false;\n private isSuggesting: boolean = false;\n private paneRef = React.createRef<EmojiPane>();\n private timer: number | null = null;\n private uiUtilities: UIUtilities | null = null;\n private strings: Record<string, string>;\n private emojiCalloutRef = React.createRef<EmojiICallout>();\n private baseId = 0;\n\n constructor(private searchBoxStrings?: LocalizedStrings<EmojiStringKeys>) {\n this.strings = {\n ...EmojiDescriptionStrings,\n ...EmojiKeywordStrings,\n ...EmojiFamilyStrings,\n };\n }\n\n setUIUtilities(uiUtilities: UIUtilities) {\n this.uiUtilities = uiUtilities;\n }\n\n public getName() {\n return 'Emoji';\n }\n\n public dispose() {\n this.setIsSuggesting(false);\n this.emojiCalloutRef.current?.dismiss();\n this.editor = null;\n this.baseId = 0;\n }\n\n public initialize(editor: IEditor): void {\n this.editor = editor;\n }\n\n public onPluginEvent(event: PluginEvent): void {\n if (!this.editor) {\n return;\n }\n\n if (event.eventType === 'keyDown') {\n this.eventHandledOnKeyDown = false;\n if (this.isSuggesting) {\n this.onKeyDownSuggestingDomEvent(this.editor, event);\n } else if (event.rawEvent.key === 'Backspace' && this.canUndoEmoji) {\n //TODO: 1051\n // If KeyDown is backspace and canUndoEmoji, call editor undo\n undo(this.editor);\n\n this.handleEventOnKeyDown(event);\n this.canUndoEmoji = false;\n }\n } else if (event.eventType === 'keyUp' && !isModifierKey(event.rawEvent)) {\n if (this.isSuggesting) {\n this.onKeyUpSuggestingDomEvent(this.editor, event);\n } else {\n this.onKeyUpDomEvent(this.editor, event);\n }\n } else if (event.eventType === 'mouseUp') {\n //TODO: 1052\n // If MouseUp, the emoji cannot be undone\n this.canUndoEmoji = false;\n this.setIsSuggesting(false);\n }\n }\n\n /**\n * On KeyDown suggesting DOM event\n * Try to insert emoji is possible\n * Intercept arrow keys to move selection if popup is shown\n */\n private onKeyDownSuggestingDomEvent(editor: IEditor, event: KeyDownEvent): void {\n // If key is enter, try insert emoji at selection\n // If key is space and selection is shortcut, try insert emoji\n\n const wordBeforeCursor = this.getWordBeforeCursor(editor);\n switch (event.rawEvent.key) {\n case 'Enter':\n const selectedEmoji = this.paneRef.current?.getSelectedEmoji();\n // check if selection is on the \"...\" and show full picker if so, otherwise try to apply emoji\n if (\n !selectedEmoji ||\n !wordBeforeCursor ||\n this.tryShowFullPicker(event, selectedEmoji, wordBeforeCursor)\n ) {\n break;\n } else {\n this.insertEmoji(selectedEmoji, wordBeforeCursor);\n this.handleEventOnKeyDown(event);\n }\n\n break;\n case 'ArrowLeft':\n case 'ArrowRight':\n this.paneRef.current?.navigate(event.rawEvent.key === 'ArrowLeft' ? -1 : 1);\n this.handleEventOnKeyDown(event);\n break;\n case 'Escape':\n this.setIsSuggesting(false);\n this.handleEventOnKeyDown(event);\n }\n }\n\n private tryShowFullPicker(\n event: KeyDownEvent,\n selectedEmoji: Emoji,\n wordBeforeCursor: string\n ): boolean {\n if (selectedEmoji !== MoreEmoji) {\n return false;\n }\n\n this.handleEventOnKeyDown(event);\n this.paneRef.current?.showFullPicker(wordBeforeCursor);\n return true;\n }\n\n /**\n * On KeyUp suggesting DOM event\n * If key is character, update search term\n * Otherwise set isSuggesting to false\n */\n private onKeyUpSuggestingDomEvent(editor: IEditor, event: KeyUpEvent): void {\n if (this.eventHandledOnKeyDown) {\n return;\n }\n // If this is a character key or backspace\n // Clear the timer as we will either queue a new timer or stop suggesting\n if (\n this.timer &&\n ((event.rawEvent.key.length === 1 && event.rawEvent.which !== KeyCodes.space) ||\n event.rawEvent.which === KeyCodes.backspace)\n ) {\n this.editor?.getDocument().defaultView?.clearTimeout(this.timer);\n this.timer = null;\n this.emojiCalloutRef.current?.dismiss();\n }\n\n const wordBeforeCursor = this.getWordBeforeCursor(editor);\n if (wordBeforeCursor) {\n if (this.paneRef) {\n this.paneRef.current?.setSearch(wordBeforeCursor);\n } else {\n this.setIsSuggesting(false);\n }\n } else {\n this.setIsSuggesting(false);\n }\n }\n\n private onKeyUpDomEvent(editor: IEditor, event: KeyUpEvent): void {\n if (this.eventHandledOnKeyDown) {\n return;\n }\n\n if (\n (event.rawEvent.which === KEYCODE_COLON ||\n event.rawEvent.which === KEYCODE_COLON_FIREFOX) &&\n this.getWordBeforeCursor(editor) === ':'\n ) {\n this.setIsSuggesting(true);\n }\n }\n\n private getCallout() {\n const selection = this.editor?.getDOMSelection();\n const rangeNode = selection?.type == 'range' ? selection.range.startContainer : null;\n const rangeElement = isNodeOfType(rangeNode, 'ELEMENT_NODE')\n ? rangeNode\n : rangeNode?.parentElement;\n const rect = rangeElement?.getBoundingClientRect();\n\n if (this.uiUtilities && rect) {\n this.baseId++;\n\n showEmojiCallout(\n this.uiUtilities,\n rect,\n this.strings,\n this.onSelectFromPane,\n this.paneRef,\n this.emojiCalloutRef,\n this.onHideCallout,\n this.baseId,\n this.searchBoxStrings\n );\n }\n }\n\n private onHideCallout = () => this.setIsSuggesting(false);\n\n private onSelectFromPane = (emoji: Emoji, wordBeforeCursor: string): void => {\n if (emoji === MoreEmoji) {\n this.paneRef.current?.showFullPicker(wordBeforeCursor);\n return;\n }\n\n this.insertEmoji(emoji, wordBeforeCursor);\n };\n\n private setIsSuggesting(isSuggesting: boolean): void {\n if (this.isSuggesting === isSuggesting) {\n return;\n }\n\n this.isSuggesting = isSuggesting;\n if (this.isSuggesting) {\n this.getCallout();\n } else if (this.emojiCalloutRef) {\n this.emojiCalloutRef.current?.dismiss();\n }\n }\n\n private insertEmoji(emoji: Emoji, wordBeforeCursor: string) {\n if (!wordBeforeCursor || !this.editor || !emoji.codePoint) {\n return;\n }\n\n this.editor.formatContentModel(model => {\n iterateSelections(model, (_, __, block, segments) => {\n if (\n block?.blockType == 'Paragraph' &&\n segments?.length == 1 &&\n segments[0].segmentType == 'SelectionMarker'\n ) {\n const index = block.segments.indexOf(segments[0]);\n const previousSegment = block.segments[index - 1];\n\n if (\n previousSegment?.segmentType == 'Text' &&\n previousSegment.text.endsWith(wordBeforeCursor)\n ) {\n mutateSegment(block, previousSegment, segment => {\n segment.text =\n segment.text.substring(\n 0,\n segment.text.length - wordBeforeCursor.length\n ) + emoji.codePoint;\n });\n }\n }\n\n return true;\n });\n\n return true;\n });\n\n this.emojiCalloutRef.current?.dismiss();\n }\n\n private getWordBeforeCursor(editor: IEditor): string | null {\n let wordBeforeCursor: string | null = null;\n\n editor.formatContentModel(model => {\n iterateSelections(model, (_, __, block, segments) => {\n if (\n block?.blockType == 'Paragraph' &&\n segments?.length == 1 &&\n segments[0].segmentType == 'SelectionMarker'\n ) {\n const index = block.segments.indexOf(segments[0]);\n const prevSegment = block.segments[index - 1];\n\n if (prevSegment?.segmentType == 'Text') {\n // Match on the white space, the portion after space is on the index of 1 of the matched result\n // (index at 0 is whole match result, index at 1 is the word)\n const matches = WHITESPACE_REGEX.exec(prevSegment.text);\n wordBeforeCursor = matches?.length == 2 ? matches[1] : prevSegment.text;\n }\n }\n\n return true;\n });\n return false;\n });\n\n const matches = wordBeforeCursor ? EMOJI_BEFORE_COLON_REGEX.exec(wordBeforeCursor) : null;\n return matches && matches.length > 2 && matches[0] === wordBeforeCursor ? matches[2] : null;\n }\n\n private handleEventOnKeyDown(event: KeyDownEvent): void {\n this.eventHandledOnKeyDown = true;\n event.rawEvent.preventDefault();\n event.rawEvent.stopImmediatePropagation();\n }\n}\n\n/**\n * Create a new instance of Emoji plugin with FluentUI components.\n */\nexport function createEmojiPlugin(\n searchBoxStrings?: LocalizedStrings<EmojiStringKeys>\n): ReactEditorPlugin {\n return new EmojiPlugin(searchBoxStrings);\n}\n","/**\n * @internal\n * Emoji Description\n */\nexport const EmojiDescriptionStrings = {\n emjDMore: 'More',\n emjDNoSuggestions: 'No suggestions found',\n emjD0270a: 'Raised fist',\n emjD0270b: 'Raised hand',\n emjD0270c: 'Victory hand',\n emjD02764: 'Red heart',\n emjD1f440: 'Eyes',\n emjD1f442: 'Ear',\n emjD1f443: 'Nose',\n emjD1f444: 'Mouth',\n emjD1f445: 'Tongue',\n emjD1f446: 'Up-pointing backhand index finger',\n emjD1f447: 'Down-pointing backhand index finger',\n emjD1f448: 'Left-pointing backhand index finger',\n emjD1f449: 'Right-pointing backhand index finger',\n emjD1f44a: 'Fist bump',\n emjD1f44b: 'Waving hand',\n emjD1f44c: 'OK hand',\n emjD1f44d: 'Thumbs up',\n emjD1f44e: 'Thumbs down',\n emjD1f44f: 'Clapping hands',\n emjD1f450: 'Open hands',\n emjD1f590: 'Raised hand with fingers splayed',\n emjD1f595: 'Middle finger',\n emjD1f596: 'Raised hand with part between middle and ring fingers',\n emjD1f464: 'Bust in silhouette',\n emjD1f466: 'Boy',\n emjD1f467: 'Girl',\n emjD1f468: 'Man',\n emjD1f469: 'Woman',\n emjD1f46a: 'Family',\n emjD1f46b: 'Man and woman holding hands',\n emjD1f46e: 'Police officer',\n emjD1f46f: 'Woman with bunny ears',\n emjD1f470: 'Bride with veil',\n emjD1f471: 'Person with blond hair',\n emjD1f472: 'Man with gua pi mao',\n emjD1f473: 'Man with turban',\n emjD1f474: 'Older man',\n emjD1f475: 'Older woman',\n emjD1f476: 'Baby',\n emjD1f477: 'Construction worker',\n emjD1f481: 'Information desk person',\n emjD1f482: 'Guardsman',\n emjD1f48b: 'Kiss mark',\n emjD1f493: 'Beating heart',\n emjD1f494: 'Broken heart',\n emjD1f495: 'Two hearts',\n emjD1f496: 'Sparkling heart',\n emjD1f497: 'Growing heart',\n emjD1f498: 'Heart with arrow',\n emjD1f499: 'Blue heart',\n emjD1f49a: 'Green heart',\n emjD1f49b: 'Yellow heart',\n emjD1f49c: 'Purple heart',\n emjD1f49d: 'Heart with ribbon',\n emjD1f49e: 'Revolving hearts',\n emjD1f49f: 'Heart decoration',\n emjD1f601: 'Grinning face with smiling eyes',\n emjD1f602: 'Face with tears of joy',\n emjD1f603: 'Smiling face with open mouth',\n emjD1f604: 'Smiling face with open mouth and smiling eyes',\n emjD1f605: 'Smiling face with open mouth and cold sweat',\n emjD1f606: 'Smiling face with open mouth and tightly closed eyes',\n emjD1f607: 'Smiling face with halo',\n emjD1f608: 'Smiling face with horns',\n emjD1f609: 'Winking face',\n emjD1f60a: 'Smiling face with smiling eyes',\n emjD1f60b: 'Face savoring delicious food',\n emjD1f60c: 'Relieved face',\n emjD1f60d: 'Smiling face with heart-shaped eyes',\n emjD1f60e: 'Smiling face with sunglasses',\n emjD1f60f: 'Smirking face',\n emjD1f610: 'Neutral face',\n emjD1f612: 'Unamused face',\n emjD1f613: 'Face with cold sweat',\n emjD1f614: 'Pensive face',\n emjD1f616: 'Confounded face',\n emjD1f618: 'Face throwing a kiss',\n emjD1f61a: 'Kissing face with closed eyes',\n emjD1f61c: 'Face with stuck-out tongue and winking eye',\n emjD1f61d: 'Face with stuck-out tongue and tightly closed eyes',\n emjD1f61e: 'Disappointed face',\n emjD1f620: 'Angry face',\n emjD1f621: 'Pouting face',\n emjD1f622: 'Crying face',\n emjD1f623: 'Persevering face',\n emjD1f624: 'Face with look of triumph',\n emjD1f625: 'Disappointed but relieved face',\n emjD1f628: 'Fearful face',\n emjD1f629: 'Weary face',\n emjD1f62a: 'Sleepy face',\n emjD1f62b: 'Tired face',\n emjD1f62d: 'Loudly crying face',\n emjD1f630: 'Face with open mouth and cold sweat',\n emjD1f631: 'Face screaming in fear',\n emjD1f632: 'Astonished face',\n emjD1f633: 'Flushed face',\n emjD1f635: 'Dizzy face',\n emjD1f636: 'Face without mouth',\n emjD1f637: 'Face with medical mask',\n emjD1f645: 'Face with No Good gesture',\n emjD1f646: 'Face with OK gesture',\n emjD1f647: 'Person bowing deeply',\n emjD1f648: 'See-no-evil monkey',\n emjD1f649: 'Hear-no-evil monkey',\n emjD1f641: 'Slightly frowning face',\n emjD1f642: 'Slightly smiling face',\n emjD1f64a: 'Speak-no-evil monkey',\n emjD1f64b: 'Happy person raising one hand',\n emjD1f64c: 'Person raising both hands in celebration',\n emjD1f64d: 'Person frowning',\n emjD1f64e: 'Person with pouting face',\n emjD1f64f: 'Person with folded hands',\n emjD02600: 'Sun with rays',\n emjD02601: 'Cloud',\n emjD02614: 'Umbrella with rain drops',\n emjD0267b: 'Recycling symbol',\n emjD026c4: 'Snowman without snow',\n emjD026c5: 'Sun behind cloud',\n emjD02728: 'Sparkles',\n emjD02733: 'Eight-spoked asterisk',\n emjD02734: 'Eight-pointed star',\n emjD02744: 'Snowflake',\n emjD02747: 'Sparkle',\n emjD02b50: 'White medium star',\n emjD1f300: 'Cyclone',\n emjD1f301: 'Foggy',\n emjD1f302: 'Closed umbrella',\n emjD1f303: 'Night with stars',\n emjD1f304: 'Sunrise over mountains',\n emjD1f305: 'Sunrise',\n emjD1f306: 'Cityscape at dusk',\n emjD1f307: 'Sunset over buildings',\n emjD1f308: 'Rainbow',\n emjD1f309: 'Bridge at night',\n emjD1f30a: 'Water wave',\n emjD1f30b: 'Volcano',\n emjD1f30c: 'Milky Way',\n emjD1f311: 'New moon',\n emjD1f313: 'First quarter moon',\n emjD1f314: 'Waxing gibbous moon',\n emjD1f315: 'Full moon',\n emjD1f319: 'Crescent moon',\n emjD1f31b: 'First quarter moon with face',\n emjD1f31f: 'Glowing star',\n emjD1f320: 'Shooting star',\n emjD1f330: 'Chestnut',\n emjD1f331: 'Seedling',\n emjD1f334: 'Palm tree',\n emjD1f335: 'Cactus',\n emjD1f337: 'Tulip',\n emjD1f338: 'Cherry blossom',\n emjD1f339: 'Rose',\n emjD1f33a: 'Hibiscus',\n emjD1f33b: 'Sunflower',\n emjD1f33c: 'Blossom',\n emjD1f33d: 'Ear of corn',\n emjD1f33e: 'Ear of rice',\n emjD1f33f: 'Herb',\n emjD1f340: 'Four leaf clover',\n emjD1f341: 'Maple leaf',\n emjD1f342: 'Fallen leaf',\n emjD1f343: 'Leaf fluttering in wind',\n emjD1f344: 'Mushroom',\n emjD1f40c: 'Snail',\n emjD1f40d: 'Snake',\n emjD1f40e: 'Horse',\n emjD1f411: 'Sheep',\n emjD1f412: 'Monkey',\n emjD1f414: 'Chicken',\n emjD1f417: 'Boar',\n emjD1f418: 'Elephant',\n emjD1f419: 'Octopus',\n emjD1f41a: 'Spiral shell',\n emjD1f41b: 'Bug',\n emjD1f41c: 'Ant',\n emjD1f41d: 'Honeybee',\n emjD1f41e: 'Ladybug',\n emjD1f41f: 'Fish',\n emjD1f420: 'Tropical fish',\n emjD1f421: 'Blowfish',\n emjD1f422: 'Turtle',\n emjD1f423: 'Hatching chick',\n emjD1f424: 'Baby chick',\n emjD1f425: 'Front-facing baby chick',\n emjD1f426: 'Bird',\n emjD1f427: 'Penguin',\n emjD1f428: 'Koala',\n emjD1f429: 'Poodle',\n emjD1f42b: 'Bactrian camel',\n emjD1f42c: 'Dolphin',\n emjD1f42d: 'Mouse face',\n emjD1f42e: 'Cow face',\n emjD1f42f: 'Tiger face',\n emjD1f430: 'Rabbit face',\n emjD1f431: 'Cat face',\n emjD1f432: 'Dragon face',\n emjD1f433: 'Spouting whale',\n emjD1f434: 'Horse face',\n emjD1f435: 'Monkey face',\n emjD1f436: 'Dog face',\n emjD1f437: 'Pig face',\n emjD1f438: 'Frog face',\n emjD1f439: 'Hamster face',\n emjD1f43a: 'Wolf face',\n emjD1f43b: 'Bear face',\n emjD1f43c: 'Panda face',\n emjD1f43d: 'Pig nose',\n emjD1f43e: 'Paw prints',\n emjD1f638: 'Grinning cat face with smiling eyes',\n emjD1f639: 'Cat face with tears of joy',\n emjD1f63a: 'Smiling cat face with open mouth',\n emjD1f63b: 'Smiling cat face with heart-shaped eyes',\n emjD1f63c: 'Cat face with wry smile',\n emjD1f63d: 'Kissing cat face with closed eyes',\n emjD1f63e: 'Pouting cat face',\n emjD1f63f: 'Crying cat face',\n emjD1f640: 'Weary cat face',\n emjD0260e: 'Telephone',\n emjD026bd: 'Soccer ball',\n emjD026be: 'Baseball',\n emjD1f004: 'Mahjong tile red dragon',\n emjD1f380: 'Ribbon',\n emjD1f381: 'Wrapped present',\n emjD1f382: 'Birthday cake',\n emjD1f383: 'Jack-o-lantern',\n emjD1f384: 'Christmas tree',\n emjD1f385: 'Father Christmas',\n emjD1f386: 'Fireworks',\n emjD1f387: 'Firework sparkler',\n emjD1f388: 'Balloon',\n emjD1f389: 'Party popper',\n emjD1f38a: 'Confetti ball',\n emjD1f38b: 'Tanabata tree',\n emjD1f38c: 'Crossed flags',\n emjD1f38d: 'Pine decoration',\n emjD1f38e: 'Japanese dolls',\n emjD1f38f: 'Carp streamer',\n emjD1f390: 'Wind chime',\n emjD1f391: 'Moon-viewing ceremony',\n emjD1f392: 'School backpack',\n emjD1f393: 'Graduation cap',\n emjD1f3a0: 'Carousel horse',\n emjD1f3a1: 'Ferris wheel',\n emjD1f3a2: 'Roller coaster',\n emjD1f3a3: 'Fishing pole and fish',\n emjD1f3a4: 'Microphone',\n emjD1f3a5: 'Movie camera',\n emjD1f3a6: 'Cinema',\n emjD1f3a7: 'Headphones',\n emjD1f3a8: 'Artist palette',\n emjD1f3a9: 'Top hat',\n emjD1f3aa: 'Circus tent',\n emjD1f3ab: 'Ticket',\n emjD1f3ac: 'Clapper board',\n emjD1f3ad: 'Performing arts',\n emjD1f3ae: 'Video game',\n emjD1f3af: 'Direct hit',\n emjD1f3b0: 'Slot machine',\n emjD1f3b1: 'Billiards',\n emjD1f3b2: 'Game die',\n emjD1f3b3: 'Bowling',\n emjD1f3b4: 'Flower playing cards',\n emjD1f3b5: 'Musical note',\n emjD1f3b6: 'Multiple musical notes',\n emjD1f3b7: 'Saxophone',\n emjD1f3b8: 'Guitar',\n emjD1f3b9: 'Musical keyboard',\n emjD1f3ba: 'Trumpet',\n emjD1f3bb: 'Violin',\n emjD1f3bc: 'Musical score',\n emjD1f3bd: 'Running shirt with sash',\n emjD1f3be: 'Tennis racquet and ball',\n emjD1f3bf: 'Ski and ski boot',\n emjD1f3c0: 'Basketball and hoop',\n emjD1f3c1: 'Checkered flag',\n emjD1f3c2: 'Snowboarder',\n emjD1f3c3: 'Runner',\n emjD1f3c4: 'Surfer',\n emjD1f3c6: 'Trophy',\n emjD1f3c8: 'American football',\n emjD1f3ca: 'Swimmer',\n emjD1f478: 'Princess',\n emjD1f479: 'Japanese ogre',\n emjD1f47a: 'Japanese goblin',\n emjD1f47b: 'Ghost',\n emjD1f47c: 'Baby angel',\n emjD1f47d: 'Extraterrestrial alien',\n emjD1f47e: 'Alien monster',\n emjD1f47f: 'Imp',\n emjD1f480: 'Skull',\n emjD1f483: 'Dancer',\n emjD1f484: 'Lipstick',\n emjD1f485: 'Nail polish',\n emjD1f486: 'Face massage',\n emjD1f487: 'Haircut',\n emjD1f488: 'Barber pole',\n emjD1f489: 'Syringe',\n emjD1f48a: 'Pill',\n emjD1f48c: 'Love letter',\n emjD1f48d: 'Ring',\n emjD1f48e: 'Gemstone',\n emjD1f48f: 'Kiss',\n emjD1f490: 'Bouquet',\n emjD1f491: 'Couple with heart',\n emjD1f492: 'Wedding',\n emjD1f4f7: 'Camera',\n emjD1f4f9: 'Video camera',\n emjD1f4fa: 'Television',\n emjD1f4fb: 'Radio',\n emjD1f4fc: 'Videocassette',\n emjD02615: 'Hot beverage',\n emjD02702: 'Scissors',\n emjD02709: 'Envelope',\n emjD0270f: 'Pencil',\n emjD02712: 'Nib',\n emjD1f345: 'Tomato',\n emjD1f346: 'Eggplant',\n emjD1f347: 'Grapes',\n emjD1f348: 'Melon',\n emjD1f349: 'Watermelon',\n emjD1f34a: 'Tangerine',\n emjD1f34c: 'Banana',\n emjD1f34d: 'Pineapple',\n emjD1f34e: 'Red apple',\n emjD1f34f: 'Green apple',\n emjD1f351: 'Peach',\n emjD1f352: 'Cherries',\n emjD1f353: 'Strawberry',\n emjD1f354: 'Hamburger',\n emjD1f355: 'Slice of pizza',\n emjD1f356: 'Meat on bone',\n emjD1f357: 'Poultry leg',\n emjD1f358: 'Rice cracker',\n emjD1f359: 'Rice ball',\n emjD1f35a: 'Cooked rice',\n emjD1f35b: 'Curry and rice',\n emjD1f35c: 'Steaming bowl',\n emjD1f35d: 'Spaghetti',\n emjD1f35e: 'Bread',\n emjD1f35f: 'French fries',\n emjD1f360: 'Roasted sweet potato',\n emjD1f361: 'Dango',\n emjD1f362: 'Oden',\n emjD1f363: 'Sushi',\n emjD1f364: 'Fried shrimp',\n emjD1f365: 'Fish cake with swirl design',\n emjD1f366: 'Soft ice cream',\n emjD1f367: 'Shaved ice',\n emjD1f368: 'Ice cream',\n emjD1f369: 'Doughnut',\n emjD1f36a: 'Cookie',\n emjD1f36b: 'Chocolate bar',\n emjD1f36c: 'Candy',\n emjD1f36d: 'Lollipop',\n emjD1f36e: 'Custard',\n emjD1f36f: 'Honey pot',\n emjD1f370: 'Shortcake',\n emjD1f371: 'Bento box',\n emjD1f372: 'Pot of food',\n emjD1f373: 'Cooking',\n emjD1f374: 'Fork and knife',\n emjD1f375: 'Teacup without handle',\n emjD1f376: 'Sake bottle and cup',\n emjD1f377: 'Wine glass',\n emjD1f378: 'Cocktail glass',\n emjD1f379: 'Tropical drink',\n emjD1f37a: 'Beer mug',\n emjD1f37b: 'Clinking beer mugs',\n emjD1f451: 'Crown',\n emjD1f452: \"Woman's hat\",\n emjD1f453: 'Eyeglasses',\n emjD1f454: 'Necktie',\n emjD1f455: 'T-shirt',\n emjD1f456: 'Jeans',\n emjD1f457: 'Dress',\n emjD1f458: 'Kimono',\n emjD1f459: 'Bikini',\n emjD1f45a: \"Woman's clothes\",\n emjD1f45b: 'Purse',\n emjD1f45c: 'Handbag',\n emjD1f45d: 'Pouch',\n emjD1f45e: \"Man's shoe\",\n emjD1f45f: 'Athletic shoe',\n emjD1f460: 'High-heeled shoe',\n emjD1f461: \"Woman's sandal\",\n emjD1f462: \"Woman's boots\",\n emjD1f463: 'Footprints',\n emjD1f4ba: 'Seat',\n emjD1f4bb: 'Personal computer',\n emjD1f4bc: 'Briefcase',\n emjD1f4bd: 'Minidisc',\n emjD1f4be: 'Floppy disk',\n emjD1f4bf: 'Optical disc',\n emjD1f4c0: 'DVD',\n emjD1f4c1: 'File folder',\n emjD1f4c2: 'Open file folder',\n emjD1f4c3: 'Page with curl',\n emjD1f4c4: 'Page facing up',\n emjD1f4c5: 'Calendar',\n emjD1f4c6: 'Tear-off calendar',\n emjD1f4c7: 'Card index',\n emjD1f4c8: 'Chart with upward trend',\n emjD1f4c9: 'Chart with downward trend',\n emjD1f4ca: 'Bar chart',\n emjD1f4cb: 'Clipboard',\n emjD1f4cc: 'Pushpin',\n emjD1f4cd: 'Round pushpin',\n emjD1f4ce: 'Paper clip',\n emjD1f4cf: 'Straight ruler',\n emjD1f4d0: 'Triangular ruler',\n emjD1f4d1: 'Bookmark tabs',\n emjD1f4d2: 'Ledger',\n emjD1f4d3: 'Notebook',\n emjD1f4d4: 'Notebook with decorative cover',\n emjD1f4d5: 'Closed book',\n emjD1f4d6: 'Open book',\n emjD1f4d7: 'Green book',\n emjD1f4d8: 'Blue book',\n emjD1f4d9: 'Orange book',\n emjD1f4da: 'Books',\n emjD1f4db: 'Name badge',\n emjD1f4dc: 'Scroll',\n emjD1f4dd: 'Memo',\n emjD1f4de: 'Telephone receiver',\n emjD1f4df: 'Pager',\n emjD1f4e0: 'Fax machine',\n emjD1f4e1: 'Satellite antenna',\n emjD1f4e2: 'Public address loudspeaker',\n emjD1f4e3: 'Cheering megaphone',\n emjD1f4e4: 'Outbox tray',\n emjD1f4e5: 'Inbox tray',\n emjD1f4e6: 'Package',\n emjD1f4e7: 'Email',\n emjD1f4e8: 'Incoming envelope',\n emjD1f4e9: 'Envelope with downward-facing arrow above',\n emjD1f4ea: 'Closed mailbox with lowered flag',\n emjD1f4eb: 'Closed mailbox with raised flag',\n emjD1f4ee: 'Postbox',\n emjD1f4f0: 'Newspaper',\n emjD1f4f1: 'Mobile phone',\n emjD1f4f2: 'Mobile phone with right-facing arrow at left',\n emjD1f4f3: 'Vibration mode',\n emjD1f4f4: 'Mobile phone off',\n emjD1f4f6: 'Antenna with bars',\n emjD1f525: 'Fire',\n emjD1f526: 'Flashlight',\n emjD1f527: 'Wrench',\n emjD1f528: 'Hammer',\n emjD1f529: 'Nut and bolt',\n emjD1f52a: 'Hocho',\n emjD1f52b: 'Pistol',\n emjD1f52e: 'Crystal ball',\n emjD1f52f: 'Six-pointed star with middle dot',\n emjD1f531: 'Trident emblem',\n emjD1f550: \"Clock face one o'clock\",\n emjD1f551: \"Clock face two o'clock\",\n emjD1f552: \"Clock face three o'clock\",\n emjD1f553: \"Clock face four o'clock\",\n emjD1f554: \"Clock face five o'clock\",\n emjD1f555: \"Clock face six o'clock\",\n emjD1f556: \"Clock face seven o'clock\",\n emjD1f557: \"Clock face eight o'clock\",\n emjD1f558: \"Clock face nine o'clock\",\n emjD1f559: \"Clock face ten o'clock\",\n emjD1f55a: \"Clock face eleven o'clock\",\n emjD1f55b: \"Clock face twelve o'clock\",\n emjD02668: 'Hot springs',\n emjD0267f: 'Wheelchair',\n emjD02693: 'Anchor',\n emjD026a0: 'Warning',\n emjD026a1: 'High Voltage',\n emjD026d4: 'No Entry',\n emjD026ea: 'Church',\n emjD026f2: 'Fountain',\n emjD026f3: 'Flag in hole',\n emjD026f5: 'Sailboat',\n emjD026fa: 'Tent',\n emjD026fd: 'Fuel pump',\n emjD02708: 'Airplane',\n emjD1f17f: 'Squared Latin capital letter P',\n emjD1f3e0: 'House building',\n emjD1f3e1: 'House with garden',\n emjD1f3e2: 'Office building',\n emjD1f3e3: 'Japanese post office',\n emjD1f3e5: 'Hospital',\n emjD1f3e6: 'Bank',\n emjD1f3e7: 'Automated teller machine',\n emjD1f3e8: 'Hotel',\n emjD1f3e9: 'Love hotel',\n emjD1f3ea: 'Convenience store',\n emjD1f3eb: 'School',\n emjD1f3ec: 'Department store',\n emjD1f3ed: 'Factory',\n emjD1f3ee: 'Izakaya lantern',\n emjD1f3ef: 'Japanese castle',\n emjD1f3f0: 'European castle',\n emjD1f530: 'Japanese symbol for beginner',\n emjD1f680: 'Rocket',\n emjD1f683: 'Railway car',\n emjD1f684: 'High-speed train',\n emjD1f685: 'High-speed train with bullet nose',\n emjD1f687: 'Metro',\n emjD1f689: 'Station',\n emjD1f68c: 'Bus',\n emjD1f68f: 'Bus stop',\n emjD1f691: 'Ambulance',\n emjD1f692: 'Fire engine',\n emjD1f693: 'Police car',\n emjD1f695: 'Taxi',\n emjD1f697: 'Automobile',\n emjD1f699: 'Recreational vehicle',\n emjD1f69a: 'Delivery truck',\n emjD1f6a2: 'Ship',\n emjD1f6a4: 'Speedboat',\n emjD1f6a5: 'Horizontal traffic light',\n emjD1f6a7: 'Construction',\n emjD1f6a8: \"Police car's revolving light\",\n emjD1f6a9: 'Triangular flag on post',\n emjD1f6aa: 'Door',\n emjD1f6ab: 'No entry',\n emjD1f6ac: 'Smoking symbol',\n emjD1f6ad: 'No smoking symbol',\n emjD1f6b2: 'Bicycle',\n emjD1f6b6: 'Pedestrian',\n emjD1f6b9: \"Men's symbol\",\n emjD1f6ba: \"Women's symbol\",\n emjD1f6bb: 'Restroom',\n emjD1f6bc: 'Baby symbol',\n emjD1f6bd: 'Toilet',\n emjD1f6be: 'Water closet',\n emjD1f6c0: 'Bath',\n emjD02049: 'Exclamation question mark',\n emjD02139: 'Information source',\n emjD021a9: 'Left-facing arrow with hook',\n emjD021aa: 'Right-facing arrow with hook',\n emjD0231a: 'Watch',\n emjD0231b: 'Hourglass',\n emjD023e9: 'Right-pointing double triangle',\n emjD023ea: 'Left-pointing double triangle',\n emjD023eb: 'Up-pointing double triangle',\n emjD023ec: 'Down-pointing double triangle',\n emjD023f0: 'Alarm clock',\n emjD023f3: 'Hourglass with flowing sand',\n emjD024c2: 'Circled Latin capital letter M',\n emjD025b6: 'Black right-pointing triangle',\n emjD025c0: 'Black left-pointing triangle',\n emjD025fb: 'White medium square',\n emjD025fc: 'Black medium square',\n emjD026ce: 'Ophiuchus',\n emjD02611: 'Ballot box with check',\n emjD0261d: 'White up-pointing index',\n emjD02648: 'Aries',\n emjD02649: 'Taurus',\n emjD0264a: 'Gemini',\n emjD0264b: 'Cancer',\n emjD0264c: 'Leo',\n emjD0264d: 'Virgo',\n emjD0264e: 'Libra',\n emjD0264f: 'Scorpio',\n emjD02650: 'Sagittarius',\n emjD02651: 'Capricorn',\n emjD02652: 'Aquarius',\n emjD02653: 'Pisces',\n emjD026aa: 'Medium white circle',\n emjD026ab: 'Medium black circle',\n emjD02705: 'White heavy check mark',\n emjD02714: 'Heavy check mark',\n emjD02716: 'Heavy multiplication x',\n emjD0274c: 'Cross mark',\n emjD0274e: 'Squared cross mark',\n emjD02753: 'question mark ornament',\n emjD02754: 'White question mark ornament',\n emjD02755: 'White exclamation mark ornament',\n emjD02757: 'Heavy exclamation mark',\n emjD02795: 'Heavy plus sign',\n emjD02796: 'Heavy minus sign',\n emjD02797: 'Heavy division sign',\n emjD027a1: 'Black right-facing arrow',\n emjD027b0: 'Curly loop',\n emjD027bf: 'Double curly loop',\n emjD02934: 'Arrow pointing right then curving upward',\n emjD02935: 'Arrow pointing right then curving downward',\n emjD02b05: 'Black arrow pointing left',\n emjD02b06: 'Black arrow pointing right',\n emjD02b07: 'Downwards black arrow',\n emjD02b1b: 'Black large square',\n emjD02b1c: 'White large square',\n emjD02b55: 'Heavy large circle',\n emjD03030: 'Wavy dash',\n emjD0303d: 'Part alternation mark',\n emjD03297: 'Circled Ideograph congratulation',\n emjD03299: 'Circled Ideograph secret',\n emjD1f0cf: 'Playing card Joker',\n emjD1f170: 'Squared Latin capital letter A',\n emjD1f171: 'Squared Latin capital letter B',\n emjD1f17e: 'Squared Latin capital letter O',\n emjD1f18e: 'Squared AB',\n emjD1f191: 'Squared CL',\n emjD1f192: 'Squared COOL',\n emjD1f193: 'Squared FREE',\n emjD1f194: 'Squared ID',\n emjD1f195: 'Squared NEW',\n emjD1f196: 'Squared NG',\n emjD1f197: 'Squared OK',\n emjD1f198: 'Squared SOS',\n emjD1f199: 'Squared UP!',\n emjD1f19a: 'Squared VS',\n emjD1f201: 'Squared Katakana Koko',\n emjD1f202: 'Squared Katakana Sa',\n emjD1f21a: 'Squared CJK Unified Ideograph-7121',\n emjD1f22f: 'Squared CJK Unified Ideograph-6307',\n emjD1f232: 'Squared CJK Unified Ideograph-7981',\n emjD1f233: 'Squared CJK Unified Ideograph-7a7a',\n emjD1f234: 'Squared CJK Unified Ideograph-5408',\n emjD1f235: 'Squared CJK Unified Ideograph-6e80',\n emjD1f236: 'Squared CJK Unified Ideograph-6709',\n emjD1f237: 'Squared CJK Unified Ideograph-6708',\n emjD1f238: 'Squared CJK Unified Ideograph-7533',\n emjD1f239: 'Squared CJK Unified Ideograph-5272',\n emjD1f23a: 'Squared CJK Unified Ideograph-55b6',\n emjD1f250: 'Circled Ideograph advantage',\n emjD1f251: 'Circled Ideograph accept',\n emjD1f30f: 'Earth globe Asia-Australia',\n emjD1f4a0: 'Diamond shape with a dot inside',\n emjD1f4a1: 'Electric light bulb',\n emjD1f4a2: 'Anger',\n emjD1f4a3: 'Bomb',\n emjD1f4a4: 'Sleeping',\n emjD1f4a5: 'Collision',\n emjD1f4a6: 'Splashing sweat',\n emjD1f4a7: 'Droplet',\n emjD1f4a8: 'Dash',\n emjD1f4a9: 'Pile of poo',\n emjD1f4aa: 'Flexed biceps',\n emjD1f4ab: 'Dizzy',\n emjD1f4ac: 'Speech balloon',\n emjD1f4ae: 'White flower',\n emjD1f4af: 'Hundred points',\n emjD1f4b0: 'Money bag',\n emjD1f4b1: 'Currency exchange',\n emjD1f4b2: 'Heavy dollar sign',\n emjD1f4b3: 'Credit card',\n emjD1f4b4: 'Banknote with yen sign',\n emjD1f4b5: 'Banknote with dollar sign',\n emjD1f4b8: 'Money with wings',\n emjD1f4b9: 'Chart with upwards trend and yen sign',\n emjD1f503: 'Clockwise downward and upward open circle arrows',\n emjD1f50a: 'Speaker with three sound waves',\n emjD1f50b: 'Battery',\n emjD1f50c: 'Electric plug',\n emjD1f50d: 'Left-leaning magnifying glass',\n emjD1f50e: 'Right-leaning magnifying glass',\n emjD1f50f: 'Lock with ink pen',\n emjD1f510: 'Closed lock with key',\n emjD1f511: 'Key',\n emjD1f512: 'Lock',\n emjD1f513: 'Open lock',\n emjD1f514: 'Bell',\n emjD1f516: 'Bookmark',\n emjD1f517: 'Link',\n emjD1f518: 'Radio button',\n emjD1f519: 'Back with left-facing arrow above',\n emjD1f51a: 'End with left-facing arrow above',\n emjD1f51b: 'On with exclamation mark with left right arrow above',\n emjD1f51c: 'Soon with right-facing arrow above',\n emjD1f51d: 'Top with upward arrow above',\n emjD1f51e: 'No one under eighteen',\n emjD1f51f: 'Keycap ten',\n emjD1f520: 'Input Latin uppercase',\n emjD1f521: 'Input Latin lowercase',\n emjD1f522: 'Input numbers',\n emjD1f523: 'Input symbols',\n emjD1f524: 'Input Latin letters',\n emjD1f532: 'Black square button',\n emjD1f533: 'White square button',\n emjD1f534: 'Large red circle',\n emjD1f535: 'Large blue circle',\n emjD1f536: 'Large orange diamond',\n emjD1f537: 'Large blue diamond',\n emjD1f538: 'Small orange diamond',\n emjD1f539: 'Small blue diamond',\n emjD1f53a: 'Up-pointing red triangle',\n emjD1f53b: 'Down-pointing red triangle',\n emjD1f53c: 'Up-pointing small red triangle',\n emjD1f53d: 'Down-pointing small red triangle',\n emjD1f5fb: 'Mount Fuji',\n emjD1f5fc: 'Tokyo Tower',\n emjD1f5fd: 'Statue of Liberty',\n emjD1f5fe: 'Silhouette of Japan',\n emjD1f5ff: 'Moyai',\n};\n\n/**\n * @internal\n * Emoji Keywords\n */\nexport const EmojiKeywordStrings = {\n emjK1f607: 'saint angel innocent',\n emjK1f47c: 'cherub angel',\n emjK1f34e: 'apple',\n emjK1f34f: 'apple',\n emjK1f477: 'construction',\n emjK1f6a7: 'construction detour',\n emjK1f491: 'couple engaged married marry marriage',\n emjK1f46b: 'couple engaged',\n emjK1f622: 'crying sad',\n emjK1f62d: 'crying sad',\n emjK1f525: 'fire',\n emjK1f692: 'fire truck fire engine',\n emjK1f386: 'fireworks sparkler july 4th',\n emjK1f387: 'fireworks sparkler july 4th',\n emjK1f44a: 'punch fist pump chuck norris bam',\n emjK0270a: 'fist pump punch',\n emjK1f498: 'heart love cupid',\n emjK1f496: 'heart love',\n emjK1f497: 'love heart',\n emjK1f493: 'heart love heartbeat',\n emjK1f368: 'ice cream dessert treat sundae sweets',\n emjK1f366: 'ice cream dessert treat sweets',\n emjK1f48b: 'kiss xoxo love kisses kissing mwah',\n emjK1f444: 'kiss mouth',\n emjK1f618: 'kiss love kisses kissing',\n emjK1f61a: 'kiss love kisses kissing smooch',\n emjK1f48f: 'kiss love',\n emjK1f435: 'monkey',\n emjK1f64a: 'monkey speak no evil',\n emjK1f649: 'monkey hear no evil',\n emjK1f648: 'monkey see no evil',\n emjK1f3b6: 'music melody song singing tune jingle',\n emjK1f3b5: 'music musical note melody musical',\n emjK1f44c: 'ok okay perfect',\n emjK1f646: 'ok awesome',\n emjK1f621: 'pouting sad pout',\n emjK1f64e: 'pouting sad depressed',\n emjK1f60c: 'relieved phew whew relief',\n emjK1f630: 'relieved phew whew',\n emjK1f605: 'relieved phew whew sheesh',\n emjK1f380: 'ribbon',\n emjK1f381: 'gift present presents ribbon',\n emjK1f613: 'scared yikes scary uh oh',\n emjK1f631: 'scared yikes fear whoa',\n emjK1f629: 'scared anxious uncertain unsure',\n emjK1f628: 'scared fearful',\n emjK1f45e: 'shoe shoes',\n emjK1f45f: 'shoe shoes',\n emjK1f60a: 'smile happy smiling yay',\n emjK1f642: 'smile happy smiling',\n emjK1f603: 'smiling happy excited woo woohoo woot',\n emjK1f604: 'smiling happy grin excited',\n emjK1f6bd: 'toilet bathroom potty restroom washroom',\n emjK1f6ba: 'toilet bathroom',\n emjK1f6b9: 'toilet bathroom',\n emjK1f684: 'train light rail monorail',\n emjK1f683: 'train caboose',\n emjK1f446: 'up click',\n emjK0261d: 'up',\n emjK1f64b: 'wave hi bye hey aloha',\n emjK1f44b: 'wave hi bye waving high five',\n emjK1f601: 'happy grin lol funny grinning hehe',\n emjK1f602: 'happy lol funny joy lmao rofl',\n emjK1f606: 'lol haha laughing lmao',\n emjK1f609: 'haha winking wink winky',\n emjK1f60f: 'haha winking wink smirking smirk heh',\n emjK1f645: 'bad',\n emjK1f44e: 'bad thumbs down wrong boo',\n emjK1f60d: 'love love you loving love u',\n emjK1f495: 'love hearts',\n emjK1f44d: 'ok thumbs up',\n emjK1f610: 'ok umm',\n emjK1f620: 'mad angry grrr',\n emjK1f612: 'mad angry unamused not funny amused bleh blah',\n emjK1f47b: 'scared halloween ghost boo',\n emjK1f480: 'scared skull danger die death poison',\n emjK1f47e: 'scared monster',\n emjK1f365: 'rice ball fish cake',\n emjK1f61e: 'disappointed sad',\n emjK1f64d: 'disappointed sad frown',\n emjK1f494: 'heartbroken sorrow sad broken heart brokenhearted',\n emjK1f625: 'relieved phew',\n emjK1f62b: 'sleepy tired yawn',\n emjK1f4a4: 'sleepy tired sleep zzz',\n emjK1f62a: 'sleepy tired',\n emjK1f632: 'wow astonished',\n emjK1f633: 'wow flushed',\n emjK1f3c4: 'wave surf surfer surfers surfs surfing',\n emjK1f44f: 'yay clapping applause clap',\n emjK1f64c: 'yay celebrate',\n emjK1f48d: 'ring marry fiance engaged engage engagement ring engagement diamond ring bling',\n emjK1f483: 'party dancer dance dancing',\n emjK1f389: 'party fun congratulations celebrate congrats',\n emjK1f388: 'party fun balloon',\n emjK1f38a: 'party confetti surprise',\n emjK1f383: 'happy halloween trick treat halloween pumpkin',\n emjK1f385: 'merry christmas santa claus father xmas',\n emjK1f384: 'merry christmas tree happy holidays',\n emjK1f3eb: 'school college study teacher learn studying',\n emjK1f392: 'backpack school bag back pack',\n emjK1f41f: 'fish goldfish',\n emjK1f3a3: 'fish fishing fishing pole',\n emjK1f3a5: 'video camera film movie movie camera',\n emjK1f4f9: 'video camera',\n emjK1f3a6: 'theatre theater cinema',\n emjK1f3ad: 'performing arts drama shakespeare theatre theater play actor actress',\n emjK1f3bc: 'treble clef sheet music music musical score',\n emjK1f3b9: 'music piano',\n emjK1f3a7: 'music headphones headphone',\n emjK1f3b7: 'music saxophone sax',\n emjK1f3ba: 'music trumpet',\n emjK1f3b8: 'music guitar',\n emjK1f3bb: 'music violin',\n emjK1f3ac: 'film action movie',\n emjK1f48e: 'diamond stone gem',\n emjK1f3be: 'wimbledon tennis raquet tennis sports racquet',\n emjK1f3c8: 'football superbowl sports nfl',\n emjK1f3bf: 'sports winter ski skiing skis',\n emjK1f3c2: 'sports winter snowboard snowboarder snowboarding snowboards',\n emjK026c4: 'winter snow snowman',\n emjK02744: 'winter snow snowflake snowing snowed christmas xmas blizzard',\n emjK1f3c1: 'race finish nascar',\n emjK1f3c3: 'race run marathon runner sprinting running late',\n emjK1f375: 'tea coffee',\n emjK02615: 'coffee tea',\n emjK1f377: 'alcohol wine',\n emjK1f378: 'alcohol cocktail drinks martini happy hour',\n emjK1f379: 'alcohol tropical drink',\n emjK1f68c: 'bus transit',\n emjK1f687: 'bus transit metro',\n emjK1f43b: 'bear teddy',\n emjK1f43c: 'bear panda',\n emjK1f340: \"luck lucky st. patrick's day shamrock\",\n emjK1f320: 'luck shooting star wish comet asteroid meteor meteroid',\n emjK1f303: 'skyline starry stars night',\n emjK1f307: 'skyline sunset',\n emjK1f31f: 'star twinkle',\n emjK02747: 'star sparkle glitter',\n emjK1f4b0: 'cash loot',\n emjK1f4b5: 'cash money dollar',\n emjK1f4b4: 'yen money',\n emjK1f4b3: 'money credit debt debit credit card',\n emjK1f60b: 'dinner hungry lunch food yummy yum delicious tasty mmmmm',\n emjK1f60e: 'cool',\n emjK1f614: 'alas thinking sigh',\n emjK1f616: 'confused confounded huh',\n emjK1f61c: 'goofy wassup nyah kidding',\n emjK1f61d: 'gross yuck eww blech',\n emjK1f623: 'persevering',\n emjK1f624: 'triumph congratulations grats congrats yahoo ftw woot wahoo',\n emjK1f635: 'dizzy drunk confused',\n emjK1f636: 'unsure',\n emjK1f637: 'sick flu',\n emjK1f440: 'eyes snoop',\n emjK1f442: 'ear listen',\n emjK1f443: 'nose smell',\n emjK1f445: 'tongue lick taste drool',\n emjK1f447: 'down',\n emjK1f448: 'left',\n emjK1f449: 'right',\n emjK1f64f: 'pray praying prayer',\n emjK0270b: 'hand',\n emjK0270c: 'peace victory',\n emjK1f466: 'boy',\n emjK1f467: 'girl',\n emjK1f468: 'man',\n emjK1f469: 'woman',\n emjK1f46a: 'family',\n emjK1f46e: 'police officer cop',\n emjK1f46f: 'bunny ears costume',\n emjK1f470: 'bride marriage bridezilla',\n emjK1f471: 'blond',\n emjK1f474: 'grandpa old man gramps grandfather',\n emjK1f475: 'grandma old lady old woman grandmother',\n emjK1f476: 'baby kid toddler newborn infant',\n emjK1f382: 'birthday cake happy cake',\n emjK1f390: 'chime',\n emjK1f393: 'graduation college high school graduated graduating graduate grad',\n emjK1f0cf: 'cards card joker blackjack poker',\n emjK1f3a0: 'carousel carnival',\n emjK1f3a1: 'ferris wheel amusement park',\n emjK1f3a2: 'roller coaster',\n emjK1f3a4: 'microphone sing karaoke singing',\n emjK1f3a8: 'paint artist palette artist',\n emjK1f3a9: 'top hat black tie',\n emjK1f3aa: 'circus',\n emjK1f3ab: 'ticket stub ticket stub admission',\n emjK1f3ae: 'xbox video game video games controller',\n emjK1f3af: 'bullseye archery darts arrow',\n emjK1f3b0: 'slot slots machine casino gamble gambling',\n emjK1f3b1: 'pool billiards',\n emjK1f3b2: 'die dice game craps gambling casino gamble',\n emjK1f3b3: 'bowling bowl',\n emjK1f4f7: 'camera picture photo',\n emjK1f4fa: 'tv television',\n emjK1f4fb: 'radio',\n emjK1f4fc: 'videotape videocassette cassette vcr',\n emjK1f478: 'princess',\n emjK1f47d: 'alien ufo',\n emjK1f47f: 'imp pixie loki leprechaun',\n emjK1f484: 'lipstick makeup',\n emjK1f485: 'nail polish manicure',\n emjK1f486: 'massage',\n emjK1f487: 'haircut',\n emjK1f488: 'barber barbershop',\n emjK1f489: 'syringe shot needle',\n emjK1f48a: 'pill pills drug drugs',\n emjK1f48c: 'love letter',\n emjK1f490: 'flowers bouquet love',\n emjK1f492: 'wedding marry church',\n emjK1f3c0: 'basketball bball hoops',\n emjK1f3c6: 'win trophy champions champion',\n emjK1f3ca: 'swim swimmer swimming swims',\n emjK026bd: 'soccer ball',\n emjK026be: 'baseball',\n emjK1f451: 'crown king queen',\n emjK1f453: 'glasses hipster',\n emjK1f454: 'tie',\n emjK1f455: 'tshirt tshirts',\n emjK1f456: 'jeans pants',\n emjK1f457: 'dress',\n emjK1f459: 'bikini bathing suit swimsuit swim',\n emjK1f45b: 'purse',\n emjK1f45c: 'handbag purse',\n emjK1f45d: 'pouch clutch',\n emjK1f461: 'sandal heels heel shoe shoes sandals pumps',\n emjK1f462: 'boots boot',\n emjK1f463: 'footprints barefoot',\n emjK1f4dd: 'memo note',\n emjK1f4de: 'telephone call phone',\n emjK1f4df: 'pager',\n emjK1f4e0: 'fax machine',\n emjK1f4e1: 'satellite antenna',\n emjK1f4e3: 'megaphone cheering',\n emjK1f4e6: 'present package parcel',\n emjK1f4e7: 'email mail',\n emjK1f4ee: 'mail post',\n emjK1f4f0: 'newspaper news',\n emjK1f4f1: 'phone cell call',\n emjK1f4f6: 'wifi signal',\n emjK1f526: 'flashlight',\n emjK1f527: 'wrench',\n emjK1f528: 'hammer hammers',\n emjK1f529: 'nuts bolts',\n emjK1f52a: 'knife',\n emjK1f52e: 'crystal ball clairvoyance clairvoyant psychic mystic',\n emjK1f531: 'trident',\n emjK1f354: 'hamburger fast burger hamburgers burgers food hungry',\n emjK1f355: 'pizza fast food hungry dinner lunch',\n emjK1f356: 'meat dinner lunch hungry food',\n emjK1f357: 'chicken leg turkey leg meat chicken turkey hungry dinner lunch food drumstick',\n emjK1f35a: 'rice dinner hungry lunch food',\n emjK1f35c: 'noodles ramen food dinner lunch',\n emjK1f35d: 'spaghetti dinner noodles food hungry',\n emjK1f35e: 'bread food',\n emjK1f35f: 'fries fast food french fries food',\n emjK1f360: 'potato potatoes vegetable food',\n emjK1f363: 'sushi food maki',\n emjK1f364: 'fried shrimp shrimp seafood food tempura',\n emjK1f369: 'doughnut doughnuts donut donuts food sweets',\n emjK1f36a: 'cookie cookies food sweets',\n emjK1f36b: 'chocolate chocolates candy bar chocolate bar sweets',\n emjK1f36c: 'candy sweet sweets treat',\n emjK1f36d: 'lollipop candy treat sucker',\n emjK1f36e: 'custard',\n emjK1f36f: 'honey pot',\n emjK1f370: 'pie food hungry cake dessert cheesecake shortcake sweets',\n emjK1f371: 'bento box',\n emjK1f372: 'soup pot of food stew',\n emjK1f374: 'food dinner fork knife eat hungry meal restaurant',\n emjK1f376: 'sake alcohol',\n emjK1f37a: 'beer alcohol',\n emjK1f37b: 'cheers beers alcohol',\n emjK1f345: 'food vegetable fruit tomato',\n emjK1f346: 'eggplant food vegetable',\n emjK1f347: 'grapes fruit food',\n emjK1f348: 'melon honeydew food fruit',\n emjK1f349: 'watermelon melon food fruit',\n emjK1f34a: 'tangerine fruit food orange mandarin clementine slice slices',\n emjK1f34c: 'banana fruit food',\n emjK1f34d: 'pineapple fruit food',\n emjK1f351: 'peach peaches fruit food',\n emjK1f352: 'cherry cherries fruit food',\n emjK1f353: 'strawberries stawberry fruit food berry berries',\n emjK1f4ba: 'seat',\n emjK1f4bb: 'pc computer laptop tablet',\n emjK1f4bc: 'briefcase brief case',\n emjK1f4be: 'floppy disk diskette',\n emjK1f4bf: 'cd compact disc',\n emjK1f4c0: 'dvd',\n emjK1f4c1: 'file folder',\n emjK1f4c5: 'calendar',\n emjK1f4cb: 'clipboard',\n emjK1f4cc: 'pushpin',\n emjK1f4cd: 'drawing pin',\n emjK1f4ce: 'paperclip clippy',\n emjK1f4cf: 'ruler measure',\n emjK1f4d2: 'ledger',\n emjK1f4d3: 'notebook',\n emjK1f4da: 'book books',\n emjK1f4db: 'name badge',\n emjK02702: 'scissors cut',\n emjK02709: 'envelope mail',\n emjK0270f: 'pencil',\n emjK1f3e0: 'house home',\n emjK1f3e1: 'garden greenhouse',\n emjK1f3e2: 'office work',\n emjK1f3e6: 'bank',\n emjK1f3e7: 'atm',\n emjK1f3e8: 'hotel motel bed sleep',\n emjK1f3ea: 'convenience store',\n emjK1f3ec: 'department store shopping',\n emjK1f3ed: 'factory',\n emjK1f3f0: 'castle',\n emjK02668: 'hot springs',\n emjK02693: 'anchor',\n emjK026ea: 'church temple',\n emjK026f2: 'fountain',\n emjK026f3: 'golf',\n emjK026f5: 'sailboat sailing sail',\n emjK026fd: 'gas fuel gasoline pump',\n emjK1f6aa: 'door',\n emjK1f6ac: 'smoke smoking',\n emjK1f6ad: 'no smoking',\n emjK1f6b2: 'bike bicycle biking',\n emjK1f6b6: 'walking pedestrian',\n emjK1f6c0: 'bath bathing bathtub tub',\n emjK0267f: 'accessible accessibility wheelchair',\n emjK026a0: 'warning attention caution hazzard',\n emjK026a1: 'high voltage zap lightning',\n emjK1f680: 'rocket spaceship space',\n emjK1f68f: 'bus stop',\n emjK1f693: 'cop police',\n emjK1f695: 'taxi cab',\n emjK1f697: 'car vehicle automobile',\n emjK1f6a2: 'ship cruise ferry yacht cruise travel vacation',\n emjK02708: 'airplane flight airline plane travel vacation',\n emjK1f42d: 'mouse eek mice squeak',\n emjK1f42e: 'cow moo',\n emjK1f42f: 'tiger roar rawr',\n emjK1f430: 'rabbit bunny easter',\n emjK1f431: 'cat kitty kitten meow',\n emjK1f432: 'dragon roar smaug',\n emjK1f433: 'whale moby dick',\n emjK1f434: 'horse',\n emjK1f436: 'dog woof puppy bark doggy',\n emjK1f437: 'pig oink piggy piglet',\n emjK1f438: 'frog croak ribbit',\n emjK1f439: 'hamster guinea pig',\n emjK1f43a: 'wolf howl',\n emjK1f341: 'maple leaf',\n emjK1f344: 'mushroom shroom',\n emjK1f308: 'rainbow love',\n emjK02601: 'cloud gloomy cloudy',\n emjK02614: 'drops raining rain rainy raindrops umbrella',\n emjK02728: 'sparkles twinkle twinkling glitter shiny sparkly glittery',\n emjK1f4a9: 'poop turd shit',\n emjK1f4aa: 'strong work out muscles biceps',\n emjK02648: 'aries zodiac',\n emjK02649: 'taurus zodiac',\n emjK0264a: 'gemini zodiac',\n emjK0264b: 'cancer zodiac',\n emjK0264c: 'leo zodiac',\n emjK0264d: 'virgo zodiac',\n emjK0264e: 'libra zodiac',\n emjK0264f: 'scorpio zodiac',\n emjK02650: 'sagittarius zodiac',\n emjK02651: 'capricorn zodiac',\n emjK02652: 'aquarius zodiac',\n emjK02653: 'pisces zodiac',\n emjK1f411: 'bah sheep',\n emjK1f300: 'cyclone typhoon hurricane',\n emjK1f301: 'foggy',\n emjK1f302: 'umbrella',\n emjK1f304: 'sunrise',\n emjK1f305: 'sunrise',\n emjK1f306: 'dusk',\n emjK1f309: 'bridge night',\n emjK1f30a: 'wave tsunami',\n emjK1f30c: 'milky way night sky galaxy universe',\n emjK1f311: 'moon',\n emjK1f313: 'moon',\n emjK1f314: 'moon',\n emjK1f315: 'moon full',\n emjK1f319: 'moon crescent',\n emjK1f31b: 'moon',\n emjK1f330: 'chestnut',\n emjK1f331: 'seed seedling planting',\n emjK1f334: 'palm tree vacation',\n emjK1f335: 'cactus hot desert',\n emjK1f337: 'tulip flower',\n emjK1f338: 'cherry blossom sakura flower',\n emjK1f339: 'rose love romance flower',\n emjK1f33a: 'hibiscus flower',\n emjK1f33b: 'sunflower',\n emjK1f33c: 'blossom daisy flower',\n emjK1f33d: 'maize corn',\n emjK1f33e: 'rice',\n emjK1f33f: 'herb herbs',\n emjK1f342: 'leaf autumn',\n emjK1f343: 'leaf windy',\n emjK1f358: 'onigiri',\n emjK1f359: 'onigiri',\n emjK1f35b: 'curry katsu',\n emjK1f361: 'dango',\n emjK1f362: 'oden',\n emjK1f373: 'frying cooking',\n emjK1f3bd: 'exercise exercising',\n emjK1f417: 'boar',\n emjK1f418: 'elephant',\n emjK1f419: 'octopus',\n emjK1f41a: 'seashell shell',\n emjK1f41b: 'bug insect centipede millipede',\n emjK1f41c: 'ant ants insect bug',\n emjK1f41d: 'bee bees honeybee honeybees',\n emjK1f41e: 'ladybug ladybugs',\n emjK1f420: 'fish',\n emjK1f421: 'blowfish fish',\n emjK1f422: 'turtle',\n emjK1f423: 'chick easter',\n emjK1f425: 'chick easter',\n emjK1f40c: 'snail slow',\n emjK1f40d: 'snake',\n emjK1f40e: 'horse horsey pony',\n emjK1f412: 'monkey',\n emjK1f414: 'chicken bawk rooster',\n emjK1f429: 'poodle dog',\n emjK1f42b: 'camel desert',\n emjK1f426: 'bird',\n emjK1f427: 'penguin',\n emjK1f42c: 'dolphin',\n emjK1f43d: 'pig pig noise smelly',\n emjK1f43e: 'paw prints paws',\n emjK1f452: 'hat sunday best',\n emjK1f458: 'kimono',\n emjK1f45a: 'clothes',\n emjK1f481: 'information desk support desk',\n emjK1f482: 'guardsman',\n emjK1f499: 'heart',\n emjK1f49a: 'heart',\n emjK1f49b: 'heart',\n emjK1f49c: 'heart',\n emjK1f49d: 'heart love',\n emjK1f49e: 'heart',\n emjK1f49f: 'heart',\n emjK1f4a5: 'collision bang traffic accident crash',\n emjK1f4a3: 'bomb',\n emjK1f4a1: 'light bulb idea',\n emjK1f4a8: 'dash gotta go gotta run',\n emjK1f503: 'reload refresh loading',\n emjK1f50c: 'plug plugged in',\n emjK1f50b: 'battery charged',\n emjK1f50d: 'search searching',\n emjK1f510: 'secure secret',\n emjK1f50f: 'privacy',\n emjK1f511: 'key',\n emjK1f512: 'lock locked',\n emjK1f513: 'unlock unlocked',\n emjK1f516: 'bookmark',\n emjK1f514: 'bell alarm',\n emjK1f550: '1pm 1am early afternoon',\n emjK1f551: '2pm 2am afternoon',\n emjK1f552: '3pm 3am',\n emjK1f553: '4pm 4am',\n emjK1f554: '5pm 5am late afternoon',\n emjK1f555: '6pm 6am',\n emjK1f556: '7pm 7am dinnertime',\n emjK1f557: '8pm 8am morning',\n emjK1f558: '9pm 9am',\n emjK1f559: '10pm 10am bedtime',\n emjK1f55a: '11pm 11am nighttime',\n emjK1f55b: '12pm 12am midnight noon lunchtime',\n emjK1f5fd: 'statue liberty nyc new york city',\n emjK1f638: 'cat grin happy',\n emjK1f639: 'cat rofl lol tears laughter tears joy funny',\n emjK1f63a: 'cat smile',\n emjK1f63b: 'cat love',\n emjK1f63c: 'cat heh',\n emjK1f63d: 'cat kiss kisses',\n emjK1f63e: 'cat pout pouting sad',\n emjK1f63f: 'cat cry cries sad',\n emjK1f4e8: 'incoming message mail email letter',\n emjK1f4e9: 'mail email letter sending send',\n emjK1f4eb: 'mail',\n emjK1f4ea: 'empty mailbox',\n emjK1f6bb: 'restroom toilet washroom bathroom',\n emjK1f6a5: 'traffic traffic light',\n emjK1f6ab: 'no entry no admittance',\n emjK1f689: 'station',\n emjK1f69a: 'delivery truck',\n emjK026fa: 'tent camp camping',\n emjK1f6a8: 'police siren emergency',\n emjK1f17f: 'parking parking spot',\n emjK02733: 'star asterisk',\n emjK02734: 'star',\n emjK02b50: 'star',\n emjK1f4c8: 'chart graph record profits trending up upwards skyrocketed',\n emjK1f4c9: 'chart graph record losses trending down downwards',\n emjK1f4ca: 'chart graph',\n emjK02764: 'love heart',\n};\n\n/**\n * @internal\n * Emoji Family\n */\nexport const EmojiFamilyStrings = {\n People: 'People',\n Nature: 'Nature',\n Activities: 'Activities',\n Food: 'Food',\n Travel: 'Travel',\n Symbols: 'Symbols',\n Objects: 'Objects',\n};\n\n/**\n * @internal\n * Emoji Description Key\n */\nexport type EmojiDescriptionStringKey = keyof typeof EmojiDescriptionStrings;\n\n/**\n * @internal\n * Emoji Keyword Key\n */\nexport type EmojiKeywordStringKey = keyof typeof EmojiKeywordStrings;\n","import { getObjectKeys } from 'roosterjs-content-model-dom';\nimport type { Emoji } from '../type/Emoji';\n\nconst Common1 = createEmoji('1f60a', ':) :-)');\nconst common2 = createEmoji('1f609', ';) ;-)');\nconst common3 = createEmoji('02764', '<3');\nconst common4 = createEmoji('1f61e', ':( :-(');\nconst common5 = createEmoji('1f603', ':D :-D');\n\n/**\n * @internal\n */\nexport const MoreEmoji: Emoji = {\n key: 'more',\n description: 'emjDMore',\n codePoint: '',\n};\n\n/**\n * @internal\n */\nexport const CommonEmojis = [Common1, common2, common3, common4, common5, MoreEmoji];\n\n/**\n * @internal\n */\nexport type EmojiFamilyKeys =\n | 'People'\n | 'Nature'\n | 'Activities'\n | 'Food'\n | 'Travel'\n | 'Symbols'\n | 'Objects';\n\n/**\n * @internal\n * NOTE: name for an emoji should be in lower case\n */\nexport const EmojiList: Record<EmojiFamilyKeys, Emoji[]> = {\n People: [\n createEmoji('1f601'),\n createEmoji('1f602'),\n common5,\n createEmoji('1f604'),\n createEmoji('1f605'),\n createEmoji('1f606'),\n createEmoji('1f607'),\n common2,\n Common1,\n createEmoji('1f642'),\n createEmoji('1f60b'),\n createEmoji('1f60c'),\n createEmoji('1f60d'),\n createEmoji('1f618'),\n createEmoji('1f61a'),\n createEmoji('1f61c'),\n createEmoji('1f61d', ':p :P :-p :-P'),\n createEmoji('1f60e', 'B) B-)'),\n createEmoji('1f60f'),\n createEmoji('1f636'),\n createEmoji('1f610', ':| :-|'),\n createEmoji('1f612'),\n createEmoji('1f633'),\n common4,\n createEmoji('1f620'),\n createEmoji('1f621'),\n createEmoji('1f614'),\n createEmoji('1f623'),\n createEmoji('1f616'),\n createEmoji('1f62b'),\n createEmoji('1f629'),\n createEmoji('1f624'),\n createEmoji('1f631'),\n createEmoji('1f628'),\n createEmoji('1f630'),\n createEmoji('1f625'),\n createEmoji('1f622'),\n createEmoji('1f62a'),\n createEmoji('1f613'),\n createEmoji('1f62d'),\n createEmoji('1f635'),\n createEmoji('1f632', ':o :O :-o :-O'),\n createEmoji('1f637'),\n createEmoji('1f4a4'),\n createEmojiWithNoKeyword('1f608'),\n createEmoji('1f47f'),\n createEmojiWithNoKeyword('1f479'),\n createEmojiWithNoKeyword('1f47a'),\n createEmoji('1f480'),\n createEmoji('1f47b'),\n createEmoji('1f47d'),\n createEmoji('1f63a'),\n createEmoji('1f638'),\n createEmoji('1f639'),\n createEmoji('1f63b'),\n createEmoji('1f63c'),\n createEmoji('1f63d'),\n createEmojiWithNoKeyword('1f640'),\n createEmoji('1f63f'),\n createEmoji('1f63e'),\n createEmoji('1f64c'),\n createEmoji('1f44f'),\n createEmoji('1f44b'),\n createEmoji('1f44d'),\n createEmoji('1f44e'),\n createEmoji('1f44a'),\n createEmoji('0270a'),\n createEmoji('0270b'),\n createEmoji('0270c'),\n createEmoji('1f44c'),\n createEmojiWithNoKeyword('1f450'),\n createEmojiWithNoKeyword('1f596'),\n createEmoji('1f4aa'),\n createEmoji('1f64f'),\n createEmoji('1f446'),\n createEmoji('1f447'),\n createEmoji('1f448'),\n createEmoji('1f449'),\n createEmoji('1f485'),\n createEmoji('1f444'),\n createEmoji('1f445'),\n createEmoji('1f442'),\n createEmoji('1f443'),\n createEmoji('1f440'),\n createEmojiWithNoKeyword('1f464'),\n createEmoji('1f476'),\n createEmoji('1f466'),\n createEmoji('1f467'),\n createEmoji('1f468'),\n createEmoji('1f469'),\n createEmoji('1f471'),\n createEmoji('1f474'),\n createEmoji('1f475'),\n createEmojiWithNoKeyword('1f472'),\n createEmojiWithNoKeyword('1f473'),\n createEmoji('1f46e'),\n createEmoji('1f477'),\n createEmoji('1f482'),\n createEmoji('1f385'),\n createEmoji('1f47c'),\n createEmoji('1f478'),\n createEmoji('1f470'),\n createEmoji('1f6b6'),\n createEmoji('1f3c3'),\n createEmoji('1f483'),\n createEmoji('1f46f'),\n createEmoji('1f46b'),\n createEmojiWithNoKeyword('1f647'),\n createEmoji('1f481'),\n createEmoji('1f645'),\n createEmoji('1f646'),\n createEmoji('1f64b'),\n createEmoji('1f64e'),\n createEmoji('1f64d'),\n createEmoji('1f487'),\n createEmoji('1f486'),\n createEmoji('1f491'),\n createEmoji('1f48f'),\n createEmoji('1f46a'),\n createEmoji('1f45a'),\n createEmoji('1f455'),\n createEmoji('1f456'),\n createEmoji('1f454'),\n createEmoji('1f457'),\n createEmoji('1f459'),\n createEmoji('1f458'),\n createEmoji('1f484'),\n createEmoji('1f48b'),\n createEmoji('1f463'),\n createEmojiWithNoKeyword('1f460'),\n createEmoji('1f461'),\n createEmoji('1f462'),\n createEmoji('1f45e'),\n createEmoji('1f45f'),\n createEmoji('1f452'),\n createEmoji('1f3a9'),\n createEmoji('1f393'),\n createEmoji('1f451'),\n createEmoji('1f392'),\n createEmoji('1f45d'),\n createEmoji('1f45b'),\n createEmoji('1f45c'),\n createEmoji('1f4bc'),\n createEmoji('1f453'),\n createEmoji('1f48d'),\n createEmoji('1f302'),\n ],\n Nature: [\n createEmoji('1f436'),\n createEmoji('1f431'),\n createEmoji('1f42d'),\n createEmoji('1f439'),\n createEmoji('1f430'),\n createEmoji('1f43b'),\n createEmoji('1f43c'),\n createEmojiWithNoKeyword('1f428'),\n createEmoji('1f42f'),\n createEmoji('1f42e'),\n createEmoji('1f437'),\n createEmoji('1f43d'),\n createEmoji('1f438'),\n createEmoji('1f419'),\n createEmoji('1f435'),\n createEmoji('1f648'),\n createEmoji('1f649'),\n createEmoji('1f64a'),\n createEmoji('1f412'),\n createEmoji('1f427'),\n createEmoji('1f426'),\n createEmojiWithNoKeyword('1f424'),\n createEmoji('1f423'),\n createEmoji('1f425'),\n createEmoji('1f43a'),\n createEmoji('1f417'),\n createEmoji('1f434'),\n createEmoji('1f41d'),\n createEmoji('1f41b'),\n createEmoji('1f40c'),\n createEmoji('1f41e'),\n createEmoji('1f41c'),\n createEmoji('1f40d'),\n createEmoji('1f422'),\n createEmoji('1f420'),\n createEmoji('1f41f'),\n createEmoji('1f421'),\n createEmoji('1f42c'),\n createEmoji('1f433'),\n createEmoji('1f414'),\n createEmoji('1f42b'),\n createEmoji('1f418'),\n createEmoji('1f411'),\n createEmoji('1f40e'),\n createEmoji('1f429'),\n createEmoji('1f43e'),\n createEmoji('1f432'),\n createEmoji('1f335'),\n createEmoji('1f384'),\n createEmoji('1f334'),\n createEmoji('1f331'),\n createEmoji('1f33f'),\n createEmoji('1f340'),\n createEmojiWithNoKeyword('1f38d'),\n createEmojiWithNoKeyword('1f38b'),\n createEmoji('1f343'),\n createEmoji('1f342'),\n createEmoji('1f341'),\n createEmoji('1f33e'),\n createEmoji('1f33a'),\n createEmoji('1f33b'),\n createEmoji('1f339'),\n createEmoji('1f33c'),\n createEmoji('1f337'),\n createEmoji('1f338'),\n createEmoji('1f344'),\n createEmoji('1f490'),\n createEmoji('1f330'),\n createEmoji('1f383'),\n createEmoji('1f41a'),\n createEmojiWithNoKeyword('1f30f'),\n createEmoji('1f315'),\n createEmoji('1f311'),\n createEmoji('1f313'),\n createEmoji('1f314'),\n createEmoji('1f31b'),\n createEmoji('1f319'),\n createEmoji('02b50'),\n createEmoji('1f31f'),\n createEmojiWithNoKeyword('1f4ab'),\n createEmoji('02728'),\n createEmojiWithNoKeyword('02600'),\n createEmojiWithNoKeyword('026c5'),\n createEmoji('02601'),\n createEmoji('026a1'),\n createEmoji('1f525'),\n createEmoji('1f4a5'),\n createEmoji('02744'),\n createEmoji('026c4'),\n createEmoji('1f4a8'),\n createEmoji('02614'),\n createEmojiWithNoKeyword('1f4a7'),\n createEmojiWithNoKeyword('1f4a6'),\n createEmoji('1f30a'),\n ],\n Activities: [\n createEmoji('026bd'),\n createEmoji('1f3c0'),\n createEmoji('1f3c8'),\n createEmoji('026be'),\n createEmoji('1f3be'),\n createEmoji('1f3b1'),\n createEmoji('026f3'),\n createEmoji('1f3bf'),\n createEmoji('1f3c2'),\n createEmoji('1f3a3'),\n createEmoji('1f3ca'),\n createEmoji('1f3c4'),\n createEmoji('1f3c6'),\n createEmoji('1f3bd'),\n createEmoji('1f3ab'),\n createEmoji('1f3ad'),\n createEmoji('1f3a8'),\n createEmoji('1f3aa'),\n createEmoji('1f3a4'),\n createEmoji('1f3a7'),\n createEmoji('1f3bc'),\n createEmoji('1f3b9'),\n createEmoji('1f3b7'),\n createEmoji('1f3ba'),\n createEmoji('1f3b8'),\n createEmoji('1f3bb'),\n createEmoji('1f3ac'),\n createEmoji('1f3ae'),\n createEmoji('1f47e'),\n createEmoji('1f3af'),\n createEmoji('1f3b2'),\n createEmoji('1f3b0'),\n createEmoji('1f3b3'),\n ],\n Food: [\n createEmoji('1f34f'),\n createEmoji('1f34e'),\n createEmoji('1f34a'),\n createEmoji('1f34c'),\n createEmoji('1f349'),\n createEmoji('1f347'),\n createEmoji('1f353'),\n createEmoji('1f348'),\n createEmoji('1f352'),\n createEmoji('1f351'),\n createEmoji('1f34d'),\n createEmoji('1f345'),\n createEmoji('1f346'),\n createEmoji('1f33d'),\n createEmoji('1f360'),\n createEmoji('1f35e'),\n createEmoji('1f357'),\n createEmoji('1f356'),\n createEmoji('1f364'),\n createEmoji('1f373'),\n createEmoji('1f354'),\n createEmoji('1f35f'),\n createEmoji('1f355'),\n createEmoji('1f35d'),\n createEmoji('1f35c'),\n createEmoji('1f372'),\n createEmoji('1f365'),\n createEmoji('1f363'),\n createEmoji('1f371'),\n createEmoji('1f35b'),\n createEmoji('1f359'),\n createEmoji('1f35a'),\n createEmoji('1f358'),\n createEmoji('1f362'),\n createEmoji('1f361'),\n createEmojiWithNoKeyword('1f367'),\n createEmoji('1f368'),\n createEmoji('1f366'),\n createEmoji('1f370'),\n createEmoji('1f36f'),\n createEmoji('1f382'),\n createEmoji('1f36e'),\n createEmoji('1f36c'),\n createEmoji('1f36d'),\n createEmoji('1f36b'),\n createEmoji('1f369'),\n createEmoji('1f36a'),\n createEmoji('1f37a'),\n createEmoji('1f37b'),\n createEmoji('1f377'),\n createEmoji('1f378'),\n createEmoji('1f379'),\n createEmoji('1f376'),\n createEmoji('1f375'),\n createEmoji('02615'),\n createEmoji('1f374'),\n ],\n Travel: [\n createEmoji('1f697'),\n createEmoji('1f695'),\n createEmoji('1f687'),\n createEmojiWithNoKeyword('1f699'),\n createEmoji('1f68c'),\n createEmoji('1f693'),\n createEmoji('1f69a'),\n createEmojiWithNoKeyword('1f691'),\n createEmoji('1f692'),\n createEmoji('1f6b2'),\n createEmoji('1f6a8'),\n createEmoji('1f683'),\n createEmoji('1f684'),\n createEmojiWithNoKeyword('1f685'),\n createEmoji('1f689'),\n createEmoji('02708'),\n createEmoji('026f5'),\n createEmojiWithNoKeyword('1f6a4'),\n createEmoji('1f680'),\n createEmoji('1f4ba'),\n createEmoji('02693'),\n createEmoji('1f6a7'),\n createEmoji('026fd'),\n createEmoji('1f68f'),\n createEmoji('1f6a5'),\n createEmoji('1f3c1'),\n createEmoji('1f6a2'),\n createEmoji('1f3a1'),\n createEmoji('1f3a2'),\n createEmoji('1f3a0'),\n createEmoji('1f301'),\n createEmojiWithNoKeyword('1f5fc'),\n createEmoji('1f3ed'),\n createEmoji('026f2'),\n createEmojiWithNoKeyword('1f391'),\n createEmojiWithNoKeyword('1f5fb'),\n createEmojiWithNoKeyword('1f30b'),\n createEmojiWithNoKeyword('1f5fe'),\n createEmoji('1f305'),\n createEmoji('1f304'),\n createEmoji('1f307'),\n createEmoji('1f306'),\n createEmoji('1f303'),\n createEmoji('1f309'),\n createEmoji('1f30c'),\n createEmoji('1f387'),\n createEmoji('1f386'),\n createEmoji('1f308'),\n createEmoji('1f3f0'),\n createEmojiWithNoKeyword('1f3ef'),\n createEmoji('1f5fd'),\n createEmoji('1f3e0'),\n createEmoji('1f3e1'),\n createEmoji('1f3e2'),\n createEmoji('1f3ec'),\n createEmoji('026fa'),\n createEmojiWithNoKeyword('1f3e3'),\n createEmojiWithNoKeyword('1f3e5'),\n createEmoji('1f3e6'),\n createEmoji('1f3e8'),\n createEmoji('1f3ea'),\n createEmoji('1f3eb'),\n createEmojiWithNoKeyword('1f3e9'),\n createEmoji('1f492'),\n createEmoji('026ea'),\n createEmoji('1f320'),\n ],\n Symbols: [\n common3,\n createEmoji('1f49b'),\n createEmoji('1f49a'),\n createEmoji('1f499'),\n createEmoji('1f494'),\n createEmoji('1f49c'),\n createEmoji('1f495'),\n createEmoji('1f493'),\n createEmoji('1f49e'),\n createEmoji('1f497'),\n createEmoji('1f498'),\n createEmoji('1f496'),\n createEmoji('1f49d'),\n createEmoji('1f49f'),\n createEmojiWithNoKeyword('1f52f'),\n createEmojiWithNoKeyword('026ce'),\n createEmoji('02648'),\n createEmoji('02649'),\n createEmoji('0264a'),\n createEmoji('0264b'),\n createEmoji('0264c'),\n createEmoji('0264d'),\n createEmoji('0264e'),\n createEmoji('0264f'),\n createEmoji('02650'),\n createEmoji('02651'),\n createEmoji('02652'),\n createEmoji('02653'),\n createEmojiWithNoKeyword('1f194'),\n createEmojiWithNoKeyword('1f4f4'),\n createEmojiWithNoKeyword('1f4f3'),\n createEmojiWithNoKeyword('1f19a'),\n createEmojiWithNoKeyword('1f4ae'),\n createEmojiWithNoKeyword('1f18e'),\n createEmojiWithNoKeyword('1f191'),\n createEmojiWithNoKeyword('1f198'),\n createEmojiWithNoKeyword('026d4'),\n createEmoji('1f4db'),\n createEmoji('1f6ab'),\n createEmojiWithNoKeyword('0274c'),\n createEmojiWithNoKeyword('02b55'),\n createEmojiWithNoKeyword('1f4a2'),\n createEmoji('02668'),\n createEmojiWithNoKeyword('1f51e'),\n createEmojiWithNoKeyword('02757'),\n createEmojiWithNoKeyword('02755'),\n createEmojiWithNoKeyword('02753'),\n createEmojiWithNoKeyword('02754'),\n createEmojiWithNoKeyword('02049'),\n createEmojiWithNoKeyword('1f4af'),\n createEmoji('1f531'),\n createEmojiWithNoKeyword('0303d'),\n createEmoji('026a0'),\n createEmojiWithNoKeyword('1f530'),\n createEmojiWithNoKeyword('1f22f'),\n createEmojiWithNoKeyword('1f4b9'),\n createEmoji('02733'),\n createEmojiWithNoKeyword('0274e'),\n createEmojiWithNoKeyword('02705'),\n createEmojiWithNoKeyword('1f4a0'),\n createEmoji('1f300'),\n createEmoji('1f3e7'),\n createEmoji('0267f'),\n createEmoji('1f6ad'),\n createEmojiWithNoKeyword('1f6be'),\n createEmoji('02734'),\n createEmoji('1f17f'),\n createEmoji('1f6b9'),\n createEmoji('1f6ba'),\n createEmojiWithNoKeyword('1f6bc'),\n createEmoji('1f6bb'),\n createEmoji('1f3a6'),\n createEmoji('1f4f6'),\n createEmojiWithNoKeyword('1f201'),\n createEmojiWithNoKeyword('1f196'),\n createEmojiWithNoKeyword('0267b'),\n createEmojiWithNoKeyword('1f197'),\n createEmojiWithNoKeyword('1f192'),\n createEmoji('02747'),\n createEmojiWithNoKeyword('1f195'),\n createEmojiWithNoKeyword('1f193'),\n createEmojiWithNoKeyword('1f51f'),\n createEmojiWithNoKeyword('1f522'),\n createEmojiWithNoKeyword('023ea'),\n createEmojiWithNoKeyword('023e9'),\n createEmojiWithNoKeyword('1f53c'),\n createEmojiWithNoKeyword('1f53d'),\n createEmojiWithNoKeyword('023eb'),\n createEmojiWithNoKeyword('023ec'),\n createEmojiWithNoKeyword('1f199'),\n createEmojiWithNoKeyword('02139'),\n createEmojiWithNoKeyword('1f524'),\n createEmojiWithNoKeyword('1f521'),\n createEmojiWithNoKeyword('1f520'),\n createEmojiWithNoKeyword('1f523'),\n createEmoji('1f3b5'),\n createEmoji('1f3b6'),\n createEmojiWithNoKeyword('03030'),\n createEmojiWithNoKeyword('027bf'),\n createEmojiWithNoKeyword('02714'),\n createEmoji('1f503'),\n createEmojiWithNoKeyword('02795'),\n createEmojiWithNoKeyword('02796'),\n createEmojiWithNoKeyword('02797'),\n createEmojiWithNoKeyword('02716'),\n createEmojiWithNoKeyword('027b0'),\n createEmojiWithNoKeyword('1f4b2'),\n createEmojiWithNoKeyword('1f4b1'),\n createEmojiWithNoKeyword('1f51a'),\n createEmojiWithNoKeyword('1f519'),\n createEmojiWithNoKeyword('1f51b'),\n createEmojiWithNoKeyword('1f51d'),\n createEmojiWithNoKeyword('1f51c'),\n createEmojiWithNoKeyword('02611'),\n createEmojiWithNoKeyword('1f518'),\n createEmojiWithNoKeyword('026ab'),\n createEmojiWithNoKeyword('1f534'),\n createEmojiWithNoKeyword('1f535'),\n createEmojiWithNoKeyword('1f539'),\n createEmojiWithNoKeyword('1f538'),\n createEmojiWithNoKeyword('1f536'),\n createEmojiWithNoKeyword('1f537'),\n createEmojiWithNoKeyword('1f53a'),\n createEmojiWithNoKeyword('1f53b'),\n createEmojiWithNoKeyword('02b1b'),\n createEmojiWithNoKeyword('02b1c'),\n createEmojiWithNoKeyword('1f532'),\n createEmojiWithNoKeyword('1f533'),\n createEmojiWithNoKeyword('1f50a'),\n createEmoji('1f4e3'),\n createEmojiWithNoKeyword('1f4e2'),\n createEmoji('1f514'),\n createEmojiWithNoKeyword('1f004'),\n createEmoji('1f0cf'),\n createEmojiWithNoKeyword('1f3b4'),\n createEmojiWithNoKeyword('1f4ac'),\n createEmoji('1f550'),\n createEmoji('1f551'),\n createEmoji('1f552'),\n createEmoji('1f553'),\n createEmoji('1f554'),\n createEmoji('1f555'),\n createEmoji('1f556'),\n createEmoji('1f557'),\n createEmoji('1f558'),\n createEmoji('1f559'),\n createEmoji('1f55a'),\n createEmoji('1f55b'),\n createEmojiWithNoKeyword('1f236'),\n createEmojiWithNoKeyword('1f250'),\n createEmojiWithNoKeyword('1f239'),\n createEmojiWithNoKeyword('1f21a'),\n createEmojiWithNoKeyword('1f232'),\n createEmojiWithNoKeyword('1f251'),\n createEmojiWithNoKeyword('1f234'),\n createEmojiWithNoKeyword('1f233'),\n createEmojiWithNoKeyword('1f23a'),\n createEmojiWithNoKeyword('1f235'),\n ],\n Objects: [\n createEmojiWithNoKeyword('0231a'),\n createEmoji('1f4f1'),\n createEmojiWithNoKeyword('1f4f2'),\n createEmoji('1f4bb'),\n createEmojiWithNoKeyword('1f4bd'),\n createEmoji('1f4be'),\n createEmoji('1f4bf'),\n createEmoji('1f4c0'),\n createEmoji('1f4fc'),\n createEmoji('1f4f7'),\n createEmoji('1f4f9'),\n createEmoji('1f3a5'),\n createEmoji('1f4de'),\n createEmojiWithNoKeyword('0260e'),\n createEmoji('1f4df'),\n createEmoji('1f4e0'),\n createEmoji('1f4fa'),\n createEmoji('1f4fb'),\n createEmojiWithNoKeyword('023f0'),\n createEmojiWithNoKeyword('0231b'),\n createEmojiWithNoKeyword('023f3'),\n createEmoji('1f4e1'),\n createEmoji('1f50b'),\n createEmoji('1f50c'),\n createEmoji('1f4a1'),\n createEmoji('1f526'),\n createEmojiWithNoKeyword('1f4b8'),\n createEmoji('1f4b5'),\n createEmoji('1f4b4'),\n createEmoji('1f4b0'),\n createEmoji('1f4b3'),\n createEmoji('1f48e'),\n createEmoji('1f527'),\n createEmoji('1f528'),\n createEmoji('1f529'),\n createEmojiWithNoKeyword('1f52b'),\n createEmoji('1f4a3'),\n createEmoji('1f52a'),\n createEmoji('1f6ac'),\n createEmoji('1f52e'),\n createEmoji('1f488'),\n createEmoji('1f48a'),\n createEmoji('1f489'),\n createEmoji('1f516'),\n createEmoji('1f6bd'),\n createEmoji('1f6c0'),\n createEmoji('1f511'),\n createEmoji('1f6aa'),\n createEmojiWithNoKeyword('1f5ff'),\n createEmoji('1f388'),\n createEmojiWithNoKeyword('1f38f'),\n createEmoji('1f380'),\n createEmoji('1f381'),\n createEmoji('1f38a'),\n createEmoji('1f389'),\n createEmojiWithNoKeyword('1f38e'),\n createEmoji('1f390'),\n createEmojiWithNoKeyword('1f38c'),\n createEmojiWithNoKeyword('1f3ee'),\n createEmoji('02709'),\n createEmoji('1f4e9'),\n createEmoji('1f4e8'),\n createEmoji('1f48c'),\n createEmoji('1f4e7'),\n createEmoji('1f4ee'),\n createEmoji('1f4ea'),\n createEmoji('1f4eb'),\n createEmoji('1f4e6'),\n createEmojiWithNoKeyword('1f4e5'),\n createEmojiWithNoKeyword('1f4e4'),\n createEmojiWithNoKeyword('1f4dc'),\n createEmojiWithNoKeyword('1f4c3'),\n createEmojiWithNoKeyword('1f4d1'),\n createEmoji('1f4ca'),\n createEmoji('1f4c8'),\n createEmoji('1f4c9'),\n createEmojiWithNoKeyword('1f4c4'),\n createEmoji('1f4c5'),\n createEmojiWithNoKeyword('1f4c6'),\n createEmojiWithNoKeyword('1f4c7'),\n createEmoji('1f4cb'),\n createEmoji('1f4c1'),\n createEmojiWithNoKeyword('1f4c2'),\n createEmoji('1f4f0'),\n createEmoji('1f4d3'),\n createEmojiWithNoKeyword('1f4d5'),\n createEmojiWithNoKeyword('1f4d7'),\n createEmojiWithNoKeyword('1f4d8'),\n createEmojiWithNoKeyword('1f4d9'),\n createEmojiWithNoKeyword('1f4d4'),\n createEmoji('1f4d2'),\n createEmoji('1f4da'),\n createEmojiWithNoKeyword('1f4d6'),\n createEmojiWithNoKeyword('1f517'),\n createEmoji('1f4ce'),\n createEmoji('02702'),\n createEmojiWithNoKeyword('1f4d0'),\n createEmoji('1f4cf'),\n createEmoji('1f4cc'),\n createEmoji('1f4cd'),\n createEmojiWithNoKeyword('1f6a9'),\n createEmoji('1f510'),\n createEmoji('1f512'),\n createEmoji('1f513'),\n createEmoji('1f50f'),\n createEmojiWithNoKeyword('02712'),\n createEmoji('1f4dd'),\n createEmoji('0270f'),\n createEmoji('1f50d'),\n createEmojiWithNoKeyword('1f50e'),\n ],\n};\n\n/**\n * @internal\n */\nexport const EmojiFabricIconCharacterMap: Record<EmojiFamilyKeys, string> = {\n Activities: 'Soccer',\n Food: 'EatDrink',\n Nature: 'FangBody',\n Objects: 'Lightbulb',\n People: 'Emoji2',\n Symbols: 'Heart',\n Travel: 'Car',\n};\n\n/**\n * @internal\n */\nexport function forEachEmojiFamily(\n callback: (emojis: Emoji[], family: EmojiFamilyKeys) => boolean\n): void {\n const families = getObjectKeys(EmojiList);\n for (const family of families) {\n if (!callback(EmojiList[family], family)) {\n break;\n }\n }\n}\n\n/**\n * @internal\n */\nexport function forEachEmoji(callback: (emoji: Emoji) => boolean): void {\n forEachEmojiFamily(emojis => {\n for (const emoji of emojis) {\n if (!callback(emoji)) {\n return false;\n }\n }\n return true;\n });\n}\n\n// get emoji code point from an emoji key\nfunction getEmojiCodePoint(key: string): string | null {\n const unicode = parseInt(key, 16);\n if (isNaN(unicode)) {\n return null;\n }\n\n // All emojis have codepoints between the following ranges:\n // 0x1F7000 - 0x1F700 -> has surrogate pairs\n // 0x00023 - 0x04000 -> does not have surrogate pairs\n let surrogatePairs: number[];\n if (unicode >= 0x1f000 && unicode <= 0x1f700) {\n const hi = Math.floor((unicode - 0x10000) / 0x400) + 0xd800;\n const lo = ((unicode - 0x10000) % 0x400) + 0xdc00;\n surrogatePairs = [hi, lo];\n } else if (unicode >= 0x00023 && unicode <= 0x04000) {\n surrogatePairs = [unicode];\n }\n\n return String.fromCharCode(...surrogatePairs!);\n}\n\nfunction createEmoji(key: string, shortcut?: string): Emoji {\n return {\n key,\n description: `emjD${key}`,\n keywords: `emjK${key}`,\n shortcut,\n codePoint: getEmojiCodePoint(key) ?? undefined,\n };\n}\n\nfunction createEmojiWithNoKeyword(key: string): Emoji {\n return { key, description: `emjD${key}`, codePoint: getEmojiCodePoint(key) ?? undefined };\n}\n","import { forEachEmoji } from './emojiList';\nimport type { Emoji } from '../type/Emoji';\n\n/**\n * @internal\n */\nexport function searchEmojis(search: string, strings: Record<string, string>): Emoji[] {\n const shortcutMatch = matchShortcut(search);\n search = search.toLowerCase();\n const fullMatch: Emoji[] = shortcutMatch ? [shortcutMatch] : [];\n const partialMatch: Emoji[] = [];\n const partialSearch = ' ' + (search[0] == ':' ? search.substr(1) : search);\n forEachEmoji(emoji => {\n const keywords = (emoji.keywords && strings[emoji.keywords]) || '';\n const searchableKeywords = emoji.keywords ? ' ' + keywords.toLowerCase() + ' ' : '';\n const index = searchableKeywords.indexOf(partialSearch);\n if (index >= 0) {\n (searchableKeywords[index + partialSearch.length] == ' '\n ? fullMatch\n : partialMatch\n ).push(emoji);\n }\n return true;\n });\n\n return fullMatch.concat(partialMatch);\n}\n\nfunction matchShortcut(search: string): Emoji | null {\n let result: Emoji | null = null;\n search = ' ' + search + ' ';\n forEachEmoji((emoji: Emoji) => {\n if (emoji.shortcut && (' ' + emoji.shortcut + ' ').indexOf(search) >= 0) {\n result = emoji;\n return false;\n }\n return true;\n });\n return result;\n}\n","export * from './common/index';\nexport * from './rooster/index';\nexport * from './ribbon/index';\nexport * from './contextMenu/index';\nexport * from './pasteOptions/index';\nexport * from './colorPicker/index';\nexport * from './emoji/index';\nexport * from './inputDialog/index';\n","import * as React from 'react';\nimport { DefaultButton, PrimaryButton } from '@fluentui/react/lib/Button';\nimport { Dialog, DialogFooter, DialogType } from '@fluentui/react/lib/Dialog';\nimport { getLocalizedString } from '../../common/index';\nimport { getObjectKeys } from 'roosterjs-content-model-dom';\nimport { InputDialogItem } from './InputDialogItem';\nimport type { IDialogContentProps } from '@fluentui/react/lib/Dialog';\nimport type { DialogItem } from '../type/DialogItem';\nimport type {\n CancelButtonStringKey,\n LocalizedStrings,\n OkButtonStringKey,\n} from '../../common/index';\n\n/**\n * @internal\n */\nexport interface InputDialogProps<Strings extends string, ItemNames extends string> {\n dialogTitleKey: Strings;\n unlocalizedTitle: string;\n items: Record<ItemNames, DialogItem<Strings>>;\n strings?: LocalizedStrings<Strings | OkButtonStringKey | CancelButtonStringKey>;\n onChange?: (\n changedItemName: ItemNames,\n newValue: string,\n currentValues: Record<ItemNames, string>\n ) => Record<ItemNames, string> | null;\n onOk: (values: Record<ItemNames, string>) => void;\n onCancel: () => void;\n rows?: number;\n}\n\n/**\n * @internal\n */\nexport function InputDialog<Strings extends string, ItemNames extends string>(\n props: InputDialogProps<Strings, ItemNames>\n) {\n const {\n items,\n strings,\n dialogTitleKey,\n unlocalizedTitle,\n onOk,\n onCancel,\n onChange,\n rows,\n } = props;\n const dialogContentProps: IDialogContentProps = React.useMemo(\n () => ({\n type: DialogType.normal,\n title: getLocalizedString(strings, dialogTitleKey, unlocalizedTitle),\n styles: {\n innerContent: {\n height: rows ? '200px' : undefined,\n },\n },\n }),\n [strings, dialogTitleKey, unlocalizedTitle]\n );\n const [currentValues, setCurrentValues] = React.useState<Record<ItemNames, string>>(\n getObjectKeys(items).reduce((result: Record<ItemNames, string>, key) => {\n result[key] = items[key].initValue;\n return result;\n }, {} as Record<ItemNames, string>)\n );\n\n const onSubmit = React.useCallback(() => {\n onOk?.(currentValues);\n }, [onOk, currentValues]);\n const onItemChanged = React.useCallback(\n (itemName: ItemNames, newValue: string) => {\n if (itemName in items) {\n const newValues = onChange?.(itemName, newValue, {\n ...currentValues,\n }) || {\n ...currentValues,\n [itemName]: newValue,\n };\n\n setCurrentValues(newValues);\n }\n },\n [setCurrentValues, currentValues, items]\n );\n\n return (\n <Dialog dialogContentProps={dialogContentProps} hidden={false} onDismiss={onCancel}>\n <div>\n {getObjectKeys(items).map(key => (\n <InputDialogItem\n key={key}\n itemName={key}\n items={items}\n strings={strings}\n currentValues={currentValues}\n onEnterKey={onSubmit}\n onChanged={onItemChanged}\n rows={rows}\n />\n ))}\n </div>\n <DialogFooter>\n <PrimaryButton\n text={getLocalizedString(strings, 'buttonNameOK', 'OK')}\n onClick={onSubmit}\n />\n <DefaultButton\n text={getLocalizedString(strings, 'buttonNameCancel', 'Cancel')}\n onClick={onCancel}\n />\n </DialogFooter>\n </Dialog>\n );\n}\n","import * as React from 'react';\nimport { getLocalizedString } from '../../common/index';\nimport { mergeStyleSets } from '@fluentui/react/lib/Styling';\nimport { TextField } from '@fluentui/react/lib/TextField';\nimport type { DialogItem } from '../type/DialogItem';\nimport type { LocalizedStrings } from '../../common/index';\n\n/**\n * @internal\n */\nexport interface InputDialogItemProps<Strings extends string, ItemNames extends string> {\n itemName: ItemNames;\n strings: LocalizedStrings<Strings> | undefined;\n items: Record<ItemNames, DialogItem<Strings>>;\n currentValues: Record<ItemNames, string>;\n onEnterKey: () => void;\n onChanged: (itemName: ItemNames, newValue: string) => void;\n rows?: number;\n}\n\nconst classNames = mergeStyleSets({\n inputBox: {\n width: '100%',\n minWidth: '250px',\n height: '32px',\n margin: '5px 0 16px',\n borderRadius: '2px',\n },\n});\n\n/**\n * @internal\n */\nexport function InputDialogItem<Strings extends string, ItemNames extends string>(\n props: InputDialogItemProps<Strings, ItemNames>\n) {\n const { itemName, strings, items, currentValues, onChanged, onEnterKey, rows } = props;\n const { labelKey, unlocalizedLabel, autoFocus } = items[itemName];\n const value = currentValues[itemName];\n const onValueChange = React.useCallback(\n (_, newValue) => {\n onChanged(itemName, newValue);\n },\n [itemName, onChanged]\n );\n\n const onKeyPress = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key == 'Enter') {\n onEnterKey();\n }\n },\n [onEnterKey]\n );\n\n return (\n <div>\n {labelKey ? <div>{getLocalizedString(strings, labelKey, unlocalizedLabel)}</div> : null}\n <div>\n <TextField\n role=\"textbox\"\n type=\"text\"\n className={classNames.inputBox}\n value={value}\n onChange={onValueChange}\n onKeyPress={onKeyPress}\n autoFocus={autoFocus}\n rows={rows}\n multiline={!!rows}\n />\n </div>\n </div>\n );\n}\n","export { showInputDialog } from './utils/showInputDialog';\nexport { DialogItem } from './type/DialogItem';\n","import * as React from 'react';\nimport { InputDialog } from '../component/InputDialog';\nimport { renderReactComponent } from '../../common/utils/renderReactComponent';\nimport type { DialogItem } from '../type/DialogItem';\nimport type {\n CancelButtonStringKey,\n LocalizedStrings,\n OkButtonStringKey,\n UIUtilities,\n} from '../../common/index';\n\n/**\n * Show a dialog with input items\n * @param uiUtilities UI utilities to help render the dialog\n * @param dialogTitleKey Localized string key for title of this dialog\n * @param unlocalizedTitle Unlocalized title string of this dialog. It will be used if a valid localized string is not found using dialogTitleKey\n * @param items Input items in this dialog\n * @param strings Localized strings\n * @param onChange An optional callback that will be invoked when input item value is changed\n */\nexport function showInputDialog<Strings extends string, ItemNames extends string>(\n uiUtilities: UIUtilities,\n dialogTitleKey: Strings,\n unlocalizedTitle: string,\n items: Record<ItemNames, DialogItem<Strings>>,\n strings?: LocalizedStrings<Strings | OkButtonStringKey | CancelButtonStringKey>,\n onChange?: (\n changedItemName: ItemNames,\n newValue: string,\n currentValues: Record<ItemNames, string>\n ) => Record<ItemNames, string> | null,\n rows?: number\n): Promise<Record<ItemNames, string> | null> {\n return new Promise<Record<ItemNames, string> | null>(resolve => {\n let disposer: null | (() => void) = null;\n const onOk = (result: Record<ItemNames, string>) => {\n disposer?.();\n resolve(result);\n };\n const onCancel = () => {\n disposer?.();\n resolve(null);\n };\n const component = (\n <InputDialog\n dialogTitleKey={dialogTitleKey}\n unlocalizedTitle={unlocalizedTitle}\n items={items}\n strings={strings}\n onOk={onOk}\n onCancel={onCancel}\n onChange={onChange}\n rows={rows}\n />\n );\n\n disposer = renderReactComponent(uiUtilities, component);\n });\n}\n","import * as React from 'react';\nimport { ButtonKeys, Buttons } from '../utils/buttons';\nimport { Callout, DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { getDOMInsertPointRect, getObjectKeys } from 'roosterjs-content-model-dom';\nimport { getLocalizedString } from '../../common/index';\nimport { Icon } from '@fluentui/react/lib/Icon';\nimport { IconButton } from '@fluentui/react/lib/Button';\nimport { memoizeFunction } from '@fluentui/react/lib/Utilities';\nimport { mergeStyleSets } from '@fluentui/react/lib/Styling';\nimport { renderReactComponent } from '../../common/utils/renderReactComponent';\nimport { useTheme } from '@fluentui/react/lib/Theme';\nimport { useWindow } from '@fluentui/react/lib/WindowProvider';\nimport type { LocalizedStrings, UIUtilities } from '../../common/index';\nimport type { Theme } from '@fluentui/react/lib/Theme';\nimport type { PasteOptionButtonKeys, PasteOptionStringKeys } from '../type/PasteOptionStringKeys';\n\nconst getPasteOptionClassNames = memoizeFunction((theme: Theme) => {\n const palette = theme.palette;\n\n return mergeStyleSets({\n pastePane: {\n paddingLeft: '4px',\n minWidth: '72px',\n },\n optionPane: {\n textAlign: 'center',\n padding: '4px',\n },\n icon: {\n fontSize: '14px',\n },\n buttonsContainer: {\n justifyContent: 'center',\n display: 'flex',\n },\n button: {\n width: '32px',\n height: '32px',\n margin: '0 4px 4px 0',\n borderRadius: '2px',\n flex: '0 0 auto',\n '&:hover': {\n backgroundColor: palette.themeLighter,\n },\n },\n isChecked: {\n backgroundColor: palette.themeLight,\n '&:hover': {\n backgroundColor: palette.themeLighter,\n },\n },\n });\n});\n\ninterface PasteOptionButtonProps {\n buttonName: PasteOptionButtonKeys;\n className: string;\n paste: (key: PasteOptionButtonKeys) => void;\n strings?: LocalizedStrings<PasteOptionStringKeys>;\n}\n\nfunction PasteOptionButton(props: PasteOptionButtonProps) {\n const { buttonName, paste, strings, className } = props;\n const button = Buttons[buttonName];\n const onClick = React.useCallback(() => {\n paste(buttonName);\n }, [paste, buttonName]);\n\n return (\n <IconButton\n className={className}\n onClick={onClick}\n title={\n getLocalizedString(strings, buttonName, button.unlocalizedText) +\n (button.shortcut ? ` (${button.shortcut})` : '')\n }\n iconProps={{ iconName: button.icon }}\n />\n );\n}\n\ninterface PasteOptionProps {\n strings?: LocalizedStrings<PasteOptionStringKeys>;\n container: Node;\n offset: number;\n isRtl: boolean;\n paste: (key: PasteOptionButtonKeys) => void;\n dismiss: () => void;\n}\n\n/**\n * @internal\n */\nexport interface PasteOptionPane {\n getSelectedKey: () => PasteOptionButtonKeys | null;\n setSelectedKey: (index: PasteOptionButtonKeys) => void;\n dismiss: () => void;\n}\n\nconst PasteOptionComponent = React.forwardRef(function PasteOptionFunc(\n props: PasteOptionProps,\n ref: React.Ref<PasteOptionPane>\n) {\n const { strings, container, offset, paste, dismiss, isRtl } = props;\n const theme = useTheme();\n const classNames = getPasteOptionClassNames(theme);\n const [selectedKey, setSelectedKey] = React.useState<PasteOptionButtonKeys | null>(null);\n\n const rect = getDOMInsertPointRect((useWindow() ?? window).document, {\n node: container,\n offset,\n });\n const target = rect && { x: props.isRtl ? rect.left : rect.right, y: rect.bottom };\n\n React.useImperativeHandle(\n ref,\n () => ({\n dismiss,\n setSelectedKey,\n getSelectedKey: () => selectedKey,\n }),\n [dismiss, paste, isRtl, selectedKey, setSelectedKey]\n );\n\n const buttonPane = React.useRef<HTMLDivElement>(null);\n const onDismiss = React.useCallback(\n (evt?: Event | React.MouseEvent | React.KeyboardEvent) => {\n const target =\n evt instanceof FocusEvent && evt.relatedTarget instanceof Node\n ? evt.relatedTarget\n : null;\n const clickOnButtonPane =\n target &&\n buttonPane.current &&\n (buttonPane.current == target || buttonPane.current.contains(target));\n if (!clickOnButtonPane) {\n dismiss();\n }\n },\n [dismiss]\n );\n\n const onClickShowSubMenu = React.useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n setSelectedKey(ButtonKeys[0]);\n event.preventDefault();\n event.stopPropagation();\n },\n [setSelectedKey]\n );\n\n return (\n <Callout\n gapSpace={10}\n isBeakVisible={false}\n target={target}\n directionalHint={\n isRtl ? DirectionalHint.bottomRightEdge : DirectionalHint.bottomLeftEdge\n }\n directionalHintForRTL={DirectionalHint.bottomRightEdge}\n preventDismissOnScroll={true}\n onDismiss={onDismiss}>\n <div ref={buttonPane} className={classNames.pastePane}>\n <div onClick={onClickShowSubMenu} className={classNames.optionPane}>\n <Icon iconName={'Paste'} className={classNames.icon} />\n {getLocalizedString(strings, 'pasteOptionPaneText', '(Ctrl)')}\n </div>\n {selectedKey && (\n <div className={classNames.buttonsContainer}>\n {getObjectKeys(Buttons).map(key => (\n <PasteOptionButton\n key={key}\n strings={strings}\n paste={paste}\n buttonName={key}\n className={\n classNames.button +\n ' ' +\n (selectedKey == key ? classNames.isChecked : '')\n }\n />\n ))}\n </div>\n )}\n </div>\n </Callout>\n );\n});\n\n/**\n * @internal Show paste open pane component\n * @param uiUtilities The UI utilities object to help render component\n * @param position Target position\n * @param strings Localize string for this component\n * @param onPaste A callback to be called when user click on a paste button\n * @param ref Reference object for this component\n */\nexport function showPasteOptionPane(\n uiUtilities: UIUtilities,\n container: Node,\n offset: number,\n onPaste: (key: PasteOptionButtonKeys) => void,\n ref: React.RefObject<PasteOptionPane>,\n strings?: LocalizedStrings<PasteOptionStringKeys>\n) {\n let disposer: (() => void) | null = null;\n const onDismiss = () => {\n disposer?.();\n disposer = null;\n };\n\n disposer = renderReactComponent(\n uiUtilities,\n <PasteOptionComponent\n ref={ref}\n container={container}\n offset={offset}\n strings={strings}\n isRtl={uiUtilities.isRightToLeft()}\n dismiss={onDismiss}\n paste={onPaste}\n />\n );\n}\n","export { PasteOptionButtonKeys, PasteOptionStringKeys } from './type/PasteOptionStringKeys';\nexport { createPasteOptionPlugin } from './plugin/createPasteOptionPlugin';\n","import * as React from 'react';\nimport { ButtonKeys, Buttons } from '../utils/buttons';\nimport { ChangeSource } from 'roosterjs-content-model-dom';\nimport { paste } from 'roosterjs-content-model-core';\nimport { showPasteOptionPane } from '../component/showPasteOptionPane';\nimport type { ClipboardData, IEditor, PluginEvent } from 'roosterjs-content-model-types';\nimport type { PasteOptionPane } from '../component/showPasteOptionPane';\nimport type { LocalizedStrings, ReactEditorPlugin, UIUtilities } from '../../common/index';\nimport type { PasteOptionButtonKeys, PasteOptionStringKeys } from '../type/PasteOptionStringKeys';\n\nclass PasteOptionPlugin implements ReactEditorPlugin {\n private clipboardData: ClipboardData | null = null;\n private editor: IEditor | null = null;\n private uiUtilities: UIUtilities | null = null;\n private pasteOptionRef = React.createRef<PasteOptionPane>();\n\n constructor(private strings?: LocalizedStrings<PasteOptionStringKeys>) {}\n\n getName() {\n return 'PasteOption';\n }\n\n initialize(editor: IEditor) {\n this.editor = editor;\n }\n\n dispose() {\n this.pasteOptionRef.current?.dismiss();\n this.editor = null;\n }\n\n onPluginEvent(event: PluginEvent) {\n if (!this.editor) {\n return;\n }\n\n if (event.eventType == 'scroll') {\n if (this.pasteOptionRef.current) {\n this.showPasteOptionPane(this.editor);\n }\n } else if (this.pasteOptionRef.current) {\n this.handlePasteOptionPaneEvent(event);\n } else if (event.eventType == 'contentChanged') {\n if (event.source == ChangeSource.Paste) {\n const clipboardData = event.data as ClipboardData;\n\n // Only show paste option when we pasted HTML with some format\n if (clipboardData?.text && clipboardData.types?.indexOf('text/html') >= 0) {\n this.clipboardData = clipboardData;\n this.showPasteOptionPane(this.editor);\n }\n }\n }\n }\n\n setUIUtilities(uiUtilities: UIUtilities) {\n this.uiUtilities = uiUtilities;\n }\n\n private handlePasteOptionPaneEvent(event: PluginEvent) {\n if (event.eventType == 'keyDown' && this.pasteOptionRef.current) {\n const selectedKey = this.pasteOptionRef.current.getSelectedKey();\n\n if (!selectedKey) {\n switch (event.rawEvent.key) {\n case 'Control':\n this.pasteOptionRef.current.setSelectedKey(ButtonKeys[0]);\n cancelEvent(event.rawEvent);\n break;\n\n case 'Escape':\n this.pasteOptionRef.current.dismiss();\n cancelEvent(event.rawEvent);\n break;\n\n default:\n this.pasteOptionRef.current.dismiss();\n break;\n }\n } else {\n const keyboardEvent = event.rawEvent;\n\n if (keyboardEvent.key != 'Control' && keyboardEvent.ctrlKey) {\n // Dismiss the paste option when pressing hotkey CTRL+<any key>\n this.pasteOptionRef.current.dismiss();\n return;\n }\n\n for (let i = 0; i < ButtonKeys.length; i++) {\n const key = ButtonKeys[i];\n const button = Buttons[key];\n if (button.shortcut == String.fromCharCode(keyboardEvent.which)) {\n this.onPaste(key);\n cancelEvent(keyboardEvent);\n return;\n }\n }\n\n switch (keyboardEvent.key) {\n case 'Escape':\n this.pasteOptionRef.current.dismiss();\n break;\n case 'ArrowLeft':\n case 'ArrowRight':\n const buttonCount = ButtonKeys.length;\n const diff =\n (keyboardEvent.key == 'ArrowRight') == this.uiUtilities?.isRightToLeft()\n ? -1\n : 1;\n this.pasteOptionRef.current.setSelectedKey(\n ButtonKeys[\n (ButtonKeys.indexOf(selectedKey) + diff + buttonCount) % buttonCount\n ]\n );\n break;\n case 'Enter':\n this.onPaste(selectedKey);\n break;\n case 'Control':\n // Noop\n break;\n default:\n this.pasteOptionRef.current.dismiss();\n return;\n }\n\n cancelEvent(keyboardEvent);\n }\n }\n }\n\n private onPaste = (key: PasteOptionButtonKeys) => {\n if (this.clipboardData && this.editor) {\n this.editor.focus();\n\n switch (key) {\n case 'pasteOptionPasteAsIs':\n paste(this.editor, this.clipboardData);\n break;\n\n case 'pasteOptionPasteText':\n paste(this.editor, this.clipboardData, 'asPlainText');\n break;\n\n case 'pasteOptionMergeFormat':\n paste(this.editor, this.clipboardData, 'mergeFormat');\n break;\n case 'pasteOptionPasteAsImage':\n paste(this.editor, this.clipboardData, 'asImage');\n }\n\n this.pasteOptionRef.current?.setSelectedKey(key);\n }\n };\n\n private showPasteOptionPane(editor: IEditor) {\n this.pasteOptionRef.current?.dismiss();\n\n const selection = editor.getDOMSelection();\n\n if (selection?.type == 'range' && this.uiUtilities) {\n showPasteOptionPane(\n this.uiUtilities,\n selection.range.startContainer,\n selection.range.startOffset,\n this.onPaste,\n this.pasteOptionRef,\n this.strings\n );\n }\n }\n}\n\nfunction cancelEvent(event: UIEvent) {\n event.preventDefault();\n event.stopPropagation();\n}\n\n/**\n * Create a new instance of PasteOption plugin to show an option pane when paste, so that user can choose\n * an option to change the paste result, including:\n * - Paste as is\n * - Paste as text\n * - Paste and merge format\n * @param strings Localized string for this plugin\n * @returns A paste option plugin\n */\nexport function createPasteOptionPlugin(\n strings?: LocalizedStrings<PasteOptionStringKeys>\n): ReactEditorPlugin {\n return new PasteOptionPlugin(strings);\n}\n","import type { PasteOptionButtonKeys } from '../type/PasteOptionStringKeys';\n\n/**\n * @internal\n */\nexport interface PasteOptionButtonType {\n unlocalizedText: string;\n shortcut: string;\n icon: string;\n}\n\n/**\n * @internal\n */\nexport const Buttons: Record<PasteOptionButtonKeys, PasteOptionButtonType> = {\n pasteOptionPasteAsIs: {\n unlocalizedText: 'Paste as is',\n shortcut: 'P',\n icon: 'Paste',\n },\n pasteOptionPasteText: {\n unlocalizedText: 'Paste text',\n shortcut: 'T',\n icon: 'PasteAsText',\n },\n pasteOptionMergeFormat: {\n unlocalizedText: 'Paste text and merge format',\n shortcut: 'M',\n icon: 'ClipboardList',\n },\n pasteOptionPasteAsImage: {\n unlocalizedText: 'Paste as image',\n shortcut: 'I',\n icon: 'PictureFill',\n },\n};\n\n/**\n * @internal\n */\nexport const ButtonKeys: PasteOptionButtonKeys[] = Object.keys(Buttons) as PasteOptionButtonKeys[];\n","import { setAlignment } from 'roosterjs-content-model-api';\nimport type { AlignCenterButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Align center\" button on the format ribbon\n */\nexport const alignCenterButton: RibbonButton<AlignCenterButtonStringKey> = {\n key: 'buttonNameAlignCenter',\n unlocalizedText: 'Align center',\n iconName: 'AlignCenter',\n onClick: editor => {\n setAlignment(editor, 'center');\n },\n};\n","import { setAlignment } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Align justify\" button on the format ribbon\n */\nexport const alignJustifyButton: RibbonButton<'buttonNameAlignJustify'> = {\n key: 'buttonNameAlignJustify',\n unlocalizedText: 'Align justify',\n iconName: 'AlignJustify',\n onClick: editor => {\n setAlignment(editor, 'justify');\n },\n};\n","import { setAlignment } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { AlignLeftButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Align left\" button on the format ribbon\n */\nexport const alignLeftButton: RibbonButton<AlignLeftButtonStringKey> = {\n key: 'buttonNameAlignLeft',\n unlocalizedText: 'Align left',\n iconName: 'AlignLeft',\n onClick: editor => {\n setAlignment(editor, 'left');\n },\n};\n","import { setAlignment } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { AlignRightButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Align right\" button on the format ribbon\n */\nexport const alignRightButton: RibbonButton<AlignRightButtonStringKey> = {\n key: 'buttonNameAlignRight',\n unlocalizedText: 'Align right',\n iconName: 'AlignRight',\n onClick: editor => {\n setAlignment(editor, 'right');\n },\n};\n","import { renderColorPicker } from '../../colorPicker/component/renderColorPicker';\nimport { setBackgroundColor } from 'roosterjs-content-model-api';\nimport {\n BackgroundColorDropDownItems,\n BackgroundColors,\n getBackgroundColorValue,\n} from '../../colorPicker/utils/backgroundColors';\nimport {\n getColorPickerContainerClassName,\n getColorPickerItemClassName,\n} from '../../colorPicker/utils/getClassNamesForColorPicker';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { BackgroundColorButtonStringKey } from '../type/RibbonButtonStringKeys';\n\nconst Key: 'buttonNameBackgroundColor' = 'buttonNameBackgroundColor';\n\n/**\n * \"Background color\" button on the format ribbon\n */\nexport const backgroundColorButton: RibbonButton<BackgroundColorButtonStringKey> = {\n dropDownMenu: {\n items: BackgroundColorDropDownItems,\n itemClassName: getColorPickerItemClassName(),\n allowLivePreview: true,\n itemRender: (item, onClick) => renderColorPicker(item, BackgroundColors, onClick),\n commandBarSubMenuProperties: {\n className: getColorPickerContainerClassName(),\n },\n },\n key: Key,\n unlocalizedText: 'Background color',\n iconName: 'FabricTextHighlight',\n onClick: (editor, key) => {\n // This check will always be true, add it here just to satisfy compiler\n if (key != 'buttonNameBackgroundColor') {\n setBackgroundColor(editor, getBackgroundColorValue(key).lightModeColor);\n }\n },\n};\n","import { toggleBlockQuote } from 'roosterjs-content-model-api';\nimport type { QuoteButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Block quote\" button on the format ribbon\n */\nexport const blockQuoteButton: RibbonButton<QuoteButtonStringKey> = {\n key: 'buttonNameQuote',\n unlocalizedText: 'Quote',\n iconName: 'RightDoubleQuote',\n isChecked: formatState => !!formatState.isBlockQuote,\n onClick: editor => {\n toggleBlockQuote(editor);\n },\n};\n","import { toggleBold } from 'roosterjs-content-model-api';\nimport type { BoldButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Bold\" button on the format ribbon\n */\nexport const boldButton: RibbonButton<BoldButtonStringKey> = {\n key: 'buttonNameBold',\n unlocalizedText: 'Bold',\n iconName: 'Bold',\n isChecked: formatState => !!formatState.isBold,\n onClick: editor => {\n toggleBold(editor);\n },\n};\n","import { toggleBullet } from 'roosterjs-content-model-api';\nimport type { BulletedListButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Bulleted list\" button on the format ribbon\n */\nexport const bulletedListButton: RibbonButton<BulletedListButtonStringKey> = {\n key: 'buttonNameBulletedList',\n unlocalizedText: 'Bulleted list',\n iconName: 'BulletedList',\n isChecked: formatState => !!formatState.isBullet,\n onClick: editor => {\n toggleBullet(editor);\n },\n};\n","import { clearFormat } from 'roosterjs-content-model-api';\nimport type { ClearFormatButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Clear format\" button on the format ribbon\n */\nexport const clearFormatButton: RibbonButton<ClearFormatButtonStringKey> = {\n key: 'buttonNameClearFormat',\n unlocalizedText: 'Clear format',\n iconName: 'ClearFormatting',\n onClick: editor => {\n clearFormat(editor);\n },\n};\n","import { toggleCode } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { CodeButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Code\" button on the format ribbon\n */\nexport const codeButton: RibbonButton<CodeButtonStringKey> = {\n key: 'buttonNameCode',\n unlocalizedText: 'Code',\n iconName: 'Code',\n isChecked: formatState => !!formatState.isCodeInline,\n onClick: editor => {\n toggleCode(editor);\n },\n};\n","import { changeFontSize } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { DecreaseFontSizeButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Decrease font size\" button on the format ribbon\n */\nexport const decreaseFontSizeButton: RibbonButton<DecreaseFontSizeButtonStringKey> = {\n key: 'buttonNameDecreaseFontSize',\n unlocalizedText: 'Decrease font size',\n iconName: 'FontDecrease',\n onClick: editor => {\n changeFontSize(editor, 'decrease');\n },\n};\n","import { setIndentation } from 'roosterjs-content-model-api';\nimport type { DecreaseIndentButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Decrease indent\" button on the format ribbon\n */\nexport const decreaseIndentButton: RibbonButton<DecreaseIndentButtonStringKey> = {\n key: 'buttonNameDecreaseIndent',\n unlocalizedText: 'Decrease indent',\n iconName: 'DecreaseIndentLegacy',\n flipWhenRtl: true,\n onClick: editor => {\n setIndentation(editor, 'outdent');\n },\n};\n","import { setFontName } from 'roosterjs-content-model-api';\nimport type { FontButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\ninterface FontName {\n name: string;\n family: string;\n localizedName?: string;\n}\nconst FontNames: FontName[] = [\n { name: 'Arial', family: 'Arial,Helvetica,sans-serif' },\n { name: 'Arial Black', family: \"'Arial Black',Arial,sans-serif\" },\n { name: 'Calibri', family: 'Calibri,Helvetica,sans-serif' },\n { name: 'Calibri Light', family: \"'Calibri Light','Helvetica Light',sans-serif\" },\n { name: 'Cambria', family: 'Cambria,Georgia,serif' },\n { name: 'Candara', family: 'Candara,Optima,sans-serif' },\n { name: 'Century Gothic', family: \"'Century Gothic',sans-serif\" },\n { name: 'Comic Sans MS', family: \"'Comic Sans MS',Chalkboard,cursive\" },\n { name: 'Consolas', family: 'Consolas,Courier,monospace' },\n { name: 'Constantia', family: \"Constantia,'Hoefler Text',serif\" },\n { name: 'Corbel', family: 'Corbel,Skia,sans-serif' },\n { name: 'Courier New', family: \"'Courier New',monospace\" },\n {\n name: 'Franklin Gothic Book',\n family: \"'Franklin Gothic Book','Avenir Next Condensed',sans-serif\",\n },\n {\n name: 'Franklin Gothic Demi',\n family: \"'Franklin Gothic Demi','Avenir Next Condensed Demi Bold',sans-serif\",\n },\n {\n name: 'Franklin Gothic Medium',\n family: \"'Franklin Gothic Medium','Avenir Next Condensed Medium',sans-serif\",\n },\n { name: 'Garamond', family: 'Garamond,Georgia,serif' },\n { name: 'Georgia', family: 'Georgia,serif' },\n { name: 'Impact', family: 'Impact,Charcoal,sans-serif' },\n { name: 'Lucida Console', family: \"'Lucida Console',Monaco,monospace\" },\n { name: 'Lucida Handwriting', family: \"'Lucida Handwriting','Apple Chancery',cursive\" },\n { name: 'Lucida Sans Unicode', family: \"'Lucida Sans Unicode','Lucida Grande',sans-serif\" },\n { name: 'Palatino Linotype', family: \"'Palatino Linotype','Book Antiqua',Palatino,serif\" },\n {\n name: 'Segoe UI',\n family: \"'Segoe UI', 'Segoe UI Web (West European)', 'Helvetica Neue', sans-serif\",\n },\n { name: 'Sitka Heading', family: \"'Sitka Heading',Cochin,serif\" },\n { name: 'Sitka Text', family: \"'Sitka Text',Cochin,serif\" },\n { name: 'Tahoma', family: 'Tahoma,Geneva,sans-serif' },\n { name: 'Times', family: \"Times,'Times New Roman',serif\" },\n { name: 'Times New Roman', family: \"'Times New Roman',Times,serif\" },\n { name: 'Trebuchet MS', family: \"'Trebuchet MS',Trebuchet,sans-serif\" },\n { name: 'TW Cen MT', family: \"'TW Cen MT','Century Gothic',sans-serif\" },\n { name: 'Verdana', family: 'Verdana,Geneva,sans-serif' },\n { name: '-', family: 'FontDivider0' }, //divider between fonts for different scripts (order is by style)\n {\n name: 'Microsoft YaHei',\n family: \"'Microsoft YaHei','微软雅黑',STHeiti,sans-serif\",\n localizedName: '微软雅黑',\n }, //chineseS Microsoft recommended font\n { name: 'SimHei', family: \"SimHei,'黑体',STHeiti,sans-serif\", localizedName: '黑体' }, //chineseS\n {\n name: 'NSimSun',\n family: \"NSimSun,'新宋体',SimSun,'宋体',SimSun-ExtB,'宋体-ExtB',STSong,serif\",\n localizedName: '新宋体',\n }, //chineseS\n { name: 'FangSong', family: \"FangSong,'仿宋',STFangsong,serif\", localizedName: '仿宋' }, //chineseS\n { name: 'SimLi', family: \"SimLi,'隶书','Baoli SC',serif\", localizedName: '隶书' }, //chineseS\n { name: 'KaiTi', family: \"KaiTi,'楷体',STKaiti,serif\", localizedName: '楷体' }, //chineseS\n { name: '-', family: 'FontDivider1' }, //divider between fonts for different scripts (order is by style)\n {\n name: 'Microsoft JhengHei',\n family: \"'Microsoft JhengHei','微軟正黑體','Apple LiGothic',sans-serif\",\n localizedName: '微軟正黑體',\n }, //chineseT Microsoft recommended font\n {\n name: 'PMingLiU',\n family: \"PMingLiU,'新細明體',PMingLiU-ExtB,'新細明體-ExtB','Apple LiSung',serif\",\n localizedName: '新細明體',\n }, //chineseT\n { name: 'DFKai-SB', family: \"DFKai-SB,'標楷體','BiauKai',serif\", localizedName: '標楷體' }, //chineseT\n { name: '-', family: 'FontDivider2' }, //divider between fonts for different scripts (order is alphabetical by foundry)\n {\n name: 'Meiryo',\n family: \"Meiryo,'メイリオ','Hiragino Sans',sans-serif\",\n localizedName: 'メイリオ',\n }, //japanese\n {\n name: 'MS PGothic',\n family:\n \"'MS PGothic','MS Pゴシック','MS Gothic','MS ゴシック','Hiragino Kaku Gothic ProN',sans-serif\",\n localizedName: 'MS Pゴシック',\n }, //japanese\n {\n name: 'MS PMincho',\n family: \"'MS PMincho','MS P明朝','MS Mincho','MS 明朝','Hiragino Mincho ProN',serif\",\n localizedName: 'MS P明朝',\n }, //japanese\n {\n name: 'Yu Gothic',\n family: \"'Yu Gothic','游ゴシック','YuGothic',sans-serif\",\n localizedName: '游ゴシック',\n }, //japanese\n { name: 'Yu Mincho', family: \"'Yu Mincho','游明朝','YuMincho',serif\", localizedName: '游明朝' }, //japanese\n { name: '-', family: 'FontDivider3' }, //divider between fonts for different scripts (order is for legacy reasons)\n {\n name: 'Malgun Gothic',\n family: \"'Malgun Gothic','맑은 고딕',AppleGothic,sans-serif\",\n localizedName: '맑은 고딕',\n }, //korean Microsoft recommended font\n { name: 'Gulim', family: \"Gulim,'굴림','Nanum Gothic',sans-serif\", localizedName: '굴림' }, //korean\n { name: 'Dotum', family: \"Dotum,'돋움',AppleGothic,sans-serif\", localizedName: '돋움' }, //korean\n { name: 'Batang', family: \"Batang,'바탕',AppleMyungjo,serif\", localizedName: '바탕' }, //korean\n { name: 'BatangChe', family: \"BatangChe,'바탕체',AppleMyungjo,serif\", localizedName: '바탕체' }, //korean\n { name: 'Gungsuh', family: \"Gungsuh,'궁서',GungSeo,serif\", localizedName: '궁서' }, //korean\n { name: '-', family: 'FontDivider4' }, //divider between fonts for different scripts (order is alphabetical)\n { name: 'Leelawadee UI', family: \"'Leelawadee UI',Thonburi,sans-serif\" }, //thai Microsoft recommended font\n { name: 'Angsana New', family: \"'Angsana New','Leelawadee UI',Sathu,serif\" }, //thai\n { name: 'Cordia New', family: \"'Cordia New','Leelawadee UI',Silom,sans-serif\" }, //thai\n { name: 'DaunPenh', family: \"DaunPenh,'Leelawadee UI','Khmer MN',sans-serif\" }, //khmer\n { name: '-', family: 'FontDivider5' }, //divider between fonts for different scripts (order is alphabetical)\n { name: 'Nirmala UI', family: \"'Nirmala UI',sans-serif\" }, //indic Microsoft recommended font\n { name: 'Gautami', family: \"Gautami,'Nirmala UI','Telugu MN',sans-serif\" }, //indic\n { name: 'Iskoola Pota', family: \"'Iskoola Pota','Nirmala UI','Sinhala MN',sans-serif\" }, //indic\n { name: 'Kalinga', family: \"Kalinga,'Nirmala UI','Oriya MN',sans-serif\" }, //indic\n { name: 'Kartika', family: \"Kartika,'Nirmala UI','Malayalam MN',sans-serif\" }, //indic\n { name: 'Latha', family: \"Latha,'Nirmala UI','Tamil MN',sans-serif\" }, //indic\n { name: 'Mangal', family: \"Mangal,'Nirmala UI','Devanagari Sangam MN',sans-serif\" }, //indic\n { name: 'Raavi', family: \"Raavi,'Nirmala UI','Gurmukhi MN',sans-serif\" }, //indic\n { name: 'Shruti', family: \"Shruti,'Nirmala UI','Gujarati Sangam MN',sans-serif\" }, //indic\n { name: 'Tunga', family: \"Tunga,'Nirmala UI','Kannada MN',sans-serif\" }, //indic\n { name: 'Vrinda', family: \"Vrinda,'Nirmala UI','Bangla MN',sans-serif\" }, //indic\n { name: '-', family: 'FontDivider6' }, //divider between fonts for different scripts\n { name: 'Nyala', family: 'Nyala,Kefa,sans-serif' }, //other-ethiopic\n { name: 'Sylfaen', family: 'Sylfaen,Mshtakan,Menlo,serif' }, //other-armenian-georgian\n];\n\nconst DropDownItems = FontNames.reduce((items, font) => {\n items[font.family] = font.localizedName || font.name;\n return items;\n}, <Record<string, string>>{});\n\nconst LowerCaseFontMap = FontNames.reduce((items, font) => {\n items[font.name.toLowerCase()] = font.family;\n return items;\n}, <Record<string, string>>{});\n\nconst FirstFontRegex = /^['\"]?([^'\",]+)/i;\n\n/**\n * \"Font\" button on the format ribbon\n */\nexport const fontButton: RibbonButton<FontButtonStringKey> = {\n key: 'buttonNameFont',\n unlocalizedText: 'Font',\n iconName: 'Font',\n dropDownMenu: {\n items: DropDownItems,\n getSelectedItemKey: formatState => {\n const matches = formatState.fontName?.match(FirstFontRegex);\n const firstName = matches?.[1]?.toLowerCase();\n const selectedKey = (firstName && LowerCaseFontMap[firstName]) || '';\n\n return selectedKey;\n },\n allowLivePreview: true,\n },\n onClick: (editor, font) => {\n setFontName(editor, font);\n },\n};\n","import { setFontSize } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { FontSizeButtonStringKey } from '../type/RibbonButtonStringKeys';\n\nconst FONT_SIZES = [8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72];\n\n/**\n * \"Font Size\" button on the format ribbon\n */\nexport const fontSizeButton: RibbonButton<FontSizeButtonStringKey> = {\n key: 'buttonNameFontSize',\n unlocalizedText: 'Font size',\n iconName: 'FontSize',\n dropDownMenu: {\n items: FONT_SIZES.reduce((map, size) => {\n map[size + 'pt'] = size.toString();\n return map;\n }, <Record<string, string>>{}),\n getSelectedItemKey: formatState => formatState.fontSize ?? '',\n allowLivePreview: true,\n },\n onClick: (editor, size) => {\n setFontSize(editor, size);\n },\n};\n","import { changeFontSize } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { IncreaseFontSizeButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Increase font size\" button on the format ribbon\n */\nexport const increaseFontSizeButton: RibbonButton<IncreaseFontSizeButtonStringKey> = {\n key: 'buttonNameIncreaseFontSize',\n unlocalizedText: 'Increase font size',\n iconName: 'FontIncrease',\n onClick: editor => {\n changeFontSize(editor, 'increase');\n },\n};\n","import { setIndentation } from 'roosterjs-content-model-api';\nimport type { IncreaseIndentButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Increase indent\" button on the format ribbon\n */\nexport const increaseIndentButton: RibbonButton<IncreaseIndentButtonStringKey> = {\n key: 'buttonNameIncreaseIndent',\n unlocalizedText: 'Increase indent',\n iconName: 'IncreaseIndentLegacy',\n flipWhenRtl: true,\n onClick: editor => {\n setIndentation(editor, 'indent');\n },\n};\n","import { insertImage } from 'roosterjs-content-model-api';\nimport type { InsertImageButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\nfunction createInput(doc: Document): HTMLInputElement {\n const input = doc.createElement('input');\n\n input.type = 'file';\n input.accept = 'image/*';\n input.setAttribute('display', 'none');\n\n return input;\n}\n\n/**\n * \"Insert image\" button on the format ribbon\n */\nexport const insertImageButton: RibbonButton<InsertImageButtonStringKey> = {\n key: 'buttonNameInsertImage',\n unlocalizedText: 'Insert image',\n iconName: 'Photo2',\n onClick: editor => {\n const document = editor.getDocument();\n const fileInput = createInput(document) as HTMLInputElement;\n document.body.appendChild(fileInput);\n\n fileInput.addEventListener('change', () => {\n if (fileInput.files) {\n for (let i = 0; i < fileInput.files.length; i++) {\n insertImage(editor, fileInput.files[i]);\n }\n }\n });\n\n try {\n fileInput.click();\n } finally {\n document.body.removeChild(fileInput);\n }\n },\n};\n","import { adjustLinkSelection, insertLink } from 'roosterjs-content-model-api';\nimport { showInputDialog } from '../../inputDialog/utils/showInputDialog';\nimport type { InsertLinkButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Insert link\" button on the format ribbon\n */\nexport const insertLinkButton: RibbonButton<InsertLinkButtonStringKey> = {\n key: 'buttonNameInsertLink',\n unlocalizedText: 'Insert link',\n iconName: 'Link',\n onClick: (editor, _, strings, uiUtilities) => {\n const [displayText, url] = adjustLinkSelection(editor);\n const items = {\n url: {\n autoFocus: true,\n labelKey: 'insertLinkDialogUrl' as const,\n unlocalizedLabel: 'Web address (URL)',\n initValue: url ?? '',\n },\n displayText: {\n labelKey: 'insertLinkDialogDisplayAs' as const,\n unlocalizedLabel: 'Display as',\n initValue: displayText,\n },\n };\n\n showInputDialog(\n uiUtilities,\n 'insertLinkTitle',\n 'Insert link',\n items,\n strings,\n (itemName, newValue, values) => {\n if (itemName == 'url' && values.displayText == values.url) {\n values.displayText = newValue;\n values.url = newValue;\n return values;\n } else {\n return null;\n }\n }\n ).then(result => {\n editor.focus();\n\n if (result && result.url && (result.displayText != displayText || result.url != url)) {\n insertLink(editor, result.url, result.url, result.displayText);\n }\n });\n },\n};\n","import * as React from 'react';\nimport { FocusZone, FocusZoneDirection } from '@fluentui/react/lib/FocusZone';\nimport { insertTable } from 'roosterjs-content-model-api';\nimport { isNodeOfType } from 'roosterjs-content-model-dom';\nimport { mergeStyleSets } from '@fluentui/react/lib/Styling';\nimport type { TableCellCoordinate } from 'roosterjs-content-model-types';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { InsertTableButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { IContextualMenuItem } from '@fluentui/react/lib/ContextualMenu';\n\nconst MaxRows = 10;\nconst MaxCols = 10;\nconst classNames = mergeStyleSets({\n tableButton: {\n width: '15px',\n height: '15px',\n margin: '1px 1px 0 0',\n border: 'solid 1px #a19f9d',\n display: 'inline-block',\n cursor: 'pointer',\n backgroundColor: 'transparent',\n },\n hovered: {\n border: 'solid 1px #DB626C',\n },\n tablePane: {\n width: '160px',\n minWidth: 'auto',\n padding: '4px',\n boxSizing: 'content-box',\n },\n tablePaneInner: {\n lineHeight: '12px',\n },\n title: {\n margin: '5px 0',\n },\n});\n\n/**\n * \"Insert table\" button on the format ribbon\n */\nexport const insertTableButton: RibbonButton<InsertTableButtonStringKey> = {\n key: 'buttonNameInsertTable',\n unlocalizedText: 'Insert table',\n iconName: 'Table',\n dropDownMenu: {\n items: {\n insertTablePane: '{0} x {1} table',\n },\n itemRender: (item, onClick) => {\n return <InsertTablePane item={item} onClick={onClick} />;\n },\n commandBarSubMenuProperties: {\n className: classNames.tablePane,\n },\n },\n onClick: (editor, key) => {\n const { row, col } = parseKey(key);\n insertTable(editor, col, row);\n },\n};\n\nfunction parseKey(key: string): TableCellCoordinate {\n const [row, col] = key.split(',');\n return {\n row: parseInt(row),\n col: parseInt(col),\n };\n}\n\nfunction InsertTablePane(props: {\n item: IContextualMenuItem;\n onClick: (\n e: React.MouseEvent<Element> | React.KeyboardEvent<Element>,\n item: IContextualMenuItem\n ) => void;\n}) {\n const { item, onClick } = props;\n const [col, setCol] = React.useState(1);\n const [row, setRow] = React.useState(1);\n\n const updateSize = React.useCallback(\n (t?: Node) => {\n if (t && isNodeOfType(t, 'ELEMENT_NODE')) {\n const col = parseInt(t.dataset.col ?? '-1');\n const row = parseInt(t.dataset.row ?? '-1');\n\n if (col > 0 && col <= MaxCols && row > 0 && row <= MaxRows) {\n setCol(col);\n setRow(row);\n }\n }\n },\n [setCol, setRow]\n );\n\n const onMouseEnter = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n updateSize(e.target as Node);\n },\n [updateSize]\n );\n\n const onClickButton = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick(e, {\n ...item,\n key: createKey(row, col),\n });\n },\n [row, col, onClick]\n );\n\n const ariaLabels = React.useMemo<string[][]>(() => {\n const result: string[][] = [];\n for (let i = 1; i <= MaxCols; i++) {\n const col: string[] = [];\n for (let j = 1; j <= MaxRows; j++) {\n col[j] = formatText(item.text ?? '', i, j);\n }\n result[i] = col;\n }\n return result;\n }, [item.text]);\n\n const items = React.useMemo(() => {\n const items: JSX.Element[] = [];\n\n for (let i = 1; i <= MaxRows; i++) {\n for (let j = 1; j <= MaxCols; j++) {\n const key = `cell_${i}_${j}`;\n const isSelected = j <= col && i <= row;\n items.push(\n <button\n className={\n classNames.tableButton + ' ' + (isSelected ? classNames.hovered : '')\n }\n onClick={onClickButton}\n key={key}\n id={key}\n data-col={j}\n data-row={i}\n data-is-focusable={true}\n onMouseEnter={onMouseEnter}\n aria-label={ariaLabels[i][j]}\n />\n );\n }\n }\n\n return items;\n }, [col, row]);\n\n const text = formatText(item.text ?? '', row, col);\n\n return (\n <div className={classNames.tablePaneInner}>\n <div className={classNames.title}>{text}</div>\n <FocusZone\n defaultActiveElement=\"cell_1_1\"\n direction={FocusZoneDirection.bidirectional}\n onActiveElementChanged={updateSize}>\n {items}\n </FocusZone>\n </div>\n );\n}\n\nfunction formatText(text: string, row: number, col: number) {\n return text.replace('{0}', col.toString()).replace('{1}', row.toString());\n}\n\nfunction createKey(row: number, col: number) {\n return `${row},${col}`;\n}\n","import { toggleItalic } from 'roosterjs-content-model-api';\nimport type { ItalicButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Italic\" button on the format ribbon\n */\nexport const italicButton: RibbonButton<ItalicButtonStringKey> = {\n key: 'buttonNameItalic',\n unlocalizedText: 'Italic',\n iconName: 'Italic',\n isChecked: formatState => !!formatState.isItalic,\n onClick: editor => {\n toggleItalic(editor);\n },\n};\n","import { setDirection } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { LtrButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Left to right\" button on the format ribbon\n */\nexport const ltrButton: RibbonButton<LtrButtonStringKey> = {\n key: 'buttonNameLtr',\n unlocalizedText: 'Left to right',\n iconName: 'BidiLtr',\n onClick: editor => {\n setDirection(editor, 'ltr');\n },\n};\n","import type { RibbonButton } from '../type/RibbonButton';\nimport type { MoreCommandsButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * @internal\n * \"More commands\" (overflow) button on the format ribbon\n */\nexport const moreCommands: RibbonButton<MoreCommandsButtonStringKey> = {\n key: 'buttonNameMoreCommands',\n unlocalizedText: 'More commands',\n iconName: 'MoreCommands',\n onClick: () => {\n return true;\n },\n};\n","import { toggleNumbering } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { NumberedListButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Numbering list\" button on the format ribbon\n */\nexport const numberedListButton: RibbonButton<NumberedListButtonStringKey> = {\n key: 'buttonNameNumberedList',\n unlocalizedText: 'Numbered List',\n iconName: 'NumberedList',\n isChecked: formatState => !!formatState.isNumbering,\n onClick: editor => {\n toggleNumbering(editor);\n },\n};\n","import { redo } from 'roosterjs-content-model-core';\nimport type { RedoButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Undo\" button on the format ribbon\n */\nexport const redoButton: RibbonButton<RedoButtonStringKey> = {\n key: 'buttonNameRedo',\n unlocalizedText: 'Redo',\n iconName: 'Redo',\n isDisabled: formatState => !formatState.canRedo,\n onClick: editor => {\n redo(editor);\n },\n commandBarProperties: {\n buttonStyles: {\n icon: { paddingBottom: '10px' },\n },\n },\n};\n","import { removeLink } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { RemoveLinkButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Remove link\" button on the format ribbon\n */\nexport const removeLinkButton: RibbonButton<RemoveLinkButtonStringKey> = {\n key: 'buttonNameRemoveLink',\n unlocalizedText: 'Remove link',\n iconName: 'RemoveLink',\n isDisabled: formatState => !formatState.canUnlink,\n onClick: editor => {\n removeLink(editor);\n },\n};\n","import { setDirection } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { RtlButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Right to left\" button on the format ribbon\n */\nexport const rtlButton: RibbonButton<RtlButtonStringKey> = {\n key: 'buttonNameRtl',\n unlocalizedText: 'Right to left',\n iconName: 'BidiRtl',\n onClick: editor => {\n setDirection(editor, 'rtl');\n },\n};\n","import { setHeadingLevel } from 'roosterjs-content-model-api';\nimport type { HeadingButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\nconst keys: HeadingButtonStringKey[] = [\n 'buttonNameNoHeading',\n 'buttonNameHeading1',\n 'buttonNameHeading2',\n 'buttonNameHeading3',\n 'buttonNameHeading4',\n 'buttonNameHeading5',\n 'buttonNameHeading6',\n];\nconst headings: Partial<Record<HeadingButtonStringKey, string>> = {\n buttonNameHeading1: 'Heading 1',\n buttonNameHeading2: 'Heading 2',\n buttonNameHeading3: 'Heading 3',\n buttonNameHeading4: 'Heading 4',\n buttonNameHeading5: 'Heading 5',\n buttonNameHeading6: 'Heading 6',\n '-': '-',\n buttonNameNoHeading: 'No heading',\n};\n\n/**\n * \"Set header level\" button on the format ribbon\n */\nexport const setHeadingLevelButton: RibbonButton<HeadingButtonStringKey> = {\n key: 'buttonNameHeading',\n unlocalizedText: 'Heading',\n iconName: 'Header1',\n dropDownMenu: {\n items: headings,\n getSelectedItemKey: formatState => {\n return (formatState.headingLevel ?? 0) > 0\n ? 'heading' + formatState.headingLevel\n : 'noHeading';\n },\n },\n onClick: (editor, key) => {\n const headingLevel = keys.indexOf(key);\n\n setHeadingLevel(editor, headingLevel as 0 | 1 | 2 | 3 | 4 | 5 | 6);\n },\n};\n","import { toggleStrikethrough } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { StrikethroughButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Strikethrough\" button on the format ribbon\n */\nexport const strikethroughButton: RibbonButton<StrikethroughButtonStringKey> = {\n key: 'buttonNameStrikethrough',\n unlocalizedText: 'Strikethrough',\n iconName: 'Strikethrough',\n isChecked: formatState => !!formatState.isStrikeThrough,\n onClick: editor => {\n toggleStrikethrough(editor);\n },\n};\n","import { toggleSubscript } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { SubscriptButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Subscript\" button on the format ribbon\n */\nexport const subscriptButton: RibbonButton<SubscriptButtonStringKey> = {\n key: 'buttonNameSubscript',\n unlocalizedText: 'Subscript',\n iconName: 'Subscript',\n isChecked: formatState => !!formatState.isSubscript,\n onClick: editor => {\n toggleSubscript(editor);\n },\n};\n","import { toggleSuperscript } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { SuperscriptButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Superscript\" button on the format ribbon\n */\nexport const superscriptButton: RibbonButton<SuperscriptButtonStringKey> = {\n key: 'buttonNameSuperscript',\n unlocalizedText: 'Superscript',\n iconName: 'Superscript',\n isChecked: formatState => !!formatState.isSuperscript,\n onClick: editor => {\n toggleSuperscript(editor);\n },\n};\n","import { renderColorPicker } from '../../colorPicker/component/renderColorPicker';\nimport { setTextColor } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { TextColorButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport {\n getTextColorValue,\n TextColorDropDownItems,\n TextColors,\n} from '../../colorPicker/utils/textColors';\nimport {\n getColorPickerContainerClassName,\n getColorPickerItemClassName,\n} from '../../colorPicker/utils/getClassNamesForColorPicker';\n\nconst Key: 'buttonNameTextColor' = 'buttonNameTextColor';\n\n/**\n * \"Text color\" button on the format ribbon\n */\nexport const textColorButton: RibbonButton<TextColorButtonStringKey> = {\n dropDownMenu: {\n items: TextColorDropDownItems,\n itemClassName: getColorPickerItemClassName(),\n allowLivePreview: true,\n itemRender: (item, onClick) => renderColorPicker(item, TextColors, onClick),\n commandBarSubMenuProperties: {\n className: getColorPickerContainerClassName(),\n },\n },\n key: Key,\n unlocalizedText: 'Text color',\n iconName: 'FontColor',\n onClick: (editor, key) => {\n // This check will always be true, add it here just to satisfy compiler\n if (key != 'buttonNameTextColor') {\n setTextColor(editor, getTextColorValue(key).lightModeColor);\n }\n },\n};\n","import { toggleUnderline } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { UnderlineButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Underline\" button on the format ribbon\n */\nexport const underlineButton: RibbonButton<UnderlineButtonStringKey> = {\n key: 'buttonNameUnderline',\n unlocalizedText: 'Underline',\n iconName: 'Underline',\n isChecked: formatState => !!formatState.isUnderline,\n onClick: editor => {\n toggleUnderline(editor);\n },\n};\n","import { undo } from 'roosterjs-content-model-core';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { UndoButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Undo\" button on the format ribbon\n */\nexport const undoButton: RibbonButton<UndoButtonStringKey> = {\n key: 'buttonNameUndo',\n unlocalizedText: 'Undo',\n iconName: 'undo',\n isDisabled: formatState => !formatState.canUndo,\n onClick: editor => {\n undo(editor);\n },\n commandBarProperties: {\n buttonStyles: {\n icon: { paddingBottom: '10px' },\n },\n },\n};\n","import * as React from 'react';\nimport { CommandBar } from '@fluentui/react/lib/CommandBar';\nimport { FocusZoneDirection } from '@fluentui/react/lib/FocusZone';\nimport { getLocalizedString } from '../../common/utils/getLocalizedString';\nimport { getObjectKeys } from 'roosterjs-content-model-dom';\nimport { initializeIcons } from '@fluentui/font-icons-mdl2';\nimport { mergeStyles } from '@fluentui/react/lib/Styling';\nimport { moreCommands } from '../buttons/moreCommands';\nimport type {\n IContextualMenuItem,\n IContextualMenuItemProps,\n} from '@fluentui/react/lib/ContextualMenu';\nimport type { IRenderFunction } from '@fluentui/react/lib/Utilities';\nimport type { ICommandBarItemProps } from '@fluentui/react/lib/CommandBar';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { ContentModelFormatState } from 'roosterjs-content-model-types';\nimport type { RibbonProps } from '../type/RibbonProps';\n\nconst ribbonClassName = mergeStyles({\n '& .ms-CommandBar': {\n padding: '0px',\n },\n});\n\nconst rtlIcon = mergeStyles({\n transform: 'scaleX(-1)',\n});\n\nlet iconInitialized = false;\n\n/**\n * The format ribbon component of roosterjs-react\n * @param props Properties of format ribbon component\n * @returns The format ribbon component\n */\nexport function Ribbon<T extends string>(props: RibbonProps<T>) {\n const { plugin, buttons, strings, dir } = props;\n const [formatState, setFormatState] = React.useState<ContentModelFormatState | null>(null);\n const isRtl = dir == 'rtl';\n\n if (!iconInitialized) {\n iconInitialized = true;\n initializeIcons();\n }\n\n const onClick = React.useCallback(\n (_, item?: IContextualMenuItem) => {\n if (item) {\n plugin?.onButtonClick<string>(item.data, item.key, strings);\n }\n },\n [plugin, strings]\n );\n\n const onHover = React.useCallback(\n (button: RibbonButton<T>, key: string) => {\n plugin.startLivePreview<T>(button, key as T, strings);\n },\n [plugin, strings]\n );\n\n const onDismiss = React.useCallback(() => {\n plugin.stopLivePreview();\n }, [plugin]);\n\n const flipIcon = React.useCallback(\n (\n props?: IContextualMenuItemProps,\n defaultRender?: (props?: IContextualMenuItemProps) => JSX.Element | null\n ): JSX.Element | null => {\n if (!defaultRender) {\n return null;\n }\n return <span className={rtlIcon}>{defaultRender(props)}</span>;\n },\n []\n );\n\n const commandBarItems = React.useMemo((): ICommandBarItemProps[] => {\n return buttons.map(\n (button): ICommandBarItemProps => {\n const selectedItem =\n formatState && button.dropDownMenu?.getSelectedItemKey?.(formatState);\n const dropDownMenu = button.dropDownMenu;\n\n const result: ICommandBarItemProps = {\n key: button.key,\n data: button,\n iconProps: {\n iconName: button.iconName,\n },\n onRenderIcon: isRtl && button.flipWhenRtl ? flipIcon : undefined,\n iconOnly: true,\n text: getLocalizedString(strings, button.key, button.unlocalizedText),\n ariaLabel: getLocalizedString(strings, button.key, button.unlocalizedText),\n canCheck: true,\n checked: (formatState && button.isChecked?.(formatState)) || false,\n disabled: (formatState && button.isDisabled?.(formatState)) || false,\n ...(button.commandBarProperties || {}),\n };\n\n const contextMenuItemRenderer: IRenderFunction<IContextualMenuItem> = (\n props,\n defaultRenderer\n ) =>\n props && defaultRenderer ? (\n <div onMouseOver={e => onHover(button, props.key)}>\n {defaultRenderer(props)}\n </div>\n ) : null;\n\n if (dropDownMenu) {\n result.subMenuProps = {\n shouldFocusOnMount: true,\n focusZoneProps: { direction: FocusZoneDirection.bidirectional },\n onMenuDismissed: onDismiss,\n onItemClick: onClick,\n onRenderContextualMenuItem: dropDownMenu.allowLivePreview\n ? contextMenuItemRenderer\n : undefined,\n items: getObjectKeys(dropDownMenu.items).map(key => ({\n key: key,\n text: getLocalizedString<string, string>(\n strings,\n key,\n dropDownMenu.items[key]\n ),\n data: button,\n canCheck: !!dropDownMenu.getSelectedItemKey,\n checked: selectedItem == key || false,\n className: dropDownMenu.itemClassName,\n onRender: dropDownMenu.itemRender\n ? item => dropDownMenu.itemRender!(item, onClick)\n : undefined,\n })),\n ...(dropDownMenu.commandBarSubMenuProperties || {}),\n };\n } else {\n result.onClick = onClick;\n }\n\n return result;\n }\n );\n }, [buttons, formatState, isRtl, strings, onClick, onDismiss, onHover]);\n\n React.useEffect(() => {\n const disposer = plugin?.registerFormatChangedCallback(setFormatState);\n\n return () => {\n disposer?.();\n };\n }, [plugin]);\n\n const moreCommandsBtn = moreCommands as RibbonButton<string>;\n\n return (\n <CommandBar\n items={commandBarItems}\n {...props}\n className={ribbonClassName + ' ' + (props?.className || '')}\n overflowButtonProps={{\n ariaLabel: getLocalizedString<string, string>(\n strings,\n moreCommandsBtn.key,\n moreCommandsBtn.unlocalizedText\n ),\n ...props?.overflowButtonProps,\n }}\n />\n );\n}\n","export { RibbonPlugin } from './type/RibbonPlugin';\nexport { RibbonButton } from './type/RibbonButton';\nexport { RibbonButtonDropDown } from './type/RibbonButtonDropDown';\nexport { RibbonProps } from './type/RibbonProps';\nexport {\n BoldButtonStringKey,\n ItalicButtonStringKey,\n UnderlineButtonStringKey,\n FontButtonStringKey,\n FontSizeButtonStringKey,\n IncreaseFontSizeButtonStringKey,\n DecreaseFontSizeButtonStringKey,\n TextColorButtonStringKey,\n BackgroundColorButtonStringKey,\n BulletedListButtonStringKey,\n NumberedListButtonStringKey,\n MoreCommandsButtonStringKey,\n DecreaseIndentButtonStringKey,\n IncreaseIndentButtonStringKey,\n QuoteButtonStringKey,\n AlignLeftButtonStringKey,\n AlignCenterButtonStringKey,\n AlignRightButtonStringKey,\n AlignJustifyButtonStringKey,\n InsertLinkButtonStringKey,\n RemoveLinkButtonStringKey,\n InsertTableButtonStringKey,\n InsertImageButtonStringKey,\n SuperscriptButtonStringKey,\n SubscriptButtonStringKey,\n StrikethroughButtonStringKey,\n HeadingButtonStringKey,\n HeaderButtonStringKey,\n CodeButtonStringKey,\n LtrButtonStringKey,\n RtlButtonStringKey,\n UndoButtonStringKey,\n RedoButtonStringKey,\n ClearFormatButtonStringKey,\n AllButtonStringKeys,\n CellShadeButtonStringKey,\n} from './type/RibbonButtonStringKeys';\n\nexport { Ribbon } from './component/Ribbon';\nexport { createRibbonPlugin } from './plugin/createRibbonPlugin';\nexport { redoButton } from './buttons/redoButton';\nexport { undoButton } from './buttons/undoButton';\nexport { alignCenterButton } from './buttons/alignCenterButton';\nexport { alignJustifyButton } from './buttons/alignJustifyButton';\nexport { alignLeftButton } from './buttons/alignLeftButton';\nexport { alignRightButton } from './buttons/alignRightButton';\nexport { backgroundColorButton } from './buttons/backgroundColorButton';\nexport { blockQuoteButton } from './buttons/blockQuoteButton';\nexport { boldButton } from './buttons/boldButton';\nexport { bulletedListButton } from './buttons/bulletedListButton';\nexport { clearFormatButton } from './buttons/clearFormatButton';\nexport { codeButton } from './buttons/codeButton';\nexport { decreaseFontSizeButton } from './buttons/decreaseFontSizeButton';\nexport { decreaseIndentButton } from './buttons/decreaseIndentButton';\nexport { fontButton } from './buttons/fontButton';\nexport { fontSizeButton } from './buttons/fontSizeButton';\nexport { increaseFontSizeButton } from './buttons/increaseFontSizeButton';\nexport { increaseIndentButton } from './buttons/increaseIndentButton';\nexport { insertImageButton } from './buttons/insertImageButton';\nexport { insertLinkButton } from './buttons/insertLinkButton';\nexport { insertTableButton } from './buttons/insertTableButton';\nexport { italicButton } from './buttons/italicButton';\nexport { ltrButton } from './buttons/ltrButton';\nexport { numberedListButton } from './buttons/numberedListButton';\nexport { removeLinkButton } from './buttons/removeLinkButton';\nexport { rtlButton } from './buttons/rtlButton';\nexport { setHeadingLevelButton } from './buttons/setHeadingLevelButton';\nexport { strikethroughButton } from './buttons/strikethroughButton';\nexport { subscriptButton } from './buttons/subscriptButton';\nexport { superscriptButton } from './buttons/superscriptButton';\nexport { textColorButton } from './buttons/textColorButton';\nexport { underlineButton } from './buttons/underlineButton';\n","import { getFormatState } from 'roosterjs-content-model-api';\nimport { getObjectKeys } from 'roosterjs-content-model-dom';\nimport type { ContentModelFormatState, IEditor, PluginEvent } from 'roosterjs-content-model-types';\nimport type { LocalizedStrings } from '../../common/type/LocalizedStrings';\nimport type { UIUtilities } from '../../common/type/UIUtilities';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { RibbonPlugin } from '../type/RibbonPlugin';\n\nclass RibbonPluginImpl implements RibbonPlugin {\n private editor: IEditor | null = null;\n private onFormatChanged: ((formatState: ContentModelFormatState) => void) | null = null;\n private timer = 0;\n private formatState: ContentModelFormatState | null = null;\n private uiUtilities: UIUtilities | null = null;\n\n /**\n * Construct a new instance of RibbonPlugin object\n * @param delayUpdateTime The time to wait before refresh the button when user do some editing operation in editor\n */\n constructor(private delayUpdateTime: number = 200) {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'Ribbon';\n }\n\n /**\n * Initialize this plugin\n * @param editor The editor instance\n */\n initialize(editor: IEditor) {\n this.editor = editor;\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.editor = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n switch (event.eventType) {\n case 'editorReady':\n case 'contentChanged':\n case 'zoomChanged':\n this.updateFormat();\n break;\n\n case 'keyDown':\n case 'mouseUp':\n this.delayUpdate();\n break;\n }\n }\n\n /**\n * Set the UI utilities objects to this plugin to help render additional UI elements\n * @param uiUtilities The UI utilities object to set\n */\n setUIUtilities(uiUtilities: UIUtilities) {\n this.uiUtilities = uiUtilities;\n }\n\n /**\n * Register a callback to be invoked when format state of editor is changed, returns a disposer function.\n */\n registerFormatChangedCallback(callback: (formatState: ContentModelFormatState) => void) {\n this.onFormatChanged = callback;\n\n return () => {\n this.onFormatChanged = null;\n };\n }\n\n /**\n * When user clicks on a button, call this method to let the plugin to handle this click event\n * @param button The button that is clicked\n * @param key Key of child menu item that is clicked if any\n * @param strings The localized string map for this button\n */\n onButtonClick<T extends string>(\n button: RibbonButton<T>,\n key: T,\n strings?: LocalizedStrings<T>\n ) {\n if (this.editor && this.uiUtilities) {\n this.editor.stopShadowEdit();\n\n button.onClick(this.editor, key, strings, this.uiUtilities);\n\n if (button.isChecked || button.isDisabled || button.dropDownMenu?.getSelectedItemKey) {\n this.updateFormat();\n }\n }\n }\n\n /**\n * Enter live preview state (shadow edit) of editor if there is a non-collapsed selection\n * @param button The button that triggered this action\n * @param key Key of the hovered button sub item\n * @param strings The localized string map for this button\n */\n startLivePreview<T extends string>(\n button: RibbonButton<T>,\n key: T,\n strings?: LocalizedStrings<T>\n ) {\n if (this.editor && this.uiUtilities) {\n const isInShadowEdit = this.editor.isInShadowEdit();\n\n // If editor is already in shadow edit, no need to check again.\n // And the check result may be incorrect because the content is changed from last shadow edit and the cached selection path won't apply\n const range = !isInShadowEdit && this.editor.getDOMSelection();\n\n if (isInShadowEdit || (range && (range.type != 'range' || !range.range.collapsed))) {\n this.editor.startShadowEdit();\n button.onClick(this.editor, key, strings, this.uiUtilities);\n }\n }\n }\n\n /**\n * Leave live preview state (shadow edit) of editor\n */\n stopLivePreview() {\n this.editor?.stopShadowEdit();\n }\n\n private delayUpdate() {\n const window = this.editor?.getDocument().defaultView;\n\n if (!window) {\n return;\n }\n\n if (this.timer) {\n window.clearTimeout(this.timer);\n }\n\n this.timer = window.setTimeout(() => {\n this.timer = 0;\n this.updateFormat?.();\n }, this.delayUpdateTime);\n }\n\n private updateFormat() {\n if (this.editor && this.onFormatChanged) {\n const newFormatState = getFormatState(this.editor);\n const newFormatKeys = getObjectKeys(newFormatState);\n\n if (\n !this.formatState ||\n newFormatKeys.length != getObjectKeys(this.formatState).length ||\n getObjectKeys(newFormatState).some(\n key => newFormatState[key] != this.formatState?.[key]\n )\n ) {\n this.formatState = newFormatState;\n this.onFormatChanged(newFormatState);\n }\n }\n }\n}\n\n/**\n * Create a new instance of RibbonPlugin object\n * @param delayUpdateTime The time to wait before refresh the button when user do some editing operation in editor\n */\nexport function createRibbonPlugin(delayUpdateTime?: number): RibbonPlugin {\n return new RibbonPluginImpl(delayUpdateTime);\n}\n","import * as React from 'react';\nimport { createUIUtilities } from '../../common/index';\nimport { divProperties, getNativeProps } from '@fluentui/react/lib/Utilities';\nimport { Editor } from 'roosterjs-content-model-core';\nimport { useTheme } from '@fluentui/react/lib/Theme';\nimport type { RoosterProps } from '../type/RoosterProps';\nimport type { ReactEditorPlugin } from '../../common/index';\nimport type { EditorPlugin, IEditor, EditorOptions } from 'roosterjs-content-model-types';\n\n/**\n * Main component of react wrapper for roosterjs\n * @param props Properties of this component\n * @returns The react component\n */\nexport function Rooster(props: RoosterProps) {\n const editorDiv = React.useRef<HTMLDivElement>(null);\n const editor = React.useRef<IEditor | null>(null);\n const theme = useTheme();\n\n const { focusOnInit, editorCreator, inDarkMode, plugins } = props;\n\n React.useEffect(() => {\n if (plugins && editorDiv.current) {\n const uiUtilities = createUIUtilities(editorDiv.current, theme);\n\n plugins.forEach(plugin => {\n if (isReactEditorPlugin(plugin)) {\n plugin.setUIUtilities(uiUtilities);\n }\n });\n }\n }, [theme, editorCreator]);\n\n React.useEffect(() => {\n if (editorDiv.current) {\n editor.current = (editorCreator || defaultEditorCreator)(editorDiv.current, props);\n }\n\n if (focusOnInit) {\n editor.current?.focus();\n }\n\n return () => {\n if (editor.current) {\n editor.current.dispose();\n editor.current = null;\n }\n };\n }, [editorCreator]);\n\n React.useEffect(() => {\n editor.current?.setDarkModeState(!!inDarkMode);\n }, [inDarkMode]);\n\n const divProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(props, divProperties);\n return (\n <div\n ref={editorDiv}\n tabIndex={0}\n role=\"textbox\"\n aria-multiline=\"true\"\n {...(divProps || {})}></div>\n );\n}\n\nfunction defaultEditorCreator(div: HTMLDivElement, options: EditorOptions) {\n return new Editor(div, options);\n}\n\nfunction isReactEditorPlugin(plugin: EditorPlugin): plugin is ReactEditorPlugin {\n return !!(plugin as ReactEditorPlugin)?.setUIUtilities;\n}\n","export { RoosterProps } from './type/RoosterProps';\nexport { Rooster } from './component/Rooster';\n","module.exports = FluentUIReact;","module.exports = React;","module.exports = ReactDOM;","module.exports = roosterjs;","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./packages/roosterjs-react/lib/index.ts\");\n",""],"names":[],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"rooster-react.js","mappings":"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CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;KACvB;IACD,MAAM,EAAE;QACJ,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;KACvB;IACD,UAAU,EAAE;QACR,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;KACvB;IACD,IAAI,EAAE;QACF,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC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,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;KACpC;IACD,OAAO,EAAE;QACL,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;KACpC;CACJ,CAAC;AAEF;;GAEG;AACU,mCAA2B,GAAoC;IACxE,UAAU,EAAE,QAAQ;IACpB,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,WAAW;IACpB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,KAAK;CAChB,CAAC;AAEF;;GAEG;AACH,SAAgB,kBAAkB,CAC9B,QAA+D;;IAE/D,IAAM,QAAQ,GAAG,+CAAa,EAAC,iBAAS,CAAC,CAAC;;QAC1C,KAAqB,+CAAQ,2FAAE;YAA1B,IAAM,MAAM;YACb,IAAI,CAAC,QAAQ,CAAC,iBAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE;gBACtC,MAAM;aACT;SACJ;;;;;;;;;AACL,CAAC;AATD,gDASC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,QAAmC;IAC5D,kBAAkB,CAAC,gBAAM;;;YACrB,KAAoB,2CAAM,iFAAE;gBAAvB,IAAM,KAAK;gBACZ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;oBAClB,OAAO,KAAK,CAAC;iBAChB;aACJ;;;;;;;;;QACD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;AACP,CAAC;AATD,oCASC;AAED,yCAAyC;AACzC,SAAS,iBAAiB,CAAC,GAAW;IAClC,IAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;QAChB,OAAO,IAAI,CAAC;KACf;IAED,2DAA2D;IAC3D,4CAA4C;IAC5C,qDAAqD;IACrD,IAAI,cAAwB,CAAC;IAC7B,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,EAAE;QAC1C,IAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC;QAC5D,IAAM,EAAE,GAAG,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC;QAClD,cAAc,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;KAC7B;SAAM,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,EAAE;QACjD,cAAc,GAAG,CAAC,OAAO,CAAC,CAAC;KAC9B;IAED,OAAO,MAAM,CAAC,YAAY,OAAnB,MAAM,qDAAiB,cAAe,WAAE;AACnD,CAAC;AAED,SAAS,WAAW,CAAC,GAAW,EAAE,QAAiB;;IAC/C,OAAO;QACH,GAAG;QACH,WAAW,EAAE,SAAO,GAAK;QACzB,QAAQ,EAAE,SAAO,GAAK;QACtB,QAAQ;QACR,SAAS,EAAE,uBAAiB,CAAC,GAAG,CAAC,mCAAI,SAAS;KACjD,CAAC;AACN,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAW;;IACzC,OAAO,EAAE,GAAG,OAAE,WAAW,EAAE,SAAO,GAAK,EAAE,SAAS,EAAE,uBAAiB,CAAC,GAAG,CAAC,mCAAI,SAAS,EAAE,CAAC;AAC9F,CAAC;;;;;;;;;;;;;;AC1xBD,oHAA2C;AAG3C;;GAEG;AACH,SAAgB,YAAY,CAAC,MAAc,EAAE,OAA+B;IACxE,IAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAC9B,IAAM,SAAS,GAAY,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,IAAM,YAAY,GAAY,EAAE,CAAC;IACjC,IAAM,aAAa,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3E,4BAAY,EAAC,eAAK;QACd,IAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACnE,IAAM,kBAAkB,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,IAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACxD,IAAI,KAAK,IAAI,CAAC,EAAE;YACZ,CAAC,kBAAkB,CAAC,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,GAAG;gBACpD,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,YAAY,CACjB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjB;QACD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC1C,CAAC;AApBD,oCAoBC;AAED,SAAS,aAAa,CAAC,MAAc;IACjC,IAAI,MAAM,GAAiB,IAAI,CAAC;IAChC,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC;IAC5B,4BAAY,EAAC,UAAC,KAAY;QACtB,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACrE,MAAM,GAAG,KAAK,CAAC;YACf,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAClB,CAAC;;;;;;;;;;;;;;ACvCD,gIAA+B;AAC/B,kIAAgC;AAChC,gIAA+B;AAC/B,0IAAoC;AACpC,4IAAqC;AACrC,0IAAoC;AACpC,8HAA8B;AAC9B,0IAAoC;;;;;;;;;;;;;;;ACPpC,sDAA+B;AAC/B,kGAA0E;AAC1E,kGAA8E;AAC9E,8GAAwD;AACxD,0HAA4D;AAC5D,iJAAoD;AA2BpD;;GAEG;AACH,SAAgB,WAAW,CACvB,KAA2C;IAGvC,SAAK,GAQL,KAAK,MARA,EACL,OAAO,GAOP,KAAK,QAPE,EACP,cAAc,GAMd,KAAK,eANS,EACd,gBAAgB,GAKhB,KAAK,iBALW,EAChB,IAAI,GAIJ,KAAK,KAJD,EACJ,QAAQ,GAGR,KAAK,SAHG,EACR,QAAQ,GAER,KAAK,SAFG,EACR,IAAI,GACJ,KAAK,KADD,CACE;IACV,IAAM,kBAAkB,GAAwB,KAAK,CAAC,OAAO,CACzD,cAAM,QAAC;QACH,IAAI,EAAE,mBAAU,CAAC,MAAM;QACvB,KAAK,EAAE,8BAAkB,EAAC,OAAO,EAAE,cAAc,EAAE,gBAAgB,CAAC;QACpE,MAAM,EAAE;YACJ,YAAY,EAAE;gBACV,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;aACrC;SACJ;KACJ,CAAC,EARI,CAQJ,EACF,CAAC,OAAO,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAC9C,CAAC;IACI,6BAAoC,KAAK,CAAC,QAAQ,CACpD,+CAAa,EAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAC,MAAiC,EAAE,GAAG;QAC/D,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;QACnC,OAAO,MAAM,CAAC;IAClB,CAAC,EAAE,EAA+B,CAAC,CACtC,MALM,aAAa,UAAE,gBAAgB,QAKrC,CAAC;IAEF,IAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC;QAC/B,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,aAAa,CAAC,CAAC;IAC1B,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IAC1B,IAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CACnC,UAAC,QAAmB,EAAE,QAAgB;;QAClC,IAAI,QAAQ,IAAI,KAAK,EAAE;YACnB,IAAM,SAAS,GAAG,SAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,QAAQ,EAAE,QAAQ,4BACxC,aAAa,EAClB,qDACK,aAAa,gBACf,QAAQ,IAAG,QAAQ,MACvB,CAAC;YAEF,gBAAgB,CAAC,SAAS,CAAC,CAAC;SAC/B;IACL,CAAC,EACD,CAAC,gBAAgB,EAAE,aAAa,EAAE,KAAK,CAAC,CAC3C,CAAC;IAEF,OAAO,CACH,oBAAC,eAAM,IAAC,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ;QAC9E,iCACK,+CAAa,EAAC,KAAK,CAAC,CAAC,GAAG,CAAC,aAAG,IAAI,QAC7B,oBAAC,iCAAe,IACZ,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,GAAG,EACb,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,QAAQ,EACpB,SAAS,EAAE,aAAa,EACxB,IAAI,EAAE,IAAI,GACZ,CACL,EAXgC,CAWhC,CAAC,CACA;QACN,oBAAC,qBAAY;YACT,oBAAC,sBAAa,IACV,IAAI,EAAE,8BAAkB,EAAC,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,EACvD,OAAO,EAAE,QAAQ,GACnB;YACF,oBAAC,sBAAa,IACV,IAAI,EAAE,8BAAkB,EAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,CAAC,EAC/D,OAAO,EAAE,QAAQ,GACnB,CACS,CACV,CACZ,CAAC;AACN,CAAC;AA/ED,kCA+EC;;;;;;;;;;;;;;AClHD,sDAA+B;AAC/B,8GAAwD;AACxD,oGAA6D;AAC7D,wGAA0D;AAiB1D,IAAM,UAAU,GAAG,4BAAc,EAAC;IAC9B,QAAQ,EAAE;QACN,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,YAAY;QACpB,YAAY,EAAE,KAAK;KACtB;CACJ,CAAC,CAAC;AAEH;;GAEG;AACH,SAAgB,eAAe,CAC3B,KAA+C;IAEvC,YAAQ,GAAiE,KAAK,SAAtE,EAAE,OAAO,GAAwD,KAAK,QAA7D,EAAE,KAAK,GAAiD,KAAK,MAAtD,EAAE,aAAa,GAAkC,KAAK,cAAvC,EAAE,SAAS,GAAuB,KAAK,UAA5B,EAAE,UAAU,GAAW,KAAK,WAAhB,EAAE,IAAI,GAAK,KAAK,KAAV,CAAW;IACjF,SAA4C,KAAK,CAAC,QAAQ,CAAC,EAAzD,QAAQ,gBAAE,gBAAgB,wBAAE,SAAS,eAAoB,CAAC;IAClE,IAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CACnC,UAAC,CAAC,EAAE,QAAQ;QACR,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAClC,CAAC,EACD,CAAC,QAAQ,EAAE,SAAS,CAAC,CACxB,CAAC;IAEF,IAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAChC,UAAC,CAAwC;QACrC,IAAI,CAAC,CAAC,GAAG,IAAI,OAAO,EAAE;YAClB,UAAU,EAAE,CAAC;SAChB;IACL,CAAC,EACD,CAAC,UAAU,CAAC,CACf,CAAC;IAEF,OAAO,CACH;QACK,QAAQ,CAAC,CAAC,CAAC,iCAAM,8BAAkB,EAAC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAO,CAAC,CAAC,CAAC,IAAI;QACvF;YACI,oBAAC,qBAAS,IACN,IAAI,EAAC,SAAS,EACd,IAAI,EAAC,MAAM,EACX,SAAS,EAAE,UAAU,CAAC,QAAQ,EAC9B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,CAAC,CAAC,IAAI,GACnB,CACA,CACJ,CACT,CAAC;AACN,CAAC;AAxCD,0CAwCC;;;;;;;;;;;;;;ACzED,mJAA0D;AAAjD,kIAAe;;;;;;;;;;;;;;ACAxB,sDAA+B;AAC/B,gJAAuD;AACvD,uKAA+E;AAS/E;;;;;;;;GAQG;AACH,SAAgB,eAAe,CAC3B,WAAwB,EACxB,cAAuB,EACvB,gBAAwB,EACxB,KAA6C,EAC7C,OAA+E,EAC/E,QAIqC,EACrC,IAAa;IAEb,OAAO,IAAI,OAAO,CAAmC,iBAAO;QACxD,IAAI,QAAQ,GAAwB,IAAI,CAAC;QACzC,IAAM,IAAI,GAAG,UAAC,MAAiC;YAC3C,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,EAAI,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC,CAAC;QACF,IAAM,QAAQ,GAAG;YACb,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,EAAI,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC,CAAC;QACF,IAAM,SAAS,GAAG,CACd,oBAAC,yBAAW,IACR,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,gBAAgB,EAClC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,GACZ,CACL,CAAC;QAEF,QAAQ,GAAG,+CAAoB,EAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACP,CAAC;AAtCD,0CAsCC;;;;;;;;;;;;;;;AC1DD,sDAA+B;AAC/B,4HAAuD;AACvD,oGAAuE;AACvE,0HAAmF;AACnF,8GAAwD;AACxD,8FAAgD;AAChD,kGAAwD;AACxD,wGAAgE;AAChE,oGAA6D;AAC7D,uKAA+E;AAC/E,gGAAqD;AACrD,kHAA+D;AAK/D,IAAM,wBAAwB,GAAG,+BAAe,EAAC,UAAC,KAAY;IAC1D,IAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAE9B,OAAO,4BAAc,EAAC;QAClB,SAAS,EAAE;YACP,WAAW,EAAE,KAAK;YAClB,QAAQ,EAAE,MAAM;SACnB;QACD,UAAU,EAAE;YACR,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,KAAK;SACjB;QACD,IAAI,EAAE;YACF,QAAQ,EAAE,MAAM;SACnB;QACD,gBAAgB,EAAE;YACd,cAAc,EAAE,QAAQ;YACxB,OAAO,EAAE,MAAM;SAClB;QACD,MAAM,EAAE;YACJ,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,aAAa;YACrB,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE;gBACP,eAAe,EAAE,OAAO,CAAC,YAAY;aACxC;SACJ;QACD,SAAS,EAAE;YACP,eAAe,EAAE,OAAO,CAAC,UAAU;YACnC,SAAS,EAAE;gBACP,eAAe,EAAE,OAAO,CAAC,YAAY;aACxC;SACJ;KACJ,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AASH,SAAS,iBAAiB,CAAC,KAA6B;IAC5C,cAAU,GAAgC,KAAK,WAArC,EAAE,KAAK,GAAyB,KAAK,MAA9B,EAAE,OAAO,GAAgB,KAAK,QAArB,EAAE,SAAS,GAAK,KAAK,UAAV,CAAW;IACxD,IAAM,MAAM,GAAG,iBAAO,CAAC,UAAU,CAAC,CAAC;IACnC,IAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC;QAC9B,KAAK,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IAExB,OAAO,CACH,oBAAC,mBAAU,IACP,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,KAAK,EACD,8BAAkB,EAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,eAAe,CAAC;YAC/D,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAK,MAAM,CAAC,QAAQ,MAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAEpD,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,GACtC,CACL,CAAC;AACN,CAAC;AAoBD,IAAM,oBAAoB,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,eAAe,CAClE,KAAuB,EACvB,GAA+B;;IAEvB,WAAO,GAA+C,KAAK,QAApD,EAAE,SAAS,GAAoC,KAAK,UAAzC,EAAE,MAAM,GAA4B,KAAK,OAAjC,EAAE,KAAK,GAAqB,KAAK,MAA1B,EAAE,OAAO,GAAY,KAAK,QAAjB,EAAE,KAAK,GAAK,KAAK,MAAV,CAAW;IACpE,IAAM,KAAK,GAAG,oBAAQ,GAAE,CAAC;IACzB,IAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAC7C,6BAAgC,KAAK,CAAC,QAAQ,CAA+B,IAAI,CAAC,MAAjF,WAAW,UAAE,cAAc,QAAsD,CAAC;IAEzF,IAAM,IAAI,GAAG,uDAAqB,EAAC,CAAC,oCAAS,GAAE,mCAAI,MAAM,CAAC,CAAC,QAAQ,EAAE;QACjE,IAAI,EAAE,SAAS;QACf,MAAM;KACT,CAAC,CAAC;IACH,IAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAEnF,KAAK,CAAC,mBAAmB,CACrB,GAAG,EACH,cAAM,QAAC;QACH,OAAO;QACP,cAAc;QACd,cAAc,EAAE,cAAM,kBAAW,EAAX,CAAW;KACpC,CAAC,EAJI,CAIJ,EACF,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,CAAC,CACvD,CAAC;IAEF,IAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IACtD,IAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAC/B,UAAC,GAAoD;QACjD,IAAM,MAAM,GACR,GAAG,YAAY,UAAU,IAAI,GAAG,CAAC,aAAa,YAAY,IAAI;YAC1D,CAAC,CAAC,GAAG,CAAC,aAAa;YACnB,CAAC,CAAC,IAAI,CAAC;QACf,IAAM,iBAAiB,GACnB,MAAM;YACN,UAAU,CAAC,OAAO;YAClB,CAAC,UAAU,CAAC,OAAO,IAAI,MAAM,IAAI,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,iBAAiB,EAAE;YACpB,OAAO,EAAE,CAAC;SACb;IACL,CAAC,EACD,CAAC,OAAO,CAAC,CACZ,CAAC;IAEF,IAAM,kBAAkB,GAAG,KAAK,CAAC,WAAW,CACxC,UAAC,KAAuC;QACpC,cAAc,CAAC,oBAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;IAC5B,CAAC,EACD,CAAC,cAAc,CAAC,CACnB,CAAC;IAEF,OAAO,CACH,oBAAC,iBAAO,IACJ,QAAQ,EAAE,EAAE,EACZ,aAAa,EAAE,KAAK,EACpB,MAAM,EAAE,MAAM,EACd,eAAe,EACX,KAAK,CAAC,CAAC,CAAC,yBAAe,CAAC,eAAe,CAAC,CAAC,CAAC,yBAAe,CAAC,cAAc,EAE5E,qBAAqB,EAAE,yBAAe,CAAC,eAAe,EACtD,sBAAsB,EAAE,IAAI,EAC5B,SAAS,EAAE,SAAS;QACpB,6BAAK,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS;YACjD,6BAAK,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU;gBAC9D,oBAAC,WAAI,IAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,IAAI,GAAI;gBACtD,8BAAkB,EAAC,OAAO,EAAE,qBAAqB,EAAE,QAAQ,CAAC,CAC3D;YACL,WAAW,IAAI,CACZ,6BAAK,SAAS,EAAE,UAAU,CAAC,gBAAgB,IACtC,+CAAa,EAAC,iBAAO,CAAC,CAAC,GAAG,CAAC,aAAG,IAAI,QAC/B,oBAAC,iBAAiB,IACd,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,GAAG,EACf,SAAS,EACL,UAAU,CAAC,MAAM;oBACjB,GAAG;oBACH,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAEtD,CACL,EAZkC,CAYlC,CAAC,CACA,CACT,CACC,CACA,CACb,CAAC;AACN,CAAC,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CAC/B,WAAwB,EACxB,SAAe,EACf,MAAc,EACd,OAA6C,EAC7C,GAAqC,EACrC,OAAiD;IAEjD,IAAI,QAAQ,GAAwB,IAAI,CAAC;IACzC,IAAM,SAAS,GAAG;QACd,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,EAAI,CAAC;QACb,QAAQ,GAAG,IAAI,CAAC;IACpB,CAAC,CAAC;IAEF,QAAQ,GAAG,+CAAoB,EAC3B,WAAW,EACX,oBAAC,oBAAoB,IACjB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,WAAW,CAAC,aAAa,EAAE,EAClC,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,OAAO,GAChB,CACL,CAAC;AACN,CAAC;AA1BD,kDA0BC;;;;;;;;;;;;;;AC9ND,6KAA2E;AAAlE,0JAAuB;;;;;;;;;;;;;;ACDhC,sDAA+B;AAC/B,4HAAuD;AACvD,0HAA2D;AAC3D,4HAAqD;AACrD,yKAAuE;AAMvE;IAMI,2BAAoB,OAAiD;QAArE,iBAAyE;QAArD,YAAO,GAAP,OAAO,CAA0C;QAL7D,kBAAa,GAAyB,IAAI,CAAC;QAC3C,WAAM,GAAmB,IAAI,CAAC;QAC9B,gBAAW,GAAuB,IAAI,CAAC;QACvC,mBAAc,GAAG,KAAK,CAAC,SAAS,EAAmB,CAAC;QAqHpD,YAAO,GAAG,UAAC,GAA0B;;YACzC,IAAI,KAAI,CAAC,aAAa,IAAI,KAAI,CAAC,MAAM,EAAE;gBACnC,KAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAEpB,QAAQ,GAAG,EAAE;oBACT,KAAK,sBAAsB;wBACvB,wCAAK,EAAC,KAAI,CAAC,MAAM,EAAE,KAAI,CAAC,aAAa,CAAC,CAAC;wBACvC,MAAM;oBAEV,KAAK,sBAAsB;wBACvB,wCAAK,EAAC,KAAI,CAAC,MAAM,EAAE,KAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;wBACtD,MAAM;oBAEV,KAAK,wBAAwB;wBACzB,wCAAK,EAAC,KAAI,CAAC,MAAM,EAAE,KAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;wBACtD,MAAM;oBACV,KAAK,yBAAyB;wBAC1B,wCAAK,EAAC,KAAI,CAAC,MAAM,EAAE,KAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;iBACzD;gBAED,WAAI,CAAC,cAAc,CAAC,OAAO,0CAAE,cAAc,CAAC,GAAG,CAAC,CAAC;aACpD;QACL,CAAC,CAAC;IAzIsE,CAAC;IAEzE,mCAAO,GAAP;QACI,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,sCAAU,GAAV,UAAW,MAAe;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,mCAAO,GAAP;;QACI,UAAI,CAAC,cAAc,CAAC,OAAO,0CAAE,OAAO,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,yCAAa,GAAb,UAAc,KAAkB;;QAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACd,OAAO;SACV;QAED,IAAI,KAAK,CAAC,SAAS,IAAI,QAAQ,EAAE;YAC7B,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;gBAC7B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACzC;SACJ;aAAM,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;YACpC,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;SAC1C;aAAM,IAAI,KAAK,CAAC,SAAS,IAAI,gBAAgB,EAAE;YAC5C,IAAI,KAAK,CAAC,MAAM,IAAI,0CAAY,CAAC,KAAK,EAAE;gBACpC,IAAM,aAAa,GAAG,KAAK,CAAC,IAAqB,CAAC;gBAElD,8DAA8D;gBAC9D,IAAI,cAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,KAAI,oBAAa,CAAC,KAAK,0CAAE,OAAO,CAAC,WAAW,CAAC,KAAI,CAAC,EAAE;oBACvE,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;oBACnC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBACzC;aACJ;SACJ;IACL,CAAC;IAED,0CAAc,GAAd,UAAe,WAAwB;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAEO,sDAA0B,GAAlC,UAAmC,KAAkB;;QACjD,IAAI,KAAK,CAAC,SAAS,IAAI,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;YAC7D,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAEjE,IAAI,CAAC,WAAW,EAAE;gBACd,QAAQ,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;oBACxB,KAAK,SAAS;wBACV,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,oBAAU,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC1D,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBAC5B,MAAM;oBAEV,KAAK,QAAQ;wBACT,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;wBACtC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBAC5B,MAAM;oBAEV;wBACI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;wBACtC,MAAM;iBACb;aACJ;iBAAM;gBACH,IAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAErC,IAAI,aAAa,CAAC,GAAG,IAAI,SAAS,IAAI,aAAa,CAAC,OAAO,EAAE;oBACzD,+DAA+D;oBAC/D,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBACtC,OAAO;iBACV;gBAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,oBAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACxC,IAAM,GAAG,GAAG,oBAAU,CAAC,CAAC,CAAC,CAAC;oBAC1B,IAAM,MAAM,GAAG,iBAAO,CAAC,GAAG,CAAC,CAAC;oBAC5B,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;wBAC7D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;wBAClB,WAAW,CAAC,aAAa,CAAC,CAAC;wBAC3B,OAAO;qBACV;iBACJ;gBAED,QAAQ,aAAa,CAAC,GAAG,EAAE;oBACvB,KAAK,QAAQ;wBACT,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;wBACtC,MAAM;oBACV,KAAK,WAAW,CAAC;oBACjB,KAAK,YAAY;wBACb,IAAM,WAAW,GAAG,oBAAU,CAAC,MAAM,CAAC;wBACtC,IAAM,IAAI,GACN,CAAC,aAAa,CAAC,GAAG,IAAI,YAAY,CAAC,KAAI,UAAI,CAAC,WAAW,0CAAE,aAAa,EAAE;4BACpE,CAAC,CAAC,CAAC,CAAC;4BACJ,CAAC,CAAC,CAAC,CAAC;wBACZ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CACtC,oBAAU,CACN,CAAC,oBAAU,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,GAAG,WAAW,CACvE,CACJ,CAAC;wBACF,MAAM;oBACV,KAAK,OAAO;wBACR,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;wBAC1B,MAAM;oBACV,KAAK,SAAS;wBACV,OAAO;wBACP,MAAM;oBACV;wBACI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;wBACtC,OAAO;iBACd;gBAED,WAAW,CAAC,aAAa,CAAC,CAAC;aAC9B;SACJ;IACL,CAAC;IA0BO,+CAAmB,GAA3B,UAA4B,MAAe;;QACvC,UAAI,CAAC,cAAc,CAAC,OAAO,0CAAE,OAAO,EAAE,CAAC;QAEvC,IAAM,SAAS,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAE3C,IAAI,UAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,KAAI,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE;YAChD,6CAAmB,EACf,IAAI,CAAC,WAAW,EAChB,SAAS,CAAC,KAAK,CAAC,cAAc,EAC9B,SAAS,CAAC,KAAK,CAAC,WAAW,EAC3B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,OAAO,CACf,CAAC;SACL;IACL,CAAC;IACL,wBAAC;AAAD,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IAC/B,KAAK,CAAC,cAAc,EAAE,CAAC;IACvB,KAAK,CAAC,eAAe,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,uBAAuB,CACnC,OAAiD;IAEjD,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAJD,0DAIC;;;;;;;;;;;;;;ACpLD;;GAEG;AACU,eAAO,GAAyD;IACzE,oBAAoB,EAAE;QAClB,eAAe,EAAE,aAAa;QAC9B,QAAQ,EAAE,GAAG;QACb,IAAI,EAAE,OAAO;KAChB;IACD,oBAAoB,EAAE;QAClB,eAAe,EAAE,YAAY;QAC7B,QAAQ,EAAE,GAAG;QACb,IAAI,EAAE,aAAa;KACtB;IACD,sBAAsB,EAAE;QACpB,eAAe,EAAE,6BAA6B;QAC9C,QAAQ,EAAE,GAAG;QACb,IAAI,EAAE,eAAe;KACxB;IACD,uBAAuB,EAAE;QACrB,eAAe,EAAE,gBAAgB;QACjC,QAAQ,EAAE,GAAG;QACb,IAAI,EAAE,aAAa;KACtB;CACJ,CAAC;AAEF;;GAEG;AACU,kBAAU,GAA4B,MAAM,CAAC,IAAI,CAAC,eAAO,CAA4B,CAAC;;;;;;;;;;;;;;ACxCnG,0HAA2D;AAI3D;;GAEG;AACU,yBAAiB,GAA6C;IACvE,GAAG,EAAE,uBAAuB;IAC5B,eAAe,EAAE,cAAc;IAC/B,QAAQ,EAAE,aAAa;IACvB,OAAO,EAAE,gBAAM;QACX,8CAAY,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACdF,0HAA2D;AAG3D;;GAEG;AACU,0BAAkB,GAA2C;IACtE,GAAG,EAAE,wBAAwB;IAC7B,eAAe,EAAE,eAAe;IAChC,QAAQ,EAAE,cAAc;IACxB,OAAO,EAAE,gBAAM;QACX,8CAAY,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACbF,0HAA2D;AAI3D;;GAEG;AACU,uBAAe,GAA2C;IACnE,GAAG,EAAE,qBAAqB;IAC1B,eAAe,EAAE,YAAY;IAC7B,QAAQ,EAAE,WAAW;IACrB,OAAO,EAAE,gBAAM;QACX,8CAAY,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACdF,0HAA2D;AAI3D;;GAEG;AACU,wBAAgB,GAA4C;IACrE,GAAG,EAAE,sBAAsB;IAC3B,eAAe,EAAE,aAAa;IAC9B,QAAQ,EAAE,YAAY;IACtB,OAAO,EAAE,gBAAM;QACX,8CAAY,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACdF,iLAAkF;AAClF,0HAAiE;AACjE,qKAIkD;AAClD,sMAG6D;AAI7D,IAAM,GAAG,GAAgC,2BAA2B,CAAC;AAErE;;GAEG;AACU,6BAAqB,GAAiD;IAC/E,YAAY,EAAE;QACV,KAAK,EAAE,+CAA4B;QACnC,aAAa,EAAE,6DAA2B,GAAE;QAC5C,gBAAgB,EAAE,IAAI;QACtB,UAAU,EAAE,UAAC,IAAI,EAAE,OAAO,IAAK,gDAAiB,EAAC,IAAI,EAAE,mCAAgB,EAAE,OAAO,CAAC,EAAlD,CAAkD;QACjF,2BAA2B,EAAE;YACzB,SAAS,EAAE,kEAAgC,GAAE;SAChD;KACJ;IACD,GAAG,EAAE,GAAG;IACR,eAAe,EAAE,kBAAkB;IACnC,QAAQ,EAAE,qBAAqB;IAC/B,OAAO,EAAE,UAAC,MAAM,EAAE,GAAG;QACjB,uEAAuE;QACvE,IAAI,GAAG,IAAI,2BAA2B,EAAE;YACpC,oDAAkB,EAAC,MAAM,EAAE,8CAAuB,EAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;SAC3E;IACL,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACtCF,0HAA+D;AAI/D;;GAEG;AACU,wBAAgB,GAAuC;IAChE,GAAG,EAAE,iBAAiB;IACtB,eAAe,EAAE,OAAO;IACxB,QAAQ,EAAE,kBAAkB;IAC5B,SAAS,EAAE,qBAAW,IAAI,QAAC,CAAC,WAAW,CAAC,YAAY,EAA1B,CAA0B;IACpD,OAAO,EAAE,gBAAM;QACX,kDAAgB,EAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACfF,0HAAyD;AAIzD;;GAEG;AACU,kBAAU,GAAsC;IACzD,GAAG,EAAE,gBAAgB;IACrB,eAAe,EAAE,MAAM;IACvB,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,qBAAW,IAAI,QAAC,CAAC,WAAW,CAAC,MAAM,EAApB,CAAoB;IAC9C,OAAO,EAAE,gBAAM;QACX,4CAAU,EAAC,MAAM,CAAC,CAAC;IACvB,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACfF,0HAA2D;AAI3D;;GAEG;AACU,0BAAkB,GAA8C;IACzE,GAAG,EAAE,wBAAwB;IAC7B,eAAe,EAAE,eAAe;IAChC,QAAQ,EAAE,cAAc;IACxB,SAAS,EAAE,qBAAW,IAAI,QAAC,CAAC,WAAW,CAAC,QAAQ,EAAtB,CAAsB;IAChD,OAAO,EAAE,gBAAM;QACX,8CAAY,EAAC,MAAM,CAAC,CAAC;IACzB,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACfF,0HAA0D;AAI1D;;GAEG;AACU,yBAAiB,GAA6C;IACvE,GAAG,EAAE,uBAAuB;IAC5B,eAAe,EAAE,cAAc;IAC/B,QAAQ,EAAE,iBAAiB;IAC3B,OAAO,EAAE,gBAAM;QACX,6CAAW,EAAC,MAAM,CAAC,CAAC;IACxB,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACdF,0HAAyD;AAIzD;;GAEG;AACU,kBAAU,GAAsC;IACzD,GAAG,EAAE,gBAAgB;IACrB,eAAe,EAAE,MAAM;IACvB,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,qBAAW,IAAI,QAAC,CAAC,WAAW,CAAC,YAAY,EAA1B,CAA0B;IACpD,OAAO,EAAE,gBAAM;QACX,4CAAU,EAAC,MAAM,CAAC,CAAC;IACvB,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACfF,0HAA6D;AAI7D;;GAEG;AACU,8BAAsB,GAAkD;IACjF,GAAG,EAAE,4BAA4B;IACjC,eAAe,EAAE,oBAAoB;IACrC,QAAQ,EAAE,cAAc;IACxB,OAAO,EAAE,gBAAM;QACX,gDAAc,EAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACvC,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACdF,0HAA6D;AAI7D;;GAEG;AACU,4BAAoB,GAAgD;IAC7E,GAAG,EAAE,0BAA0B;IAC/B,eAAe,EAAE,iBAAiB;IAClC,QAAQ,EAAE,sBAAsB;IAChC,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,gBAAM;QACX,gDAAc,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtC,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACfF,0HAA0D;AAS1D,IAAM,SAAS,GAAe;IAC1B,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,4BAA4B,EAAE;IACvD,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,gCAAgC,EAAE;IACjE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,8BAA8B,EAAE;IAC3D,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,8CAA8C,EAAE;IACjF,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,uBAAuB,EAAE;IACpD,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,2BAA2B,EAAE;IACxD,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,6BAA6B,EAAE;IACjE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,oCAAoC,EAAE;IACvE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,4BAA4B,EAAE;IAC1D,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,iCAAiC,EAAE;IACjE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,wBAAwB,EAAE;IACpD,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,yBAAyB,EAAE;IAC1D;QACI,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,2DAA2D;KACtE;IACD;QACI,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,qEAAqE;KAChF;IACD;QACI,IAAI,EAAE,wBAAwB;QAC9B,MAAM,EAAE,oEAAoE;KAC/E;IACD,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,wBAAwB,EAAE;IACtD,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE;IAC5C,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,4BAA4B,EAAE;IACxD,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,mCAAmC,EAAE;IACvE,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,+CAA+C,EAAE;IACvF,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,kDAAkD,EAAE;IAC3F,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,mDAAmD,EAAE;IAC1F;QACI,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,0EAA0E;KACrF;IACD,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,8BAA8B,EAAE;IACjE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,2BAA2B,EAAE;IAC3D,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,0BAA0B,EAAE;IACtD,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,+BAA+B,EAAE;IAC1D,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,+BAA+B,EAAE;IACpE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,qCAAqC,EAAE;IACvE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,yCAAyC,EAAE;IACxE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,2BAA2B,EAAE;IACxD,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE;IACrC;QACI,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,6CAA6C;QACrD,aAAa,EAAE,MAAM;KACxB;IACD,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gCAAgC,EAAE,aAAa,EAAE,IAAI,EAAE;IACjF;QACI,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,8DAA8D;QACtE,aAAa,EAAE,KAAK;KACvB;IACD,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,gCAAgC,EAAE,aAAa,EAAE,IAAI,EAAE;IACnF,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,6BAA6B,EAAE,aAAa,EAAE,IAAI,EAAE;IAC7E,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,0BAA0B,EAAE,aAAa,EAAE,IAAI,EAAE;IAC1E,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE;IACrC;QACI,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE,0DAA0D;QAClE,aAAa,EAAE,OAAO;KACzB;IACD;QACI,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,gEAAgE;QACxE,aAAa,EAAE,MAAM;KACxB;IACD,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,gCAAgC,EAAE,aAAa,EAAE,KAAK,EAAE;IACpF,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE;IACrC;QACI,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,0CAA0C;QAClD,aAAa,EAAE,MAAM;KACxB;IACD;QACI,IAAI,EAAE,YAAY;QAClB,MAAM,EACF,sFAAsF;QAC1F,aAAa,EAAE,UAAU;KAC5B;IACD;QACI,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,wEAAwE;QAChF,aAAa,EAAE,QAAQ;KAC1B;IACD;QACI,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,2CAA2C;QACnD,aAAa,EAAE,OAAO;KACzB;IACD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,oCAAoC,EAAE,aAAa,EAAE,KAAK,EAAE;IACzF,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE;IACrC;QACI,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,gDAAgD;QACxD,aAAa,EAAE,OAAO;KACzB;IACD,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,sCAAsC,EAAE,aAAa,EAAE,IAAI,EAAE;IACtF,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,mCAAmC,EAAE,aAAa,EAAE,IAAI,EAAE;IACnF,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gCAAgC,EAAE,aAAa,EAAE,IAAI,EAAE;IACjF,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,oCAAoC,EAAE,aAAa,EAAE,KAAK,EAAE;IACzF,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,4BAA4B,EAAE,aAAa,EAAE,IAAI,EAAE;IAC9E,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE;IACrC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,qCAAqC,EAAE;IACxE,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,2CAA2C,EAAE;IAC5E,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,+CAA+C,EAAE;IAC/E,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,gDAAgD,EAAE;IAC9E,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE;IACrC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,yBAAyB,EAAE;IACzD,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,6CAA6C,EAAE;IAC1E,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,qDAAqD,EAAE;IACvF,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,4CAA4C,EAAE;IACzE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,gDAAgD,EAAE;IAC7E,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,0CAA0C,EAAE;IACrE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,uDAAuD,EAAE;IACnF,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,6CAA6C,EAAE;IACxE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,qDAAqD,EAAE;IACjF,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,4CAA4C,EAAE;IACvE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,4CAA4C,EAAE;IACxE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE;IACrC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,uBAAuB,EAAE;IAClD,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,8BAA8B,EAAE,EAAE,yBAAyB;CACzF,CAAC;AAEF,IAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,UAAC,KAAK,EAAE,IAAI;IAC/C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC;IACrD,OAAO,KAAK,CAAC;AACjB,CAAC,EAA0B,EAAE,CAAC,CAAC;AAE/B,IAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,UAAC,KAAK,EAAE,IAAI;IAClD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7C,OAAO,KAAK,CAAC;AACjB,CAAC,EAA0B,EAAE,CAAC,CAAC;AAE/B,IAAM,cAAc,GAAG,kBAAkB,CAAC;AAE1C;;GAEG;AACU,kBAAU,GAAsC;IACzD,GAAG,EAAE,gBAAgB;IACrB,eAAe,EAAE,MAAM;IACvB,QAAQ,EAAE,MAAM;IAChB,YAAY,EAAE;QACV,KAAK,EAAE,aAAa;QACpB,kBAAkB,EAAE,qBAAW;;YAC3B,IAAM,OAAO,GAAG,iBAAW,CAAC,QAAQ,0CAAE,KAAK,CAAC,cAAc,CAAC,CAAC;YAC5D,IAAM,SAAS,GAAG,aAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,CAAC,0CAAE,WAAW,EAAE,CAAC;YAC9C,IAAM,WAAW,GAAG,CAAC,SAAS,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;YAErE,OAAO,WAAW,CAAC;QACvB,CAAC;QACD,gBAAgB,EAAE,IAAI;KACzB;IACD,OAAO,EAAE,UAAC,MAAM,EAAE,IAAI;QAClB,6CAAW,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACzKF,0HAA0D;AAI1D,IAAM,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAElF;;GAEG;AACU,sBAAc,GAA0C;IACjE,GAAG,EAAE,oBAAoB;IACzB,eAAe,EAAE,WAAW;IAC5B,QAAQ,EAAE,UAAU;IACpB,YAAY,EAAE;QACV,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI;YAC/B,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,OAAO,GAAG,CAAC;QACf,CAAC,EAA0B,EAAE,CAAC;QAC9B,kBAAkB,EAAE,qBAAW,YAAI,wBAAW,CAAC,QAAQ,mCAAI,EAAE;QAC7D,gBAAgB,EAAE,IAAI;KACzB;IACD,OAAO,EAAE,UAAC,MAAM,EAAE,IAAI;QAClB,6CAAW,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACxBF,0HAA6D;AAI7D;;GAEG;AACU,8BAAsB,GAAkD;IACjF,GAAG,EAAE,4BAA4B;IACjC,eAAe,EAAE,oBAAoB;IACrC,QAAQ,EAAE,cAAc;IACxB,OAAO,EAAE,gBAAM;QACX,gDAAc,EAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACvC,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACdF,0HAA6D;AAI7D;;GAEG;AACU,4BAAoB,GAAgD;IAC7E,GAAG,EAAE,0BAA0B;IAC/B,eAAe,EAAE,iBAAiB;IAClC,QAAQ,EAAE,sBAAsB;IAChC,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,gBAAM;QACX,gDAAc,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACfF,0HAA0D;AAI1D,SAAS,WAAW,CAAC,GAAa;IAC9B,IAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAEzC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;IACpB,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;IACzB,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAEtC,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;GAEG;AACU,yBAAiB,GAA6C;IACvE,GAAG,EAAE,uBAAuB;IAC5B,eAAe,EAAE,cAAc;IAC/B,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,gBAAM;QACX,IAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACtC,IAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAqB,CAAC;QAC5D,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAErC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE;YACjC,IAAI,SAAS,CAAC,KAAK,EAAE;gBACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC7C,6CAAW,EAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3C;aACJ;QACL,CAAC,CAAC,CAAC;QAEH,IAAI;YACA,SAAS,CAAC,KAAK,EAAE,CAAC;SACrB;gBAAS;YACN,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;SACxC;IACL,CAAC;CACJ,CAAC;;;;;;;;;;;;;;;ACxCF,0HAA8E;AAC9E,mKAA0E;AAI1E;;GAEG;AACU,wBAAgB,GAA4C;IACrE,GAAG,EAAE,sBAAsB;IAC3B,eAAe,EAAE,aAAa;IAC9B,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,UAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW;QAC/B,6BAAqB,qDAAmB,EAAC,MAAM,CAAC,MAA/C,WAAW,UAAE,GAAG,QAA+B,CAAC;QACvD,IAAM,KAAK,GAAG;YACV,GAAG,EAAE;gBACD,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,qBAA8B;gBACxC,gBAAgB,EAAE,mBAAmB;gBACrC,SAAS,EAAE,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,EAAE;aACvB;YACD,WAAW,EAAE;gBACT,QAAQ,EAAE,2BAAoC;gBAC9C,gBAAgB,EAAE,YAAY;gBAC9B,SAAS,EAAE,WAAW;aACzB;SACJ,CAAC;QAEF,qCAAe,EACX,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,KAAK,EACL,OAAO,EACP,UAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM;YACvB,IAAI,QAAQ,IAAI,KAAK,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,GAAG,EAAE;gBACvD,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC;gBAC9B,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;gBACtB,OAAO,MAAM,CAAC;aACjB;iBAAM;gBACH,OAAO,IAAI,CAAC;aACf;QACL,CAAC,CACJ,CAAC,IAAI,CAAC,gBAAM;YACT,MAAM,CAAC,KAAK,EAAE,CAAC;YAEf,IAAI,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,WAAW,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE;gBAClF,4CAAU,EAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;aAClE;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAC;;;;;;;;;;;;;;;ACnDF,sDAA+B;AAC/B,wGAA8E;AAC9E,0HAA0D;AAC1D,0HAA2D;AAC3D,oGAA6D;AAM7D,IAAM,OAAO,GAAG,EAAE,CAAC;AACnB,IAAM,OAAO,GAAG,EAAE,CAAC;AACnB,IAAM,UAAU,GAAG,4BAAc,EAAC;IAC9B,WAAW,EAAE;QACT,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,mBAAmB;QAC3B,OAAO,EAAE,cAAc;QACvB,MAAM,EAAE,SAAS;QACjB,eAAe,EAAE,aAAa;KACjC;IACD,OAAO,EAAE;QACL,MAAM,EAAE,mBAAmB;KAC9B;IACD,SAAS,EAAE;QACP,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,aAAa;KAC3B;IACD,cAAc,EAAE;QACZ,UAAU,EAAE,MAAM;KACrB;IACD,KAAK,EAAE;QACH,MAAM,EAAE,OAAO;KAClB;CACJ,CAAC,CAAC;AAEH;;GAEG;AACU,yBAAiB,GAA6C;IACvE,GAAG,EAAE,uBAAuB;IAC5B,eAAe,EAAE,cAAc;IAC/B,QAAQ,EAAE,OAAO;IACjB,YAAY,EAAE;QACV,KAAK,EAAE;YACH,eAAe,EAAE,iBAAiB;SACrC;QACD,UAAU,EAAE,UAAC,IAAI,EAAE,OAAO;YACtB,OAAO,oBAAC,eAAe,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAI,CAAC;QAC7D,CAAC;QACD,2BAA2B,EAAE;YACzB,SAAS,EAAE,UAAU,CAAC,SAAS;SAClC;KACJ;IACD,OAAO,EAAE,UAAC,MAAM,EAAE,GAAG;QACX,SAAe,QAAQ,CAAC,GAAG,CAAC,EAA1B,GAAG,WAAE,GAAG,SAAkB,CAAC;QACnC,6CAAW,EAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;CACJ,CAAC;AAEF,SAAS,QAAQ,CAAC,GAAW;IACnB,6BAAa,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAA1B,GAAG,UAAE,GAAG,QAAkB,CAAC;IAClC,OAAO;QACH,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC;QAClB,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC;KACrB,CAAC;AACN,CAAC;AAED,SAAS,eAAe,CAAC,KAMxB;;IACW,QAAI,GAAc,KAAK,KAAnB,EAAE,OAAO,GAAK,KAAK,QAAV,CAAW;IAC1B,6BAAgB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAhC,GAAG,UAAE,MAAM,QAAqB,CAAC;IAClC,6BAAgB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAhC,GAAG,UAAE,MAAM,QAAqB,CAAC;IAExC,IAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAChC,UAAC,CAAQ;;QACL,IAAI,CAAC,IAAI,8CAAY,EAAC,CAAC,EAAE,cAAc,CAAC,EAAE;YACtC,IAAM,KAAG,GAAG,QAAQ,CAAC,OAAC,CAAC,OAAO,CAAC,GAAG,mCAAI,IAAI,CAAC,CAAC;YAC5C,IAAM,KAAG,GAAG,QAAQ,CAAC,OAAC,CAAC,OAAO,CAAC,GAAG,mCAAI,IAAI,CAAC,CAAC;YAE5C,IAAI,KAAG,GAAG,CAAC,IAAI,KAAG,IAAI,OAAO,IAAI,KAAG,GAAG,CAAC,IAAI,KAAG,IAAI,OAAO,EAAE;gBACxD,MAAM,CAAC,KAAG,CAAC,CAAC;gBACZ,MAAM,CAAC,KAAG,CAAC,CAAC;aACf;SACJ;IACL,CAAC,EACD,CAAC,MAAM,EAAE,MAAM,CAAC,CACnB,CAAC;IAEF,IAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAClC,UAAC,CAAsC;QACnC,UAAU,CAAC,CAAC,CAAC,MAAc,CAAC,CAAC;IACjC,CAAC,EACD,CAAC,UAAU,CAAC,CACf,CAAC;IAEF,IAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CACnC,UAAC,CAAsC;QACnC,OAAO,CAAC,CAAC,kDACF,IAAI,KACP,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,IAC1B,CAAC;IACP,CAAC,EACD,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CACtB,CAAC;IAEF,IAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAa;;QACzC,IAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAM,KAAG,GAAa,EAAE,CAAC;YACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE;gBAC/B,KAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,UAAI,CAAC,IAAI,mCAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;aAC9C;YACD,MAAM,CAAC,CAAC,CAAC,GAAG,KAAG,CAAC;SACnB;QACD,OAAO,MAAM,CAAC;IAClB,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhB,IAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;QACxB,IAAM,KAAK,GAAkB,EAAE,CAAC;QAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE;gBAC/B,IAAM,GAAG,GAAG,UAAQ,CAAC,SAAI,CAAG,CAAC;gBAC7B,IAAM,UAAU,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC;gBACxC,KAAK,CAAC,IAAI,CACN,gCACI,SAAS,EACL,UAAU,CAAC,WAAW,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAEzE,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,GAAG,cACG,CAAC,cACD,CAAC,uBACQ,IAAI,EACvB,YAAY,EAAE,YAAY,gBACd,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAC9B,CACL,CAAC;aACL;SACJ;QAED,OAAO,KAAK,CAAC;IACjB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAEf,IAAM,IAAI,GAAG,UAAU,CAAC,UAAI,CAAC,IAAI,mCAAI,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAEnD,OAAO,CACH,6BAAK,SAAS,EAAE,UAAU,CAAC,cAAc;QACrC,6BAAK,SAAS,EAAE,UAAU,CAAC,KAAK,IAAG,IAAI,CAAO;QAC9C,oBAAC,qBAAS,IACN,oBAAoB,EAAC,UAAU,EAC/B,SAAS,EAAE,8BAAkB,CAAC,aAAa,EAC3C,sBAAsB,EAAE,UAAU,IACjC,KAAK,CACE,CACV,CACT,CAAC;AACN,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,GAAW,EAAE,GAAW;IACtD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,GAAW;IACvC,OAAU,GAAG,SAAI,GAAK,CAAC;AAC3B,CAAC;;;;;;;;;;;;;;AC/KD,0HAA2D;AAI3D;;GAEG;AACU,oBAAY,GAAwC;IAC7D,GAAG,EAAE,kBAAkB;IACvB,eAAe,EAAE,QAAQ;IACzB,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,qBAAW,IAAI,QAAC,CAAC,WAAW,CAAC,QAAQ,EAAtB,CAAsB;IAChD,OAAO,EAAE,gBAAM;QACX,8CAAY,EAAC,MAAM,CAAC,CAAC;IACzB,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACfF,0HAA2D;AAI3D;;GAEG;AACU,iBAAS,GAAqC;IACvD,GAAG,EAAE,eAAe;IACpB,eAAe,EAAE,eAAe;IAChC,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,gBAAM;QACX,8CAAY,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACXF;;;GAGG;AACU,oBAAY,GAA8C;IACnE,GAAG,EAAE,wBAAwB;IAC7B,eAAe,EAAE,eAAe;IAChC,QAAQ,EAAE,cAAc;IACxB,OAAO,EAAE;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACdF,0HAA8D;AAI9D;;GAEG;AACU,0BAAkB,GAA8C;IACzE,GAAG,EAAE,wBAAwB;IAC7B,eAAe,EAAE,eAAe;IAChC,QAAQ,EAAE,cAAc;IACxB,SAAS,EAAE,qBAAW,IAAI,QAAC,CAAC,WAAW,CAAC,WAAW,EAAzB,CAAyB;IACnD,OAAO,EAAE,gBAAM;QACX,iDAAe,EAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACfF,4HAAoD;AAIpD;;GAEG;AACU,kBAAU,GAAsC;IACzD,GAAG,EAAE,gBAAgB;IACrB,eAAe,EAAE,MAAM;IACvB,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,qBAAW,IAAI,QAAC,WAAW,CAAC,OAAO,EAApB,CAAoB;IAC/C,OAAO,EAAE,gBAAM;QACX,uCAAI,EAAC,MAAM,CAAC,CAAC;IACjB,CAAC;IACD,oBAAoB,EAAE;QAClB,YAAY,EAAE;YACV,IAAI,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;SAClC;KACJ;CACJ,CAAC;;;;;;;;;;;;;;ACpBF,0HAAyD;AAIzD;;GAEG;AACU,wBAAgB,GAA4C;IACrE,GAAG,EAAE,sBAAsB;IAC3B,eAAe,EAAE,aAAa;IAC9B,QAAQ,EAAE,YAAY;IACtB,UAAU,EAAE,qBAAW,IAAI,QAAC,WAAW,CAAC,SAAS,EAAtB,CAAsB;IACjD,OAAO,EAAE,gBAAM;QACX,4CAAU,EAAC,MAAM,CAAC,CAAC;IACvB,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACfF,0HAA2D;AAI3D;;GAEG;AACU,iBAAS,GAAqC;IACvD,GAAG,EAAE,eAAe;IACpB,eAAe,EAAE,eAAe;IAChC,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,gBAAM;QACX,8CAAY,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACdF,0HAA8D;AAI9D,IAAM,IAAI,GAA6B;IACnC,qBAAqB;IACrB,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;CACvB,CAAC;AACF,IAAM,QAAQ,GAAoD;IAC9D,kBAAkB,EAAE,WAAW;IAC/B,kBAAkB,EAAE,WAAW;IAC/B,kBAAkB,EAAE,WAAW;IAC/B,kBAAkB,EAAE,WAAW;IAC/B,kBAAkB,EAAE,WAAW;IAC/B,kBAAkB,EAAE,WAAW;IAC/B,GAAG,EAAE,GAAG;IACR,mBAAmB,EAAE,YAAY;CACpC,CAAC;AAEF;;GAEG;AACU,6BAAqB,GAAyC;IACvE,GAAG,EAAE,mBAAmB;IACxB,eAAe,EAAE,SAAS;IAC1B,QAAQ,EAAE,SAAS;IACnB,YAAY,EAAE;QACV,KAAK,EAAE,QAAQ;QACf,kBAAkB,EAAE,qBAAW;;YAC3B,OAAO,CAAC,iBAAW,CAAC,YAAY,mCAAI,CAAC,CAAC,GAAG,CAAC;gBACtC,CAAC,CAAC,SAAS,GAAG,WAAW,CAAC,YAAY;gBACtC,CAAC,CAAC,WAAW,CAAC;QACtB,CAAC;KACJ;IACD,OAAO,EAAE,UAAC,MAAM,EAAE,GAAG;QACjB,IAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEvC,iDAAe,EAAC,MAAM,EAAE,YAAyC,CAAC,CAAC;IACvE,CAAC;CACJ,CAAC;;;;;;;;;;;;;;AC5CF,0HAAkE;AAIlE;;GAEG;AACU,2BAAmB,GAA+C;IAC3E,GAAG,EAAE,yBAAyB;IAC9B,eAAe,EAAE,eAAe;IAChC,QAAQ,EAAE,eAAe;IACzB,SAAS,EAAE,qBAAW,IAAI,QAAC,CAAC,WAAW,CAAC,eAAe,EAA7B,CAA6B;IACvD,OAAO,EAAE,gBAAM;QACX,qDAAmB,EAAC,MAAM,CAAC,CAAC;IAChC,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACfF,0HAA8D;AAI9D;;GAEG;AACU,uBAAe,GAA2C;IACnE,GAAG,EAAE,qBAAqB;IAC1B,eAAe,EAAE,WAAW;IAC5B,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,qBAAW,IAAI,QAAC,CAAC,WAAW,CAAC,WAAW,EAAzB,CAAyB;IACnD,OAAO,EAAE,gBAAM;QACX,iDAAe,EAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACfF,0HAAgE;AAIhE;;GAEG;AACU,yBAAiB,GAA6C;IACvE,GAAG,EAAE,uBAAuB;IAC5B,eAAe,EAAE,aAAa;IAC9B,QAAQ,EAAE,aAAa;IACvB,SAAS,EAAE,qBAAW,IAAI,QAAC,CAAC,WAAW,CAAC,aAAa,EAA3B,CAA2B;IACrD,OAAO,EAAE,gBAAM;QACX,mDAAiB,EAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACfF,iLAAkF;AAClF,0HAA2D;AAG3D,mJAI4C;AAC5C,sMAG6D;AAE7D,IAAM,GAAG,GAA0B,qBAAqB,CAAC;AAEzD;;GAEG;AACU,uBAAe,GAA2C;IACnE,YAAY,EAAE;QACV,KAAK,EAAE,mCAAsB;QAC7B,aAAa,EAAE,6DAA2B,GAAE;QAC5C,gBAAgB,EAAE,IAAI;QACtB,UAAU,EAAE,UAAC,IAAI,EAAE,OAAO,IAAK,gDAAiB,EAAC,IAAI,EAAE,uBAAU,EAAE,OAAO,CAAC,EAA5C,CAA4C;QAC3E,2BAA2B,EAAE;YACzB,SAAS,EAAE,kEAAgC,GAAE;SAChD;KACJ;IACD,GAAG,EAAE,GAAG;IACR,eAAe,EAAE,YAAY;IAC7B,QAAQ,EAAE,WAAW;IACrB,OAAO,EAAE,UAAC,MAAM,EAAE,GAAG;QACjB,uEAAuE;QACvE,IAAI,GAAG,IAAI,qBAAqB,EAAE;YAC9B,8CAAY,EAAC,MAAM,EAAE,kCAAiB,EAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;SAC/D;IACL,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACtCF,0HAA8D;AAI9D;;GAEG;AACU,uBAAe,GAA2C;IACnE,GAAG,EAAE,qBAAqB;IAC1B,eAAe,EAAE,WAAW;IAC5B,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,qBAAW,IAAI,QAAC,CAAC,WAAW,CAAC,WAAW,EAAzB,CAAyB;IACnD,OAAO,EAAE,gBAAM;QACX,iDAAe,EAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACJ,CAAC;;;;;;;;;;;;;;ACfF,4HAAoD;AAIpD;;GAEG;AACU,kBAAU,GAAsC;IACzD,GAAG,EAAE,gBAAgB;IACrB,eAAe,EAAE,MAAM;IACvB,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,qBAAW,IAAI,QAAC,WAAW,CAAC,OAAO,EAApB,CAAoB;IAC/C,OAAO,EAAE,gBAAM;QACX,uCAAI,EAAC,MAAM,CAAC,CAAC;IACjB,CAAC;IACD,oBAAoB,EAAE;QAClB,YAAY,EAAE;YACV,IAAI,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;SAClC;KACJ;CACJ,CAAC;;;;;;;;;;;;;;;ACpBF,sDAA+B;AAC/B,0GAA4D;AAC5D,wGAAmE;AACnE,iKAA2E;AAC3E,0HAA4D;AAC5D,0GAA4D;AAC5D,oGAA0D;AAC1D,yIAAuD;AAWvD,IAAM,eAAe,GAAG,yBAAW,EAAC;IAChC,kBAAkB,EAAE;QAChB,OAAO,EAAE,KAAK;KACjB;CACJ,CAAC,CAAC;AAEH,IAAM,OAAO,GAAG,yBAAW,EAAC;IACxB,SAAS,EAAE,YAAY;CAC1B,CAAC,CAAC;AAEH,IAAI,eAAe,GAAG,KAAK,CAAC;AAE5B;;;;GAIG;AACH,SAAgB,MAAM,CAAmB,KAAqB;IAClD,UAAM,GAA4B,KAAK,OAAjC,EAAE,OAAO,GAAmB,KAAK,QAAxB,EAAE,OAAO,GAAU,KAAK,QAAf,EAAE,GAAG,GAAK,KAAK,IAAV,CAAW;IAC1C,6BAAgC,KAAK,CAAC,QAAQ,CAAiC,IAAI,CAAC,MAAnF,WAAW,UAAE,cAAc,QAAwD,CAAC;IAC3F,IAAM,KAAK,GAAG,GAAG,IAAI,KAAK,CAAC;IAE3B,IAAI,CAAC,eAAe,EAAE;QAClB,eAAe,GAAG,IAAI,CAAC;QACvB,qCAAe,GAAE,CAAC;KACrB;IAED,IAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAC7B,UAAC,CAAC,EAAE,IAA0B;QAC1B,IAAI,IAAI,EAAE;YACN,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAS,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;SAC/D;IACL,CAAC,EACD,CAAC,MAAM,EAAE,OAAO,CAAC,CACpB,CAAC;IAEF,IAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAC7B,UAAC,MAAuB,EAAE,GAAW;QACjC,MAAM,CAAC,gBAAgB,CAAI,MAAM,EAAE,GAAQ,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC,EACD,CAAC,MAAM,EAAE,OAAO,CAAC,CACpB,CAAC;IAEF,IAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC;QAChC,MAAM,CAAC,eAAe,EAAE,CAAC;IAC7B,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,IAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAC9B,UACI,KAAgC,EAChC,aAAwE;QAExE,IAAI,CAAC,aAAa,EAAE;YAChB,OAAO,IAAI,CAAC;SACf;QACD,OAAO,8BAAM,SAAS,EAAE,OAAO,IAAG,aAAa,CAAC,KAAK,CAAC,CAAQ,CAAC;IACnE,CAAC,EACD,EAAE,CACL,CAAC;IAEF,IAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC;QAClC,OAAO,OAAO,CAAC,GAAG,CACd,UAAC,MAAM;;YACH,IAAM,YAAY,GACd,WAAW,KAAI,kBAAM,CAAC,YAAY,0CAAE,kBAAkB,mDAAG,WAAW,CAAC,EAAC;YAC1E,IAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;YAEzC,IAAM,MAAM,2BACR,GAAG,EAAE,MAAM,CAAC,GAAG,EACf,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE;oBACP,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC5B,EACD,YAAY,EAAE,KAAK,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAChE,QAAQ,EAAE,IAAI,EACd,IAAI,EAAE,2CAAkB,EAAC,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,eAAe,CAAC,EACrE,SAAS,EAAE,2CAAkB,EAAC,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,eAAe,CAAC,EAC1E,QAAQ,EAAE,IAAI,EACd,OAAO,EAAE,CAAC,WAAW,KAAI,YAAM,CAAC,SAAS,+CAAhB,MAAM,EAAa,WAAW,CAAC,EAAC,IAAI,KAAK,EAClE,QAAQ,EAAE,CAAC,WAAW,KAAI,YAAM,CAAC,UAAU,+CAAjB,MAAM,EAAc,WAAW,CAAC,EAAC,IAAI,KAAK,IACjE,CAAC,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC,CACzC,CAAC;YAEF,IAAM,uBAAuB,GAAyC,UAClE,KAAK,EACL,eAAe;gBAEf,YAAK,IAAI,eAAe,CAAC,CAAC,CAAC,CACvB,6BAAK,WAAW,EAAE,WAAC,IAAI,cAAO,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,EAA1B,CAA0B,IAC5C,eAAe,CAAC,KAAK,CAAC,CACrB,CACT,CAAC,CAAC,CAAC,IAAI;YAJR,CAIQ,CAAC;YAEb,IAAI,YAAY,EAAE;gBACd,MAAM,CAAC,YAAY,2BACf,kBAAkB,EAAE,IAAI,EACxB,cAAc,EAAE,EAAE,SAAS,EAAE,8BAAkB,CAAC,aAAa,EAAE,EAC/D,eAAe,EAAE,SAAS,EAC1B,WAAW,EAAE,OAAO,EACpB,0BAA0B,EAAE,YAAY,CAAC,gBAAgB;wBACrD,CAAC,CAAC,uBAAuB;wBACzB,CAAC,CAAC,SAAS,EACf,KAAK,EAAE,+CAAa,EAAC,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,aAAG,IAAI,QAAC;wBACjD,GAAG,EAAE,GAAG;wBACR,IAAI,EAAE,2CAAkB,EACpB,OAAO,EACP,GAAG,EACH,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAC1B;wBACD,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,kBAAkB;wBAC3C,OAAO,EAAE,YAAY,IAAI,GAAG,IAAI,KAAK;wBACrC,SAAS,EAAE,YAAY,CAAC,aAAa;wBACrC,QAAQ,EAAE,YAAY,CAAC,UAAU;4BAC7B,CAAC,CAAC,cAAI,IAAI,mBAAY,CAAC,UAAW,CAAC,IAAI,EAAE,OAAO,CAAC,EAAvC,CAAuC;4BACjD,CAAC,CAAC,SAAS;qBAClB,CAAC,EAdkD,CAclD,CAAC,IACA,CAAC,YAAY,CAAC,2BAA2B,IAAI,EAAE,CAAC,CACtD,CAAC;aACL;iBAAM;gBACH,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;aAC5B;YAED,OAAO,MAAM,CAAC;QAClB,CAAC,CACJ,CAAC;IACN,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAExE,KAAK,CAAC,SAAS,CAAC;QACZ,IAAM,QAAQ,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,6BAA6B,CAAC,cAAc,CAAC,CAAC;QAEvE,OAAO;YACH,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,EAAI,CAAC;QACjB,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,IAAM,eAAe,GAAG,2BAAoC,CAAC;IAE7D,OAAO,CACH,oBAAC,uBAAU,0BACP,KAAK,EAAE,eAAe,IAClB,KAAK,IACT,SAAS,EAAE,eAAe,GAAG,GAAG,GAAG,CAAC,MAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,KAAI,EAAE,CAAC,EAC3D,mBAAmB,0BACf,SAAS,EAAE,2CAAkB,EACzB,OAAO,EACP,eAAe,CAAC,GAAG,EACnB,eAAe,CAAC,eAAe,CAClC,IACE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,mBAAmB,KAEnC,CACL,CAAC;AACN,CAAC;AAxID,wBAwIC;;;;;;;;;;;;;;AChID,2HAA4C;AAAnC,uGAAM;AACf,wJAAiE;AAAxD,2IAAkB;AAC3B,kIAAkD;AAAzC,mHAAU;AACnB,kIAAkD;AAAzC,mHAAU;AACnB,uJAAgE;AAAvD,wIAAiB;AAC1B,0JAAkE;AAAzD,2IAAkB;AAC3B,iJAA4D;AAAnD,kIAAe;AACxB,oJAA8D;AAArD,qIAAgB;AACzB,mKAAwE;AAA/D,oJAAqB;AAC9B,oJAA8D;AAArD,qIAAgB;AACzB,kIAAkD;AAAzC,mHAAU;AACnB,0JAAkE;AAAzD,2IAAkB;AAC3B,uJAAgE;AAAvD,wIAAiB;AAC1B,kIAAkD;AAAzC,mHAAU;AACnB,sKAA0E;AAAjE,uJAAsB;AAC/B,gKAAsE;AAA7D,iJAAoB;AAC7B,kIAAkD;AAAzC,mHAAU;AACnB,8IAA0D;AAAjD,+HAAc;AACvB,sKAA0E;AAAjE,uJAAsB;AAC/B,gKAAsE;AAA7D,iJAAoB;AAC7B,uJAAgE;AAAvD,wIAAiB;AAC1B,oJAA8D;AAArD,qIAAgB;AACzB,wJAAgE;AAAvD,wIAAiB;AAC1B,wIAAsD;AAA7C,yHAAY;AACrB,+HAAgD;AAAvC,gHAAS;AAClB,0JAAkE;AAAzD,2IAAkB;AAC3B,oJAA8D;AAArD,qIAAgB;AACzB,+HAAgD;AAAvC,gHAAS;AAClB,mKAAwE;AAA/D,oJAAqB;AAC9B,6JAAoE;AAA3D,8IAAmB;AAC5B,iJAA4D;AAAnD,kIAAe;AACxB,uJAAgE;AAAvD,wIAAiB;AAC1B,iJAA4D;AAAnD,kIAAe;AACxB,iJAA4D;AAAnD,kIAAe;;;;;;;;;;;;;;AC5ExB,0HAA6D;AAC7D,0HAA4D;AAO5D;IAOI;;;OAGG;IACH,0BAAoB,eAA6B;QAA7B,uDAA6B;QAA7B,oBAAe,GAAf,eAAe,CAAc;QAVzC,WAAM,GAAmB,IAAI,CAAC;QAC9B,oBAAe,GAA4D,IAAI,CAAC;QAChF,UAAK,GAAG,CAAC,CAAC;QACV,gBAAW,GAAmC,IAAI,CAAC;QACnD,gBAAW,GAAuB,IAAI,CAAC;IAMK,CAAC;IAErD;;OAEG;IACH,kCAAO,GAAP;QACI,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,qCAAU,GAAV,UAAW,MAAe;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,kCAAO,GAAP;QACI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,wCAAa,GAAb,UAAc,KAAkB;QAC5B,QAAQ,KAAK,CAAC,SAAS,EAAE;YACrB,KAAK,aAAa,CAAC;YACnB,KAAK,gBAAgB,CAAC;YACtB,KAAK,aAAa;gBACd,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,MAAM;YAEV,KAAK,SAAS,CAAC;YACf,KAAK,SAAS;gBACV,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,MAAM;SACb;IACL,CAAC;IAED;;;OAGG;IACH,yCAAc,GAAd,UAAe,WAAwB;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,wDAA6B,GAA7B,UAA8B,QAAwD;QAAtF,iBAMC;QALG,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;QAEhC,OAAO;YACH,KAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAChC,CAAC,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACH,wCAAa,GAAb,UACI,MAAuB,EACvB,GAAM,EACN,OAA6B;;QAE7B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAE7B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAE5D,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,KAAI,YAAM,CAAC,YAAY,0CAAE,kBAAkB,GAAE;gBAClF,IAAI,CAAC,YAAY,EAAE,CAAC;aACvB;SACJ;IACL,CAAC;IAED;;;;;OAKG;IACH,2CAAgB,GAAhB,UACI,MAAuB,EACvB,GAAM,EACN,OAA6B;QAE7B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;YACjC,IAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAEpD,+DAA+D;YAC/D,uIAAuI;YACvI,IAAM,KAAK,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAE/D,IAAI,cAAc,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE;gBAChF,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;gBAC9B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;aAC/D;SACJ;IACL,CAAC;IAED;;OAEG;IACH,0CAAe,GAAf;;QACI,UAAI,CAAC,MAAM,0CAAE,cAAc,EAAE,CAAC;IAClC,CAAC;IAEO,sCAAW,GAAnB;QAAA,iBAeC;;QAdG,IAAM,MAAM,GAAG,UAAI,CAAC,MAAM,0CAAE,WAAW,GAAG,WAAW,CAAC;QAEtD,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;SACV;QAED,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnC;QAED,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;;YAC3B,KAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACf,WAAI,CAAC,YAAY,+CAAjB,KAAI,CAAiB,CAAC;QAC1B,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAC7B,CAAC;IAEO,uCAAY,GAApB;QAAA,iBAgBC;QAfG,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE;YACrC,IAAM,gBAAc,GAAG,gDAAc,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnD,IAAM,aAAa,GAAG,+CAAa,EAAC,gBAAc,CAAC,CAAC;YAEpD,IACI,CAAC,IAAI,CAAC,WAAW;gBACjB,aAAa,CAAC,MAAM,IAAI,+CAAa,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM;gBAC9D,+CAAa,EAAC,gBAAc,CAAC,CAAC,IAAI,CAC9B,aAAG,YAAI,uBAAc,CAAC,GAAG,CAAC,KAAI,WAAI,CAAC,WAAW,0CAAG,GAAG,CAAC,KACxD,EACH;gBACE,IAAI,CAAC,WAAW,GAAG,gBAAc,CAAC;gBAClC,IAAI,CAAC,eAAe,CAAC,gBAAc,CAAC,CAAC;aACxC;SACJ;IACL,CAAC;IACL,uBAAC;AAAD,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,eAAwB;IACvD,OAAO,IAAI,gBAAgB,CAAC,eAAe,CAAC,CAAC;AACjD,CAAC;AAFD,gDAEC;;;;;;;;;;;;;;;ACjLD,sDAA+B;AAC/B,8GAAuD;AACvD,wGAA8E;AAC9E,4HAAsD;AACtD,gGAAqD;AAKrD;;;;GAIG;AACH,SAAgB,OAAO,CAAC,KAAmB;IACvC,IAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IACrD,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IAClD,IAAM,KAAK,GAAG,oBAAQ,GAAE,CAAC;IAEjB,eAAW,GAAyC,KAAK,YAA9C,EAAE,aAAa,GAA0B,KAAK,cAA/B,EAAE,UAAU,GAAc,KAAK,WAAnB,EAAE,OAAO,GAAK,KAAK,QAAV,CAAW;IAElE,KAAK,CAAC,SAAS,CAAC;QACZ,IAAI,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE;YAC9B,IAAM,aAAW,GAAG,6BAAiB,EAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAEhE,OAAO,CAAC,OAAO,CAAC,gBAAM;gBAClB,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE;oBAC7B,MAAM,CAAC,cAAc,CAAC,aAAW,CAAC,CAAC;iBACtC;YACL,CAAC,CAAC,CAAC;SACN;IACL,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;IAE3B,KAAK,CAAC,SAAS,CAAC;;QACZ,IAAI,SAAS,CAAC,OAAO,EAAE;YACnB,MAAM,CAAC,OAAO,GAAG,CAAC,aAAa,IAAI,oBAAoB,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACtF;QAED,IAAI,WAAW,EAAE;YACb,YAAM,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;SAC3B;QAED,OAAO;YACH,IAAI,MAAM,CAAC,OAAO,EAAE;gBAChB,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACzB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;aACzB;QACL,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,KAAK,CAAC,SAAS,CAAC;;QACZ,YAAM,CAAC,OAAO,0CAAE,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,IAAM,QAAQ,GAAG,8BAAc,EAAuC,KAAK,EAAE,yBAAa,CAAC,CAAC;IAC5F,OAAO,CACH,mDACI,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,CAAC,EACX,IAAI,EAAC,SAAS,oBACC,MAAM,IACjB,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAQ,CACnC,CAAC;AACN,CAAC;AAjDD,0BAiDC;AAED,SAAS,oBAAoB,CAAC,GAAmB,EAAE,OAAsB;IACrE,OAAO,IAAI,qCAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAoB;;IAC7C,OAAO,CAAC,CAAC,OAAC,MAA4B,0CAAE,cAAc,EAAC;AAC3D,CAAC;;;;;;;;;;;;;;ACtED,+HAA8C;AAArC,0GAAO;;;;;;;;;;;ACDhB;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,gBAAgB,sCAAsC,kBAAkB;AACjF,wBAAwB;AACxB;AACA;;AAEO;AACP;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEO;AACP;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,2DAA2D,cAAc;AACzE;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,2CAA2C,QAAQ;AACnD;AACA;;AAEO;AACP,kCAAkC;AAClC;;AAEO;AACP,uBAAuB,uFAAuF;AAC9G;AACA;AACA,yGAAyG;AACzG;AACA,sCAAsC,QAAQ;AAC9C;AACA,gEAAgE;AAChE;AACA,8CAA8C,yFAAyF;AACvI,8DAA8D,2CAA2C;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA,kBAAkB,yBAAyB;AAC3C;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA,4CAA4C,yEAAyE;AACrH;;AAEO;AACP;AACA;;AAEO;AACP,0BAA0B,+DAA+D,iBAAiB;AAC1G;AACA,kCAAkC,MAAM,+BAA+B,YAAY;AACnF,iCAAiC,MAAM,mCAAmC,YAAY;AACtF,8BAA8B;AAC9B;AACA,GAAG;AACH;;AAEO;AACP,YAAY,6BAA6B,0BAA0B,cAAc,qBAAqB;AACtG,eAAe,oDAAoD,qEAAqE,cAAc;AACtJ,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,iCAAiC,SAAS;AAC1C,iCAAiC,WAAW,UAAU;AACtD,wCAAwC,cAAc;AACtD;AACA,4GAA4G,OAAO;AACnH,+EAA+E,iBAAiB;AAChG,uDAAuD,gBAAgB,QAAQ;AAC/E,6CAA6C,gBAAgB,gBAAgB;AAC7E;AACA,gCAAgC;AAChC;AACA;AACA,QAAQ,YAAY,aAAa,SAAS,UAAU;AACpD,kCAAkC,SAAS;AAC3C;AACA;;AAEO;AACP;AACA;AACA;AACA,eAAe,oCAAoC;AACnD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;;AAEM;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,MAAM;AACxB;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACO;AACP,2BAA2B,sBAAsB;AACjD;AACA;AACA;;AAEA;AACO;AACP,gDAAgD,QAAQ;AACxD,uCAAuC,QAAQ;AAC/C,uDAAuD,QAAQ;AAC/D;AACA;AACA;;AAEO;AACP,2EAA2E,OAAO;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA,eAAe,uFAAuF,cAAc;AACpH,qBAAqB,gCAAgC,qCAAqC,2CAA2C;AACrI,0BAA0B,MAAM,iBAAiB,YAAY;AAC7D,qBAAqB;AACrB,4BAA4B;AAC5B,2BAA2B;AAC3B,0BAA0B;AAC1B;;AAEO;AACP;AACA,eAAe,6CAA6C,UAAU,sDAAsD,cAAc;AAC1I,wBAAwB,6BAA6B,oBAAoB,uCAAuC,kBAAkB;AAClI;;AAEO;AACP;AACA;AACA,yGAAyG,uFAAuF,cAAc;AAC9M,qBAAqB,8BAA8B,gDAAgD,wDAAwD;AAC3J,2CAA2C,sCAAsC,UAAU,mBAAmB,IAAI;AAClH;;AAEO;AACP,+BAA+B,uCAAuC,YAAY,KAAK,OAAO;AAC9F;AACA;;AAEA;AACA,wCAAwC,4BAA4B;AACpE,CAAC;AACD;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP,2CAA2C;AAC3C;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEA,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;UChUF;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;UENA;UACA;UACA;UACA","sources":["webpack://roosterjsReact/./packages/roosterjs-react/lib/colorPicker/component/renderColorPicker.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/colorPicker/index.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/colorPicker/utils/backgroundColors.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/colorPicker/utils/getClassNamesForColorPicker.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/colorPicker/utils/textColors.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/common/index.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/common/utils/createUIUtilities.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/common/utils/getLocalizedString.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/common/utils/renderReactComponent.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/contextMenu/index.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/contextMenu/menus/createImageEditMenuProvider.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/contextMenu/menus/createListEditMenuProvider.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/contextMenu/menus/createTableEditMenuProvider.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/contextMenu/plugin/createContextMenuPlugin.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/contextMenu/utils/createContextMenuProvider.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/emoji/components/EmojiIcon.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/emoji/components/EmojiNavBar.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/emoji/components/EmojiPane.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/emoji/components/EmojiStatusBar.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/emoji/components/showEmojiCallout.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/emoji/index.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/emoji/plugin/createEmojiPlugin.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/emoji/type/EmojiStrings.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/emoji/utils/emojiList.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/emoji/utils/searchEmojis.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/index.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/inputDialog/component/InputDialog.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/inputDialog/component/InputDialogItem.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/inputDialog/index.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/inputDialog/utils/showInputDialog.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/pasteOptions/component/showPasteOptionPane.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/pasteOptions/index.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/pasteOptions/plugin/createPasteOptionPlugin.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/pasteOptions/utils/buttons.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/alignCenterButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/alignJustifyButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/alignLeftButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/alignRightButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/backgroundColorButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/blockQuoteButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/boldButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/bulletedListButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/clearFormatButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/codeButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/decreaseFontSizeButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/decreaseIndentButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/fontButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/fontSizeButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/increaseFontSizeButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/increaseIndentButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/insertImageButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/insertLinkButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/insertTableButton.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/italicButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/ltrButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/moreCommands.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/numberedListButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/redoButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/removeLinkButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/rtlButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/setHeadingLevelButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/strikethroughButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/subscriptButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/superscriptButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/textColorButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/underlineButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/buttons/undoButton.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/component/Ribbon.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/index.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/ribbon/plugin/createRibbonPlugin.ts","webpack://roosterjsReact/./packages/roosterjs-react/lib/rooster/component/Rooster.tsx","webpack://roosterjsReact/./packages/roosterjs-react/lib/rooster/index.ts","webpack://roosterjsReact/external var \"FluentUIReact\"","webpack://roosterjsReact/external var \"React\"","webpack://roosterjsReact/external var \"ReactDOM\"","webpack://roosterjsReact/external var \"roosterjs\"","webpack://roosterjsReact/./node_modules/tslib/tslib.es6.mjs","webpack://roosterjsReact/webpack/bootstrap","webpack://roosterjsReact/webpack/runtime/define property getters","webpack://roosterjsReact/webpack/runtime/hasOwnProperty shorthand","webpack://roosterjsReact/webpack/runtime/make namespace object","webpack://roosterjsReact/webpack/before-startup","webpack://roosterjsReact/webpack/startup","webpack://roosterjsReact/webpack/after-startup"],"sourcesContent":["import * as React from 'react';\nimport { BackgroundColorDropDownItems, BackgroundColors } from '../utils/backgroundColors';\nimport { mergeStyleSets } from '@fluentui/react/lib/Styling';\nimport { TextColorDropDownItems, TextColors } from '../utils/textColors';\nimport {\n getColorPickerContainerClassName,\n getColorPickerItemClassName,\n} from '../utils/getClassNamesForColorPicker';\nimport type { RibbonButtonDropDown } from '../../ribbon/type/RibbonButtonDropDown';\nimport type { IContextualMenuItem } from '@fluentui/react/lib/ContextualMenu';\nimport type { Colors } from 'roosterjs-content-model-types';\n\nconst classNames = mergeStyleSets({\n colorSquare: {\n width: '20px',\n height: '20px',\n margin: '4px',\n borderStyle: 'solid',\n borderWidth: '2px',\n '&:hover': {\n borderColor: 'red',\n },\n },\n colorSquareBorder: {\n borderColor: 'transparent',\n },\n colorSquareBorderWhite: {\n borderColor: '#bebebe',\n },\n});\n\n/**\n * @internal\n * Render a color picker\n * @param item Color items\n * @param colorDef Definition of colors\n * @param onClick On click event handler\n */\nexport function renderColorPicker<Strings extends string>(\n item: IContextualMenuItem,\n colorDef: Record<Strings, Colors>,\n onClick: (\n e: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>,\n item: IContextualMenuItem\n ) => void\n) {\n const key = item.key as Strings;\n const buttonColor = colorDef[key].lightModeColor;\n\n return (\n <button onClick={e => onClick(e, item)} title={item.text}>\n <div\n className={\n classNames.colorSquare +\n ' ' +\n (key == 'textColorWhite' || key == 'backgroundColorWhite'\n ? classNames.colorSquareBorderWhite\n : classNames.colorSquareBorder)\n }\n style={{\n backgroundColor: buttonColor,\n }}></div>\n </button>\n );\n}\n\n/**\n * Get a drop down data object of color picker used by drop down button\n * @param colorSet The set of color, text or background\n * @returns The color picker drop down for ribbon button\n */\nexport function getColorPickerDropDown(colorSet: 'text' | 'background'): RibbonButtonDropDown {\n return {\n items: colorSet == 'background' ? BackgroundColorDropDownItems : TextColorDropDownItems,\n itemClassName: getColorPickerItemClassName(),\n allowLivePreview: true,\n itemRender:\n colorSet == 'background'\n ? (item, onClick) => renderColorPicker(item, BackgroundColors, onClick)\n : (item, onClick) => renderColorPicker(item, TextColors, onClick),\n commandBarSubMenuProperties: {\n className: getColorPickerContainerClassName(),\n },\n };\n}\n","export { BackgroundColorKeys, TextColorKeys } from './types/stringKeys';\nexport { getBackgroundColorValue } from './utils/backgroundColors';\nexport { getTextColorValue } from './utils/textColors';\nexport { getColorPickerDropDown } from './component/renderColorPicker';\n","import type { Colors } from 'roosterjs-content-model-types';\nimport type { BackgroundColorKeys } from '../types/stringKeys';\n\n/**\n * @internal\n */\nconst BackgroundColors: Record<BackgroundColorKeys, Colors> = {\n backgroundColorCyan: { lightModeColor: '#00ffff', darkModeColor: '#005357' },\n backgroundColorGreen: { lightModeColor: '#00ff00', darkModeColor: '#005e00' },\n backgroundColorYellow: { lightModeColor: '#ffff00', darkModeColor: '#383e00' },\n backgroundColorOrange: { lightModeColor: '#ff8000', darkModeColor: '#bf4c00' },\n backgroundColorRed: { lightModeColor: '#ff0000', darkModeColor: '#ff2711' },\n backgroundColorMagenta: { lightModeColor: '#ff00ff', darkModeColor: '#e700e8' },\n backgroundColorLightCyan: { lightModeColor: '#80ffff', darkModeColor: '#004c4f' },\n backgroundColorLightGreen: { lightModeColor: '#80ff80', darkModeColor: '#005400' },\n backgroundColorLightYellow: { lightModeColor: '#ffff80', darkModeColor: '#343c00' },\n backgroundColorLightOrange: { lightModeColor: '#ffc080', darkModeColor: '#77480b' },\n backgroundColorLightRed: { lightModeColor: '#ff8080', darkModeColor: '#bc454a' },\n backgroundColorLightMagenta: { lightModeColor: '#ff80ff', darkModeColor: '#aa2bad' },\n backgroundColorWhite: { lightModeColor: '#ffffff', darkModeColor: '#333333' },\n backgroundColorLightGray: { lightModeColor: '#cccccc', darkModeColor: '#535353' },\n backgroundColorGray: { lightModeColor: '#999999', darkModeColor: '#777777' },\n backgroundColorDarkGray: { lightModeColor: '#666666', darkModeColor: '#a0a0a0' },\n backgroundColorDarkerGray: { lightModeColor: '#333333', darkModeColor: '#cfcfcf' },\n backgroundColorBlack: { lightModeColor: '#000000', darkModeColor: '#ffffff' },\n};\n\n/**\n * @internal\n * List of colors in drop down list\n */\nconst BackgroundColorDropDownItems: Record<BackgroundColorKeys, string> = {\n backgroundColorCyan: 'Cyan',\n backgroundColorGreen: 'Green',\n backgroundColorYellow: 'Yellow',\n backgroundColorOrange: 'Orange',\n backgroundColorRed: 'Red',\n backgroundColorMagenta: 'Magenta',\n backgroundColorLightCyan: 'Light cyan',\n backgroundColorLightGreen: 'Light green',\n backgroundColorLightYellow: 'Light yellow',\n backgroundColorLightOrange: 'Light orange',\n backgroundColorLightRed: 'Light red',\n backgroundColorLightMagenta: 'Light magenta',\n backgroundColorWhite: 'White',\n backgroundColorLightGray: 'Light gray',\n backgroundColorGray: 'Gray',\n backgroundColorDarkGray: 'Dark gray',\n backgroundColorDarkerGray: 'Darker gray',\n backgroundColorBlack: 'Black',\n};\n\n/**\n * Get mode independent color value of background color from the given color key\n * @param key The key to get color from\n * @returns A model independent color value of the given key\n */\nfunction getBackgroundColorValue(key: BackgroundColorKeys): Colors {\n return BackgroundColors[key];\n}\n\nexport { BackgroundColors, BackgroundColorDropDownItems, getBackgroundColorValue };\n","import { mergeStyleSets } from '@fluentui/react/lib/Styling';\n\nconst classNames = mergeStyleSets({\n colorPickerContainer: {\n width: '192px',\n padding: '8px',\n overflow: 'hidden',\n '& ul': {\n width: '192px',\n overflow: 'hidden',\n },\n },\n colorMenuItem: {\n display: 'inline-block',\n width: '32px',\n height: '32px',\n '& button': {\n padding: '0px',\n minWidth: '0px',\n background: 'transparent',\n border: 'none',\n },\n },\n});\n\n/**\n * @internal\n */\nexport function getColorPickerContainerClassName() {\n return classNames.colorPickerContainer;\n}\n\n/**\n * @internal\n */\nexport function getColorPickerItemClassName() {\n return classNames.colorMenuItem;\n}\n","import type { Colors } from 'roosterjs-content-model-types';\nimport type { TextColorKeys } from '../types/stringKeys';\n\n/**\n * @internal\n */\nconst TextColors: Record<TextColorKeys, Colors> = {\n textColorLightBlue: { lightModeColor: '#51a7f9', darkModeColor: '#0075c2' },\n textColorLightGreen: { lightModeColor: '#6fc040', darkModeColor: '#207a00' },\n textColorLightYellow: { lightModeColor: '#f5d427', darkModeColor: '#5d4d00' },\n textColorLightOrange: { lightModeColor: '#f3901d', darkModeColor: '#ab5500' },\n textColorLightRed: { lightModeColor: '#ed5c57', darkModeColor: '#df504d' },\n textColorLightPurple: { lightModeColor: '#b36ae2', darkModeColor: '#ab63da' },\n textColorBlue: { lightModeColor: '#0c64c0', darkModeColor: '#6da0ff' },\n textColorGreen: { lightModeColor: '#0c882a', darkModeColor: '#3da848' },\n textColorYellow: { lightModeColor: '#dcbe22', darkModeColor: '#6d5c00' },\n textColorOrange: { lightModeColor: '#de6a19', darkModeColor: '#d3610c' },\n textColorRed: { lightModeColor: '#c82613', darkModeColor: '#ff6847' },\n textColorPurple: { lightModeColor: '#763e9b', darkModeColor: '#d394f9' },\n textColorDarkBlue: { lightModeColor: '#174e86', darkModeColor: '#93b8f9' },\n textColorDarkGreen: { lightModeColor: '#0f5c1a', darkModeColor: '#7fc57b' },\n textColorDarkYellow: { lightModeColor: '#c3971d', darkModeColor: '#946f00' },\n textColorDarkOrange: { lightModeColor: '#be5b17', darkModeColor: '#de7633' },\n textColorDarkRed: { lightModeColor: '#861106', darkModeColor: '#ff9b7c' },\n textColorDarkPurple: { lightModeColor: '#5e327c', darkModeColor: '#dea9fd' },\n textColorDarkerBlue: { lightModeColor: '#002451', darkModeColor: '#cedbff' },\n textColorDarkerGreen: { lightModeColor: '#06400c', darkModeColor: '#a3da9b' },\n textColorDarkerYellow: { lightModeColor: '#a37519', darkModeColor: '#b5852a' },\n textColorDarkerOrange: { lightModeColor: '#934511', darkModeColor: '#ef935c' },\n textColorDarkerRed: { lightModeColor: '#570606', darkModeColor: '#ffc0b1' },\n textColorDarkerPurple: { lightModeColor: '#3b204d', darkModeColor: '#eecaff' },\n textColorWhite: { lightModeColor: '#ffffff', darkModeColor: '#333333' },\n textColorLightGray: { lightModeColor: '#cccccc', darkModeColor: '#535353' },\n textColorGray: { lightModeColor: '#999999', darkModeColor: '#777777' },\n textColorDarkGray: { lightModeColor: '#666666', darkModeColor: '#a0a0a0' },\n textColorDarkerGray: { lightModeColor: '#333333', darkModeColor: '#cfcfcf' },\n textColorBlack: { lightModeColor: '#000000', darkModeColor: '#ffffff' },\n};\n\n/**\n * @internal\n */\nconst TextColorDropDownItems: Record<TextColorKeys, string> = {\n textColorLightBlue: 'Light blue',\n textColorLightGreen: 'Light green',\n textColorLightYellow: 'Light yellow',\n textColorLightOrange: 'Light orange',\n textColorLightRed: 'Light red',\n textColorLightPurple: 'Light purple',\n textColorBlue: 'Blue',\n textColorGreen: 'Green',\n textColorYellow: 'Yellow',\n textColorOrange: 'Orange',\n textColorRed: 'Red',\n textColorPurple: 'Purple',\n textColorDarkBlue: 'Dark blue',\n textColorDarkGreen: 'Dark green',\n textColorDarkYellow: 'Dark yellow',\n textColorDarkOrange: 'Dark orange',\n textColorDarkRed: 'Dark red',\n textColorDarkPurple: 'Dark purple',\n textColorDarkerBlue: 'Darker blue',\n textColorDarkerGreen: 'Darker green',\n textColorDarkerYellow: 'Darker yellow',\n textColorDarkerOrange: 'Darker orange',\n textColorDarkerRed: 'Darker red',\n textColorDarkerPurple: 'Darker purple',\n textColorWhite: 'White',\n textColorLightGray: 'Light gray',\n textColorGray: 'Gray',\n textColorDarkGray: 'Dark gray',\n textColorDarkerGray: 'Darker gray',\n textColorBlack: 'Black',\n};\n\n/**\n * Get mode independent color value of text color from the given color key\n * @param key The key to get color from\n * @returns A model independent color value of the given key\n */\nfunction getTextColorValue(key: TextColorKeys): Colors {\n return TextColors[key];\n}\n\nexport { TextColors, TextColorDropDownItems, getTextColorValue };\n","export {\n LocalizedStrings,\n OkButtonStringKey,\n CancelButtonStringKey,\n MenuItemSplitterKey0,\n} from './type/LocalizedStrings';\nexport { UIUtilities } from './type/UIUtilities';\nexport { ReactEditorPlugin } from './type/ReactEditorPlugin';\nexport { createUIUtilities } from './utils/createUIUtilities';\nexport { getLocalizedString } from './utils/getLocalizedString';\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { ThemeProvider } from '@fluentui/react/lib/Theme';\nimport { WindowProvider } from '@fluentui/react/lib/WindowProvider';\nimport type { UIUtilities } from '../type/UIUtilities';\nimport type { PartialTheme } from '@fluentui/react/lib/Theme';\n\n/**\n * Create the UI Utilities object for plugins to render additional react components\n * @param container Container DIV of editor\n * @param theme Current theme used by editor\n * @returns A UIUtilities object\n */\nexport function createUIUtilities(container: HTMLDivElement, theme: PartialTheme): UIUtilities {\n return {\n renderComponent: element => {\n const doc = container.ownerDocument;\n const div = doc.createElement('div');\n doc.body.appendChild(div);\n\n ReactDOM.render(\n <WindowProvider window={doc.defaultView!}>\n <ThemeProvider theme={theme}>{element}</ThemeProvider>\n </WindowProvider>,\n div\n );\n\n return () => {\n ReactDOM.unmountComponentAtNode(div);\n doc.body.removeChild(div);\n };\n },\n isRightToLeft: () => {\n const dir =\n container &&\n container.ownerDocument.defaultView?.getComputedStyle(container).direction;\n\n return dir == 'rtl';\n },\n };\n}\n","import type { LocalizedStrings } from '../type/LocalizedStrings';\n\n/**\n * Get a localized string\n * @param strings The LocalizedStrings map\n * @param key Key of the string\n * @param defaultString Default unlocalized string, will be used if strings is not specified or the give key doesn't exist in strings\n * @returns A localized string from the string map, or defaultString\n */\nexport function getLocalizedString<T extends string, R extends string | null | undefined>(\n strings: LocalizedStrings<T> | undefined,\n key: T,\n defaultString: R\n) {\n const str = strings?.[key];\n\n if (typeof str == 'function') {\n return str();\n } else if (typeof str == 'string') {\n return str;\n } else {\n return defaultString;\n }\n}\n","import type { UIUtilities } from '../type/UIUtilities';\n\n/**\n * @internal\n */\nexport function renderReactComponent(uiUtilities: UIUtilities | null, reactElement: JSX.Element) {\n if (uiUtilities) {\n return uiUtilities.renderComponent(reactElement);\n } else {\n throw new Error(\n 'UIUtilities is required but not provided. Please call ReactEditorPlugin.setUIUtilities() to set a valid uiUtilities object'\n );\n }\n}\n","export { createContextMenuPlugin } from './plugin/createContextMenuPlugin';\nexport { createContextMenuProvider } from './utils/createContextMenuProvider';\nexport { createListEditMenuProvider } from './menus/createListEditMenuProvider';\nexport { createImageEditMenuProvider } from './menus/createImageEditMenuProvider';\nexport { createTableEditMenuProvider } from './menus/createTableEditMenuProvider';\nexport { ContextMenuItem } from './types/ContextMenuItem';\nexport {\n ListNumberMenuItemStringKey,\n ImageEditMenuItemStringKey,\n TableEditInsertMenuItemStringKey,\n TableEditDeleteMenuItemStringKey,\n TableEditMergeMenuItemStringKey,\n TableEditSplitMenuItemStringKey,\n TableEditAlignMenuItemStringKey,\n TableEditShadeMenuItemStringKey,\n TableEditMenuItemStringKey,\n TableEditAlignTableMenuItemStringKey,\n} from './types/ContextMenuItemStringKeys';\n","import { createContextMenuProvider } from '../utils/createContextMenuProvider';\nimport { formatImageWithContentModel, setImageAltText } from 'roosterjs-content-model-api';\nimport { iterateSelections, mutateBlock, updateImageMetadata } from 'roosterjs-content-model-dom';\nimport { showInputDialog } from '../../inputDialog/utils/showInputDialog';\nimport type { EditorPlugin, IEditor, ImageEditor } from 'roosterjs-content-model-types';\nimport type { ContextMenuItem } from '../types/ContextMenuItem';\nimport type { ImageEditMenuItemStringKey } from '../types/ContextMenuItemStringKeys';\nimport type { LocalizedStrings } from '../../common/type/LocalizedStrings';\n\nconst MIN_WIDTH = 10;\nconst MIN_HEIGHT = 10;\n\nconst ImageAltTextMenuItem: ContextMenuItem<ImageEditMenuItemStringKey, ImageEditor> = {\n key: 'menuNameImageAltText',\n unlocalizedText: 'Add alternate text',\n onClick: (_, editor, node, strings, uiUtilities) => {\n const image = node as HTMLImageElement;\n const initValue = image.alt;\n\n showInputDialog(\n uiUtilities,\n 'menuNameImageAltText',\n 'Add alternate text',\n {\n altText: {\n labelKey: null,\n unlocalizedLabel: null,\n initValue: initValue,\n },\n },\n strings\n ).then(values => {\n editor.focus();\n editor.setDOMSelection({\n type: 'image',\n image: image,\n });\n\n if (values) {\n setImageAltText(editor, values.altText);\n }\n });\n },\n};\n\nconst sizeMap: { [key in ImageEditMenuItemStringKey]?: number } = {\n menuNameImageSizeBestFit: 0,\n menuNameImageSizeSmall: 0.25,\n menuNameImageSizeMedium: 0.5,\n menuNameImageSizeOriginal: 1,\n};\n\nconst ImageResizeMenuItem: ContextMenuItem<ImageEditMenuItemStringKey, ImageEditor> = {\n key: 'menuNameImageResize',\n unlocalizedText: 'Size',\n subItems: {\n menuNameImageSizeBestFit: 'Best fit',\n menuNameImageSizeSmall: 'Small',\n menuNameImageSizeMedium: 'Medium',\n menuNameImageSizeOriginal: 'Original',\n },\n onClick: (key, editor, _) => {\n const selection = editor.getDOMSelection();\n if (!selection || selection.type !== 'image') {\n return;\n }\n\n const percentage = sizeMap[key] ?? 0;\n\n if (percentage > 0) {\n const { naturalWidth, naturalHeight } = selection.image;\n\n resizeByPercentage(editor, percentage, naturalWidth, naturalHeight);\n } else {\n resetImage(editor);\n }\n },\n};\n\nconst ImageRotateMenuItem: ContextMenuItem<ImageEditMenuItemStringKey, ImageEditor> = {\n key: 'menuNameImageRotate',\n unlocalizedText: 'Rotate image',\n subItems: {\n menuNameImageRotateLeft: 'Left',\n menuNameImageRotateRight: 'Right',\n },\n shouldShow: (_, node, imageEditor) => {\n return (\n !!imageEditor?.isOperationAllowed('rotate') &&\n imageEditor.canRegenerateImage(node as HTMLImageElement)\n );\n },\n onClick: (key, _editor, _node, _strings, _uiUtilities, imageEdit) => {\n switch (key) {\n case 'menuNameImageRotateLeft':\n imageEdit?.rotateImage(-Math.PI / 2);\n break;\n case 'menuNameImageRotateRight':\n imageEdit?.rotateImage(Math.PI / 2);\n break;\n }\n },\n};\n\nconst ImageFlipMenuItem: ContextMenuItem<ImageEditMenuItemStringKey, ImageEditor> = {\n key: 'menuNameImageFlip',\n unlocalizedText: 'Flip image',\n subItems: {\n menuNameImageRotateFlipHorizontally: 'Flip Horizontally',\n menuNameImageRotateFlipVertically: 'Flip Vertically',\n },\n shouldShow: (_, node, imageEditor) => {\n return (\n !!imageEditor?.isOperationAllowed('rotate') &&\n imageEditor.canRegenerateImage(node as HTMLImageElement)\n );\n },\n onClick: (key, _editor, _node, _strings, _uiUtilities, imageEdit) => {\n switch (key) {\n case 'menuNameImageRotateFlipHorizontally':\n imageEdit?.flipImage('horizontal');\n break;\n case 'menuNameImageRotateFlipVertically':\n imageEdit?.flipImage('vertical');\n break;\n }\n },\n};\n\nconst ImageCropMenuItem: ContextMenuItem<ImageEditMenuItemStringKey, ImageEditor> = {\n key: 'menuNameImageCrop',\n unlocalizedText: 'Crop image',\n shouldShow: (_, node, imageEditor) => {\n return (\n !!imageEditor?.isOperationAllowed('crop') &&\n imageEditor.canRegenerateImage(node as HTMLImageElement)\n );\n },\n onClick: (_, _editor, _node, _strings, _uiUtilities, imageEdit) => {\n imageEdit?.cropImage();\n },\n};\n\nconst ImageRemoveMenuItem: ContextMenuItem<ImageEditMenuItemStringKey, ImageEditor> = {\n key: 'menuNameImageRemove',\n unlocalizedText: 'Remove image',\n onClick: (_, editor, node) => {\n removeImage(editor);\n },\n};\n\nconst ImageCopyMenuItem: ContextMenuItem<ImageEditMenuItemStringKey, ImageEditor> = {\n key: 'menuNameImageCopy',\n unlocalizedText: 'Copy image',\n onClick: (_, editor) => {\n editor.getDocument()?.execCommand('copy');\n },\n};\n\nconst ImageCutMenuItem: ContextMenuItem<ImageEditMenuItemStringKey, ImageEditor> = {\n key: 'menuNameImageCut',\n unlocalizedText: 'Cut image',\n onClick: (_, editor) => {\n editor.getDocument()?.execCommand('cut');\n },\n};\n\nfunction shouldShowImageEditItems(editor: IEditor, _: Node) {\n const selection = editor.getDOMSelection();\n return selection?.type === 'image' && !!selection.image;\n}\n\n/**\n * Create a new instance of ContextMenuProvider to support image editing functionalities in context menu\n * @returns A new ContextMenuProvider\n */\nexport function createImageEditMenuProvider(\n imageEditor?: ImageEditor,\n strings?: LocalizedStrings<ImageEditMenuItemStringKey>\n): EditorPlugin {\n return createContextMenuProvider<ImageEditMenuItemStringKey, ImageEditor>(\n 'imageEdit',\n [\n ImageAltTextMenuItem,\n ImageResizeMenuItem,\n ImageCropMenuItem,\n ImageRemoveMenuItem,\n ImageRotateMenuItem,\n ImageFlipMenuItem,\n ImageCopyMenuItem,\n ImageCutMenuItem,\n ],\n strings,\n shouldShowImageEditItems,\n imageEditor\n );\n}\n\nfunction removeImage(editor: IEditor) {\n editor.formatContentModel(\n model => {\n let changed = false;\n\n iterateSelections(model, (_, __, block, segments) => {\n segments?.forEach(segment => {\n if (segment.segmentType == 'Image' && block?.blockType == 'Paragraph') {\n const index = block.segments.indexOf(segment);\n\n if (index >= 0) {\n mutateBlock(block).segments.splice(index, 1);\n changed = true;\n }\n }\n });\n });\n\n return changed;\n },\n {\n apiName: 'DeleteImage',\n }\n );\n}\n\nfunction resizeByPercentage(\n editor: IEditor,\n percentage: number,\n naturalWidth: number,\n naturalHeight: number\n) {\n formatImageWithContentModel(editor, 'resizeImage', segment => {\n updateImageMetadata(segment, format => {\n const validFormat = Object.assign(\n {\n naturalWidth,\n naturalHeight,\n leftPercent: 0,\n rightPercent: 0,\n topPercent: 0,\n bottomPercent: 0,\n angleRad: 0,\n },\n format\n );\n\n const newWidth = Math.max(\n MIN_WIDTH,\n validFormat.naturalWidth *\n (1 - validFormat.leftPercent - validFormat.rightPercent) *\n percentage\n );\n const newHeight = Math.max(\n MIN_HEIGHT,\n validFormat.naturalHeight *\n (1 - validFormat.topPercent - validFormat.bottomPercent) *\n percentage\n );\n validFormat.widthPx = newWidth;\n validFormat.heightPx = newHeight;\n segment.format.width = newWidth + 'px';\n segment.format.height = newHeight + 'px';\n\n return validFormat;\n });\n });\n}\n\nfunction resetImage(editor: IEditor) {\n formatImageWithContentModel(editor, 'resizeImage', segment => {\n updateImageMetadata(segment, () => null);\n\n delete segment.format.width;\n delete segment.format.height;\n\n segment.format.maxWidth = '100%';\n });\n}\n","import { createContextMenuProvider } from '../utils/createContextMenuProvider';\nimport { isElementOfType, isNodeOfType } from 'roosterjs-content-model-dom';\nimport { setListStartNumber } from 'roosterjs-content-model-api';\nimport { showInputDialog } from '../../inputDialog/utils/showInputDialog';\nimport type { EditorPlugin, IEditor } from 'roosterjs-content-model-types';\nimport type { ContextMenuItem } from '../types/ContextMenuItem';\nimport type { ListNumberMenuItemStringKey } from '../types/ContextMenuItemStringKeys';\nimport type { LocalizedStrings } from '../../common/type/LocalizedStrings';\n\nconst ListNumberResetMenuItem: ContextMenuItem<ListNumberMenuItemStringKey> = {\n key: 'menuNameListNumberReset',\n unlocalizedText: 'Restart at 1',\n onClick: (_, editor, node) => {\n setListStartNumber(editor, 1);\n },\n};\n\nconst ListNumberEditMenuItem: ContextMenuItem<ListNumberMenuItemStringKey> = {\n key: 'menuNameListNumberEdit',\n unlocalizedText: 'Set numbering value',\n onClick: (_, editor, node, strings, uiUtilities) => {\n const listAndLi = getEditingList(editor, node);\n\n if (listAndLi) {\n const { list, li } = listAndLi;\n let startNumber = list.start;\n\n for (let child = list.firstChild; child; child = child.nextSibling) {\n if (child === li) {\n break;\n } else if (isNodeOfType(child, 'ELEMENT_NODE') && isElementOfType(child, 'li')) {\n startNumber += 1;\n }\n }\n\n showInputDialog(\n uiUtilities,\n 'menuNameListNumberEdit',\n 'Set numbering value',\n {\n value: {\n labelKey: 'dialogTextSetListNumber',\n unlocalizedLabel: 'Set value to',\n initValue: startNumber.toString(),\n },\n },\n strings\n ).then(values => {\n editor.focus();\n\n if (values) {\n const result = parseInt(values.value);\n\n if (result > 0 && result != startNumber) {\n setListStartNumber(editor, Math.floor(result));\n }\n }\n });\n }\n },\n};\n\nfunction getEditingList(editor: IEditor, node: Node) {\n const domHelper = editor.getDOMHelper();\n const li = domHelper.findClosestElementAncestor(node, 'LI');\n const list = li && (domHelper.findClosestElementAncestor(li, 'ol') as HTMLOListElement | null);\n\n return list?.isContentEditable ? { list, li } : null;\n}\n\n/**\n * Create a new instance of ContextMenuProvider to support list number editing functionalities in context menu\n * @returns A new ContextMenuProvider\n */\nexport function createListEditMenuProvider(\n strings?: LocalizedStrings<ListNumberMenuItemStringKey>\n): EditorPlugin {\n return createContextMenuProvider(\n 'listEdit',\n [ListNumberResetMenuItem, ListNumberEditMenuItem],\n strings,\n (editor, node) => !!getEditingList(editor, node)\n );\n}\n","import { createContextMenuProvider } from '../utils/createContextMenuProvider';\nimport { editTable, setTableCellShade } from 'roosterjs-content-model-api';\nimport { renderColorPicker } from '../../colorPicker/component/renderColorPicker';\nimport type { Colors, EditorPlugin, IEditor, TableOperation } from 'roosterjs-content-model-types';\nimport type { ContextMenuItem } from '../types/ContextMenuItem';\nimport type { LocalizedStrings } from '../../common/type/LocalizedStrings';\nimport {\n getColorPickerContainerClassName,\n getColorPickerItemClassName,\n} from '../../colorPicker/utils/getClassNamesForColorPicker';\nimport type {\n TableEditMenuItemStringKey,\n TableEditInsertMenuItemStringKey,\n TableEditDeleteMenuItemStringKey,\n TableEditMergeMenuItemStringKey,\n TableEditSplitMenuItemStringKey,\n TableEditAlignMenuItemStringKey,\n TableEditShadeMenuItemStringKey,\n TableEditAlignTableMenuItemStringKey,\n} from '../types/ContextMenuItemStringKeys';\nimport {\n BackgroundColorDropDownItems,\n BackgroundColors,\n} from '../../colorPicker/utils/backgroundColors';\n\nconst TableEditOperationMap: Partial<Record<TableEditMenuItemStringKey, TableOperation>> = {\n menuNameTableInsertAbove: 'insertAbove',\n menuNameTableInsertBelow: 'insertBelow',\n menuNameTableInsertLeft: 'insertLeft',\n menuNameTableInsertRight: 'insertRight',\n menuNameTableDeleteTable: 'deleteTable',\n menuNameTableDeleteColumn: 'deleteColumn',\n menuNameTableDeleteRow: 'deleteRow',\n menuNameTableMergeAbove: 'mergeAbove',\n menuNameTableMergeBelow: 'mergeBelow',\n menuNameTableMergeLeft: 'mergeLeft',\n menuNameTableMergeRight: 'mergeRight',\n menuNameTableMergeCells: 'mergeCells',\n menuNameTableSplitHorizontally: 'splitHorizontally',\n menuNameTableSplitVertically: 'splitVertically',\n menuNameTableAlignLeft: 'alignCellLeft',\n menuNameTableAlignCenter: 'alignCellCenter',\n menuNameTableAlignRight: 'alignCellRight',\n menuNameTableAlignTop: 'alignCellTop',\n menuNameTableAlignMiddle: 'alignCellMiddle',\n menuNameTableAlignBottom: 'alignCellBottom',\n menuNameTableAlignTableLeft: 'alignLeft',\n menuNameTableAlignTableCenter: 'alignCenter',\n menuNameTableAlignTableRight: 'alignRight',\n};\n\nconst ColorValues = {\n ...BackgroundColors,\n // Add this value to satisfy compiler\n menuNameTableCellShade: <Colors>(<unknown>null),\n};\n\nfunction onClick(key: TableEditMenuItemStringKey, editor: IEditor) {\n const operation = TableEditOperationMap[key];\n\n if (operation) {\n editTable(editor, operation);\n }\n}\n\nconst TableEditInsertMenuItem: ContextMenuItem<TableEditInsertMenuItemStringKey> = {\n key: 'menuNameTableInsert',\n unlocalizedText: 'Insert',\n subItems: {\n menuNameTableInsertAbove: 'Insert above',\n menuNameTableInsertBelow: 'Insert below',\n menuNameTableInsertLeft: 'Insert left',\n menuNameTableInsertRight: 'Insert right',\n },\n onClick,\n};\n\nconst TableEditDeleteMenuItem: ContextMenuItem<TableEditDeleteMenuItemStringKey> = {\n key: 'menuNameTableDelete',\n unlocalizedText: 'Delete',\n subItems: {\n menuNameTableDeleteColumn: 'Delete column',\n menuNameTableDeleteRow: 'Delete row',\n menuNameTableDeleteTable: 'Delete table',\n },\n onClick,\n};\n\nconst TableEditMergeMenuItem: ContextMenuItem<TableEditMergeMenuItemStringKey> = {\n key: 'menuNameTableMerge',\n unlocalizedText: 'Merge',\n subItems: {\n menuNameTableMergeAbove: 'Merge above',\n menuNameTableMergeBelow: 'Merge below',\n menuNameTableMergeLeft: 'Merge left',\n menuNameTableMergeRight: 'Merge right',\n '-': '-',\n menuNameTableMergeCells: 'Merge selected cells',\n },\n onClick,\n};\n\nconst TableEditSplitMenuItem: ContextMenuItem<TableEditSplitMenuItemStringKey> = {\n key: 'menuNameTableSplit',\n unlocalizedText: 'Split',\n subItems: {\n menuNameTableSplitHorizontally: 'Split horizontally',\n menuNameTableSplitVertically: 'Split vertically',\n },\n onClick,\n};\n\nconst TableEditAlignMenuItem: ContextMenuItem<TableEditAlignMenuItemStringKey> = {\n key: 'menuNameTableAlign',\n unlocalizedText: 'Align cell',\n subItems: {\n menuNameTableAlignLeft: 'Align left',\n menuNameTableAlignCenter: 'Align center',\n menuNameTableAlignRight: 'Align right',\n '-': '-',\n menuNameTableAlignTop: 'Align top',\n menuNameTableAlignMiddle: 'Align middle',\n menuNameTableAlignBottom: 'Align bottom',\n },\n onClick,\n};\n\nconst TableEditAlignTableMenuItem: ContextMenuItem<TableEditAlignTableMenuItemStringKey> = {\n key: 'menuNameTableAlignTable',\n unlocalizedText: 'Align table',\n subItems: {\n menuNameTableAlignTableLeft: 'Align left',\n menuNameTableAlignTableCenter: 'Align center',\n menuNameTableAlignTableRight: 'Align right',\n },\n onClick,\n};\n\nconst TableEditCellShadeMenuItem: ContextMenuItem<TableEditShadeMenuItemStringKey> = {\n key: 'menuNameTableCellShade',\n unlocalizedText: 'Shading',\n subItems: BackgroundColorDropDownItems,\n onClick: (key, editor) => {\n setTableCellShade(editor, ColorValues[key].lightModeColor);\n },\n itemRender: (item, click) => renderColorPicker(item, ColorValues, click),\n itemClassName: getColorPickerItemClassName(),\n commandBarSubMenuProperties: {\n className: getColorPickerContainerClassName(),\n },\n};\n\nfunction getEditingTable(editor: IEditor, node: Node) {\n const domHelper = editor.getDOMHelper();\n const td = domHelper.findClosestElementAncestor(node, 'TD,TH');\n const table = td && domHelper.findClosestElementAncestor(td, 'table');\n\n return table?.isContentEditable ? { table, td } : null;\n}\n\n/**\n * Create a new instance of ContextMenuProvider to support table editing functionalities in context menu\n * @returns A new ContextMenuProvider\n */\nexport function createTableEditMenuProvider(\n strings?: LocalizedStrings<TableEditMenuItemStringKey>\n): EditorPlugin {\n return createContextMenuProvider(\n 'tableEdit',\n <ContextMenuItem<TableEditMenuItemStringKey>[]>[\n TableEditInsertMenuItem,\n TableEditDeleteMenuItem,\n TableEditMergeMenuItem,\n TableEditSplitMenuItem,\n TableEditAlignMenuItem,\n TableEditAlignTableMenuItem,\n TableEditCellShadeMenuItem,\n ],\n strings,\n (editor, node) => !!getEditingTable(editor, node)\n );\n}\n","import * as React from 'react';\nimport { ContextMenuPluginBase } from 'roosterjs-content-model-plugins';\nimport { ContextualMenu } from '@fluentui/react/lib/ContextualMenu';\nimport { renderReactComponent } from '../../common/utils/renderReactComponent';\nimport type { IContextualMenuItem } from '@fluentui/react/lib/ContextualMenu';\nimport type { ReactEditorPlugin, UIUtilities } from '../../common/index';\n\nfunction normalizeItems(items: (IContextualMenuItem | null)[]) {\n let dividerKey = 0;\n return items.map(\n item =>\n item || {\n name: '-',\n key: 'divider_' + (dividerKey++).toString(),\n }\n );\n}\n\nclass ContextMenuPlugin extends ContextMenuPluginBase<IContextualMenuItem>\n implements ReactEditorPlugin {\n private uiUtilities: UIUtilities | null = null;\n private disposer: (() => void) | null = null;\n\n constructor() {\n super({\n render: (container, items, onDismiss) => {\n const normalizedItems = normalizeItems(items);\n\n if (normalizedItems.length > 0) {\n this.disposer = renderReactComponent(\n this.uiUtilities,\n <ContextualMenu\n target={container}\n onDismiss={onDismiss}\n items={normalizedItems}\n />\n );\n }\n },\n dismiss: _ => {\n this.disposer?.();\n this.disposer = null;\n },\n });\n }\n\n setUIUtilities(uiUtilities: UIUtilities) {\n this.uiUtilities = uiUtilities;\n }\n}\n\n/**\n * Create a new instance of ContextMenu plugin with context menu implementation based on FluentUI.\n */\nexport function createContextMenuPlugin(): ContextMenuPluginBase<IContextualMenuItem> {\n return new ContextMenuPlugin();\n}\n","import { getLocalizedString } from '../../common/utils/getLocalizedString';\nimport { getObjectKeys } from 'roosterjs-content-model-dom';\nimport type { ContextMenuItem } from '../types/ContextMenuItem';\nimport type { IContextualMenuItem } from '@fluentui/react/lib/ContextualMenu';\nimport type { LocalizedStrings, ReactEditorPlugin, UIUtilities } from '../../common/index';\nimport type { ContextMenuProvider, EditorPlugin, IEditor } from 'roosterjs-content-model-types';\n\n/**\n * A plugin of editor to provide context menu items\n */\nclass ContextMenuProviderImpl<TString extends string, TContext>\n implements ContextMenuProvider<IContextualMenuItem>, ReactEditorPlugin {\n private editor: IEditor | null = null;\n private targetNode: Node | null = null;\n private uiUtilities: UIUtilities | null = null;\n\n /**\n * Create a new instance of ContextMenuProviderImpl class\n * @param menuName Name of this group of menus\n * @param items Menu items that will be show\n * @param strings Localized strings of these menu items\n * @param shouldAddMenuItems A general checker to decide if we should add this group of menu items\n */\n constructor(\n private menuName: string,\n private items: ContextMenuItem<TString, TContext>[],\n private strings?: LocalizedStrings<TString>,\n private shouldAddMenuItems?: (editor: IEditor, node: Node) => boolean,\n private context?: TContext\n ) {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return this.menuName;\n }\n\n /**\n * Initialize this plugin. This should only be called from Editor\n * @param editor Editor instance\n */\n initialize(editor: IEditor) {\n this.editor = editor;\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.editor = null;\n }\n\n getContextMenuItems(node: Node) {\n const editor = this.editor;\n\n this.targetNode = node;\n\n return editor && this.shouldAddMenuItems?.(editor, node)\n ? this.items\n .filter(item => !item.shouldShow || item.shouldShow(editor, node, this.context))\n .map(item => this.convertMenuItems(item, node))\n : [];\n }\n\n setUIUtilities(uiUtilities: UIUtilities) {\n this.uiUtilities = uiUtilities;\n }\n\n private convertMenuItems(\n item: ContextMenuItem<TString, TContext>,\n node: Node\n ): IContextualMenuItem {\n const selectedId = this.editor && item.getSelectedId?.(this.editor, node);\n\n return {\n key: item.key,\n data: item,\n text: getLocalizedString(this.strings, item.key, item.unlocalizedText),\n ariaLabel: getLocalizedString(this.strings, item.key, item.unlocalizedText),\n onClick: () => this.onClick(item, item.key),\n iconProps: item.iconProps,\n subMenuProps: item.subItems\n ? {\n onItemClick: (_, menuItem) => menuItem && this.onClick(item, menuItem.data),\n items: getObjectKeys(item.subItems).map(key => ({\n key: key,\n data: key,\n text: getLocalizedString(this.strings, key, item.subItems?.[key]),\n className: item.itemClassName,\n onRender: item.itemRender\n ? subItem => item.itemRender?.(subItem, () => this.onClick(item, key))\n : undefined,\n iconProps:\n key == selectedId\n ? {\n iconName: 'Checkmark',\n }\n : undefined,\n })),\n ...(item.commandBarSubMenuProperties || {}),\n }\n : undefined,\n };\n }\n\n private onClick(item: ContextMenuItem<TString, TContext>, key: TString) {\n if (this.editor && this.targetNode && this.uiUtilities) {\n item.onClick(\n key,\n this.editor,\n this.targetNode,\n this.strings,\n this.uiUtilities,\n this.context\n );\n }\n }\n}\n\n/**\n * Create a new instance of ContextMenuProviderImpl class\n * @param menuName Name of this group of menus\n * @param items Menu items that will be show\n * @param strings Localized strings of these menu items\n * @param shouldAddMenuItems A general checker to decide if we should add this group of menu items\n */\nexport function createContextMenuProvider<TString extends string, TContext>(\n menuName: string,\n items: ContextMenuItem<TString, TContext>[],\n strings?: LocalizedStrings<TString>,\n shouldAddMenuItems?: (editor: IEditor, node: Node) => boolean,\n context?: TContext\n): EditorPlugin {\n return new ContextMenuProviderImpl<TString, TContext>(\n menuName,\n items,\n strings,\n shouldAddMenuItems,\n context\n );\n}\n","import * as React from 'react';\nimport { css } from '@fluentui/react/lib/Utilities';\nimport type { Emoji } from '../type/Emoji';\nimport type { EmojiPaneStyle } from '../type/EmojiPaneStyles';\nimport type { IProcessedStyleSet } from '@fluentui/react/lib/Styling';\n/**\n * @internal\n * Emoji icon data\n */\nexport interface EmojiIconProps {\n id: string;\n emoji: Emoji;\n strings: Record<string, string>;\n classNames: IProcessedStyleSet<EmojiPaneStyle>;\n onClick?: (e: React.MouseEvent<EventTarget>) => void;\n onMouseOver?: (e: React.MouseEvent<EventTarget>) => void;\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n isSelected?: boolean;\n}\n\n/**\n * @internal\n * Emoji icon component\n */\nexport function EmojiIcon(props: EmojiIconProps) {\n const { emoji, onClick, isSelected, onMouseOver, onFocus, strings, id, classNames } = props;\n const content = emoji.description && strings[emoji.description];\n\n return (\n <button\n id={id}\n role=\"option\"\n className={css(classNames.emoji, {\n [classNames.emojiSelected]: isSelected,\n })}\n onClick={onClick}\n onMouseOver={onMouseOver}\n onFocus={onFocus}\n data-is-focusable={true}\n aria-label={content}\n aria-selected={isSelected}\n {...getDataAndAriaProps(props)}>\n {emoji.codePoint || '…'}\n </button>\n );\n}\n\nfunction reduceObject<T>(object: any, callback: (key: string) => boolean): T {\n if (!object) {\n return object;\n }\n\n return Object.keys(object).reduce((result: any, key: string) => {\n if (callback(key)) {\n result[key] = object[key];\n }\n return result;\n }, {} as T);\n}\n\nfunction getDataAndAriaProps<T>(props: EmojiIconProps): T {\n return reduceObject(\n props || {},\n propName => propName.indexOf('data-') === 0 || propName.indexOf('aria-') === 0\n );\n}\n","import * as React from 'react';\nimport { css } from '@fluentui/react/lib/Utilities';\nimport { EmojiFabricIconCharacterMap, EmojiList } from '../utils/emojiList';\nimport { FocusZone, FocusZoneDirection } from '@fluentui/react/lib/FocusZone';\nimport { getObjectKeys } from 'roosterjs-content-model-dom';\nimport { Icon } from '@fluentui/react/lib/Icon';\nimport { TooltipHost } from '@fluentui/react/lib/Tooltip';\nimport type { EmojiFamilyKeys } from '../utils/emojiList';\nimport type { EmojiPaneStyle } from '../type/EmojiPaneStyles';\nimport type { IProcessedStyleSet } from '@fluentui/react/lib/Styling';\n\n/**\n * @internal\n * Emoji Nav Bar data\n */\nexport interface EmojiNavBarProps {\n onClick?: (selected: string) => void;\n currentSelected?: string;\n getTabId?: (selected: EmojiFamilyKeys) => string;\n strings: Record<string, string>;\n classNames: IProcessedStyleSet<EmojiPaneStyle>;\n}\n\n/**\n * @internal\n */\nexport function EmojiNavBar(props: EmojiNavBarProps) {\n const { currentSelected, getTabId, strings = {}, classNames } = props;\n const keys = getObjectKeys(EmojiList);\n const onFamilyClick = (key: string) => {\n if (props.onClick) {\n props.onClick(key);\n }\n };\n\n return (\n // for each emoji family key, create a button to use as nav bar\n <div className={classNames.navBar} role=\"tablist\">\n <FocusZone direction={FocusZoneDirection.horizontal}>\n {keys.map((key, index) => {\n const selected = key === currentSelected;\n const friendlyName = strings[key];\n\n return (\n <TooltipHost\n hostClassName={classNames.navBarTooltip}\n content={friendlyName}\n key={key}>\n <button\n className={css(classNames.navBarButton, {\n [classNames.selected]: selected,\n })}\n key={key}\n onClick={onFamilyClick.bind(onclick, key)}\n id={getTabId?.(key)}\n role=\"tab\"\n aria-selected={selected}\n aria-label={friendlyName}\n data-is-focusable=\"true\"\n aria-posinset={index + 1}\n tabIndex={0}\n aria-setsize={keys.length}>\n <Icon iconName={EmojiFabricIconCharacterMap[key]} />\n </button>\n </TooltipHost>\n );\n })}\n </FocusZone>\n </div>\n );\n}\n","import * as React from 'react';\nimport { Callout, DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { CommonEmojis, EmojiList, MoreEmoji } from '../utils/emojiList';\nimport { css, KeyCodes, memoizeFunction } from '@fluentui/react/lib/Utilities';\nimport { EmojiIcon } from './EmojiIcon';\nimport { EmojiNavBar } from './EmojiNavBar';\nimport { EmojiStatusBar } from './EmojiStatusBar';\nimport { FocusZone } from '@fluentui/react/lib/FocusZone';\nimport { getLocalizedString } from '../../common/index';\nimport { mergeStyleSets } from '@fluentui/react/lib/Styling';\nimport { searchEmojis } from '../utils/searchEmojis';\nimport { TextField } from '@fluentui/react/lib/TextField';\nimport { useTheme } from '@fluentui/react/lib/Theme';\nimport type { EmojiPaneStyle } from '../type/EmojiPaneStyles';\nimport type { IProcessedStyleSet } from '@fluentui/react/lib/Styling';\nimport type { EmojiFamilyKeys } from '../utils/emojiList';\nimport type { EmojiIconProps } from './EmojiIcon';\nimport type { EmojiNavBarProps } from './EmojiNavBar';\nimport type { EmojiStatusBarProps } from './EmojiStatusBar';\nimport type { ICalloutProps } from '@fluentui/react/lib/Callout';\nimport type { Emoji } from '../type/Emoji';\nimport type { EmojiStringKeys } from '../type/EmojiStringKeys';\nimport type { LocalizedStrings } from '../../common/index';\nimport type { ITextField } from '@fluentui/react/lib/TextField';\nimport type { Theme } from '@fluentui/react/lib/Theme';\n\n// \"When a div contains an element that is bigger (either taller or wider) than the parent and has the property\n// overflow-x or overflow-y set to any value, then it can receive the focus.\"\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1069739\nconst TabIndexForFirefoxBug = -1;\nconst EmojisPerRow = 7;\nconst EmojiVisibleRowCount = 5;\nconst EmojiVisibleWithoutNavBarRowCount = 6;\nconst EmojiHeightPx = 40;\nconst VerticalDirectionKeys: number[] = [KeyCodes.up, KeyCodes.down];\nconst DirectionKeys: number[] = [\n KeyCodes.left,\n KeyCodes.right,\n KeyCodes.up,\n KeyCodes.down,\n KeyCodes.home,\n KeyCodes.end,\n];\n\nconst TooltipCalloutProps: ICalloutProps = {\n isBeakVisible: true,\n beakWidth: 16,\n gapSpace: 0,\n setInitialFocus: true,\n doNotLayer: false,\n directionalHint: DirectionalHint.bottomCenter,\n};\n\n/**\n * @internal\n * Types of emoji pane size\n */\nexport type EmojiPaneMode = 'Quick' | 'Partial' | 'Full';\n\n/**\n * @internal\n * Types of emoji Navigation direction\n */\nexport type EmojiPaneNavigateDirection = 'Horizontal' | 'Vertical';\n\n/**\n * @internal\n * Emoji Pane data\n */\nexport interface EmojiPaneState {\n index: number;\n mode: EmojiPaneMode;\n currentEmojiList: Emoji[];\n currentFamily: EmojiFamilyKeys;\n search: string;\n searchInBox: string;\n}\n\n/**\n * @internal\n * Emoji Pane customizable data\n */\nexport interface EmojiPaneProps {\n searchDisabled?: boolean;\n hideStatusBar?: boolean;\n navBarProps?: Partial<EmojiNavBarProps>;\n statusBarProps?: Partial<EmojiStatusBarProps>;\n emojiIconProps?: Partial<EmojiIconProps>;\n searchBoxString?: LocalizedStrings<EmojiStringKeys>;\n onSelect: (emoji: Emoji, wordBeforeCursor: string) => void;\n baseId: number;\n strings: Record<string, string>;\n}\n\nconst AriaAttributes = {\n ActiveDescendant: 'aria-activedescendant',\n AutoComplete: 'aria-autocomplete',\n Controls: 'aria-controls',\n Expanded: 'aria-expanded',\n HasPopup: 'aria-haspopup',\n Owns: 'aria-owns',\n Pressed: 'aria-pressed',\n};\n\n/**\n * @internal\n * Emoji pane component functions\n */\nexport interface EmojiPane {\n navigate: (change: number, direction?: EmojiPaneNavigateDirection) => number;\n getEmojiElementIdByIndex: (index: number) => string | null;\n getSelectedEmoji: () => Emoji;\n showFullPicker: (fullSearchText: string) => void;\n setSearch: (value: string) => void;\n normalizeSearchText: (text: string, colonIncluded: boolean) => string;\n getSearchResult: (searchValue: string, mode: EmojiPaneMode) => Emoji[];\n getEmojiIconId: (emoji: Emoji) => string;\n}\n\nconst EmojiPane = React.forwardRef(function EmojiPaneFunc(\n props: EmojiPaneProps,\n ref: React.Ref<EmojiPane>\n) {\n let searchBox: ITextField;\n let emojiBody: HTMLElement;\n let input: HTMLInputElement;\n\n const [index, setIndex] = React.useState<number>(0);\n const [mode, setMode] = React.useState<EmojiPaneMode>('Quick');\n const [currentEmojiList, setCurrentEmojiList] = React.useState<Emoji[]>(CommonEmojis);\n const [currentFamily, setCurrentFamily] = React.useState<EmojiFamilyKeys>('People');\n const [search, setSearchString] = React.useState<string>(':');\n const [searchInBox, setSearchInBox] = React.useState<string>('');\n\n const theme = useTheme();\n const classNames = getEmojiPaneClassName(theme);\n const listId = `EmojiPane${props.baseId}`;\n\n const navigate = React.useCallback(\n (change: number, direction?: EmojiPaneNavigateDirection): number => {\n if (!direction) {\n direction = 'Horizontal';\n }\n\n if (direction === 'Vertical' && index !== -1) {\n change *= EmojisPerRow;\n }\n\n const newIndex = index + change;\n const length = currentEmojiList.length;\n if (newIndex >= 0 && newIndex < length) {\n setIndex(newIndex);\n return newIndex;\n }\n\n return -1;\n },\n [index]\n );\n\n const normalizeSearchText = React.useCallback(\n (text: string, colonIncluded: boolean): string => {\n if (text == null) {\n return '';\n }\n\n if (colonIncluded) {\n text = text.substr(1);\n }\n return text.trim();\n },\n []\n );\n\n const getEmojiElementIdByIndex = React.useCallback(\n (index: number): string | null => {\n const emoji = currentEmojiList[index];\n if (emoji) {\n return getEmojiIconId(emoji);\n }\n\n return null;\n },\n [currentEmojiList]\n );\n\n const getSelectedEmoji = React.useCallback((): Emoji => {\n return currentEmojiList[index];\n }, [currentEmojiList, index]);\n\n const showFullPicker = React.useCallback(\n (fullSearchText: string): void => {\n const normalizedSearchValue = normalizeSearchText(fullSearchText, true);\n const newMode: EmojiPaneMode = normalizedSearchValue.length === 0 ? 'Full' : 'Partial';\n setIndex(newMode === 'Full' ? -1 : 0);\n setMode(newMode);\n setCurrentEmojiList(getSearchResult(normalizedSearchValue, newMode));\n setSearchString(fullSearchText);\n setSearchInBox(normalizedSearchValue);\n },\n [mode]\n );\n\n const setSearch = React.useCallback(\n (value: string): void => {\n const normalizedSearchValue = normalizeSearchText(value, false);\n setIndex(0);\n setCurrentEmojiList(getSearchResult(normalizedSearchValue, mode));\n setSearchString(value);\n },\n [index, search, currentEmojiList]\n );\n\n const getSearchResult = React.useCallback(\n (searchValue: string, mode: EmojiPaneMode): Emoji[] => {\n const isQuickMode = mode === 'Quick';\n if (!searchValue) {\n return isQuickMode ? currentEmojiList : EmojiList[currentFamily];\n }\n\n const emojiList = searchEmojis(searchValue, props.strings);\n return isQuickMode ? emojiList.slice(0, 5).concat([MoreEmoji]) : emojiList;\n },\n [mode, currentFamily, currentEmojiList]\n );\n\n const getEmojiIconId = React.useCallback(\n (emoji: Emoji) => (emoji ? `${listId}-${emoji.key}` : ''),\n [listId]\n );\n\n React.useImperativeHandle(\n ref,\n () => ({\n navigate,\n getEmojiElementIdByIndex,\n showFullPicker,\n getSearchResult,\n setSearch,\n getSelectedEmoji,\n normalizeSearchText,\n getEmojiIconId,\n }),\n [\n navigate,\n getEmojiElementIdByIndex,\n showFullPicker,\n getSearchResult,\n setSearch,\n getEmojiIconId,\n getSelectedEmoji,\n normalizeSearchText,\n ]\n );\n\n const renderQuickPicker = (\n props: EmojiPaneProps,\n index: number,\n currentEmojiList: Emoji[]\n ): JSX.Element => {\n const { strings } = props;\n const selectedEmoji = getSelectedEmoji();\n const target = selectedEmoji ? `#${getEmojiIconId(selectedEmoji)}` : undefined;\n const content = selectedEmoji?.description ? strings[selectedEmoji.description] : undefined;\n const emojiList = renderCurrentEmojiIcons(index, currentEmojiList);\n // note: we're using a callout since TooltipHost does not support manual trigger, and we need to show the tooltip since quick picker is shown\n // as an autocomplete menu (false focus based on transferring navigation keyboard event)\n return (\n <div id={listId} role=\"listbox\">\n {emojiList}\n <div\n id={listId}\n role=\"listbox\"\n className={css(classNames.quickPicker, classNames.roosterEmojiPane)}>\n <Callout\n {...TooltipCalloutProps}\n role=\"tooltip\"\n target={target}\n hidden={!content || !emojiList}\n className={classNames.tooltip}>\n {content}\n </Callout>\n </div>\n </div>\n );\n };\n\n const renderFullPicker = (\n props: EmojiPaneProps,\n index: number,\n searchInBox: string,\n currentFamily: EmojiFamilyKeys,\n currentEmojiList: Emoji[]\n ): JSX.Element => {\n const { searchDisabled, searchBoxString } = props;\n const emojiId = getEmojiIconId(getSelectedEmoji());\n const autoCompleteAttributes = {\n [AriaAttributes.AutoComplete]: 'list',\n [AriaAttributes.Expanded]: 'true',\n [AriaAttributes.HasPopup]: 'listbox',\n [AriaAttributes.Owns]: listId,\n };\n if (emojiId) {\n autoCompleteAttributes[AriaAttributes.ActiveDescendant] = emojiId;\n }\n\n return (\n <div className={classNames.roosterEmojiPane}>\n {!searchDisabled && (\n <TextField\n role=\"combobox\"\n componentRef={ref => searchRefCallback(ref)}\n value={searchInBox}\n onChange={onSearchChange}\n inputClassName={classNames.emojiTextInput}\n onKeyPress={onSearchKeyPress}\n onKeyDown={onSearchKeyDown}\n onFocus={onSearchFocus}\n placeholder={getLocalizedString(\n searchBoxString,\n 'emojiSearchPlaceholder',\n 'Search...'\n )}\n ariaLabel={getLocalizedString(\n searchBoxString,\n 'emojiSearchInputAriaLabel',\n 'Search...'\n )}\n {...autoCompleteAttributes}\n />\n )}\n {mode === 'Full'\n ? renderFullList(props, index, currentFamily, currentEmojiList)\n : renderPartialList(props, index, currentEmojiList)}\n </div>\n );\n };\n\n const onSearchFocus = (e: React.FocusEvent<HTMLInputElement>): void => {\n input = e.target as HTMLInputElement;\n };\n\n const onSearchKeyPress = (e: React.KeyboardEvent<HTMLInputElement>): void => {\n if (!e || e.which !== KeyCodes.enter) {\n return;\n }\n\n if (index >= 0 && currentEmojiList && currentEmojiList.length > 0) {\n onSelect(e, currentEmojiList[index]);\n }\n };\n\n const onSearchKeyDown = (e: React.KeyboardEvent<HTMLInputElement>): void => {\n if (!e || DirectionKeys.indexOf(e.which) < 0) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n if (e.which === KeyCodes.home) {\n setIndex(0);\n emojiBody.scrollTop = 0;\n return;\n }\n if (e.which === KeyCodes.end) {\n setIndex(currentEmojiList.length - 1);\n emojiBody.scrollTop = emojiBody.scrollHeight; // scrollHeight will be larger than max\n return;\n }\n\n const direction: EmojiPaneNavigateDirection =\n VerticalDirectionKeys.indexOf(e.which) < 0 ? 'Horizontal' : 'Vertical';\n const newIndex = navigate(\n e.which === KeyCodes.left || e.which === KeyCodes.up ? -1 : 1,\n direction\n );\n if (newIndex > -1) {\n const visibleRowCount =\n mode === 'Full' ? EmojiVisibleRowCount : EmojiVisibleWithoutNavBarRowCount;\n const currentRow = Math.floor(newIndex / EmojisPerRow);\n const visibleTop = emojiBody.scrollTop;\n const visibleBottom = visibleTop + visibleRowCount * EmojiHeightPx;\n const currentRowTop = currentRow * EmojiHeightPx;\n const currentRowBottom = currentRowTop + EmojiHeightPx;\n if (visibleTop <= currentRowTop && visibleBottom >= currentRowBottom) {\n return; // row is visible, so exit\n }\n\n emojiBody.scrollTop = currentRow * EmojiHeightPx;\n }\n };\n\n const renderCurrentEmojiIcons = (index: number, currentEmojiList: Emoji[]): JSX.Element[] => {\n const { strings } = props;\n return currentEmojiList.map((emoji, emojiIndex) => (\n <EmojiIcon\n strings={strings}\n id={getEmojiIconId(emoji)}\n key={emoji.key}\n onMouseOver={() => setIndex(emojiIndex)}\n onFocus={() => setIndex(emojiIndex)}\n emoji={emoji}\n classNames={classNames}\n isSelected={index === emojiIndex}\n onClick={e => onSelect(e, emoji)}\n aria-posinset={index + 1}\n aria-setsize={currentEmojiList.length}\n />\n ));\n };\n\n const renderPartialList = (\n props: EmojiPaneProps,\n index: number,\n currentEmojiList: Emoji[]\n ): JSX.Element => {\n const { strings, hideStatusBar, statusBarProps } = props;\n const hasResult = currentEmojiList && currentEmojiList.length > 0;\n\n return (\n <div>\n <div\n className={classNames.partialList}\n data-is-scrollable={true}\n tabIndex={TabIndexForFirefoxBug}\n ref={onEmojiBodyRef}>\n <FocusZone\n id={listId}\n role=\"listbox\"\n className={classNames.fullListContent}\n ref={focusZoneRefCallback}>\n {renderCurrentEmojiIcons(index, currentEmojiList)}\n </FocusZone>\n </div>\n {!hideStatusBar && (\n <EmojiStatusBar\n classNames={classNames}\n strings={strings}\n {...statusBarProps}\n hasResult={hasResult}\n emoji={getSelectedEmoji()}\n />\n )}\n </div>\n );\n };\n\n const renderFullList = (\n props: EmojiPaneProps,\n index: number,\n currentFamily: EmojiFamilyKeys,\n currentEmojiList: Emoji[]\n ): JSX.Element => {\n const { strings, hideStatusBar, navBarProps, statusBarProps } = props;\n\n const hasResult = currentEmojiList && currentEmojiList.length > 0;\n\n return (\n <div className={classNames.fullList}>\n <div\n className={classNames.fullListBody}\n data-is-scrollable={true}\n tabIndex={TabIndexForFirefoxBug}\n ref={onEmojiBodyRef}>\n <EmojiNavBar\n strings={strings}\n {...navBarProps}\n onClick={pivotClick}\n currentSelected={currentFamily}\n getTabId={getTabId}\n classNames={classNames}\n />\n <div role=\"tabpanel\" aria-labelledby={getTabId(currentFamily)}>\n <div>\n <FocusZone\n id={listId}\n role=\"listbox\"\n className={classNames.fullListContent}\n ref={focusZoneRefCallback}>\n {renderCurrentEmojiIcons(index, currentEmojiList)}\n </FocusZone>\n </div>\n </div>\n </div>\n\n {!hideStatusBar && (\n <EmojiStatusBar\n classNames={classNames}\n strings={strings}\n {...statusBarProps}\n hasResult={hasResult}\n emoji={getSelectedEmoji()}\n />\n )}\n </div>\n );\n };\n\n const onEmojiBodyRef = (ref: HTMLDivElement) => {\n emojiBody = ref;\n };\n\n const pivotClick = (selected: string): void => {\n const currentFamily = selected as EmojiFamilyKeys;\n setCurrentEmojiList(EmojiList[currentFamily]);\n setCurrentFamily(currentFamily);\n };\n\n const getTabId = (itemKey: EmojiFamilyKeys): string => {\n return `family_${itemKey}_${props.baseId}`;\n };\n\n const searchRefCallback = (ref: ITextField | null): void => {\n if (ref) {\n searchBox = ref;\n if (searchBox?.value) {\n searchBox.focus();\n searchBox.setSelectionStart(searchBox.value.length);\n }\n }\n };\n\n const focusZoneRefCallback = (ref: FocusZone): void => {\n if (props.searchDisabled && ref) {\n ref.focus();\n }\n\n if (input) {\n // make sure to announce the active descending after the focus zone containing the emojis is ready\n input.removeAttribute(AriaAttributes.ActiveDescendant);\n const emojiId = getEmojiIconId(getSelectedEmoji());\n // we need to delay so NVDA will announce the first selection\n if (emojiId) {\n setTimeout(() => input.setAttribute(AriaAttributes.ActiveDescendant, emojiId), 0);\n }\n }\n };\n\n const onSearchChange = (_: any, newValue?: string): void => {\n if (typeof newValue === 'string') {\n const normalizedSearchValue = normalizeSearchText(newValue, false);\n const newMode: EmojiPaneMode = normalizedSearchValue.length === 0 ? 'Full' : 'Partial';\n setIndex(newMode === 'Full' ? -1 : 0);\n setCurrentEmojiList(getSearchResult(normalizedSearchValue, mode));\n setSearchInBox(newValue);\n setMode(newMode);\n }\n };\n\n const onSelect = (\n e: React.MouseEvent<EventTarget> | React.KeyboardEvent<HTMLInputElement>,\n emoji: Emoji\n ): void => {\n e.stopPropagation();\n e.preventDefault();\n if (props.onSelect) {\n props.onSelect(emoji, search);\n }\n };\n\n const renderPane = (\n props: EmojiPaneProps,\n index: number,\n searchInBox: string,\n currentFamily: EmojiFamilyKeys,\n currentEmojiList: Emoji[]\n ) => {\n return mode === 'Quick'\n ? renderQuickPicker(props, index, currentEmojiList)\n : renderFullPicker(props, index, searchInBox, currentFamily, currentEmojiList);\n };\n\n return <>{renderPane(props, index, searchInBox, currentFamily, currentEmojiList)}</>;\n});\n\n/**\n * @internal\n * Emoji pane component\n */\nexport function showEmojiPane(\n onSelect: (emoji: Emoji, wordBeforeCursor: string) => void,\n strings: Record<string, string>,\n paneRef: React.RefObject<EmojiPane>,\n baseId: number,\n searchBoxString?: LocalizedStrings<EmojiStringKeys>\n) {\n return (\n <EmojiPane\n ref={paneRef}\n baseId={baseId}\n searchBoxString={searchBoxString}\n strings={strings}\n onSelect={onSelect}></EmojiPane>\n );\n}\n\nconst calcMaxHeight = () => {\n const buttonHeight = 40;\n const rowsOfIcons = 6; // including family bar if shown\n const bottomPaddingForContent = 5;\n const maxHeightForContent = rowsOfIcons * buttonHeight + bottomPaddingForContent;\n return maxHeightForContent.toString() + 'px';\n};\n\nconst calcPaneWidth = () => {\n const buttonWidth = 40;\n const pivotItemCount = 7;\n const paneHorizontalPadding = 1;\n const paneWidth = buttonWidth * pivotItemCount + 2 * paneHorizontalPadding;\n return paneWidth.toString() + 'px';\n};\n\nconst getEmojiPaneClassName = memoizeFunction(\n (theme: Theme): IProcessedStyleSet<EmojiPaneStyle> => {\n const palette = theme.palette;\n const styles: EmojiPaneStyle = {\n quickPicker: {\n overflowY: 'hidden',\n ':after': {\n content: '',\n position: 'absolute',\n left: '0px',\n top: '0px',\n bottom: '0px',\n right: '0px',\n zIndex: 1,\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: 'rgb(255, 255, 255)',\n borderImage: 'initial',\n outline: 'rgb(102, 102, 102) solid 1px',\n },\n },\n\n tooltip: {\n padding: '8px',\n },\n\n emojiTextInput: {\n padding: '6px',\n },\n\n partialList: {\n maxHeight: calcMaxHeight(),\n overflow: 'hidden',\n overflowY: 'scroll',\n },\n\n fullListContent: {\n width: calcPaneWidth(),\n },\n\n fullListBody: {\n maxHeight: calcMaxHeight(),\n overflow: 'hidden',\n overflowY: 'scroll',\n height: calcMaxHeight(),\n },\n\n fullList: {\n position: 'relative',\n },\n\n roosterEmojiPane: {\n padding: '1px',\n background: palette.white,\n },\n\n emoji: {\n fontSize: '18px',\n width: '40px',\n height: '40px',\n border: '0',\n position: 'relative',\n background: palette.white,\n transition: 'backgorund 0.5s ease-in-out',\n },\n\n emojiSelected: {\n background: palette.neutralLight,\n },\n\n navBar: {\n top: '-1px',\n zIndex: 10,\n position: 'sticky',\n },\n\n navBarTooltip: {\n display: 'inline-block',\n },\n\n navBarButton: {\n height: '40px',\n width: '40px',\n border: '0',\n borderBottom: 'solid 1px',\n padding: 0,\n marginBottom: 0,\n display: 'inline-block',\n color: palette.themeDark,\n background: palette.white,\n '&:hover': {\n cursor: 'default',\n },\n },\n\n selected: {\n borderBottom: '2px solid',\n borderBottomColor: palette.themeDark,\n },\n\n statusBar: {\n borderTop: 'solid 1px',\n height: '50px',\n overflow: 'hidden',\n position: 'relative',\n background: palette.white,\n },\n\n statusBarIcon: {\n padding: '4px',\n fontSize: '25px',\n display: 'inline-block',\n fontStyle: 'normal',\n fontWeight: 'normal',\n lineHeight: '40px',\n },\n\n statusBarDetailsContainer: {\n padding: '0 4px',\n lineHeight: '50px',\n position: 'absolute',\n display: 'inline-block',\n left: '40px',\n right: '0',\n top: '0',\n },\n\n statusBarDetails: {\n fontWeight: 'bold',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n\n statusBarNoResultDetailsContainer: {\n lineHeight: '50px',\n position: 'absolute',\n display: 'inline-block',\n top: '0',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n left: '0',\n padding: '0 8px',\n },\n };\n return mergeStyleSets(styles);\n }\n);\n","import * as React from 'react';\nimport { TooltipHost, TooltipOverflowMode } from '@fluentui/react/lib/Tooltip';\nimport type { Emoji } from '../type/Emoji';\nimport type { EmojiPaneStyle } from '../type/EmojiPaneStyles';\nimport type { IProcessedStyleSet } from '@fluentui/react/lib/Styling';\n/**\n * @internal\n * Emoji Status Bar data\n */\nexport interface EmojiStatusBarProps {\n emoji: Emoji;\n strings: Record<string, string>;\n hasResult: boolean;\n classNames: IProcessedStyleSet<EmojiPaneStyle>;\n}\n\nconst NO_SUGGESTIONS = 'emjDNoSuggetions';\n\n/**\n * @internal\n * Emoji status bar component\n */\nexport function EmojiStatusBar(props: EmojiStatusBarProps) {\n const { emoji, strings, hasResult, classNames } = props;\n\n if (!hasResult) {\n const noResultDescription = strings[NO_SUGGESTIONS];\n return (\n <div className={classNames.statusBar}>\n <div style={{ display: 'none' }} aria-live=\"polite\">\n {noResultDescription}\n </div>\n <div className={classNames.statusBarNoResultDetailsContainer}>\n <TooltipHost\n content={noResultDescription}\n overflowMode={TooltipOverflowMode.Parent}>\n <span role=\"alert\">{noResultDescription}</span>\n </TooltipHost>\n </div>\n </div>\n );\n }\n\n const icon = emoji ? emoji.codePoint : '';\n const description = emoji?.description ? strings[emoji.description] : '';\n\n return (\n <div className={classNames.statusBar}>\n <i className={classNames.statusBarIcon} role=\"presentation\" aria-hidden=\"true\">\n {icon}\n </i>\n\n <div className={classNames.statusBarDetailsContainer}>\n <div className={classNames.statusBarDetails}>\n <TooltipHost content={description} overflowMode={TooltipOverflowMode.Parent}>\n {description}\n </TooltipHost>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from 'react';\nimport { Callout, DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { renderReactComponent } from '../../common/utils/renderReactComponent';\nimport { showEmojiPane } from './EmojiPane';\nimport type { Emoji } from '../type/Emoji';\nimport type { EmojiPane } from './EmojiPane';\nimport type { EmojiStringKeys } from '../type/EmojiStringKeys';\nimport type { LocalizedStrings, UIUtilities } from '../../common/index';\n\n/**\n * @internal\n * Emoji callout data\n */\ninterface EmojiICallOutProps {\n cursorRect: DOMRect;\n strings: Record<string, string>;\n onSelectFromPane: (emoji: Emoji, wordBeforeCursor: string) => void;\n paneRef: React.RefObject<EmojiPane>;\n onHideCallout: () => void;\n searchBoxString?: LocalizedStrings<EmojiStringKeys>;\n dismiss: () => void;\n baseId: number;\n}\n\nconst EmojiICallout = React.forwardRef(function EmojiCalloutFunc(\n props: EmojiICallOutProps,\n ref: React.Ref<EmojiICallout>\n) {\n const {\n cursorRect,\n strings,\n onSelectFromPane,\n onHideCallout,\n searchBoxString,\n dismiss,\n paneRef,\n baseId,\n } = props;\n const [isCalloutVisible, toggleIsCalloutVisible] = React.useState(true);\n\n React.useImperativeHandle(\n ref,\n () => ({\n dismiss,\n }),\n [dismiss]\n );\n\n const point = {\n x: cursorRect.left,\n y: (cursorRect.top + cursorRect.bottom) / 2,\n };\n const gap = (cursorRect.bottom - cursorRect.top) / 2 + 5;\n if (!isCalloutVisible) {\n onHideCallout();\n }\n const toogleCallout = React.useCallback(() => {\n toggleIsCalloutVisible(false);\n dismiss();\n }, [dismiss]);\n\n return (\n <>\n {isCalloutVisible && (\n <Callout\n target={point}\n directionalHint={DirectionalHint.bottomAutoEdge}\n isBeakVisible={false}\n gapSpace={gap}\n onDismiss={toogleCallout}>\n {showEmojiPane(onSelectFromPane, strings, paneRef, baseId, searchBoxString)}\n </Callout>\n )}\n </>\n );\n});\n\n/**\n * @internal\n */\nexport interface EmojiICallout {\n dismiss: () => void;\n}\n\n/**\n * @internal\n * Enable emoji callout\n */\nexport function showEmojiCallout(\n uiUtilities: UIUtilities,\n cursorRect: DOMRect,\n strings: Record<string, string>,\n onSelectFromPane: (emoji: Emoji, wordBeforeCursor: string) => void,\n paneRef: React.RefObject<EmojiPane>,\n emojiCalloutRef: React.RefObject<EmojiICallout>,\n onHideCallout: () => void,\n baseId: number,\n searchBoxString?: LocalizedStrings<EmojiStringKeys>\n) {\n let disposer: (() => void) | null = null;\n const onDismiss = () => {\n disposer?.();\n disposer = null;\n };\n\n disposer = renderReactComponent(\n uiUtilities,\n <EmojiICallout\n ref={emojiCalloutRef}\n cursorRect={cursorRect}\n strings={strings}\n onSelectFromPane={onSelectFromPane}\n paneRef={paneRef}\n onHideCallout={onHideCallout}\n searchBoxString={searchBoxString}\n baseId={baseId}\n dismiss={onDismiss}\n />\n );\n}\n","export { createEmojiPlugin } from './plugin/createEmojiPlugin';\nexport { EmojiStringKeys } from './type/EmojiStringKeys';\n","import * as React from 'react';\nimport { KeyCodes } from '@fluentui/react/lib/Utilities';\nimport { MoreEmoji } from '../utils/emojiList';\nimport { showEmojiCallout } from '../components/showEmojiCallout';\nimport { undo } from 'roosterjs-content-model-core';\nimport {\n isModifierKey,\n isNodeOfType,\n iterateSelections,\n mutateSegment,\n} from 'roosterjs-content-model-dom';\nimport type { EmojiICallout } from '../components/showEmojiCallout';\nimport type { Emoji } from '../type/Emoji';\nimport type { EmojiPane } from '../components/EmojiPane';\nimport type { EmojiStringKeys } from '../type/EmojiStringKeys';\nimport type { LocalizedStrings, ReactEditorPlugin, UIUtilities } from '../../common/index';\nimport {\n EmojiDescriptionStrings,\n EmojiFamilyStrings,\n EmojiKeywordStrings,\n} from '../type/EmojiStrings';\nimport type { IEditor, KeyDownEvent, KeyUpEvent, PluginEvent } from 'roosterjs-content-model-types';\n\nconst KEYCODE_COLON = 186;\nconst KEYCODE_COLON_FIREFOX = 59;\n\n// Regex looks for an emoji right before the : to allow contextual search immediately following an emoji\n// MATCHES: 0: 😃:r\n// 1: 😃\n// 2: :r\nconst EMOJI_BEFORE_COLON_REGEX = /([\\u0023-\\u0039][\\u20e3]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\u00a9-\\u00ae]|[\\u2122-\\u3299])*([:;][^:]*)/;\n\n// White space matching regex. It matches following chars:\n// \\s: white space\n// \\u00A0: no-breaking white space\n// \\u200B: zero width space\n// \\u3000: full width space (which can come from JPN IME)\nconst WHITESPACE_REGEX = /[\\s\\u00A0\\u200B\\u3000]+([^\\s\\u00A0\\u200B\\u3000]*)$/i;\n\nclass EmojiPlugin implements ReactEditorPlugin {\n private editor: IEditor | null = null;\n private eventHandledOnKeyDown: boolean = false;\n private canUndoEmoji: boolean = false;\n private isSuggesting: boolean = false;\n private paneRef = React.createRef<EmojiPane>();\n private timer: number | null = null;\n private uiUtilities: UIUtilities | null = null;\n private strings: Record<string, string>;\n private emojiCalloutRef = React.createRef<EmojiICallout>();\n private baseId = 0;\n\n constructor(private searchBoxStrings?: LocalizedStrings<EmojiStringKeys>) {\n this.strings = {\n ...EmojiDescriptionStrings,\n ...EmojiKeywordStrings,\n ...EmojiFamilyStrings,\n };\n }\n\n setUIUtilities(uiUtilities: UIUtilities) {\n this.uiUtilities = uiUtilities;\n }\n\n public getName() {\n return 'Emoji';\n }\n\n public dispose() {\n this.setIsSuggesting(false);\n this.emojiCalloutRef.current?.dismiss();\n this.editor = null;\n this.baseId = 0;\n }\n\n public initialize(editor: IEditor): void {\n this.editor = editor;\n }\n\n public onPluginEvent(event: PluginEvent): void {\n if (!this.editor) {\n return;\n }\n\n if (event.eventType === 'keyDown') {\n this.eventHandledOnKeyDown = false;\n if (this.isSuggesting) {\n this.onKeyDownSuggestingDomEvent(this.editor, event);\n } else if (event.rawEvent.key === 'Backspace' && this.canUndoEmoji) {\n //TODO: 1051\n // If KeyDown is backspace and canUndoEmoji, call editor undo\n undo(this.editor);\n\n this.handleEventOnKeyDown(event);\n this.canUndoEmoji = false;\n }\n } else if (event.eventType === 'keyUp' && !isModifierKey(event.rawEvent)) {\n if (this.isSuggesting) {\n this.onKeyUpSuggestingDomEvent(this.editor, event);\n } else {\n this.onKeyUpDomEvent(this.editor, event);\n }\n } else if (event.eventType === 'mouseUp') {\n //TODO: 1052\n // If MouseUp, the emoji cannot be undone\n this.canUndoEmoji = false;\n this.setIsSuggesting(false);\n }\n }\n\n /**\n * On KeyDown suggesting DOM event\n * Try to insert emoji is possible\n * Intercept arrow keys to move selection if popup is shown\n */\n private onKeyDownSuggestingDomEvent(editor: IEditor, event: KeyDownEvent): void {\n // If key is enter, try insert emoji at selection\n // If key is space and selection is shortcut, try insert emoji\n\n const wordBeforeCursor = this.getWordBeforeCursor(editor);\n switch (event.rawEvent.key) {\n case 'Enter':\n const selectedEmoji = this.paneRef.current?.getSelectedEmoji();\n // check if selection is on the \"...\" and show full picker if so, otherwise try to apply emoji\n if (\n !selectedEmoji ||\n !wordBeforeCursor ||\n this.tryShowFullPicker(event, selectedEmoji, wordBeforeCursor)\n ) {\n break;\n } else {\n this.insertEmoji(selectedEmoji, wordBeforeCursor);\n this.handleEventOnKeyDown(event);\n }\n\n break;\n case 'ArrowLeft':\n case 'ArrowRight':\n this.paneRef.current?.navigate(event.rawEvent.key === 'ArrowLeft' ? -1 : 1);\n this.handleEventOnKeyDown(event);\n break;\n case 'Escape':\n this.setIsSuggesting(false);\n this.handleEventOnKeyDown(event);\n }\n }\n\n private tryShowFullPicker(\n event: KeyDownEvent,\n selectedEmoji: Emoji,\n wordBeforeCursor: string\n ): boolean {\n if (selectedEmoji !== MoreEmoji) {\n return false;\n }\n\n this.handleEventOnKeyDown(event);\n this.paneRef.current?.showFullPicker(wordBeforeCursor);\n return true;\n }\n\n /**\n * On KeyUp suggesting DOM event\n * If key is character, update search term\n * Otherwise set isSuggesting to false\n */\n private onKeyUpSuggestingDomEvent(editor: IEditor, event: KeyUpEvent): void {\n if (this.eventHandledOnKeyDown) {\n return;\n }\n // If this is a character key or backspace\n // Clear the timer as we will either queue a new timer or stop suggesting\n if (\n this.timer &&\n ((event.rawEvent.key.length === 1 && event.rawEvent.which !== KeyCodes.space) ||\n event.rawEvent.which === KeyCodes.backspace)\n ) {\n this.editor?.getDocument().defaultView?.clearTimeout(this.timer);\n this.timer = null;\n this.emojiCalloutRef.current?.dismiss();\n }\n\n const wordBeforeCursor = this.getWordBeforeCursor(editor);\n if (wordBeforeCursor) {\n if (this.paneRef) {\n this.paneRef.current?.setSearch(wordBeforeCursor);\n } else {\n this.setIsSuggesting(false);\n }\n } else {\n this.setIsSuggesting(false);\n }\n }\n\n private onKeyUpDomEvent(editor: IEditor, event: KeyUpEvent): void {\n if (this.eventHandledOnKeyDown) {\n return;\n }\n\n if (\n (event.rawEvent.which === KEYCODE_COLON ||\n event.rawEvent.which === KEYCODE_COLON_FIREFOX) &&\n this.getWordBeforeCursor(editor) === ':'\n ) {\n this.setIsSuggesting(true);\n }\n }\n\n private getCallout() {\n const selection = this.editor?.getDOMSelection();\n const rangeNode = selection?.type == 'range' ? selection.range.startContainer : null;\n const rangeElement = isNodeOfType(rangeNode, 'ELEMENT_NODE')\n ? rangeNode\n : rangeNode?.parentElement;\n const rect = rangeElement?.getBoundingClientRect();\n\n if (this.uiUtilities && rect) {\n this.baseId++;\n\n showEmojiCallout(\n this.uiUtilities,\n rect,\n this.strings,\n this.onSelectFromPane,\n this.paneRef,\n this.emojiCalloutRef,\n this.onHideCallout,\n this.baseId,\n this.searchBoxStrings\n );\n }\n }\n\n private onHideCallout = () => this.setIsSuggesting(false);\n\n private onSelectFromPane = (emoji: Emoji, wordBeforeCursor: string): void => {\n if (emoji === MoreEmoji) {\n this.paneRef.current?.showFullPicker(wordBeforeCursor);\n return;\n }\n\n this.insertEmoji(emoji, wordBeforeCursor);\n };\n\n private setIsSuggesting(isSuggesting: boolean): void {\n if (this.isSuggesting === isSuggesting) {\n return;\n }\n\n this.isSuggesting = isSuggesting;\n if (this.isSuggesting) {\n this.getCallout();\n } else if (this.emojiCalloutRef) {\n this.emojiCalloutRef.current?.dismiss();\n }\n }\n\n private insertEmoji(emoji: Emoji, wordBeforeCursor: string) {\n if (!wordBeforeCursor || !this.editor || !emoji.codePoint) {\n return;\n }\n\n this.editor.formatContentModel(model => {\n iterateSelections(model, (_, __, block, segments) => {\n if (\n block?.blockType == 'Paragraph' &&\n segments?.length == 1 &&\n segments[0].segmentType == 'SelectionMarker'\n ) {\n const index = block.segments.indexOf(segments[0]);\n const previousSegment = block.segments[index - 1];\n\n if (\n previousSegment?.segmentType == 'Text' &&\n previousSegment.text.endsWith(wordBeforeCursor)\n ) {\n mutateSegment(block, previousSegment, segment => {\n segment.text =\n segment.text.substring(\n 0,\n segment.text.length - wordBeforeCursor.length\n ) + emoji.codePoint;\n });\n }\n }\n\n return true;\n });\n\n return true;\n });\n\n this.emojiCalloutRef.current?.dismiss();\n }\n\n private getWordBeforeCursor(editor: IEditor): string | null {\n let wordBeforeCursor: string | null = null;\n\n editor.formatContentModel(model => {\n iterateSelections(model, (_, __, block, segments) => {\n if (\n block?.blockType == 'Paragraph' &&\n segments?.length == 1 &&\n segments[0].segmentType == 'SelectionMarker'\n ) {\n const index = block.segments.indexOf(segments[0]);\n const prevSegment = block.segments[index - 1];\n\n if (prevSegment?.segmentType == 'Text') {\n // Match on the white space, the portion after space is on the index of 1 of the matched result\n // (index at 0 is whole match result, index at 1 is the word)\n const matches = WHITESPACE_REGEX.exec(prevSegment.text);\n wordBeforeCursor = matches?.length == 2 ? matches[1] : prevSegment.text;\n }\n }\n\n return true;\n });\n return false;\n });\n\n const matches = wordBeforeCursor ? EMOJI_BEFORE_COLON_REGEX.exec(wordBeforeCursor) : null;\n return matches && matches.length > 2 && matches[0] === wordBeforeCursor ? matches[2] : null;\n }\n\n private handleEventOnKeyDown(event: KeyDownEvent): void {\n this.eventHandledOnKeyDown = true;\n event.rawEvent.preventDefault();\n event.rawEvent.stopImmediatePropagation();\n }\n}\n\n/**\n * Create a new instance of Emoji plugin with FluentUI components.\n */\nexport function createEmojiPlugin(\n searchBoxStrings?: LocalizedStrings<EmojiStringKeys>\n): ReactEditorPlugin {\n return new EmojiPlugin(searchBoxStrings);\n}\n","/**\n * @internal\n * Emoji Description\n */\nexport const EmojiDescriptionStrings = {\n emjDMore: 'More',\n emjDNoSuggestions: 'No suggestions found',\n emjD0270a: 'Raised fist',\n emjD0270b: 'Raised hand',\n emjD0270c: 'Victory hand',\n emjD02764: 'Red heart',\n emjD1f440: 'Eyes',\n emjD1f442: 'Ear',\n emjD1f443: 'Nose',\n emjD1f444: 'Mouth',\n emjD1f445: 'Tongue',\n emjD1f446: 'Up-pointing backhand index finger',\n emjD1f447: 'Down-pointing backhand index finger',\n emjD1f448: 'Left-pointing backhand index finger',\n emjD1f449: 'Right-pointing backhand index finger',\n emjD1f44a: 'Fist bump',\n emjD1f44b: 'Waving hand',\n emjD1f44c: 'OK hand',\n emjD1f44d: 'Thumbs up',\n emjD1f44e: 'Thumbs down',\n emjD1f44f: 'Clapping hands',\n emjD1f450: 'Open hands',\n emjD1f590: 'Raised hand with fingers splayed',\n emjD1f595: 'Middle finger',\n emjD1f596: 'Raised hand with part between middle and ring fingers',\n emjD1f464: 'Bust in silhouette',\n emjD1f466: 'Boy',\n emjD1f467: 'Girl',\n emjD1f468: 'Man',\n emjD1f469: 'Woman',\n emjD1f46a: 'Family',\n emjD1f46b: 'Man and woman holding hands',\n emjD1f46e: 'Police officer',\n emjD1f46f: 'Woman with bunny ears',\n emjD1f470: 'Bride with veil',\n emjD1f471: 'Person with blond hair',\n emjD1f472: 'Man with gua pi mao',\n emjD1f473: 'Man with turban',\n emjD1f474: 'Older man',\n emjD1f475: 'Older woman',\n emjD1f476: 'Baby',\n emjD1f477: 'Construction worker',\n emjD1f481: 'Information desk person',\n emjD1f482: 'Guardsman',\n emjD1f48b: 'Kiss mark',\n emjD1f493: 'Beating heart',\n emjD1f494: 'Broken heart',\n emjD1f495: 'Two hearts',\n emjD1f496: 'Sparkling heart',\n emjD1f497: 'Growing heart',\n emjD1f498: 'Heart with arrow',\n emjD1f499: 'Blue heart',\n emjD1f49a: 'Green heart',\n emjD1f49b: 'Yellow heart',\n emjD1f49c: 'Purple heart',\n emjD1f49d: 'Heart with ribbon',\n emjD1f49e: 'Revolving hearts',\n emjD1f49f: 'Heart decoration',\n emjD1f601: 'Grinning face with smiling eyes',\n emjD1f602: 'Face with tears of joy',\n emjD1f603: 'Smiling face with open mouth',\n emjD1f604: 'Smiling face with open mouth and smiling eyes',\n emjD1f605: 'Smiling face with open mouth and cold sweat',\n emjD1f606: 'Smiling face with open mouth and tightly closed eyes',\n emjD1f607: 'Smiling face with halo',\n emjD1f608: 'Smiling face with horns',\n emjD1f609: 'Winking face',\n emjD1f60a: 'Smiling face with smiling eyes',\n emjD1f60b: 'Face savoring delicious food',\n emjD1f60c: 'Relieved face',\n emjD1f60d: 'Smiling face with heart-shaped eyes',\n emjD1f60e: 'Smiling face with sunglasses',\n emjD1f60f: 'Smirking face',\n emjD1f610: 'Neutral face',\n emjD1f612: 'Unamused face',\n emjD1f613: 'Face with cold sweat',\n emjD1f614: 'Pensive face',\n emjD1f616: 'Confounded face',\n emjD1f618: 'Face throwing a kiss',\n emjD1f61a: 'Kissing face with closed eyes',\n emjD1f61c: 'Face with stuck-out tongue and winking eye',\n emjD1f61d: 'Face with stuck-out tongue and tightly closed eyes',\n emjD1f61e: 'Disappointed face',\n emjD1f620: 'Angry face',\n emjD1f621: 'Pouting face',\n emjD1f622: 'Crying face',\n emjD1f623: 'Persevering face',\n emjD1f624: 'Face with look of triumph',\n emjD1f625: 'Disappointed but relieved face',\n emjD1f628: 'Fearful face',\n emjD1f629: 'Weary face',\n emjD1f62a: 'Sleepy face',\n emjD1f62b: 'Tired face',\n emjD1f62d: 'Loudly crying face',\n emjD1f630: 'Face with open mouth and cold sweat',\n emjD1f631: 'Face screaming in fear',\n emjD1f632: 'Astonished face',\n emjD1f633: 'Flushed face',\n emjD1f635: 'Dizzy face',\n emjD1f636: 'Face without mouth',\n emjD1f637: 'Face with medical mask',\n emjD1f645: 'Face with No Good gesture',\n emjD1f646: 'Face with OK gesture',\n emjD1f647: 'Person bowing deeply',\n emjD1f648: 'See-no-evil monkey',\n emjD1f649: 'Hear-no-evil monkey',\n emjD1f641: 'Slightly frowning face',\n emjD1f642: 'Slightly smiling face',\n emjD1f64a: 'Speak-no-evil monkey',\n emjD1f64b: 'Happy person raising one hand',\n emjD1f64c: 'Person raising both hands in celebration',\n emjD1f64d: 'Person frowning',\n emjD1f64e: 'Person with pouting face',\n emjD1f64f: 'Person with folded hands',\n emjD02600: 'Sun with rays',\n emjD02601: 'Cloud',\n emjD02614: 'Umbrella with rain drops',\n emjD0267b: 'Recycling symbol',\n emjD026c4: 'Snowman without snow',\n emjD026c5: 'Sun behind cloud',\n emjD02728: 'Sparkles',\n emjD02733: 'Eight-spoked asterisk',\n emjD02734: 'Eight-pointed star',\n emjD02744: 'Snowflake',\n emjD02747: 'Sparkle',\n emjD02b50: 'White medium star',\n emjD1f300: 'Cyclone',\n emjD1f301: 'Foggy',\n emjD1f302: 'Closed umbrella',\n emjD1f303: 'Night with stars',\n emjD1f304: 'Sunrise over mountains',\n emjD1f305: 'Sunrise',\n emjD1f306: 'Cityscape at dusk',\n emjD1f307: 'Sunset over buildings',\n emjD1f308: 'Rainbow',\n emjD1f309: 'Bridge at night',\n emjD1f30a: 'Water wave',\n emjD1f30b: 'Volcano',\n emjD1f30c: 'Milky Way',\n emjD1f311: 'New moon',\n emjD1f313: 'First quarter moon',\n emjD1f314: 'Waxing gibbous moon',\n emjD1f315: 'Full moon',\n emjD1f319: 'Crescent moon',\n emjD1f31b: 'First quarter moon with face',\n emjD1f31f: 'Glowing star',\n emjD1f320: 'Shooting star',\n emjD1f330: 'Chestnut',\n emjD1f331: 'Seedling',\n emjD1f334: 'Palm tree',\n emjD1f335: 'Cactus',\n emjD1f337: 'Tulip',\n emjD1f338: 'Cherry blossom',\n emjD1f339: 'Rose',\n emjD1f33a: 'Hibiscus',\n emjD1f33b: 'Sunflower',\n emjD1f33c: 'Blossom',\n emjD1f33d: 'Ear of corn',\n emjD1f33e: 'Ear of rice',\n emjD1f33f: 'Herb',\n emjD1f340: 'Four leaf clover',\n emjD1f341: 'Maple leaf',\n emjD1f342: 'Fallen leaf',\n emjD1f343: 'Leaf fluttering in wind',\n emjD1f344: 'Mushroom',\n emjD1f40c: 'Snail',\n emjD1f40d: 'Snake',\n emjD1f40e: 'Horse',\n emjD1f411: 'Sheep',\n emjD1f412: 'Monkey',\n emjD1f414: 'Chicken',\n emjD1f417: 'Boar',\n emjD1f418: 'Elephant',\n emjD1f419: 'Octopus',\n emjD1f41a: 'Spiral shell',\n emjD1f41b: 'Bug',\n emjD1f41c: 'Ant',\n emjD1f41d: 'Honeybee',\n emjD1f41e: 'Ladybug',\n emjD1f41f: 'Fish',\n emjD1f420: 'Tropical fish',\n emjD1f421: 'Blowfish',\n emjD1f422: 'Turtle',\n emjD1f423: 'Hatching chick',\n emjD1f424: 'Baby chick',\n emjD1f425: 'Front-facing baby chick',\n emjD1f426: 'Bird',\n emjD1f427: 'Penguin',\n emjD1f428: 'Koala',\n emjD1f429: 'Poodle',\n emjD1f42b: 'Bactrian camel',\n emjD1f42c: 'Dolphin',\n emjD1f42d: 'Mouse face',\n emjD1f42e: 'Cow face',\n emjD1f42f: 'Tiger face',\n emjD1f430: 'Rabbit face',\n emjD1f431: 'Cat face',\n emjD1f432: 'Dragon face',\n emjD1f433: 'Spouting whale',\n emjD1f434: 'Horse face',\n emjD1f435: 'Monkey face',\n emjD1f436: 'Dog face',\n emjD1f437: 'Pig face',\n emjD1f438: 'Frog face',\n emjD1f439: 'Hamster face',\n emjD1f43a: 'Wolf face',\n emjD1f43b: 'Bear face',\n emjD1f43c: 'Panda face',\n emjD1f43d: 'Pig nose',\n emjD1f43e: 'Paw prints',\n emjD1f638: 'Grinning cat face with smiling eyes',\n emjD1f639: 'Cat face with tears of joy',\n emjD1f63a: 'Smiling cat face with open mouth',\n emjD1f63b: 'Smiling cat face with heart-shaped eyes',\n emjD1f63c: 'Cat face with wry smile',\n emjD1f63d: 'Kissing cat face with closed eyes',\n emjD1f63e: 'Pouting cat face',\n emjD1f63f: 'Crying cat face',\n emjD1f640: 'Weary cat face',\n emjD0260e: 'Telephone',\n emjD026bd: 'Soccer ball',\n emjD026be: 'Baseball',\n emjD1f004: 'Mahjong tile red dragon',\n emjD1f380: 'Ribbon',\n emjD1f381: 'Wrapped present',\n emjD1f382: 'Birthday cake',\n emjD1f383: 'Jack-o-lantern',\n emjD1f384: 'Christmas tree',\n emjD1f385: 'Father Christmas',\n emjD1f386: 'Fireworks',\n emjD1f387: 'Firework sparkler',\n emjD1f388: 'Balloon',\n emjD1f389: 'Party popper',\n emjD1f38a: 'Confetti ball',\n emjD1f38b: 'Tanabata tree',\n emjD1f38c: 'Crossed flags',\n emjD1f38d: 'Pine decoration',\n emjD1f38e: 'Japanese dolls',\n emjD1f38f: 'Carp streamer',\n emjD1f390: 'Wind chime',\n emjD1f391: 'Moon-viewing ceremony',\n emjD1f392: 'School backpack',\n emjD1f393: 'Graduation cap',\n emjD1f3a0: 'Carousel horse',\n emjD1f3a1: 'Ferris wheel',\n emjD1f3a2: 'Roller coaster',\n emjD1f3a3: 'Fishing pole and fish',\n emjD1f3a4: 'Microphone',\n emjD1f3a5: 'Movie camera',\n emjD1f3a6: 'Cinema',\n emjD1f3a7: 'Headphones',\n emjD1f3a8: 'Artist palette',\n emjD1f3a9: 'Top hat',\n emjD1f3aa: 'Circus tent',\n emjD1f3ab: 'Ticket',\n emjD1f3ac: 'Clapper board',\n emjD1f3ad: 'Performing arts',\n emjD1f3ae: 'Video game',\n emjD1f3af: 'Direct hit',\n emjD1f3b0: 'Slot machine',\n emjD1f3b1: 'Billiards',\n emjD1f3b2: 'Game die',\n emjD1f3b3: 'Bowling',\n emjD1f3b4: 'Flower playing cards',\n emjD1f3b5: 'Musical note',\n emjD1f3b6: 'Multiple musical notes',\n emjD1f3b7: 'Saxophone',\n emjD1f3b8: 'Guitar',\n emjD1f3b9: 'Musical keyboard',\n emjD1f3ba: 'Trumpet',\n emjD1f3bb: 'Violin',\n emjD1f3bc: 'Musical score',\n emjD1f3bd: 'Running shirt with sash',\n emjD1f3be: 'Tennis racquet and ball',\n emjD1f3bf: 'Ski and ski boot',\n emjD1f3c0: 'Basketball and hoop',\n emjD1f3c1: 'Checkered flag',\n emjD1f3c2: 'Snowboarder',\n emjD1f3c3: 'Runner',\n emjD1f3c4: 'Surfer',\n emjD1f3c6: 'Trophy',\n emjD1f3c8: 'American football',\n emjD1f3ca: 'Swimmer',\n emjD1f478: 'Princess',\n emjD1f479: 'Japanese ogre',\n emjD1f47a: 'Japanese goblin',\n emjD1f47b: 'Ghost',\n emjD1f47c: 'Baby angel',\n emjD1f47d: 'Extraterrestrial alien',\n emjD1f47e: 'Alien monster',\n emjD1f47f: 'Imp',\n emjD1f480: 'Skull',\n emjD1f483: 'Dancer',\n emjD1f484: 'Lipstick',\n emjD1f485: 'Nail polish',\n emjD1f486: 'Face massage',\n emjD1f487: 'Haircut',\n emjD1f488: 'Barber pole',\n emjD1f489: 'Syringe',\n emjD1f48a: 'Pill',\n emjD1f48c: 'Love letter',\n emjD1f48d: 'Ring',\n emjD1f48e: 'Gemstone',\n emjD1f48f: 'Kiss',\n emjD1f490: 'Bouquet',\n emjD1f491: 'Couple with heart',\n emjD1f492: 'Wedding',\n emjD1f4f7: 'Camera',\n emjD1f4f9: 'Video camera',\n emjD1f4fa: 'Television',\n emjD1f4fb: 'Radio',\n emjD1f4fc: 'Videocassette',\n emjD02615: 'Hot beverage',\n emjD02702: 'Scissors',\n emjD02709: 'Envelope',\n emjD0270f: 'Pencil',\n emjD02712: 'Nib',\n emjD1f345: 'Tomato',\n emjD1f346: 'Eggplant',\n emjD1f347: 'Grapes',\n emjD1f348: 'Melon',\n emjD1f349: 'Watermelon',\n emjD1f34a: 'Tangerine',\n emjD1f34c: 'Banana',\n emjD1f34d: 'Pineapple',\n emjD1f34e: 'Red apple',\n emjD1f34f: 'Green apple',\n emjD1f351: 'Peach',\n emjD1f352: 'Cherries',\n emjD1f353: 'Strawberry',\n emjD1f354: 'Hamburger',\n emjD1f355: 'Slice of pizza',\n emjD1f356: 'Meat on bone',\n emjD1f357: 'Poultry leg',\n emjD1f358: 'Rice cracker',\n emjD1f359: 'Rice ball',\n emjD1f35a: 'Cooked rice',\n emjD1f35b: 'Curry and rice',\n emjD1f35c: 'Steaming bowl',\n emjD1f35d: 'Spaghetti',\n emjD1f35e: 'Bread',\n emjD1f35f: 'French fries',\n emjD1f360: 'Roasted sweet potato',\n emjD1f361: 'Dango',\n emjD1f362: 'Oden',\n emjD1f363: 'Sushi',\n emjD1f364: 'Fried shrimp',\n emjD1f365: 'Fish cake with swirl design',\n emjD1f366: 'Soft ice cream',\n emjD1f367: 'Shaved ice',\n emjD1f368: 'Ice cream',\n emjD1f369: 'Doughnut',\n emjD1f36a: 'Cookie',\n emjD1f36b: 'Chocolate bar',\n emjD1f36c: 'Candy',\n emjD1f36d: 'Lollipop',\n emjD1f36e: 'Custard',\n emjD1f36f: 'Honey pot',\n emjD1f370: 'Shortcake',\n emjD1f371: 'Bento box',\n emjD1f372: 'Pot of food',\n emjD1f373: 'Cooking',\n emjD1f374: 'Fork and knife',\n emjD1f375: 'Teacup without handle',\n emjD1f376: 'Sake bottle and cup',\n emjD1f377: 'Wine glass',\n emjD1f378: 'Cocktail glass',\n emjD1f379: 'Tropical drink',\n emjD1f37a: 'Beer mug',\n emjD1f37b: 'Clinking beer mugs',\n emjD1f451: 'Crown',\n emjD1f452: \"Woman's hat\",\n emjD1f453: 'Eyeglasses',\n emjD1f454: 'Necktie',\n emjD1f455: 'T-shirt',\n emjD1f456: 'Jeans',\n emjD1f457: 'Dress',\n emjD1f458: 'Kimono',\n emjD1f459: 'Bikini',\n emjD1f45a: \"Woman's clothes\",\n emjD1f45b: 'Purse',\n emjD1f45c: 'Handbag',\n emjD1f45d: 'Pouch',\n emjD1f45e: \"Man's shoe\",\n emjD1f45f: 'Athletic shoe',\n emjD1f460: 'High-heeled shoe',\n emjD1f461: \"Woman's sandal\",\n emjD1f462: \"Woman's boots\",\n emjD1f463: 'Footprints',\n emjD1f4ba: 'Seat',\n emjD1f4bb: 'Personal computer',\n emjD1f4bc: 'Briefcase',\n emjD1f4bd: 'Minidisc',\n emjD1f4be: 'Floppy disk',\n emjD1f4bf: 'Optical disc',\n emjD1f4c0: 'DVD',\n emjD1f4c1: 'File folder',\n emjD1f4c2: 'Open file folder',\n emjD1f4c3: 'Page with curl',\n emjD1f4c4: 'Page facing up',\n emjD1f4c5: 'Calendar',\n emjD1f4c6: 'Tear-off calendar',\n emjD1f4c7: 'Card index',\n emjD1f4c8: 'Chart with upward trend',\n emjD1f4c9: 'Chart with downward trend',\n emjD1f4ca: 'Bar chart',\n emjD1f4cb: 'Clipboard',\n emjD1f4cc: 'Pushpin',\n emjD1f4cd: 'Round pushpin',\n emjD1f4ce: 'Paper clip',\n emjD1f4cf: 'Straight ruler',\n emjD1f4d0: 'Triangular ruler',\n emjD1f4d1: 'Bookmark tabs',\n emjD1f4d2: 'Ledger',\n emjD1f4d3: 'Notebook',\n emjD1f4d4: 'Notebook with decorative cover',\n emjD1f4d5: 'Closed book',\n emjD1f4d6: 'Open book',\n emjD1f4d7: 'Green book',\n emjD1f4d8: 'Blue book',\n emjD1f4d9: 'Orange book',\n emjD1f4da: 'Books',\n emjD1f4db: 'Name badge',\n emjD1f4dc: 'Scroll',\n emjD1f4dd: 'Memo',\n emjD1f4de: 'Telephone receiver',\n emjD1f4df: 'Pager',\n emjD1f4e0: 'Fax machine',\n emjD1f4e1: 'Satellite antenna',\n emjD1f4e2: 'Public address loudspeaker',\n emjD1f4e3: 'Cheering megaphone',\n emjD1f4e4: 'Outbox tray',\n emjD1f4e5: 'Inbox tray',\n emjD1f4e6: 'Package',\n emjD1f4e7: 'Email',\n emjD1f4e8: 'Incoming envelope',\n emjD1f4e9: 'Envelope with downward-facing arrow above',\n emjD1f4ea: 'Closed mailbox with lowered flag',\n emjD1f4eb: 'Closed mailbox with raised flag',\n emjD1f4ee: 'Postbox',\n emjD1f4f0: 'Newspaper',\n emjD1f4f1: 'Mobile phone',\n emjD1f4f2: 'Mobile phone with right-facing arrow at left',\n emjD1f4f3: 'Vibration mode',\n emjD1f4f4: 'Mobile phone off',\n emjD1f4f6: 'Antenna with bars',\n emjD1f525: 'Fire',\n emjD1f526: 'Flashlight',\n emjD1f527: 'Wrench',\n emjD1f528: 'Hammer',\n emjD1f529: 'Nut and bolt',\n emjD1f52a: 'Hocho',\n emjD1f52b: 'Pistol',\n emjD1f52e: 'Crystal ball',\n emjD1f52f: 'Six-pointed star with middle dot',\n emjD1f531: 'Trident emblem',\n emjD1f550: \"Clock face one o'clock\",\n emjD1f551: \"Clock face two o'clock\",\n emjD1f552: \"Clock face three o'clock\",\n emjD1f553: \"Clock face four o'clock\",\n emjD1f554: \"Clock face five o'clock\",\n emjD1f555: \"Clock face six o'clock\",\n emjD1f556: \"Clock face seven o'clock\",\n emjD1f557: \"Clock face eight o'clock\",\n emjD1f558: \"Clock face nine o'clock\",\n emjD1f559: \"Clock face ten o'clock\",\n emjD1f55a: \"Clock face eleven o'clock\",\n emjD1f55b: \"Clock face twelve o'clock\",\n emjD02668: 'Hot springs',\n emjD0267f: 'Wheelchair',\n emjD02693: 'Anchor',\n emjD026a0: 'Warning',\n emjD026a1: 'High Voltage',\n emjD026d4: 'No Entry',\n emjD026ea: 'Church',\n emjD026f2: 'Fountain',\n emjD026f3: 'Flag in hole',\n emjD026f5: 'Sailboat',\n emjD026fa: 'Tent',\n emjD026fd: 'Fuel pump',\n emjD02708: 'Airplane',\n emjD1f17f: 'Squared Latin capital letter P',\n emjD1f3e0: 'House building',\n emjD1f3e1: 'House with garden',\n emjD1f3e2: 'Office building',\n emjD1f3e3: 'Japanese post office',\n emjD1f3e5: 'Hospital',\n emjD1f3e6: 'Bank',\n emjD1f3e7: 'Automated teller machine',\n emjD1f3e8: 'Hotel',\n emjD1f3e9: 'Love hotel',\n emjD1f3ea: 'Convenience store',\n emjD1f3eb: 'School',\n emjD1f3ec: 'Department store',\n emjD1f3ed: 'Factory',\n emjD1f3ee: 'Izakaya lantern',\n emjD1f3ef: 'Japanese castle',\n emjD1f3f0: 'European castle',\n emjD1f530: 'Japanese symbol for beginner',\n emjD1f680: 'Rocket',\n emjD1f683: 'Railway car',\n emjD1f684: 'High-speed train',\n emjD1f685: 'High-speed train with bullet nose',\n emjD1f687: 'Metro',\n emjD1f689: 'Station',\n emjD1f68c: 'Bus',\n emjD1f68f: 'Bus stop',\n emjD1f691: 'Ambulance',\n emjD1f692: 'Fire engine',\n emjD1f693: 'Police car',\n emjD1f695: 'Taxi',\n emjD1f697: 'Automobile',\n emjD1f699: 'Recreational vehicle',\n emjD1f69a: 'Delivery truck',\n emjD1f6a2: 'Ship',\n emjD1f6a4: 'Speedboat',\n emjD1f6a5: 'Horizontal traffic light',\n emjD1f6a7: 'Construction',\n emjD1f6a8: \"Police car's revolving light\",\n emjD1f6a9: 'Triangular flag on post',\n emjD1f6aa: 'Door',\n emjD1f6ab: 'No entry',\n emjD1f6ac: 'Smoking symbol',\n emjD1f6ad: 'No smoking symbol',\n emjD1f6b2: 'Bicycle',\n emjD1f6b6: 'Pedestrian',\n emjD1f6b9: \"Men's symbol\",\n emjD1f6ba: \"Women's symbol\",\n emjD1f6bb: 'Restroom',\n emjD1f6bc: 'Baby symbol',\n emjD1f6bd: 'Toilet',\n emjD1f6be: 'Water closet',\n emjD1f6c0: 'Bath',\n emjD02049: 'Exclamation question mark',\n emjD02139: 'Information source',\n emjD021a9: 'Left-facing arrow with hook',\n emjD021aa: 'Right-facing arrow with hook',\n emjD0231a: 'Watch',\n emjD0231b: 'Hourglass',\n emjD023e9: 'Right-pointing double triangle',\n emjD023ea: 'Left-pointing double triangle',\n emjD023eb: 'Up-pointing double triangle',\n emjD023ec: 'Down-pointing double triangle',\n emjD023f0: 'Alarm clock',\n emjD023f3: 'Hourglass with flowing sand',\n emjD024c2: 'Circled Latin capital letter M',\n emjD025b6: 'Black right-pointing triangle',\n emjD025c0: 'Black left-pointing triangle',\n emjD025fb: 'White medium square',\n emjD025fc: 'Black medium square',\n emjD026ce: 'Ophiuchus',\n emjD02611: 'Ballot box with check',\n emjD0261d: 'White up-pointing index',\n emjD02648: 'Aries',\n emjD02649: 'Taurus',\n emjD0264a: 'Gemini',\n emjD0264b: 'Cancer',\n emjD0264c: 'Leo',\n emjD0264d: 'Virgo',\n emjD0264e: 'Libra',\n emjD0264f: 'Scorpio',\n emjD02650: 'Sagittarius',\n emjD02651: 'Capricorn',\n emjD02652: 'Aquarius',\n emjD02653: 'Pisces',\n emjD026aa: 'Medium white circle',\n emjD026ab: 'Medium black circle',\n emjD02705: 'White heavy check mark',\n emjD02714: 'Heavy check mark',\n emjD02716: 'Heavy multiplication x',\n emjD0274c: 'Cross mark',\n emjD0274e: 'Squared cross mark',\n emjD02753: 'question mark ornament',\n emjD02754: 'White question mark ornament',\n emjD02755: 'White exclamation mark ornament',\n emjD02757: 'Heavy exclamation mark',\n emjD02795: 'Heavy plus sign',\n emjD02796: 'Heavy minus sign',\n emjD02797: 'Heavy division sign',\n emjD027a1: 'Black right-facing arrow',\n emjD027b0: 'Curly loop',\n emjD027bf: 'Double curly loop',\n emjD02934: 'Arrow pointing right then curving upward',\n emjD02935: 'Arrow pointing right then curving downward',\n emjD02b05: 'Black arrow pointing left',\n emjD02b06: 'Black arrow pointing right',\n emjD02b07: 'Downwards black arrow',\n emjD02b1b: 'Black large square',\n emjD02b1c: 'White large square',\n emjD02b55: 'Heavy large circle',\n emjD03030: 'Wavy dash',\n emjD0303d: 'Part alternation mark',\n emjD03297: 'Circled Ideograph congratulation',\n emjD03299: 'Circled Ideograph secret',\n emjD1f0cf: 'Playing card Joker',\n emjD1f170: 'Squared Latin capital letter A',\n emjD1f171: 'Squared Latin capital letter B',\n emjD1f17e: 'Squared Latin capital letter O',\n emjD1f18e: 'Squared AB',\n emjD1f191: 'Squared CL',\n emjD1f192: 'Squared COOL',\n emjD1f193: 'Squared FREE',\n emjD1f194: 'Squared ID',\n emjD1f195: 'Squared NEW',\n emjD1f196: 'Squared NG',\n emjD1f197: 'Squared OK',\n emjD1f198: 'Squared SOS',\n emjD1f199: 'Squared UP!',\n emjD1f19a: 'Squared VS',\n emjD1f201: 'Squared Katakana Koko',\n emjD1f202: 'Squared Katakana Sa',\n emjD1f21a: 'Squared CJK Unified Ideograph-7121',\n emjD1f22f: 'Squared CJK Unified Ideograph-6307',\n emjD1f232: 'Squared CJK Unified Ideograph-7981',\n emjD1f233: 'Squared CJK Unified Ideograph-7a7a',\n emjD1f234: 'Squared CJK Unified Ideograph-5408',\n emjD1f235: 'Squared CJK Unified Ideograph-6e80',\n emjD1f236: 'Squared CJK Unified Ideograph-6709',\n emjD1f237: 'Squared CJK Unified Ideograph-6708',\n emjD1f238: 'Squared CJK Unified Ideograph-7533',\n emjD1f239: 'Squared CJK Unified Ideograph-5272',\n emjD1f23a: 'Squared CJK Unified Ideograph-55b6',\n emjD1f250: 'Circled Ideograph advantage',\n emjD1f251: 'Circled Ideograph accept',\n emjD1f30f: 'Earth globe Asia-Australia',\n emjD1f4a0: 'Diamond shape with a dot inside',\n emjD1f4a1: 'Electric light bulb',\n emjD1f4a2: 'Anger',\n emjD1f4a3: 'Bomb',\n emjD1f4a4: 'Sleeping',\n emjD1f4a5: 'Collision',\n emjD1f4a6: 'Splashing sweat',\n emjD1f4a7: 'Droplet',\n emjD1f4a8: 'Dash',\n emjD1f4a9: 'Pile of poo',\n emjD1f4aa: 'Flexed biceps',\n emjD1f4ab: 'Dizzy',\n emjD1f4ac: 'Speech balloon',\n emjD1f4ae: 'White flower',\n emjD1f4af: 'Hundred points',\n emjD1f4b0: 'Money bag',\n emjD1f4b1: 'Currency exchange',\n emjD1f4b2: 'Heavy dollar sign',\n emjD1f4b3: 'Credit card',\n emjD1f4b4: 'Banknote with yen sign',\n emjD1f4b5: 'Banknote with dollar sign',\n emjD1f4b8: 'Money with wings',\n emjD1f4b9: 'Chart with upwards trend and yen sign',\n emjD1f503: 'Clockwise downward and upward open circle arrows',\n emjD1f50a: 'Speaker with three sound waves',\n emjD1f50b: 'Battery',\n emjD1f50c: 'Electric plug',\n emjD1f50d: 'Left-leaning magnifying glass',\n emjD1f50e: 'Right-leaning magnifying glass',\n emjD1f50f: 'Lock with ink pen',\n emjD1f510: 'Closed lock with key',\n emjD1f511: 'Key',\n emjD1f512: 'Lock',\n emjD1f513: 'Open lock',\n emjD1f514: 'Bell',\n emjD1f516: 'Bookmark',\n emjD1f517: 'Link',\n emjD1f518: 'Radio button',\n emjD1f519: 'Back with left-facing arrow above',\n emjD1f51a: 'End with left-facing arrow above',\n emjD1f51b: 'On with exclamation mark with left right arrow above',\n emjD1f51c: 'Soon with right-facing arrow above',\n emjD1f51d: 'Top with upward arrow above',\n emjD1f51e: 'No one under eighteen',\n emjD1f51f: 'Keycap ten',\n emjD1f520: 'Input Latin uppercase',\n emjD1f521: 'Input Latin lowercase',\n emjD1f522: 'Input numbers',\n emjD1f523: 'Input symbols',\n emjD1f524: 'Input Latin letters',\n emjD1f532: 'Black square button',\n emjD1f533: 'White square button',\n emjD1f534: 'Large red circle',\n emjD1f535: 'Large blue circle',\n emjD1f536: 'Large orange diamond',\n emjD1f537: 'Large blue diamond',\n emjD1f538: 'Small orange diamond',\n emjD1f539: 'Small blue diamond',\n emjD1f53a: 'Up-pointing red triangle',\n emjD1f53b: 'Down-pointing red triangle',\n emjD1f53c: 'Up-pointing small red triangle',\n emjD1f53d: 'Down-pointing small red triangle',\n emjD1f5fb: 'Mount Fuji',\n emjD1f5fc: 'Tokyo Tower',\n emjD1f5fd: 'Statue of Liberty',\n emjD1f5fe: 'Silhouette of Japan',\n emjD1f5ff: 'Moyai',\n};\n\n/**\n * @internal\n * Emoji Keywords\n */\nexport const EmojiKeywordStrings = {\n emjK1f607: 'saint angel innocent',\n emjK1f47c: 'cherub angel',\n emjK1f34e: 'apple',\n emjK1f34f: 'apple',\n emjK1f477: 'construction',\n emjK1f6a7: 'construction detour',\n emjK1f491: 'couple engaged married marry marriage',\n emjK1f46b: 'couple engaged',\n emjK1f622: 'crying sad',\n emjK1f62d: 'crying sad',\n emjK1f525: 'fire',\n emjK1f692: 'fire truck fire engine',\n emjK1f386: 'fireworks sparkler july 4th',\n emjK1f387: 'fireworks sparkler july 4th',\n emjK1f44a: 'punch fist pump chuck norris bam',\n emjK0270a: 'fist pump punch',\n emjK1f498: 'heart love cupid',\n emjK1f496: 'heart love',\n emjK1f497: 'love heart',\n emjK1f493: 'heart love heartbeat',\n emjK1f368: 'ice cream dessert treat sundae sweets',\n emjK1f366: 'ice cream dessert treat sweets',\n emjK1f48b: 'kiss xoxo love kisses kissing mwah',\n emjK1f444: 'kiss mouth',\n emjK1f618: 'kiss love kisses kissing',\n emjK1f61a: 'kiss love kisses kissing smooch',\n emjK1f48f: 'kiss love',\n emjK1f435: 'monkey',\n emjK1f64a: 'monkey speak no evil',\n emjK1f649: 'monkey hear no evil',\n emjK1f648: 'monkey see no evil',\n emjK1f3b6: 'music melody song singing tune jingle',\n emjK1f3b5: 'music musical note melody musical',\n emjK1f44c: 'ok okay perfect',\n emjK1f646: 'ok awesome',\n emjK1f621: 'pouting sad pout',\n emjK1f64e: 'pouting sad depressed',\n emjK1f60c: 'relieved phew whew relief',\n emjK1f630: 'relieved phew whew',\n emjK1f605: 'relieved phew whew sheesh',\n emjK1f380: 'ribbon',\n emjK1f381: 'gift present presents ribbon',\n emjK1f613: 'scared yikes scary uh oh',\n emjK1f631: 'scared yikes fear whoa',\n emjK1f629: 'scared anxious uncertain unsure',\n emjK1f628: 'scared fearful',\n emjK1f45e: 'shoe shoes',\n emjK1f45f: 'shoe shoes',\n emjK1f60a: 'smile happy smiling yay',\n emjK1f642: 'smile happy smiling',\n emjK1f603: 'smiling happy excited woo woohoo woot',\n emjK1f604: 'smiling happy grin excited',\n emjK1f6bd: 'toilet bathroom potty restroom washroom',\n emjK1f6ba: 'toilet bathroom',\n emjK1f6b9: 'toilet bathroom',\n emjK1f684: 'train light rail monorail',\n emjK1f683: 'train caboose',\n emjK1f446: 'up click',\n emjK0261d: 'up',\n emjK1f64b: 'wave hi bye hey aloha',\n emjK1f44b: 'wave hi bye waving high five',\n emjK1f601: 'happy grin lol funny grinning hehe',\n emjK1f602: 'happy lol funny joy lmao rofl',\n emjK1f606: 'lol haha laughing lmao',\n emjK1f609: 'haha winking wink winky',\n emjK1f60f: 'haha winking wink smirking smirk heh',\n emjK1f645: 'bad',\n emjK1f44e: 'bad thumbs down wrong boo',\n emjK1f60d: 'love love you loving love u',\n emjK1f495: 'love hearts',\n emjK1f44d: 'ok thumbs up',\n emjK1f610: 'ok umm',\n emjK1f620: 'mad angry grrr',\n emjK1f612: 'mad angry unamused not funny amused bleh blah',\n emjK1f47b: 'scared halloween ghost boo',\n emjK1f480: 'scared skull danger die death poison',\n emjK1f47e: 'scared monster',\n emjK1f365: 'rice ball fish cake',\n emjK1f61e: 'disappointed sad',\n emjK1f64d: 'disappointed sad frown',\n emjK1f494: 'heartbroken sorrow sad broken heart brokenhearted',\n emjK1f625: 'relieved phew',\n emjK1f62b: 'sleepy tired yawn',\n emjK1f4a4: 'sleepy tired sleep zzz',\n emjK1f62a: 'sleepy tired',\n emjK1f632: 'wow astonished',\n emjK1f633: 'wow flushed',\n emjK1f3c4: 'wave surf surfer surfers surfs surfing',\n emjK1f44f: 'yay clapping applause clap',\n emjK1f64c: 'yay celebrate',\n emjK1f48d: 'ring marry fiance engaged engage engagement ring engagement diamond ring bling',\n emjK1f483: 'party dancer dance dancing',\n emjK1f389: 'party fun congratulations celebrate congrats',\n emjK1f388: 'party fun balloon',\n emjK1f38a: 'party confetti surprise',\n emjK1f383: 'happy halloween trick treat halloween pumpkin',\n emjK1f385: 'merry christmas santa claus father xmas',\n emjK1f384: 'merry christmas tree happy holidays',\n emjK1f3eb: 'school college study teacher learn studying',\n emjK1f392: 'backpack school bag back pack',\n emjK1f41f: 'fish goldfish',\n emjK1f3a3: 'fish fishing fishing pole',\n emjK1f3a5: 'video camera film movie movie camera',\n emjK1f4f9: 'video camera',\n emjK1f3a6: 'theatre theater cinema',\n emjK1f3ad: 'performing arts drama shakespeare theatre theater play actor actress',\n emjK1f3bc: 'treble clef sheet music music musical score',\n emjK1f3b9: 'music piano',\n emjK1f3a7: 'music headphones headphone',\n emjK1f3b7: 'music saxophone sax',\n emjK1f3ba: 'music trumpet',\n emjK1f3b8: 'music guitar',\n emjK1f3bb: 'music violin',\n emjK1f3ac: 'film action movie',\n emjK1f48e: 'diamond stone gem',\n emjK1f3be: 'wimbledon tennis raquet tennis sports racquet',\n emjK1f3c8: 'football superbowl sports nfl',\n emjK1f3bf: 'sports winter ski skiing skis',\n emjK1f3c2: 'sports winter snowboard snowboarder snowboarding snowboards',\n emjK026c4: 'winter snow snowman',\n emjK02744: 'winter snow snowflake snowing snowed christmas xmas blizzard',\n emjK1f3c1: 'race finish nascar',\n emjK1f3c3: 'race run marathon runner sprinting running late',\n emjK1f375: 'tea coffee',\n emjK02615: 'coffee tea',\n emjK1f377: 'alcohol wine',\n emjK1f378: 'alcohol cocktail drinks martini happy hour',\n emjK1f379: 'alcohol tropical drink',\n emjK1f68c: 'bus transit',\n emjK1f687: 'bus transit metro',\n emjK1f43b: 'bear teddy',\n emjK1f43c: 'bear panda',\n emjK1f340: \"luck lucky st. patrick's day shamrock\",\n emjK1f320: 'luck shooting star wish comet asteroid meteor meteroid',\n emjK1f303: 'skyline starry stars night',\n emjK1f307: 'skyline sunset',\n emjK1f31f: 'star twinkle',\n emjK02747: 'star sparkle glitter',\n emjK1f4b0: 'cash loot',\n emjK1f4b5: 'cash money dollar',\n emjK1f4b4: 'yen money',\n emjK1f4b3: 'money credit debt debit credit card',\n emjK1f60b: 'dinner hungry lunch food yummy yum delicious tasty mmmmm',\n emjK1f60e: 'cool',\n emjK1f614: 'alas thinking sigh',\n emjK1f616: 'confused confounded huh',\n emjK1f61c: 'goofy wassup nyah kidding',\n emjK1f61d: 'gross yuck eww blech',\n emjK1f623: 'persevering',\n emjK1f624: 'triumph congratulations grats congrats yahoo ftw woot wahoo',\n emjK1f635: 'dizzy drunk confused',\n emjK1f636: 'unsure',\n emjK1f637: 'sick flu',\n emjK1f440: 'eyes snoop',\n emjK1f442: 'ear listen',\n emjK1f443: 'nose smell',\n emjK1f445: 'tongue lick taste drool',\n emjK1f447: 'down',\n emjK1f448: 'left',\n emjK1f449: 'right',\n emjK1f64f: 'pray praying prayer',\n emjK0270b: 'hand',\n emjK0270c: 'peace victory',\n emjK1f466: 'boy',\n emjK1f467: 'girl',\n emjK1f468: 'man',\n emjK1f469: 'woman',\n emjK1f46a: 'family',\n emjK1f46e: 'police officer cop',\n emjK1f46f: 'bunny ears costume',\n emjK1f470: 'bride marriage bridezilla',\n emjK1f471: 'blond',\n emjK1f474: 'grandpa old man gramps grandfather',\n emjK1f475: 'grandma old lady old woman grandmother',\n emjK1f476: 'baby kid toddler newborn infant',\n emjK1f382: 'birthday cake happy cake',\n emjK1f390: 'chime',\n emjK1f393: 'graduation college high school graduated graduating graduate grad',\n emjK1f0cf: 'cards card joker blackjack poker',\n emjK1f3a0: 'carousel carnival',\n emjK1f3a1: 'ferris wheel amusement park',\n emjK1f3a2: 'roller coaster',\n emjK1f3a4: 'microphone sing karaoke singing',\n emjK1f3a8: 'paint artist palette artist',\n emjK1f3a9: 'top hat black tie',\n emjK1f3aa: 'circus',\n emjK1f3ab: 'ticket stub ticket stub admission',\n emjK1f3ae: 'xbox video game video games controller',\n emjK1f3af: 'bullseye archery darts arrow',\n emjK1f3b0: 'slot slots machine casino gamble gambling',\n emjK1f3b1: 'pool billiards',\n emjK1f3b2: 'die dice game craps gambling casino gamble',\n emjK1f3b3: 'bowling bowl',\n emjK1f4f7: 'camera picture photo',\n emjK1f4fa: 'tv television',\n emjK1f4fb: 'radio',\n emjK1f4fc: 'videotape videocassette cassette vcr',\n emjK1f478: 'princess',\n emjK1f47d: 'alien ufo',\n emjK1f47f: 'imp pixie loki leprechaun',\n emjK1f484: 'lipstick makeup',\n emjK1f485: 'nail polish manicure',\n emjK1f486: 'massage',\n emjK1f487: 'haircut',\n emjK1f488: 'barber barbershop',\n emjK1f489: 'syringe shot needle',\n emjK1f48a: 'pill pills drug drugs',\n emjK1f48c: 'love letter',\n emjK1f490: 'flowers bouquet love',\n emjK1f492: 'wedding marry church',\n emjK1f3c0: 'basketball bball hoops',\n emjK1f3c6: 'win trophy champions champion',\n emjK1f3ca: 'swim swimmer swimming swims',\n emjK026bd: 'soccer ball',\n emjK026be: 'baseball',\n emjK1f451: 'crown king queen',\n emjK1f453: 'glasses hipster',\n emjK1f454: 'tie',\n emjK1f455: 'tshirt tshirts',\n emjK1f456: 'jeans pants',\n emjK1f457: 'dress',\n emjK1f459: 'bikini bathing suit swimsuit swim',\n emjK1f45b: 'purse',\n emjK1f45c: 'handbag purse',\n emjK1f45d: 'pouch clutch',\n emjK1f461: 'sandal heels heel shoe shoes sandals pumps',\n emjK1f462: 'boots boot',\n emjK1f463: 'footprints barefoot',\n emjK1f4dd: 'memo note',\n emjK1f4de: 'telephone call phone',\n emjK1f4df: 'pager',\n emjK1f4e0: 'fax machine',\n emjK1f4e1: 'satellite antenna',\n emjK1f4e3: 'megaphone cheering',\n emjK1f4e6: 'present package parcel',\n emjK1f4e7: 'email mail',\n emjK1f4ee: 'mail post',\n emjK1f4f0: 'newspaper news',\n emjK1f4f1: 'phone cell call',\n emjK1f4f6: 'wifi signal',\n emjK1f526: 'flashlight',\n emjK1f527: 'wrench',\n emjK1f528: 'hammer hammers',\n emjK1f529: 'nuts bolts',\n emjK1f52a: 'knife',\n emjK1f52e: 'crystal ball clairvoyance clairvoyant psychic mystic',\n emjK1f531: 'trident',\n emjK1f354: 'hamburger fast burger hamburgers burgers food hungry',\n emjK1f355: 'pizza fast food hungry dinner lunch',\n emjK1f356: 'meat dinner lunch hungry food',\n emjK1f357: 'chicken leg turkey leg meat chicken turkey hungry dinner lunch food drumstick',\n emjK1f35a: 'rice dinner hungry lunch food',\n emjK1f35c: 'noodles ramen food dinner lunch',\n emjK1f35d: 'spaghetti dinner noodles food hungry',\n emjK1f35e: 'bread food',\n emjK1f35f: 'fries fast food french fries food',\n emjK1f360: 'potato potatoes vegetable food',\n emjK1f363: 'sushi food maki',\n emjK1f364: 'fried shrimp shrimp seafood food tempura',\n emjK1f369: 'doughnut doughnuts donut donuts food sweets',\n emjK1f36a: 'cookie cookies food sweets',\n emjK1f36b: 'chocolate chocolates candy bar chocolate bar sweets',\n emjK1f36c: 'candy sweet sweets treat',\n emjK1f36d: 'lollipop candy treat sucker',\n emjK1f36e: 'custard',\n emjK1f36f: 'honey pot',\n emjK1f370: 'pie food hungry cake dessert cheesecake shortcake sweets',\n emjK1f371: 'bento box',\n emjK1f372: 'soup pot of food stew',\n emjK1f374: 'food dinner fork knife eat hungry meal restaurant',\n emjK1f376: 'sake alcohol',\n emjK1f37a: 'beer alcohol',\n emjK1f37b: 'cheers beers alcohol',\n emjK1f345: 'food vegetable fruit tomato',\n emjK1f346: 'eggplant food vegetable',\n emjK1f347: 'grapes fruit food',\n emjK1f348: 'melon honeydew food fruit',\n emjK1f349: 'watermelon melon food fruit',\n emjK1f34a: 'tangerine fruit food orange mandarin clementine slice slices',\n emjK1f34c: 'banana fruit food',\n emjK1f34d: 'pineapple fruit food',\n emjK1f351: 'peach peaches fruit food',\n emjK1f352: 'cherry cherries fruit food',\n emjK1f353: 'strawberries stawberry fruit food berry berries',\n emjK1f4ba: 'seat',\n emjK1f4bb: 'pc computer laptop tablet',\n emjK1f4bc: 'briefcase brief case',\n emjK1f4be: 'floppy disk diskette',\n emjK1f4bf: 'cd compact disc',\n emjK1f4c0: 'dvd',\n emjK1f4c1: 'file folder',\n emjK1f4c5: 'calendar',\n emjK1f4cb: 'clipboard',\n emjK1f4cc: 'pushpin',\n emjK1f4cd: 'drawing pin',\n emjK1f4ce: 'paperclip clippy',\n emjK1f4cf: 'ruler measure',\n emjK1f4d2: 'ledger',\n emjK1f4d3: 'notebook',\n emjK1f4da: 'book books',\n emjK1f4db: 'name badge',\n emjK02702: 'scissors cut',\n emjK02709: 'envelope mail',\n emjK0270f: 'pencil',\n emjK1f3e0: 'house home',\n emjK1f3e1: 'garden greenhouse',\n emjK1f3e2: 'office work',\n emjK1f3e6: 'bank',\n emjK1f3e7: 'atm',\n emjK1f3e8: 'hotel motel bed sleep',\n emjK1f3ea: 'convenience store',\n emjK1f3ec: 'department store shopping',\n emjK1f3ed: 'factory',\n emjK1f3f0: 'castle',\n emjK02668: 'hot springs',\n emjK02693: 'anchor',\n emjK026ea: 'church temple',\n emjK026f2: 'fountain',\n emjK026f3: 'golf',\n emjK026f5: 'sailboat sailing sail',\n emjK026fd: 'gas fuel gasoline pump',\n emjK1f6aa: 'door',\n emjK1f6ac: 'smoke smoking',\n emjK1f6ad: 'no smoking',\n emjK1f6b2: 'bike bicycle biking',\n emjK1f6b6: 'walking pedestrian',\n emjK1f6c0: 'bath bathing bathtub tub',\n emjK0267f: 'accessible accessibility wheelchair',\n emjK026a0: 'warning attention caution hazzard',\n emjK026a1: 'high voltage zap lightning',\n emjK1f680: 'rocket spaceship space',\n emjK1f68f: 'bus stop',\n emjK1f693: 'cop police',\n emjK1f695: 'taxi cab',\n emjK1f697: 'car vehicle automobile',\n emjK1f6a2: 'ship cruise ferry yacht cruise travel vacation',\n emjK02708: 'airplane flight airline plane travel vacation',\n emjK1f42d: 'mouse eek mice squeak',\n emjK1f42e: 'cow moo',\n emjK1f42f: 'tiger roar rawr',\n emjK1f430: 'rabbit bunny easter',\n emjK1f431: 'cat kitty kitten meow',\n emjK1f432: 'dragon roar smaug',\n emjK1f433: 'whale moby dick',\n emjK1f434: 'horse',\n emjK1f436: 'dog woof puppy bark doggy',\n emjK1f437: 'pig oink piggy piglet',\n emjK1f438: 'frog croak ribbit',\n emjK1f439: 'hamster guinea pig',\n emjK1f43a: 'wolf howl',\n emjK1f341: 'maple leaf',\n emjK1f344: 'mushroom shroom',\n emjK1f308: 'rainbow love',\n emjK02601: 'cloud gloomy cloudy',\n emjK02614: 'drops raining rain rainy raindrops umbrella',\n emjK02728: 'sparkles twinkle twinkling glitter shiny sparkly glittery',\n emjK1f4a9: 'poop turd shit',\n emjK1f4aa: 'strong work out muscles biceps',\n emjK02648: 'aries zodiac',\n emjK02649: 'taurus zodiac',\n emjK0264a: 'gemini zodiac',\n emjK0264b: 'cancer zodiac',\n emjK0264c: 'leo zodiac',\n emjK0264d: 'virgo zodiac',\n emjK0264e: 'libra zodiac',\n emjK0264f: 'scorpio zodiac',\n emjK02650: 'sagittarius zodiac',\n emjK02651: 'capricorn zodiac',\n emjK02652: 'aquarius zodiac',\n emjK02653: 'pisces zodiac',\n emjK1f411: 'bah sheep',\n emjK1f300: 'cyclone typhoon hurricane',\n emjK1f301: 'foggy',\n emjK1f302: 'umbrella',\n emjK1f304: 'sunrise',\n emjK1f305: 'sunrise',\n emjK1f306: 'dusk',\n emjK1f309: 'bridge night',\n emjK1f30a: 'wave tsunami',\n emjK1f30c: 'milky way night sky galaxy universe',\n emjK1f311: 'moon',\n emjK1f313: 'moon',\n emjK1f314: 'moon',\n emjK1f315: 'moon full',\n emjK1f319: 'moon crescent',\n emjK1f31b: 'moon',\n emjK1f330: 'chestnut',\n emjK1f331: 'seed seedling planting',\n emjK1f334: 'palm tree vacation',\n emjK1f335: 'cactus hot desert',\n emjK1f337: 'tulip flower',\n emjK1f338: 'cherry blossom sakura flower',\n emjK1f339: 'rose love romance flower',\n emjK1f33a: 'hibiscus flower',\n emjK1f33b: 'sunflower',\n emjK1f33c: 'blossom daisy flower',\n emjK1f33d: 'maize corn',\n emjK1f33e: 'rice',\n emjK1f33f: 'herb herbs',\n emjK1f342: 'leaf autumn',\n emjK1f343: 'leaf windy',\n emjK1f358: 'onigiri',\n emjK1f359: 'onigiri',\n emjK1f35b: 'curry katsu',\n emjK1f361: 'dango',\n emjK1f362: 'oden',\n emjK1f373: 'frying cooking',\n emjK1f3bd: 'exercise exercising',\n emjK1f417: 'boar',\n emjK1f418: 'elephant',\n emjK1f419: 'octopus',\n emjK1f41a: 'seashell shell',\n emjK1f41b: 'bug insect centipede millipede',\n emjK1f41c: 'ant ants insect bug',\n emjK1f41d: 'bee bees honeybee honeybees',\n emjK1f41e: 'ladybug ladybugs',\n emjK1f420: 'fish',\n emjK1f421: 'blowfish fish',\n emjK1f422: 'turtle',\n emjK1f423: 'chick easter',\n emjK1f425: 'chick easter',\n emjK1f40c: 'snail slow',\n emjK1f40d: 'snake',\n emjK1f40e: 'horse horsey pony',\n emjK1f412: 'monkey',\n emjK1f414: 'chicken bawk rooster',\n emjK1f429: 'poodle dog',\n emjK1f42b: 'camel desert',\n emjK1f426: 'bird',\n emjK1f427: 'penguin',\n emjK1f42c: 'dolphin',\n emjK1f43d: 'pig pig noise smelly',\n emjK1f43e: 'paw prints paws',\n emjK1f452: 'hat sunday best',\n emjK1f458: 'kimono',\n emjK1f45a: 'clothes',\n emjK1f481: 'information desk support desk',\n emjK1f482: 'guardsman',\n emjK1f499: 'heart',\n emjK1f49a: 'heart',\n emjK1f49b: 'heart',\n emjK1f49c: 'heart',\n emjK1f49d: 'heart love',\n emjK1f49e: 'heart',\n emjK1f49f: 'heart',\n emjK1f4a5: 'collision bang traffic accident crash',\n emjK1f4a3: 'bomb',\n emjK1f4a1: 'light bulb idea',\n emjK1f4a8: 'dash gotta go gotta run',\n emjK1f503: 'reload refresh loading',\n emjK1f50c: 'plug plugged in',\n emjK1f50b: 'battery charged',\n emjK1f50d: 'search searching',\n emjK1f510: 'secure secret',\n emjK1f50f: 'privacy',\n emjK1f511: 'key',\n emjK1f512: 'lock locked',\n emjK1f513: 'unlock unlocked',\n emjK1f516: 'bookmark',\n emjK1f514: 'bell alarm',\n emjK1f550: '1pm 1am early afternoon',\n emjK1f551: '2pm 2am afternoon',\n emjK1f552: '3pm 3am',\n emjK1f553: '4pm 4am',\n emjK1f554: '5pm 5am late afternoon',\n emjK1f555: '6pm 6am',\n emjK1f556: '7pm 7am dinnertime',\n emjK1f557: '8pm 8am morning',\n emjK1f558: '9pm 9am',\n emjK1f559: '10pm 10am bedtime',\n emjK1f55a: '11pm 11am nighttime',\n emjK1f55b: '12pm 12am midnight noon lunchtime',\n emjK1f5fd: 'statue liberty nyc new york city',\n emjK1f638: 'cat grin happy',\n emjK1f639: 'cat rofl lol tears laughter tears joy funny',\n emjK1f63a: 'cat smile',\n emjK1f63b: 'cat love',\n emjK1f63c: 'cat heh',\n emjK1f63d: 'cat kiss kisses',\n emjK1f63e: 'cat pout pouting sad',\n emjK1f63f: 'cat cry cries sad',\n emjK1f4e8: 'incoming message mail email letter',\n emjK1f4e9: 'mail email letter sending send',\n emjK1f4eb: 'mail',\n emjK1f4ea: 'empty mailbox',\n emjK1f6bb: 'restroom toilet washroom bathroom',\n emjK1f6a5: 'traffic traffic light',\n emjK1f6ab: 'no entry no admittance',\n emjK1f689: 'station',\n emjK1f69a: 'delivery truck',\n emjK026fa: 'tent camp camping',\n emjK1f6a8: 'police siren emergency',\n emjK1f17f: 'parking parking spot',\n emjK02733: 'star asterisk',\n emjK02734: 'star',\n emjK02b50: 'star',\n emjK1f4c8: 'chart graph record profits trending up upwards skyrocketed',\n emjK1f4c9: 'chart graph record losses trending down downwards',\n emjK1f4ca: 'chart graph',\n emjK02764: 'love heart',\n};\n\n/**\n * @internal\n * Emoji Family\n */\nexport const EmojiFamilyStrings = {\n People: 'People',\n Nature: 'Nature',\n Activities: 'Activities',\n Food: 'Food',\n Travel: 'Travel',\n Symbols: 'Symbols',\n Objects: 'Objects',\n};\n\n/**\n * @internal\n * Emoji Description Key\n */\nexport type EmojiDescriptionStringKey = keyof typeof EmojiDescriptionStrings;\n\n/**\n * @internal\n * Emoji Keyword Key\n */\nexport type EmojiKeywordStringKey = keyof typeof EmojiKeywordStrings;\n","import { getObjectKeys } from 'roosterjs-content-model-dom';\nimport type { Emoji } from '../type/Emoji';\n\nconst Common1 = createEmoji('1f60a', ':) :-)');\nconst common2 = createEmoji('1f609', ';) ;-)');\nconst common3 = createEmoji('02764', '<3');\nconst common4 = createEmoji('1f61e', ':( :-(');\nconst common5 = createEmoji('1f603', ':D :-D');\n\n/**\n * @internal\n */\nexport const MoreEmoji: Emoji = {\n key: 'more',\n description: 'emjDMore',\n codePoint: '',\n};\n\n/**\n * @internal\n */\nexport const CommonEmojis = [Common1, common2, common3, common4, common5, MoreEmoji];\n\n/**\n * @internal\n */\nexport type EmojiFamilyKeys =\n | 'People'\n | 'Nature'\n | 'Activities'\n | 'Food'\n | 'Travel'\n | 'Symbols'\n | 'Objects';\n\n/**\n * @internal\n * NOTE: name for an emoji should be in lower case\n */\nexport const EmojiList: Record<EmojiFamilyKeys, Emoji[]> = {\n People: [\n createEmoji('1f601'),\n createEmoji('1f602'),\n common5,\n createEmoji('1f604'),\n createEmoji('1f605'),\n createEmoji('1f606'),\n createEmoji('1f607'),\n common2,\n Common1,\n createEmoji('1f642'),\n createEmoji('1f60b'),\n createEmoji('1f60c'),\n createEmoji('1f60d'),\n createEmoji('1f618'),\n createEmoji('1f61a'),\n createEmoji('1f61c'),\n createEmoji('1f61d', ':p :P :-p :-P'),\n createEmoji('1f60e', 'B) B-)'),\n createEmoji('1f60f'),\n createEmoji('1f636'),\n createEmoji('1f610', ':| :-|'),\n createEmoji('1f612'),\n createEmoji('1f633'),\n common4,\n createEmoji('1f620'),\n createEmoji('1f621'),\n createEmoji('1f614'),\n createEmoji('1f623'),\n createEmoji('1f616'),\n createEmoji('1f62b'),\n createEmoji('1f629'),\n createEmoji('1f624'),\n createEmoji('1f631'),\n createEmoji('1f628'),\n createEmoji('1f630'),\n createEmoji('1f625'),\n createEmoji('1f622'),\n createEmoji('1f62a'),\n createEmoji('1f613'),\n createEmoji('1f62d'),\n createEmoji('1f635'),\n createEmoji('1f632', ':o :O :-o :-O'),\n createEmoji('1f637'),\n createEmoji('1f4a4'),\n createEmojiWithNoKeyword('1f608'),\n createEmoji('1f47f'),\n createEmojiWithNoKeyword('1f479'),\n createEmojiWithNoKeyword('1f47a'),\n createEmoji('1f480'),\n createEmoji('1f47b'),\n createEmoji('1f47d'),\n createEmoji('1f63a'),\n createEmoji('1f638'),\n createEmoji('1f639'),\n createEmoji('1f63b'),\n createEmoji('1f63c'),\n createEmoji('1f63d'),\n createEmojiWithNoKeyword('1f640'),\n createEmoji('1f63f'),\n createEmoji('1f63e'),\n createEmoji('1f64c'),\n createEmoji('1f44f'),\n createEmoji('1f44b'),\n createEmoji('1f44d'),\n createEmoji('1f44e'),\n createEmoji('1f44a'),\n createEmoji('0270a'),\n createEmoji('0270b'),\n createEmoji('0270c'),\n createEmoji('1f44c'),\n createEmojiWithNoKeyword('1f450'),\n createEmojiWithNoKeyword('1f596'),\n createEmoji('1f4aa'),\n createEmoji('1f64f'),\n createEmoji('1f446'),\n createEmoji('1f447'),\n createEmoji('1f448'),\n createEmoji('1f449'),\n createEmoji('1f485'),\n createEmoji('1f444'),\n createEmoji('1f445'),\n createEmoji('1f442'),\n createEmoji('1f443'),\n createEmoji('1f440'),\n createEmojiWithNoKeyword('1f464'),\n createEmoji('1f476'),\n createEmoji('1f466'),\n createEmoji('1f467'),\n createEmoji('1f468'),\n createEmoji('1f469'),\n createEmoji('1f471'),\n createEmoji('1f474'),\n createEmoji('1f475'),\n createEmojiWithNoKeyword('1f472'),\n createEmojiWithNoKeyword('1f473'),\n createEmoji('1f46e'),\n createEmoji('1f477'),\n createEmoji('1f482'),\n createEmoji('1f385'),\n createEmoji('1f47c'),\n createEmoji('1f478'),\n createEmoji('1f470'),\n createEmoji('1f6b6'),\n createEmoji('1f3c3'),\n createEmoji('1f483'),\n createEmoji('1f46f'),\n createEmoji('1f46b'),\n createEmojiWithNoKeyword('1f647'),\n createEmoji('1f481'),\n createEmoji('1f645'),\n createEmoji('1f646'),\n createEmoji('1f64b'),\n createEmoji('1f64e'),\n createEmoji('1f64d'),\n createEmoji('1f487'),\n createEmoji('1f486'),\n createEmoji('1f491'),\n createEmoji('1f48f'),\n createEmoji('1f46a'),\n createEmoji('1f45a'),\n createEmoji('1f455'),\n createEmoji('1f456'),\n createEmoji('1f454'),\n createEmoji('1f457'),\n createEmoji('1f459'),\n createEmoji('1f458'),\n createEmoji('1f484'),\n createEmoji('1f48b'),\n createEmoji('1f463'),\n createEmojiWithNoKeyword('1f460'),\n createEmoji('1f461'),\n createEmoji('1f462'),\n createEmoji('1f45e'),\n createEmoji('1f45f'),\n createEmoji('1f452'),\n createEmoji('1f3a9'),\n createEmoji('1f393'),\n createEmoji('1f451'),\n createEmoji('1f392'),\n createEmoji('1f45d'),\n createEmoji('1f45b'),\n createEmoji('1f45c'),\n createEmoji('1f4bc'),\n createEmoji('1f453'),\n createEmoji('1f48d'),\n createEmoji('1f302'),\n ],\n Nature: [\n createEmoji('1f436'),\n createEmoji('1f431'),\n createEmoji('1f42d'),\n createEmoji('1f439'),\n createEmoji('1f430'),\n createEmoji('1f43b'),\n createEmoji('1f43c'),\n createEmojiWithNoKeyword('1f428'),\n createEmoji('1f42f'),\n createEmoji('1f42e'),\n createEmoji('1f437'),\n createEmoji('1f43d'),\n createEmoji('1f438'),\n createEmoji('1f419'),\n createEmoji('1f435'),\n createEmoji('1f648'),\n createEmoji('1f649'),\n createEmoji('1f64a'),\n createEmoji('1f412'),\n createEmoji('1f427'),\n createEmoji('1f426'),\n createEmojiWithNoKeyword('1f424'),\n createEmoji('1f423'),\n createEmoji('1f425'),\n createEmoji('1f43a'),\n createEmoji('1f417'),\n createEmoji('1f434'),\n createEmoji('1f41d'),\n createEmoji('1f41b'),\n createEmoji('1f40c'),\n createEmoji('1f41e'),\n createEmoji('1f41c'),\n createEmoji('1f40d'),\n createEmoji('1f422'),\n createEmoji('1f420'),\n createEmoji('1f41f'),\n createEmoji('1f421'),\n createEmoji('1f42c'),\n createEmoji('1f433'),\n createEmoji('1f414'),\n createEmoji('1f42b'),\n createEmoji('1f418'),\n createEmoji('1f411'),\n createEmoji('1f40e'),\n createEmoji('1f429'),\n createEmoji('1f43e'),\n createEmoji('1f432'),\n createEmoji('1f335'),\n createEmoji('1f384'),\n createEmoji('1f334'),\n createEmoji('1f331'),\n createEmoji('1f33f'),\n createEmoji('1f340'),\n createEmojiWithNoKeyword('1f38d'),\n createEmojiWithNoKeyword('1f38b'),\n createEmoji('1f343'),\n createEmoji('1f342'),\n createEmoji('1f341'),\n createEmoji('1f33e'),\n createEmoji('1f33a'),\n createEmoji('1f33b'),\n createEmoji('1f339'),\n createEmoji('1f33c'),\n createEmoji('1f337'),\n createEmoji('1f338'),\n createEmoji('1f344'),\n createEmoji('1f490'),\n createEmoji('1f330'),\n createEmoji('1f383'),\n createEmoji('1f41a'),\n createEmojiWithNoKeyword('1f30f'),\n createEmoji('1f315'),\n createEmoji('1f311'),\n createEmoji('1f313'),\n createEmoji('1f314'),\n createEmoji('1f31b'),\n createEmoji('1f319'),\n createEmoji('02b50'),\n createEmoji('1f31f'),\n createEmojiWithNoKeyword('1f4ab'),\n createEmoji('02728'),\n createEmojiWithNoKeyword('02600'),\n createEmojiWithNoKeyword('026c5'),\n createEmoji('02601'),\n createEmoji('026a1'),\n createEmoji('1f525'),\n createEmoji('1f4a5'),\n createEmoji('02744'),\n createEmoji('026c4'),\n createEmoji('1f4a8'),\n createEmoji('02614'),\n createEmojiWithNoKeyword('1f4a7'),\n createEmojiWithNoKeyword('1f4a6'),\n createEmoji('1f30a'),\n ],\n Activities: [\n createEmoji('026bd'),\n createEmoji('1f3c0'),\n createEmoji('1f3c8'),\n createEmoji('026be'),\n createEmoji('1f3be'),\n createEmoji('1f3b1'),\n createEmoji('026f3'),\n createEmoji('1f3bf'),\n createEmoji('1f3c2'),\n createEmoji('1f3a3'),\n createEmoji('1f3ca'),\n createEmoji('1f3c4'),\n createEmoji('1f3c6'),\n createEmoji('1f3bd'),\n createEmoji('1f3ab'),\n createEmoji('1f3ad'),\n createEmoji('1f3a8'),\n createEmoji('1f3aa'),\n createEmoji('1f3a4'),\n createEmoji('1f3a7'),\n createEmoji('1f3bc'),\n createEmoji('1f3b9'),\n createEmoji('1f3b7'),\n createEmoji('1f3ba'),\n createEmoji('1f3b8'),\n createEmoji('1f3bb'),\n createEmoji('1f3ac'),\n createEmoji('1f3ae'),\n createEmoji('1f47e'),\n createEmoji('1f3af'),\n createEmoji('1f3b2'),\n createEmoji('1f3b0'),\n createEmoji('1f3b3'),\n ],\n Food: [\n createEmoji('1f34f'),\n createEmoji('1f34e'),\n createEmoji('1f34a'),\n createEmoji('1f34c'),\n createEmoji('1f349'),\n createEmoji('1f347'),\n createEmoji('1f353'),\n createEmoji('1f348'),\n createEmoji('1f352'),\n createEmoji('1f351'),\n createEmoji('1f34d'),\n createEmoji('1f345'),\n createEmoji('1f346'),\n createEmoji('1f33d'),\n createEmoji('1f360'),\n createEmoji('1f35e'),\n createEmoji('1f357'),\n createEmoji('1f356'),\n createEmoji('1f364'),\n createEmoji('1f373'),\n createEmoji('1f354'),\n createEmoji('1f35f'),\n createEmoji('1f355'),\n createEmoji('1f35d'),\n createEmoji('1f35c'),\n createEmoji('1f372'),\n createEmoji('1f365'),\n createEmoji('1f363'),\n createEmoji('1f371'),\n createEmoji('1f35b'),\n createEmoji('1f359'),\n createEmoji('1f35a'),\n createEmoji('1f358'),\n createEmoji('1f362'),\n createEmoji('1f361'),\n createEmojiWithNoKeyword('1f367'),\n createEmoji('1f368'),\n createEmoji('1f366'),\n createEmoji('1f370'),\n createEmoji('1f36f'),\n createEmoji('1f382'),\n createEmoji('1f36e'),\n createEmoji('1f36c'),\n createEmoji('1f36d'),\n createEmoji('1f36b'),\n createEmoji('1f369'),\n createEmoji('1f36a'),\n createEmoji('1f37a'),\n createEmoji('1f37b'),\n createEmoji('1f377'),\n createEmoji('1f378'),\n createEmoji('1f379'),\n createEmoji('1f376'),\n createEmoji('1f375'),\n createEmoji('02615'),\n createEmoji('1f374'),\n ],\n Travel: [\n createEmoji('1f697'),\n createEmoji('1f695'),\n createEmoji('1f687'),\n createEmojiWithNoKeyword('1f699'),\n createEmoji('1f68c'),\n createEmoji('1f693'),\n createEmoji('1f69a'),\n createEmojiWithNoKeyword('1f691'),\n createEmoji('1f692'),\n createEmoji('1f6b2'),\n createEmoji('1f6a8'),\n createEmoji('1f683'),\n createEmoji('1f684'),\n createEmojiWithNoKeyword('1f685'),\n createEmoji('1f689'),\n createEmoji('02708'),\n createEmoji('026f5'),\n createEmojiWithNoKeyword('1f6a4'),\n createEmoji('1f680'),\n createEmoji('1f4ba'),\n createEmoji('02693'),\n createEmoji('1f6a7'),\n createEmoji('026fd'),\n createEmoji('1f68f'),\n createEmoji('1f6a5'),\n createEmoji('1f3c1'),\n createEmoji('1f6a2'),\n createEmoji('1f3a1'),\n createEmoji('1f3a2'),\n createEmoji('1f3a0'),\n createEmoji('1f301'),\n createEmojiWithNoKeyword('1f5fc'),\n createEmoji('1f3ed'),\n createEmoji('026f2'),\n createEmojiWithNoKeyword('1f391'),\n createEmojiWithNoKeyword('1f5fb'),\n createEmojiWithNoKeyword('1f30b'),\n createEmojiWithNoKeyword('1f5fe'),\n createEmoji('1f305'),\n createEmoji('1f304'),\n createEmoji('1f307'),\n createEmoji('1f306'),\n createEmoji('1f303'),\n createEmoji('1f309'),\n createEmoji('1f30c'),\n createEmoji('1f387'),\n createEmoji('1f386'),\n createEmoji('1f308'),\n createEmoji('1f3f0'),\n createEmojiWithNoKeyword('1f3ef'),\n createEmoji('1f5fd'),\n createEmoji('1f3e0'),\n createEmoji('1f3e1'),\n createEmoji('1f3e2'),\n createEmoji('1f3ec'),\n createEmoji('026fa'),\n createEmojiWithNoKeyword('1f3e3'),\n createEmojiWithNoKeyword('1f3e5'),\n createEmoji('1f3e6'),\n createEmoji('1f3e8'),\n createEmoji('1f3ea'),\n createEmoji('1f3eb'),\n createEmojiWithNoKeyword('1f3e9'),\n createEmoji('1f492'),\n createEmoji('026ea'),\n createEmoji('1f320'),\n ],\n Symbols: [\n common3,\n createEmoji('1f49b'),\n createEmoji('1f49a'),\n createEmoji('1f499'),\n createEmoji('1f494'),\n createEmoji('1f49c'),\n createEmoji('1f495'),\n createEmoji('1f493'),\n createEmoji('1f49e'),\n createEmoji('1f497'),\n createEmoji('1f498'),\n createEmoji('1f496'),\n createEmoji('1f49d'),\n createEmoji('1f49f'),\n createEmojiWithNoKeyword('1f52f'),\n createEmojiWithNoKeyword('026ce'),\n createEmoji('02648'),\n createEmoji('02649'),\n createEmoji('0264a'),\n createEmoji('0264b'),\n createEmoji('0264c'),\n createEmoji('0264d'),\n createEmoji('0264e'),\n createEmoji('0264f'),\n createEmoji('02650'),\n createEmoji('02651'),\n createEmoji('02652'),\n createEmoji('02653'),\n createEmojiWithNoKeyword('1f194'),\n createEmojiWithNoKeyword('1f4f4'),\n createEmojiWithNoKeyword('1f4f3'),\n createEmojiWithNoKeyword('1f19a'),\n createEmojiWithNoKeyword('1f4ae'),\n createEmojiWithNoKeyword('1f18e'),\n createEmojiWithNoKeyword('1f191'),\n createEmojiWithNoKeyword('1f198'),\n createEmojiWithNoKeyword('026d4'),\n createEmoji('1f4db'),\n createEmoji('1f6ab'),\n createEmojiWithNoKeyword('0274c'),\n createEmojiWithNoKeyword('02b55'),\n createEmojiWithNoKeyword('1f4a2'),\n createEmoji('02668'),\n createEmojiWithNoKeyword('1f51e'),\n createEmojiWithNoKeyword('02757'),\n createEmojiWithNoKeyword('02755'),\n createEmojiWithNoKeyword('02753'),\n createEmojiWithNoKeyword('02754'),\n createEmojiWithNoKeyword('02049'),\n createEmojiWithNoKeyword('1f4af'),\n createEmoji('1f531'),\n createEmojiWithNoKeyword('0303d'),\n createEmoji('026a0'),\n createEmojiWithNoKeyword('1f530'),\n createEmojiWithNoKeyword('1f22f'),\n createEmojiWithNoKeyword('1f4b9'),\n createEmoji('02733'),\n createEmojiWithNoKeyword('0274e'),\n createEmojiWithNoKeyword('02705'),\n createEmojiWithNoKeyword('1f4a0'),\n createEmoji('1f300'),\n createEmoji('1f3e7'),\n createEmoji('0267f'),\n createEmoji('1f6ad'),\n createEmojiWithNoKeyword('1f6be'),\n createEmoji('02734'),\n createEmoji('1f17f'),\n createEmoji('1f6b9'),\n createEmoji('1f6ba'),\n createEmojiWithNoKeyword('1f6bc'),\n createEmoji('1f6bb'),\n createEmoji('1f3a6'),\n createEmoji('1f4f6'),\n createEmojiWithNoKeyword('1f201'),\n createEmojiWithNoKeyword('1f196'),\n createEmojiWithNoKeyword('0267b'),\n createEmojiWithNoKeyword('1f197'),\n createEmojiWithNoKeyword('1f192'),\n createEmoji('02747'),\n createEmojiWithNoKeyword('1f195'),\n createEmojiWithNoKeyword('1f193'),\n createEmojiWithNoKeyword('1f51f'),\n createEmojiWithNoKeyword('1f522'),\n createEmojiWithNoKeyword('023ea'),\n createEmojiWithNoKeyword('023e9'),\n createEmojiWithNoKeyword('1f53c'),\n createEmojiWithNoKeyword('1f53d'),\n createEmojiWithNoKeyword('023eb'),\n createEmojiWithNoKeyword('023ec'),\n createEmojiWithNoKeyword('1f199'),\n createEmojiWithNoKeyword('02139'),\n createEmojiWithNoKeyword('1f524'),\n createEmojiWithNoKeyword('1f521'),\n createEmojiWithNoKeyword('1f520'),\n createEmojiWithNoKeyword('1f523'),\n createEmoji('1f3b5'),\n createEmoji('1f3b6'),\n createEmojiWithNoKeyword('03030'),\n createEmojiWithNoKeyword('027bf'),\n createEmojiWithNoKeyword('02714'),\n createEmoji('1f503'),\n createEmojiWithNoKeyword('02795'),\n createEmojiWithNoKeyword('02796'),\n createEmojiWithNoKeyword('02797'),\n createEmojiWithNoKeyword('02716'),\n createEmojiWithNoKeyword('027b0'),\n createEmojiWithNoKeyword('1f4b2'),\n createEmojiWithNoKeyword('1f4b1'),\n createEmojiWithNoKeyword('1f51a'),\n createEmojiWithNoKeyword('1f519'),\n createEmojiWithNoKeyword('1f51b'),\n createEmojiWithNoKeyword('1f51d'),\n createEmojiWithNoKeyword('1f51c'),\n createEmojiWithNoKeyword('02611'),\n createEmojiWithNoKeyword('1f518'),\n createEmojiWithNoKeyword('026ab'),\n createEmojiWithNoKeyword('1f534'),\n createEmojiWithNoKeyword('1f535'),\n createEmojiWithNoKeyword('1f539'),\n createEmojiWithNoKeyword('1f538'),\n createEmojiWithNoKeyword('1f536'),\n createEmojiWithNoKeyword('1f537'),\n createEmojiWithNoKeyword('1f53a'),\n createEmojiWithNoKeyword('1f53b'),\n createEmojiWithNoKeyword('02b1b'),\n createEmojiWithNoKeyword('02b1c'),\n createEmojiWithNoKeyword('1f532'),\n createEmojiWithNoKeyword('1f533'),\n createEmojiWithNoKeyword('1f50a'),\n createEmoji('1f4e3'),\n createEmojiWithNoKeyword('1f4e2'),\n createEmoji('1f514'),\n createEmojiWithNoKeyword('1f004'),\n createEmoji('1f0cf'),\n createEmojiWithNoKeyword('1f3b4'),\n createEmojiWithNoKeyword('1f4ac'),\n createEmoji('1f550'),\n createEmoji('1f551'),\n createEmoji('1f552'),\n createEmoji('1f553'),\n createEmoji('1f554'),\n createEmoji('1f555'),\n createEmoji('1f556'),\n createEmoji('1f557'),\n createEmoji('1f558'),\n createEmoji('1f559'),\n createEmoji('1f55a'),\n createEmoji('1f55b'),\n createEmojiWithNoKeyword('1f236'),\n createEmojiWithNoKeyword('1f250'),\n createEmojiWithNoKeyword('1f239'),\n createEmojiWithNoKeyword('1f21a'),\n createEmojiWithNoKeyword('1f232'),\n createEmojiWithNoKeyword('1f251'),\n createEmojiWithNoKeyword('1f234'),\n createEmojiWithNoKeyword('1f233'),\n createEmojiWithNoKeyword('1f23a'),\n createEmojiWithNoKeyword('1f235'),\n ],\n Objects: [\n createEmojiWithNoKeyword('0231a'),\n createEmoji('1f4f1'),\n createEmojiWithNoKeyword('1f4f2'),\n createEmoji('1f4bb'),\n createEmojiWithNoKeyword('1f4bd'),\n createEmoji('1f4be'),\n createEmoji('1f4bf'),\n createEmoji('1f4c0'),\n createEmoji('1f4fc'),\n createEmoji('1f4f7'),\n createEmoji('1f4f9'),\n createEmoji('1f3a5'),\n createEmoji('1f4de'),\n createEmojiWithNoKeyword('0260e'),\n createEmoji('1f4df'),\n createEmoji('1f4e0'),\n createEmoji('1f4fa'),\n createEmoji('1f4fb'),\n createEmojiWithNoKeyword('023f0'),\n createEmojiWithNoKeyword('0231b'),\n createEmojiWithNoKeyword('023f3'),\n createEmoji('1f4e1'),\n createEmoji('1f50b'),\n createEmoji('1f50c'),\n createEmoji('1f4a1'),\n createEmoji('1f526'),\n createEmojiWithNoKeyword('1f4b8'),\n createEmoji('1f4b5'),\n createEmoji('1f4b4'),\n createEmoji('1f4b0'),\n createEmoji('1f4b3'),\n createEmoji('1f48e'),\n createEmoji('1f527'),\n createEmoji('1f528'),\n createEmoji('1f529'),\n createEmojiWithNoKeyword('1f52b'),\n createEmoji('1f4a3'),\n createEmoji('1f52a'),\n createEmoji('1f6ac'),\n createEmoji('1f52e'),\n createEmoji('1f488'),\n createEmoji('1f48a'),\n createEmoji('1f489'),\n createEmoji('1f516'),\n createEmoji('1f6bd'),\n createEmoji('1f6c0'),\n createEmoji('1f511'),\n createEmoji('1f6aa'),\n createEmojiWithNoKeyword('1f5ff'),\n createEmoji('1f388'),\n createEmojiWithNoKeyword('1f38f'),\n createEmoji('1f380'),\n createEmoji('1f381'),\n createEmoji('1f38a'),\n createEmoji('1f389'),\n createEmojiWithNoKeyword('1f38e'),\n createEmoji('1f390'),\n createEmojiWithNoKeyword('1f38c'),\n createEmojiWithNoKeyword('1f3ee'),\n createEmoji('02709'),\n createEmoji('1f4e9'),\n createEmoji('1f4e8'),\n createEmoji('1f48c'),\n createEmoji('1f4e7'),\n createEmoji('1f4ee'),\n createEmoji('1f4ea'),\n createEmoji('1f4eb'),\n createEmoji('1f4e6'),\n createEmojiWithNoKeyword('1f4e5'),\n createEmojiWithNoKeyword('1f4e4'),\n createEmojiWithNoKeyword('1f4dc'),\n createEmojiWithNoKeyword('1f4c3'),\n createEmojiWithNoKeyword('1f4d1'),\n createEmoji('1f4ca'),\n createEmoji('1f4c8'),\n createEmoji('1f4c9'),\n createEmojiWithNoKeyword('1f4c4'),\n createEmoji('1f4c5'),\n createEmojiWithNoKeyword('1f4c6'),\n createEmojiWithNoKeyword('1f4c7'),\n createEmoji('1f4cb'),\n createEmoji('1f4c1'),\n createEmojiWithNoKeyword('1f4c2'),\n createEmoji('1f4f0'),\n createEmoji('1f4d3'),\n createEmojiWithNoKeyword('1f4d5'),\n createEmojiWithNoKeyword('1f4d7'),\n createEmojiWithNoKeyword('1f4d8'),\n createEmojiWithNoKeyword('1f4d9'),\n createEmojiWithNoKeyword('1f4d4'),\n createEmoji('1f4d2'),\n createEmoji('1f4da'),\n createEmojiWithNoKeyword('1f4d6'),\n createEmojiWithNoKeyword('1f517'),\n createEmoji('1f4ce'),\n createEmoji('02702'),\n createEmojiWithNoKeyword('1f4d0'),\n createEmoji('1f4cf'),\n createEmoji('1f4cc'),\n createEmoji('1f4cd'),\n createEmojiWithNoKeyword('1f6a9'),\n createEmoji('1f510'),\n createEmoji('1f512'),\n createEmoji('1f513'),\n createEmoji('1f50f'),\n createEmojiWithNoKeyword('02712'),\n createEmoji('1f4dd'),\n createEmoji('0270f'),\n createEmoji('1f50d'),\n createEmojiWithNoKeyword('1f50e'),\n ],\n};\n\n/**\n * @internal\n */\nexport const EmojiFabricIconCharacterMap: Record<EmojiFamilyKeys, string> = {\n Activities: 'Soccer',\n Food: 'EatDrink',\n Nature: 'FangBody',\n Objects: 'Lightbulb',\n People: 'Emoji2',\n Symbols: 'Heart',\n Travel: 'Car',\n};\n\n/**\n * @internal\n */\nexport function forEachEmojiFamily(\n callback: (emojis: Emoji[], family: EmojiFamilyKeys) => boolean\n): void {\n const families = getObjectKeys(EmojiList);\n for (const family of families) {\n if (!callback(EmojiList[family], family)) {\n break;\n }\n }\n}\n\n/**\n * @internal\n */\nexport function forEachEmoji(callback: (emoji: Emoji) => boolean): void {\n forEachEmojiFamily(emojis => {\n for (const emoji of emojis) {\n if (!callback(emoji)) {\n return false;\n }\n }\n return true;\n });\n}\n\n// get emoji code point from an emoji key\nfunction getEmojiCodePoint(key: string): string | null {\n const unicode = parseInt(key, 16);\n if (isNaN(unicode)) {\n return null;\n }\n\n // All emojis have codepoints between the following ranges:\n // 0x1F7000 - 0x1F700 -> has surrogate pairs\n // 0x00023 - 0x04000 -> does not have surrogate pairs\n let surrogatePairs: number[];\n if (unicode >= 0x1f000 && unicode <= 0x1f700) {\n const hi = Math.floor((unicode - 0x10000) / 0x400) + 0xd800;\n const lo = ((unicode - 0x10000) % 0x400) + 0xdc00;\n surrogatePairs = [hi, lo];\n } else if (unicode >= 0x00023 && unicode <= 0x04000) {\n surrogatePairs = [unicode];\n }\n\n return String.fromCharCode(...surrogatePairs!);\n}\n\nfunction createEmoji(key: string, shortcut?: string): Emoji {\n return {\n key,\n description: `emjD${key}`,\n keywords: `emjK${key}`,\n shortcut,\n codePoint: getEmojiCodePoint(key) ?? undefined,\n };\n}\n\nfunction createEmojiWithNoKeyword(key: string): Emoji {\n return { key, description: `emjD${key}`, codePoint: getEmojiCodePoint(key) ?? undefined };\n}\n","import { forEachEmoji } from './emojiList';\nimport type { Emoji } from '../type/Emoji';\n\n/**\n * @internal\n */\nexport function searchEmojis(search: string, strings: Record<string, string>): Emoji[] {\n const shortcutMatch = matchShortcut(search);\n search = search.toLowerCase();\n const fullMatch: Emoji[] = shortcutMatch ? [shortcutMatch] : [];\n const partialMatch: Emoji[] = [];\n const partialSearch = ' ' + (search[0] == ':' ? search.substr(1) : search);\n forEachEmoji(emoji => {\n const keywords = (emoji.keywords && strings[emoji.keywords]) || '';\n const searchableKeywords = emoji.keywords ? ' ' + keywords.toLowerCase() + ' ' : '';\n const index = searchableKeywords.indexOf(partialSearch);\n if (index >= 0) {\n (searchableKeywords[index + partialSearch.length] == ' '\n ? fullMatch\n : partialMatch\n ).push(emoji);\n }\n return true;\n });\n\n return fullMatch.concat(partialMatch);\n}\n\nfunction matchShortcut(search: string): Emoji | null {\n let result: Emoji | null = null;\n search = ' ' + search + ' ';\n forEachEmoji((emoji: Emoji) => {\n if (emoji.shortcut && (' ' + emoji.shortcut + ' ').indexOf(search) >= 0) {\n result = emoji;\n return false;\n }\n return true;\n });\n return result;\n}\n","export * from './common/index';\nexport * from './rooster/index';\nexport * from './ribbon/index';\nexport * from './contextMenu/index';\nexport * from './pasteOptions/index';\nexport * from './colorPicker/index';\nexport * from './emoji/index';\nexport * from './inputDialog/index';\n","import * as React from 'react';\nimport { DefaultButton, PrimaryButton } from '@fluentui/react/lib/Button';\nimport { Dialog, DialogFooter, DialogType } from '@fluentui/react/lib/Dialog';\nimport { getLocalizedString } from '../../common/index';\nimport { getObjectKeys } from 'roosterjs-content-model-dom';\nimport { InputDialogItem } from './InputDialogItem';\nimport type { IDialogContentProps } from '@fluentui/react/lib/Dialog';\nimport type { DialogItem } from '../type/DialogItem';\nimport type {\n CancelButtonStringKey,\n LocalizedStrings,\n OkButtonStringKey,\n} from '../../common/index';\n\n/**\n * @internal\n */\nexport interface InputDialogProps<Strings extends string, ItemNames extends string> {\n dialogTitleKey: Strings;\n unlocalizedTitle: string;\n items: Record<ItemNames, DialogItem<Strings>>;\n strings?: LocalizedStrings<Strings | OkButtonStringKey | CancelButtonStringKey>;\n onChange?: (\n changedItemName: ItemNames,\n newValue: string,\n currentValues: Record<ItemNames, string>\n ) => Record<ItemNames, string> | null;\n onOk: (values: Record<ItemNames, string>) => void;\n onCancel: () => void;\n rows?: number;\n}\n\n/**\n * @internal\n */\nexport function InputDialog<Strings extends string, ItemNames extends string>(\n props: InputDialogProps<Strings, ItemNames>\n) {\n const {\n items,\n strings,\n dialogTitleKey,\n unlocalizedTitle,\n onOk,\n onCancel,\n onChange,\n rows,\n } = props;\n const dialogContentProps: IDialogContentProps = React.useMemo(\n () => ({\n type: DialogType.normal,\n title: getLocalizedString(strings, dialogTitleKey, unlocalizedTitle),\n styles: {\n innerContent: {\n height: rows ? '200px' : undefined,\n },\n },\n }),\n [strings, dialogTitleKey, unlocalizedTitle]\n );\n const [currentValues, setCurrentValues] = React.useState<Record<ItemNames, string>>(\n getObjectKeys(items).reduce((result: Record<ItemNames, string>, key) => {\n result[key] = items[key].initValue;\n return result;\n }, {} as Record<ItemNames, string>)\n );\n\n const onSubmit = React.useCallback(() => {\n onOk?.(currentValues);\n }, [onOk, currentValues]);\n const onItemChanged = React.useCallback(\n (itemName: ItemNames, newValue: string) => {\n if (itemName in items) {\n const newValues = onChange?.(itemName, newValue, {\n ...currentValues,\n }) || {\n ...currentValues,\n [itemName]: newValue,\n };\n\n setCurrentValues(newValues);\n }\n },\n [setCurrentValues, currentValues, items]\n );\n\n return (\n <Dialog dialogContentProps={dialogContentProps} hidden={false} onDismiss={onCancel}>\n <div>\n {getObjectKeys(items).map(key => (\n <InputDialogItem\n key={key}\n itemName={key}\n items={items}\n strings={strings}\n currentValues={currentValues}\n onEnterKey={onSubmit}\n onChanged={onItemChanged}\n rows={rows}\n />\n ))}\n </div>\n <DialogFooter>\n <PrimaryButton\n text={getLocalizedString(strings, 'buttonNameOK', 'OK')}\n onClick={onSubmit}\n />\n <DefaultButton\n text={getLocalizedString(strings, 'buttonNameCancel', 'Cancel')}\n onClick={onCancel}\n />\n </DialogFooter>\n </Dialog>\n );\n}\n","import * as React from 'react';\nimport { getLocalizedString } from '../../common/index';\nimport { mergeStyleSets } from '@fluentui/react/lib/Styling';\nimport { TextField } from '@fluentui/react/lib/TextField';\nimport type { DialogItem } from '../type/DialogItem';\nimport type { LocalizedStrings } from '../../common/index';\n\n/**\n * @internal\n */\nexport interface InputDialogItemProps<Strings extends string, ItemNames extends string> {\n itemName: ItemNames;\n strings: LocalizedStrings<Strings> | undefined;\n items: Record<ItemNames, DialogItem<Strings>>;\n currentValues: Record<ItemNames, string>;\n onEnterKey: () => void;\n onChanged: (itemName: ItemNames, newValue: string) => void;\n rows?: number;\n}\n\nconst classNames = mergeStyleSets({\n inputBox: {\n width: '100%',\n minWidth: '250px',\n height: '32px',\n margin: '5px 0 16px',\n borderRadius: '2px',\n },\n});\n\n/**\n * @internal\n */\nexport function InputDialogItem<Strings extends string, ItemNames extends string>(\n props: InputDialogItemProps<Strings, ItemNames>\n) {\n const { itemName, strings, items, currentValues, onChanged, onEnterKey, rows } = props;\n const { labelKey, unlocalizedLabel, autoFocus } = items[itemName];\n const value = currentValues[itemName];\n const onValueChange = React.useCallback(\n (_, newValue) => {\n onChanged(itemName, newValue);\n },\n [itemName, onChanged]\n );\n\n const onKeyPress = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key == 'Enter') {\n onEnterKey();\n }\n },\n [onEnterKey]\n );\n\n return (\n <div>\n {labelKey ? <div>{getLocalizedString(strings, labelKey, unlocalizedLabel)}</div> : null}\n <div>\n <TextField\n role=\"textbox\"\n type=\"text\"\n className={classNames.inputBox}\n value={value}\n onChange={onValueChange}\n onKeyPress={onKeyPress}\n autoFocus={autoFocus}\n rows={rows}\n multiline={!!rows}\n />\n </div>\n </div>\n );\n}\n","export { showInputDialog } from './utils/showInputDialog';\nexport { DialogItem } from './type/DialogItem';\n","import * as React from 'react';\nimport { InputDialog } from '../component/InputDialog';\nimport { renderReactComponent } from '../../common/utils/renderReactComponent';\nimport type { DialogItem } from '../type/DialogItem';\nimport type {\n CancelButtonStringKey,\n LocalizedStrings,\n OkButtonStringKey,\n UIUtilities,\n} from '../../common/index';\n\n/**\n * Show a dialog with input items\n * @param uiUtilities UI utilities to help render the dialog\n * @param dialogTitleKey Localized string key for title of this dialog\n * @param unlocalizedTitle Unlocalized title string of this dialog. It will be used if a valid localized string is not found using dialogTitleKey\n * @param items Input items in this dialog\n * @param strings Localized strings\n * @param onChange An optional callback that will be invoked when input item value is changed\n */\nexport function showInputDialog<Strings extends string, ItemNames extends string>(\n uiUtilities: UIUtilities,\n dialogTitleKey: Strings,\n unlocalizedTitle: string,\n items: Record<ItemNames, DialogItem<Strings>>,\n strings?: LocalizedStrings<Strings | OkButtonStringKey | CancelButtonStringKey>,\n onChange?: (\n changedItemName: ItemNames,\n newValue: string,\n currentValues: Record<ItemNames, string>\n ) => Record<ItemNames, string> | null,\n rows?: number\n): Promise<Record<ItemNames, string> | null> {\n return new Promise<Record<ItemNames, string> | null>(resolve => {\n let disposer: null | (() => void) = null;\n const onOk = (result: Record<ItemNames, string>) => {\n disposer?.();\n resolve(result);\n };\n const onCancel = () => {\n disposer?.();\n resolve(null);\n };\n const component = (\n <InputDialog\n dialogTitleKey={dialogTitleKey}\n unlocalizedTitle={unlocalizedTitle}\n items={items}\n strings={strings}\n onOk={onOk}\n onCancel={onCancel}\n onChange={onChange}\n rows={rows}\n />\n );\n\n disposer = renderReactComponent(uiUtilities, component);\n });\n}\n","import * as React from 'react';\nimport { ButtonKeys, Buttons } from '../utils/buttons';\nimport { Callout, DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { getDOMInsertPointRect, getObjectKeys } from 'roosterjs-content-model-dom';\nimport { getLocalizedString } from '../../common/index';\nimport { Icon } from '@fluentui/react/lib/Icon';\nimport { IconButton } from '@fluentui/react/lib/Button';\nimport { memoizeFunction } from '@fluentui/react/lib/Utilities';\nimport { mergeStyleSets } from '@fluentui/react/lib/Styling';\nimport { renderReactComponent } from '../../common/utils/renderReactComponent';\nimport { useTheme } from '@fluentui/react/lib/Theme';\nimport { useWindow } from '@fluentui/react/lib/WindowProvider';\nimport type { LocalizedStrings, UIUtilities } from '../../common/index';\nimport type { Theme } from '@fluentui/react/lib/Theme';\nimport type { PasteOptionButtonKeys, PasteOptionStringKeys } from '../type/PasteOptionStringKeys';\n\nconst getPasteOptionClassNames = memoizeFunction((theme: Theme) => {\n const palette = theme.palette;\n\n return mergeStyleSets({\n pastePane: {\n paddingLeft: '4px',\n minWidth: '72px',\n },\n optionPane: {\n textAlign: 'center',\n padding: '4px',\n },\n icon: {\n fontSize: '14px',\n },\n buttonsContainer: {\n justifyContent: 'center',\n display: 'flex',\n },\n button: {\n width: '32px',\n height: '32px',\n margin: '0 4px 4px 0',\n borderRadius: '2px',\n flex: '0 0 auto',\n '&:hover': {\n backgroundColor: palette.themeLighter,\n },\n },\n isChecked: {\n backgroundColor: palette.themeLight,\n '&:hover': {\n backgroundColor: palette.themeLighter,\n },\n },\n });\n});\n\ninterface PasteOptionButtonProps {\n buttonName: PasteOptionButtonKeys;\n className: string;\n paste: (key: PasteOptionButtonKeys) => void;\n strings?: LocalizedStrings<PasteOptionStringKeys>;\n}\n\nfunction PasteOptionButton(props: PasteOptionButtonProps) {\n const { buttonName, paste, strings, className } = props;\n const button = Buttons[buttonName];\n const onClick = React.useCallback(() => {\n paste(buttonName);\n }, [paste, buttonName]);\n\n return (\n <IconButton\n className={className}\n onClick={onClick}\n title={\n getLocalizedString(strings, buttonName, button.unlocalizedText) +\n (button.shortcut ? ` (${button.shortcut})` : '')\n }\n iconProps={{ iconName: button.icon }}\n />\n );\n}\n\ninterface PasteOptionProps {\n strings?: LocalizedStrings<PasteOptionStringKeys>;\n container: Node;\n offset: number;\n isRtl: boolean;\n paste: (key: PasteOptionButtonKeys) => void;\n dismiss: () => void;\n}\n\n/**\n * @internal\n */\nexport interface PasteOptionPane {\n getSelectedKey: () => PasteOptionButtonKeys | null;\n setSelectedKey: (index: PasteOptionButtonKeys) => void;\n dismiss: () => void;\n}\n\nconst PasteOptionComponent = React.forwardRef(function PasteOptionFunc(\n props: PasteOptionProps,\n ref: React.Ref<PasteOptionPane>\n) {\n const { strings, container, offset, paste, dismiss, isRtl } = props;\n const theme = useTheme();\n const classNames = getPasteOptionClassNames(theme);\n const [selectedKey, setSelectedKey] = React.useState<PasteOptionButtonKeys | null>(null);\n\n const rect = getDOMInsertPointRect((useWindow() ?? window).document, {\n node: container,\n offset,\n });\n const target = rect && { x: props.isRtl ? rect.left : rect.right, y: rect.bottom };\n\n React.useImperativeHandle(\n ref,\n () => ({\n dismiss,\n setSelectedKey,\n getSelectedKey: () => selectedKey,\n }),\n [dismiss, paste, isRtl, selectedKey, setSelectedKey]\n );\n\n const buttonPane = React.useRef<HTMLDivElement>(null);\n const onDismiss = React.useCallback(\n (evt?: Event | React.MouseEvent | React.KeyboardEvent) => {\n const target =\n evt instanceof FocusEvent && evt.relatedTarget instanceof Node\n ? evt.relatedTarget\n : null;\n const clickOnButtonPane =\n target &&\n buttonPane.current &&\n (buttonPane.current == target || buttonPane.current.contains(target));\n if (!clickOnButtonPane) {\n dismiss();\n }\n },\n [dismiss]\n );\n\n const onClickShowSubMenu = React.useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n setSelectedKey(ButtonKeys[0]);\n event.preventDefault();\n event.stopPropagation();\n },\n [setSelectedKey]\n );\n\n return (\n <Callout\n gapSpace={10}\n isBeakVisible={false}\n target={target}\n directionalHint={\n isRtl ? DirectionalHint.bottomRightEdge : DirectionalHint.bottomLeftEdge\n }\n directionalHintForRTL={DirectionalHint.bottomRightEdge}\n preventDismissOnScroll={true}\n onDismiss={onDismiss}>\n <div ref={buttonPane} className={classNames.pastePane}>\n <div onClick={onClickShowSubMenu} className={classNames.optionPane}>\n <Icon iconName={'Paste'} className={classNames.icon} />\n {getLocalizedString(strings, 'pasteOptionPaneText', '(Ctrl)')}\n </div>\n {selectedKey && (\n <div className={classNames.buttonsContainer}>\n {getObjectKeys(Buttons).map(key => (\n <PasteOptionButton\n key={key}\n strings={strings}\n paste={paste}\n buttonName={key}\n className={\n classNames.button +\n ' ' +\n (selectedKey == key ? classNames.isChecked : '')\n }\n />\n ))}\n </div>\n )}\n </div>\n </Callout>\n );\n});\n\n/**\n * @internal Show paste open pane component\n * @param uiUtilities The UI utilities object to help render component\n * @param position Target position\n * @param strings Localize string for this component\n * @param onPaste A callback to be called when user click on a paste button\n * @param ref Reference object for this component\n */\nexport function showPasteOptionPane(\n uiUtilities: UIUtilities,\n container: Node,\n offset: number,\n onPaste: (key: PasteOptionButtonKeys) => void,\n ref: React.RefObject<PasteOptionPane>,\n strings?: LocalizedStrings<PasteOptionStringKeys>\n) {\n let disposer: (() => void) | null = null;\n const onDismiss = () => {\n disposer?.();\n disposer = null;\n };\n\n disposer = renderReactComponent(\n uiUtilities,\n <PasteOptionComponent\n ref={ref}\n container={container}\n offset={offset}\n strings={strings}\n isRtl={uiUtilities.isRightToLeft()}\n dismiss={onDismiss}\n paste={onPaste}\n />\n );\n}\n","export { PasteOptionButtonKeys, PasteOptionStringKeys } from './type/PasteOptionStringKeys';\nexport { createPasteOptionPlugin } from './plugin/createPasteOptionPlugin';\n","import * as React from 'react';\nimport { ButtonKeys, Buttons } from '../utils/buttons';\nimport { ChangeSource } from 'roosterjs-content-model-dom';\nimport { paste } from 'roosterjs-content-model-core';\nimport { showPasteOptionPane } from '../component/showPasteOptionPane';\nimport type { ClipboardData, IEditor, PluginEvent } from 'roosterjs-content-model-types';\nimport type { PasteOptionPane } from '../component/showPasteOptionPane';\nimport type { LocalizedStrings, ReactEditorPlugin, UIUtilities } from '../../common/index';\nimport type { PasteOptionButtonKeys, PasteOptionStringKeys } from '../type/PasteOptionStringKeys';\n\nclass PasteOptionPlugin implements ReactEditorPlugin {\n private clipboardData: ClipboardData | null = null;\n private editor: IEditor | null = null;\n private uiUtilities: UIUtilities | null = null;\n private pasteOptionRef = React.createRef<PasteOptionPane>();\n\n constructor(private strings?: LocalizedStrings<PasteOptionStringKeys>) {}\n\n getName() {\n return 'PasteOption';\n }\n\n initialize(editor: IEditor) {\n this.editor = editor;\n }\n\n dispose() {\n this.pasteOptionRef.current?.dismiss();\n this.editor = null;\n }\n\n onPluginEvent(event: PluginEvent) {\n if (!this.editor) {\n return;\n }\n\n if (event.eventType == 'scroll') {\n if (this.pasteOptionRef.current) {\n this.showPasteOptionPane(this.editor);\n }\n } else if (this.pasteOptionRef.current) {\n this.handlePasteOptionPaneEvent(event);\n } else if (event.eventType == 'contentChanged') {\n if (event.source == ChangeSource.Paste) {\n const clipboardData = event.data as ClipboardData;\n\n // Only show paste option when we pasted HTML with some format\n if (clipboardData?.text && clipboardData.types?.indexOf('text/html') >= 0) {\n this.clipboardData = clipboardData;\n this.showPasteOptionPane(this.editor);\n }\n }\n }\n }\n\n setUIUtilities(uiUtilities: UIUtilities) {\n this.uiUtilities = uiUtilities;\n }\n\n private handlePasteOptionPaneEvent(event: PluginEvent) {\n if (event.eventType == 'keyDown' && this.pasteOptionRef.current) {\n const selectedKey = this.pasteOptionRef.current.getSelectedKey();\n\n if (!selectedKey) {\n switch (event.rawEvent.key) {\n case 'Control':\n this.pasteOptionRef.current.setSelectedKey(ButtonKeys[0]);\n cancelEvent(event.rawEvent);\n break;\n\n case 'Escape':\n this.pasteOptionRef.current.dismiss();\n cancelEvent(event.rawEvent);\n break;\n\n default:\n this.pasteOptionRef.current.dismiss();\n break;\n }\n } else {\n const keyboardEvent = event.rawEvent;\n\n if (keyboardEvent.key != 'Control' && keyboardEvent.ctrlKey) {\n // Dismiss the paste option when pressing hotkey CTRL+<any key>\n this.pasteOptionRef.current.dismiss();\n return;\n }\n\n for (let i = 0; i < ButtonKeys.length; i++) {\n const key = ButtonKeys[i];\n const button = Buttons[key];\n if (button.shortcut == String.fromCharCode(keyboardEvent.which)) {\n this.onPaste(key);\n cancelEvent(keyboardEvent);\n return;\n }\n }\n\n switch (keyboardEvent.key) {\n case 'Escape':\n this.pasteOptionRef.current.dismiss();\n break;\n case 'ArrowLeft':\n case 'ArrowRight':\n const buttonCount = ButtonKeys.length;\n const diff =\n (keyboardEvent.key == 'ArrowRight') == this.uiUtilities?.isRightToLeft()\n ? -1\n : 1;\n this.pasteOptionRef.current.setSelectedKey(\n ButtonKeys[\n (ButtonKeys.indexOf(selectedKey) + diff + buttonCount) % buttonCount\n ]\n );\n break;\n case 'Enter':\n this.onPaste(selectedKey);\n break;\n case 'Control':\n // Noop\n break;\n default:\n this.pasteOptionRef.current.dismiss();\n return;\n }\n\n cancelEvent(keyboardEvent);\n }\n }\n }\n\n private onPaste = (key: PasteOptionButtonKeys) => {\n if (this.clipboardData && this.editor) {\n this.editor.focus();\n\n switch (key) {\n case 'pasteOptionPasteAsIs':\n paste(this.editor, this.clipboardData);\n break;\n\n case 'pasteOptionPasteText':\n paste(this.editor, this.clipboardData, 'asPlainText');\n break;\n\n case 'pasteOptionMergeFormat':\n paste(this.editor, this.clipboardData, 'mergeFormat');\n break;\n case 'pasteOptionPasteAsImage':\n paste(this.editor, this.clipboardData, 'asImage');\n }\n\n this.pasteOptionRef.current?.setSelectedKey(key);\n }\n };\n\n private showPasteOptionPane(editor: IEditor) {\n this.pasteOptionRef.current?.dismiss();\n\n const selection = editor.getDOMSelection();\n\n if (selection?.type == 'range' && this.uiUtilities) {\n showPasteOptionPane(\n this.uiUtilities,\n selection.range.startContainer,\n selection.range.startOffset,\n this.onPaste,\n this.pasteOptionRef,\n this.strings\n );\n }\n }\n}\n\nfunction cancelEvent(event: UIEvent) {\n event.preventDefault();\n event.stopPropagation();\n}\n\n/**\n * Create a new instance of PasteOption plugin to show an option pane when paste, so that user can choose\n * an option to change the paste result, including:\n * - Paste as is\n * - Paste as text\n * - Paste and merge format\n * @param strings Localized string for this plugin\n * @returns A paste option plugin\n */\nexport function createPasteOptionPlugin(\n strings?: LocalizedStrings<PasteOptionStringKeys>\n): ReactEditorPlugin {\n return new PasteOptionPlugin(strings);\n}\n","import type { PasteOptionButtonKeys } from '../type/PasteOptionStringKeys';\n\n/**\n * @internal\n */\nexport interface PasteOptionButtonType {\n unlocalizedText: string;\n shortcut: string;\n icon: string;\n}\n\n/**\n * @internal\n */\nexport const Buttons: Record<PasteOptionButtonKeys, PasteOptionButtonType> = {\n pasteOptionPasteAsIs: {\n unlocalizedText: 'Paste as is',\n shortcut: 'P',\n icon: 'Paste',\n },\n pasteOptionPasteText: {\n unlocalizedText: 'Paste text',\n shortcut: 'T',\n icon: 'PasteAsText',\n },\n pasteOptionMergeFormat: {\n unlocalizedText: 'Paste text and merge format',\n shortcut: 'M',\n icon: 'ClipboardList',\n },\n pasteOptionPasteAsImage: {\n unlocalizedText: 'Paste as image',\n shortcut: 'I',\n icon: 'PictureFill',\n },\n};\n\n/**\n * @internal\n */\nexport const ButtonKeys: PasteOptionButtonKeys[] = Object.keys(Buttons) as PasteOptionButtonKeys[];\n","import { setAlignment } from 'roosterjs-content-model-api';\nimport type { AlignCenterButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Align center\" button on the format ribbon\n */\nexport const alignCenterButton: RibbonButton<AlignCenterButtonStringKey> = {\n key: 'buttonNameAlignCenter',\n unlocalizedText: 'Align center',\n iconName: 'AlignCenter',\n onClick: editor => {\n setAlignment(editor, 'center');\n },\n};\n","import { setAlignment } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Align justify\" button on the format ribbon\n */\nexport const alignJustifyButton: RibbonButton<'buttonNameAlignJustify'> = {\n key: 'buttonNameAlignJustify',\n unlocalizedText: 'Align justify',\n iconName: 'AlignJustify',\n onClick: editor => {\n setAlignment(editor, 'justify');\n },\n};\n","import { setAlignment } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { AlignLeftButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Align left\" button on the format ribbon\n */\nexport const alignLeftButton: RibbonButton<AlignLeftButtonStringKey> = {\n key: 'buttonNameAlignLeft',\n unlocalizedText: 'Align left',\n iconName: 'AlignLeft',\n onClick: editor => {\n setAlignment(editor, 'left');\n },\n};\n","import { setAlignment } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { AlignRightButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Align right\" button on the format ribbon\n */\nexport const alignRightButton: RibbonButton<AlignRightButtonStringKey> = {\n key: 'buttonNameAlignRight',\n unlocalizedText: 'Align right',\n iconName: 'AlignRight',\n onClick: editor => {\n setAlignment(editor, 'right');\n },\n};\n","import { renderColorPicker } from '../../colorPicker/component/renderColorPicker';\nimport { setBackgroundColor } from 'roosterjs-content-model-api';\nimport {\n BackgroundColorDropDownItems,\n BackgroundColors,\n getBackgroundColorValue,\n} from '../../colorPicker/utils/backgroundColors';\nimport {\n getColorPickerContainerClassName,\n getColorPickerItemClassName,\n} from '../../colorPicker/utils/getClassNamesForColorPicker';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { BackgroundColorButtonStringKey } from '../type/RibbonButtonStringKeys';\n\nconst Key: 'buttonNameBackgroundColor' = 'buttonNameBackgroundColor';\n\n/**\n * \"Background color\" button on the format ribbon\n */\nexport const backgroundColorButton: RibbonButton<BackgroundColorButtonStringKey> = {\n dropDownMenu: {\n items: BackgroundColorDropDownItems,\n itemClassName: getColorPickerItemClassName(),\n allowLivePreview: true,\n itemRender: (item, onClick) => renderColorPicker(item, BackgroundColors, onClick),\n commandBarSubMenuProperties: {\n className: getColorPickerContainerClassName(),\n },\n },\n key: Key,\n unlocalizedText: 'Background color',\n iconName: 'FabricTextHighlight',\n onClick: (editor, key) => {\n // This check will always be true, add it here just to satisfy compiler\n if (key != 'buttonNameBackgroundColor') {\n setBackgroundColor(editor, getBackgroundColorValue(key).lightModeColor);\n }\n },\n};\n","import { toggleBlockQuote } from 'roosterjs-content-model-api';\nimport type { QuoteButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Block quote\" button on the format ribbon\n */\nexport const blockQuoteButton: RibbonButton<QuoteButtonStringKey> = {\n key: 'buttonNameQuote',\n unlocalizedText: 'Quote',\n iconName: 'RightDoubleQuote',\n isChecked: formatState => !!formatState.isBlockQuote,\n onClick: editor => {\n toggleBlockQuote(editor);\n },\n};\n","import { toggleBold } from 'roosterjs-content-model-api';\nimport type { BoldButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Bold\" button on the format ribbon\n */\nexport const boldButton: RibbonButton<BoldButtonStringKey> = {\n key: 'buttonNameBold',\n unlocalizedText: 'Bold',\n iconName: 'Bold',\n isChecked: formatState => !!formatState.isBold,\n onClick: editor => {\n toggleBold(editor);\n },\n};\n","import { toggleBullet } from 'roosterjs-content-model-api';\nimport type { BulletedListButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Bulleted list\" button on the format ribbon\n */\nexport const bulletedListButton: RibbonButton<BulletedListButtonStringKey> = {\n key: 'buttonNameBulletedList',\n unlocalizedText: 'Bulleted list',\n iconName: 'BulletedList',\n isChecked: formatState => !!formatState.isBullet,\n onClick: editor => {\n toggleBullet(editor);\n },\n};\n","import { clearFormat } from 'roosterjs-content-model-api';\nimport type { ClearFormatButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Clear format\" button on the format ribbon\n */\nexport const clearFormatButton: RibbonButton<ClearFormatButtonStringKey> = {\n key: 'buttonNameClearFormat',\n unlocalizedText: 'Clear format',\n iconName: 'ClearFormatting',\n onClick: editor => {\n clearFormat(editor);\n },\n};\n","import { toggleCode } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { CodeButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Code\" button on the format ribbon\n */\nexport const codeButton: RibbonButton<CodeButtonStringKey> = {\n key: 'buttonNameCode',\n unlocalizedText: 'Code',\n iconName: 'Code',\n isChecked: formatState => !!formatState.isCodeInline,\n onClick: editor => {\n toggleCode(editor);\n },\n};\n","import { changeFontSize } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { DecreaseFontSizeButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Decrease font size\" button on the format ribbon\n */\nexport const decreaseFontSizeButton: RibbonButton<DecreaseFontSizeButtonStringKey> = {\n key: 'buttonNameDecreaseFontSize',\n unlocalizedText: 'Decrease font size',\n iconName: 'FontDecrease',\n onClick: editor => {\n changeFontSize(editor, 'decrease');\n },\n};\n","import { setIndentation } from 'roosterjs-content-model-api';\nimport type { DecreaseIndentButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Decrease indent\" button on the format ribbon\n */\nexport const decreaseIndentButton: RibbonButton<DecreaseIndentButtonStringKey> = {\n key: 'buttonNameDecreaseIndent',\n unlocalizedText: 'Decrease indent',\n iconName: 'DecreaseIndentLegacy',\n flipWhenRtl: true,\n onClick: editor => {\n setIndentation(editor, 'outdent');\n },\n};\n","import { setFontName } from 'roosterjs-content-model-api';\nimport type { FontButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\ninterface FontName {\n name: string;\n family: string;\n localizedName?: string;\n}\nconst FontNames: FontName[] = [\n { name: 'Arial', family: 'Arial,Helvetica,sans-serif' },\n { name: 'Arial Black', family: \"'Arial Black',Arial,sans-serif\" },\n { name: 'Calibri', family: 'Calibri,Helvetica,sans-serif' },\n { name: 'Calibri Light', family: \"'Calibri Light','Helvetica Light',sans-serif\" },\n { name: 'Cambria', family: 'Cambria,Georgia,serif' },\n { name: 'Candara', family: 'Candara,Optima,sans-serif' },\n { name: 'Century Gothic', family: \"'Century Gothic',sans-serif\" },\n { name: 'Comic Sans MS', family: \"'Comic Sans MS',Chalkboard,cursive\" },\n { name: 'Consolas', family: 'Consolas,Courier,monospace' },\n { name: 'Constantia', family: \"Constantia,'Hoefler Text',serif\" },\n { name: 'Corbel', family: 'Corbel,Skia,sans-serif' },\n { name: 'Courier New', family: \"'Courier New',monospace\" },\n {\n name: 'Franklin Gothic Book',\n family: \"'Franklin Gothic Book','Avenir Next Condensed',sans-serif\",\n },\n {\n name: 'Franklin Gothic Demi',\n family: \"'Franklin Gothic Demi','Avenir Next Condensed Demi Bold',sans-serif\",\n },\n {\n name: 'Franklin Gothic Medium',\n family: \"'Franklin Gothic Medium','Avenir Next Condensed Medium',sans-serif\",\n },\n { name: 'Garamond', family: 'Garamond,Georgia,serif' },\n { name: 'Georgia', family: 'Georgia,serif' },\n { name: 'Impact', family: 'Impact,Charcoal,sans-serif' },\n { name: 'Lucida Console', family: \"'Lucida Console',Monaco,monospace\" },\n { name: 'Lucida Handwriting', family: \"'Lucida Handwriting','Apple Chancery',cursive\" },\n { name: 'Lucida Sans Unicode', family: \"'Lucida Sans Unicode','Lucida Grande',sans-serif\" },\n { name: 'Palatino Linotype', family: \"'Palatino Linotype','Book Antiqua',Palatino,serif\" },\n {\n name: 'Segoe UI',\n family: \"'Segoe UI', 'Segoe UI Web (West European)', 'Helvetica Neue', sans-serif\",\n },\n { name: 'Sitka Heading', family: \"'Sitka Heading',Cochin,serif\" },\n { name: 'Sitka Text', family: \"'Sitka Text',Cochin,serif\" },\n { name: 'Tahoma', family: 'Tahoma,Geneva,sans-serif' },\n { name: 'Times', family: \"Times,'Times New Roman',serif\" },\n { name: 'Times New Roman', family: \"'Times New Roman',Times,serif\" },\n { name: 'Trebuchet MS', family: \"'Trebuchet MS',Trebuchet,sans-serif\" },\n { name: 'TW Cen MT', family: \"'TW Cen MT','Century Gothic',sans-serif\" },\n { name: 'Verdana', family: 'Verdana,Geneva,sans-serif' },\n { name: '-', family: 'FontDivider0' }, //divider between fonts for different scripts (order is by style)\n {\n name: 'Microsoft YaHei',\n family: \"'Microsoft YaHei','微软雅黑',STHeiti,sans-serif\",\n localizedName: '微软雅黑',\n }, //chineseS Microsoft recommended font\n { name: 'SimHei', family: \"SimHei,'黑体',STHeiti,sans-serif\", localizedName: '黑体' }, //chineseS\n {\n name: 'NSimSun',\n family: \"NSimSun,'新宋体',SimSun,'宋体',SimSun-ExtB,'宋体-ExtB',STSong,serif\",\n localizedName: '新宋体',\n }, //chineseS\n { name: 'FangSong', family: \"FangSong,'仿宋',STFangsong,serif\", localizedName: '仿宋' }, //chineseS\n { name: 'SimLi', family: \"SimLi,'隶书','Baoli SC',serif\", localizedName: '隶书' }, //chineseS\n { name: 'KaiTi', family: \"KaiTi,'楷体',STKaiti,serif\", localizedName: '楷体' }, //chineseS\n { name: '-', family: 'FontDivider1' }, //divider between fonts for different scripts (order is by style)\n {\n name: 'Microsoft JhengHei',\n family: \"'Microsoft JhengHei','微軟正黑體','Apple LiGothic',sans-serif\",\n localizedName: '微軟正黑體',\n }, //chineseT Microsoft recommended font\n {\n name: 'PMingLiU',\n family: \"PMingLiU,'新細明體',PMingLiU-ExtB,'新細明體-ExtB','Apple LiSung',serif\",\n localizedName: '新細明體',\n }, //chineseT\n { name: 'DFKai-SB', family: \"DFKai-SB,'標楷體','BiauKai',serif\", localizedName: '標楷體' }, //chineseT\n { name: '-', family: 'FontDivider2' }, //divider between fonts for different scripts (order is alphabetical by foundry)\n {\n name: 'Meiryo',\n family: \"Meiryo,'メイリオ','Hiragino Sans',sans-serif\",\n localizedName: 'メイリオ',\n }, //japanese\n {\n name: 'MS PGothic',\n family:\n \"'MS PGothic','MS Pゴシック','MS Gothic','MS ゴシック','Hiragino Kaku Gothic ProN',sans-serif\",\n localizedName: 'MS Pゴシック',\n }, //japanese\n {\n name: 'MS PMincho',\n family: \"'MS PMincho','MS P明朝','MS Mincho','MS 明朝','Hiragino Mincho ProN',serif\",\n localizedName: 'MS P明朝',\n }, //japanese\n {\n name: 'Yu Gothic',\n family: \"'Yu Gothic','游ゴシック','YuGothic',sans-serif\",\n localizedName: '游ゴシック',\n }, //japanese\n { name: 'Yu Mincho', family: \"'Yu Mincho','游明朝','YuMincho',serif\", localizedName: '游明朝' }, //japanese\n { name: '-', family: 'FontDivider3' }, //divider between fonts for different scripts (order is for legacy reasons)\n {\n name: 'Malgun Gothic',\n family: \"'Malgun Gothic','맑은 고딕',AppleGothic,sans-serif\",\n localizedName: '맑은 고딕',\n }, //korean Microsoft recommended font\n { name: 'Gulim', family: \"Gulim,'굴림','Nanum Gothic',sans-serif\", localizedName: '굴림' }, //korean\n { name: 'Dotum', family: \"Dotum,'돋움',AppleGothic,sans-serif\", localizedName: '돋움' }, //korean\n { name: 'Batang', family: \"Batang,'바탕',AppleMyungjo,serif\", localizedName: '바탕' }, //korean\n { name: 'BatangChe', family: \"BatangChe,'바탕체',AppleMyungjo,serif\", localizedName: '바탕체' }, //korean\n { name: 'Gungsuh', family: \"Gungsuh,'궁서',GungSeo,serif\", localizedName: '궁서' }, //korean\n { name: '-', family: 'FontDivider4' }, //divider between fonts for different scripts (order is alphabetical)\n { name: 'Leelawadee UI', family: \"'Leelawadee UI',Thonburi,sans-serif\" }, //thai Microsoft recommended font\n { name: 'Angsana New', family: \"'Angsana New','Leelawadee UI',Sathu,serif\" }, //thai\n { name: 'Cordia New', family: \"'Cordia New','Leelawadee UI',Silom,sans-serif\" }, //thai\n { name: 'DaunPenh', family: \"DaunPenh,'Leelawadee UI','Khmer MN',sans-serif\" }, //khmer\n { name: '-', family: 'FontDivider5' }, //divider between fonts for different scripts (order is alphabetical)\n { name: 'Nirmala UI', family: \"'Nirmala UI',sans-serif\" }, //indic Microsoft recommended font\n { name: 'Gautami', family: \"Gautami,'Nirmala UI','Telugu MN',sans-serif\" }, //indic\n { name: 'Iskoola Pota', family: \"'Iskoola Pota','Nirmala UI','Sinhala MN',sans-serif\" }, //indic\n { name: 'Kalinga', family: \"Kalinga,'Nirmala UI','Oriya MN',sans-serif\" }, //indic\n { name: 'Kartika', family: \"Kartika,'Nirmala UI','Malayalam MN',sans-serif\" }, //indic\n { name: 'Latha', family: \"Latha,'Nirmala UI','Tamil MN',sans-serif\" }, //indic\n { name: 'Mangal', family: \"Mangal,'Nirmala UI','Devanagari Sangam MN',sans-serif\" }, //indic\n { name: 'Raavi', family: \"Raavi,'Nirmala UI','Gurmukhi MN',sans-serif\" }, //indic\n { name: 'Shruti', family: \"Shruti,'Nirmala UI','Gujarati Sangam MN',sans-serif\" }, //indic\n { name: 'Tunga', family: \"Tunga,'Nirmala UI','Kannada MN',sans-serif\" }, //indic\n { name: 'Vrinda', family: \"Vrinda,'Nirmala UI','Bangla MN',sans-serif\" }, //indic\n { name: '-', family: 'FontDivider6' }, //divider between fonts for different scripts\n { name: 'Nyala', family: 'Nyala,Kefa,sans-serif' }, //other-ethiopic\n { name: 'Sylfaen', family: 'Sylfaen,Mshtakan,Menlo,serif' }, //other-armenian-georgian\n];\n\nconst DropDownItems = FontNames.reduce((items, font) => {\n items[font.family] = font.localizedName || font.name;\n return items;\n}, <Record<string, string>>{});\n\nconst LowerCaseFontMap = FontNames.reduce((items, font) => {\n items[font.name.toLowerCase()] = font.family;\n return items;\n}, <Record<string, string>>{});\n\nconst FirstFontRegex = /^['\"]?([^'\",]+)/i;\n\n/**\n * \"Font\" button on the format ribbon\n */\nexport const fontButton: RibbonButton<FontButtonStringKey> = {\n key: 'buttonNameFont',\n unlocalizedText: 'Font',\n iconName: 'Font',\n dropDownMenu: {\n items: DropDownItems,\n getSelectedItemKey: formatState => {\n const matches = formatState.fontName?.match(FirstFontRegex);\n const firstName = matches?.[1]?.toLowerCase();\n const selectedKey = (firstName && LowerCaseFontMap[firstName]) || '';\n\n return selectedKey;\n },\n allowLivePreview: true,\n },\n onClick: (editor, font) => {\n setFontName(editor, font);\n },\n};\n","import { setFontSize } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { FontSizeButtonStringKey } from '../type/RibbonButtonStringKeys';\n\nconst FONT_SIZES = [8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72];\n\n/**\n * \"Font Size\" button on the format ribbon\n */\nexport const fontSizeButton: RibbonButton<FontSizeButtonStringKey> = {\n key: 'buttonNameFontSize',\n unlocalizedText: 'Font size',\n iconName: 'FontSize',\n dropDownMenu: {\n items: FONT_SIZES.reduce((map, size) => {\n map[size + 'pt'] = size.toString();\n return map;\n }, <Record<string, string>>{}),\n getSelectedItemKey: formatState => formatState.fontSize ?? '',\n allowLivePreview: true,\n },\n onClick: (editor, size) => {\n setFontSize(editor, size);\n },\n};\n","import { changeFontSize } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { IncreaseFontSizeButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Increase font size\" button on the format ribbon\n */\nexport const increaseFontSizeButton: RibbonButton<IncreaseFontSizeButtonStringKey> = {\n key: 'buttonNameIncreaseFontSize',\n unlocalizedText: 'Increase font size',\n iconName: 'FontIncrease',\n onClick: editor => {\n changeFontSize(editor, 'increase');\n },\n};\n","import { setIndentation } from 'roosterjs-content-model-api';\nimport type { IncreaseIndentButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Increase indent\" button on the format ribbon\n */\nexport const increaseIndentButton: RibbonButton<IncreaseIndentButtonStringKey> = {\n key: 'buttonNameIncreaseIndent',\n unlocalizedText: 'Increase indent',\n iconName: 'IncreaseIndentLegacy',\n flipWhenRtl: true,\n onClick: editor => {\n setIndentation(editor, 'indent');\n },\n};\n","import { insertImage } from 'roosterjs-content-model-api';\nimport type { InsertImageButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\nfunction createInput(doc: Document): HTMLInputElement {\n const input = doc.createElement('input');\n\n input.type = 'file';\n input.accept = 'image/*';\n input.setAttribute('display', 'none');\n\n return input;\n}\n\n/**\n * \"Insert image\" button on the format ribbon\n */\nexport const insertImageButton: RibbonButton<InsertImageButtonStringKey> = {\n key: 'buttonNameInsertImage',\n unlocalizedText: 'Insert image',\n iconName: 'Photo2',\n onClick: editor => {\n const document = editor.getDocument();\n const fileInput = createInput(document) as HTMLInputElement;\n document.body.appendChild(fileInput);\n\n fileInput.addEventListener('change', () => {\n if (fileInput.files) {\n for (let i = 0; i < fileInput.files.length; i++) {\n insertImage(editor, fileInput.files[i]);\n }\n }\n });\n\n try {\n fileInput.click();\n } finally {\n document.body.removeChild(fileInput);\n }\n },\n};\n","import { adjustLinkSelection, insertLink } from 'roosterjs-content-model-api';\nimport { showInputDialog } from '../../inputDialog/utils/showInputDialog';\nimport type { InsertLinkButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Insert link\" button on the format ribbon\n */\nexport const insertLinkButton: RibbonButton<InsertLinkButtonStringKey> = {\n key: 'buttonNameInsertLink',\n unlocalizedText: 'Insert link',\n iconName: 'Link',\n onClick: (editor, _, strings, uiUtilities) => {\n const [displayText, url] = adjustLinkSelection(editor);\n const items = {\n url: {\n autoFocus: true,\n labelKey: 'insertLinkDialogUrl' as const,\n unlocalizedLabel: 'Web address (URL)',\n initValue: url ?? '',\n },\n displayText: {\n labelKey: 'insertLinkDialogDisplayAs' as const,\n unlocalizedLabel: 'Display as',\n initValue: displayText,\n },\n };\n\n showInputDialog(\n uiUtilities,\n 'insertLinkTitle',\n 'Insert link',\n items,\n strings,\n (itemName, newValue, values) => {\n if (itemName == 'url' && values.displayText == values.url) {\n values.displayText = newValue;\n values.url = newValue;\n return values;\n } else {\n return null;\n }\n }\n ).then(result => {\n editor.focus();\n\n if (result && result.url && (result.displayText != displayText || result.url != url)) {\n insertLink(editor, result.url, result.url, result.displayText);\n }\n });\n },\n};\n","import * as React from 'react';\nimport { FocusZone, FocusZoneDirection } from '@fluentui/react/lib/FocusZone';\nimport { insertTable } from 'roosterjs-content-model-api';\nimport { isNodeOfType } from 'roosterjs-content-model-dom';\nimport { mergeStyleSets } from '@fluentui/react/lib/Styling';\nimport type { TableCellCoordinate } from 'roosterjs-content-model-types';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { InsertTableButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { IContextualMenuItem } from '@fluentui/react/lib/ContextualMenu';\n\nconst MaxRows = 10;\nconst MaxCols = 10;\nconst classNames = mergeStyleSets({\n tableButton: {\n width: '15px',\n height: '15px',\n margin: '1px 1px 0 0',\n border: 'solid 1px #a19f9d',\n display: 'inline-block',\n cursor: 'pointer',\n backgroundColor: 'transparent',\n },\n hovered: {\n border: 'solid 1px #DB626C',\n },\n tablePane: {\n width: '160px',\n minWidth: 'auto',\n padding: '4px',\n boxSizing: 'content-box',\n },\n tablePaneInner: {\n lineHeight: '12px',\n },\n title: {\n margin: '5px 0',\n },\n});\n\n/**\n * \"Insert table\" button on the format ribbon\n */\nexport const insertTableButton: RibbonButton<InsertTableButtonStringKey> = {\n key: 'buttonNameInsertTable',\n unlocalizedText: 'Insert table',\n iconName: 'Table',\n dropDownMenu: {\n items: {\n insertTablePane: '{0} x {1} table',\n },\n itemRender: (item, onClick) => {\n return <InsertTablePane item={item} onClick={onClick} />;\n },\n commandBarSubMenuProperties: {\n className: classNames.tablePane,\n },\n },\n onClick: (editor, key) => {\n const { row, col } = parseKey(key);\n insertTable(editor, col, row);\n },\n};\n\nfunction parseKey(key: string): TableCellCoordinate {\n const [row, col] = key.split(',');\n return {\n row: parseInt(row),\n col: parseInt(col),\n };\n}\n\nfunction InsertTablePane(props: {\n item: IContextualMenuItem;\n onClick: (\n e: React.MouseEvent<Element> | React.KeyboardEvent<Element>,\n item: IContextualMenuItem\n ) => void;\n}) {\n const { item, onClick } = props;\n const [col, setCol] = React.useState(1);\n const [row, setRow] = React.useState(1);\n\n const updateSize = React.useCallback(\n (t?: Node) => {\n if (t && isNodeOfType(t, 'ELEMENT_NODE')) {\n const col = parseInt(t.dataset.col ?? '-1');\n const row = parseInt(t.dataset.row ?? '-1');\n\n if (col > 0 && col <= MaxCols && row > 0 && row <= MaxRows) {\n setCol(col);\n setRow(row);\n }\n }\n },\n [setCol, setRow]\n );\n\n const onMouseEnter = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n updateSize(e.target as Node);\n },\n [updateSize]\n );\n\n const onClickButton = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick(e, {\n ...item,\n key: createKey(row, col),\n });\n },\n [row, col, onClick]\n );\n\n const ariaLabels = React.useMemo<string[][]>(() => {\n const result: string[][] = [];\n for (let i = 1; i <= MaxCols; i++) {\n const col: string[] = [];\n for (let j = 1; j <= MaxRows; j++) {\n col[j] = formatText(item.text ?? '', i, j);\n }\n result[i] = col;\n }\n return result;\n }, [item.text]);\n\n const items = React.useMemo(() => {\n const items: JSX.Element[] = [];\n\n for (let i = 1; i <= MaxRows; i++) {\n for (let j = 1; j <= MaxCols; j++) {\n const key = `cell_${i}_${j}`;\n const isSelected = j <= col && i <= row;\n items.push(\n <button\n className={\n classNames.tableButton + ' ' + (isSelected ? classNames.hovered : '')\n }\n onClick={onClickButton}\n key={key}\n id={key}\n data-col={j}\n data-row={i}\n data-is-focusable={true}\n onMouseEnter={onMouseEnter}\n aria-label={ariaLabels[i][j]}\n />\n );\n }\n }\n\n return items;\n }, [col, row]);\n\n const text = formatText(item.text ?? '', row, col);\n\n return (\n <div className={classNames.tablePaneInner}>\n <div className={classNames.title}>{text}</div>\n <FocusZone\n defaultActiveElement=\"cell_1_1\"\n direction={FocusZoneDirection.bidirectional}\n onActiveElementChanged={updateSize}>\n {items}\n </FocusZone>\n </div>\n );\n}\n\nfunction formatText(text: string, row: number, col: number) {\n return text.replace('{0}', col.toString()).replace('{1}', row.toString());\n}\n\nfunction createKey(row: number, col: number) {\n return `${row},${col}`;\n}\n","import { toggleItalic } from 'roosterjs-content-model-api';\nimport type { ItalicButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Italic\" button on the format ribbon\n */\nexport const italicButton: RibbonButton<ItalicButtonStringKey> = {\n key: 'buttonNameItalic',\n unlocalizedText: 'Italic',\n iconName: 'Italic',\n isChecked: formatState => !!formatState.isItalic,\n onClick: editor => {\n toggleItalic(editor);\n },\n};\n","import { setDirection } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { LtrButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Left to right\" button on the format ribbon\n */\nexport const ltrButton: RibbonButton<LtrButtonStringKey> = {\n key: 'buttonNameLtr',\n unlocalizedText: 'Left to right',\n iconName: 'BidiLtr',\n onClick: editor => {\n setDirection(editor, 'ltr');\n },\n};\n","import type { RibbonButton } from '../type/RibbonButton';\nimport type { MoreCommandsButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * @internal\n * \"More commands\" (overflow) button on the format ribbon\n */\nexport const moreCommands: RibbonButton<MoreCommandsButtonStringKey> = {\n key: 'buttonNameMoreCommands',\n unlocalizedText: 'More commands',\n iconName: 'MoreCommands',\n onClick: () => {\n return true;\n },\n};\n","import { toggleNumbering } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { NumberedListButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Numbering list\" button on the format ribbon\n */\nexport const numberedListButton: RibbonButton<NumberedListButtonStringKey> = {\n key: 'buttonNameNumberedList',\n unlocalizedText: 'Numbered List',\n iconName: 'NumberedList',\n isChecked: formatState => !!formatState.isNumbering,\n onClick: editor => {\n toggleNumbering(editor);\n },\n};\n","import { redo } from 'roosterjs-content-model-core';\nimport type { RedoButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Undo\" button on the format ribbon\n */\nexport const redoButton: RibbonButton<RedoButtonStringKey> = {\n key: 'buttonNameRedo',\n unlocalizedText: 'Redo',\n iconName: 'Redo',\n isDisabled: formatState => !formatState.canRedo,\n onClick: editor => {\n redo(editor);\n },\n commandBarProperties: {\n buttonStyles: {\n icon: { paddingBottom: '10px' },\n },\n },\n};\n","import { removeLink } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { RemoveLinkButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Remove link\" button on the format ribbon\n */\nexport const removeLinkButton: RibbonButton<RemoveLinkButtonStringKey> = {\n key: 'buttonNameRemoveLink',\n unlocalizedText: 'Remove link',\n iconName: 'RemoveLink',\n isDisabled: formatState => !formatState.canUnlink,\n onClick: editor => {\n removeLink(editor);\n },\n};\n","import { setDirection } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { RtlButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Right to left\" button on the format ribbon\n */\nexport const rtlButton: RibbonButton<RtlButtonStringKey> = {\n key: 'buttonNameRtl',\n unlocalizedText: 'Right to left',\n iconName: 'BidiRtl',\n onClick: editor => {\n setDirection(editor, 'rtl');\n },\n};\n","import { setHeadingLevel } from 'roosterjs-content-model-api';\nimport type { HeadingButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\nconst keys: HeadingButtonStringKey[] = [\n 'buttonNameNoHeading',\n 'buttonNameHeading1',\n 'buttonNameHeading2',\n 'buttonNameHeading3',\n 'buttonNameHeading4',\n 'buttonNameHeading5',\n 'buttonNameHeading6',\n];\nconst headings: Partial<Record<HeadingButtonStringKey, string>> = {\n buttonNameHeading1: 'Heading 1',\n buttonNameHeading2: 'Heading 2',\n buttonNameHeading3: 'Heading 3',\n buttonNameHeading4: 'Heading 4',\n buttonNameHeading5: 'Heading 5',\n buttonNameHeading6: 'Heading 6',\n '-': '-',\n buttonNameNoHeading: 'No heading',\n};\n\n/**\n * \"Set header level\" button on the format ribbon\n */\nexport const setHeadingLevelButton: RibbonButton<HeadingButtonStringKey> = {\n key: 'buttonNameHeading',\n unlocalizedText: 'Heading',\n iconName: 'Header1',\n dropDownMenu: {\n items: headings,\n getSelectedItemKey: formatState => {\n return (formatState.headingLevel ?? 0) > 0\n ? 'heading' + formatState.headingLevel\n : 'noHeading';\n },\n },\n onClick: (editor, key) => {\n const headingLevel = keys.indexOf(key);\n\n setHeadingLevel(editor, headingLevel as 0 | 1 | 2 | 3 | 4 | 5 | 6);\n },\n};\n","import { toggleStrikethrough } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { StrikethroughButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Strikethrough\" button on the format ribbon\n */\nexport const strikethroughButton: RibbonButton<StrikethroughButtonStringKey> = {\n key: 'buttonNameStrikethrough',\n unlocalizedText: 'Strikethrough',\n iconName: 'Strikethrough',\n isChecked: formatState => !!formatState.isStrikeThrough,\n onClick: editor => {\n toggleStrikethrough(editor);\n },\n};\n","import { toggleSubscript } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { SubscriptButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Subscript\" button on the format ribbon\n */\nexport const subscriptButton: RibbonButton<SubscriptButtonStringKey> = {\n key: 'buttonNameSubscript',\n unlocalizedText: 'Subscript',\n iconName: 'Subscript',\n isChecked: formatState => !!formatState.isSubscript,\n onClick: editor => {\n toggleSubscript(editor);\n },\n};\n","import { toggleSuperscript } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { SuperscriptButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Superscript\" button on the format ribbon\n */\nexport const superscriptButton: RibbonButton<SuperscriptButtonStringKey> = {\n key: 'buttonNameSuperscript',\n unlocalizedText: 'Superscript',\n iconName: 'Superscript',\n isChecked: formatState => !!formatState.isSuperscript,\n onClick: editor => {\n toggleSuperscript(editor);\n },\n};\n","import { renderColorPicker } from '../../colorPicker/component/renderColorPicker';\nimport { setTextColor } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { TextColorButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport {\n getTextColorValue,\n TextColorDropDownItems,\n TextColors,\n} from '../../colorPicker/utils/textColors';\nimport {\n getColorPickerContainerClassName,\n getColorPickerItemClassName,\n} from '../../colorPicker/utils/getClassNamesForColorPicker';\n\nconst Key: 'buttonNameTextColor' = 'buttonNameTextColor';\n\n/**\n * \"Text color\" button on the format ribbon\n */\nexport const textColorButton: RibbonButton<TextColorButtonStringKey> = {\n dropDownMenu: {\n items: TextColorDropDownItems,\n itemClassName: getColorPickerItemClassName(),\n allowLivePreview: true,\n itemRender: (item, onClick) => renderColorPicker(item, TextColors, onClick),\n commandBarSubMenuProperties: {\n className: getColorPickerContainerClassName(),\n },\n },\n key: Key,\n unlocalizedText: 'Text color',\n iconName: 'FontColor',\n onClick: (editor, key) => {\n // This check will always be true, add it here just to satisfy compiler\n if (key != 'buttonNameTextColor') {\n setTextColor(editor, getTextColorValue(key).lightModeColor);\n }\n },\n};\n","import { toggleUnderline } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { UnderlineButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Underline\" button on the format ribbon\n */\nexport const underlineButton: RibbonButton<UnderlineButtonStringKey> = {\n key: 'buttonNameUnderline',\n unlocalizedText: 'Underline',\n iconName: 'Underline',\n isChecked: formatState => !!formatState.isUnderline,\n onClick: editor => {\n toggleUnderline(editor);\n },\n};\n","import { undo } from 'roosterjs-content-model-core';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { UndoButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * \"Undo\" button on the format ribbon\n */\nexport const undoButton: RibbonButton<UndoButtonStringKey> = {\n key: 'buttonNameUndo',\n unlocalizedText: 'Undo',\n iconName: 'undo',\n isDisabled: formatState => !formatState.canUndo,\n onClick: editor => {\n undo(editor);\n },\n commandBarProperties: {\n buttonStyles: {\n icon: { paddingBottom: '10px' },\n },\n },\n};\n","import * as React from 'react';\nimport { CommandBar } from '@fluentui/react/lib/CommandBar';\nimport { FocusZoneDirection } from '@fluentui/react/lib/FocusZone';\nimport { getLocalizedString } from '../../common/utils/getLocalizedString';\nimport { getObjectKeys } from 'roosterjs-content-model-dom';\nimport { initializeIcons } from '@fluentui/font-icons-mdl2';\nimport { mergeStyles } from '@fluentui/react/lib/Styling';\nimport { moreCommands } from '../buttons/moreCommands';\nimport type {\n IContextualMenuItem,\n IContextualMenuItemProps,\n} from '@fluentui/react/lib/ContextualMenu';\nimport type { IRenderFunction } from '@fluentui/react/lib/Utilities';\nimport type { ICommandBarItemProps } from '@fluentui/react/lib/CommandBar';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { ContentModelFormatState } from 'roosterjs-content-model-types';\nimport type { RibbonProps } from '../type/RibbonProps';\n\nconst ribbonClassName = mergeStyles({\n '& .ms-CommandBar': {\n padding: '0px',\n },\n});\n\nconst rtlIcon = mergeStyles({\n transform: 'scaleX(-1)',\n});\n\nlet iconInitialized = false;\n\n/**\n * The format ribbon component of roosterjs-react\n * @param props Properties of format ribbon component\n * @returns The format ribbon component\n */\nexport function Ribbon<T extends string>(props: RibbonProps<T>) {\n const { plugin, buttons, strings, dir } = props;\n const [formatState, setFormatState] = React.useState<ContentModelFormatState | null>(null);\n const isRtl = dir == 'rtl';\n\n if (!iconInitialized) {\n iconInitialized = true;\n initializeIcons();\n }\n\n const onClick = React.useCallback(\n (_, item?: IContextualMenuItem) => {\n if (item) {\n plugin?.onButtonClick<string>(item.data, item.key, strings);\n }\n },\n [plugin, strings]\n );\n\n const onHover = React.useCallback(\n (button: RibbonButton<T>, key: string) => {\n plugin.startLivePreview<T>(button, key as T, strings);\n },\n [plugin, strings]\n );\n\n const onDismiss = React.useCallback(() => {\n plugin.stopLivePreview();\n }, [plugin]);\n\n const flipIcon = React.useCallback(\n (\n props?: IContextualMenuItemProps,\n defaultRender?: (props?: IContextualMenuItemProps) => JSX.Element | null\n ): JSX.Element | null => {\n if (!defaultRender) {\n return null;\n }\n return <span className={rtlIcon}>{defaultRender(props)}</span>;\n },\n []\n );\n\n const commandBarItems = React.useMemo((): ICommandBarItemProps[] => {\n return buttons.map(\n (button): ICommandBarItemProps => {\n const selectedItem =\n formatState && button.dropDownMenu?.getSelectedItemKey?.(formatState);\n const dropDownMenu = button.dropDownMenu;\n\n const result: ICommandBarItemProps = {\n key: button.key,\n data: button,\n iconProps: {\n iconName: button.iconName,\n },\n onRenderIcon: isRtl && button.flipWhenRtl ? flipIcon : undefined,\n iconOnly: true,\n text: getLocalizedString(strings, button.key, button.unlocalizedText),\n ariaLabel: getLocalizedString(strings, button.key, button.unlocalizedText),\n canCheck: true,\n checked: (formatState && button.isChecked?.(formatState)) || false,\n disabled: (formatState && button.isDisabled?.(formatState)) || false,\n ...(button.commandBarProperties || {}),\n };\n\n const contextMenuItemRenderer: IRenderFunction<IContextualMenuItem> = (\n props,\n defaultRenderer\n ) =>\n props && defaultRenderer ? (\n <div onMouseOver={e => onHover(button, props.key)}>\n {defaultRenderer(props)}\n </div>\n ) : null;\n\n if (dropDownMenu) {\n result.subMenuProps = {\n shouldFocusOnMount: true,\n focusZoneProps: { direction: FocusZoneDirection.bidirectional },\n onMenuDismissed: onDismiss,\n onItemClick: onClick,\n onRenderContextualMenuItem: dropDownMenu.allowLivePreview\n ? contextMenuItemRenderer\n : undefined,\n items: getObjectKeys(dropDownMenu.items).map(key => ({\n key: key,\n text: getLocalizedString<string, string>(\n strings,\n key,\n dropDownMenu.items[key]\n ),\n data: button,\n canCheck: !!dropDownMenu.getSelectedItemKey,\n checked: selectedItem == key || false,\n className: dropDownMenu.itemClassName,\n onRender: dropDownMenu.itemRender\n ? item => dropDownMenu.itemRender!(item, onClick)\n : undefined,\n })),\n ...(dropDownMenu.commandBarSubMenuProperties || {}),\n };\n } else {\n result.onClick = onClick;\n }\n\n return result;\n }\n );\n }, [buttons, formatState, isRtl, strings, onClick, onDismiss, onHover]);\n\n React.useEffect(() => {\n const disposer = plugin?.registerFormatChangedCallback(setFormatState);\n\n return () => {\n disposer?.();\n };\n }, [plugin]);\n\n const moreCommandsBtn = moreCommands as RibbonButton<string>;\n\n return (\n <CommandBar\n items={commandBarItems}\n {...props}\n className={ribbonClassName + ' ' + (props?.className || '')}\n overflowButtonProps={{\n ariaLabel: getLocalizedString<string, string>(\n strings,\n moreCommandsBtn.key,\n moreCommandsBtn.unlocalizedText\n ),\n ...props?.overflowButtonProps,\n }}\n />\n );\n}\n","export { RibbonPlugin } from './type/RibbonPlugin';\nexport { RibbonButton } from './type/RibbonButton';\nexport { RibbonButtonDropDown } from './type/RibbonButtonDropDown';\nexport { RibbonProps } from './type/RibbonProps';\nexport {\n BoldButtonStringKey,\n ItalicButtonStringKey,\n UnderlineButtonStringKey,\n FontButtonStringKey,\n FontSizeButtonStringKey,\n IncreaseFontSizeButtonStringKey,\n DecreaseFontSizeButtonStringKey,\n TextColorButtonStringKey,\n BackgroundColorButtonStringKey,\n BulletedListButtonStringKey,\n NumberedListButtonStringKey,\n MoreCommandsButtonStringKey,\n DecreaseIndentButtonStringKey,\n IncreaseIndentButtonStringKey,\n QuoteButtonStringKey,\n AlignLeftButtonStringKey,\n AlignCenterButtonStringKey,\n AlignRightButtonStringKey,\n AlignJustifyButtonStringKey,\n InsertLinkButtonStringKey,\n RemoveLinkButtonStringKey,\n InsertTableButtonStringKey,\n InsertImageButtonStringKey,\n SuperscriptButtonStringKey,\n SubscriptButtonStringKey,\n StrikethroughButtonStringKey,\n HeadingButtonStringKey,\n HeaderButtonStringKey,\n CodeButtonStringKey,\n LtrButtonStringKey,\n RtlButtonStringKey,\n UndoButtonStringKey,\n RedoButtonStringKey,\n ClearFormatButtonStringKey,\n AllButtonStringKeys,\n CellShadeButtonStringKey,\n} from './type/RibbonButtonStringKeys';\n\nexport { Ribbon } from './component/Ribbon';\nexport { createRibbonPlugin } from './plugin/createRibbonPlugin';\nexport { redoButton } from './buttons/redoButton';\nexport { undoButton } from './buttons/undoButton';\nexport { alignCenterButton } from './buttons/alignCenterButton';\nexport { alignJustifyButton } from './buttons/alignJustifyButton';\nexport { alignLeftButton } from './buttons/alignLeftButton';\nexport { alignRightButton } from './buttons/alignRightButton';\nexport { backgroundColorButton } from './buttons/backgroundColorButton';\nexport { blockQuoteButton } from './buttons/blockQuoteButton';\nexport { boldButton } from './buttons/boldButton';\nexport { bulletedListButton } from './buttons/bulletedListButton';\nexport { clearFormatButton } from './buttons/clearFormatButton';\nexport { codeButton } from './buttons/codeButton';\nexport { decreaseFontSizeButton } from './buttons/decreaseFontSizeButton';\nexport { decreaseIndentButton } from './buttons/decreaseIndentButton';\nexport { fontButton } from './buttons/fontButton';\nexport { fontSizeButton } from './buttons/fontSizeButton';\nexport { increaseFontSizeButton } from './buttons/increaseFontSizeButton';\nexport { increaseIndentButton } from './buttons/increaseIndentButton';\nexport { insertImageButton } from './buttons/insertImageButton';\nexport { insertLinkButton } from './buttons/insertLinkButton';\nexport { insertTableButton } from './buttons/insertTableButton';\nexport { italicButton } from './buttons/italicButton';\nexport { ltrButton } from './buttons/ltrButton';\nexport { numberedListButton } from './buttons/numberedListButton';\nexport { removeLinkButton } from './buttons/removeLinkButton';\nexport { rtlButton } from './buttons/rtlButton';\nexport { setHeadingLevelButton } from './buttons/setHeadingLevelButton';\nexport { strikethroughButton } from './buttons/strikethroughButton';\nexport { subscriptButton } from './buttons/subscriptButton';\nexport { superscriptButton } from './buttons/superscriptButton';\nexport { textColorButton } from './buttons/textColorButton';\nexport { underlineButton } from './buttons/underlineButton';\n","import { getFormatState } from 'roosterjs-content-model-api';\nimport { getObjectKeys } from 'roosterjs-content-model-dom';\nimport type { ContentModelFormatState, IEditor, PluginEvent } from 'roosterjs-content-model-types';\nimport type { LocalizedStrings } from '../../common/type/LocalizedStrings';\nimport type { UIUtilities } from '../../common/type/UIUtilities';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { RibbonPlugin } from '../type/RibbonPlugin';\n\nclass RibbonPluginImpl implements RibbonPlugin {\n private editor: IEditor | null = null;\n private onFormatChanged: ((formatState: ContentModelFormatState) => void) | null = null;\n private timer = 0;\n private formatState: ContentModelFormatState | null = null;\n private uiUtilities: UIUtilities | null = null;\n\n /**\n * Construct a new instance of RibbonPlugin object\n * @param delayUpdateTime The time to wait before refresh the button when user do some editing operation in editor\n */\n constructor(private delayUpdateTime: number = 200) {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'Ribbon';\n }\n\n /**\n * Initialize this plugin\n * @param editor The editor instance\n */\n initialize(editor: IEditor) {\n this.editor = editor;\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.editor = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n switch (event.eventType) {\n case 'editorReady':\n case 'contentChanged':\n case 'zoomChanged':\n this.updateFormat();\n break;\n\n case 'keyDown':\n case 'mouseUp':\n this.delayUpdate();\n break;\n }\n }\n\n /**\n * Set the UI utilities objects to this plugin to help render additional UI elements\n * @param uiUtilities The UI utilities object to set\n */\n setUIUtilities(uiUtilities: UIUtilities) {\n this.uiUtilities = uiUtilities;\n }\n\n /**\n * Register a callback to be invoked when format state of editor is changed, returns a disposer function.\n */\n registerFormatChangedCallback(callback: (formatState: ContentModelFormatState) => void) {\n this.onFormatChanged = callback;\n\n return () => {\n this.onFormatChanged = null;\n };\n }\n\n /**\n * When user clicks on a button, call this method to let the plugin to handle this click event\n * @param button The button that is clicked\n * @param key Key of child menu item that is clicked if any\n * @param strings The localized string map for this button\n */\n onButtonClick<T extends string>(\n button: RibbonButton<T>,\n key: T,\n strings?: LocalizedStrings<T>\n ) {\n if (this.editor && this.uiUtilities) {\n this.editor.stopShadowEdit();\n\n button.onClick(this.editor, key, strings, this.uiUtilities);\n\n if (button.isChecked || button.isDisabled || button.dropDownMenu?.getSelectedItemKey) {\n this.updateFormat();\n }\n }\n }\n\n /**\n * Enter live preview state (shadow edit) of editor if there is a non-collapsed selection\n * @param button The button that triggered this action\n * @param key Key of the hovered button sub item\n * @param strings The localized string map for this button\n */\n startLivePreview<T extends string>(\n button: RibbonButton<T>,\n key: T,\n strings?: LocalizedStrings<T>\n ) {\n if (this.editor && this.uiUtilities) {\n const isInShadowEdit = this.editor.isInShadowEdit();\n\n // If editor is already in shadow edit, no need to check again.\n // And the check result may be incorrect because the content is changed from last shadow edit and the cached selection path won't apply\n const range = !isInShadowEdit && this.editor.getDOMSelection();\n\n if (isInShadowEdit || (range && (range.type != 'range' || !range.range.collapsed))) {\n this.editor.startShadowEdit();\n button.onClick(this.editor, key, strings, this.uiUtilities);\n }\n }\n }\n\n /**\n * Leave live preview state (shadow edit) of editor\n */\n stopLivePreview() {\n this.editor?.stopShadowEdit();\n }\n\n private delayUpdate() {\n const window = this.editor?.getDocument().defaultView;\n\n if (!window) {\n return;\n }\n\n if (this.timer) {\n window.clearTimeout(this.timer);\n }\n\n this.timer = window.setTimeout(() => {\n this.timer = 0;\n this.updateFormat?.();\n }, this.delayUpdateTime);\n }\n\n private updateFormat() {\n if (this.editor && this.onFormatChanged) {\n const newFormatState = getFormatState(this.editor);\n const newFormatKeys = getObjectKeys(newFormatState);\n\n if (\n !this.formatState ||\n newFormatKeys.length != getObjectKeys(this.formatState).length ||\n getObjectKeys(newFormatState).some(\n key => newFormatState[key] != this.formatState?.[key]\n )\n ) {\n this.formatState = newFormatState;\n this.onFormatChanged(newFormatState);\n }\n }\n }\n}\n\n/**\n * Create a new instance of RibbonPlugin object\n * @param delayUpdateTime The time to wait before refresh the button when user do some editing operation in editor\n */\nexport function createRibbonPlugin(delayUpdateTime?: number): RibbonPlugin {\n return new RibbonPluginImpl(delayUpdateTime);\n}\n","import * as React from 'react';\nimport { createUIUtilities } from '../../common/index';\nimport { divProperties, getNativeProps } from '@fluentui/react/lib/Utilities';\nimport { Editor } from 'roosterjs-content-model-core';\nimport { useTheme } from '@fluentui/react/lib/Theme';\nimport type { RoosterProps } from '../type/RoosterProps';\nimport type { ReactEditorPlugin } from '../../common/index';\nimport type { EditorPlugin, IEditor, EditorOptions } from 'roosterjs-content-model-types';\n\n/**\n * Main component of react wrapper for roosterjs\n * @param props Properties of this component\n * @returns The react component\n */\nexport function Rooster(props: RoosterProps) {\n const editorDiv = React.useRef<HTMLDivElement>(null);\n const editor = React.useRef<IEditor | null>(null);\n const theme = useTheme();\n\n const { focusOnInit, editorCreator, inDarkMode, plugins } = props;\n\n React.useEffect(() => {\n if (plugins && editorDiv.current) {\n const uiUtilities = createUIUtilities(editorDiv.current, theme);\n\n plugins.forEach(plugin => {\n if (isReactEditorPlugin(plugin)) {\n plugin.setUIUtilities(uiUtilities);\n }\n });\n }\n }, [theme, editorCreator]);\n\n React.useEffect(() => {\n if (editorDiv.current) {\n editor.current = (editorCreator || defaultEditorCreator)(editorDiv.current, props);\n }\n\n if (focusOnInit) {\n editor.current?.focus();\n }\n\n return () => {\n if (editor.current) {\n editor.current.dispose();\n editor.current = null;\n }\n };\n }, [editorCreator]);\n\n React.useEffect(() => {\n editor.current?.setDarkModeState(!!inDarkMode);\n }, [inDarkMode]);\n\n const divProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(props, divProperties);\n return (\n <div\n ref={editorDiv}\n tabIndex={0}\n role=\"textbox\"\n aria-multiline=\"true\"\n {...(divProps || {})}></div>\n );\n}\n\nfunction defaultEditorCreator(div: HTMLDivElement, options: EditorOptions) {\n return new Editor(div, options);\n}\n\nfunction isReactEditorPlugin(plugin: EditorPlugin): plugin is ReactEditorPlugin {\n return !!(plugin as ReactEditorPlugin)?.setUIUtilities;\n}\n","export { RoosterProps } from './type/RoosterProps';\nexport { Rooster } from './component/Rooster';\n","module.exports = FluentUIReact;","module.exports = React;","module.exports = ReactDOM;","module.exports = roosterjs;","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./packages/roosterjs-react/lib/index.ts\");\n",""],"names":[],"sourceRoot":""}
|