{"version":3,"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBS,IAAI,sBAAsB;AAAA,CAIzB,MAAM;AAEN,sBAAoB,IAAI,CAAC,SAAS,eAAe;AAChD,aAAQ,OAAO,YAAY;AAC1B,UAAG,oBAAoB,EAAE,YAAY,GAAG,KAAK,CAAC,oBAAoB,EAAE,SAAS,GAAG,GAAG;AAClF,eAAO,eAAe,SAAS,KAAK,EAAE,YAAY,MAAM,KAAK,WAAW,GAAG,EAAG;AAAA,MAC9E;AAAA,IACD;AAAA,EACZ;AACA;CAGU,MAAM;AACN,sBAAoB,IAAI,CAAC,KAAK,SAAU,OAAO,UAAU,eAAe,KAAK,KAAK,IAAI;AAChG;AAGA,IAAI,sBAAsB,WAAW,WAAW;AAGhD,oBAAoB,EAAE,qBAAqB;AAAA,EACzC,gBAAgB;AAAA;AAAA,IAAsB;AAAA;AAAA,EACtC,uBAAuB;AAAA;AAAA,IAAsB;AAAA;AAAA,EAC7C,4BAA4B;AAAA;AAAA,IAAsB;AAAA;AAAA,EAClD,sBAAsB;AAAA;AAAA,IAAsB;AAAA;AAAA,EAC5C,2BAA2B;AAAA;AAAA,IAAsB;AAAA;AAAA,EACjD,iBAAiB;AAAA;AAAA,IAAsB;AAAA;AAAA,EACvC,gBAAgB;AAAA;AAAA,IAAsB;AAAA;AAAA,EACtC,qBAAqB;AAAA;AAAA,IAAsB;AAAA;AAAA,EAC3C,aAAa;AAAA;AAAA,IAAsB;AAAA;AAAA,EACnC,eAAe;AAAA;AAAA,IAAsB;AAAA;AAAA,EACrC,WAAW;AAAA;AAAA,IAAsB;AAAA;AAAA,EACjC,aAAa;AAAA;AAAA,IAAsB;AAAA;AAAA,EACnC,qBAAqB;AAAA;AAAA,IAAsB;AAAA;AAAA,EAC3C,WAAW;AAAA;AAAA,IAAsB;AAAA;AAAA,EACjC,qBAAqB;AAAA;AAAA,IAAsB;AAAA;AAAA,EAC3C,qBAAqB;AAAA;AAAA,IAAsB;AAAA;AAAA,EAC3C,KAAK;AAAA;AAAA,IAAsB;AAAA;AAAA,EAC3B,uBAAuB;AAAA;AAAA,IAAsB;AAAA;AAAA,EAC7C,eAAe;AAAA;AAAA,IAAsB;AAAA;AAAA,EACrC,WAAW;AAAA;AAAA,IAAsB;AAAA;AAAA,EACjC,mBAAmB;AAAA;AAAA,IAAsB;AAAA;AAAA,EACzC,gBAAgB;AAAA;AAAA,IAAsB;AAAA;AAAA,EACtC,eAAe;AAAA;AAAA,IAAsB;AAAA;AAAA,EACrC,6BAA6B;AAAA;AAAA,IAAsB;AAAA;AAAA,EACnD,WAAW;AAAA;AAAA,IAAsB;AAAA;AAAA,EACjC,6BAA6B;AAAA;AAAA,IAAsB;AAAA;AAAA,EACnD,MAAM;AAAA;AAAA,IAAsB;AAAA;AAAA,EAC5B,gBAAgB;AAAA;AAAA,IAAsB;AAAA;AAAA,EACtC,UAAU;AAAA;AAAA,IAAsB;AAAA;AAAA,EAChC,OAAO;AAAA;AAAA,IAAsB;AAAA;AAAA,EAC7B,wBAAwB;AAAA;AAAA,IAAsB;AAAA;AAAA,EAC9C,WAAW;AAAA;AAAA,IAAsB;AAAA;AAAA,EACjC,aAAa;AAAA;AAAA,IAAsB;AAAA;AAAA,EACnC,oBAAoB;AAAA;AAAA,IAAsB;AAAA;AAAA,EAC1C,uBAAuB;AAAA;AAAA,IAAsB;AAAA;AAAA,EAC7C,oBAAoB;AAAA;AAAA,IAAsB;AAAA;AAAA,EAC1C,cAAc;AAAA;AAAA,IAAsB;AAAA;AAAA,EACpC,WAAW;AAAA;AAAA,IAAsB;AAAA;AAAA,EACjC,eAAe;AAAA;AAAA,IAAsB;AAAA;AAAA,EACrC,kBAAkB;AAAA;AAAA,IAAsB;AAAA;AAAA,EACxC,oBAAoB;AAAA;AAAA,IAAsB;AAAA;AAAA,EAC1C,QAAQ;AAAA;AAAA,IAAsB;AAAA;AAAA,EAC9B,SAAS;AAAA;AAAA,IAAsB;AAAA;AACjC,CAAC;AAGD,MAAM,WAAW,OAAO,YAAY,YAAY,UAAU,OAAO,sBAAsB,CAAC,QAAQ,SAAS,MAAM,EAAE,QAAQ,SAAS,YAAY,QAAQ,QAAQ,QAAQ,SAAS;AAC/K,MAAM,kBAAkB,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACzC,MAAM,uBAAuB,CAAC,MAAO,GAAG,GAAG,MAAO,GAAG,CAAC;AACtD,MAAM,0BAA0B;AAChC,MAAM,cAAc;AAGpB,MAAM,sBAAsB;AAAA,EAC1B,KAAK;AAAA,EACL,SAAS;AAAA,EACT,OAAO;AAAA,EACP,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,YAAY;AAAA,EACZ,QAAQ;AACV;AACA,MAAM,iBAAiB;AAAA,EACrB,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,gBAAgB;AAClB;AACA,MAAM,yBAAyB;AAC/B,MAAM,uBAAuB;AAAA,EAC3B,SAAS;AAAA,EACT,MAAM;AAAA,EACN,UAAU;AAAA,EACV,WAAW;AAAA,EACX,OAAO;AAAA,EACP,KAAK;AACP;AACA,MAAM,6BAA6B;AAAA,EACjC,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,WAAW;AAAA,EACX,eAAe;AAAA,EACf,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,yBAAyB;AAAA,EACzB,qBAAqB;AAAA,EACrB,gBAAgB;AAAA,EAChB,oBAAoB;AACtB;AACA,MAAM,iBAAiB;AAAA,EACrB,OAAO;AAAA,EACP,iBAAiB;AAAA,EACjB,MAAM;AAAA,EACN,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,EACxB,UAAU;AAAA,EACV,oBAAoB;AACtB;AACA,MAAM,oBAAoB;AAAA,EACxB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,yBAAyB;AAAA,EACzB,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,kBAAkB;AACpB;AACA,MAAM,iBAAiB;AAAA,EACrB,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,YAAY;AACd;AACA,MAAM,iBAAiB;AAAA,EACrB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,UAAU;AAAA,EACV,WAAW;AAAA,EACX,WAAW;AAAA,EACX,UAAU;AAAA,EACV,WAAW;AAAA,EACX,OAAO;AAAA,EACP,OAAO;AAAA,EACP,KAAK;AAAA,EACL,OAAO;AAAA,EACP,gBAAgB;AAAA,EAChB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,QAAQ;AACV;AAsCA,MAAM,4BAA4B;AAAA,EAChC,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,WAAW;AACb;AA4BA,MAAM,iBAAiB;AAAA,EACrB,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AACT;AACA,MAAM,sBAAsB;AAAA,EAC1B,MAAM;AAAA,EACN,QAAQ;AACV;AACA,MAAM,MAAM;AAAA,EACV,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,eAAe;AAAA,EACf,SAAS;AAAA,EACT,oBAAoB;AAAA,EACpB,aAAa;AAAA,EACb,WAAW;AAAA,EACX,MAAM;AAAA,EACN,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,UAAU;AAAA,EACV,UAAU;AAAA,EACV,WAAW;AAAA,EACX,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,SAAS;AAAA,EACT,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,sBAAsB;AAAA,EACtB,aAAa;AAAA,EACb,UAAU;AAAA,EACV,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,UAAU;AAAA,EACV,UAAU;AAAA,EACV,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,4BAA4B;AAAA,EAC5B,cAAc;AAAA,EACd,uBAAuB;AAAA,EACvB,qBAAqB;AAAA,EACrB,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,eAAe;AAAA,EACf,eAAe;AAAA,EACf,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,yBAAyB;AAAA,EACzB,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,WAAW;AAAA,EACX,uBAAuB;AAAA,EACvB,qBAAqB;AAAA,EACrB,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,uBAAuB;AAAA,EACvB,4BAA4B;AAAA,EAC5B,mBAAmB;AAAA,EACnB,yBAAyB;AAAA,EACzB,8BAA8B;AAAA,EAC9B,yBAAyB;AAAA,EACzB,6BAA6B;AAAA,EAC7B,0BAA0B;AAAA,EAC1B,eAAe;AAAA,EACf,sBAAsB;AAAA,EACtB,oBAAoB;AACtB;AACA,MAAM,oBAAoB;AAAA,EACxB,eAAe;AAAA,EACf,oBAAoB;AACtB;AACA,IAAI,YAAY,eAAe;AAC/B,SAAS,kBAAkB,OAAO;AAChC,MAAI,OAAO,UAAU,KAAK,GAAG;AAC3B,gBAAY;AAAA,EACb;AACH;AACA,SAAS,oBAAoB;AAC3B,SAAO;AACT;AACA,SAAS,KAAK,KAAK;AACjB,MAAI,aAAa,eAAe,OAAO;AACrC,YAAQ,IAAI,SAAS,GAAG,EAAE;AAAA,EAC3B;AACH;AACA,SAAS,KAAK,KAAK;AACjB,MAAI,aAAa,eAAe,UAAU;AACxC,YAAQ,IAAI,YAAY,GAAG,EAAE;AAAA,EAC9B;AACH;AACA,SAAS,YAAY,KAAK;AACxB,QAAM,IAAI,MAAM,GAAG;AACrB;AACA,SAAS,OAAO,MAAM,KAAK;AACzB,MAAI,CAAC,MAAM;AACT,gBAAY,GAAG;AAAA,EAChB;AACH;AACA,SAAS,iBAAiB,KAAK;AAC7B,UAAQ,2BAAK,UAAQ;AAAA,IACnB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACV;AACH;AACA,SAAS,uBAAuB,KAAK,UAAU,MAAM,UAAU,MAAM;AACnE,MAAI,CAAC,KAAK;AACR,WAAO;AAAA,EACR;AACD,MAAI;AACF,QAAI,WAAW,OAAO,QAAQ,UAAU;AACtC,UAAI,QAAQ,sBAAsB,IAAI,WAAW,MAAM,GAAG;AACxD,cAAM,OAAO,IAAI,MAAM,KAAK;AAC5B,aAAI,6BAAM,WAAU,GAAG;AACrB,gBAAM,UAAU,GAAG;AAAA,QACpB;AAAA,MACF;AACD,UAAI,QAAQ,oBAAoB;AAC9B,YAAI;AACF,gBAAM,mBAAmB,GAAG;AAAA,QAC7B,QAAO;AAAA,QAAE;AAAA,MACX;AAAA,IACF;AACD,UAAM,cAAc,UAAU,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,IAAI,GAAG;AACjE,QAAI,iBAAiB,WAAW,GAAG;AACjC,aAAO;AAAA,IACR;AAAA,EACF,QAAO;AAAA,EAAE;AACV,SAAO;AACT;AACA,SAAS,OAAO,KAAK,MAAM,OAAO,kBAAkB,OAAO;AACzD,SAAO,eAAe,KAAK,MAAM;AAAA,IAC/B;AAAA,IACA,YAAY,CAAC;AAAA,IACb,cAAc;AAAA,IACd,UAAU;AAAA,EACd,CAAG;AACD,SAAO;AACT;AACA,MAAM,gBAAgB,SAAS,uBAAuB;AACpD,WAASA,eAAc,SAAS,MAAM;AACpC,SAAK,UAAU;AACf,SAAK,OAAO;AAAA,EACb;AACD,EAAAA,eAAc,YAAY,IAAI;AAC9B,EAAAA,eAAc,cAAcA;AAC5B,SAAOA;AACT;AACA,MAAM,0BAA0B,cAAc;AAAA,EAC5C,YAAY,KAAK,MAAM;AACrB,UAAM,KAAK,mBAAmB;AAC9B,SAAK,OAAO;AAAA,EACb;AACH;AACA,MAAM,8BAA8B,cAAc;AAAA,EAChD,YAAY,KAAK,SAAS;AACxB,UAAM,KAAK,uBAAuB;AAClC,SAAK,UAAU;AAAA,EAChB;AACH;AACA,MAAM,4BAA4B,cAAc;AAAA,EAC9C,YAAY,KAAK;AACf,UAAM,KAAK,qBAAqB;AAAA,EACjC;AACH;AACA,MAAM,4BAA4B,cAAc;AAAA,EAC9C,YAAY,KAAK;AACf,UAAM,KAAK,qBAAqB;AAAA,EACjC;AACH;AACA,MAAM,oCAAoC,cAAc;AAAA,EACtD,YAAY,KAAK,QAAQ;AACvB,UAAM,KAAK,6BAA6B;AACxC,SAAK,SAAS;AAAA,EACf;AACH;AACA,MAAM,oBAAoB,cAAc;AAAA,EACtC,YAAY,KAAK;AACf,UAAM,KAAK,aAAa;AAAA,EACzB;AACH;AACA,MAAM,uBAAuB,cAAc;AAAA,EACzC,YAAY,KAAK;AACf,UAAM,KAAK,gBAAgB;AAAA,EAC5B;AACH;AACA,SAAS,cAAc,OAAO;AAC5B,MAAI,OAAO,UAAU,aAAY,+BAAO,YAAW,QAAW;AAC5D,gBAAY,oCAAoC;AAAA,EACjD;AACD,QAAM,SAAS,MAAM;AACrB,QAAM,qBAAqB;AAC3B,MAAI,SAAS,oBAAoB;AAC/B,WAAO,OAAO,aAAa,MAAM,MAAM,KAAK;AAAA,EAC7C;AACD,QAAM,SAAS;AACf,WAAS,IAAI,GAAG,IAAI,QAAQ,KAAK,oBAAoB;AACnD,UAAM,WAAW,KAAK,IAAI,IAAI,oBAAoB,MAAM;AACxD,UAAM,QAAQ,MAAM,SAAS,GAAG,QAAQ;AACxC,WAAO,KAAK,OAAO,aAAa,MAAM,MAAM,KAAK,CAAC;AAAA,EACnD;AACD,SAAO,OAAO,KAAK,EAAE;AACvB;AACA,SAAS,cAAc,KAAK;AAC1B,MAAI,OAAO,QAAQ,UAAU;AAC3B,gBAAY,oCAAoC;AAAA,EACjD;AACD,QAAM,SAAS,IAAI;AACnB,QAAM,QAAQ,IAAI,WAAW,MAAM;AACnC,WAAS,IAAI,GAAG,IAAI,QAAQ,EAAE,GAAG;AAC/B,UAAM,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI;AAAA,EAChC;AACD,SAAO;AACT;AACA,SAAS,SAAS,OAAO;AACvB,SAAO,OAAO,aAAa,SAAS,KAAK,KAAM,SAAS,KAAK,KAAM,SAAS,IAAI,KAAM,QAAQ,GAAI;AACpG;AAIA,SAAS,cAAc,KAAK;AAC1B,QAAM,MAAM,uBAAO,OAAO,IAAI;AAC9B,aAAW,CAAC,KAAK,KAAK,KAAK,KAAK;AAC9B,QAAI,GAAG,IAAI;AAAA,EACZ;AACD,SAAO;AACT;AACA,SAAS,iBAAiB;AACxB,QAAM,UAAU,IAAI,WAAW,CAAC;AAChC,UAAQ,CAAC,IAAI;AACb,QAAM,SAAS,IAAI,YAAY,QAAQ,QAAQ,GAAG,CAAC;AACnD,SAAO,OAAO,CAAC,MAAM;AACvB;AACA,SAAS,kBAAkB;AACzB,MAAI;AACF,QAAI,SAAS,EAAE;AACf,WAAO;AAAA,EACX,QAAU;AACN,WAAO;AAAA,EACR;AACH;AACA,MAAM,iBAAiB;AAAA,EACrB,WAAW,iBAAiB;AAC1B,WAAO,OAAO,MAAM,kBAAkB,eAAgB;AAAA,EACvD;AAAA,EACD,WAAW,kBAAkB;AAC3B,WAAO,OAAO,MAAM,mBAAmB,gBAAiB;AAAA,EACzD;AAAA,EACD,WAAW,6BAA6B;AACtC,WAAO,OAAO,MAAM,8BAA8B,OAAO,oBAAoB,WAAW;AAAA,EACzF;AAAA,EACD,WAAW,WAAW;AACpB,QAAI,OAAO,cAAc,eAAe,QAAO,uCAAW,cAAa,UAAU;AAC/E,aAAO,OAAO,MAAM,YAAY;AAAA,QAC9B,OAAO,UAAU,SAAS,SAAS,KAAK;AAAA,MAChD,CAAO;AAAA,IACF;AACD,WAAO,OAAO,MAAM,YAAY;AAAA,MAC9B,OAAO;AAAA,IACb,CAAK;AAAA,EACF;AAAA,EACD,WAAW,sBAAsB;;AAC/B,WAAO,OAAO,MAAM,wBAAuB,MAAAC,MAAA,WAAW,QAAX,gBAAAA,IAAgB,aAAhB,wBAAAA,KAA2B,2BAA2B;AAAA,EAClG;AACH;AACA,MAAM,aAAa,MAAM,KAAK,MAAM,GAAG,EAAE,QAAQ,OAAK,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AACrF,MAAM,KAAK;AAAA,EACT,OAAO,aAAa,GAAG,GAAG,GAAG;AAC3B,WAAO,IAAI,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;AAAA,EACzD;AAAA,EACD,OAAO,YAAY,WAAW,QAAQ;AACpC,QAAI;AACJ,QAAI,UAAU,CAAC,GAAG;AAChB,UAAI,UAAU,CAAC,IAAI,GAAG;AACpB,eAAO,OAAO,CAAC;AACf,eAAO,CAAC,IAAI,OAAO,CAAC;AACpB,eAAO,CAAC,IAAI;AAAA,MACb;AACD,aAAO,CAAC,KAAK,UAAU,CAAC;AACxB,aAAO,CAAC,KAAK,UAAU,CAAC;AACxB,UAAI,UAAU,CAAC,IAAI,GAAG;AACpB,eAAO,OAAO,CAAC;AACf,eAAO,CAAC,IAAI,OAAO,CAAC;AACpB,eAAO,CAAC,IAAI;AAAA,MACb;AACD,aAAO,CAAC,KAAK,UAAU,CAAC;AACxB,aAAO,CAAC,KAAK,UAAU,CAAC;AAAA,IAC9B,OAAW;AACL,aAAO,OAAO,CAAC;AACf,aAAO,CAAC,IAAI,OAAO,CAAC;AACpB,aAAO,CAAC,IAAI;AACZ,aAAO,OAAO,CAAC;AACf,aAAO,CAAC,IAAI,OAAO,CAAC;AACpB,aAAO,CAAC,IAAI;AACZ,UAAI,UAAU,CAAC,IAAI,GAAG;AACpB,eAAO,OAAO,CAAC;AACf,eAAO,CAAC,IAAI,OAAO,CAAC;AACpB,eAAO,CAAC,IAAI;AAAA,MACb;AACD,aAAO,CAAC,KAAK,UAAU,CAAC;AACxB,aAAO,CAAC,KAAK,UAAU,CAAC;AACxB,UAAI,UAAU,CAAC,IAAI,GAAG;AACpB,eAAO,OAAO,CAAC;AACf,eAAO,CAAC,IAAI,OAAO,CAAC;AACpB,eAAO,CAAC,IAAI;AAAA,MACb;AACD,aAAO,CAAC,KAAK,UAAU,CAAC;AACxB,aAAO,CAAC,KAAK,UAAU,CAAC;AAAA,IACzB;AACD,WAAO,CAAC,KAAK,UAAU,CAAC;AACxB,WAAO,CAAC,KAAK,UAAU,CAAC;AACxB,WAAO,CAAC,KAAK,UAAU,CAAC;AACxB,WAAO,CAAC,KAAK,UAAU,CAAC;AAAA,EACzB;AAAA,EACD,OAAO,UAAU,IAAI,IAAI;AACvB,WAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;AAAA,EACjN;AAAA,EACD,OAAO,eAAe,GAAG,GAAG;AAC1B,UAAM,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;AAC1C,UAAM,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;AAC1C,WAAO,CAAC,IAAI,EAAE;AAAA,EACf;AAAA,EACD,OAAO,sBAAsB,GAAG,GAAG;AACjC,UAAM,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,UAAM,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AACrE,UAAM,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AACtE,WAAO,CAAC,IAAI,EAAE;AAAA,EACf;AAAA,EACD,OAAO,2BAA2B,GAAG,GAAG;AACtC,UAAM,KAAK,KAAK,eAAe,GAAG,CAAC;AACnC,UAAM,KAAK,KAAK,eAAe,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC;AAC/C,UAAM,KAAK,KAAK,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;AAC9C,UAAM,KAAK,KAAK,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;AAC9C,WAAO,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAAA,EAC/J;AAAA,EACD,OAAO,iBAAiB,GAAG;AACzB,UAAM,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,WAAO,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;AAAA,EACnH;AAAA,EACD,OAAO,8BAA8B,GAAG;AACtC,UAAM,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACzC,UAAM,IAAI,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,UAAU,CAAC;AAClD,UAAM,IAAI,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,UAAU,CAAC;AAClD,UAAM,IAAI,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,UAAU,CAAC;AAClD,UAAM,IAAI,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,UAAU,CAAC;AAClD,UAAM,SAAS,IAAI,KAAK;AACxB,UAAM,SAAS,KAAK,MAAM,IAAI,MAAM,IAAI,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI;AAC/D,UAAM,KAAK,QAAQ,UAAU;AAC7B,UAAM,KAAK,QAAQ,UAAU;AAC7B,WAAO,CAAC,KAAK,KAAK,EAAE,GAAG,KAAK,KAAK,EAAE,CAAC;AAAA,EACrC;AAAA,EACD,OAAO,cAAc,MAAM;AACzB,UAAM,IAAI,KAAK,MAAM,CAAC;AACtB,QAAI,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG;AACrB,QAAE,CAAC,IAAI,KAAK,CAAC;AACb,QAAE,CAAC,IAAI,KAAK,CAAC;AAAA,IACd;AACD,QAAI,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG;AACrB,QAAE,CAAC,IAAI,KAAK,CAAC;AACb,QAAE,CAAC,IAAI,KAAK,CAAC;AAAA,IACd;AACD,WAAO;AAAA,EACR;AAAA,EACD,OAAO,UAAU,OAAO,OAAO;AAC7B,UAAM,OAAO,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAChF,UAAM,QAAQ,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACjF,QAAI,OAAO,OAAO;AAChB,aAAO;AAAA,IACR;AACD,UAAM,OAAO,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAChF,UAAM,QAAQ,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACjF,QAAI,OAAO,OAAO;AAChB,aAAO;AAAA,IACR;AACD,WAAO,CAAC,MAAM,MAAM,OAAO,KAAK;AAAA,EACjC;AAAA,EA+BD,OAAO,kBAAkB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,QAAQ;AAC/D,QAAI,QAAQ;AACV,aAAO,CAAC,IAAI,KAAK,IAAI,OAAO,CAAC,GAAG,IAAI,EAAE;AACtC,aAAO,CAAC,IAAI,KAAK,IAAI,OAAO,CAAC,GAAG,IAAI,EAAE;AACtC,aAAO,CAAC,IAAI,KAAK,IAAI,OAAO,CAAC,GAAG,IAAI,EAAE;AACtC,aAAO,CAAC,IAAI,KAAK,IAAI,OAAO,CAAC,GAAG,IAAI,EAAE;AAAA,IAC5C,OAAW;AACL,eAAS,CAAC,KAAK,IAAI,IAAI,EAAE,GAAG,KAAK,IAAI,IAAI,EAAE,GAAG,KAAK,IAAI,IAAI,EAAE,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC;AAAA,IACjF;AACD,0BAAK,8BAAL,WAAkB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK;AACzH,0BAAK,8BAAL,WAAkB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK;AACzH,WAAO;AAAA,EACR;AACH;AA3CS;AAAA,wBAAmB,SAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,QAAQ;AACpE,MAAI,KAAK,KAAK,KAAK,GAAG;AACpB;AAAA,EACD;AACD,QAAM,KAAK,IAAI;AACf,QAAM,KAAK,IAAI;AACf,QAAM,MAAM,KAAK;AACjB,QAAM,IAAI,MAAM,MAAM,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,MAAM,MAAM;AACnE,QAAM,IAAI,MAAM,MAAM,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,MAAM,MAAM;AACnE,SAAO,CAAC,IAAI,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC;AACjC,SAAO,CAAC,IAAI,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC;AACjC,SAAO,CAAC,IAAI,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC;AACjC,SAAO,CAAC,IAAI,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC;AAClC;AACM;AAAA,iBAAY,SAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,QAAQ;AACnE,MAAI,KAAK,IAAI,CAAC,IAAI,OAAO;AACvB,QAAI,KAAK,IAAI,CAAC,KAAK,OAAO;AACxB,4BAAK,4CAAL,WAAyB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG;AAAA,IAClE;AACD;AAAA,EACD;AACD,QAAM,QAAQ,KAAK,IAAI,IAAI,IAAI;AAC/B,MAAI,QAAQ,GAAG;AACb;AAAA,EACD;AACD,QAAM,YAAY,KAAK,KAAK,KAAK;AACjC,QAAM,KAAK,IAAI;AACf,wBAAK,4CAAL,WAAyB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,aAAa,IAAI;AAChF,wBAAK,4CAAL,WAAyB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,aAAa,IAAI;AACjF;AA7BD,aA9GI,MA8GG;AAcP,aA5HI,MA4HG;AA2ET,SAAS,mBAAmB,KAAK;AAC/B,SAAO,mBAAmB,OAAO,GAAG,CAAC;AACvC;AAmBA,IAAI,iBAAiB;AACrB,IAAI,mBAAmB;AACvB,SAAS,iBAAiB,KAAK;AAC7B,MAAI,CAAC,gBAAgB;AACnB,qBAAiB;AACjB,uBAAmB,oBAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AAAA,EACzC;AACD,SAAO,IAAI,WAAW,gBAAgB,CAAC,GAAG,IAAI,OAAO,KAAK,GAAG,UAAU,MAAM,IAAI,iBAAiB,IAAI,EAAE,CAAC;AAC3G;AACA,SAAS,UAAU;AACjB,MAAI,OAAO,WAAW,eAAe,QAAO,iCAAQ,gBAAe,YAAY;AAC7E,WAAO,OAAO;EACf;AACD,QAAM,MAAM,IAAI,WAAW,EAAE;AAC7B,MAAI,OAAO,WAAW,eAAe,QAAO,iCAAQ,qBAAoB,YAAY;AAClF,WAAO,gBAAgB,GAAG;AAAA,EAC9B,OAAS;AACL,aAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,UAAI,CAAC,IAAI,KAAK,MAAM,KAAK,OAAM,IAAK,GAAG;AAAA,IACxC;AAAA,EACF;AACD,SAAO,cAAc,GAAG;AAC1B;AACA,MAAM,mBAAmB;AACzB,MAAM,gBAAgB;AAAA,EACpB,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,oBAAoB;AAAA,EACpB,SAAS;AAAA,EACT,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,WAAW;AACb;AAIA,MAAM,kBAAkB;AAAA,EACtB,UAAU,MAAM;AACd,WAAO;AAAA,EACR;AAAA,EACD,aAAa,SAAS,SAAS;AAC7B,WAAO;AAAA,EACR;AAAA,EACD,eAAe,KAAK;AAClB,WAAO;AAAA,EACR;AAAA,EACD,oBAAoB,KAAK;AACvB,WAAO;AAAA,EACR;AAAA,EACD,sBAAsB,YAAY,SAAS,SAAS,YAAY,YAAY;AAC1E,WAAO;AAAA,EACR;AAAA,EACD,QAAQ,UAAU,OAAO;AAAA,EAAE;AAC7B;AACA,MAAM,kBAAkB;AAAA,EAEtB,YAAY;AAAA,IACV,YAAY;AAAA,EACb,IAAG,IAAI;AAHR,mCAAa;AAIX,uBAAK,YAAa;AAAA,EACnB;AAAA,EACD,OAAO,OAAO,QAAQ;AACpB,QAAI,SAAS,KAAK,UAAU,GAAG;AAC7B,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACtC;AACD,UAAM,SAAS,KAAK,cAAc,OAAO,MAAM;AAC/C,WAAO;AAAA,MACL;AAAA,MACA,SAAS,OAAO,WAAW,MAAM;AAAA,QAC/B,oBAAoB,CAAC,mBAAK;AAAA,MAClC,CAAO;AAAA,IACP;AAAA,EACG;AAAA,EACD,MAAM,kBAAkB,OAAO,QAAQ;AACrC,QAAI,CAAC,iBAAiB,QAAQ;AAC5B,YAAM,IAAI,MAAM,yBAAyB;AAAA,IAC1C;AACD,QAAI,SAAS,KAAK,UAAU,GAAG;AAC7B,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACtC;AACD,qBAAiB,OAAO,QAAQ;AAChC,qBAAiB,OAAO,SAAS;AAAA,EAClC;AAAA,EACD,QAAQ,kBAAkB;AACxB,QAAI,CAAC,iBAAiB,QAAQ;AAC5B,YAAM,IAAI,MAAM,yBAAyB;AAAA,IAC1C;AACD,qBAAiB,OAAO,QAAQ;AAChC,qBAAiB,OAAO,SAAS;AACjC,qBAAiB,SAAS;AAC1B,qBAAiB,UAAU;AAAA,EAC5B;AAAA,EACD,cAAc,OAAO,QAAQ;AAC3B,gBAAY,yCAAyC;AAAA,EACtD;AACH;AAxCE;AAyCF,MAAM,sBAAsB;AAAA,EAC1B,YAAY;AAAA,IACV,UAAU;AAAA,IACV,eAAe;AAAA,EACnB,GAAK;AACD,SAAK,UAAU;AACf,SAAK,eAAe;AAAA,EACrB;AAAA,EACD,MAAM,MAAM;AAAA,IACV;AAAA,EACJ,GAAK;AACD,QAAI,CAAC,KAAK,SAAS;AACjB,YAAM,IAAI,MAAM,yEAAyE;AAAA,IAC1F;AACD,QAAI,CAAC,MAAM;AACT,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAC/C;AACD,UAAM,MAAM,KAAK,UAAU,QAAQ,KAAK,eAAe,WAAW;AAClE,UAAM,kBAAkB,KAAK,eAAe,oBAAoB,SAAS,oBAAoB;AAC7F,WAAO,KAAK,WAAW,KAAK,eAAe,EAAE,MAAM,YAAU;AAC3D,YAAM,IAAI,MAAM,kBAAkB,KAAK,eAAe,YAAY,EAAE,YAAY,GAAG,EAAE;AAAA,IAC3F,CAAK;AAAA,EACF;AAAA,EACD,WAAW,KAAK,iBAAiB;AAC/B,gBAAY,sCAAsC;AAAA,EACnD;AACH;AACA,MAAM,4BAA4B;AAAA,EAChC,YAAY;AAAA,IACV,UAAU;AAAA,EACd,GAAK;AACD,SAAK,UAAU;AAAA,EAChB;AAAA,EACD,MAAM,MAAM;AAAA,IACV;AAAA,EACJ,GAAK;AACD,QAAI,CAAC,KAAK,SAAS;AACjB,YAAM,IAAI,MAAM,kEAAkE;AAAA,IACnF;AACD,QAAI,CAAC,UAAU;AACb,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACnD;AACD,UAAM,MAAM,GAAG,KAAK,OAAO,GAAG,QAAQ;AACtC,WAAO,KAAK,WAAW,GAAG,EAAE,MAAM,YAAU;AAC1C,YAAM,IAAI,MAAM,gCAAgC,GAAG,EAAE;AAAA,IAC3D,CAAK;AAAA,EACF;AAAA,EACD,WAAW,KAAK;AACd,gBAAY,sCAAsC;AAAA,EACnD;AACH;AACA,MAAM,eAAe;AAAA,EACnB,OAAO,OAAO,QAAQ,iBAAiB,OAAO;AAC5C,QAAI,SAAS,KAAK,UAAU,GAAG;AAC7B,YAAM,IAAI,MAAM,wBAAwB;AAAA,IACzC;AACD,UAAM,MAAM,KAAK,WAAW,SAAS;AACrC,QAAI,aAAa,WAAW,KAAK;AACjC,QAAI,CAAC,gBAAgB;AACnB,UAAI,aAAa,SAAS,GAAG,KAAK,IAAI;AACtC,UAAI,aAAa,UAAU,GAAG,MAAM,IAAI;AAAA,IACzC;AACD,QAAI,aAAa,uBAAuB,MAAM;AAC9C,QAAI,aAAa,WAAW,OAAO,KAAK,IAAI,MAAM,EAAE;AACpD,WAAO;AAAA,EACR;AAAA,EACD,cAAc,MAAM;AAClB,QAAI,OAAO,SAAS,UAAU;AAC5B,YAAM,IAAI,MAAM,0BAA0B;AAAA,IAC3C;AACD,WAAO,KAAK,WAAW,IAAI;AAAA,EAC5B;AAAA,EACD,WAAW,MAAM;AACf,gBAAY,sCAAsC;AAAA,EACnD;AACH;AAKA,MAAM,SAAS;AACf,MAAM,iBAAN,MAAM,eAAc;AAIpB;AAHE,cADI,gBACG,OAAM;AACb,cAFI,gBAEG,OAAM;AACb,cAHI,gBAGG,oBAAmB,eAAK,MAAM,eAAK;AAH5C,IAAM,gBAAN;AAKA,MAAM,yBAAyB,kBAAkB;AAAA,EAQ/C,YAAY;AAAA,IACV;AAAA,IACA,gBAAgB,WAAW;AAAA,EAC5B,IAAG,IAAI;AACN;AAIF,uBAAI;AAGJ,uBAAI;AAGJ,uBAAI;AAsBJ;AAqBA;AAiNA;AAMA;AAMA;AAOA;AAMA;AAOA;AAKA;AAtTA;AACA;AACA;AACA;AACA;AACA;AACA,4BAAM;AAMJ,uBAAK,QAAS;AACd,uBAAK,WAAY;AAAA,EAClB;AAAA,EAgED,UAAU,MAAM;AACd,QAAI,CAAC,MAAM;AACT,aAAO;AAAA,IACR;AACD,QAAI,QAAQ,mBAAK,mBAAO,IAAI,IAAI;AAChC,QAAI,OAAO;AACT,aAAO;AAAA,IACR;AACD,UAAM,CAAC,QAAQ,QAAQ,MAAM,IAAI,sBAAK,gCAAL,WAAmB;AACpD,UAAM,MAAM,KAAK,WAAW,IAAI,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM;AACpE,YAAQ,mBAAK,mBAAO,IAAI,GAAG;AAC3B,QAAI,OAAO;AACT,yBAAK,mBAAO,IAAI,MAAM,KAAK;AAC3B,aAAO;AAAA,IACR;AACD,UAAM,KAAK,KAAK,mBAAK,OAAM,iBAAiB,uBAAK,KAAL,GAAU;AACtD,UAAM,MAAM,sBAAK,0BAAL,WAAgB;AAC5B,uBAAK,mBAAO,IAAI,MAAM,GAAG;AACzB,uBAAK,mBAAO,IAAI,KAAK,GAAG;AACxB,UAAM,SAAS,sBAAK,gCAAL,WAAmB;AAClC,0BAAK,wDAAL,WAA+B,QAAQ,QAAQ,QAAQ;AACvD,WAAO;AAAA,EACR;AAAA,EACD,aAAa,SAAS,SAAS;;AAC7B,UAAM,MAAM,GAAG,OAAO,IAAI,OAAO;AACjC,UAAM,aAAa;AACnB,QAAIC,QAAO,mBAAK,yBAAU,IAAI,UAAU;AACxC,SAAIA,SAAA,gBAAAA,MAAM,SAAQ,KAAK;AACrB,aAAOA,MAAK;AAAA,IACb;AACD,QAAIA,OAAM;AACR,OAAAD,MAAAC,MAAK,WAAL,gBAAAD,IAAa;AACb,MAAAC,MAAK,MAAM;AACX,MAAAA,MAAK,MAAM;AACX,MAAAA,MAAK,SAAS;AAAA,IACpB,OAAW;AACL,MAAAA,QAAO;AAAA,QACL;AAAA,QACA,KAAK;AAAA,QACL,QAAQ;AAAA,MAChB;AACM,yBAAK,yBAAU,IAAI,YAAYA,KAAI;AAAA,IACpC;AACD,QAAI,CAAC,WAAW,CAAC,SAAS;AACxB,aAAOA,MAAK;AAAA,IACb;AACD,UAAM,QAAQ,sBAAK,oBAAL,WAAa;AAC3B,cAAU,KAAK,aAAa,GAAG,KAAK;AACpC,UAAM,QAAQ,sBAAK,oBAAL,WAAa;AAC3B,cAAU,KAAK,aAAa,GAAG,KAAK;AACpC,uBAAK,iBAAM,MAAM,QAAQ;AACzB,QAAI,YAAY,aAAa,YAAY,aAAa,YAAY,SAAS;AACzE,aAAOA,MAAK;AAAA,IACb;AACD,UAAM,MAAM,IAAI,MAAM,GAAG;AACzB,aAAS,IAAI,GAAG,KAAK,KAAK,KAAK;AAC7B,YAAM,IAAI,IAAI;AACd,UAAI,CAAC,IAAI,KAAK,UAAU,IAAI,UAAU,IAAI,SAAS,UAAU;AAAA,IAC9D;AACD,UAAM,QAAQ,IAAI,KAAK,GAAG;AAC1B,UAAM,KAAK,KAAK,mBAAK,OAAM;AAC3B,UAAM,SAASA,MAAK,SAAS,sBAAK,gCAAL,WAAmB;AAChD,0BAAK,wDAAL,WAA+B,OAAO,OAAO,OAAO;AACpD,0BAAK,0CAAL,WAAwB;AACxB,UAAM,WAAW,CAAC,GAAG,MAAM;AACzB,YAAM,QAAQ,MAAM,CAAC,IAAI;AACzB,YAAM,MAAM,MAAM,CAAC,IAAI;AACvB,YAAM,MAAM,IAAI,MAAM,IAAI,CAAC;AAC3B,eAAS,IAAI,GAAG,KAAK,GAAG,KAAK;AAC3B,YAAI,CAAC,IAAI,QAAQ,IAAI,KAAK,MAAM;AAAA,MACjC;AACD,aAAO,IAAI,KAAK,GAAG;AAAA,IACzB;AACI,0BAAK,wDAAL,WAA+B,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG;AAC/E,IAAAA,MAAK,MAAM,sBAAK,0BAAL,WAAgB;AAC3B,WAAOA,MAAK;AAAA,EACb;AAAA,EACD,eAAe,KAAK;AAClB,QAAI,QAAQ,mBAAK,mBAAO,IAAI,GAAG;AAC/B,QAAI,OAAO;AACT,aAAO;AAAA,IACR;AACD,UAAM,CAAC,MAAM,IAAI,sBAAK,gCAAL,WAAmB,CAAC,GAAG;AACxC,UAAM,MAAM,SAAS,MAAM;AAC3B,YAAQ,mBAAK,mBAAO,IAAI,GAAG;AAC3B,QAAI,OAAO;AACT,yBAAK,mBAAO,IAAI,KAAK,KAAK;AAC1B,aAAO;AAAA,IACR;AACD,UAAM,KAAK,KAAK,mBAAK,OAAM,cAAc,uBAAK,KAAL,GAAU;AACnD,UAAM,MAAM,sBAAK,0BAAL,WAAgB;AAC5B,uBAAK,mBAAO,IAAI,KAAK,GAAG;AACxB,uBAAK,mBAAO,IAAI,KAAK,GAAG;AACxB,UAAM,SAAS,sBAAK,gCAAL,WAAmB;AAClC,0BAAK,kEAAL,WAAoC,QAAQ;AAC5C,WAAO;AAAA,EACR;AAAA,EACD,oBAAoB,KAAK;AACvB,QAAI,QAAQ,mBAAK,mBAAO,IAAI,OAAO,YAAY;AAC/C,QAAI,OAAO;AACT,aAAO;AAAA,IACR;AACD,QAAI,QAAQ;AACZ,QAAI,KAAK;AACP,OAAC,MAAM,IAAI,sBAAK,gCAAL,WAAmB,CAAC,GAAG;AAClC,YAAM,cAAc,MAAM;AAAA,IAChC,OAAW;AACL,YAAM;AAAA,IACP;AACD,YAAQ,mBAAK,mBAAO,IAAI,GAAG;AAC3B,QAAI,OAAO;AACT,yBAAK,mBAAO,IAAI,KAAK,KAAK;AAC1B,aAAO;AAAA,IACR;AACD,UAAM,KAAK,KAAK,mBAAK,OAAM,mBAAmB,uBAAK,KAAL,GAAU;AACxD,UAAM,MAAM,sBAAK,0BAAL,WAAgB;AAC5B,uBAAK,mBAAO,IAAI,KAAK,GAAG;AACxB,uBAAK,mBAAO,IAAI,KAAK,GAAG;AACxB,UAAM,SAAS,sBAAK,gCAAL,WAAmB;AAClC,0BAAK,sDAAL,WAA8B;AAC9B,QAAI,KAAK;AACP,4BAAK,kEAAL,WAAoC,QAAQ;AAAA,IAC7C;AACD,WAAO;AAAA,EACR;AAAA,EACD,sBAAsB,YAAY,SAAS,SAAS,YAAY,YAAY;;AAC1E,UAAM,MAAM,GAAG,OAAO,IAAI,OAAO,IAAI,UAAU,IAAI,UAAU;AAC7D,QAAIA,QAAO,mBAAK,yBAAU,IAAI,UAAU;AACxC,SAAIA,SAAA,gBAAAA,MAAM,SAAQ,KAAK;AACrB,aAAOA,MAAK;AAAA,IACb;AACD,QAAIA,OAAM;AACR,OAAAD,MAAAC,MAAK,WAAL,gBAAAD,IAAa;AACb,MAAAC,MAAK,MAAM;AACX,MAAAA,MAAK,MAAM;AACX,MAAAA,MAAK,SAAS;AAAA,IACpB,OAAW;AACL,MAAAA,QAAO;AAAA,QACL;AAAA,QACA,KAAK;AAAA,QACL,QAAQ;AAAA,MAChB;AACM,yBAAK,yBAAU,IAAI,YAAYA,KAAI;AAAA,IACpC;AACD,QAAI,CAAC,WAAW,CAAC,SAAS;AACxB,aAAOA,MAAK;AAAA,IACb;AACD,UAAM,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,OAAO,EAAE,IAAI,sBAAK,oBAAQ,KAAK,IAAI,CAAC;AACrE,QAAI,SAAS,KAAK,MAAM,SAAS,MAAM,CAAC,IAAI,SAAS,MAAM,CAAC,IAAI,SAAS,MAAM,CAAC,CAAC;AACjF,QAAI,SAAS,KAAK,MAAM,SAAS,MAAM,CAAC,IAAI,SAAS,MAAM,CAAC,IAAI,SAAS,MAAM,CAAC,CAAC;AACjF,QAAI,CAAC,UAAU,QAAQ,IAAI,CAAC,YAAY,UAAU,EAAE,IAAI,sBAAK,oBAAQ,KAAK,IAAI,CAAC;AAC/E,QAAI,SAAS,QAAQ;AACnB,OAAC,QAAQ,QAAQ,UAAU,QAAQ,IAAI,CAAC,QAAQ,QAAQ,UAAU,QAAQ;AAAA,IAC3E;AACD,uBAAK,iBAAM,MAAM,QAAQ;AACzB,UAAM,WAAW,CAAC,IAAI,IAAI,MAAM;AAC9B,YAAM,MAAM,IAAI,MAAM,GAAG;AACzB,YAAM,QAAQ,SAAS,UAAU;AACjC,YAAM,WAAW,KAAK;AACtB,YAAM,WAAW,KAAK,OAAO,MAAM;AACnC,UAAI,OAAO;AACX,eAAS,IAAI,GAAG,KAAK,GAAG,KAAK;AAC3B,cAAM,IAAI,KAAK,MAAM,SAAS,IAAI,IAAI;AACtC,cAAM,QAAQ,WAAW,IAAI;AAC7B,iBAAS,IAAI,MAAM,KAAK,GAAG,KAAK;AAC9B,cAAI,CAAC,IAAI;AAAA,QACV;AACD,eAAO,IAAI;AAAA,MACZ;AACD,eAAS,IAAI,MAAM,IAAI,KAAK,KAAK;AAC/B,YAAI,CAAC,IAAI,IAAI,OAAO,CAAC;AAAA,MACtB;AACD,aAAO,IAAI,KAAK,GAAG;AAAA,IACzB;AACI,UAAM,KAAK,KAAK,mBAAK,OAAM,QAAQ,UAAU;AAC7C,UAAM,SAASA,MAAK,SAAS,sBAAK,gCAAL,WAAmB;AAChD,0BAAK,0CAAL,WAAwB;AACxB,0BAAK,wDAAL,WAA+B,SAAS,SAAS,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,SAAS,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,SAAS,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG;AACpJ,IAAAA,MAAK,MAAM,sBAAK,0BAAL,WAAgB;AAC3B,WAAOA,MAAK;AAAA,EACb;AAAA,EACD,QAAQ,UAAU,OAAO;AACvB,QAAI,WAAW,mBAAK,yBAAU,SAAS,GAAG;AACxC;AAAA,IACD;AACD,QAAI,mBAAK,SAAQ;AACf,yBAAK,QAAO,WAAW,WAAW,OAAM;AACxC,yBAAK,QAAS;AAAA,IACf;AACD,QAAI,mBAAK,UAAS;AAChB,yBAAK,SAAQ;AACb,yBAAK,SAAU;AAAA,IAChB;AACD,uBAAK,KAAM;AAAA,EACZ;AA0CH;AA1TE;AACA;AACA;AACA;AACA;AACA;AACA;AASI;AAAA,YAAM,WAAG;AACX,SAAO,mBAAK,YAAL,mBAAK,SAAY,oBAAI;AAC7B;AACG;AAAA,eAAS,WAAG;AACd,SAAO,mBAAK,eAAL,mBAAK,YAAe,oBAAI;AAChC;AACG;AAAA,WAAK,WAAG;AACV,MAAI,CAAC,mBAAK,SAAQ;AAChB,UAAM,MAAM,mBAAK,WAAU,cAAc,KAAK;AAC9C,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,UAAM,aAAa;AACnB,UAAM,UAAU;AAChB,UAAM,QAAQ,MAAM,SAAS;AAC7B,UAAM,WAAW;AACjB,UAAM,MAAM,MAAM,OAAO;AACzB,UAAM,SAAS;AACf,UAAM,MAAM,mBAAK,WAAU,gBAAgB,QAAQ,KAAK;AACxD,QAAI,aAAa,SAAS,CAAC;AAC3B,QAAI,aAAa,UAAU,CAAC;AAC5B,uBAAK,QAAS,mBAAK,WAAU,gBAAgB,QAAQ,MAAM;AAC3D,QAAI,OAAO,GAAG;AACd,QAAI,OAAO,mBAAK,OAAM;AACtB,uBAAK,WAAU,KAAK,OAAO,GAAG;AAAA,EAC/B;AACD,SAAO,mBAAK;AACb;AACD;AAAA,kBAAa,SAAC,MAAM;AAClB,MAAI,KAAK,WAAW,GAAG;AACrB,UAAMC,QAAO,KAAK,CAAC;AACnB,UAAM,SAAS,IAAI,MAAM,GAAG;AAC5B,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,aAAO,CAAC,IAAIA,MAAK,CAAC,IAAI;AAAA,IACvB;AACD,UAAM,QAAQ,OAAO,KAAK,GAAG;AAC7B,WAAO,CAAC,OAAO,OAAO,KAAK;AAAA,EAC5B;AACD,QAAM,CAAC,MAAM,MAAM,IAAI,IAAI;AAC3B,QAAM,UAAU,IAAI,MAAM,GAAG;AAC7B,QAAM,UAAU,IAAI,MAAM,GAAG;AAC7B,QAAM,UAAU,IAAI,MAAM,GAAG;AAC7B,WAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,YAAQ,CAAC,IAAI,KAAK,CAAC,IAAI;AACvB,YAAQ,CAAC,IAAI,KAAK,CAAC,IAAI;AACvB,YAAQ,CAAC,IAAI,KAAK,CAAC,IAAI;AAAA,EACxB;AACD,SAAO,CAAC,QAAQ,KAAK,GAAG,GAAG,QAAQ,KAAK,GAAG,GAAG,QAAQ,KAAK,GAAG,CAAC;AAChE;AACD;AAAA,eAAU,SAAC,IAAI;AACb,MAAI,mBAAK,cAAa,QAAW;AAC/B,uBAAK,UAAW;AAChB,UAAM,MAAM,mBAAK,WAAU;AAC3B,QAAI,QAAQ,mBAAK,WAAU,SAAS;AAClC,UAAI,aAAa,GAAG,GAAG;AACrB,aAAK,yDAAyD;AAAA,MACxE,OAAe;AACL,2BAAK,UAAW,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;AAAA,MACpC;AAAA,IACF;AAAA,EACF;AACD,SAAO,OAAO,mBAAK,SAAQ,IAAI,EAAE;AAClC;AAoMD;AAAA,6BAAwB,SAAC,QAAQ;AAC/B,QAAM,gBAAgB,mBAAK,WAAU,gBAAgB,QAAQ,eAAe;AAC5E,gBAAc,aAAa,QAAQ,QAAQ;AAC3C,gBAAc,aAAa,UAAU,iDAAiD;AACtF,SAAO,OAAO,aAAa;AAC5B;AACD;AAAA,uBAAkB,SAAC,QAAQ;AACzB,QAAM,gBAAgB,mBAAK,WAAU,gBAAgB,QAAQ,eAAe;AAC5E,gBAAc,aAAa,QAAQ,QAAQ;AAC3C,gBAAc,aAAa,UAAU,sFAAsF;AAC3H,SAAO,OAAO,aAAa;AAC5B;AACD;AAAA,kBAAa,SAAC,IAAI;AAChB,QAAM,SAAS,mBAAK,WAAU,gBAAgB,QAAQ,QAAQ;AAC9D,SAAO,aAAa,+BAA+B,MAAM;AACzD,SAAO,aAAa,MAAM,EAAE;AAC5B,qBAAK,iBAAM,OAAO,MAAM;AACxB,SAAO;AACR;AACD;AAAA,kBAAa,SAAC,qBAAqB,MAAM,OAAO;AAC9C,QAAM,SAAS,mBAAK,WAAU,gBAAgB,QAAQ,IAAI;AAC1D,SAAO,aAAa,QAAQ,UAAU;AACtC,SAAO,aAAa,eAAe,KAAK;AACxC,sBAAoB,OAAO,MAAM;AAClC;AACD;AAAA,8BAAyB,SAAC,QAAQ,QAAQ,QAAQ,QAAQ;AACxD,QAAM,sBAAsB,mBAAK,WAAU,gBAAgB,QAAQ,qBAAqB;AACxF,SAAO,OAAO,mBAAmB;AACjC,wBAAK,gCAAL,WAAmB,qBAAqB,WAAW;AACnD,wBAAK,gCAAL,WAAmB,qBAAqB,WAAW;AACnD,wBAAK,gCAAL,WAAmB,qBAAqB,WAAW;AACpD;AACD;AAAA,mCAA8B,SAAC,QAAQ,QAAQ;AAC7C,QAAM,sBAAsB,mBAAK,WAAU,gBAAgB,QAAQ,qBAAqB;AACxF,SAAO,OAAO,mBAAmB;AACjC,wBAAK,gCAAL,WAAmB,qBAAqB,WAAW;AACpD;AACD;AAAA,YAAO,SAAC,OAAO;AACb,qBAAK,iBAAM,MAAM,QAAQ;AACzB,SAAO,OAAO,iBAAiB,mBAAK,gBAAK,EAAE,iBAAiB,OAAO,CAAC;AACrE;AAEH,MAAM,yBAAyB,kBAAkB;AAAA,EAC/C,YAAY;AAAA,IACV,gBAAgB,WAAW;AAAA,IAC3B,YAAY;AAAA,EACb,IAAG,IAAI;AACN,UAAM;AAAA,MACJ;AAAA,IACN,CAAK;AACD,SAAK,YAAY;AAAA,EAClB;AAAA,EACD,cAAc,OAAO,QAAQ;AAC3B,UAAM,SAAS,KAAK,UAAU,cAAc,QAAQ;AACpD,WAAO,QAAQ;AACf,WAAO,SAAS;AAChB,WAAO;AAAA,EACR;AACH;AACA,eAAe,UAAU,KAAK,OAAO,QAAQ;AAC3C,MAAI,gBAAgB,KAAK,SAAS,OAAO,GAAG;AAC1C,UAAM,WAAW,MAAM,MAAM,GAAG;AAChC,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI,MAAM,SAAS,UAAU;AAAA,IACpC;AACD,YAAQ,MAAI;AAAA,MACV,KAAK;AACH,eAAO,SAAS;MAClB,KAAK;AACH,eAAO,SAAS;MAClB,KAAK;AACH,eAAO,SAAS;IACnB;AACD,WAAO,SAAS;EACjB;AACD,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,UAAU,IAAI;AACpB,YAAQ,KAAK,OAAO,KAAK,IAAI;AAC7B,YAAQ,eAAe;AACvB,YAAQ,qBAAqB,MAAM;AACjC,UAAI,QAAQ,eAAe,eAAe,MAAM;AAC9C;AAAA,MACD;AACD,UAAI,QAAQ,WAAW,OAAO,QAAQ,WAAW,GAAG;AAClD,gBAAQ,MAAI;AAAA,UACV,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,oBAAQ,QAAQ,QAAQ;AACxB;AAAA,QACH;AACD,gBAAQ,QAAQ,YAAY;AAC5B;AAAA,MACD;AACD,aAAO,IAAI,MAAM,QAAQ,UAAU,CAAC;AAAA,IAC1C;AACI,YAAQ,KAAK,IAAI;AAAA,EACrB,CAAG;AACH;AACA,MAAM,6BAA6B,sBAAsB;AAAA,EACvD,WAAW,KAAK,iBAAiB;AAC/B,WAAO,UAAU,KAAK,KAAK,eAAe,gBAAgB,MAAM,EAAE,KAAK,WAAS;AAAA,MAC9E,UAAU,gBAAgB,cAAc,IAAI,WAAW,IAAI,IAAI,cAAc,IAAI;AAAA,MACjF;AAAA,IACD,EAAC;AAAA,EACH;AACH;AACA,MAAM,mCAAmC,4BAA4B;AAAA,EACnE,WAAW,KAAK;AACd,WAAO,UAAU,KAAK,aAAa,EAAE,KAAK,UAAQ,IAAI,WAAW,IAAI,CAAC;AAAA,EACvE;AACH;AACA,MAAM,sBAAsB,eAAe;AAAA,EACzC,WAAW,MAAM;AACf,WAAO,SAAS,gBAAgB,QAAQ,IAAI;AAAA,EAC7C;AACH;AACA,MAAM,aAAa;AAAA,EACjB,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,UAAU;AAAA,IACV,WAAW;AAAA,EACf,GAAK;AACD,SAAK,UAAU;AACf,SAAK,QAAQ;AACb,SAAK,WAAW;AAChB,SAAK,UAAU;AACf,SAAK,UAAU;AACf,UAAM,WAAW,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK;AAC5C,UAAM,WAAW,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK;AAC5C,QAAI,SAAS,SAAS,SAAS;AAC/B,gBAAY;AACZ,QAAI,WAAW,GAAG;AAChB,kBAAY;AAAA,IACb;AACD,YAAQ,UAAQ;AAAA,MACd,KAAK;AACH,kBAAU;AACV,kBAAU;AACV,kBAAU;AACV,kBAAU;AACV;AAAA,MACF,KAAK;AACH,kBAAU;AACV,kBAAU;AACV,kBAAU;AACV,kBAAU;AACV;AAAA,MACF,KAAK;AACH,kBAAU;AACV,kBAAU;AACV,kBAAU;AACV,kBAAU;AACV;AAAA,MACF,KAAK;AACH,kBAAU;AACV,kBAAU;AACV,kBAAU;AACV,kBAAU;AACV;AAAA,MACF;AACE,cAAM,IAAI,MAAM,mEAAmE;AAAA,IACtF;AACD,QAAI,UAAU;AACZ,gBAAU,CAAC;AACX,gBAAU,CAAC;AAAA,IACZ;AACD,QAAI,eAAe;AACnB,QAAI,OAAO;AACX,QAAI,YAAY,GAAG;AACjB,sBAAgB,KAAK,IAAI,UAAU,QAAQ,CAAC,CAAC,IAAI,QAAQ;AACzD,sBAAgB,KAAK,IAAI,UAAU,QAAQ,CAAC,CAAC,IAAI,QAAQ;AACzD,eAAS,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK;AACpC,gBAAU,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK;AAAA,IAC3C,OAAW;AACL,sBAAgB,KAAK,IAAI,UAAU,QAAQ,CAAC,CAAC,IAAI,QAAQ;AACzD,sBAAgB,KAAK,IAAI,UAAU,QAAQ,CAAC,CAAC,IAAI,QAAQ;AACzD,eAAS,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK;AACpC,gBAAU,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK;AAAA,IACtC;AACD,SAAK,YAAY,CAAC,UAAU,OAAO,UAAU,OAAO,UAAU,OAAO,UAAU,OAAO,gBAAgB,UAAU,QAAQ,UAAU,UAAU,QAAQ,SAAS,gBAAgB,UAAU,QAAQ,UAAU,UAAU,QAAQ,OAAO;AAClO,SAAK,QAAQ;AACb,SAAK,SAAS;AAAA,EACf;AAAA,EACD,IAAI,UAAU;AACZ,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,WAAO,OAAO,MAAM,WAAW;AAAA,MAC7B,WAAW,QAAQ,CAAC,IAAI,QAAQ,CAAC;AAAA,MACjC,YAAY,QAAQ,CAAC,IAAI,QAAQ,CAAC;AAAA,MAClC,OAAO,QAAQ,CAAC;AAAA,MAChB,OAAO,QAAQ,CAAC;AAAA,IACtB,CAAK;AAAA,EACF;AAAA,EACD,MAAM;AAAA,IACJ,QAAQ,KAAK;AAAA,IACb,WAAW,KAAK;AAAA,IAChB,UAAU,KAAK;AAAA,IACf,UAAU,KAAK;AAAA,IACf,WAAW;AAAA,EACZ,IAAG,IAAI;AACN,WAAO,IAAI,aAAa;AAAA,MACtB,SAAS,KAAK,QAAQ,MAAO;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,CAAK;AAAA,EACF;AAAA,EACD,uBAAuB,GAAG,GAAG;AAC3B,WAAO,KAAK,eAAe,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS;AAAA,EAClD;AAAA,EACD,2BAA2B,MAAM;AAC/B,UAAM,UAAU,KAAK,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,SAAS;AACtE,UAAM,cAAc,KAAK,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,SAAS;AAC1E,WAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,YAAY,CAAC,GAAG,YAAY,CAAC,CAAC;AAAA,EAC/D;AAAA,EACD,kBAAkB,GAAG,GAAG;AACtB,WAAO,KAAK,sBAAsB,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS;AAAA,EACzD;AACH;AACA,MAAM,oCAAoC,cAAc;AAAA,EACtD,YAAY,KAAK,aAAa,GAAG;AAC/B,UAAM,KAAK,6BAA6B;AACxC,SAAK,aAAa;AAAA,EACnB;AACH;AACA,SAAS,aAAa,KAAK;AACzB,QAAM,KAAK,IAAI;AACf,MAAI,IAAI;AACR,SAAO,IAAI,MAAM,IAAI,CAAC,EAAE,KAAM,MAAK,IAAI;AACrC;AAAA,EACD;AACD,SAAO,IAAI,UAAU,GAAG,IAAI,CAAC,EAAE,YAAa,MAAK;AACnD;AACA,SAAS,UAAU,UAAU;AAC3B,SAAO,OAAO,aAAa,YAAY,UAAU,KAAK,QAAQ;AAChE;AACA,SAAS,mBAAmB,KAAK;AAC/B,GAAC,GAAG,IAAI,IAAI,MAAM,QAAQ,CAAC;AAC3B,SAAO,IAAI,UAAU,IAAI,YAAY,GAAG,IAAI,CAAC;AAC/C;AACA,SAAS,sBAAsB,KAAK,kBAAkB,gBAAgB;AACpE,MAAI,OAAO,QAAQ,UAAU;AAC3B,WAAO;AAAA,EACR;AACD,MAAI,aAAa,GAAG,GAAG;AACrB,SAAK,oEAAoE;AACzE,WAAO;AAAA,EACR;AACD,QAAM,QAAQ;AACd,QAAM,aAAa;AACnB,QAAM,WAAW,MAAM,KAAK,GAAG;AAC/B,MAAI,oBAAoB,WAAW,KAAK,SAAS,CAAC,CAAC,KAAK,WAAW,KAAK,SAAS,CAAC,CAAC,KAAK,WAAW,KAAK,SAAS,CAAC,CAAC;AACnH,MAAI,mBAAmB;AACrB,wBAAoB,kBAAkB,CAAC;AACvC,QAAI,kBAAkB,SAAS,GAAG,GAAG;AACnC,UAAI;AACF,4BAAoB,WAAW,KAAK,mBAAmB,iBAAiB,CAAC,EAAE,CAAC;AAAA,MAC7E,QAAO;AAAA,MAAE;AAAA,IACX;AAAA,EACF;AACD,SAAO,qBAAqB;AAC9B;AACA,MAAM,UAAU;AAAA,EAAhB;AACE,mCAAU,uBAAO,OAAO,IAAI;AAC5B,iCAAQ;AAAA;AAAA,EACR,KAAK,MAAM;AACT,QAAI,QAAQ,KAAK,SAAS;AACxB,WAAK,gCAAgC,IAAI,EAAE;AAAA,IAC5C;AACD,SAAK,QAAQ,IAAI,IAAI,KAAK,IAAG;AAAA,EAC9B;AAAA,EACD,QAAQ,MAAM;AACZ,QAAI,EAAE,QAAQ,KAAK,UAAU;AAC3B,WAAK,kCAAkC,IAAI,EAAE;AAAA,IAC9C;AACD,SAAK,MAAM,KAAK;AAAA,MACd;AAAA,MACA,OAAO,KAAK,QAAQ,IAAI;AAAA,MACxB,KAAK,KAAK,IAAK;AAAA,IACrB,CAAK;AACD,WAAO,KAAK,QAAQ,IAAI;AAAA,EACzB;AAAA,EACD,WAAW;AACT,UAAM,SAAS;AACf,QAAI,UAAU;AACd,eAAW;AAAA,MACT;AAAA,IACN,KAAS,KAAK,OAAO;AACf,gBAAU,KAAK,IAAI,KAAK,QAAQ,OAAO;AAAA,IACxC;AACD,eAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,IACN,KAAS,KAAK,OAAO;AACf,aAAO,KAAK,GAAG,KAAK,OAAO,OAAO,CAAC,IAAI,MAAM,KAAK;AAAA,CAAM;AAAA,IACzD;AACD,WAAO,OAAO,KAAK,EAAE;AAAA,EACtB;AACH;AACA,SAAS,gBAAgB,KAAK,SAAS;AACrC,MAAI;AACF,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,UAAU,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,IAAI,GAAG;AACjD,WAAO,aAAa,WAAW,aAAa;AAAA,EAChD,QAAU;AACN,WAAO;AAAA,EACR;AACH;AACA,SAAS,cAAc,GAAG;AACxB,IAAE,eAAc;AAClB;AAIA,IAAI;AACJ,MAAM,cAAc;AAAA,EAClB,OAAO,aAAa,OAAO;AACzB,QAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AACvC,aAAO;AAAA,IACR;AACD,gDAAuB,IAAI,OAAO,0FAAiJ;AACnL,UAAM,UAAU,mBAAmB,KAAK,KAAK;AAC7C,QAAI,CAAC,SAAS;AACZ,aAAO;AAAA,IACR;AACD,UAAM,OAAO,SAAS,QAAQ,CAAC,GAAG,EAAE;AACpC,QAAI,QAAQ,SAAS,QAAQ,CAAC,GAAG,EAAE;AACnC,YAAQ,SAAS,KAAK,SAAS,KAAK,QAAQ,IAAI;AAChD,QAAI,MAAM,SAAS,QAAQ,CAAC,GAAG,EAAE;AACjC,UAAM,OAAO,KAAK,OAAO,KAAK,MAAM;AACpC,QAAI,OAAO,SAAS,QAAQ,CAAC,GAAG,EAAE;AAClC,WAAO,QAAQ,KAAK,QAAQ,KAAK,OAAO;AACxC,QAAI,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE;AACpC,aAAS,UAAU,KAAK,UAAU,KAAK,SAAS;AAChD,QAAI,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE;AACpC,aAAS,UAAU,KAAK,UAAU,KAAK,SAAS;AAChD,UAAM,wBAAwB,QAAQ,CAAC,KAAK;AAC5C,QAAI,aAAa,SAAS,QAAQ,CAAC,GAAG,EAAE;AACxC,iBAAa,cAAc,KAAK,cAAc,KAAK,aAAa;AAChE,QAAI,eAAe,SAAS,QAAQ,CAAC,GAAG,EAAE,KAAK;AAC/C,mBAAe,gBAAgB,KAAK,gBAAgB,KAAK,eAAe;AACxE,QAAI,0BAA0B,KAAK;AACjC,cAAQ;AACR,gBAAU;AAAA,IAChB,WAAe,0BAA0B,KAAK;AACxC,cAAQ;AACR,gBAAU;AAAA,IACX;AACD,WAAO,IAAI,KAAK,KAAK,IAAI,MAAM,OAAO,KAAK,MAAM,QAAQ,MAAM,CAAC;AAAA,EACjE;AACH;AACA,SAAS,mBAAmB,SAAS;AAAA,EACnC,QAAQ;AAAA,EACR,WAAW;AACb,GAAG;AACD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACJ,IAAM,QAAQ,WAAW;AACvB,QAAM,UAAU,CAAC,GAAG,GAAG,SAAS,KAAK,GAAG,SAAS,MAAM,CAAC;AACxD,SAAO,IAAI,aAAa;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAG;AACH;AACA,SAAS,OAAO,OAAO;AACrB,MAAI,MAAM,WAAW,GAAG,GAAG;AACzB,UAAM,WAAW,SAAS,MAAM,MAAM,CAAC,GAAG,EAAE;AAC5C,WAAO,EAAE,WAAW,aAAa,KAAK,WAAW,UAAa,GAAG,WAAW,GAAQ;AAAA,EACrF;AACD,MAAI,MAAM,WAAW,MAAM,GAAG;AAC5B,WAAO,MAAM,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,OAAK,SAAS,CAAC,CAAC;AAAA,EAC1D;AACD,MAAI,MAAM,WAAW,OAAO,GAAG;AAC7B,WAAO,MAAM,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,OAAK,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC;AAAA,EACtE;AACD,OAAK,8BAA8B,KAAK,GAAG;AAC3C,SAAO,CAAC,GAAG,GAAG,CAAC;AACjB;AACA,SAAS,eAAe,QAAQ;AAC9B,QAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,OAAK,MAAM,aAAa;AACxB,WAAS,KAAK,OAAO,IAAI;AACzB,aAAW,QAAQ,OAAO,QAAQ;AAChC,SAAK,MAAM,QAAQ;AACnB,UAAM,gBAAgB,OAAO,iBAAiB,IAAI,EAAE;AACpD,WAAO,IAAI,MAAM,OAAO,aAAa,CAAC;AAAA,EACvC;AACD,OAAK,OAAM;AACb;AACA,SAAS,oBAAoB,KAAK;AAChC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAM,IAAI;AACR,SAAO,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1B;AACA,SAAS,2BAA2B,KAAK;AACvC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAG,IAAI,eAAe;AACvB,SAAO,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1B;AACA,SAAS,mBAAmB,KAAK,UAAU,WAAW,OAAO,aAAa,MAAM;AAC9E,MAAI,oBAAoB,cAAc;AACpC,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACN,IAAQ,SAAS;AACb,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,UAAM,WAAW,iBAAiB;AAClC,UAAM,IAAI,yBAAyB,SAAS,MAC1C,IAAI,yBAAyB,UAAU;AACzC,UAAM,WAAW,WAAW,SAAS,CAAC,WAAW,QAAQ,CAAC,KACxD,YAAY,WAAW,SAAS,CAAC,WAAW,QAAQ,CAAC;AACvD,QAAI,CAAC,YAAY,SAAS,WAAW,QAAQ,GAAG;AAC9C,YAAM,QAAQ;AACd,YAAM,SAAS;AAAA,IACrB,OAAW;AACL,YAAM,QAAQ;AACd,YAAM,SAAS;AAAA,IAChB;AAAA,EACF;AACD,MAAI,YAAY;AACd,QAAI,aAAa,sBAAsB,SAAS,QAAQ;AAAA,EACzD;AACH;AAIA,MAAM,iBAAN,MAAM,eAAc;AAAA,EAOlB,YAAY,QAAQ;AAsCpB;AAKA;AAKA;AAsBA;AAiBA,uBAAI;AA7FJ,iCAAW;AACX,qCAAe;AACf;AACA,iCAAW;AACX,iCAAW;AAGT,uBAAK,SAAU;AACf,iCAAc,gBAAd,6BAAc,aAAgB,OAAO,OAAO;AAAA,MAC1C,UAAU;AAAA,MACV,WAAW;AAAA,MACX,KAAK;AAAA,MACL,OAAO;AAAA,IACb,CAAK;AAAA,EACF;AAAA,EACD,SAAS;AACP,UAAM,cAAc,mBAAK,UAAW,SAAS,cAAc,KAAK;AAChE,gBAAY,YAAY;AACxB,gBAAY,aAAa,QAAQ,SAAS;AAC1C,UAAM,SAAS,mBAAK,SAAQ,WAAW;AACvC,gBAAY,iBAAiB,eAAe,eAAe;AAAA,MACzD;AAAA,IACN,CAAK;AACD,gBAAY,iBAAiB,eAAe,gCAAc,+BAAc;AAAA,MACtE;AAAA,IACN,CAAK;AACD,UAAM,UAAU,mBAAK,UAAW,SAAS,cAAc,KAAK;AAC5D,YAAQ,YAAY;AACpB,gBAAY,OAAO,OAAO;AAC1B,UAAM,WAAW,mBAAK,SAAQ;AAC9B,QAAI,UAAU;AACZ,YAAM;AAAA,QACJ;AAAA,MACD,IAAG;AACJ,YAAM,IAAI,mBAAK,SAAQ,WAAW,cAAc,QAAQ,IAAI,SAAS,CAAC,IAAI,SAAS,CAAC;AACpF,YAAM,iBAAiB,GAAG,MAAM,CAAC;AACjC,YAAM,MAAM,QAAQ,MAAM,SAAS,CAAC,CAAC;AAAA,IACtC;AACD,0BAAK,sCAAL;AACA,WAAO;AAAA,EACR;AAAA,EA4BD,OAAO;;AACL,uBAAK,UAAS,UAAU,IAAI,QAAQ;AACpC,KAAAF,MAAA,mBAAK,kBAAL,gBAAAA,IAAmB;AAAA,EACpB;AAAA,EACD,OAAO;;AACL,uBAAK,UAAS,UAAU,OAAO,QAAQ;AACvC,KAAAA,MAAA,mBAAK,cAAL,gBAAAA,IAAe;AAAA,EAChB;AAAA,EAuBD,MAAM,WAAW,SAAS;AACxB,UAAM,SAAS,MAAM,QAAQ;AAC7B,0BAAK,kDAAL,WAA4B;AAC5B,uBAAK,UAAS,QAAQ,QAAQ,mBAAK,sBAAQ;AAC3C,uBAAK,UAAW;AAAA,EACjB;AAAA,EACD,eAAe,aAAa;AAC1B,uBAAK,cAAe;AACpB,UAAM,SAAS,YAAY;AAC3B,0BAAK,kDAAL,WAA4B;AAC5B,uBAAK,UAAS,QAAQ,QAAQ,mBAAK,sBAAQ;AAAA,EAC5C;AAAA,EACD,SAAS;;AACP,uBAAK,UAAS;AACd,KAAAA,MAAA,mBAAK,kBAAL,gBAAAA,IAAmB;AACnB,uBAAK,cAAe;AAAA,EACrB;AACH;AAnHE;AACA;AACA;AACA;AACA;AACO;AAoCA;AAAA,iBAAY,SAAC,GAAG;AACrB,IAAE,gBAAe;AAClB;AACD;AAAA,aAAQ,SAAC,GAAG;AACV,qBAAK,SAAQ,sBAAsB;AACnC,IAAE,eAAc;AAChB,IAAE,gBAAe;AAClB;AACD;AAAA,cAAS,SAAC,GAAG;AACX,qBAAK,SAAQ,sBAAsB;AACnC,IAAE,eAAc;AAChB,IAAE,gBAAe;AAClB;AACD;AAAA,2BAAsB,SAAC,SAAS;AAC9B,QAAM,SAAS,mBAAK,SAAQ,WAAW;AACvC,UAAQ,iBAAiB,WAAW,sBAAK,sBAAS,KAAK,IAAI,GAAG;AAAA,IAC5D,SAAS;AAAA,IACT;AAAA,EACN,CAAK;AACD,UAAQ,iBAAiB,YAAY,sBAAK,wBAAU,KAAK,IAAI,GAAG;AAAA,IAC9D,SAAS;AAAA,IACT;AAAA,EACN,CAAK;AACD,UAAQ,iBAAiB,eAAe,eAAe;AAAA,IACrD;AAAA,EACN,CAAK;AACF;AASD;AAAA,qBAAgB,WAAG;AACjB,QAAM;AAAA,IACJ;AAAA,IACA,YAAAG;AAAA,EACN,IAAQ,mBAAK;AACT,QAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,SAAO,YAAY;AACnB,SAAO,WAAW;AAClB,SAAO,aAAa,gBAAgB,6BAAc,aAAY,UAAU,CAAC;AACzE,wBAAK,kDAAL,WAA4B;AAC5B,SAAO,iBAAiB,SAAS,OAAK;AACpC,IAAAA,YAAW,OAAM;AAAA,EACvB,GAAO;AAAA,IACD,QAAQA,YAAW;AAAA,EACzB,CAAK;AACD,qBAAK,UAAS,OAAO,MAAM;AAC5B;AACG;AAAA,cAAQ,WAAG;AACb,QAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,UAAQ,YAAY;AACpB,SAAO;AACR;AAxDD,aA1CI,gBA0CG;AApCP,aANI,gBAMG,aAAc;AANvB,IAAM,gBAAN;AAqHA,MAAM,iBAAiB;AAAA,EAIrB,YAAY,WAAW;AAGvB;AAaA;AAoCA;AAvDA,uBAAAC,WAAW;AACX,uBAAAC,WAAW;AACX;AAEE,uBAAK,YAAa;AAAA,EACnB;AAAA,EAsCD,KAAK,QAAQ,OAAO,OAAO;AACzB,UAAM,CAAC,GAAG,CAAC,IAAI,sBAAK,gCAAL,WAAmB,OAAO;AACzC,UAAM;AAAA,MACJ;AAAA,IACD,IAAG,mBAAKA,cAAL,mBAAKA,WAAa,sBAAK,oBAAL;AACtB,WAAO,OAAO,mBAAKA,UAAQ;AAC3B,UAAM,iBAAiB,GAAG,MAAM,CAAC;AACjC,UAAM,MAAM,QAAQ,MAAM,CAAC;AAAA,EAC5B;AAAA,EACD,OAAO;AACL,uBAAKA,WAAS;EACf;AAqBH;AA3EED,YAAA;AACAC,YAAA;AACA;AAIA;AAAA,YAAO,WAAG;AACR,QAAM,cAAc,mBAAKA,WAAW,SAAS,cAAc,KAAK;AAChE,cAAY,YAAY;AACxB,cAAY,aAAa,QAAQ,SAAS;AAC1C,cAAY,iBAAiB,eAAe,eAAe;AAAA,IACzD,QAAQ,mBAAK,YAAW;AAAA,EAC9B,CAAK;AACD,QAAM,UAAU,mBAAKD,WAAW,SAAS,cAAc,KAAK;AAC5D,UAAQ,YAAY;AACpB,cAAY,OAAO,OAAO;AAC1B,wBAAK,4CAAL;AACA,SAAO;AACR;AACD;AAAA,kBAAa,SAAC,OAAO,OAAO;AAC1B,MAAI,QAAQ;AACZ,MAAI,QAAQ;AACZ,aAAW,OAAO,OAAO;AACvB,UAAM,IAAI,IAAI,IAAI,IAAI;AACtB,QAAI,IAAI,OAAO;AACb;AAAA,IACD;AACD,UAAM,IAAI,IAAI,KAAK,QAAQ,IAAI,QAAQ;AACvC,QAAI,IAAI,OAAO;AACb,cAAQ;AACR,cAAQ;AACR;AAAA,IACD;AACD,QAAI,OAAO;AACT,UAAI,IAAI,OAAO;AACb,gBAAQ;AAAA,MACT;AAAA,IACT,WAAiB,IAAI,OAAO;AACpB,cAAQ;AAAA,IACT;AAAA,EACF;AACD,SAAO,CAAC,QAAQ,IAAI,QAAQ,OAAO,KAAK;AACzC;AAaD;AAAA,wBAAmB,WAAG;AACpB,QAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,SAAO,YAAY;AACnB,SAAO,WAAW;AAClB,SAAO,aAAa,gBAAgB,kCAAkC;AACtE,QAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,SAAO,OAAO,IAAI;AAClB,OAAK,YAAY;AACjB,OAAK,aAAa,gBAAgB,uCAAuC;AACzE,QAAM,SAAS,mBAAK,YAAW;AAC/B,SAAO,iBAAiB,eAAe,eAAe;AAAA,IACpD;AAAA,EACN,CAAK;AACD,SAAO,iBAAiB,SAAS,MAAM;AACrC,uBAAK,YAAW,mBAAmB,iBAAiB;AAAA,EAC1D,GAAO;AAAA,IACD;AAAA,EACN,CAAK;AACD,qBAAKA,WAAS,OAAO,MAAM;AAC5B;AAOH,SAAS,WAAW,KAAK,SAAS,OAAO;AACvC,aAAW,QAAQ,OAAO;AACxB,YAAQ,iBAAiB,MAAM,IAAI,IAAI,EAAE,KAAK,GAAG,CAAC;AAAA,EACnD;AACH;AACA,SAAS,aAAa,SAAS;AAC7B,SAAO,KAAK,MAAM,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,MAAM,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAC3F;AACA,MAAM,UAAU;AAAA,EAAhB;AACE,uBAAAE,MAAM;AAAA;AAAA,EACN,IAAI,KAAK;AACP,WAAO,GAAG,sBAAsB,GAAG,uBAAKA,MAAL,GAAU;AAAA,EAC9C;AACH;AAJEA,OAAA;AAKF,MAAM,gBAAN,MAAM,cAAa;AAAA,EAAnB;AAkBE,uBAAM;AAjBN,gCAAU,QAAO;AACjB,uBAAAA,MAAM;AACN,uBAAAC,SAAS;AAAA;AAAA,EACT,WAAW,sBAAsB;AAC/B,UAAM,MAAM;AACZ,UAAM,SAAS,IAAI,gBAAgB,GAAG,CAAC;AACvC,UAAM,MAAM,OAAO,WAAW,MAAM;AAAA,MAClC,oBAAoB;AAAA,IAC1B,CAAK;AACD,UAAM,QAAQ,IAAI;AAClB,UAAM,MAAM;AACZ,UAAM,UAAU,MAAM,OAAQ,EAAC,KAAK,MAAM;AACxC,UAAI,UAAU,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3C,aAAO,IAAI,YAAY,IAAI,aAAa,GAAG,GAAG,GAAG,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC,MAAM;AAAA,IAC9E,CAAK;AACD,WAAO,OAAO,MAAM,uBAAuB,OAAO;AAAA,EACnD;AAAA,EAyDD,MAAM,YAAY,MAAM;AACtB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAG;AACJ,WAAO,sBAAK,cAAL,WAAU,GAAG,YAAY,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAAA,EAC7D;AAAA,EACD,MAAM,WAAW,KAAK;AACpB,WAAO,sBAAK,cAAL,WAAU,KAAK;AAAA,EACvB;AAAA,EACD,MAAM,UAAU,IAAI;AAClB,uBAAKA,YAAL,mBAAKA,SAAW,oBAAI;AACpB,UAAM,OAAO,mBAAKA,SAAO,IAAI,EAAE;AAC/B,QAAI,CAAC,MAAM;AACT,aAAO;AAAA,IACR;AACD,QAAI,KAAK,QAAQ;AACf,WAAK,cAAc;AACnB,aAAO;AAAA,IACR;AACD,QAAI,KAAK,MAAM;AACb,aAAO,KAAK,YAAY,KAAK,IAAI;AAAA,IAClC;AACD,WAAO,KAAK,WAAW,KAAK,GAAG;AAAA,EAChC;AAAA,EACD,UAAU,IAAI;AACZ,UAAM,OAAO,mBAAKA,SAAO,IAAI,EAAE;AAC/B,QAAI,EAAC,6BAAM,QAAO;AAChB,aAAO;AAAA,IACR;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,SAAS,IAAI;AACX,uBAAKA,YAAL,mBAAKA,SAAW,oBAAI;AACpB,UAAM,OAAO,mBAAKA,SAAO,IAAI,EAAE;AAC/B,QAAI,CAAC,MAAM;AACT;AAAA,IACD;AACD,SAAK,cAAc;AACnB,QAAI,KAAK,eAAe,GAAG;AACzB;AAAA,IACD;AACD,SAAK,SAAS;AAAA,EACf;AAAA,EACD,UAAU,IAAI;AACZ,WAAO,GAAG,WAAW,SAAS,mBAAK,QAAO,GAAG;AAAA,EAC9C;AACH;AA1HE;AACAD,OAAA;AACAC,UAAA;AAeM;AAAA,SAAI,eAAC,KAAK,SAAS;AACvB,qBAAKA,YAAL,mBAAKA,SAAW,oBAAI;AACpB,MAAI,OAAO,mBAAKA,SAAO,IAAI,GAAG;AAC9B,MAAI,SAAS,MAAM;AACjB,WAAO;AAAA,EACR;AACD,MAAI,6BAAM,QAAQ;AAChB,SAAK,cAAc;AACnB,WAAO;AAAA,EACR;AACD,MAAI;AACF,oBAAS;AAAA,MACP,QAAQ;AAAA,MACR,IAAI,SAAS,mBAAK,QAAO,IAAI,uBAAKD,MAAL,GAAU;AAAA,MACvC,YAAY;AAAA,MACZ,OAAO;AAAA,IACf;AACM,QAAI;AACJ,QAAI,OAAO,YAAY,UAAU;AAC/B,WAAK,MAAM;AACX,cAAQ,MAAM,UAAU,SAAS,MAAM;AAAA,IAC/C,OAAa;AACL,cAAQ,KAAK,OAAO;AAAA,IACrB;AACD,QAAI,MAAM,SAAS,iBAAiB;AAClC,YAAM,+BAA+B,cAAa;AAClD,YAAM,aAAa,IAAI;AACvB,YAAM,eAAe,IAAI;AACzB,YAAM,eAAe,IAAI,QAAQ,CAAC,SAAS,WAAW;AACpD,qBAAa,SAAS,MAAM;AAC1B,eAAK,SAAS;AACd,eAAK,QAAQ;AACb;QACZ;AACU,mBAAW,SAAS,YAAY;AAC9B,gBAAM,MAAM,KAAK,SAAS,WAAW;AACrC,uBAAa,MAAO,MAAM,+BAAgC,GAAG,GAAG,wCAAwC;AAAA,QACpH;AACU,qBAAa,UAAU,WAAW,UAAU;AAAA,MACtD,CAAS;AACD,iBAAW,cAAc,KAAK;AAC9B,YAAM;AAAA,IACd,OAAa;AACL,WAAK,SAAS,MAAM,kBAAkB,KAAK;AAAA,IAC5C;AACD,SAAK,aAAa;AAAA,EACnB,SAAQ,GAAG;AACV,YAAQ,MAAM,CAAC;AACf,WAAO;AAAA,EACR;AACD,qBAAKC,SAAO,IAAI,KAAK,IAAI;AACzB,MAAI,MAAM;AACR,uBAAKA,SAAO,IAAI,KAAK,IAAI,IAAI;AAAA,EAC9B;AACD,SAAO;AACR;AAzEH,IAAM,eAAN;AA4HA,MAAM,eAAe;AAAA,EAKnB,YAAY,UAAU,KAAK;AAJ3B,kCAAY;AACZ,gCAAU;AACV;AACA,kCAAY;AAEV,uBAAK,UAAW;AAAA,EACjB;AAAA,EACD,IAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP,sBAAsB;AAAA,IACtB,WAAW;AAAA,EACf,GAAK;AACD,QAAI,UAAU;AACZ;IACD;AACD,QAAI,mBAAK,UAAS;AAChB;AAAA,IACD;AACD,UAAM,OAAO;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AACI,QAAI,mBAAK,eAAc,IAAI;AACzB,UAAI,mBAAK,WAAU,SAAS,GAAG;AAC7B,2BAAK,WAAU,SAAS;AAAA,MACzB;AACD,yBAAK,WAAY;AACjB,yBAAK,WAAU,KAAK,IAAI;AACxB;AAAA,IACD;AACD,QAAI,uBAAuB,mBAAK,WAAU,mBAAK,UAAS,EAAE,SAAS,MAAM;AACvE,UAAI,UAAU;AACZ,aAAK,OAAO,mBAAK,WAAU,mBAAK,UAAS,EAAE;AAAA,MAC5C;AACD,yBAAK,WAAU,mBAAK,UAAS,IAAI;AACjC;AAAA,IACD;AACD,UAAM,OAAO,mBAAK,aAAY;AAC9B,QAAI,SAAS,mBAAK,WAAU;AAC1B,yBAAK,WAAU,OAAO,GAAG,CAAC;AAAA,IAChC,OAAW;AACL,yBAAK,WAAY;AACjB,UAAI,OAAO,mBAAK,WAAU,QAAQ;AAChC,2BAAK,WAAU,OAAO,IAAI;AAAA,MAC3B;AAAA,IACF;AACD,uBAAK,WAAU,KAAK,IAAI;AAAA,EACzB;AAAA,EACD,OAAO;AACL,QAAI,mBAAK,eAAc,IAAI;AACzB;AAAA,IACD;AACD,uBAAK,SAAU;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACD,IAAG,mBAAK,WAAU,mBAAK,UAAS;AACjC;AACA;AACA,uBAAK,SAAU;AACf,uBAAK,WAAL,mBAAK,aAAa;AAAA,EACnB;AAAA,EACD,OAAO;AACL,QAAI,mBAAK,aAAY,mBAAK,WAAU,SAAS,GAAG;AAC9C,yBAAK,WAAL,mBAAK,aAAa;AAClB,yBAAK,SAAU;AACf,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACD,IAAG,mBAAK,WAAU,mBAAK,UAAS;AACjC;AACA;AACA,yBAAK,SAAU;AAAA,IAChB;AAAA,EACF;AAAA,EACD,qBAAqB;AACnB,WAAO,mBAAK,eAAc;AAAA,EAC3B;AAAA,EACD,qBAAqB;AACnB,WAAO,mBAAK,aAAY,mBAAK,WAAU,SAAS;AAAA,EACjD;AAAA,EACD,UAAU;AACR,uBAAK,WAAY;AAAA,EAClB;AACH;AA1FE;AACA;AACA;AACA;AAwFF,MAAM,gBAAgB;AAAA,EACpB,YAAY,WAAW;AA0BvB;AAzBE,SAAK,SAAS;AACd,SAAK,YAAY,oBAAI;AACrB,SAAK,UAAU,oBAAI;AACnB,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,iBAAiB;AACrB,eAAW,CAAC,MAAM,UAAU,UAAU,EAAE,KAAK,WAAW;AACtD,iBAAW,OAAO,MAAM;AACtB,cAAM,WAAW,IAAI,WAAW,MAAM;AACtC,YAAI,SAAS,UAAU;AACrB,eAAK,UAAU,IAAI,IAAI,MAAM,CAAC,GAAG;AAAA,YAC/B;AAAA,YACA;AAAA,UACZ,CAAW;AACD,eAAK,QAAQ,IAAI,IAAI,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;AAAA,QAChD,WAAmB,CAAC,SAAS,CAAC,UAAU;AAC9B,eAAK,UAAU,IAAI,KAAK;AAAA,YACtB;AAAA,YACA;AAAA,UACZ,CAAW;AACD,eAAK,QAAQ,IAAI,IAAI,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAmBD,KAAK,MAAM,OAAO;AAChB,QAAI,CAAC,KAAK,QAAQ,IAAI,MAAM,GAAG,GAAG;AAChC;AAAA,IACD;AACD,UAAMN,QAAO,KAAK,UAAU,IAAI,sBAAK,0BAAL,WAAgB,MAAM;AACtD,QAAI,CAACA,OAAM;AACT;AAAA,IACD;AACD,UAAM;AAAA,MACJ;AAAA,MACA,SAAS;AAAA,QACP,UAAU;AAAA,QACV,OAAO,CAAE;AAAA,QACT,UAAU;AAAA,MACX;AAAA,IACF,IAAGA;AACJ,QAAI,WAAW,CAAC,QAAQ,MAAM,KAAK,GAAG;AACpC;AAAA,IACD;AACD,aAAS,KAAK,MAAM,GAAG,MAAM,KAAK,EAAC;AACnC,QAAI,CAAC,SAAS;AACZ,YAAM,gBAAe;AACrB,YAAM,eAAc;AAAA,IACrB;AAAA,EACF;AACH;AA3CE;AAAA,eAAU,SAAC,OAAO;AAChB,MAAI,MAAM,QAAQ;AAChB,SAAK,OAAO,KAAK,KAAK;AAAA,EACvB;AACD,MAAI,MAAM,SAAS;AACjB,SAAK,OAAO,KAAK,MAAM;AAAA,EACxB;AACD,MAAI,MAAM,SAAS;AACjB,SAAK,OAAO,KAAK,MAAM;AAAA,EACxB;AACD,MAAI,MAAM,UAAU;AAClB,SAAK,OAAO,KAAK,OAAO;AAAA,EACzB;AACD,OAAK,OAAO,KAAK,MAAM,GAAG;AAC1B,QAAM,MAAM,KAAK,OAAO,KAAK,GAAG;AAChC,OAAK,OAAO,SAAS;AACrB,SAAO;AACR;AA2BH,MAAM,gBAAN,MAAM,cAAa;AAAA,EAEjB,IAAI,UAAU;AACZ,UAAM,SAAS,oBAAI,IAAI,CAAC,CAAC,cAAc,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;AAC/D,mBAAe,MAAM;AACrB,WAAO,OAAO,MAAM,WAAW,MAAM;AAAA,EACtC;AAAA,EACD,QAAQ,OAAO;AACb,UAAM,MAAM,OAAO,KAAK;AACxB,QAAI,CAAC,OAAO,WAAW,yBAAyB,EAAE,SAAS;AACzD,aAAO;AAAA,IACR;AACD,eAAW,CAAC,MAAM,GAAG,KAAK,KAAK,SAAS;AACtC,UAAI,IAAI,MAAM,CAAC,GAAG,MAAM,MAAM,IAAI,CAAC,CAAC,GAAG;AACrC,eAAO,cAAa,eAAe,IAAI,IAAI;AAAA,MAC5C;AAAA,IACF;AACD,WAAO;AAAA,EACR;AAAA,EACD,WAAW,MAAM;AACf,UAAM,MAAM,KAAK,QAAQ,IAAI,IAAI;AACjC,QAAI,CAAC,KAAK;AACR,aAAO;AAAA,IACR;AACD,WAAO,KAAK,aAAa,GAAG,GAAG;AAAA,EAChC;AACH;AAzBE,cADI,eACG,kBAAiB,oBAAI,IAAI,CAAC,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC;AAD1F,IAAM,eAAN;AA2BA,MAAM,6BAAN,MAAM,2BAA0B;AAAA,EA4G9B,YAAY,WAAW,QAAQ,gBAAgB,UAAU,aAAa,YAAY,iBAAiB,+BAA+B,uBAAuB,iCAAiC,WAAW;AAyKrM;AAKA;AA0DA;AAmBA;AAiEA;AAOA;AAKA;AAaA;AAsCA;AAaA;AAIA;AAgBA;AAIA;AAwJA;AAYA;AAiKA;AAWA;AAwDA;AAkBA,uBAAI;AAmFJ;AAuCA;AA/hCA,yCAAmB,IAAI;AACvB,sCAAgB;AAChB,oCAAc,oBAAI;AAClB,mCAAa,oBAAI;AACjB,wCAAkB;AAClB,2CAAqB;AACrB,oDAA8B;AAC9B,wCAAkB,IAAI;AACtB,qCAAe;AACf,0CAAoB;AACpB,sDAAgC,oBAAI;AACpC,yCAAmB;AACnB,qCAAe;AACf,0CAAoB,oBAAI;AACxB,uDAAiC;AACjC,+CAAyB;AACzB,yDAAmC;AACnC,uCAAiB;AACjB,qDAA+B;AAC/B,wCAAkB;AAClB,yCAAmB;AACnB,8CAAwB;AACxB,0CAAoB;AACpB,mCAAa,IAAI;AACjB,mCAAa;AACb,mCAAa;AACb,2CAAqB;AACrB,2CAAqB;AACrB,kDAA4B;AAC5B,mCAAa;AACb,8BAAQ,qBAAqB;AAC7B,yCAAmB,oBAAI;AACvB,0CAAoB;AACpB,oCAAc;AACd,uCAAiB;AACjB,wCAAkB;AAAA,MAChB,WAAW;AAAA,MACX,SAAS;AAAA,MACT,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,MACpB,mBAAmB;AAAA,MACnB,iBAAiB;AAAA,IACrB;AACE,qCAAe,CAAC,GAAG,CAAC;AACpB,8CAAwB;AACxB,mCAAa;AACb,gCAAU;AA8DR,UAAM,SAAS,KAAK,UAAU,mBAAK,kBAAiB;AACpD,uBAAK,YAAa;AAClB,uBAAK,SAAU;AACf,uBAAK,iBAAkB;AACvB,SAAK,YAAY;AACjB,aAAS,IAAI,iBAAiB,KAAK,gBAAgB,KAAK,IAAI,GAAG;AAAA,MAC7D;AAAA,IACN,CAAK;AACD,aAAS,IAAI,gBAAgB,KAAK,eAAe,KAAK,IAAI,GAAG;AAAA,MAC3D;AAAA,IACN,CAAK;AACD,aAAS,IAAI,iBAAiB,KAAK,gBAAgB,KAAK,IAAI,GAAG;AAAA,MAC7D;AAAA,IACN,CAAK;AACD,aAAS,IAAI,oBAAoB,KAAK,mBAAmB,KAAK,IAAI,GAAG;AAAA,MACnE;AAAA,IACN,CAAK;AACD,aAAS,IAAI,iBAAiB,KAAK,gBAAgB,KAAK,IAAI,GAAG;AAAA,MAC7D;AAAA,IACN,CAAK;AACD,aAAS,IAAI,gCAAgC,SAAO,KAAK,aAAa,IAAI,MAAM,IAAI,KAAK,GAAG;AAAA,MAC1F;AAAA,IACN,CAAK;AACD,0BAAK,gDAAL;AACA,0BAAK,sDAAL;AACA,0BAAK,4CAAL;AACA,uBAAK,oBAAqB,YAAY;AACtC,uBAAK,gBAAiB,YAAY;AAClC,uBAAK,aAAc;AACnB,uBAAK,kBAAmB,mBAAmB;AAC3C,uBAAK,gCAAiC;AACtC,uBAAK,wBAAyB;AAC9B,uBAAK,kCAAmC;AACxC,uBAAK,YAAa,aAAa;AAC/B,SAAK,iBAAiB;AAAA,MACpB,WAAW,cAAc;AAAA,MACzB,UAAU;AAAA,IAChB;AACI,SAAK,iBAAiB;AAAA,EACvB;AAAA,EAlGD,WAAW,mBAAmB;AAC5B,UAAM,QAAQ,2BAA0B;AACxC,UAAM,eAAe,UAAQ,mBAAK,YAAW,SAAS,SAAS,aAAa,KAAK,SAAS,cAAc,YAAY,YAAY,KAAK,sBAAqB;AAC1J,UAAM,mBAAmB,CAAC,OAAO;AAAA,MAC/B,QAAQ;AAAA,IACd,MAAU;AACJ,UAAI,cAAc,kBAAkB;AAClC,cAAM;AAAA,UACJ;AAAA,QACD,IAAG;AACJ,eAAO,SAAS,UAAU,SAAS;AAAA,MACpC;AACD,aAAO;AAAA,IACb;AACI,UAAM,QAAQ,KAAK;AACnB,UAAM,MAAM,KAAK;AACjB,WAAO,OAAO,MAAM,oBAAoB,IAAI,gBAAgB,CAAC,CAAC,CAAC,UAAU,YAAY,GAAG,MAAM,WAAW;AAAA,MACvG,SAAS;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,UAAU,YAAY,GAAG,MAAM,MAAM;AAAA,MACzC,SAAS;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,UAAU,gBAAgB,oBAAoB,gBAAgB,kBAAkB,GAAG,MAAM,MAAM;AAAA,MACnG,SAAS;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,aAAa,iBAAiB,kBAAkB,mBAAmB,iBAAiB,qBAAqB,sBAAsB,UAAU,eAAe,gBAAgB,YAAY,GAAG,MAAM,QAAQ;AAAA,MACzM,SAAS;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,SAAS,WAAW,GAAG,MAAM,0BAA0B;AAAA,MAC3D,SAAS,CAAC,MAAM;AAAA,QACd,QAAQ;AAAA,MAChB,MAAY,EAAE,cAAc,sBAAsB,mBAAK,YAAW,SAAS,EAAE,KAAK,CAAC,KAAK;AAAA,IACxF,CAAK,GAAG,CAAC,CAAC,KAAK,OAAO,GAAG,MAAM,0BAA0B;AAAA,MACnD,SAAS,CAAC,MAAM;AAAA,QACd,QAAQ;AAAA,MAChB,MAAY,EAAE,cAAc,sBAAsB,mBAAK,YAAW,SAAS,SAAS,aAAa;AAAA,IAC5F,IAAG,CAAC,CAAC,UAAU,YAAY,GAAG,MAAM,WAAW,GAAG,CAAC,CAAC,aAAa,eAAe,GAAG,MAAM,0BAA0B;AAAA,MAClH,MAAM,CAAC,CAAC,OAAO,CAAC;AAAA,MAChB,SAAS;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,kBAAkB,qBAAqB,GAAG,MAAM,0BAA0B;AAAA,MAC9E,MAAM,CAAC,CAAC,KAAK,CAAC;AAAA,MACd,SAAS;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,cAAc,gBAAgB,GAAG,MAAM,0BAA0B;AAAA,MACrE,MAAM,CAAC,OAAO,CAAC;AAAA,MACf,SAAS;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,mBAAmB,sBAAsB,GAAG,MAAM,0BAA0B;AAAA,MAChF,MAAM,CAAC,KAAK,CAAC;AAAA,MACb,SAAS;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,WAAW,aAAa,GAAG,MAAM,0BAA0B;AAAA,MAC/D,MAAM,CAAC,GAAG,CAAC,KAAK;AAAA,MAChB,SAAS;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,gBAAgB,mBAAmB,GAAG,MAAM,0BAA0B;AAAA,MAC1E,MAAM,CAAC,GAAG,CAAC,GAAG;AAAA,MACd,SAAS;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,aAAa,eAAe,GAAG,MAAM,0BAA0B;AAAA,MACnE,MAAM,CAAC,GAAG,KAAK;AAAA,MACf,SAAS;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,kBAAkB,qBAAqB,GAAG,MAAM,0BAA0B;AAAA,MAC9E,MAAM,CAAC,GAAG,GAAG;AAAA,MACb,SAAS;AAAA,IACf,CAAK,CAAC,CAAC,CAAC;AAAA,EACL;AAAA,EA0CD,UAAU;;AACR,KAAAD,MAAA,mBAAK,sBAAL,gBAAAA,IAAuB;AACvB,uBAAK,kBAAmB;AACxB,SAAK,UAAU;AACf,eAAW,SAAS,mBAAK,YAAW,OAAM,GAAI;AAC5C,YAAM,QAAO;AAAA,IACd;AACD,uBAAK,YAAW;AAChB,uBAAK,aAAY;AACjB,uBAAK,mBAAkB;AACvB,uBAAK,eAAgB;AACrB,uBAAK,kBAAiB;AACtB,uBAAK,iBAAgB;AACrB,6BAAK,qBAAL,mBAAsB;AACtB,6BAAK,uBAAL,mBAAwB;AACxB,uBAAK,mBAAoB;AACzB,QAAI,mBAAK,+BAA8B;AACrC,mBAAa,mBAAK,6BAA4B;AAC9C,yBAAK,8BAA+B;AAAA,IACrC;AACD,QAAI,mBAAK,wBAAuB;AAC9B,mBAAa,mBAAK,sBAAqB;AACvC,yBAAK,uBAAwB;AAAA,IAC9B;AAAA,EACF;AAAA,EACD,eAAe,IAAI;AACjB,WAAO,YAAY,IAAI,CAAC,KAAK,SAAS,GAAG,MAAM,CAAC;AAAA,EACjD;AAAA,EACD,IAAI,YAAY;AACd,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,IAAI,oBAAoB;AACtB,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,IAAI,+BAA+B;AACjC,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,IAAI,YAAY;AACd,WAAO,OAAO,MAAM,aAAa,mBAAK,eAAc,mBAAK,gBAAe,aAAa,mBAAK,aAAY,YAAY,mBAAK,aAAY,UAAU,IAAI,MAAM;AAAA,EACxJ;AAAA,EACD,IAAI,YAAY;AACd,WAAO,OAAO,MAAM,aAAa,iBAAiB,mBAAK,WAAU,EAAE,SAAS;AAAA,EAC7E;AAAA,EACD,IAAI,kBAAkB;AACpB,WAAO,OAAO,MAAM,mBAAmB,mBAAK,oBAAmB,IAAI,IAAI,mBAAK,kBAAiB,MAAM,GAAG,EAAE,IAAI,UAAQ,KAAK,MAAM,GAAG,EAAE,IAAI,OAAK,EAAE,KAAM,EAAC,CAAC,IAAI,IAAI;AAAA,EAChK;AAAA,EACD,IAAI,sBAAsB;AACxB,WAAO,OAAO,MAAM,uBAAuB,KAAK,kBAAkB,IAAI,IAAI,MAAM,KAAK,KAAK,iBAAiB,OAAK,EAAE,SAAS,CAAC,IAAI,IAAI;AAAA,EACrI;AAAA,EACD,4BAA4B,aAAa;AACvC,uBAAK,2BAA4B;AAAA,EAClC;AAAA,EACD,YAAY,QAAQ,YAAY,OAAO;;AACrC,KAAAA,MAAA,mBAAK,qBAAL,gBAAAA,IAAsB,YAAY,MAAM,QAAQ;AAAA,EACjD;AAAA,EACD,aAAa,MAAM,UAAU;AAC3B,SAAK,UAAU,GAAG,+BAA+B,UAAU;AAAA,MACzD,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,IACnB,CAAK;AACD,SAAK,UAAU,SAAS,0BAA0B;AAAA,MAChD,QAAQ;AAAA,MACR;AAAA,IACN,CAAK;AAAA,EACF;AAAA,EACD,cAAc,MAAM,OAAO;AACzB,SAAK,UAAU,SAAS,iBAAiB;AAAA,MACvC,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,IACN,CAAK;AAAA,EACF;AAAA,EACD,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,EACJ,GAAK;AACD,YAAQ,MAAI;AAAA,MACV,KAAK;AACH,2BAAK,kCAAmC;AACxC;AAAA,IACH;AAAA,EACF;AAAA,EACD,eAAe;AAAA,IACb;AAAA,EACJ,GAAK;AACD,uBAAK,mBAAoB,aAAa;AAAA,EACvC;AAAA,EACD,qBAAqB;AACnB,uBAAK,YAAW;EACjB;AAAA,EACD,WAAW,GAAG,GAAG;AACf,eAAW,SAAS,mBAAK,YAAW,OAAM,GAAI;AAC5C,YAAM;AAAA,QACJ,GAAG;AAAA,QACH,GAAG;AAAA,QACH;AAAA,QACA;AAAA,MACR,IAAU,MAAM,IAAI;AACd,UAAI,KAAK,UAAU,KAAK,SAAS,SAAS,KAAK,UAAU,KAAK,SAAS,QAAQ;AAC7E,eAAO;AAAA,MACR;AAAA,IACF;AACD,WAAO;AAAA,EACR;AAAA,EACD,kBAAkB,QAAQ,OAAO;AAC/B,uBAAK,SAAQ,UAAU,OAAO,gBAAgB,KAAK;AAAA,EACpD;AAAA,EACD,iBAAiB,QAAQ;AACvB,uBAAK,mBAAkB,IAAI,MAAM;AAAA,EAClC;AAAA,EACD,oBAAoB,QAAQ;AAC1B,uBAAK,mBAAkB,OAAO,MAAM;AAAA,EACrC;AAAA,EACD,gBAAgB;AAAA,IACd;AAAA,EACJ,GAAK;AACD,SAAK,eAAc;AACnB,SAAK,eAAe,YAAY,QAAQ,cAAc;AACtD,eAAW,UAAU,mBAAK,oBAAmB;AAC3C,aAAO,gBAAe;AAAA,IACvB;AAAA,EACF;AAAA,EACD,mBAAmB;AAAA,IACjB;AAAA,EACJ,GAAK;AACD,SAAK,eAAc;AACnB,SAAK,eAAe,WAAW;AAAA,EAChC;AAAA,EAoBD,mBAAmB,mBAAmB,IAAI;AACxC,UAAM,YAAY,SAAS;AAC3B,QAAI,CAAC,aAAa,UAAU,aAAa;AACvC;AAAA,IACD;AACD,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAG;AACJ,UAAM,OAAO,UAAU;AACvB,UAAM,gBAAgB,sBAAK,gEAAL,WAAmC;AACzD,UAAM,YAAY,cAAc,QAAQ,YAAY;AACpD,UAAM,QAAQ,KAAK,kBAAkB,SAAS;AAC9C,QAAI,CAAC,OAAO;AACV;AAAA,IACD;AACD,cAAU,MAAK;AACf,UAAM,QAAQ,sBAAK,gDAAL,WAA2B;AACzC,UAAM,aAAa,mBAAK,WAAU,qBAAqB;AACvD,UAAM,WAAW,MAAM;AACrB,qCAAO,sBAAsB;AAAA,QAC3B,GAAG;AAAA,QACH,GAAG;AAAA,MACJ,GAAE,OAAO;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACR;AACM,UAAI,YAAY;AACd,aAAK,eAAe,aAAa,MAAM,IAAI;AAAA,MAC5C;AAAA,IACP;AACI,QAAI,YAAY;AACd,WAAK,aAAa,qBAAqB,WAAW,QAAQ;AAC1D;AAAA,IACD;AACD;EACD;AAAA,EAeD,uBAAuB,QAAQ;AAC7B,QAAI,CAAC,OAAO,QAAS,KAAI,mBAAK,uBAAsB,CAAC,mBAAK,oBAAmB,IAAI,OAAO,EAAE,GAAG;AAC3F,yBAAK,oBAAmB,SAAS,OAAO,IAAI,MAAM;AAAA,IACnD;AAAA,EACF;AAAA,EA+FD,OAAO;AACL,SAAK,iBAAiB;AACtB,QAAI,mBAAK,wBAAuB;AAC9B,yBAAK,uBAAwB;AAC7B,4BAAK,8BAAL,WAAkB;AAAA,IACnB;AACD,QAAI,CAAC,KAAK,cAAc;AACtB;AAAA,IACD;AACD,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,eAAW,UAAU,mBAAK,mBAAkB;AAC1C,UAAI,OAAO,IAAI,SAAS,aAAa,GAAG;AACtC,2BAAK,oBAAqB,CAAC,QAAQ,aAAa;AAChD,eAAO,sBAAsB;AAC7B;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAAA,EACD,QAAQ;AACN,QAAI,CAAC,mBAAK,qBAAoB;AAC5B;AAAA,IACD;AACD,UAAM,CAAC,YAAY,iBAAiB,IAAI,mBAAK;AAC7C,uBAAK,oBAAqB;AAC1B,sBAAkB,iBAAiB,WAAW,MAAM;AAClD,iBAAW,sBAAsB;AAAA,IACvC,GAAO;AAAA,MACD,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,IACnB,CAAK;AACD,sBAAkB,MAAK;AAAA,EACxB;AAAA,EA+CD,mBAAmB;AACjB,0BAAK,4CAAL;AACA,0BAAK,kDAAL;AAAA,EACD;AAAA,EACD,sBAAsB;AACpB,0BAAK,kDAAL;AACA,0BAAK,wDAAL;AAAA,EACD;AAAA,EACD,SAAS,OAAO;AACd,eAAW;AAAA,MACT;AAAA,IACN,KAAS,MAAM,aAAa,OAAO;AAC7B,iBAAW,cAAc,mBAAK,eAAc;AAC1C,YAAI,WAAW,yBAAyB,IAAI,GAAG;AAC7C,gBAAM,aAAa,aAAa;AAChC,gBAAM,eAAc;AACpB;AAAA,QACD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACD,KAAK,OAAO;AACV,eAAW,QAAQ,MAAM,aAAa,OAAO;AAC3C,iBAAW,cAAc,mBAAK,eAAc;AAC1C,YAAI,WAAW,yBAAyB,KAAK,IAAI,GAAG;AAClD,qBAAW,MAAM,MAAM,KAAK,YAAY;AACxC,gBAAM,eAAc;AACpB;AAAA,QACD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACD,KAAK,OAAO;;AACV,UAAM,eAAc;AACpB,KAAAA,MAAA,mBAAK,mBAAL,gBAAAA,IAAoB;AACpB,QAAI,CAAC,KAAK,cAAc;AACtB;AAAA,IACD;AACD,UAAM,UAAU;AAChB,eAAW,UAAU,mBAAK,mBAAkB;AAC1C,YAAM,aAAa,OAAO,UAAU,IAAI;AACxC,UAAI,YAAY;AACd,gBAAQ,KAAK,UAAU;AAAA,MACxB;AAAA,IACF;AACD,QAAI,QAAQ,WAAW,GAAG;AACxB;AAAA,IACD;AACD,UAAM,cAAc,QAAQ,qBAAqB,KAAK,UAAU,OAAO,CAAC;AAAA,EACzE;AAAA,EACD,IAAI,OAAO;AACT,SAAK,KAAK,KAAK;AACf,SAAK,OAAM;AAAA,EACZ;AAAA,EACD,MAAM,OAAO;AACX,UAAM,eAAc;AACpB,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,eAAW,QAAQ,cAAc,OAAO;AACtC,iBAAW,cAAc,mBAAK,eAAc;AAC1C,YAAI,WAAW,yBAAyB,KAAK,IAAI,GAAG;AAClD,qBAAW,MAAM,MAAM,KAAK,YAAY;AACxC;AAAA,QACD;AAAA,MACF;AAAA,IACF;AACD,QAAI,OAAO,cAAc,QAAQ,mBAAmB;AACpD,QAAI,CAAC,MAAM;AACT;AAAA,IACD;AACD,QAAI;AACF,aAAO,KAAK,MAAM,IAAI;AAAA,IACvB,SAAQ,IAAI;AACX,WAAK,WAAW,GAAG,OAAO,IAAI;AAC9B;AAAA,IACD;AACD,QAAI,CAAC,MAAM,QAAQ,IAAI,GAAG;AACxB;AAAA,IACD;AACD,SAAK,YAAW;AAChB,UAAM,QAAQ,KAAK;AACnB,QAAI;AACF,YAAM,aAAa;AACnB,iBAAW,UAAU,MAAM;AACzB,cAAM,qBAAqB,MAAM,YAAY,MAAM;AACnD,YAAI,CAAC,oBAAoB;AACvB;AAAA,QACD;AACD,mBAAW,KAAK,kBAAkB;AAAA,MACnC;AACD,YAAM,MAAM,MAAM;AAChB,mBAAW,UAAU,YAAY;AAC/B,gCAAK,wCAAL,WAAuB;AAAA,QACxB;AACD,8BAAK,kCAAL,WAAoB;AAAA,MAC5B;AACM,YAAM,OAAO,MAAM;AACjB,mBAAW,UAAU,YAAY;AAC/B,iBAAO,OAAM;AAAA,QACd;AAAA,MACT;AACM,WAAK,YAAY;AAAA,QACf;AAAA,QACA;AAAA,QACA,UAAU;AAAA,MAClB,CAAO;AAAA,IACF,SAAQ,IAAI;AACX,WAAK,WAAW,GAAG,OAAO,IAAI;AAAA,IAC/B;AAAA,EACF;AAAA,EACD,QAAQ,OAAO;AACb,QAAI,CAAC,KAAK,kBAAkB,MAAM,QAAQ,SAAS;AACjD,WAAK,iBAAiB;AAAA,IACvB;AACD,QAAI,mBAAK,WAAU,qBAAqB,QAAQ,CAAC,KAAK,0BAA0B;AAC9E,iCAA0B,iBAAiB,KAAK,MAAM,KAAK;AAAA,IAC5D;AAAA,EACF;AAAA,EACD,MAAM,OAAO;AACX,QAAI,KAAK,kBAAkB,MAAM,QAAQ,SAAS;AAChD,WAAK,iBAAiB;AACtB,UAAI,mBAAK,wBAAuB;AAC9B,2BAAK,uBAAwB;AAC7B,8BAAK,8BAAL,WAAkB;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAAA,EACD,gBAAgB;AAAA,IACd;AAAA,EACJ,GAAK;AACD,YAAQ,MAAI;AAAA,MACV,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,aAAK,IAAI;AACT;AAAA,MACF,KAAK;AACH,aAAK,mBAAmB,cAAc;AACtC;AAAA,IACH;AAAA,EACF;AAAA,EAmBD,gBAAgB,WAAW;AACzB,QAAI,WAAW;AACb,4BAAK,sCAAL;AACA,4BAAK,kDAAL;AACA,4BAAK,gDAAL,WAA2B;AAAA,QACzB,WAAW,mBAAK,WAAU,qBAAqB;AAAA,QAC/C,SAAS,sBAAK,sBAAL;AAAA,QACT,oBAAoB,mBAAK,iBAAgB,mBAAoB;AAAA,QAC7D,oBAAoB,mBAAK,iBAAgB,mBAAoB;AAAA,QAC7D,mBAAmB;AAAA,MAC3B;AAAA,IACA,OAAW;AACL,4BAAK,4CAAL;AACA,4BAAK,wDAAL;AACA,4BAAK,gDAAL,WAA2B;AAAA,QACzB,WAAW;AAAA,MACnB;AACM,WAAK,kBAAkB,KAAK;AAAA,IAC7B;AAAA,EACF;AAAA,EACD,oBAAoB,OAAO;AACzB,QAAI,mBAAK,eAAc;AACrB;AAAA,IACD;AACD,uBAAK,cAAe;AACpB,eAAW,cAAc,mBAAK,eAAc;AAC1C,4BAAK,wCAAL,WAAuB,WAAW;AAAA,IACnC;AAAA,EACF;AAAA,EACD,QAAQ;AACN,WAAO,mBAAK,YAAW;AAAA,EACxB;AAAA,EACD,IAAI,eAAe;AACjB,WAAO,mBAAK,YAAW,IAAI,mBAAK,kBAAiB;AAAA,EAClD;AAAA,EACD,SAAS,WAAW;AAClB,WAAO,mBAAK,YAAW,IAAI,SAAS;AAAA,EACrC;AAAA,EACD,IAAI,mBAAmB;AACrB,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,SAAS,OAAO;AACd,uBAAK,YAAW,IAAI,MAAM,WAAW,KAAK;AAC1C,QAAI,mBAAK,aAAY;AACnB,YAAM,OAAM;AAAA,IAClB,OAAW;AACL,YAAM,QAAO;AAAA,IACd;AAAA,EACF;AAAA,EACD,YAAY,OAAO;AACjB,uBAAK,YAAW,OAAO,MAAM,SAAS;AAAA,EACvC;AAAA,EACD,WAAW,MAAM,SAAS,MAAM,iBAAiB,OAAO;AACtD,QAAI,mBAAK,WAAU,MAAM;AACvB;AAAA,IACD;AACD,uBAAK,OAAQ;AACb,QAAI,SAAS,qBAAqB,MAAM;AACtC,WAAK,gBAAgB,KAAK;AAC1B,4BAAK,4BAAL;AACA;AAAA,IACD;AACD,SAAK,gBAAgB,IAAI;AACzB,0BAAK,0BAAL;AACA,SAAK,YAAW;AAChB,eAAW,SAAS,mBAAK,YAAW,OAAM,GAAI;AAC5C,YAAM,WAAW,IAAI;AAAA,IACtB;AACD,QAAI,CAAC,UAAU,gBAAgB;AAC7B,WAAK,yBAAwB;AAC7B;AAAA,IACD;AACD,QAAI,CAAC,QAAQ;AACX;AAAA,IACD;AACD,eAAW,UAAU,mBAAK,aAAY,OAAM,GAAI;AAC9C,UAAI,OAAO,wBAAwB,QAAQ;AACzC,aAAK,YAAY,MAAM;AACvB,eAAO,gBAAe;AACtB;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAAA,EACD,2BAA2B;AACzB,QAAI,KAAK,aAAa,2BAA2B;AAC/C,WAAK,aAAa;IACnB;AAAA,EACF;AAAA,EACD,cAAc,MAAM;AAClB,QAAI,SAAS,mBAAK,QAAO;AACvB;AAAA,IACD;AACD,SAAK,UAAU,SAAS,8BAA8B;AAAA,MACpD,QAAQ;AAAA,MACR;AAAA,IACN,CAAK;AAAA,EACF;AAAA,EACD,aAAa,MAAM,OAAO;;AACxB,QAAI,CAAC,mBAAK,eAAc;AACtB;AAAA,IACD;AACD,YAAQ,MAAI;AAAA,MACV,KAAK,2BAA2B;AAC9B,aAAK,aAAa;AAClB;AAAA,MACF,KAAK,2BAA2B;AAC9B,SAAAA,MAAA,mBAAK,+BAAL,gBAAAA,IAAgC,YAAY;AAC5C;AAAA,MACF,KAAK,2BAA2B;AAC9B,aAAK,UAAU,SAAS,mBAAmB;AAAA,UACzC,QAAQ;AAAA,UACR,SAAS;AAAA,YACP,MAAM;AAAA,YACN,MAAM;AAAA,cACJ,MAAM;AAAA,cACN,QAAQ;AAAA,YACT;AAAA,UACF;AAAA,QACX,CAAS;AACD,SAAC,mBAAK,mBAAL,mBAAK,gBAAmB,oBAAI,IAAK,IAAE,IAAI,MAAM,KAAK;AACnD,aAAK,eAAe,aAAa,KAAK;AACtC;AAAA,IACH;AACD,eAAW,UAAU,mBAAK,mBAAkB;AAC1C,aAAO,aAAa,MAAM,KAAK;AAAA,IAChC;AACD,eAAW,cAAc,mBAAK,eAAc;AAC1C,iBAAW,oBAAoB,MAAM,KAAK;AAAA,IAC3C;AAAA,EACF;AAAA,EACD,eAAe,MAAM,SAAS,eAAe,OAAO;;AAClD,eAAW,UAAU,mBAAK,aAAY,OAAM,GAAI;AAC9C,UAAI,OAAO,eAAe,MAAM;AAC9B,eAAO,KAAK,OAAO;AAAA,MACpB;AAAA,IACF;AACD,UAAM,UAAQA,MAAA,mBAAK,oBAAL,gBAAAA,IAAqB,IAAI,2BAA2B,wBAAuB;AACzF,QAAI,UAAU,SAAS;AACrB,4BAAK,wCAAL,WAAuB,CAAC,CAAC,2BAA2B,oBAAoB,OAAO,CAAC;AAAA,IACjF;AAAA,EACF;AAAA,EACD,cAAc,WAAW,OAAO;AAC9B,QAAI,mBAAK,gBAAe,UAAU;AAChC;AAAA,IACD;AACD,uBAAK,YAAa;AAClB,eAAW,SAAS,mBAAK,YAAW,OAAM,GAAI;AAC5C,UAAI,UAAU;AACZ,cAAM,aAAY;AAAA,MAC1B,OAAa;AACL,cAAM,YAAW;AAAA,MAClB;AACD,YAAM,IAAI,UAAU,OAAO,WAAW,QAAQ;AAAA,IAC/C;AAAA,EACF;AAAA,EAwBD,WAAW,WAAW;AACpB,UAAM,UAAU;AAChB,eAAW,UAAU,mBAAK,aAAY,OAAM,GAAI;AAC9C,UAAI,OAAO,cAAc,WAAW;AAClC,gBAAQ,KAAK,MAAM;AAAA,MACpB;AAAA,IACF;AACD,WAAO;AAAA,EACR;AAAA,EACD,UAAU,IAAI;AACZ,WAAO,mBAAK,aAAY,IAAI,EAAE;AAAA,EAC/B;AAAA,EACD,UAAU,QAAQ;AAChB,uBAAK,aAAY,IAAI,OAAO,IAAI,MAAM;AAAA,EACvC;AAAA,EACD,aAAa,QAAQ;;AACnB,QAAI,OAAO,IAAI,SAAS,SAAS,aAAa,GAAG;AAC/C,UAAI,mBAAK,+BAA8B;AACrC,qBAAa,mBAAK,6BAA4B;AAAA,MAC/C;AACD,yBAAK,8BAA+B,WAAW,MAAM;AACnD,aAAK,mBAAkB;AACvB,2BAAK,8BAA+B;AAAA,MACrC,GAAE,CAAC;AAAA,IACL;AACD,uBAAK,aAAY,OAAO,OAAO,EAAE;AACjC,SAAK,SAAS,MAAM;AACpB,QAAI,CAAC,OAAO,uBAAuB,CAAC,mBAAK,+BAA8B,IAAI,OAAO,mBAAmB,GAAG;AACtG,OAAAA,MAAA,mBAAK,wBAAL,gBAAAA,IAAyB,OAAO,OAAO;AAAA,IACxC;AAAA,EACF;AAAA,EACD,4BAA4B,QAAQ;AAClC,uBAAK,+BAA8B,IAAI,OAAO,mBAAmB;AACjE,SAAK,6BAA6B,MAAM;AACxC,WAAO,UAAU;AAAA,EAClB;AAAA,EACD,2BAA2B,qBAAqB;AAC9C,WAAO,mBAAK,+BAA8B,IAAI,mBAAmB;AAAA,EAClE;AAAA,EACD,+BAA+B,QAAQ;AACrC,uBAAK,+BAA8B,OAAO,OAAO,mBAAmB;AACpE,SAAK,gCAAgC,MAAM;AAC3C,WAAO,UAAU;AAAA,EAClB;AAAA,EAUD,gBAAgB,QAAQ;AACtB,QAAI,mBAAK,mBAAkB,QAAQ;AACjC;AAAA,IACD;AACD,uBAAK,eAAgB;AACrB,QAAI,QAAQ;AACV,4BAAK,wCAAL,WAAuB,OAAO;AAAA,IAC/B;AAAA,EACF;AAAA,EAMD,SAAS,QAAQ;AACf,QAAI,mBAAK,iDAAwB,QAAQ;AACvC,4BAAK,wCAAL,WAAuB,OAAO;AAAA,IAC/B;AAAA,EACF;AAAA,EACD,eAAe,QAAQ;AACrB,QAAI,mBAAK,kBAAiB,IAAI,MAAM,GAAG;AACrC,yBAAK,kBAAiB,OAAO,MAAM;AACnC,aAAO,SAAQ;AACf,4BAAK,gDAAL,WAA2B;AAAA,QACzB,mBAAmB,KAAK;AAAA,MAChC;AACM;AAAA,IACD;AACD,uBAAK,kBAAiB,IAAI,MAAM;AAChC,WAAO,OAAM;AACb,0BAAK,wCAAL,WAAuB,OAAO;AAC9B,0BAAK,gDAAL,WAA2B;AAAA,MACzB,mBAAmB;AAAA,IACzB;AAAA,EACG;AAAA,EACD,YAAY,QAAQ;AAClB,eAAW,MAAM,mBAAK,mBAAkB;AACtC,UAAI,OAAO,QAAQ;AACjB,WAAG,SAAQ;AAAA,MACZ;AAAA,IACF;AACD,uBAAK,kBAAiB;AACtB,uBAAK,kBAAiB,IAAI,MAAM;AAChC,WAAO,OAAM;AACb,0BAAK,wCAAL,WAAuB,OAAO;AAC9B,0BAAK,gDAAL,WAA2B;AAAA,MACzB,mBAAmB;AAAA,IACzB;AAAA,EACG;AAAA,EACD,WAAW,QAAQ;AACjB,WAAO,mBAAK,kBAAiB,IAAI,MAAM;AAAA,EACxC;AAAA,EACD,IAAI,sBAAsB;AACxB,WAAO,mBAAK,kBAAiB,OAAQ,EAAC,KAAI,EAAG;AAAA,EAC9C;AAAA,EACD,SAAS,QAAQ;AACf,WAAO,SAAQ;AACf,uBAAK,kBAAiB,OAAO,MAAM;AACnC,0BAAK,gDAAL,WAA2B;AAAA,MACzB,mBAAmB,KAAK;AAAA,IAC9B;AAAA,EACG;AAAA,EACD,IAAI,eAAe;AACjB,WAAO,mBAAK,kBAAiB,SAAS;AAAA,EACvC;AAAA,EACD,IAAI,iBAAiB;AACnB,WAAO,mBAAK,kBAAiB,SAAS,KAAK,KAAK,oBAAoB;AAAA,EACrE;AAAA,EACD,OAAO;AACL,uBAAK,iBAAgB;AACrB,0BAAK,gDAAL,WAA2B;AAAA,MACzB,oBAAoB,mBAAK,iBAAgB,mBAAoB;AAAA,MAC7D,oBAAoB;AAAA,MACpB,SAAS,sBAAK,sBAAL;AAAA,IACf;AAAA,EACG;AAAA,EACD,OAAO;AACL,uBAAK,iBAAgB;AACrB,0BAAK,gDAAL,WAA2B;AAAA,MACzB,oBAAoB;AAAA,MACpB,oBAAoB,mBAAK,iBAAgB,mBAAoB;AAAA,MAC7D,SAAS,sBAAK,sBAAL;AAAA,IACf;AAAA,EACG;AAAA,EACD,YAAY,QAAQ;AAClB,uBAAK,iBAAgB,IAAI,MAAM;AAC/B,0BAAK,gDAAL,WAA2B;AAAA,MACzB,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,MACpB,SAAS,sBAAK,sBAAL;AAAA,IACf;AAAA,EACG;AAAA,EAYD,SAAS;AACP,SAAK,eAAc;AACnB,QAAI,CAAC,KAAK,cAAc;AACtB;AAAA,IACD;AACD,UAAM,UAAU,CAAC,GAAG,mBAAK,iBAAgB;AACzC,UAAM,MAAM,MAAM;AAChB,iBAAW,UAAU,SAAS;AAC5B,eAAO,OAAM;AAAA,MACd;AAAA,IACP;AACI,UAAM,OAAO,MAAM;AACjB,iBAAW,UAAU,SAAS;AAC5B,8BAAK,wCAAL,WAAuB;AAAA,MACxB;AAAA,IACP;AACI,SAAK,YAAY;AAAA,MACf;AAAA,MACA;AAAA,MACA,UAAU;AAAA,IAChB,CAAK;AAAA,EACF;AAAA,EACD,iBAAiB;;AACf,KAAAA,MAAA,mBAAK,mBAAL,gBAAAA,IAAoB;AAAA,EACrB;AAAA,EACD,wBAAwB;AACtB,WAAO,mBAAK,kBAAiB,KAAK;AAAA,EACnC;AAAA,EAiBD,YAAY;AACV,eAAW,UAAU,mBAAK,mBAAkB;AAC1C,aAAO,OAAM;AAAA,IACd;AACD,0BAAK,kCAAL,WAAoB,mBAAK,aAAY,OAAQ;AAAA,EAC9C;AAAA,EACD,cAAc;AACZ,QAAI,mBAAK,gBAAe;AACtB,yBAAK,eAAc;AACnB,UAAI,mBAAK,WAAU,qBAAqB,MAAM;AAC5C;AAAA,MACD;AAAA,IACF;AACD,QAAI,CAAC,KAAK,cAAc;AACtB;AAAA,IACD;AACD,eAAW,UAAU,mBAAK,mBAAkB;AAC1C,aAAO,SAAQ;AAAA,IAChB;AACD,uBAAK,kBAAiB;AACtB,0BAAK,gDAAL,WAA2B;AAAA,MACzB,mBAAmB;AAAA,IACzB;AAAA,EACG;AAAA,EACD,yBAAyB,GAAG,GAAG,WAAW,OAAO;AAC/C,QAAI,CAAC,UAAU;AACb,WAAK,eAAc;AAAA,IACpB;AACD,QAAI,CAAC,KAAK,cAAc;AACtB;AAAA,IACD;AACD,uBAAK,cAAa,CAAC,KAAK;AACxB,uBAAK,cAAa,CAAC,KAAK;AACxB,UAAM,CAAC,QAAQ,MAAM,IAAI,mBAAK;AAC9B,UAAM,UAAU,CAAC,GAAG,mBAAK,iBAAgB;AACzC,UAAM,eAAe;AACrB,QAAI,mBAAK,wBAAuB;AAC9B,mBAAa,mBAAK,sBAAqB;AAAA,IACxC;AACD,uBAAK,uBAAwB,WAAW,MAAM;AAC5C,yBAAK,uBAAwB;AAC7B,yBAAK,cAAa,CAAC,IAAI,mBAAK,cAAa,CAAC,IAAI;AAC9C,WAAK,YAAY;AAAA,QACf,KAAK,MAAM;AACT,qBAAW,UAAU,SAAS;AAC5B,gBAAI,mBAAK,aAAY,IAAI,OAAO,EAAE,GAAG;AACnC,qBAAO,gBAAgB,QAAQ,MAAM;AAAA,YACtC;AAAA,UACF;AAAA,QACF;AAAA,QACD,MAAM,MAAM;AACV,qBAAW,UAAU,SAAS;AAC5B,gBAAI,mBAAK,aAAY,IAAI,OAAO,EAAE,GAAG;AACnC,qBAAO,gBAAgB,CAAC,QAAQ,CAAC,MAAM;AAAA,YACxC;AAAA,UACF;AAAA,QACF;AAAA,QACD,UAAU;AAAA,MAClB,CAAO;AAAA,IACF,GAAE,YAAY;AACf,eAAW,UAAU,SAAS;AAC5B,aAAO,gBAAgB,GAAG,CAAC;AAAA,IAC5B;AAAA,EACF;AAAA,EACD,mBAAmB;AACjB,QAAI,CAAC,KAAK,cAAc;AACtB;AAAA,IACD;AACD,SAAK,kBAAkB,IAAI;AAC3B,uBAAK,kBAAmB,oBAAI;AAC5B,eAAW,UAAU,mBAAK,mBAAkB;AAC1C,yBAAK,kBAAiB,IAAI,QAAQ;AAAA,QAChC,QAAQ,OAAO;AAAA,QACf,QAAQ,OAAO;AAAA,QACf,gBAAgB,OAAO;AAAA,QACvB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,cAAc;AAAA,MACtB,CAAO;AAAA,IACF;AAAA,EACF;AAAA,EACD,iBAAiB;AACf,QAAI,CAAC,mBAAK,mBAAkB;AAC1B,aAAO;AAAA,IACR;AACD,SAAK,kBAAkB,KAAK;AAC5B,UAAM,MAAM,mBAAK;AACjB,uBAAK,kBAAmB;AACxB,QAAI,yBAAyB;AAC7B,eAAW,CAAC;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,IACN,GAAO,KAAK,KAAK,KAAK;AAChB,YAAM,OAAO;AACb,YAAM,OAAO;AACb,YAAM,eAAe;AACrB,0DAA2B,MAAM,MAAM,UAAU,MAAM,MAAM,UAAU,cAAc,MAAM;AAAA,IAC5F;AACD,QAAI,CAAC,wBAAwB;AAC3B,aAAO;AAAA,IACR;AACD,UAAM,OAAO,CAAC,QAAQ,GAAG,GAAG,cAAc;AACxC,UAAI,mBAAK,aAAY,IAAI,OAAO,EAAE,GAAG;AACnC,cAAM,SAAS,mBAAK,YAAW,IAAI,SAAS;AAC5C,YAAI,QAAQ;AACV,iBAAO,sBAAsB,QAAQ,GAAG,CAAC;AAAA,QACnD,OAAe;AACL,iBAAO,YAAY;AACnB,iBAAO,IAAI;AACX,iBAAO,IAAI;AAAA,QACZ;AAAA,MACF;AAAA,IACP;AACI,SAAK,YAAY;AAAA,MACf,KAAK,MAAM;AACT,mBAAW,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA;AAAA,UACA;AAAA,QACD,MAAK,KAAK;AACT,eAAK,QAAQ,MAAM,MAAM,YAAY;AAAA,QACtC;AAAA,MACF;AAAA,MACD,MAAM,MAAM;AACV,mBAAW,CAAC,QAAQ;AAAA,UAClB;AAAA,UACA;AAAA,UACA;AAAA,QACD,MAAK,KAAK;AACT,eAAK,QAAQ,QAAQ,QAAQ,cAAc;AAAA,QAC5C;AAAA,MACF;AAAA,MACD,UAAU;AAAA,IAChB,CAAK;AACD,WAAO;AAAA,EACR;AAAA,EACD,oBAAoB,IAAI,IAAI;AAC1B,QAAI,CAAC,mBAAK,mBAAkB;AAC1B;AAAA,IACD;AACD,eAAW,UAAU,mBAAK,kBAAiB,KAAI,GAAI;AACjD,aAAO,KAAK,IAAI,EAAE;AAAA,IACnB;AAAA,EACF;AAAA,EACD,QAAQ,QAAQ;AACd,QAAI,OAAO,WAAW,MAAM;AAC1B,YAAM,SAAS,KAAK,SAAS,OAAO,SAAS;AAC7C,UAAI,QAAQ;AACV,eAAO,aAAa,MAAM;AAC1B,eAAO,aAAa,MAAM;AAAA,MAClC,OAAa;AACL,aAAK,UAAU,MAAM;AACrB,aAAK,uBAAuB,MAAM;AAClC,eAAO,QAAO;AAAA,MACf;AAAA,IACP,OAAW;AACL,aAAO,OAAO,aAAa,MAAM;AAAA,IAClC;AAAA,EACF;AAAA,EACD,IAAI,2BAA2B;;AAC7B,aAAOA,MAAA,KAAK,gBAAL,gBAAAA,IAAkB,8BAA6B,mBAAK,kBAAiB,SAAS,KAAK,KAAK,oBAAoB,wBAAuB;AAAA,EAC3I;AAAA,EACD,SAAS,QAAQ;AACf,WAAO,mBAAK,mBAAkB;AAAA,EAC/B;AAAA,EACD,YAAY;AACV,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,UAAU;AACR,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,IAAI,eAAe;AACjB,WAAO,OAAO,MAAM,gBAAgB,IAAI,aAAc;AAAA,EACvD;AAAA,EACD,kBAAkB,WAAW;AAC3B,QAAI,CAAC,WAAW;AACd,aAAO;AAAA,IACR;AACD,UAAM,YAAY,SAAS;AAC3B,aAAS,IAAI,GAAG,KAAK,UAAU,YAAY,IAAI,IAAI,KAAK;AACtD,UAAI,CAAC,UAAU,SAAS,UAAU,WAAW,CAAC,EAAE,uBAAuB,GAAG;AACxE,eAAO;AAAA,MACR;AAAA,IACF;AACD,UAAM;AAAA,MACJ,GAAG;AAAA,MACH,GAAG;AAAA,MACH,OAAO;AAAA,MACP,QAAQ;AAAA,IACd,IAAQ,UAAU;AACd,QAAI;AACJ,YAAQ,UAAU,aAAa,oBAAoB,GAAC;AAAA,MAClD,KAAK;AACH,kBAAU,CAAC,GAAG,GAAG,GAAG,OAAO;AAAA,UACzB,IAAI,IAAI,UAAU;AAAA,UAClB,GAAG,KAAK,IAAI,IAAI,UAAU;AAAA,UAC1B,OAAO,IAAI;AAAA,UACX,QAAQ,IAAI;AAAA,QACtB;AACQ;AAAA,MACF,KAAK;AACH,kBAAU,CAAC,GAAG,GAAG,GAAG,OAAO;AAAA,UACzB,GAAG,KAAK,IAAI,IAAI,UAAU;AAAA,UAC1B,GAAG,KAAK,IAAI,IAAI,UAAU;AAAA,UAC1B,OAAO,IAAI;AAAA,UACX,QAAQ,IAAI;AAAA,QACtB;AACQ;AAAA,MACF,KAAK;AACH,kBAAU,CAAC,GAAG,GAAG,GAAG,OAAO;AAAA,UACzB,GAAG,KAAK,IAAI,IAAI,UAAU;AAAA,UAC1B,IAAI,IAAI,UAAU;AAAA,UAClB,OAAO,IAAI;AAAA,UACX,QAAQ,IAAI;AAAA,QACtB;AACQ;AAAA,MACF;AACE,kBAAU,CAAC,GAAG,GAAG,GAAG,OAAO;AAAA,UACzB,IAAI,IAAI,UAAU;AAAA,UAClB,IAAI,IAAI,UAAU;AAAA,UAClB,OAAO,IAAI;AAAA,UACX,QAAQ,IAAI;AAAA,QACtB;AACQ;AAAA,IACH;AACD,UAAM,QAAQ;AACd,aAAS,IAAI,GAAG,KAAK,UAAU,YAAY,IAAI,IAAI,KAAK;AACtD,YAAM,QAAQ,UAAU,WAAW,CAAC;AACpC,UAAI,MAAM,WAAW;AACnB;AAAA,MACD;AACD,iBAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACR,KAAW,MAAM,kBAAkB;AAC3B,YAAI,UAAU,KAAK,WAAW,GAAG;AAC/B;AAAA,QACD;AACD,cAAM,KAAK,QAAQ,GAAG,GAAG,OAAO,MAAM,CAAC;AAAA,MACxC;AAAA,IACF;AACD,WAAO,MAAM,WAAW,IAAI,OAAO;AAAA,EACpC;AAAA,EACD,6BAA6B;AAAA,IAC3B;AAAA,IACA;AAAA,EACJ,GAAK;AACD,KAAC,mBAAK,gCAAL,mBAAK,6BAAgC,oBAAI,IAAK,IAAE,IAAI,qBAAqB,EAAE;AAAA,EAC7E;AAAA,EACD,gCAAgC;AAAA,IAC9B;AAAA,EACJ,GAAK;;AACD,KAAAA,MAAA,mBAAK,iCAAL,gBAAAA,IAAkC,OAAO;AAAA,EAC1C;AAAA,EACD,wBAAwB,YAAY;;AAClC,UAAM,YAAWA,MAAA,mBAAK,iCAAL,gBAAAA,IAAkC,IAAI,WAAW,KAAK;AACvE,QAAI,CAAC,UAAU;AACb;AAAA,IACD;AACD,UAAM,SAAS,mBAAK,oBAAmB,YAAY,QAAQ;AAC3D,QAAI,CAAC,QAAQ;AACX;AAAA,IACD;AACD,QAAI,mBAAK,WAAU,qBAAqB,QAAQ,CAAC,OAAO,iBAAiB;AACvE;AAAA,IACD;AACD,WAAO,wBAAwB,UAAU;AAAA,EAC1C;AACH;AA9zCE;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AAsOA;AAAA,kCAA6B,SAAC;AAAA,EAC5B;AACJ,GAAK;AACD,SAAO,WAAW,aAAa,KAAK,YAAY,WAAW,gBAAgB;AAC5E;AACD;AAAA,0BAAqB,SAAC,WAAW;AAC/B,QAAM;AAAA,IACJ;AAAA,EACD,IAAG;AACJ,MAAI,aAAa,aAAa,SAAS,GAAG;AACxC,WAAO;AAAA,EACR;AACD,aAAW,SAAS,mBAAK,YAAW,OAAM,GAAI;AAC5C,QAAI,MAAM,aAAa,SAAS,GAAG;AACjC,aAAO;AAAA,IACR;AAAA,EACF;AACD,SAAO;AACR;AA6CD;AAAA,6BAAwB,WAAG;AACzB,QAAM,YAAY,SAAS;AAC3B,MAAI,CAAC,aAAa,UAAU,aAAa;AACvC;AAAA,EACD;AACD,QAAM,gBAAgB,sBAAK,gEAAL,WAAmC;AACzD,QAAM,YAAY,cAAc,QAAQ,YAAY;AACpD,QAAM,QAAQ,KAAK,kBAAkB,SAAS;AAC9C,MAAI,CAAC,OAAO;AACV;AAAA,EACD;AACD,qBAAK,sBAAL,mBAAK,mBAAsB,IAAI,iBAAiB,IAAI;AACpD,qBAAK,mBAAkB,KAAK,WAAW,OAAO,KAAK,cAAc,KAAK;AACvE;AAMD;AAAA,qBAAgB,WAAG;;AACjB,QAAM,YAAY,SAAS;AAC3B,MAAI,CAAC,aAAa,UAAU,aAAa;AACvC,QAAI,mBAAK,oBAAmB;AAC1B,OAAAA,MAAA,mBAAK,uBAAL,gBAAAA,IAAwB;AACxB,yBAAK,mBAAoB;AACzB,4BAAK,gDAAL,WAA2B;AAAA,QACzB,iBAAiB;AAAA,MAC3B;AAAA,IACO;AACD;AAAA,EACD;AACD,QAAM;AAAA,IACJ;AAAA,EACD,IAAG;AACJ,MAAI,eAAe,mBAAK,oBAAmB;AACzC;AAAA,EACD;AACD,QAAM,gBAAgB,sBAAK,gEAAL,WAAmC;AACzD,QAAM,YAAY,cAAc,QAAQ,YAAY;AACpD,MAAI,CAAC,WAAW;AACd,QAAI,mBAAK,oBAAmB;AAC1B,+BAAK,uBAAL,mBAAwB;AACxB,yBAAK,mBAAoB;AACzB,4BAAK,gDAAL,WAA2B;AAAA,QACzB,iBAAiB;AAAA,MAC3B;AAAA,IACO;AACD;AAAA,EACD;AACD,2BAAK,uBAAL,mBAAwB;AACxB,qBAAK,mBAAoB;AACzB,wBAAK,gDAAL,WAA2B;AAAA,IACzB,iBAAiB;AAAA,EACvB;AACI,MAAI,mBAAK,WAAU,qBAAqB,aAAa,mBAAK,WAAU,qBAAqB,MAAM;AAC7F;AAAA,EACD;AACD,MAAI,mBAAK,WAAU,qBAAqB,WAAW;AACjD,SAAK,eAAe,aAAa,MAAM,IAAI;AAAA,EAC5C;AACD,qBAAK,uBAAwB,KAAK;AAClC,MAAI,CAAC,KAAK,gBAAgB;AACxB,UAAM,cAAc,mBAAK,WAAU,qBAAqB,YAAY,sBAAK,gDAAL,WAA2B,aAAa;AAC5G,+CAAa;AACb,UAAM,KAAK,IAAI;AACf,UAAM,SAAS,KAAK,eAAe,EAAE;AACrC,UAAM,YAAY,OAAK;AACrB,UAAI,EAAE,SAAS,eAAe,EAAE,WAAW,GAAG;AAC5C;AAAA,MACD;AACD,SAAG,MAAK;AACR,iDAAa,cAAc;AAC3B,UAAI,EAAE,SAAS,aAAa;AAC1B,8BAAK,8BAAL,WAAkB;AAAA,MACnB;AAAA,IACT;AACM,WAAO,iBAAiB,aAAa,WAAW;AAAA,MAC9C;AAAA,IACR,CAAO;AACD,WAAO,iBAAiB,QAAQ,WAAW;AAAA,MACzC;AAAA,IACR,CAAO;AAAA,EACF;AACF;AACD;AAAA,iBAAY,SAAC,mBAAmB,IAAI;AAClC,MAAI,mBAAK,WAAU,qBAAqB,WAAW;AACjD,SAAK,mBAAmB,gBAAgB;AAAA,EAC9C,WAAe,mBAAK,iCAAgC;AAC9C,0BAAK,sDAAL;AAAA,EACD;AACF;AACD;AAAA,0BAAqB,WAAG;AACtB,WAAS,iBAAiB,mBAAmB,sBAAK,sCAAiB,KAAK,IAAI,GAAG;AAAA,IAC7E,QAAQ,KAAK;AAAA,EACnB,CAAK;AACF;AACD;AAAA,qBAAgB,WAAG;AACjB,MAAI,mBAAK,kBAAiB;AACxB;AAAA,EACD;AACD,qBAAK,iBAAkB,IAAI;AAC3B,QAAM,SAAS,KAAK,eAAe,mBAAK,gBAAe;AACvD,SAAO,iBAAiB,SAAS,KAAK,MAAM,KAAK,IAAI,GAAG;AAAA,IACtD;AAAA,EACN,CAAK;AACD,SAAO,iBAAiB,QAAQ,KAAK,KAAK,KAAK,IAAI,GAAG;AAAA,IACpD;AAAA,EACN,CAAK;AACF;AACD;AAAA,wBAAmB,WAAG;;AACpB,GAAAA,MAAA,mBAAK,qBAAL,gBAAAA,IAAsB;AACtB,qBAAK,iBAAkB;AACxB;AAmCD;AAAA,wBAAmB,WAAG;AACpB,MAAI,mBAAK,qBAAoB;AAC3B;AAAA,EACD;AACD,qBAAK,oBAAqB,IAAI;AAC9B,QAAM,SAAS,KAAK,eAAe,mBAAK,mBAAkB;AAC1D,SAAO,iBAAiB,WAAW,KAAK,QAAQ,KAAK,IAAI,GAAG;AAAA,IAC1D;AAAA,EACN,CAAK;AACD,SAAO,iBAAiB,SAAS,KAAK,MAAM,KAAK,IAAI,GAAG;AAAA,IACtD;AAAA,EACN,CAAK;AACF;AACD;AAAA,2BAAsB,WAAG;;AACvB,GAAAA,MAAA,mBAAK,wBAAL,gBAAAA,IAAyB;AACzB,qBAAK,oBAAqB;AAC3B;AACD;AAAA,2BAAsB,WAAG;AACvB,MAAI,mBAAK,eAAc;AACrB;AAAA,EACD;AACD,qBAAK,cAAe,IAAI;AACxB,QAAM,SAAS,KAAK,eAAe,mBAAK,aAAY;AACpD,WAAS,iBAAiB,QAAQ,KAAK,KAAK,KAAK,IAAI,GAAG;AAAA,IACtD;AAAA,EACN,CAAK;AACD,WAAS,iBAAiB,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG;AAAA,IACpD;AAAA,EACN,CAAK;AACD,WAAS,iBAAiB,SAAS,KAAK,MAAM,KAAK,IAAI,GAAG;AAAA,IACxD;AAAA,EACN,CAAK;AACF;AACD;AAAA,8BAAyB,WAAG;;AAC1B,GAAAA,MAAA,mBAAK,kBAAL,gBAAAA,IAAmB;AACnB,qBAAK,cAAe;AACrB;AACD;AAAA,6BAAwB,WAAG;AACzB,QAAM,SAAS,KAAK;AACpB,WAAS,iBAAiB,YAAY,KAAK,SAAS,KAAK,IAAI,GAAG;AAAA,IAC9D;AAAA,EACN,CAAK;AACD,WAAS,iBAAiB,QAAQ,KAAK,KAAK,KAAK,IAAI,GAAG;AAAA,IACtD;AAAA,EACN,CAAK;AACF;AAgJD;AAAA,0BAAqB,SAAC,SAAS;AAC7B,QAAM,aAAa,OAAO,QAAQ,OAAO,EAAE,KAAK,CAAC,CAAC,KAAK,KAAK,MAAM,mBAAK,iBAAgB,GAAG,MAAM,KAAK;AACrG,MAAI,YAAY;AACd,SAAK,UAAU,SAAS,iCAAiC;AAAA,MACvD,QAAQ;AAAA,MACR,SAAS,OAAO,OAAO,mBAAK,kBAAiB,OAAO;AAAA,IAC5D,CAAO;AACD,QAAI,mBAAK,WAAU,qBAAqB,aAAa,QAAQ,sBAAsB,OAAO;AACxF,4BAAK,wCAAL,WAAuB,CAAC,CAAC,2BAA2B,gBAAgB,IAAI,CAAC;AAAA,IAC1E;AAAA,EACF;AACF;AACD;AAAA,sBAAiB,SAAC,SAAS;AACzB,OAAK,UAAU,SAAS,iCAAiC;AAAA,IACvD,QAAQ;AAAA,IACR;AAAA,EACN,CAAK;AACF;AA4JD;AAAA,eAAU,WAAG;AACX,MAAI,CAAC,mBAAK,aAAY;AACpB,uBAAK,YAAa;AAClB,eAAW,SAAS,mBAAK,YAAW,OAAM,GAAI;AAC5C,YAAM,OAAM;AAAA,IACb;AACD,eAAW,UAAU,mBAAK,aAAY,OAAM,GAAI;AAC9C,aAAO,OAAM;AAAA,IACd;AAAA,EACF;AACF;AACD;AAAA,gBAAW,WAAG;AACZ,OAAK,YAAW;AAChB,MAAI,mBAAK,aAAY;AACnB,uBAAK,YAAa;AAClB,eAAW,SAAS,mBAAK,YAAW,OAAM,GAAI;AAC5C,YAAM,QAAO;AAAA,IACd;AACD,eAAW,UAAU,mBAAK,aAAY,OAAM,GAAI;AAC9C,aAAO,QAAO;AAAA,IACf;AAAA,EACF;AACF;AA6CD;AAAA,sBAAiB,SAAC,QAAQ;AACxB,QAAM,QAAQ,mBAAK,YAAW,IAAI,OAAO,SAAS;AAClD,MAAI,OAAO;AACT,UAAM,aAAa,MAAM;AAAA,EAC/B,OAAW;AACL,SAAK,UAAU,MAAM;AACrB,SAAK,uBAAuB,MAAM;AAAA,EACnC;AACF;AAUG;AAAA,yBAAmB,WAAG;AACxB,MAAI,KAAK;AACT,OAAK,MAAM,mBAAK,mBAAkB;AAAA,EAAE;AACpC,SAAO;AACR;AA+ED;AAAA,aAAQ,WAAG;AACT,MAAI,mBAAK,aAAY,SAAS,GAAG;AAC/B,WAAO;AAAA,EACR;AACD,MAAI,mBAAK,aAAY,SAAS,GAAG;AAC/B,eAAW,UAAU,mBAAK,aAAY,OAAM,GAAI;AAC9C,aAAO,OAAO;IACf;AAAA,EACF;AACD,SAAO;AACR;AA6BD;AAAA,mBAAc,SAAC,SAAS;AACtB,aAAW,UAAU,mBAAK,mBAAkB;AAC1C,WAAO,SAAQ;AAAA,EAChB;AACD,qBAAK,kBAAiB;AACtB,aAAW,UAAU,SAAS;AAC5B,QAAI,OAAO,WAAW;AACpB;AAAA,IACD;AACD,uBAAK,kBAAiB,IAAI,MAAM;AAChC,WAAO,OAAM;AAAA,EACd;AACD,wBAAK,gDAAL,WAA2B;AAAA,IACzB,mBAAmB,KAAK;AAAA,EAC9B;AACG;AA//BD,cAhDI,4BAgDG,mBAAkB;AACzB,cAjDI,4BAiDG,iBAAgB;AAjDzB,IAAM,4BAAN;AAm0CA,MAAM,WAAN,MAAM,SAAQ;AAAA,EAaZ,YAAY,QAAQ;AAsDpB,uBAAI;AAiHJ,uBAAM;AAnLN,uBAAAQ,WAAW;AACX,2CAAqB;AACrB,uCAAiB;AACjB,wCAAkB;AAClB,+CAAyB;AACzB,gDAA0B;AAC1B,+BAAS;AACT,uBAAAC,UAAU;AACV,qCAAe;AACf,4CAAsB;AACtB,2CAAqB;AAGnB,uBAAKA,UAAU;AACf,uBAAK,oBAAqB,OAAO,WAAW;AAAA,EAC7C;AAAA,EACD,OAAO,WAAW,aAAa;AAC7B,aAAQ,iBAAR,SAAQ,eAAiB;AAAA,EAC1B;AAAA,EACD,MAAM,SAAS;AACb,UAAM,UAAU,mBAAK,gBAAiB,SAAS,cAAc,QAAQ;AACrE,YAAQ,YAAY;AACpB,QAAI;AACJ,QAAI,mBAAK,qBAAoB;AAC3B,cAAQ,UAAU,IAAI,KAAK;AAC3B,YAAM,MAAM,SAAQ,aAAa,IAAI,gDAAgD;AAAA,IAC3F,OAAW;AACL,YAAM,MAAM,SAAQ,aAAa,IAAI,oCAAoC;AAAA,IAC1E;AACD,YAAQ,cAAc;AACtB,YAAQ,aAAa,cAAc,GAAG;AACtC,YAAQ,WAAW;AACnB,UAAM,SAAS,mBAAKA,UAAQ,WAAW;AACvC,YAAQ,iBAAiB,eAAe,eAAe;AAAA,MACrD;AAAA,IACN,CAAK;AACD,YAAQ,iBAAiB,eAAe,WAAS,MAAM,gBAAe,GAAI;AAAA,MACxE;AAAA,IACN,CAAK;AACD,UAAM,UAAU,WAAS;AACvB,YAAM,eAAc;AACpB,yBAAKA,UAAQ,WAAW,YAAY,mBAAKA,SAAO;AAChD,UAAI,mBAAK,qBAAoB;AAC3B,2BAAKA,UAAQ,iBAAiB;AAAA,UAC5B,QAAQ;AAAA,UACR,MAAM;AAAA,YACJ,OAAO,mBAAK;AAAA,UACb;AAAA,QACX,CAAS;AAAA,MACF;AAAA,IACP;AACI,YAAQ,iBAAiB,SAAS,SAAS;AAAA,MACzC,SAAS;AAAA,MACT;AAAA,IACN,CAAK;AACD,YAAQ,iBAAiB,WAAW,WAAS;AAC3C,UAAI,MAAM,WAAW,WAAW,MAAM,QAAQ,SAAS;AACrD,2BAAK,yBAA0B;AAC/B,gBAAQ,KAAK;AAAA,MACd;AAAA,IACP,GAAO;AAAA,MACD;AAAA,IACN,CAAK;AACD,UAAM,sBAAK,wBAAL;AACN,WAAO;AAAA,EACR;AAAA,EAID,SAAS;AACP,QAAI,CAAC,mBAAK,iBAAgB;AACxB;AAAA,IACD;AACD,uBAAK,gBAAe,MAAM;AAAA,MACxB,cAAc,mBAAK;AAAA,IACzB,CAAK;AACD,uBAAK,yBAA0B;AAAA,EAChC;AAAA,EACD,UAAU;AACR,QAAI,mBAAK,qBAAoB;AAC3B,aAAO,mBAAKD,eAAa;AAAA,IAC1B;AACD,WAAO,CAAC,mBAAKA,cAAY,CAAC,mBAAK;AAAA,EAChC;AAAA,EACD,UAAU;AACR,QAAI,mBAAK,qBAAoB;AAC3B,aAAO,mBAAKA,eAAa,QAAQ,CAAC,CAAC,mBAAK;AAAA,IACzC;AACD,WAAO,KAAK;EACb;AAAA,EACD,IAAI,cAAc;AAChB,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,MAAM,eAAe,aAAa;AAChC,QAAI,mBAAKA,eAAa,MAAM;AAC1B;AAAA,IACD;AACD,uBAAK,cAAe;AACpB,uBAAK,qBAAsB,MAAM,SAAQ,aAAa,IAAI,8DAA8D,EAAE;AAAA,MACxH,kBAAkB;AAAA,IACxB,CAAK;AACD,0BAAK,wBAAL;AAAA,EACD;AAAA,EACD,mBAAmB,aAAa,OAAO;;AACrC,QAAI,CAAC,mBAAK,uBAAsB,mBAAKA,YAAU;AAC7C,OAAAR,MAAA,mBAAK,YAAL,gBAAAA,IAAa;AACb,yBAAK,QAAS;AACd;AAAA,IACD;AACD,QAAI,CAAC,mBAAK,SAAQ;AAChB,YAAM,QAAQ,mBAAK,QAAS,SAAS,cAAc,KAAK;AACxD,YAAM,YAAY;AAClB,yBAAKS,UAAQ,IAAI,OAAO,KAAK;AAAA,IAC9B;AACD,uBAAK,QAAO,UAAU,OAAO,UAAU,CAAC,UAAU;AAAA,EACnD;AAAA,EACD,UAAU,cAAc;AACtB,QAAI,UAAU,mBAAKD;AACnB,QAAI,CAAC,gBAAgB,mBAAK,kBAAiB,SAAS;AAClD,gBAAU,mBAAK;AAAA,IAChB;AACD,WAAO;AAAA,MACL;AAAA,MACA,YAAY,mBAAK;AAAA,MACjB,aAAa,mBAAK;AAAA,MAClB,oBAAoB,mBAAK;AAAA,IAC/B;AAAA,EACG;AAAA,EACD,IAAI,OAAO;AACT,WAAO;AAAA,MACL,SAAS,mBAAKA;AAAA,MACd,YAAY,mBAAK;AAAA,IACvB;AAAA,EACG;AAAA,EACD,IAAI,KAAK;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,EACb,GAAK;AACD,QAAI,aAAa;AACf,yBAAK,cAAe;AACpB,yBAAK,qBAAsB;AAAA,IAC5B;AACD,QAAI,mBAAKA,eAAa,WAAW,mBAAK,wBAAuB,YAAY;AACvE;AAAA,IACD;AACD,QAAI,CAAC,QAAQ;AACX,yBAAKA,WAAW;AAChB,yBAAK,oBAAqB;AAAA,IAC3B;AACD,0BAAK,wBAAL;AAAA,EACD;AAAA,EACD,OAAO,UAAU,OAAO;AACtB,QAAI,CAAC,mBAAK,iBAAgB;AACxB;AAAA,IACD;AACD,QAAI,CAAC,WAAW,mBAAK,yBAAwB;AAC3C,mBAAa,mBAAK,uBAAsB;AACxC,yBAAK,wBAAyB;AAAA,IAC/B;AACD,uBAAK,gBAAe,WAAW,CAAC;AAAA,EACjC;AAAA,EACD,QAAQ;AACN,uBAAKC,UAAQ,iBAAiB;AAAA,MAC5B,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,mBAAK;AAAA,MACb;AAAA,IACP,CAAK;AAAA,EACF;AAAA,EACD,UAAU;;AACR,KAAAT,MAAA,mBAAK,oBAAL,gBAAAA,IAAqB;AACrB,uBAAK,gBAAiB;AACtB,uBAAK,iBAAkB;AACvB,6BAAK,YAAL,mBAAa;AACb,uBAAK,QAAS;AAAA,EACf;AA6EH;AA/PEQ,YAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACAC,WAAA;AACA;AACA;AACA;AAwDI;AAAA,YAAM,WAAG;AACX,SAAO,mBAAKD,cAAY,WAAW,mBAAKA,eAAa,QAAQ,KAAK,eAAe,YAAY;AAC9F;AA+GK;AAAA,cAAS,iBAAG;;AAChB,QAAM,SAAS,mBAAK;AACpB,MAAI,CAAC,QAAQ;AACX;AAAA,EACD;AACD,MAAI,mBAAK,qBAAoB;AAC3B,UAAM,QAAQ,mBAAK;AACnB,UAAM,OAAO,UAAU,WAAW,cAAc;AAChD,WAAO,UAAU,OAAO,QAAQ,CAAC,CAAC,mBAAKA,UAAQ;AAC/C,aAAQ,aAAa,IAAI,6BAA6B,IAAI,eAAe,EAAE,KAAK,SAAO;AACrF,aAAO,aAAa,cAAc,GAAG;AACrC,iBAAW,SAAS,OAAO,YAAY;AACrC,YAAI,MAAM,aAAa,KAAK,WAAW;AACrC,gBAAM,cAAc;AACpB;AAAA,QACD;AAAA,MACF;AAAA,IACT,CAAO;AACD,QAAI,CAAC,mBAAKA,YAAU;AAClB,OAAAR,MAAA,mBAAK,qBAAL,gBAAAA,IAAsB;AACtB;AAAA,IACD;AAAA,EACP,OAAW;AACL,QAAI,CAAC,mBAAKQ,cAAY,CAAC,mBAAK,qBAAoB;AAC9C,aAAO,UAAU,OAAO,MAAM;AAC9B,+BAAK,qBAAL,mBAAsB;AACtB;AAAA,IACD;AACD,WAAO,UAAU,IAAI,MAAM;AAC3B,aAAQ,aAAa,IAAI,yCAAyC,EAAE,KAAK,SAAO;AAC9E,aAAO,aAAa,cAAc,GAAG;AAAA,IAC7C,CAAO;AAAA,EACF;AACD,MAAI,UAAU,mBAAK;AACnB,MAAI,CAAC,SAAS;AACZ,uBAAK,iBAAkB,UAAU,SAAS,cAAc,MAAM;AAC9D,YAAQ,YAAY;AACpB,YAAQ,aAAa,QAAQ,SAAS;AACtC,UAAM,KAAK,QAAQ,KAAK,oBAAoB,mBAAKC,UAAQ,EAAE;AAC3D,WAAO,aAAa,oBAAoB,EAAE;AAC1C,UAAM,wBAAwB;AAC9B,UAAM,SAAS,mBAAKA,UAAQ,WAAW;AACvC,WAAO,iBAAiB,SAAS,MAAM;AACrC,mBAAa,mBAAK,uBAAsB;AACxC,yBAAK,wBAAyB;AAAA,IACtC,GAAS;AAAA,MACD,MAAM;AAAA,IACd,CAAO;AACD,WAAO,iBAAiB,cAAc,MAAM;AAC1C,yBAAK,wBAAyB,WAAW,MAAM;AAC7C,2BAAK,wBAAyB;AAC9B,2BAAK,iBAAgB,UAAU,IAAI,MAAM;AACzC,2BAAKA,UAAQ,iBAAiB;AAAA,UAC5B,QAAQ;AAAA,QACpB,CAAW;AAAA,MACF,GAAE,qBAAqB;AAAA,IAChC,GAAS;AAAA,MACD;AAAA,IACR,CAAO;AACD,WAAO,iBAAiB,cAAc,MAAM;;AAC1C,UAAI,mBAAK,yBAAwB;AAC/B,qBAAa,mBAAK,uBAAsB;AACxC,2BAAK,wBAAyB;AAAA,MAC/B;AACD,OAAAT,MAAA,mBAAK,qBAAL,gBAAAA,IAAsB,UAAU,OAAO;AAAA,IAC/C,GAAS;AAAA,MACD;AAAA,IACR,CAAO;AAAA,EACF;AACD,UAAQ,YAAY,mBAAK,sBAAqB,MAAM,SAAQ,aAAa,IAAI,0CAA0C,IAAI,mBAAKQ;AAChI,MAAI,CAAC,QAAQ,YAAY;AACvB,WAAO,OAAO,OAAO;AAAA,EACtB;AACD,QAAM,UAAU,mBAAKC,UAAQ,mBAAkB;AAC/C,qCAAS,aAAa,oBAAoB,QAAQ;AACnD;AAnPD,cAZI,UAYG,gBAAe;AAZxB,IAAM,UAAN;AAwQA,MAAM,oBAAN,MAAM,kBAAiB;AAAA,EAsDrB,YAAY,YAAY;AAsLxB;AAkIA;AAgEA;AAuBA;AA6CA;AA8BA;AAuLA;AAUA;AAoHA;AA+IA;AAGA;AAKA;AAGA;AAiBA;AA/+BA,2CAAqB;AACrB,wCAAkB;AAClB,uBAAAD,WAAW;AACX,kCAAY;AACZ,yCAAmB;AACnB,qCAAe;AACf,yCAAmB;AACnB,iCAAW;AACX,4CAAsB;AACtB,wCAAkB;AAClB,yCAAmB;AACnB,mCAAa;AACb,sCAAgB;AAChB,qDAA+B;AAC/B,0CAAoB;AACpB,mCAAa;AACb,mCAAa;AACb,2CAAqB;AACrB,wCAAe;AACf,2CAAkB,uBAAO,OAAO,IAAI;AACpC,sCAAa;AACb,sCAAa;AACb,+CAAsB;AAGtB,qCAAe;AACf,gCAAU,kBAAiB;AA4BzB,SAAK,SAAS,WAAW;AACzB,SAAK,KAAK,WAAW;AACrB,SAAK,QAAQ,KAAK,SAAS;AAC3B,SAAK,YAAY,WAAW,OAAO;AACnC,SAAK,OAAO,WAAW;AACvB,SAAK,MAAM;AACX,SAAK,aAAa,WAAW;AAC7B,SAAK,sBAAsB;AAC3B,SAAK,uBAAuB;AAC5B,SAAK,gBAAgB,aAAa,WAAW;AAC7C,SAAK,sBAAsB;AAC3B,UAAM;AAAA,MACJ;AAAA,MACA,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACP,IAAQ,KAAK,OAAO;AAChB,SAAK,WAAW;AAChB,SAAK,gBAAgB,MAAM,WAAW,KAAK,WAAW,eAAe,YAAY;AACjF,SAAK,iBAAiB,CAAC,WAAW,UAAU;AAC5C,SAAK,kBAAkB,CAAC,OAAO,KAAK;AACpC,UAAM,CAAC,OAAO,MAAM,IAAI,KAAK;AAC7B,SAAK,IAAI,WAAW,IAAI;AACxB,SAAK,IAAI,WAAW,IAAI;AACxB,SAAK,kBAAkB;AACvB,SAAK,UAAU;AAAA,EAChB;AAAA,EApDD,WAAW,0BAA0B;AACnC,UAAM,SAAS,kBAAiB,UAAU;AAC1C,UAAM,QAAQ,0BAA0B;AACxC,UAAM,MAAM,0BAA0B;AACtC,WAAO,OAAO,MAAM,2BAA2B,IAAI,gBAAgB,CAAC,CAAC,CAAC,aAAa,eAAe,GAAG,QAAQ;AAAA,MAC3G,MAAM,CAAC,CAAC,OAAO,CAAC;AAAA,IACjB,IAAG,CAAC,CAAC,kBAAkB,qBAAqB,GAAG,QAAQ;AAAA,MACtD,MAAM,CAAC,CAAC,KAAK,CAAC;AAAA,IACf,IAAG,CAAC,CAAC,cAAc,gBAAgB,GAAG,QAAQ;AAAA,MAC7C,MAAM,CAAC,OAAO,CAAC;AAAA,IAChB,IAAG,CAAC,CAAC,mBAAmB,sBAAsB,GAAG,QAAQ;AAAA,MACxD,MAAM,CAAC,KAAK,CAAC;AAAA,IACd,IAAG,CAAC,CAAC,WAAW,aAAa,GAAG,QAAQ;AAAA,MACvC,MAAM,CAAC,GAAG,CAAC,KAAK;AAAA,IACjB,IAAG,CAAC,CAAC,gBAAgB,mBAAmB,GAAG,QAAQ;AAAA,MAClD,MAAM,CAAC,GAAG,CAAC,GAAG;AAAA,IACf,IAAG,CAAC,CAAC,aAAa,eAAe,GAAG,QAAQ;AAAA,MAC3C,MAAM,CAAC,GAAG,KAAK;AAAA,IAChB,IAAG,CAAC,CAAC,kBAAkB,qBAAqB,GAAG,QAAQ;AAAA,MACtD,MAAM,CAAC,GAAG,GAAG;AAAA,IACnB,CAAK,GAAG,CAAC,CAAC,UAAU,YAAY,GAAG,kBAAiB,UAAU,yBAAyB,CAAC,CAAC,CAAC;AAAA,EACvF;AAAA,EAgCD,IAAI,aAAa;AACf,WAAO,OAAO,eAAe,IAAI,EAAE,YAAY;AAAA,EAChD;AAAA,EACD,WAAW,oBAAoB;AAC7B,WAAO,OAAO,MAAM,qBAAqB,KAAK,cAAc,WAAW,YAAY,CAAC;AAAA,EACrF;AAAA,EACD,OAAO,wBAAwB,QAAQ;AACrC,UAAM,aAAa,IAAI,WAAW;AAAA,MAChC,IAAI,OAAO,OAAO,UAAW;AAAA,MAC7B,QAAQ,OAAO;AAAA,MACf,WAAW,OAAO;AAAA,IACxB,CAAK;AACD,eAAW,sBAAsB,OAAO;AACxC,eAAW,UAAU;AACrB,eAAW,WAAW,uBAAuB,UAAU;AAAA,EACxD;AAAA,EACD,OAAO,WAAW,MAAML,aAAY,SAAS;AAC3C,sBAAiB,iBAAjB,kBAAiB,eAAiB,OAAO,OAAO;AAAA,MAC9C,SAAS;AAAA,MACT,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa;AAAA,MACb,aAAa;AAAA,MACb,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,YAAY;AAAA,IAClB,CAAK;AACD,sBAAiB,iBAAjB,kBAAiB,eAAiB,IAAI,IAAI,CAAC,GAAG,CAAC,sCAAsC,2CAA2C,4CAA4C,gDAAgD,kDAAkD,kDAAkD,EAAE,IAAI,SAAO,CAAC,KAAK,KAAK,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,8DAA8D,EAAE,IAAI,SAAO,CAAC,KAAK,KAAK,IAAI,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACpd,QAAI,mCAAS,SAAS;AACpB,iBAAW,OAAO,QAAQ,SAAS;AACjC,0BAAiB,aAAa,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC;AAAA,MACrD;AAAA,IACF;AACD,QAAI,kBAAiB,qBAAqB,IAAI;AAC5C;AAAA,IACD;AACD,UAAM,QAAQ,iBAAiB,SAAS,eAAe;AACvD,sBAAiB,mBAAmB,WAAW,MAAM,iBAAiB,iBAAiB,CAAC,KAAK;AAAA,EAC9F;AAAA,EACD,OAAO,oBAAoBO,QAAO,QAAQ;AAAA,EAAE;AAAA,EAC5C,WAAW,4BAA4B;AACrC,WAAO;EACR;AAAA,EACD,OAAO,yBAAyB,MAAM;AACpC,WAAO;AAAA,EACR;AAAA,EACD,OAAO,MAAM,MAAM,QAAQ;AACzB,gBAAY,iBAAiB;AAAA,EAC9B;AAAA,EACD,IAAI,qBAAqB;AACvB,WAAO;EACR;AAAA,EACD,IAAI,eAAe;AACjB,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,IAAI,aAAa,OAAO;;AACtB,uBAAK,cAAe;AACpB,KAAAV,MAAA,KAAK,QAAL,gBAAAA,IAAU,UAAU,OAAO,aAAa;AAAA,EACzC;AAAA,EACD,IAAI,iBAAiB;AACnB,WAAO;AAAA,EACR;AAAA,EACD,SAAS;AACP,UAAM,CAAC,WAAW,UAAU,IAAI,KAAK;AACrC,YAAQ,KAAK,gBAAc;AAAA,MACzB,KAAK;AACH,aAAK,KAAK,KAAK,SAAS,cAAc,YAAY;AAClD,aAAK,KAAK,KAAK,QAAQ,aAAa,aAAa;AACjD;AAAA,MACF,KAAK;AACH,aAAK,KAAK,KAAK,QAAQ;AACvB,aAAK,KAAK,KAAK,SAAS;AACxB;AAAA,MACF,KAAK;AACH,aAAK,KAAK,KAAK,SAAS,cAAc,YAAY;AAClD,aAAK,KAAK,KAAK,QAAQ,aAAa,aAAa;AACjD;AAAA,MACF;AACE,aAAK,KAAK,KAAK,QAAQ;AACvB,aAAK,KAAK,KAAK,SAAS;AACxB;AAAA,IACH;AACD,SAAK,kBAAiB;AAAA,EACvB;AAAA,EACD,YAAY,QAAQ;AAClB,SAAK,WAAW,YAAY,MAAM;AAAA,EACnC;AAAA,EACD,IAAI,eAAe;AACjB,WAAO,KAAK,WAAW;AAAA,EACxB;AAAA,EACD,kBAAkB;AAChB,SAAK,IAAI,MAAM,SAAS;AAAA,EACzB;AAAA,EACD,kBAAkB;AAChB,SAAK,IAAI,MAAM,SAAS,mBAAK;AAAA,EAC9B;AAAA,EACD,UAAU,QAAQ;AAChB,QAAI,WAAW,MAAM;AACnB,WAAK,YAAY,OAAO;AACxB,WAAK,iBAAiB,OAAO;AAAA,IACnC,OAAW;AACL,4BAAK,gCAAL;AAAA,IACD;AACD,SAAK,SAAS;AAAA,EACf;AAAA,EACD,QAAQ,OAAO;AACb,QAAI,CAAC,KAAK,qBAAqB;AAC7B;AAAA,IACD;AACD,QAAI,CAAC,mBAAK,kBAAiB;AACzB,WAAK,OAAO,YAAY,IAAI;AAAA,IAClC,OAAW;AACL,yBAAK,iBAAkB;AAAA,IACxB;AAAA,EACF;AAAA,EACD,SAAS,OAAO;;AACd,QAAI,CAAC,KAAK,qBAAqB;AAC7B;AAAA,IACD;AACD,QAAI,CAAC,KAAK,iBAAiB;AACzB;AAAA,IACD;AACD,UAAM,SAAS,MAAM;AACrB,QAAI,iCAAQ,QAAQ,IAAI,KAAK,EAAE,KAAK;AAClC;AAAA,IACD;AACD,UAAM,eAAc;AACpB,QAAI,GAACA,MAAA,KAAK,WAAL,gBAAAA,IAAa,sBAAqB;AACrC,WAAK,eAAc;AAAA,IACpB;AAAA,EACF;AAAA,EACD,iBAAiB;AACf,QAAI,KAAK,WAAW;AAClB,WAAK,OAAM;AAAA,IACjB,OAAW;AACL,WAAK,OAAM;AAAA,IACZ;AAAA,EACF;AAAA,EACD,SAAS;AACP,SAAK,uBAAsB;AAAA,EAC5B;AAAA,EACD,yBAAyB;AACvB,SAAK,WAAW,uBAAuB,IAAI;AAAA,EAC5C;AAAA,EACD,MAAM,GAAG,GAAG,IAAI,IAAI;AAClB,UAAM,CAAC,OAAO,MAAM,IAAI,KAAK;AAC7B,KAAC,IAAI,EAAE,IAAI,KAAK,wBAAwB,IAAI,EAAE;AAC9C,SAAK,KAAK,IAAI,MAAM;AACpB,SAAK,KAAK,IAAI,MAAM;AACpB,SAAK,kBAAiB;AAAA,EACvB;AAAA,EAOD,UAAU,GAAG,GAAG;AACd,0BAAK,0BAAL,WAAgB,KAAK,kBAAkB,GAAG;AAAA,EAC3C;AAAA,EACD,gBAAgB,GAAG,GAAG;AACpB,uBAAK,qBAAL,mBAAK,kBAAqB,CAAC,KAAK,GAAG,KAAK,CAAC;AACzC,0BAAK,0BAAL,WAAgB,KAAK,gBAAgB,GAAG;AACxC,SAAK,IAAI,eAAe;AAAA,MACtB,OAAO;AAAA,IACb,CAAK;AAAA,EACF;AAAA,EACD,KAAK,IAAI,IAAI;AACX,uBAAK,qBAAL,mBAAK,kBAAqB,CAAC,KAAK,GAAG,KAAK,CAAC;AACzC,UAAM,CAAC,aAAa,YAAY,IAAI,KAAK;AACzC,SAAK,KAAK,KAAK;AACf,SAAK,KAAK,KAAK;AACf,QAAI,KAAK,WAAW,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI;AACzE,YAAM;AAAA,QACJ,GAAAW;AAAA,QACA,GAAAC;AAAA,MACR,IAAU,KAAK,IAAI;AACb,UAAI,KAAK,OAAO,cAAc,MAAMD,IAAGC,EAAC,GAAG;AACzC,aAAK,KAAK,KAAK,MAAM,KAAK,CAAC;AAC3B,aAAK,KAAK,KAAK,MAAM,KAAK,CAAC;AAAA,MAC5B;AAAA,IACF;AACD,QAAI;AAAA,MACF;AAAA,MACA;AAAA,IACD,IAAG;AACJ,UAAM,CAAC,IAAI,EAAE,IAAI,KAAK,mBAAkB;AACxC,SAAK;AACL,SAAK;AACL,SAAK,IAAI,MAAM,OAAO,IAAI,MAAM,GAAG,QAAQ,CAAC,CAAC;AAC7C,SAAK,IAAI,MAAM,MAAM,IAAI,MAAM,GAAG,QAAQ,CAAC,CAAC;AAC5C,SAAK,IAAI,eAAe;AAAA,MACtB,OAAO;AAAA,IACb,CAAK;AAAA,EACF;AAAA,EACD,IAAI,gBAAgB;AAClB,WAAO,CAAC,CAAC,mBAAK,sBAAqB,mBAAK,kBAAiB,CAAC,MAAM,KAAK,KAAK,mBAAK,kBAAiB,CAAC,MAAM,KAAK;AAAA,EAC7G;AAAA,EACD,qBAAqB;AACnB,UAAM,CAAC,aAAa,YAAY,IAAI,KAAK;AACzC,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,UAAM,IAAI,mBAAmB;AAC7B,UAAM,IAAI,mBAAmB;AAC7B,YAAQ,KAAK,UAAQ;AAAA,MACnB,KAAK;AACH,eAAO,CAAC,CAAC,GAAG,CAAC;AAAA,MACf,KAAK;AACH,eAAO,CAAC,GAAG,CAAC;AAAA,MACd,KAAK;AACH,eAAO,CAAC,GAAG,CAAC,CAAC;AAAA,MACf;AACE,eAAO,CAAC,CAAC,GAAG,CAAC,CAAC;AAAA,IACjB;AAAA,EACF;AAAA,EACD,IAAI,mBAAmB;AACrB,WAAO;AAAA,EACR;AAAA,EACD,kBAAkB,WAAW,KAAK,UAAU;AAC1C,UAAM,CAAC,WAAW,UAAU,IAAI,KAAK;AACrC,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAG;AACJ,aAAS;AACT,cAAU;AACV,SAAK;AACL,SAAK;AACL,QAAI,KAAK,kBAAkB;AACzB,cAAQ,UAAQ;AAAA,QACd,KAAK;AACH,cAAI,KAAK,IAAI,GAAG,KAAK,IAAI,YAAY,OAAO,CAAC,CAAC;AAC9C,cAAI,KAAK,IAAI,GAAG,KAAK,IAAI,aAAa,QAAQ,CAAC,CAAC;AAChD;AAAA,QACF,KAAK;AACH,cAAI,KAAK,IAAI,GAAG,KAAK,IAAI,YAAY,QAAQ,CAAC,CAAC;AAC/C,cAAI,KAAK,IAAI,YAAY,KAAK,IAAI,OAAO,CAAC,CAAC;AAC3C;AAAA,QACF,KAAK;AACH,cAAI,KAAK,IAAI,WAAW,KAAK,IAAI,OAAO,CAAC,CAAC;AAC1C,cAAI,KAAK,IAAI,YAAY,KAAK,IAAI,QAAQ,CAAC,CAAC;AAC5C;AAAA,QACF,KAAK;AACH,cAAI,KAAK,IAAI,WAAW,KAAK,IAAI,QAAQ,CAAC,CAAC;AAC3C,cAAI,KAAK,IAAI,GAAG,KAAK,IAAI,aAAa,OAAO,CAAC,CAAC;AAC/C;AAAA,MACH;AAAA,IACF;AACD,SAAK,IAAI,KAAK;AACd,SAAK,IAAI,KAAK;AACd,UAAM,CAAC,IAAI,EAAE,IAAI,KAAK,mBAAkB;AACxC,SAAK;AACL,SAAK;AACL,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,KAAK;AACT,UAAM,OAAO,IAAI,MAAM,GAAG,QAAQ,CAAC,CAAC;AACpC,UAAM,MAAM,IAAI,MAAM,GAAG,QAAQ,CAAC,CAAC;AACnC,SAAK,UAAS;AAAA,EACf;AAAA,EAaD,wBAAwB,GAAG,GAAG;;AAC5B,WAAO,gBAAAZ,MAAA,mBAAiB,8BAAjB,KAAAA,KAA8B,GAAG,GAAG,KAAK;AAAA,EACjD;AAAA,EACD,wBAAwB,GAAG,GAAG;;AAC5B,WAAO,gBAAAA,MAAA,mBAAiB,8BAAjB,KAAAA,KAA8B,GAAG,GAAG,MAAM,KAAK;AAAA,EACvD;AAAA,EAmBD,IAAI,cAAc;AAChB,WAAO,KAAK,WAAW,eAAe;AAAA,EACvC;AAAA,EACD,IAAI,iBAAiB;AACnB,YAAQ,KAAK,WAAW,eAAe,WAAW,KAAK,gBAAgB;AAAA,EACxE;AAAA,EACD,IAAI,mBAAmB;AACrB,UAAM;AAAA,MACJ;AAAA,MACA,gBAAgB,CAAC,WAAW,UAAU;AAAA,IACvC,IAAG;AACJ,UAAM,cAAc,YAAY;AAChC,UAAM,eAAe,aAAa;AAClC,WAAO,iBAAiB,sBAAsB,CAAC,KAAK,MAAM,WAAW,GAAG,KAAK,MAAM,YAAY,CAAC,IAAI,CAAC,aAAa,YAAY;AAAA,EAC/H;AAAA,EACD,QAAQ,OAAO,QAAQ;AACrB,UAAM,CAAC,aAAa,YAAY,IAAI,KAAK;AACzC,SAAK,IAAI,MAAM,QAAQ,IAAI,MAAM,QAAQ,aAAa,QAAQ,CAAC,CAAC;AAChE,QAAI,CAAC,mBAAK,mBAAkB;AAC1B,WAAK,IAAI,MAAM,SAAS,IAAI,MAAM,SAAS,cAAc,QAAQ,CAAC,CAAC;AAAA,IACpE;AAAA,EACF;AAAA,EACD,UAAU;AACR,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,KAAK;AACT,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACD,IAAG;AACJ,UAAM,eAAe,MAAM,SAAS,GAAG;AACvC,UAAM,gBAAgB,CAAC,mBAAK,qBAAoB,OAAO,SAAS,GAAG;AACnE,QAAI,gBAAgB,eAAe;AACjC;AAAA,IACD;AACD,UAAM,CAAC,aAAa,YAAY,IAAI,KAAK;AACzC,QAAI,CAAC,cAAc;AACjB,YAAM,QAAQ,IAAI,MAAM,WAAW,KAAK,IAAI,aAAa,QAAQ,CAAC,CAAC;AAAA,IACpE;AACD,QAAI,CAAC,mBAAK,qBAAoB,CAAC,eAAe;AAC5C,YAAM,SAAS,IAAI,MAAM,WAAW,MAAM,IAAI,cAAc,QAAQ,CAAC,CAAC;AAAA,IACvE;AAAA,EACF;AAAA,EACD,wBAAwB;AACtB,WAAO,CAAC,GAAG,CAAC;AAAA,EACb;AAAA,EAyLD,gBAAgB;;AACd,KAAAA,MAAA,mBAAKQ,eAAL,gBAAAR,IAAe;AAAA,EAChB;AAAA,EACD,MAAM,iBAAiB;AACrB,QAAI,KAAK,gBAAgB,mBAAK,gBAAe;AAC3C,aAAO,KAAK;AAAA,IACb;AACD,SAAK,eAAe,IAAI,cAAc,IAAI;AAC1C,SAAK,IAAI,OAAO,KAAK,aAAa,OAAM,CAAE;AAC1C,QAAI,mBAAKQ,YAAU;AACjB,YAAM,KAAK,aAAa,WAAW,mBAAKA,UAAQ;AAAA,IACjD;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,oBAAoB;;AAClB,QAAI,CAAC,KAAK,cAAc;AACtB;AAAA,IACD;AACD,SAAK,aAAa;AAClB,SAAK,eAAe;AACpB,KAAAR,MAAA,mBAAKQ,eAAL,gBAAAR,IAAe;AAAA,EAChB;AAAA,EACD,sBAAsB;AACpB,WAAO,KAAK,IAAI;EACjB;AAAA,EACD,MAAM,mBAAmB;AACvB,QAAI,mBAAKQ,YAAU;AACjB;AAAA,IACD;AACD,YAAQ,WAAW,kBAAiB,YAAY;AAChD,uBAAKA,WAAW,IAAI,QAAQ,IAAI;AAChC,QAAI,mBAAK,qBAAoB;AAC3B,yBAAKA,WAAS,OAAO,mBAAK;AAC1B,yBAAK,oBAAqB;AAAA,IAC3B;AACD,UAAM,KAAK;EACZ;AAAA,EACD,IAAI,cAAc;;AAChB,YAAOR,MAAA,mBAAKQ,eAAL,gBAAAR,IAAe;AAAA,EACvB;AAAA,EACD,IAAI,YAAY,MAAM;AACpB,QAAI,CAAC,mBAAKQ,YAAU;AAClB;AAAA,IACD;AACD,uBAAKA,WAAS,OAAO;AAAA,EACtB;AAAA,EACD,IAAI,iBAAiB;;AACnB,YAAOR,MAAA,mBAAKQ,eAAL,gBAAAR,IAAe;AAAA,EACvB;AAAA,EACD,MAAM,kBAAkB,MAAM;;AAC5B,YAAMA,MAAA,mBAAKQ,eAAL,gBAAAR,IAAe,eAAe;AAAA,EACrC;AAAA,EACD,iBAAiB,cAAc;;AAC7B,YAAOA,MAAA,mBAAKQ,eAAL,gBAAAR,IAAe,UAAU;AAAA,EACjC;AAAA,EACD,aAAa;AACX,WAAO,CAAC,CAAC,mBAAKQ,cAAY,CAAC,mBAAKA,WAAS;EAC1C;AAAA,EACD,iBAAiB;;AACf,aAAOR,MAAA,mBAAKQ,eAAL,gBAAAR,IAAe,cAAa;AAAA,EACpC;AAAA,EACD,SAAS;AACP,SAAK,MAAM,SAAS,cAAc,KAAK;AACvC,SAAK,IAAI,aAAa,yBAAyB,MAAM,KAAK,YAAY,GAAG;AACzE,SAAK,IAAI,YAAY,KAAK;AAC1B,SAAK,IAAI,aAAa,MAAM,KAAK,EAAE;AACnC,SAAK,IAAI,WAAW,mBAAK,aAAY,KAAK;AAC1C,QAAI,CAAC,KAAK,YAAY;AACpB,WAAK,IAAI,UAAU,IAAI,QAAQ;AAAA,IAChC;AACD,SAAK,gBAAe;AACpB,0BAAK,0CAAL;AACA,UAAM,CAAC,aAAa,YAAY,IAAI,KAAK;AACzC,QAAI,KAAK,iBAAiB,QAAQ,GAAG;AACnC,WAAK,IAAI,MAAM,WAAW,IAAI,MAAM,eAAe,aAAa,QAAQ,CAAC,CAAC;AAC1E,WAAK,IAAI,MAAM,YAAY,IAAI,MAAM,cAAc,cAAc,QAAQ,CAAC,CAAC;AAAA,IAC5E;AACD,UAAM,CAAC,IAAI,EAAE,IAAI,KAAK,sBAAqB;AAC3C,SAAK,UAAU,IAAI,EAAE;AACrB,eAAW,MAAM,KAAK,KAAK,CAAC,aAAa,CAAC;AAC1C,WAAO,KAAK;AAAA,EACb;AAAA,EACD,YAAY,OAAO;AACjB,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,iBAAiB;AACrB,QAAI,MAAM,WAAW,KAAK,MAAM,WAAW,OAAO;AAChD,YAAM,eAAc;AACpB;AAAA,IACD;AACD,uBAAK,iBAAkB;AACvB,QAAI,KAAK,cAAc;AACrB,4BAAK,wCAAL,WAAuB;AACvB;AAAA,IACD;AACD,0BAAK,gDAAL,WAA2B;AAAA,EAC5B;AAAA,EAqDD,YAAY;AACV,QAAI,mBAAK,oBAAmB;AAC1B,mBAAa,mBAAK,kBAAiB;AAAA,IACpC;AACD,uBAAK,mBAAoB,WAAW,MAAM;;AACxC,yBAAK,mBAAoB;AACzB,OAAAA,MAAA,KAAK,WAAL,gBAAAA,IAAa,gBAAgB;AAAA,IAC9B,GAAE,CAAC;AAAA,EACL;AAAA,EACD,sBAAsB,QAAQ,GAAG,GAAG;AAClC,WAAO,aAAa,IAAI;AACxB,SAAK,IAAI;AACT,SAAK,IAAI;AACT,SAAK,kBAAiB;AAAA,EACvB;AAAA,EACD,QAAQ,IAAI,IAAI,WAAW,KAAK,UAAU;AACxC,UAAM,QAAQ,KAAK;AACnB,UAAM,CAAC,WAAW,UAAU,IAAI,KAAK;AACrC,UAAM,CAAC,OAAO,KAAK,IAAI,KAAK;AAC5B,UAAM,SAAS,KAAK;AACpB,UAAM,SAAS,KAAK;AACpB,UAAM,IAAI,KAAK,IAAI;AACnB,UAAM,IAAI,KAAK,IAAI;AACnB,UAAM,QAAQ,KAAK,QAAQ;AAC3B,UAAM,SAAS,KAAK,SAAS;AAC7B,YAAQ,UAAQ;AAAA,MACd,KAAK;AACH,eAAO,CAAC,IAAI,SAAS,OAAO,aAAa,IAAI,SAAS,SAAS,OAAO,IAAI,SAAS,QAAQ,OAAO,aAAa,IAAI,SAAS,KAAK;AAAA,MACnI,KAAK;AACH,eAAO,CAAC,IAAI,SAAS,OAAO,aAAa,IAAI,SAAS,OAAO,IAAI,SAAS,SAAS,OAAO,aAAa,IAAI,SAAS,QAAQ,KAAK;AAAA,MACnI,KAAK;AACH,eAAO,CAAC,IAAI,SAAS,QAAQ,OAAO,aAAa,IAAI,SAAS,OAAO,IAAI,SAAS,OAAO,aAAa,IAAI,SAAS,SAAS,KAAK;AAAA,MACnI,KAAK;AACH,eAAO,CAAC,IAAI,SAAS,SAAS,OAAO,aAAa,IAAI,SAAS,QAAQ,OAAO,IAAI,SAAS,OAAO,aAAa,IAAI,SAAS,KAAK;AAAA,MACnI;AACE,cAAM,IAAI,MAAM,kBAAkB;AAAA,IACrC;AAAA,EACF;AAAA,EACD,uBAAuB,MAAM,YAAY;AACvC,UAAM,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI;AACzB,UAAM,QAAQ,KAAK;AACnB,UAAM,SAAS,KAAK;AACpB,YAAQ,KAAK,UAAQ;AAAA,MACnB,KAAK;AACH,eAAO,CAAC,IAAI,aAAa,IAAI,OAAO,MAAM;AAAA,MAC5C,KAAK;AACH,eAAO,CAAC,IAAI,aAAa,IAAI,QAAQ,KAAK;AAAA,MAC5C,KAAK;AACH,eAAO,CAAC,IAAI,aAAa,IAAI,OAAO,MAAM;AAAA,MAC5C,KAAK;AACH,eAAO,CAAC,IAAI,aAAa,IAAI,QAAQ,KAAK;AAAA,MAC5C;AACE,cAAM,IAAI,MAAM,kBAAkB;AAAA,IACrC;AAAA,EACF;AAAA,EACD,YAAY;AAAA,EAAE;AAAA,EACd,UAAU;AACR,WAAO;AAAA,EACR;AAAA,EACD,iBAAiB;AACf,uBAAK,eAAgB;AAAA,EACtB;AAAA,EACD,kBAAkB;AAChB,uBAAK,eAAgB;AAAA,EACtB;AAAA,EACD,eAAe;AACb,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,0BAA0B;AACxB,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,mBAAmB;AACjB,WAAO,KAAK,OAAO,CAAC,KAAK;AAAA,EAC1B;AAAA,EAcD,UAAU;AACR,0BAAK,0CAAL;AAAA,EACD;AAAA,EACD,OAAO,QAAQ;AAAA,EAAE;AAAA,EACjB,UAAU,eAAe,OAAO,UAAU,MAAM;AAC9C,gBAAY,gCAAgC;AAAA,EAC7C;AAAA,EACD,OAAO,YAAY,MAAM,QAAQ,WAAW;AAC1C,UAAM,SAAS,IAAI,KAAK,UAAU,YAAY;AAAA,MAC5C;AAAA,MACA,IAAI,OAAO,UAAW;AAAA,MACtB;AAAA,IACN,CAAK;AACD,WAAO,WAAW,KAAK;AACvB,yBAAO,oBAAqB,KAAK;AACjC,UAAM,CAAC,WAAW,UAAU,IAAI,OAAO;AACvC,UAAM,CAAC,GAAG,GAAG,OAAO,MAAM,IAAI,OAAO,uBAAuB,KAAK,MAAM,UAAU;AACjF,WAAO,IAAI,IAAI;AACf,WAAO,IAAI,IAAI;AACf,WAAO,QAAQ,QAAQ;AACvB,WAAO,SAAS,SAAS;AACzB,WAAO;AAAA,EACR;AAAA,EACD,IAAI,kBAAkB;AACpB,WAAO,CAAC,CAAC,KAAK,wBAAwB,KAAK,WAAW,KAAK,gBAAgB;AAAA,EAC5E;AAAA,EACD,SAAS;;AACP,KAAAA,MAAA,mBAAK,cAAL,gBAAAA,IAAe;AACf,uBAAK,UAAW;AAChB,QAAI,CAAC,KAAK,WAAW;AACnB,WAAK,OAAM;AAAA,IACZ;AACD,QAAI,KAAK,QAAQ;AACf,WAAK,OAAO,OAAO,IAAI;AAAA,IAC7B,OAAW;AACL,WAAK,WAAW,aAAa,IAAI;AAAA,IAClC;AACD,QAAI,mBAAK,oBAAmB;AAC1B,mBAAa,mBAAK,kBAAiB;AACnC,yBAAK,mBAAoB;AAAA,IAC1B;AACD,0BAAK,gCAAL;AACA,SAAK,kBAAiB;AACtB,QAAI,mBAAK,qBAAoB;AAC3B,iBAAW,WAAW,mBAAK,oBAAmB,OAAM,GAAI;AACtD,qBAAa,OAAO;AAAA,MACrB;AACD,yBAAK,oBAAqB;AAAA,IAC3B;AACD,SAAK,SAAS;AAAA,EACf;AAAA,EACD,IAAI,cAAc;AAChB,WAAO;AAAA,EACR;AAAA,EACD,gBAAgB;AACd,QAAI,KAAK,aAAa;AACpB,4BAAK,oCAAL;AACA,yBAAK,cAAa,UAAU,OAAO,QAAQ;AAC3C,iBAAW,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;AAAA,IACvC;AAAA,EACF;AAAA,EACD,IAAI,kBAAkB;AACpB,WAAO;AAAA,EACR;AAAA,EACD,QAAQ,OAAO;AACb,QAAI,CAAC,KAAK,eAAe,MAAM,WAAW,KAAK,OAAO,MAAM,QAAQ,SAAS;AAC3E;AAAA,IACD;AACD,SAAK,WAAW,YAAY,IAAI;AAChC,uBAAK,kBAAmB;AAAA,MACtB,QAAQ,KAAK;AAAA,MACb,QAAQ,KAAK;AAAA,MACb,YAAY,KAAK;AAAA,MACjB,aAAa,KAAK;AAAA,IACxB;AACI,UAAM,WAAW,mBAAK,cAAa;AACnC,QAAI,CAAC,mBAAK,kBAAiB;AACzB,yBAAK,iBAAkB,MAAM,KAAK,QAAQ;AAC1C,YAAM,sBAAsB,sBAAK,oCAAgB,KAAK,IAAI;AAC1D,YAAM,mBAAmB,sBAAK,8BAAa,KAAK,IAAI;AACpD,YAAM,SAAS,KAAK,WAAW;AAC/B,iBAAW,OAAO,mBAAK,kBAAiB;AACtC,cAAM,OAAO,IAAI,aAAa,mBAAmB;AACjD,YAAI,aAAa,QAAQ,YAAY;AACrC,YAAI,iBAAiB,WAAW,qBAAqB;AAAA,UACnD;AAAA,QACV,CAAS;AACD,YAAI,iBAAiB,QAAQ,kBAAkB;AAAA,UAC7C;AAAA,QACV,CAAS;AACD,YAAI,iBAAiB,SAAS,sBAAK,gCAAc,KAAK,MAAM,IAAI,GAAG;AAAA,UACjE;AAAA,QACV,CAAS;AACD,YAAI,aAAa,gBAAgB,kBAAiB,aAAa,IAAI,CAAC;AAAA,MACrE;AAAA,IACF;AACD,UAAM,QAAQ,mBAAK,iBAAgB,CAAC;AACpC,QAAI,gBAAgB;AACpB,eAAW,OAAO,UAAU;AAC1B,UAAI,QAAQ,OAAO;AACjB;AAAA,MACD;AACD;AAAA,IACD;AACD,UAAM,qBAAqB,MAAM,KAAK,WAAW,KAAK,kBAAkB,MAAM,MAAM,mBAAK,iBAAgB,SAAS;AAClH,QAAI,sBAAsB,eAAe;AACvC,UAAI,oBAAoB,eAAe;AACrC,iBAASa,KAAI,GAAGA,KAAI,gBAAgB,mBAAmBA,MAAK;AAC1D,6BAAK,cAAa,OAAO,mBAAK,cAAa,UAAU;AAAA,QACtD;AAAA,MACT,WAAiB,oBAAoB,eAAe;AAC5C,iBAASA,KAAI,GAAGA,KAAI,oBAAoB,eAAeA,MAAK;AAC1D,6BAAK,cAAa,WAAW,OAAO,mBAAK,cAAa,SAAS;AAAA,QAChE;AAAA,MACF;AACD,UAAI,IAAI;AACR,iBAAW,SAAS,UAAU;AAC5B,cAAM,MAAM,mBAAK,iBAAgB,GAAG;AACpC,cAAM,OAAO,IAAI,aAAa,mBAAmB;AACjD,cAAM,aAAa,gBAAgB,kBAAiB,aAAa,IAAI,CAAC;AAAA,MACvE;AAAA,IACF;AACD,0BAAK,4CAAL,WAAyB;AACzB,uBAAK,8BAA+B;AACpC,uBAAK,cAAa,WAAW,MAAM;AAAA,MACjC,cAAc;AAAA,IACpB,CAAK;AACD,UAAM,eAAc;AACpB,UAAM,yBAAwB;AAAA,EAC/B;AAAA,EAoBD,oBAAoB,GAAG,GAAG;AACxB,QAAI,CAAC,mBAAK,+BAA8B;AACtC;AAAA,IACD;AACD,0BAAK,4CAAL,WAAyB,mBAAK,sBAAqB;AAAA,MACjD,WAAW;AAAA,MACX,WAAW;AAAA,IACjB;AAAA,EACG;AAAA,EAeD,4BAA4B;AAC1B,0BAAK,gCAAL;AACA,SAAK,IAAI;EACV;AAAA,EACD,SAAS;;AACP,SAAK,cAAa;AAClB,KAAAb,MAAA,KAAK,QAAL,gBAAAA,IAAU,UAAU,IAAI;AACxB,QAAI,CAAC,KAAK,cAAc;AACtB,WAAK,iBAAiB,KAAK,MAAM;;AAC/B,aAAIA,MAAA,KAAK,QAAL,gBAAAA,IAAU,UAAU,SAAS,mBAAmB;AAClD,WAAAc,MAAA,KAAK,iBAAL,gBAAAA,IAAmB;AAAA,QACpB;AAAA,MACT,CAAO;AACD;AAAA,IACD;AACD,eAAK,iBAAL,mBAAmB;AACnB,6BAAKN,eAAL,mBAAe,mBAAmB;AAAA,EACnC;AAAA,EACD,WAAW;;AACT,KAAAR,MAAA,mBAAK,kBAAL,gBAAAA,IAAmB,UAAU,IAAI;AACjC,eAAK,QAAL,mBAAU,UAAU,OAAO;AAC3B,SAAI,UAAK,QAAL,mBAAU,SAAS,SAAS,gBAAgB;AAC9C,WAAK,WAAW,aAAa,IAAI,MAAM;AAAA,QACrC,eAAe;AAAA,MACvB,CAAO;AAAA,IACF;AACD,eAAK,iBAAL,mBAAmB;AACnB,6BAAKQ,eAAL,mBAAe,mBAAmB;AAAA,EACnC;AAAA,EACD,aAAa,MAAM,OAAO;AAAA,EAAE;AAAA,EAC5B,iBAAiB;AAAA,EAAE;AAAA,EACnB,gBAAgB;AAAA,EAAE;AAAA,EAClB,kBAAkB;AAAA,EAAE;AAAA,EACpB,qBAAqB;AACnB,WAAO;AAAA,EACR;AAAA,EACD,IAAI,aAAa;AACf,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,YAAY;AACd,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,IAAI,UAAU,OAAO;AACnB,uBAAK,YAAa;AAClB,QAAI,CAAC,KAAK,QAAQ;AAChB;AAAA,IACD;AACD,QAAI,OAAO;AACT,WAAK,OAAO,YAAY,IAAI;AAC5B,WAAK,OAAO,gBAAgB,IAAI;AAAA,IACtC,OAAW;AACL,WAAK,OAAO,gBAAgB,IAAI;AAAA,IACjC;AAAA,EACF;AAAA,EACD,eAAe,OAAO,QAAQ;AAC5B,uBAAK,kBAAmB;AACxB,UAAM,cAAc,QAAQ;AAC5B,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,KAAK;AACT,UAAM,cAAc;AACpB,UAAM,SAAS;AAAA,EAChB;AAAA,EACD,WAAW,WAAW;AACpB,WAAO;AAAA,EACR;AAAA,EACD,OAAO,0BAA0B;AAC/B,WAAO;AAAA,EACR;AAAA,EACD,IAAI,uBAAuB;AACzB,WAAO;AAAA,MACL,QAAQ;AAAA,IACd;AAAA,EACG;AAAA,EACD,IAAI,qBAAqB;AACvB,WAAO;AAAA,EACR;AAAA,EACD,iBAAiB,MAAM,WAAW,OAAO;AACvC,QAAI,UAAU;AACZ,yBAAK,uBAAL,mBAAK,oBAAuB,oBAAI;AAChC,YAAM;AAAA,QACJ;AAAA,MACD,IAAG;AACJ,UAAI,UAAU,mBAAK,oBAAmB,IAAI,MAAM;AAChD,UAAI,SAAS;AACX,qBAAa,OAAO;AAAA,MACrB;AACD,gBAAU,WAAW,MAAM;AACzB,aAAK,iBAAiB,IAAI;AAC1B,2BAAK,oBAAmB,OAAO,MAAM;AACrC,YAAI,mBAAK,oBAAmB,SAAS,GAAG;AACtC,6BAAK,oBAAqB;AAAA,QAC3B;AAAA,MACT,GAAS,kBAAiB,iBAAiB;AACrC,yBAAK,oBAAmB,IAAI,QAAQ,OAAO;AAC3C;AAAA,IACD;AACD,SAAK,SAAL,KAAK,OAAS,KAAK;AACnB,SAAK,WAAW,UAAU,SAAS,mBAAmB;AAAA,MACpD,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,MAAM;AAAA,QACN;AAAA,MACD;AAAA,IACP,CAAK;AAAA,EACF;AAAA,EACD,KAAK,UAAU,KAAK,YAAY;AAC9B,SAAK,IAAI,UAAU,OAAO,UAAU,CAAC,OAAO;AAC5C,SAAK,aAAa;AAAA,EACnB;AAAA,EACD,SAAS;AACP,QAAI,KAAK,KAAK;AACZ,WAAK,IAAI,WAAW;AAAA,IACrB;AACD,uBAAK,WAAY;AAAA,EAClB;AAAA,EACD,UAAU;AACR,QAAI,KAAK,KAAK;AACZ,WAAK,IAAI,WAAW;AAAA,IACrB;AACD,uBAAK,WAAY;AAAA,EAClB;AAAA,EACD,wBAAwB,YAAY;AAClC,QAAI,UAAU,WAAW,UAAU,cAAc,oBAAoB;AACrE,QAAI,CAAC,SAAS;AACZ,gBAAU,SAAS,cAAc,KAAK;AACtC,cAAQ,UAAU,IAAI,qBAAqB,KAAK,UAAU;AAC1D,iBAAW,UAAU,QAAQ,OAAO;AAAA,IAC1C,WAAe,QAAQ,aAAa,UAAU;AACxC,YAAM,SAAS;AACf,gBAAU,SAAS,cAAc,KAAK;AACtC,cAAQ,UAAU,IAAI,qBAAqB,KAAK,UAAU;AAC1D,aAAO,OAAO,OAAO;AAAA,IACtB;AACD,WAAO;AAAA,EACR;AAAA,EACD,uBAAuB,YAAY;AACjC,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,WAAW;AACf,QAAI,WAAW,aAAa,SAAS,WAAW,UAAU,SAAS,mBAAmB,GAAG;AACvF,iBAAW,OAAM;AAAA,IAClB;AAAA,EACF;AACH;AA7oCE;AACA;AACAA,YAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;AACA;AAiNA;AAAA,eAAU,SAAC,CAAC,OAAO,MAAM,GAAG,GAAG,GAAG;AAChC,GAAC,GAAG,CAAC,IAAI,KAAK,wBAAwB,GAAG,CAAC;AAC1C,OAAK,KAAK,IAAI;AACd,OAAK,KAAK,IAAI;AACd,OAAK,kBAAiB;AACvB;AA2GM;AAAA,iBAAY,SAAC,GAAG,GAAG,OAAO;AAC/B,UAAQ,OAAK;AAAA,IACX,KAAK;AACH,aAAO,CAAC,GAAG,CAAC,CAAC;AAAA,IACf,KAAK;AACH,aAAO,CAAC,CAAC,GAAG,CAAC,CAAC;AAAA,IAChB,KAAK;AACH,aAAO,CAAC,CAAC,GAAG,CAAC;AAAA,IACf;AACE,aAAO,CAAC,GAAG,CAAC;AAAA,EACf;AACF;AAOD;AAAA,uBAAkB,SAAC,UAAU;AAC3B,UAAQ,UAAQ;AAAA,IACd,KAAK,IACH;AACE,YAAM,CAAC,WAAW,UAAU,IAAI,KAAK;AACrC,aAAO,CAAC,GAAG,CAAC,YAAY,YAAY,aAAa,WAAW,CAAC;AAAA,IAC9D;AAAA,IACH,KAAK;AACH,aAAO,CAAC,IAAI,GAAG,GAAG,EAAE;AAAA,IACtB,KAAK,KACH;AACE,YAAM,CAAC,WAAW,UAAU,IAAI,KAAK;AACrC,aAAO,CAAC,GAAG,YAAY,YAAY,CAAC,aAAa,WAAW,CAAC;AAAA,IAC9D;AAAA,IACH;AACE,aAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,EACrB;AACF;AA+CD;AAAA,oBAAe,WAAG;AAChB,MAAI,mBAAK,eAAc;AACrB;AAAA,EACD;AACD,qBAAK,cAAe,SAAS,cAAc,KAAK;AAChD,qBAAK,cAAa,UAAU,IAAI,UAAU;AAC1C,QAAM,UAAU,KAAK,uBAAuB,CAAC,WAAW,YAAY,eAAe,YAAY,IAAI,CAAC,WAAW,aAAa,YAAY,eAAe,eAAe,gBAAgB,cAAc,YAAY;AAChN,QAAM,SAAS,KAAK,WAAW;AAC/B,aAAW,QAAQ,SAAS;AAC1B,UAAM,MAAM,SAAS,cAAc,KAAK;AACxC,uBAAK,cAAa,OAAO,GAAG;AAC5B,QAAI,UAAU,IAAI,WAAW,IAAI;AACjC,QAAI,aAAa,qBAAqB,IAAI;AAC1C,QAAI,iBAAiB,eAAe,sBAAK,4CAAoB,KAAK,MAAM,IAAI,GAAG;AAAA,MAC7E;AAAA,IACR,CAAO;AACD,QAAI,iBAAiB,eAAe,eAAe;AAAA,MACjD;AAAA,IACR,CAAO;AACD,QAAI,WAAW;AAAA,EAChB;AACD,OAAK,IAAI,QAAQ,mBAAK,aAAY;AACnC;AACD;AAAA,wBAAmB,SAAC,MAAM,OAAO;;AAC/B,QAAM,eAAc;AACpB,QAAM;AAAA,IACJ;AAAA,EACN,IAAQ,iBAAiB;AACrB,MAAI,MAAM,WAAW,KAAK,MAAM,WAAW,OAAO;AAChD;AAAA,EACD;AACD,GAAAR,MAAA,mBAAKQ,eAAL,gBAAAR,IAAe,OAAO;AACtB,QAAM,iBAAiB,KAAK;AAC5B,OAAK,eAAe;AACpB,QAAM,KAAK,IAAI;AACf,QAAM,SAAS,KAAK,WAAW,eAAe,EAAE;AAChD,OAAK,OAAO,oBAAoB,KAAK;AACrC,SAAO,iBAAiB,eAAe,sBAAK,4CAAoB,KAAK,MAAM,IAAI,GAAG;AAAA,IAChF,SAAS;AAAA,IACT,SAAS;AAAA,IACT;AAAA,EACN,CAAK;AACD,SAAO,iBAAiB,eAAe,eAAe;AAAA,IACpD;AAAA,EACN,CAAK;AACD,QAAM,SAAS,KAAK;AACpB,QAAM,SAAS,KAAK;AACpB,QAAM,aAAa,KAAK;AACxB,QAAM,cAAc,KAAK;AACzB,QAAM,oBAAoB,KAAK,OAAO,IAAI,MAAM;AAChD,QAAM,cAAc,KAAK,IAAI,MAAM;AACnC,OAAK,IAAI,MAAM,SAAS,KAAK,OAAO,IAAI,MAAM,SAAS,OAAO,iBAAiB,MAAM,MAAM,EAAE;AAC7F,QAAM,oBAAoB,MAAM;;AAC9B,OAAG,MAAK;AACR,SAAK,OAAO,oBAAoB,IAAI;AACpC,KAAAA,MAAA,mBAAKQ,eAAL,gBAAAR,IAAe,OAAO;AACtB,SAAK,eAAe;AACpB,SAAK,OAAO,IAAI,MAAM,SAAS;AAC/B,SAAK,IAAI,MAAM,SAAS;AACxB,0BAAK,gDAAL,WAA2B,QAAQ,QAAQ,YAAY;AAAA,EAC7D;AACI,SAAO,iBAAiB,aAAa,mBAAmB;AAAA,IACtD;AAAA,EACN,CAAK;AACD,SAAO,iBAAiB,QAAQ,mBAAmB;AAAA,IACjD;AAAA,EACN,CAAK;AACF;AACD;AAAA,0BAAqB,SAAC,QAAQ,QAAQ,YAAY,aAAa;AAC7D,QAAM,OAAO,KAAK;AAClB,QAAM,OAAO,KAAK;AAClB,QAAM,WAAW,KAAK;AACtB,QAAM,YAAY,KAAK;AACvB,MAAI,SAAS,UAAU,SAAS,UAAU,aAAa,cAAc,cAAc,aAAa;AAC9F;AAAA,EACD;AACD,OAAK,YAAY;AAAA,IACf,KAAK,MAAM;AACT,WAAK,QAAQ;AACb,WAAK,SAAS;AACd,WAAK,IAAI;AACT,WAAK,IAAI;AACT,YAAM,CAAC,aAAa,YAAY,IAAI,KAAK;AACzC,WAAK,QAAQ,cAAc,UAAU,eAAe,SAAS;AAC7D,WAAK,kBAAiB;AAAA,IACvB;AAAA,IACD,MAAM,MAAM;AACV,WAAK,QAAQ;AACb,WAAK,SAAS;AACd,WAAK,IAAI;AACT,WAAK,IAAI;AACT,YAAM,CAAC,aAAa,YAAY,IAAI,KAAK;AACzC,WAAK,QAAQ,cAAc,YAAY,eAAe,WAAW;AACjE,WAAK,kBAAiB;AAAA,IACvB;AAAA,IACD,UAAU;AAAA,EAChB,CAAK;AACF;AACD;AAAA,wBAAmB,SAAC,MAAM,OAAO;AAC/B,QAAM,CAAC,aAAa,YAAY,IAAI,KAAK;AACzC,QAAM,SAAS,KAAK;AACpB,QAAM,SAAS,KAAK;AACpB,QAAM,aAAa,KAAK;AACxB,QAAM,cAAc,KAAK;AACzB,QAAM,WAAW,kBAAiB,WAAW;AAC7C,QAAM,YAAY,kBAAiB,WAAW;AAC9C,QAAM,QAAQ,OAAK,KAAK,MAAM,IAAI,GAAK,IAAI;AAC3C,QAAM,iBAAiB,sBAAK,0CAAL,WAAwB,KAAK;AACpD,QAAM,SAAS,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,IAAI,eAAe,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC;AACtH,QAAM,oBAAoB,sBAAK,0CAAL,WAAwB,MAAM,KAAK;AAC7D,QAAM,YAAY,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC,IAAI,IAAI,kBAAkB,CAAC,IAAI,GAAG,kBAAkB,CAAC,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC;AACrI,MAAI;AACJ,MAAI;AACJ,MAAI,aAAa;AACjB,MAAI,eAAe;AACnB,UAAQ,MAAI;AAAA,IACV,KAAK;AACH,mBAAa;AACb,iBAAW,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AAC1B,oBAAc,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AAC7B;AAAA,IACF,KAAK;AACH,iBAAW,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC;AAC9B,oBAAc,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC;AACjC;AAAA,IACF,KAAK;AACH,mBAAa;AACb,iBAAW,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AAC1B,oBAAc,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AAC7B;AAAA,IACF,KAAK;AACH,qBAAe;AACf,iBAAW,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC9B,oBAAc,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AACjC;AAAA,IACF,KAAK;AACH,mBAAa;AACb,iBAAW,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AAC1B,oBAAc,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AAC7B;AAAA,IACF,KAAK;AACH,iBAAW,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC;AAC9B,oBAAc,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC;AACjC;AAAA,IACF,KAAK;AACH,mBAAa;AACb,iBAAW,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AAC1B,oBAAc,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AAC7B;AAAA,IACF,KAAK;AACH,qBAAe;AACf,iBAAW,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC9B,oBAAc,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AACjC;AAAA,EACH;AACD,QAAM,QAAQ,SAAS,YAAY,WAAW;AAC9C,QAAM,gBAAgB,YAAY,YAAY,WAAW;AACzD,MAAI,sBAAsB,OAAO,GAAG,aAAa;AACjD,QAAM,YAAY,MAAM,SAAS,oBAAoB,CAAC,CAAC;AACvD,QAAM,YAAY,MAAM,SAAS,oBAAoB,CAAC,CAAC;AACvD,MAAI,SAAS;AACb,MAAI,SAAS;AACb,MAAI,CAAC,QAAQ,MAAM,IAAI,KAAK,wBAAwB,MAAM,WAAW,MAAM,SAAS;AACpF,GAAC,QAAQ,MAAM,IAAI,UAAU,SAAS,aAAa,SAAS,YAAY;AACxE,MAAI,YAAY;AACd,UAAM,UAAU,KAAK,MAAM,YAAY,WAAW;AAClD,aAAS,SAAS,KAAK,IAAI,KAAK,IAAI,KAAK,MAAM,cAAc,CAAC,IAAI,MAAM,CAAC,IAAI,QAAQ,cAAc,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,IAAI,SAAS,IAAI,YAAY,IAAI,WAAW,GAAG,WAAW,YAAY,YAAY,WAAW;AAAA,EACvN,WAAU,cAAc;AACvB,aAAS,KAAK,IAAI,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,cAAc,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI;AAAA,EACjG,OAAW;AACL,aAAS,KAAK,IAAI,WAAW,KAAK,IAAI,GAAG,KAAK,IAAI,cAAc,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI;AAAA,EAC7F;AACD,QAAM,WAAW,MAAM,aAAa,MAAM;AAC1C,QAAM,YAAY,MAAM,cAAc,MAAM;AAC5C,wBAAsB,OAAO,GAAG,YAAY,UAAU,SAAS,CAAC;AAChE,QAAM,OAAO,YAAY,oBAAoB,CAAC;AAC9C,QAAM,OAAO,YAAY,oBAAoB,CAAC;AAC9C,OAAK,QAAQ;AACb,OAAK,SAAS;AACd,OAAK,IAAI;AACT,OAAK,IAAI;AACT,OAAK,QAAQ,cAAc,UAAU,eAAe,SAAS;AAC7D,OAAK,kBAAiB;AACvB;AAkGD;AAAA,0BAAqB,SAAC,OAAO;AAC3B,QAAM;AAAA,IACJ;AAAA,EACN,IAAQ,iBAAiB;AACrB,MAAI,MAAM,WAAW,CAAC,SAAS,MAAM,YAAY,MAAM,WAAW,OAAO;AACvE,SAAK,OAAO,eAAe,IAAI;AAAA,EACrC,OAAW;AACL,SAAK,OAAO,YAAY,IAAI;AAAA,EAC7B;AACF;AACD;AAAA,sBAAiB,SAAC,OAAO;AACvB,QAAM,aAAa,KAAK,WAAW,WAAW,IAAI;AAClD,OAAK,WAAW;AAChB,QAAM,KAAK,IAAI;AACf,QAAM,SAAS,KAAK,WAAW,eAAe,EAAE;AAChD,MAAI,YAAY;AACd,SAAK,IAAI,UAAU,IAAI,QAAQ;AAC/B,uBAAK,YAAa,MAAM;AACxB,uBAAK,YAAa,MAAM;AACxB,UAAM,sBAAsB,OAAK;AAC/B,YAAM;AAAA,QACJ,SAAS;AAAA,QACT,SAAS;AAAA,MACV,IAAG;AACJ,YAAM,CAAC,IAAI,EAAE,IAAI,KAAK,wBAAwB,IAAI,mBAAK,aAAY,IAAI,mBAAK,WAAU;AACtF,yBAAK,YAAa;AAClB,yBAAK,YAAa;AAClB,WAAK,WAAW,oBAAoB,IAAI,EAAE;AAAA,IAClD;AACM,WAAO,iBAAiB,eAAe,qBAAqB;AAAA,MAC1D,SAAS;AAAA,MACT,SAAS;AAAA,MACT;AAAA,IACR,CAAO;AAAA,EACF;AACD,QAAM,oBAAoB,MAAM;AAC9B,OAAG,MAAK;AACR,QAAI,YAAY;AACd,WAAK,IAAI,UAAU,OAAO,QAAQ;AAAA,IACnC;AACD,uBAAK,iBAAkB;AACvB,QAAI,CAAC,KAAK,WAAW,kBAAkB;AACrC,4BAAK,gDAAL,WAA2B;AAAA,IAC5B;AAAA,EACP;AACI,SAAO,iBAAiB,aAAa,mBAAmB;AAAA,IACtD;AAAA,EACN,CAAK;AACD,SAAO,iBAAiB,QAAQ,mBAAmB;AAAA,IACjD;AAAA,EACN,CAAK;AACF;AA2ED;AAAA,uBAAkB,WAAG;AACnB,MAAI,mBAAK,aAAY,CAAC,KAAK,KAAK;AAC9B;AAAA,EACD;AACD,qBAAK,UAAW,IAAI;AACpB,QAAM,SAAS,KAAK,WAAW,eAAe,mBAAK,SAAQ;AAC3D,OAAK,IAAI,iBAAiB,WAAW,KAAK,QAAQ,KAAK,IAAI,GAAG;AAAA,IAC5D;AAAA,EACN,CAAK;AACD,OAAK,IAAI,iBAAiB,YAAY,KAAK,SAAS,KAAK,IAAI,GAAG;AAAA,IAC9D;AAAA,EACN,CAAK;AACF;AAmID;AAAA,oBAAe,SAAC,OAAO;AACrB,oBAAiB,wBAAwB,KAAK,MAAM,KAAK;AAC1D;AACD;AAAA,iBAAY,SAAC,OAAO;;AAClB,MAAI,mBAAK,mCAAgCA,MAAA,MAAM,kBAAN,gBAAAA,IAAqB,gBAAe,mBAAK,eAAc;AAC9F,0BAAK,gCAAL;AAAA,EACD;AACF;AACD;AAAA,kBAAa,SAAC,MAAM;AAClB,qBAAK,qBAAsB,mBAAK,gCAA+B,OAAO;AACvE;AACD;AAAA,wBAAmB,SAAC,OAAO;AACzB,MAAI,CAAC,mBAAK,kBAAiB;AACzB;AAAA,EACD;AACD,aAAW,OAAO,mBAAK,kBAAiB;AACtC,QAAI,WAAW;AAAA,EAChB;AACF;AAUD;AAAA,kBAAa,WAAG;AACd,qBAAK,8BAA+B;AACpC,wBAAK,4CAAL,WAAyB;AACzB,MAAI,mBAAK,mBAAkB;AACzB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACR,IAAU,mBAAK;AACT,0BAAK,gDAAL,WAA2B,QAAQ,QAAQ,YAAY;AACvD,uBAAK,kBAAmB;AAAA,EACzB;AACF;AAjqBD,aA5VI,mBA4VG;AApUP,cAxBI,mBAwBG,gBAAe;AACtB,cAzBI,mBAyBG,gBAAe;AAGtB,cA5BI,mBA4BG,oBAAmB;AAC1B,cA7BI,mBA6BG,iBAAgB,IAAI;AAC3B,cA9BI,mBA8BG,WAAU;AACjB,cA/BI,mBA+BG,qBAAoB;AA/B7B,IAAM,mBAAN;AA+oCA,MAAM,mBAAmB,iBAAiB;AAAA,EACxC,YAAY,QAAQ;AAClB,UAAM,MAAM;AACZ,SAAK,sBAAsB,OAAO;AAClC,SAAK,UAAU;AAAA,EAChB;AAAA,EACD,YAAY;AACV,WAAO;AAAA,MACL,IAAI,KAAK;AAAA,MACT,SAAS;AAAA,MACT,WAAW,KAAK;AAAA,IACtB;AAAA,EACG;AACH;AAGA,MAAM,OAAO;AACb,MAAM,YAAY;AAClB,MAAM,WAAW;AACjB,MAAM,eAAe;AAAA,EACnB,YAAY,MAAM;AAChB,SAAK,KAAK,OAAO,OAAO,aAAa;AACrC,SAAK,KAAK,OAAO,OAAO,aAAa;AAAA,EACtC;AAAA,EACD,OAAO,OAAO;AACZ,QAAI,MAAM;AACV,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,IAAI,WAAW,MAAM,SAAS,CAAC;AACtC,eAAS;AACT,eAAS,IAAI,GAAG,KAAK,MAAM,QAAQ,IAAI,IAAI,KAAK;AAC9C,cAAM,OAAO,MAAM,WAAW,CAAC;AAC/B,YAAI,QAAQ,KAAM;AAChB,eAAK,QAAQ,IAAI;AAAA,QAC3B,OAAe;AACL,eAAK,QAAQ,IAAI,SAAS;AAC1B,eAAK,QAAQ,IAAI,OAAO;AAAA,QACzB;AAAA,MACF;AAAA,IACF,WAAU,YAAY,OAAO,KAAK,GAAG;AACpC,aAAO,MAAM;AACb,eAAS,KAAK;AAAA,IACpB,OAAW;AACL,YAAM,IAAI,MAAM,sDAAsD;AAAA,IACvE;AACD,UAAM,cAAc,UAAU;AAC9B,UAAM,aAAa,SAAS,cAAc;AAC1C,UAAM,aAAa,IAAI,YAAY,KAAK,QAAQ,GAAG,WAAW;AAC9D,QAAI,KAAK,GACP,KAAK;AACP,QAAI,KAAK,KAAK,IACZ,KAAK,KAAK;AACZ,UAAM,KAAK,YACT,KAAK;AACP,UAAM,SAAS,KAAK,UAClB,SAAS,KAAK;AAChB,aAAS,IAAI,GAAG,IAAI,aAAa,KAAK;AACpC,UAAI,IAAI,GAAG;AACT,aAAK,WAAW,CAAC;AACjB,aAAK,KAAK,KAAK,YAAY,KAAK,SAAS;AACzC,aAAK,MAAM,KAAK,OAAO;AACvB,aAAK,KAAK,KAAK,YAAY,KAAK,SAAS;AACzC,cAAM;AACN,aAAK,MAAM,KAAK,OAAO;AACvB,aAAK,KAAK,IAAI;AAAA,MACtB,OAAa;AACL,aAAK,WAAW,CAAC;AACjB,aAAK,KAAK,KAAK,YAAY,KAAK,SAAS;AACzC,aAAK,MAAM,KAAK,OAAO;AACvB,aAAK,KAAK,KAAK,YAAY,KAAK,SAAS;AACzC,cAAM;AACN,aAAK,MAAM,KAAK,OAAO;AACvB,aAAK,KAAK,IAAI;AAAA,MACf;AAAA,IACF;AACD,SAAK;AACL,YAAQ,YAAU;AAAA,MAChB,KAAK;AACH,cAAM,KAAK,cAAc,IAAI,CAAC,KAAK;AAAA,MACrC,KAAK;AACH,cAAM,KAAK,cAAc,IAAI,CAAC,KAAK;AAAA,MACrC,KAAK;AACH,cAAM,KAAK,cAAc,CAAC;AAC1B,aAAK,KAAK,KAAK,YAAY,KAAK,SAAS;AACzC,aAAK,MAAM,KAAK,OAAO;AACvB,aAAK,KAAK,KAAK,YAAY,KAAK,SAAS;AACzC,YAAI,cAAc,GAAG;AACnB,gBAAM;AAAA,QAChB,OAAe;AACL,gBAAM;AAAA,QACP;AAAA,IACJ;AACD,SAAK,KAAK;AACV,SAAK,KAAK;AAAA,EACX;AAAA,EACD,YAAY;AACV,QAAI,KAAK,KAAK,IACZ,KAAK,KAAK;AACZ,UAAM,OAAO;AACb,SAAK,KAAK,aAAa,YAAY,KAAK,QAAS;AACjD,SAAK,KAAK,aAAa,cAAc,MAAM,KAAK,OAAO,MAAM,aAAa,eAAe;AACzF,UAAM,OAAO;AACb,SAAK,KAAK,YAAa,YAAY,KAAK,QAAS;AACjD,SAAK,KAAK,aAAa,cAAc,MAAM,KAAK,OAAO,MAAM,aAAa,eAAe;AACzF,UAAM,OAAO;AACb,YAAQ,OAAO,GAAG,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,KAAK,OAAO,GAAG,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAAA,EAC1F;AACH;AAMA,MAAM,oBAAoB,OAAO,OAAO;AAAA,EACtC,KAAK;AAAA,EACL,MAAM;AAAA,EACN,UAAU;AACZ,CAAC;AACD,MAAM,kBAAkB;AAAA,EAItB,cAAc;AAgEd;AAnEA,kCAAY;AACZ,qCAAe;AACf,iCAAW,oBAAI;AAEb,SAAK,gBAAgB;AACrB,SAAK,kBAAkB;AACvB,SAAK,qBAAqB;AAAA,EAC3B;AAAA,EACD,SAAS,KAAK,cAAc;AAC1B,UAAM,QAAQ,mBAAK,UAAS,IAAI,GAAG;AACnC,QAAI,UAAU,QAAW;AACvB,aAAO;AAAA,IACR;AACD,WAAO,OAAO,OAAO,cAAc,KAAK;AAAA,EACzC;AAAA,EACD,YAAY,KAAK;AACf,WAAO,mBAAK,UAAS,IAAI,GAAG;AAAA,EAC7B;AAAA,EACD,OAAO,KAAK;AACV,uBAAK,UAAS,OAAO,GAAG;AACxB,QAAI,mBAAK,UAAS,SAAS,GAAG;AAC5B,WAAK,cAAa;AAAA,IACnB;AACD,QAAI,OAAO,KAAK,uBAAuB,YAAY;AACjD,iBAAW,SAAS,mBAAK,UAAS,OAAM,GAAI;AAC1C,YAAI,iBAAiB,kBAAkB;AACrC;AAAA,QACD;AAAA,MACF;AACD,WAAK,mBAAmB,IAAI;AAAA,IAC7B;AAAA,EACF;AAAA,EACD,SAAS,KAAK,OAAO;AACnB,UAAM,MAAM,mBAAK,UAAS,IAAI,GAAG;AACjC,QAAI,WAAW;AACf,QAAI,QAAQ,QAAW;AACrB,iBAAW,CAAC,OAAO,GAAG,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,YAAI,IAAI,KAAK,MAAM,KAAK;AACtB,qBAAW;AACX,cAAI,KAAK,IAAI;AAAA,QACd;AAAA,MACF;AAAA,IACP,OAAW;AACL,iBAAW;AACX,yBAAK,UAAS,IAAI,KAAK,KAAK;AAAA,IAC7B;AACD,QAAI,UAAU;AACZ,4BAAK,8BAAL;AAAA,IACD;AACD,QAAI,iBAAiB,oBAAoB,OAAO,KAAK,uBAAuB,YAAY;AACtF,WAAK,mBAAmB,MAAM,YAAY,KAAK;AAAA,IAChD;AAAA,EACF;AAAA,EACD,IAAI,KAAK;AACP,WAAO,mBAAK,UAAS,IAAI,GAAG;AAAA,EAC7B;AAAA,EACD,SAAS;AACP,WAAO,mBAAK,UAAS,OAAO,IAAI,cAAc,mBAAK,SAAQ,IAAI;AAAA,EAChE;AAAA,EACD,OAAO,KAAK;AACV,eAAW,CAAC,KAAK,GAAG,KAAK,OAAO,QAAQ,GAAG,GAAG;AAC5C,WAAK,SAAS,KAAK,GAAG;AAAA,IACvB;AAAA,EACF;AAAA,EACD,IAAI,OAAO;AACT,WAAO,mBAAK,UAAS;AAAA,EACtB;AAAA,EASD,gBAAgB;AACd,QAAI,mBAAK,YAAW;AAClB,yBAAK,WAAY;AACjB,UAAI,OAAO,KAAK,oBAAoB,YAAY;AAC9C,aAAK,gBAAe;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAAA,EACD,IAAI,QAAQ;AACV,WAAO,IAAI,uBAAuB,IAAI;AAAA,EACvC;AAAA,EACD,IAAI,eAAe;AACjB,QAAI,mBAAK,UAAS,SAAS,GAAG;AAC5B,aAAO;AAAA,IACR;AACD,UAAM,MAAM,oBAAI,IAAK,GACnB,OAAO,IAAI,eAAgB,GAC3B,WAAW;AACb,UAAM,UAAU,uBAAO,OAAO,IAAI;AAClC,QAAI,YAAY;AAChB,eAAW,CAAC,KAAK,GAAG,KAAK,mBAAK,WAAU;AACtC,YAAM,aAAa,eAAe,mBAAmB,IAAI,UAAU,OAAO,OAAO,IAAI;AACrF,UAAI,YAAY;AACd,YAAI,IAAI,KAAK,UAAU;AACvB,aAAK,OAAO,GAAG,GAAG,IAAI,KAAK,UAAU,UAAU,CAAC,EAAE;AAClD,kCAAc,CAAC,CAAC,WAAW;AAAA,MAC5B;AAAA,IACF;AACD,QAAI,WAAW;AACb,iBAAW,SAAS,IAAI,UAAU;AAChC,YAAI,MAAM,QAAQ;AAChB,mBAAS,KAAK,MAAM,MAAM;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AACD,WAAO,IAAI,OAAO,IAAI;AAAA,MACpB;AAAA,MACA,MAAM,KAAK,UAAW;AAAA,MACtB;AAAA,IACD,IAAG;AAAA,EACL;AAAA,EACD,IAAI,cAAc;AAChB,QAAI,QAAQ;AACZ,UAAM,eAAe,oBAAI;AACzB,eAAW,SAAS,mBAAK,UAAS,OAAM,GAAI;AAC1C,UAAI,EAAE,iBAAiB,mBAAmB;AACxC;AAAA,MACD;AACD,YAAM,cAAc,MAAM;AAC1B,UAAI,CAAC,aAAa;AAChB;AAAA,MACD;AACD,YAAM;AAAA,QACJ;AAAA,MACD,IAAG;AACJ,UAAI,CAAC,aAAa,IAAI,IAAI,GAAG;AAC3B,qBAAa,IAAI,MAAM,OAAO,eAAe,KAAK,EAAE,WAAW;AAAA,MAChE;AACD,wBAAU,uBAAO,OAAO,IAAI;AAC5B,YAAM,MAAM,8BAAgB,oBAAI,IAAG;AACnC,iBAAW,CAAC,KAAK,GAAG,KAAK,OAAO,QAAQ,WAAW,GAAG;AACpD,YAAI,QAAQ,QAAQ;AAClB;AAAA,QACD;AACD,YAAI,WAAW,IAAI,IAAI,GAAG;AAC1B,YAAI,CAAC,UAAU;AACb,qBAAW,oBAAI;AACf,cAAI,IAAI,KAAK,QAAQ;AAAA,QACtB;AACD,cAAM,QAAQ,SAAS,IAAI,GAAG,KAAK;AACnC,iBAAS,IAAI,KAAK,QAAQ,CAAC;AAAA,MAC5B;AAAA,IACF;AACD,eAAW,CAAC,MAAM,MAAM,KAAK,cAAc;AACzC,YAAM,IAAI,IAAI,OAAO,0BAA0B,MAAM,IAAI,CAAC;AAAA,IAC3D;AACD,WAAO;AAAA,EACR;AAAA,EACD,mBAAmB;AACjB,uBAAK,cAAe;AAAA,EACrB;AAAA,EACD,IAAI,cAAc;AAChB,QAAI,mBAAK,eAAc;AACrB,aAAO,mBAAK;AAAA,IACb;AACD,UAAM,MAAM;AACZ,eAAW,SAAS,mBAAK,UAAS,OAAM,GAAI;AAC1C,UAAI,EAAE,iBAAiB,qBAAqB,CAAC,MAAM,uBAAuB,CAAC,MAAM,aAAa;AAC5F;AAAA,MACD;AACD,UAAI,KAAK,MAAM,mBAAmB;AAAA,IACnC;AACD,WAAO,mBAAK,cAAe;AAAA,MACzB,KAAK,IAAI,IAAI,GAAG;AAAA,MAChB,MAAM,IAAI,KAAK,GAAG;AAAA,IACxB;AAAA,EACG;AACH;AA5KE;AACA;AACA;AAiEA;AAAA,iBAAY,WAAG;AACb,MAAI,CAAC,mBAAK,YAAW;AACnB,uBAAK,WAAY;AACjB,QAAI,OAAO,KAAK,kBAAkB,YAAY;AAC5C,WAAK,cAAa;AAAA,IACnB;AAAA,EACF;AACF;AAmGH,MAAM,+BAA+B,kBAAkB;AAAA,EAErD,YAAY,QAAQ;AAClB;AAFF;AAGE,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACN,IAAQ,OAAO;AACX,UAAM,QAAQ,gBAAgB,KAAK,WAAW;AAAA,MAC5C;AAAA,IACD,IAAG,IAAI;AACR,uBAAK,eAAgB;AAAA,MACnB,KAAK;AAAA,MACL;AAAA,MACA;AAAA,IACN;AAAA,EACG;AAAA,EACD,IAAI,QAAQ;AACV,gBAAY,8CAA8C;AAAA,EAC3D;AAAA,EACD,IAAI,eAAe;AACjB,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,IAAI,cAAc;AAChB,WAAO,OAAO,MAAM,eAAe;AAAA,MACjC,KAAK,oBAAI,IAAK;AAAA,MACd,MAAM;AAAA,IACZ,CAAK;AAAA,EACF;AACH;AA7BE;AAiCF,MAAM,WAAW;AAAA,EAEf,YAAY;AAAA,IACV,gBAAgB,WAAW;AAAA,IAC3B,eAAe;AAAA,EACnB,GAAK;AAJH,qCAAe,oBAAI;AAKjB,SAAK,YAAY;AACjB,SAAK,kBAAkB,oBAAI;AAC3B,SAAK,eAAe;AACpB,SAAK,kBAAkB;AACvB,SAAK,iBAAiB;AAAA,EACvB;AAAA,EACD,kBAAkB,gBAAgB;AAChC,SAAK,gBAAgB,IAAI,cAAc;AACvC,SAAK,UAAU,MAAM,IAAI,cAAc;AAAA,EACxC;AAAA,EACD,qBAAqB,gBAAgB;AACnC,SAAK,gBAAgB,OAAO,cAAc;AAC1C,SAAK,UAAU,MAAM,OAAO,cAAc;AAAA,EAC3C;AAAA,EACD,WAAW,MAAM;AACf,QAAI,CAAC,KAAK,cAAc;AACtB,WAAK,eAAe,KAAK,UAAU,cAAc,OAAO;AACxD,WAAK,UAAU,gBAAgB,qBAAqB,MAAM,EAAE,CAAC,EAAE,OAAO,KAAK,YAAY;AAAA,IACxF;AACD,UAAM,aAAa,KAAK,aAAa;AACrC,eAAW,WAAW,MAAM,WAAW,SAAS,MAAM;AAAA,EACvD;AAAA,EACD,QAAQ;AACN,eAAW,kBAAkB,KAAK,iBAAiB;AACjD,WAAK,UAAU,MAAM,OAAO,cAAc;AAAA,IAC3C;AACD,SAAK,gBAAgB;AACrB,uBAAK,cAAa;AAClB,QAAI,KAAK,cAAc;AACrB,WAAK,aAAa;AAClB,WAAK,eAAe;AAAA,IACrB;AAAA,EACF;AAAA,EACD,MAAM,eAAe;AAAA,IACnB,gBAAgBC;AAAA,IAChB;AAAA,EACJ,GAAK;AACD,QAAI,CAACA,SAAQ,mBAAK,cAAa,IAAIA,MAAK,UAAU,GAAG;AACnD;AAAA,IACD;AACD,WAAO,CAAC,KAAK,iBAAiB,mEAAmE;AACjG,QAAI,KAAK,2BAA2B;AAClC,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,MACD,IAAGA;AACJ,YAAM,WAAW,IAAI,SAAS,YAAY,KAAK,KAAK;AACpD,WAAK,kBAAkB,QAAQ;AAC/B,UAAI;AACF,cAAM,SAAS;AACf,2BAAK,cAAa,IAAI,UAAU;AAChC,qDAAeA;AAAA,MACvB,QAAc;AACN,aAAK,4BAA4BA,MAAK,YAAY,sDAAsD;AACxG,aAAK,qBAAqB,QAAQ;AAAA,MACnC;AACD;AAAA,IACD;AACD,gBAAY,+DAA+D;AAAA,EAC5E;AAAA,EACD,MAAM,KAAK,MAAM;AACf,QAAI,KAAK,YAAY,KAAK,eAAe,CAAC,KAAK,gBAAgB;AAC7D;AAAA,IACD;AACD,SAAK,WAAW;AAChB,QAAI,KAAK,gBAAgB;AACvB,YAAM,KAAK,eAAe,IAAI;AAC9B;AAAA,IACD;AACD,QAAI,KAAK,2BAA2B;AAClC,YAAM,iBAAiB,KAAK;AAC5B,UAAI,gBAAgB;AAClB,aAAK,kBAAkB,cAAc;AACrC,YAAI;AACF,gBAAM,eAAe;AAAA,QACtB,SAAQ,IAAI;AACX,eAAK,wBAAwB,eAAe,MAAM,OAAO,EAAE,IAAI;AAC/D,eAAK,kBAAkB;AACvB,gBAAM;AAAA,QACP;AAAA,MACF;AACD;AAAA,IACD;AACD,UAAM,OAAO,KAAK;AAClB,QAAI,MAAM;AACR,WAAK,WAAW,IAAI;AACpB,UAAI,KAAK,4BAA4B;AACnC;AAAA,MACD;AACD,YAAM,IAAI,QAAQ,aAAW;AAC3B,cAAM,UAAU,KAAK,sBAAsB,OAAO;AAClD,aAAK,sBAAsB,MAAM,OAAO;AAAA,MAChD,CAAO;AAAA,IACF;AAAA,EACF;AAAA,EACD,IAAI,4BAA4B;;AAC9B,UAAM,WAAW,CAAC,GAACD,MAAA,KAAK,cAAL,gBAAAA,IAAgB;AACnC,WAAO,OAAO,MAAM,6BAA6B,QAAQ;AAAA,EAC1D;AAAA,EACD,IAAI,6BAA6B;AAC/B,QAAI,YAAY;AAChB,QAAI,UAAU;AACZ,kBAAY;AAAA,IACb,WAAU,OAAO,cAAc,eAAe,QAAO,uCAAW,eAAc,YAAY,iCAAiC,KAAK,UAAU,SAAS,GAAG;AACrJ,kBAAY;AAAA,IACb;AACD,WAAO,OAAO,MAAM,8BAA8B,SAAS;AAAA,EAC5D;AAAA,EACD,sBAAsB,UAAU;AAC9B,aAAS,kBAAkB;AACzB,aAAO,CAAC,QAAQ,MAAM,2CAA2C;AACjE,cAAQ,OAAO;AACf,aAAO,gBAAgB,SAAS,KAAK,gBAAgB,CAAC,EAAE,MAAM;AAC5D,cAAM,eAAe,gBAAgB;AACrC,mBAAW,aAAa,UAAU,CAAC;AAAA,MACpC;AAAA,IACF;AACD,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,UAAM,UAAU;AAAA,MACd,MAAM;AAAA,MACN,UAAU;AAAA,MACV;AAAA,IACN;AACI,oBAAgB,KAAK,OAAO;AAC5B,WAAO;AAAA,EACR;AAAA,EACD,IAAI,gBAAgB;AAClB,UAAM,WAAW,KAAK,09CAAmkD;AACzlD,WAAO,OAAO,MAAM,iBAAiB,QAAQ;AAAA,EAC9C;AAAA,EACD,sBAAsB,MAAM,SAAS;AACnC,aAAS,MAAMe,OAAM,QAAQ;AAC3B,aAAOA,MAAK,WAAW,MAAM,KAAK,KAAKA,MAAK,WAAW,SAAS,CAAC,KAAK,KAAKA,MAAK,WAAW,SAAS,CAAC,KAAK,IAAIA,MAAK,WAAW,SAAS,CAAC,IAAI;AAAA,IAC7I;AACD,aAAS,aAAa,GAAG,QAAQ,QAAQ,QAAQ;AAC/C,YAAM,SAAS,EAAE,UAAU,GAAG,MAAM;AACpC,YAAM,SAAS,EAAE,UAAU,SAAS,MAAM;AAC1C,aAAO,SAAS,SAAS;AAAA,IAC1B;AACD,QAAI,GAAG;AACP,UAAM,SAAS,KAAK,UAAU,cAAc,QAAQ;AACpD,WAAO,QAAQ;AACf,WAAO,SAAS;AAChB,UAAM,MAAM,OAAO,WAAW,IAAI;AAClC,QAAI,SAAS;AACb,aAAS,YAAY,MAAM,UAAU;AACnC,UAAI,EAAE,SAAS,IAAI;AACjB,aAAK,8BAA8B;AACnC;AACA;AAAA,MACD;AACD,UAAI,OAAO,UAAU;AACrB,UAAI,SAAS,KAAK,GAAG,EAAE;AACvB,YAAM,YAAY,IAAI,aAAa,GAAG,GAAG,GAAG,CAAC;AAC7C,UAAI,UAAU,KAAK,CAAC,IAAI,GAAG;AACzB;AACA;AAAA,MACD;AACD,iBAAW,YAAY,KAAK,MAAM,MAAM,QAAQ,CAAC;AAAA,IAClD;AACD,UAAM,iBAAiB,KAAK,KAAK,IAAK,IAAG,KAAK,gBAAgB;AAC9D,QAAI,OAAO,KAAK;AAChB,UAAM,iBAAiB;AACvB,WAAO,aAAa,MAAM,gBAAgB,eAAe,QAAQ,cAAc;AAC/E,UAAM,sBAAsB;AAC5B,UAAM,aAAa;AACnB,QAAI,WAAW,MAAM,MAAM,mBAAmB;AAC9C,SAAK,IAAI,GAAG,KAAK,eAAe,SAAS,GAAG,IAAI,IAAI,KAAK,GAAG;AAC1D,iBAAW,WAAW,aAAa,MAAM,gBAAgB,CAAC,IAAI;AAAA,IAC/D;AACD,QAAI,IAAI,eAAe,QAAQ;AAC7B,iBAAW,WAAW,aAAa,MAAM,iBAAiB,OAAO,CAAC,IAAI;AAAA,IACvE;AACD,WAAO,aAAa,MAAM,qBAAqB,GAAG,SAAS,QAAQ,CAAC;AACpE,UAAM,MAAM,iCAAiC,KAAK,IAAI,CAAC;AACvD,UAAM,OAAO,4BAA4B,cAAc,SAAS,GAAG;AACnE,SAAK,WAAW,IAAI;AACpB,UAAM,MAAM,KAAK,UAAU,cAAc,KAAK;AAC9C,QAAI,MAAM,aAAa;AACvB,QAAI,MAAM,QAAQ,IAAI,MAAM,SAAS;AACrC,QAAI,MAAM,WAAW;AACrB,QAAI,MAAM,MAAM,IAAI,MAAM,OAAO;AACjC,eAAW,QAAQ,CAAC,KAAK,YAAY,cAAc,GAAG;AACpD,YAAM,OAAO,KAAK,UAAU,cAAc,MAAM;AAChD,WAAK,cAAc;AACnB,WAAK,MAAM,aAAa;AACxB,UAAI,OAAO,IAAI;AAAA,IAChB;AACD,SAAK,UAAU,KAAK,OAAO,GAAG;AAC9B,gBAAY,gBAAgB,MAAM;AAChC,UAAI,OAAM;AACV,cAAQ,SAAQ;AAAA,IACtB,CAAK;AAAA,EACF;AACH;AA1ME;AA2MF,MAAM,eAAe;AAAA,EACnB,YAAY,gBAAgB;AAAA,IAC1B,kBAAkB;AAAA,IAClB,cAAc;AAAA,EAClB,GAAK;AACD,SAAK,iBAAiB,uBAAO,OAAO,IAAI;AACxC,eAAW,KAAK,gBAAgB;AAC9B,WAAK,CAAC,IAAI,eAAe,CAAC;AAAA,IAC3B;AACD,SAAK,kBAAkB,oBAAoB;AAC3C,SAAK,eAAe;AAAA,EACrB;AAAA,EACD,uBAAuB;;AACrB,QAAI,CAAC,KAAK,QAAQ,KAAK,iBAAiB;AACtC,aAAO;AAAA,IACR;AACD,QAAI;AACJ,QAAI,CAAC,KAAK,aAAa;AACrB,uBAAiB,IAAI,SAAS,KAAK,YAAY,KAAK,MAAM,EAAE;AAAA,IAClE,OAAW;AACL,YAAM,MAAM;AAAA,QACV,QAAQ,KAAK,YAAY;AAAA,MACjC;AACM,UAAI,KAAK,YAAY,aAAa;AAChC,YAAI,QAAQ,WAAW,KAAK,YAAY,WAAW;AAAA,MACpD;AACD,uBAAiB,IAAI,SAAS,KAAK,YAAY,YAAY,KAAK,MAAM,GAAG;AAAA,IAC1E;AACD,KAAAf,MAAA,KAAK,iBAAL,gBAAAA,IAAA,WAAoB;AACpB,WAAO;AAAA,EACR;AAAA,EACD,qBAAqB;;AACnB,QAAI,CAAC,KAAK,QAAQ,KAAK,iBAAiB;AACtC,aAAO;AAAA,IACR;AACD,UAAM,OAAO,cAAc,KAAK,IAAI;AACpC,UAAM,MAAM,YAAY,KAAK,QAAQ,WAAW,KAAK,IAAI,CAAC;AAC1D,QAAI;AACJ,QAAI,CAAC,KAAK,aAAa;AACrB,aAAO,4BAA4B,KAAK,UAAU,SAAS,GAAG;AAAA,IACpE,OAAW;AACL,UAAI,MAAM,gBAAgB,KAAK,YAAY,UAAU;AACrD,UAAI,KAAK,YAAY,aAAa;AAChC,eAAO,uBAAuB,KAAK,YAAY,WAAW;AAAA,MAC3D;AACD,aAAO,4BAA4B,KAAK,YAAY,UAAU,KAAK,GAAG,OAAO,GAAG;AAAA,IACjF;AACD,KAAAA,MAAA,KAAK,iBAAL,gBAAAA,IAAA,WAAoB,MAAM;AAC1B,WAAO;AAAA,EACR;AAAA,EACD,iBAAiB,MAAM,WAAW;AAChC,QAAI,KAAK,eAAe,SAAS,MAAM,QAAW;AAChD,aAAO,KAAK,eAAe,SAAS;AAAA,IACrC;AACD,QAAI;AACJ,QAAI;AACF,aAAO,KAAK,IAAI,KAAK,aAAa,WAAW,SAAS;AAAA,IACvD,SAAQ,IAAI;AACX,WAAK,2CAA2C,EAAE,IAAI;AAAA,IACvD;AACD,QAAI,CAAC,MAAM,QAAQ,IAAI,KAAK,KAAK,WAAW,GAAG;AAC7C,aAAO,KAAK,eAAe,SAAS,IAAI,SAAU,GAAG,MAAM;AAAA;IAC5D;AACD,UAAM,WAAW;AACjB,aAAS,IAAI,GAAG,KAAK,KAAK,QAAQ,IAAI,MAAK;AACzC,cAAQ,KAAK,GAAG,GAAC;AAAA,QACf,KAAK,cAAc;AACjB;AACE,kBAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC;AAC9C,qBAAS,KAAK,SAAO,IAAI,cAAc,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACxD,iBAAK;AAAA,UACN;AACD;AAAA,QACF,KAAK,cAAc;AACjB;AACE,kBAAM,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC;AAClC,qBAAS,KAAK,SAAO,IAAI,OAAO,GAAG,CAAC,CAAC;AACrC,iBAAK;AAAA,UACN;AACD;AAAA,QACF,KAAK,cAAc;AACjB;AACE,kBAAM,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC;AAClC,qBAAS,KAAK,SAAO,IAAI,OAAO,GAAG,CAAC,CAAC;AACrC,iBAAK;AAAA,UACN;AACD;AAAA,QACF,KAAK,cAAc;AACjB;AACE,kBAAM,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC;AACxC,qBAAS,KAAK,SAAO,IAAI,iBAAiB,GAAG,GAAG,GAAG,CAAC,CAAC;AACrD,iBAAK;AAAA,UACN;AACD;AAAA,QACF,KAAK,cAAc;AACjB,mBAAS,KAAK,SAAO,IAAI,QAAS;AAClC;AAAA,QACF,KAAK,cAAc;AACjB,mBAAS,KAAK,SAAO,IAAI,KAAM;AAC/B;AAAA,QACF,KAAK,cAAc;AACjB,iBAAO,SAAS,WAAW,GAAG,oDAAoD;AAClF;AAAA,QACF,KAAK,cAAc;AACjB;AACE,kBAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC;AAC9C,qBAAS,KAAK,SAAO,IAAI,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACpD,iBAAK;AAAA,UACN;AACD;AAAA,QACF,KAAK,cAAc;AACjB;AACE,kBAAM,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC;AAClC,qBAAS,KAAK,SAAO,IAAI,UAAU,GAAG,CAAC,CAAC;AACxC,iBAAK;AAAA,UACN;AACD;AAAA,MACH;AAAA,IACF;AACD,WAAO,KAAK,eAAe,SAAS,IAAI,SAAS,YAAY,KAAK,MAAM;AACtE,eAAS,CAAC,EAAE,GAAG;AACf,eAAS,CAAC,EAAE,GAAG;AACf,UAAI,MAAM,MAAM,CAAC,IAAI;AACrB,eAAS,IAAI,GAAG,KAAK,SAAS,QAAQ,IAAI,IAAI,KAAK;AACjD,iBAAS,CAAC,EAAE,GAAG;AAAA,MAChB;AAAA,IACP;AAAA,EACG;AACH;AAKA,IAAI,UAAU;AACZ,MAAI,oBAAoB,QAAQ;AAChC,MAAI,aAAa;AACjB,QAAM,eAAe,YAAY;AAC/B,UAAM,KAAK,MAAK,oBAAC;AAAA;AAAA,MAA+B;AAAA,IAAI,yCAClD,OAAO,MAAK,oBAAC;AAAA;AAAA,MAA+B;AAAA,IAAM,yCAClD,QAAQ,MAAK,oBAAC;AAAA;AAAA,MAA+B;AAAA,IAAO,yCACpD,MAAM,MAAK,oBAAC;AAAA;AAAA,MAA+B;AAAA,IAAK;AAClD,QAAI,QAAQ;AACZ,WAAO,IAAI,IAAI,OAAO,QAAQ;AAAA,MAC5B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,EAAC;AAAA,EACN;AACE,eAAc,EAAC,KAAK,SAAO;AACzB,iBAAa;AACb,sBAAkB,QAAO;AAAA,EAC1B,GAAE,YAAU;AACX,SAAK,iBAAiB,MAAM,EAAE;AAC9B,iBAAa,oBAAI;AACjB,sBAAkB,QAAO;AAAA,EAC7B,CAAG;AACH;AACA,MAAM,aAAa;AAAA,EACjB,WAAW,UAAU;AACnB,WAAO,kBAAkB;AAAA,EAC1B;AAAA,EACD,OAAO,IAAI,MAAM;AACf,WAAO,yCAAY,IAAI;AAAA,EACxB;AACH;AACA,MAAM,uBAAuB,SAAU,KAAK;AAC1C,QAAM,KAAK,aAAa,IAAI,IAAI;AAChC,SAAO,GAAG,SAAS,SAAS,GAAG,EAAE,KAAK,UAAQ,IAAI,WAAW,IAAI,CAAC;AACpE;AACA,MAAM,0BAA0B,kBAAkB;AAAE;AACpD,MAAM,0BAA0B,kBAAkB;AAAA,EAChD,cAAc,OAAO,QAAQ;AAC3B,UAAM,SAAS,aAAa,IAAI,QAAQ;AACxC,WAAO,OAAO,aAAa,OAAO,MAAM;AAAA,EACzC;AACH;AACA,MAAM,8BAA8B,sBAAsB;AAAA,EACxD,WAAW,KAAK,iBAAiB;AAC/B,WAAO,qBAAqB,GAAG,EAAE,KAAK,WAAS;AAAA,MAC7C,UAAU;AAAA,MACV;AAAA,IACD,EAAC;AAAA,EACH;AACH;AACA,MAAM,oCAAoC,4BAA4B;AAAA,EACpE,WAAW,KAAK;AACd,WAAO,qBAAqB,GAAG;AAAA,EAChC;AACH;AAKA,MAAM,WAAW;AAAA,EACf,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AACX;AACA,SAAS,iBAAiB,KAAK,MAAM;AACnC,MAAI,CAAC,MAAM;AACT;AAAA,EACD;AACD,QAAM,QAAQ,KAAK,CAAC,IAAI,KAAK,CAAC;AAC9B,QAAM,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC;AAC/B,QAAM,SAAS,IAAI;AACnB,SAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,MAAM;AAC3C,MAAI,KAAK,MAAM;AACjB;AACA,MAAM,mBAAmB;AAAA,EACvB,aAAa;AACX,gBAAY,sCAAsC;AAAA,EACnD;AACH;AACA,MAAM,kCAAkC,mBAAmB;AAAA,EACzD,YAAY,IAAI;AACd;AACA,SAAK,QAAQ,GAAG,CAAC;AACjB,SAAK,QAAQ,GAAG,CAAC;AACjB,SAAK,cAAc,GAAG,CAAC;AACvB,SAAK,MAAM,GAAG,CAAC;AACf,SAAK,MAAM,GAAG,CAAC;AACf,SAAK,MAAM,GAAG,CAAC;AACf,SAAK,MAAM,GAAG,CAAC;AACf,SAAK,SAAS;AAAA,EACf;AAAA,EACD,gBAAgB,KAAK;AACnB,QAAI;AACJ,QAAI,KAAK,UAAU,SAAS;AAC1B,aAAO,IAAI,qBAAqB,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;AAAA,IACxF,WAAe,KAAK,UAAU,UAAU;AAClC,aAAO,IAAI,qBAAqB,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,KAAK,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG;AAAA,IACvG;AACD,eAAW,aAAa,KAAK,aAAa;AACxC,WAAK,aAAa,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC;AAAA,IAC7C;AACD,WAAO;AAAA,EACR;AAAA,EACD,WAAW,KAAK,OAAO,SAAS,UAAU;AACxC,QAAI;AACJ,QAAI,aAAa,SAAS,UAAU,aAAa,SAAS,MAAM;AAC9D,YAAM,YAAY,MAAM,QAAQ,0BAA0B,UAAU,oBAAoB,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;AAC5G,YAAM,QAAQ,KAAK,KAAK,UAAU,CAAC,IAAI,UAAU,CAAC,CAAC,KAAK;AACxD,YAAM,SAAS,KAAK,KAAK,UAAU,CAAC,IAAI,UAAU,CAAC,CAAC,KAAK;AACzD,YAAM,YAAY,MAAM,eAAe,UAAU,WAAW,OAAO,QAAQ,IAAI;AAC/E,YAAM,SAAS,UAAU;AACzB,aAAO,UAAU,GAAG,GAAG,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM;AAChE,aAAO,UAAS;AAChB,aAAO,KAAK,GAAG,GAAG,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM;AAC3D,aAAO,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC7C,gBAAU,KAAK,UAAU,SAAS,CAAC,GAAG,GAAG,GAAG,GAAG,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;AAC1E,aAAO,UAAU,GAAG,MAAM,aAAa;AACvC,UAAI,KAAK,QAAQ;AACf,eAAO,UAAU,GAAG,KAAK,MAAM;AAAA,MAChC;AACD,uBAAiB,QAAQ,KAAK,KAAK;AACnC,aAAO,YAAY,KAAK,gBAAgB,MAAM;AAC9C,aAAO,KAAI;AACX,gBAAU,IAAI,cAAc,UAAU,QAAQ,WAAW;AACzD,YAAM,YAAY,IAAI,UAAU,OAAO;AACvC,cAAQ,aAAa,SAAS;AAAA,IACpC,OAAW;AACL,uBAAiB,KAAK,KAAK,KAAK;AAChC,gBAAU,KAAK,gBAAgB,GAAG;AAAA,IACnC;AACD,WAAO;AAAA,EACR;AACH;AACA,SAAS,aAAa,MAAM,SAAS,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAC3D,QAAM,SAAS,QAAQ,QACrB,SAAS,QAAQ;AACnB,QAAM,QAAQ,KAAK,MACjB,UAAU,KAAK,QAAQ;AACzB,MAAI;AACJ,MAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,GAAG;AACnC,UAAM;AACN,SAAK;AACL,SAAK;AACL,UAAM;AACN,SAAK;AACL,SAAK;AAAA,EACN;AACD,MAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,GAAG;AACnC,UAAM;AACN,SAAK;AACL,SAAK;AACL,UAAM;AACN,SAAK;AACL,SAAK;AAAA,EACN;AACD,MAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,GAAG;AACnC,UAAM;AACN,SAAK;AACL,SAAK;AACL,UAAM;AACN,SAAK;AACL,SAAK;AAAA,EACN;AACD,QAAM,MAAM,OAAO,EAAE,IAAI,QAAQ,WAAW,QAAQ;AACpD,QAAM,MAAM,OAAO,KAAK,CAAC,IAAI,QAAQ,WAAW,QAAQ;AACxD,QAAM,MAAM,OAAO,EAAE,IAAI,QAAQ,WAAW,QAAQ;AACpD,QAAM,MAAM,OAAO,KAAK,CAAC,IAAI,QAAQ,WAAW,QAAQ;AACxD,QAAM,MAAM,OAAO,EAAE,IAAI,QAAQ,WAAW,QAAQ;AACpD,QAAM,MAAM,OAAO,KAAK,CAAC,IAAI,QAAQ,WAAW,QAAQ;AACxD,MAAI,MAAM,IAAI;AACZ;AAAA,EACD;AACD,QAAM,MAAM,OAAO,EAAE,GACnB,MAAM,OAAO,KAAK,CAAC,GACnB,MAAM,OAAO,KAAK,CAAC;AACrB,QAAM,MAAM,OAAO,EAAE,GACnB,MAAM,OAAO,KAAK,CAAC,GACnB,MAAM,OAAO,KAAK,CAAC;AACrB,QAAM,MAAM,OAAO,EAAE,GACnB,MAAM,OAAO,KAAK,CAAC,GACnB,MAAM,OAAO,KAAK,CAAC;AACrB,QAAM,OAAO,KAAK,MAAM,EAAE,GACxB,OAAO,KAAK,MAAM,EAAE;AACtB,MAAI,IAAI,KAAK,KAAK;AAClB,MAAI,IAAI,KAAK,KAAK;AAClB,WAAS,IAAI,MAAM,KAAK,MAAM,KAAK;AACjC,QAAI,IAAI,IAAI;AACV,YAAMgB,KAAI,IAAI,KAAK,KAAK,KAAK,MAAM,KAAK;AACxC,WAAK,MAAM,KAAK,MAAMA;AACtB,YAAM,OAAO,MAAM,OAAOA;AAC1B,YAAM,OAAO,MAAM,OAAOA;AAC1B,YAAM,OAAO,MAAM,OAAOA;AAAA,IAChC,OAAW;AACL,UAAIA;AACJ,UAAI,IAAI,IAAI;AACV,QAAAA,KAAI;AAAA,MACZ,WAAiB,OAAO,IAAI;AACpB,QAAAA,KAAI;AAAA,MACZ,OAAa;AACL,QAAAA,MAAK,KAAK,MAAM,KAAK;AAAA,MACtB;AACD,WAAK,MAAM,KAAK,MAAMA;AACtB,YAAM,OAAO,MAAM,OAAOA;AAC1B,YAAM,OAAO,MAAM,OAAOA;AAC1B,YAAM,OAAO,MAAM,OAAOA;AAAA,IAC3B;AACD,QAAI;AACJ,QAAI,IAAI,IAAI;AACV,UAAI;AAAA,IACV,WAAe,IAAI,IAAI;AACjB,UAAI;AAAA,IACV,OAAW;AACL,WAAK,KAAK,MAAM,KAAK;AAAA,IACtB;AACD,SAAK,MAAM,KAAK,MAAM;AACtB,UAAM,OAAO,MAAM,OAAO;AAC1B,UAAM,OAAO,MAAM,OAAO;AAC1B,UAAM,OAAO,MAAM,OAAO;AAC1B,UAAM,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;AACvC,UAAM,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;AACvC,QAAI,IAAI,UAAU,IAAI,MAAM;AAC5B,aAAS,IAAI,KAAK,KAAK,KAAK,KAAK;AAC/B,WAAK,KAAK,MAAM,KAAK;AACrB,UAAI,IAAI,GAAG;AACT,YAAI;AAAA,MACZ,WAAiB,IAAI,GAAG;AAChB,YAAI;AAAA,MACL;AACD,YAAM,GAAG,IAAI,OAAO,MAAM,OAAO,IAAI;AACrC,YAAM,GAAG,IAAI,OAAO,MAAM,OAAO,IAAI;AACrC,YAAM,GAAG,IAAI,OAAO,MAAM,OAAO,IAAI;AACrC,YAAM,GAAG,IAAI;AAAA,IACd;AAAA,EACF;AACH;AACA,SAAS,WAAW,MAAM,QAAQ,SAAS;AACzC,QAAM,KAAK,OAAO;AAClB,QAAM,KAAK,OAAO;AAClB,MAAI,GAAG;AACP,UAAQ,OAAO,MAAI;AAAA,IACjB,KAAK;AACH,YAAM,iBAAiB,OAAO;AAC9B,YAAM,OAAO,KAAK,MAAM,GAAG,SAAS,cAAc,IAAI;AACtD,YAAM,OAAO,iBAAiB;AAC9B,WAAK,IAAI,GAAG,IAAI,MAAM,KAAK;AACzB,YAAI,IAAI,IAAI;AACZ,iBAAS,IAAI,GAAG,IAAI,MAAM,KAAK,KAAK;AAClC,uBAAa,MAAM,SAAS,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,cAAc,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,cAAc,CAAC;AAC9G,uBAAa,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,cAAc,GAAG,GAAG,IAAI,iBAAiB,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,cAAc,CAAC;AAAA,QACzJ;AAAA,MACF;AACD;AAAA,IACF,KAAK;AACH,WAAK,IAAI,GAAG,KAAK,GAAG,QAAQ,IAAI,IAAI,KAAK,GAAG;AAC1C,qBAAa,MAAM,SAAS,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;AAAA,MACrF;AACD;AAAA,IACF;AACE,YAAM,IAAI,MAAM,gBAAgB;AAAA,EACnC;AACH;AACA,MAAM,2BAA2B,mBAAmB;AAAA,EAClD,YAAY,IAAI;AACd;AACA,SAAK,UAAU,GAAG,CAAC;AACnB,SAAK,UAAU,GAAG,CAAC;AACnB,SAAK,WAAW,GAAG,CAAC;AACpB,SAAK,UAAU,GAAG,CAAC;AACnB,SAAK,QAAQ,GAAG,CAAC;AACjB,SAAK,cAAc,GAAG,CAAC;AACvB,SAAK,SAAS;AAAA,EACf;AAAA,EACD,kBAAkB,eAAe,iBAAiB,gBAAgB;AAChE,UAAM,iBAAiB;AACvB,UAAM,mBAAmB;AACzB,UAAM,cAAc;AACpB,UAAM,UAAU,KAAK,MAAM,KAAK,QAAQ,CAAC,CAAC;AAC1C,UAAM,UAAU,KAAK,MAAM,KAAK,QAAQ,CAAC,CAAC;AAC1C,UAAM,cAAc,KAAK,KAAK,KAAK,QAAQ,CAAC,CAAC,IAAI;AACjD,UAAM,eAAe,KAAK,KAAK,KAAK,QAAQ,CAAC,CAAC,IAAI;AAClD,UAAM,QAAQ,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI,cAAc,cAAc,CAAC,IAAI,cAAc,CAAC,GAAG,gBAAgB;AAC7G,UAAM,SAAS,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI,eAAe,cAAc,CAAC,IAAI,cAAc,CAAC,GAAG,gBAAgB;AAC/G,UAAM,SAAS,cAAc;AAC7B,UAAM,SAAS,eAAe;AAC9B,UAAM,UAAU;AAAA,MACd,QAAQ,KAAK;AAAA,MACb,QAAQ,KAAK;AAAA,MACb,SAAS,CAAC;AAAA,MACV,SAAS,CAAC;AAAA,MACV,QAAQ,IAAI;AAAA,MACZ,QAAQ,IAAI;AAAA,IAClB;AACI,UAAM,cAAc,QAAQ,cAAc;AAC1C,UAAM,eAAe,SAAS,cAAc;AAC5C,UAAM,YAAY,eAAe,UAAU,QAAQ,aAAa,cAAc,KAAK;AACnF,UAAM,SAAS,UAAU;AACzB,UAAM,OAAO,OAAO,gBAAgB,OAAO,MAAM;AACjD,QAAI,iBAAiB;AACnB,YAAM,QAAQ,KAAK;AACnB,eAAS,IAAI,GAAG,KAAK,MAAM,QAAQ,IAAI,IAAI,KAAK,GAAG;AACjD,cAAM,CAAC,IAAI,gBAAgB,CAAC;AAC5B,cAAM,IAAI,CAAC,IAAI,gBAAgB,CAAC;AAChC,cAAM,IAAI,CAAC,IAAI,gBAAgB,CAAC;AAChC,cAAM,IAAI,CAAC,IAAI;AAAA,MAChB;AAAA,IACF;AACD,eAAW,UAAU,KAAK,UAAU;AAClC,iBAAW,MAAM,QAAQ,OAAO;AAAA,IACjC;AACD,WAAO,aAAa,MAAM,aAAa,WAAW;AAClD,UAAM,SAAS,UAAU;AACzB,WAAO;AAAA,MACL;AAAA,MACA,SAAS,UAAU,cAAc;AAAA,MACjC,SAAS,UAAU,cAAc;AAAA,MACjC;AAAA,MACA;AAAA,IACN;AAAA,EACG;AAAA,EACD,WAAW,KAAK,OAAO,SAAS,UAAU;AACxC,qBAAiB,KAAK,KAAK,KAAK;AAChC,QAAI;AACJ,QAAI,aAAa,SAAS,SAAS;AACjC,cAAQ,KAAK,8BAA8B,oBAAoB,GAAG,CAAC;AAAA,IACzE,OAAW;AACL,cAAQ,KAAK,8BAA8B,MAAM,aAAa;AAC9D,UAAI,KAAK,QAAQ;AACf,cAAM,cAAc,KAAK,8BAA8B,KAAK,MAAM;AAClE,gBAAQ,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,GAAG,MAAM,CAAC,IAAI,YAAY,CAAC,CAAC;AAAA,MAC9D;AAAA,IACF;AACD,UAAM,yBAAyB,KAAK,kBAAkB,OAAO,aAAa,SAAS,UAAU,OAAO,KAAK,aAAa,MAAM,cAAc;AAC1I,QAAI,aAAa,SAAS,SAAS;AACjC,UAAI,aAAa,GAAG,MAAM,aAAa;AACvC,UAAI,KAAK,QAAQ;AACf,YAAI,UAAU,GAAG,KAAK,MAAM;AAAA,MAC7B;AAAA,IACF;AACD,QAAI,UAAU,uBAAuB,SAAS,uBAAuB,OAAO;AAC5E,QAAI,MAAM,uBAAuB,QAAQ,uBAAuB,MAAM;AACtE,WAAO,IAAI,cAAc,uBAAuB,QAAQ,WAAW;AAAA,EACpE;AACH;AACA,MAAM,4BAA4B,mBAAmB;AAAA,EACnD,aAAa;AACX,WAAO;AAAA,EACR;AACH;AACA,SAAS,kBAAkB,IAAI;AAC7B,UAAQ,GAAG,CAAC,GAAC;AAAA,IACX,KAAK;AACH,aAAO,IAAI,0BAA0B,EAAE;AAAA,IACzC,KAAK;AACH,aAAO,IAAI,mBAAmB,EAAE;AAAA,IAClC,KAAK;AACH,aAAO,IAAI,oBAAmB;AAAA,EACjC;AACD,QAAM,IAAI,MAAM,oBAAoB,GAAG,CAAC,CAAC,EAAE;AAC7C;AACA,MAAM,YAAY;AAAA,EAChB,SAAS;AAAA,EACT,WAAW;AACb;AACA,MAAM,iBAAN,MAAM,eAAc;AAAA,EAElB,YAAY,IAAI,OAAO,KAAK,uBAAuB,eAAe;AAChE,SAAK,eAAe,GAAG,CAAC;AACxB,SAAK,SAAS,GAAG,CAAC;AAClB,SAAK,OAAO,GAAG,CAAC;AAChB,SAAK,QAAQ,GAAG,CAAC;AACjB,SAAK,QAAQ,GAAG,CAAC;AACjB,SAAK,YAAY,GAAG,CAAC;AACrB,SAAK,aAAa,GAAG,CAAC;AACtB,SAAK,QAAQ;AACb,SAAK,MAAM;AACX,SAAK,wBAAwB;AAC7B,SAAK,gBAAgB;AAAA,EACtB;AAAA,EACD,oBAAoB,OAAO;AACzB,UAAM,eAAe,KAAK;AAC1B,UAAM,OAAO,KAAK;AAClB,UAAM,QAAQ,KAAK;AACnB,UAAM,QAAQ,KAAK;AACnB,UAAM,YAAY,KAAK;AACvB,UAAM,aAAa,KAAK;AACxB,UAAM,QAAQ,KAAK;AACnB,UAAM,wBAAwB,KAAK;AACnC,SAAK,iBAAiB,UAAU;AAChC,UAAM,KAAK,KAAK,CAAC,GACf,KAAK,KAAK,CAAC,GACX,KAAK,KAAK,CAAC,GACX,KAAK,KAAK,CAAC;AACb,UAAM,cAAc,KAAK,8BAA8B,KAAK,MAAM;AAClE,UAAM,iBAAiB,KAAK,8BAA8B,KAAK,aAAa;AAC5E,UAAM,gBAAgB,CAAC,YAAY,CAAC,IAAI,eAAe,CAAC,GAAG,YAAY,CAAC,IAAI,eAAe,CAAC,CAAC;AAC7F,UAAM,OAAO,KAAK,gBAAgB,OAAO,KAAK,IAAI,OAAO,OAAO,cAAc,CAAC,CAAC;AAChF,UAAM,OAAO,KAAK,gBAAgB,OAAO,KAAK,IAAI,OAAO,QAAQ,cAAc,CAAC,CAAC;AACjF,UAAM,YAAY,MAAM,eAAe,UAAU,WAAW,KAAK,MAAM,KAAK,MAAM,IAAI;AACtF,UAAM,SAAS,UAAU;AACzB,UAAM,WAAW,sBAAsB,qBAAqB,MAAM;AAClE,aAAS,aAAa,MAAM;AAC5B,SAAK,+BAA+B,UAAU,WAAW,KAAK;AAC9D,QAAI,aAAa;AACjB,QAAI,aAAa;AACjB,QAAI,aAAa;AACjB,QAAI,aAAa;AACjB,QAAI,KAAK,GAAG;AACV,mBAAa;AACb,oBAAc,KAAK,IAAI,EAAE;AAAA,IAC1B;AACD,QAAI,KAAK,GAAG;AACV,mBAAa;AACb,oBAAc,KAAK,IAAI,EAAE;AAAA,IAC1B;AACD,WAAO,UAAU,EAAE,KAAK,QAAQ,aAAa,EAAE,KAAK,QAAQ,WAAW;AACvE,aAAS,UAAU,KAAK,OAAO,GAAG,GAAG,KAAK,OAAO,GAAG,CAAC;AACrD,WAAO,KAAI;AACX,SAAK,SAAS,UAAU,YAAY,YAAY,YAAY,UAAU;AACtE,aAAS,gBAAgB,oBAAoB,SAAS,GAAG;AACzD,aAAS,oBAAoB,YAAY;AACzC,aAAS,WAAU;AACnB,WAAO;AAAA,MACL,QAAQ,UAAU;AAAA,MAClB,QAAQ,KAAK;AAAA,MACb,QAAQ,KAAK;AAAA,MACb,SAAS;AAAA,MACT,SAAS;AAAA,IACf;AAAA,EACG;AAAA,EACD,gBAAgB,MAAM,gBAAgB,OAAO;AAC3C,WAAO,KAAK,IAAI,IAAI;AACpB,UAAM,UAAU,KAAK,IAAI,eAAc,kBAAkB,cAAc;AACvE,QAAI,OAAO,KAAK,KAAK,OAAO,KAAK;AACjC,QAAI,QAAQ,SAAS;AACnB,aAAO;AAAA,IACb,OAAW;AACL,cAAQ,OAAO;AAAA,IAChB;AACD,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACN;AAAA,EACG;AAAA,EACD,SAAS,UAAU,IAAI,IAAI,IAAI,IAAI;AACjC,UAAM,YAAY,KAAK;AACvB,UAAM,aAAa,KAAK;AACxB,aAAS,IAAI,KAAK,IAAI,IAAI,WAAW,UAAU;AAC/C,aAAS,QAAQ,iBAAiB,oBAAoB,SAAS,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;AACrF,aAAS,KAAI;AACb,aAAS,QAAO;AAAA,EACjB;AAAA,EACD,+BAA+B,UAAU,WAAW,OAAO;AACzD,UAAM,UAAU,SAAS,KACvB,UAAU,SAAS;AACrB,YAAQ,WAAS;AAAA,MACf,KAAK,UAAU;AACb,cAAM,MAAM,KAAK;AACjB,gBAAQ,YAAY,IAAI;AACxB,gBAAQ,cAAc,IAAI;AAC1B,gBAAQ,YAAY,IAAI;AACxB,gBAAQ,cAAc,IAAI;AAC1B;AAAA,MACF,KAAK,UAAU;AACb,cAAM,WAAW,KAAK,aAAa,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAC/D,gBAAQ,YAAY;AACpB,gBAAQ,cAAc;AACtB,gBAAQ,YAAY;AACpB,gBAAQ,cAAc;AACtB;AAAA,MACF;AACE,cAAM,IAAI,YAAY,2BAA2B,SAAS,EAAE;AAAA,IAC/D;AAAA,EACF;AAAA,EACD,WAAW,KAAK,OAAO,SAAS,UAAU;AACxC,QAAI,SAAS;AACb,QAAI,aAAa,SAAS,SAAS;AACjC,eAAS,KAAK,UAAU,QAAQ,MAAM,aAAa;AACnD,UAAI,KAAK,QAAQ;AACf,iBAAS,KAAK,UAAU,QAAQ,KAAK,MAAM;AAAA,MAC5C;AAAA,IACF;AACD,UAAM,yBAAyB,KAAK,oBAAoB,KAAK;AAC7D,QAAI,YAAY,IAAI,UAAU,MAAM;AACpC,gBAAY,UAAU,UAAU,uBAAuB,SAAS,uBAAuB,OAAO;AAC9F,gBAAY,UAAU,MAAM,IAAI,uBAAuB,QAAQ,IAAI,uBAAuB,MAAM;AAChG,UAAM,UAAU,IAAI,cAAc,uBAAuB,QAAQ,QAAQ;AACzE,YAAQ,aAAa,SAAS;AAC9B,WAAO;AAAA,EACR;AACH;AA7HE,cADI,gBACG,oBAAmB;AAD5B,IAAM,gBAAN;AA2IA,SAAS,2BAA2B;AAAA,EAClC;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB,gBAAgB;AAClB,GAAG;AACD,QAAM,QAAQ,iBAAiB,iBAAiB,aAAa;AAC7D,QAAM,CAAC,aAAa,UAAU,IAAI,gBAAgB,CAAC,eAAe,KAAK,IAAI,CAAC,OAAO,aAAa;AAChG,QAAM,gBAAgB,SAAS;AAC/B,QAAM,iBAAiB,QAAQ;AAC/B,QAAM,YAAY,IAAI;AACtB,SAAO,IAAI,YAAY,KAAK,MAAM;AAClC,MAAI,UAAU;AACd,WAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,eAAW,MAAM,SAAS,eAAe,SAAS,KAAK,UAAU;AAC/D,YAAMC,QAAO,SAAS,YAAY,IAAI,MAAM,IAAI;AAChD,WAAK,SAAS,IAAIA,QAAO,MAAa,aAAa;AACnD,WAAK,SAAS,IAAIA,QAAO,KAAY,aAAa;AAClD,WAAK,SAAS,IAAIA,QAAO,KAAW,aAAa;AACjD,WAAK,SAAS,IAAIA,QAAO,KAAU,aAAa;AAChD,WAAK,SAAS,IAAIA,QAAO,IAAS,aAAa;AAC/C,WAAK,SAAS,IAAIA,QAAO,IAAQ,aAAa;AAC9C,WAAK,SAAS,IAAIA,QAAO,IAAO,aAAa;AAC7C,WAAK,SAAS,IAAIA,QAAO,IAAM,aAAa;AAAA,IAC7C;AACD,QAAI,mBAAmB,GAAG;AACxB;AAAA,IACD;AACD,UAAM,OAAO,SAAS,YAAY,IAAI,QAAQ,IAAI;AAClD,aAAS,IAAI,GAAG,IAAI,gBAAgB,KAAK;AACvC,WAAK,SAAS,IAAI,OAAO,KAAK,IAAI,IAAI,aAAa;AAAA,IACpD;AAAA,EACF;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACJ;AACA;AA6DA,MAAM,gBAAgB;AACtB,MAAM,gBAAgB;AACtB,MAAM,iBAAiB;AACvB,MAAM,kBAAkB;AACxB,MAAM,sBAAsB;AAC5B,MAAM,oBAAoB;AAC1B,SAAS,wBAAwB,KAAK,SAAS;AAC7C,MAAI,IAAI,kBAAkB;AACxB,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC5D;AACD,MAAI,iBAAiB,IAAI;AACzB,MAAI,oBAAoB,IAAI;AAC5B,MAAI,mBAAmB,IAAI;AAC3B,MAAI,kBAAkB,IAAI;AAC1B,MAAI,sBAAsB,IAAI;AAC9B,MAAI,sBAAsB,IAAI;AAC9B,MAAI,yBAAyB,IAAI;AACjC,MAAI,2BAA2B,IAAI;AACnC,MAAI,iBAAiB,IAAI;AACzB,MAAI,mBAAmB,IAAI;AAC3B,MAAI,mBAAmB,IAAI;AAC3B,MAAI,0BAA0B,IAAI;AAClC,MAAI,iBAAiB,IAAI;AACzB,MAAI,sBAAsB,IAAI;AAC9B,MAAI,sBAAsB,IAAI;AAC9B,MAAI,mBAAmB,MAAM;AAC3B,QAAI,OAAO,IAAI;AACf,QAAI,UAAU,IAAI;AAClB,QAAI,SAAS,IAAI;AACjB,QAAI,QAAQ,IAAI;AAChB,QAAI,YAAY,IAAI;AACpB,QAAI,YAAY,IAAI;AACpB,QAAI,eAAe,IAAI;AACvB,QAAI,iBAAiB,IAAI;AACzB,QAAI,OAAO,IAAI;AACf,QAAI,SAAS,IAAI;AACjB,QAAI,SAAS,IAAI;AACjB,QAAI,gBAAgB,IAAI;AACxB,QAAI,OAAO,IAAI;AACf,QAAI,YAAY,IAAI;AACpB,QAAI,YAAY,IAAI;AACpB,WAAO,IAAI;AAAA,EACf;AACE,MAAI,OAAO,SAAS,UAAU;AAC5B,YAAQ,KAAI;AACZ,SAAK,eAAc;AAAA,EACvB;AACE,MAAI,UAAU,SAAS,aAAa;AAClC,YAAQ,QAAO;AACf,SAAK,kBAAiB;AAAA,EAC1B;AACE,MAAI,YAAY,SAAS,aAAa,GAAG,GAAG;AAC1C,YAAQ,UAAU,GAAG,CAAC;AACtB,SAAK,oBAAoB,GAAG,CAAC;AAAA,EACjC;AACE,MAAI,QAAQ,SAAS,SAAS,GAAG,GAAG;AAClC,YAAQ,MAAM,GAAG,CAAC;AAClB,SAAK,gBAAgB,GAAG,CAAC;AAAA,EAC7B;AACE,MAAI,YAAY,SAAS,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AACtD,YAAQ,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAClC,SAAK,oBAAoB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,EAC7C;AACE,MAAI,eAAe,SAAS,gBAAgB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAC5D,YAAQ,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACrC,SAAK,uBAAuB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,EAChD;AACE,MAAI,iBAAiB,SAAS,oBAAoB;AAChD,YAAQ,eAAc;AACtB,SAAK,yBAAwB;AAAA,EACjC;AACE,MAAI,SAAS,SAAS,UAAU,OAAO;AACrC,YAAQ,OAAO,KAAK;AACpB,SAAK,iBAAiB,KAAK;AAAA,EAC/B;AACE,MAAI,OAAO,SAAS,UAAU,MAAM;AAClC,YAAQ,KAAK,IAAI;AACjB,SAAK,eAAe,IAAI;AAAA,EAC5B;AACE,MAAI,SAAS,SAAU,GAAG,GAAG;AAC3B,YAAQ,OAAO,GAAG,CAAC;AACnB,SAAK,iBAAiB,GAAG,CAAC;AAAA,EAC9B;AACE,MAAI,SAAS,SAAU,GAAG,GAAG;AAC3B,YAAQ,OAAO,GAAG,CAAC;AACnB,SAAK,iBAAiB,GAAG,CAAC;AAAA,EAC9B;AACE,MAAI,gBAAgB,SAAU,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG;AAC1D,YAAQ,cAAc,MAAM,MAAM,MAAM,MAAM,GAAG,CAAC;AAClD,SAAK,wBAAwB,MAAM,MAAM,MAAM,MAAM,GAAG,CAAC;AAAA,EAC7D;AACE,MAAI,OAAO,SAAU,GAAG,GAAG,OAAO,QAAQ;AACxC,YAAQ,KAAK,GAAG,GAAG,OAAO,MAAM;AAChC,SAAK,eAAe,GAAG,GAAG,OAAO,MAAM;AAAA,EAC3C;AACE,MAAI,YAAY,WAAY;AAC1B,YAAQ,UAAS;AACjB,SAAK,oBAAmB;AAAA,EAC5B;AACE,MAAI,YAAY,WAAY;AAC1B,YAAQ,UAAS;AACjB,SAAK,oBAAmB;AAAA,EAC5B;AACA;AACA,MAAM,eAAe;AAAA,EACnB,YAAY,eAAe;AACzB,SAAK,gBAAgB;AACrB,SAAK,QAAQ,uBAAO,OAAO,IAAI;AAAA,EAChC;AAAA,EACD,UAAU,IAAI,OAAO,QAAQ;AAC3B,QAAI;AACJ,QAAI,KAAK,MAAM,EAAE,MAAM,QAAW;AAChC,oBAAc,KAAK,MAAM,EAAE;AAC3B,WAAK,cAAc,MAAM,aAAa,OAAO,MAAM;AAAA,IACzD,OAAW;AACL,oBAAc,KAAK,cAAc,OAAO,OAAO,MAAM;AACrD,WAAK,MAAM,EAAE,IAAI;AAAA,IAClB;AACD,WAAO;AAAA,EACR;AAAA,EACD,OAAO,IAAI;AACT,WAAO,KAAK,MAAM,EAAE;AAAA,EACrB;AAAA,EACD,QAAQ;AACN,eAAW,MAAM,KAAK,OAAO;AAC3B,YAAM,cAAc,KAAK,MAAM,EAAE;AACjC,WAAK,cAAc,QAAQ,WAAW;AACtC,aAAO,KAAK,MAAM,EAAE;AAAA,IACrB;AAAA,EACF;AACH;AACA,SAAS,yBAAyB,KAAK,QAAQ,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO;AACjG,QAAM,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,IAAI,oBAAoB,GAAG;AACpD,MAAI,MAAM,KAAK,MAAM,GAAG;AACtB,UAAM,MAAM,QAAQ,IAAI;AACxB,UAAM,OAAO,KAAK,MAAM,GAAG;AAC3B,UAAM,MAAM,QAAQ,IAAI;AACxB,UAAM,OAAO,KAAK,MAAM,GAAG;AAC3B,UAAM,OAAO,QAAQ,SAAS,IAAI;AAClC,UAAM,SAAS,KAAK,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,KAAK;AACnD,UAAM,OAAO,QAAQ,SAAS,IAAI;AAClC,UAAM,UAAU,KAAK,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,KAAK;AACpD,QAAI,aAAa,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,KAAK,KAAK,CAAC,GAAG,MAAM,IAAI;AAC7D,QAAI,UAAU,QAAQ,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG,QAAQ,OAAO;AACnE,QAAI,aAAa,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE;AACnC,WAAO,CAAC,QAAQ,OAAO;AAAA,EACxB;AACD,MAAI,MAAM,KAAK,MAAM,GAAG;AACtB,UAAM,MAAM,QAAQ,IAAI;AACxB,UAAM,OAAO,KAAK,MAAM,GAAG;AAC3B,UAAM,MAAM,QAAQ,IAAI;AACxB,UAAM,OAAO,KAAK,MAAM,GAAG;AAC3B,UAAM,OAAO,QAAQ,SAAS,IAAI;AAClC,UAAM,SAAS,KAAK,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,KAAK;AACnD,UAAM,OAAO,QAAQ,SAAS,IAAI;AAClC,UAAM,UAAU,KAAK,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,KAAK;AACpD,QAAI,aAAa,GAAG,KAAK,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,MAAM,IAAI;AAC7D,QAAI,UAAU,QAAQ,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG,SAAS,MAAM;AACnE,QAAI,aAAa,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE;AACnC,WAAO,CAAC,SAAS,MAAM;AAAA,EACxB;AACD,MAAI,UAAU,QAAQ,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,OAAO,KAAK;AACxE,QAAM,SAAS,KAAK,MAAM,GAAG,CAAC;AAC9B,QAAM,SAAS,KAAK,MAAM,GAAG,CAAC;AAC9B,SAAO,CAAC,SAAS,OAAO,SAAS,KAAK;AACxC;AACA,SAAS,kBAAkB,SAAS;AAClC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACD,IAAG;AACJ,MAAI,QAAQ,uBAAuB,SAAS,qBAAqB;AAC/D,WAAO;AAAA,EACR;AACD,QAAM,yBAAyB;AAC/B,QAAM,cAAc,IAAI,WAAW,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACpF,QAAM,SAAS,QAAQ;AACvB,MAAI,SAAS,IAAI,WAAW,UAAU,SAAS,EAAE;AACjD,MAAI,GAAG,GAAG;AACV,QAAM,WAAW,QAAQ,IAAI,CAAC;AAC9B,MAAI,OAAO,IAAI,WAAW,WAAW,MAAM,GACzC,MAAM;AACR,aAAW,QAAQ,QAAQ,MAAM;AAC/B,QAAI,OAAO;AACX,WAAO,OAAO,GAAG;AACf,WAAK,KAAK,IAAI,OAAO,OAAO,IAAI;AAChC,eAAS;AAAA,IACV;AAAA,EACF;AACD,MAAI,QAAQ;AACZ,QAAM;AACN,MAAI,KAAK,GAAG,MAAM,GAAG;AACnB,WAAO,CAAC,IAAI;AACZ,MAAE;AAAA,EACH;AACD,OAAK,IAAI,GAAG,IAAI,OAAO,KAAK;AAC1B,QAAI,KAAK,GAAG,MAAM,KAAK,MAAM,CAAC,GAAG;AAC/B,aAAO,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI;AAC5B,QAAE;AAAA,IACH;AACD;AAAA,EACD;AACD,MAAI,KAAK,GAAG,MAAM,GAAG;AACnB,WAAO,CAAC,IAAI;AACZ,MAAE;AAAA,EACH;AACD,OAAK,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC3B,UAAM,IAAI;AACV,SAAK,IAAI;AACT,QAAI,KAAK,MAAM,QAAQ,MAAM,KAAK,GAAG,GAAG;AACtC,aAAO,EAAE,IAAI,KAAK,GAAG,IAAI,IAAI;AAC7B,QAAE;AAAA,IACH;AACD,QAAI,OAAO,KAAK,GAAG,IAAI,IAAI,MAAM,KAAK,MAAM,QAAQ,IAAI,IAAI;AAC5D,SAAK,IAAI,GAAG,IAAI,OAAO,KAAK;AAC1B,aAAO,OAAO,MAAM,KAAK,MAAM,CAAC,IAAI,IAAI,MAAM,KAAK,MAAM,WAAW,CAAC,IAAI,IAAI;AAC7E,UAAI,YAAY,GAAG,GAAG;AACpB,eAAO,KAAK,CAAC,IAAI,YAAY,GAAG;AAChC,UAAE;AAAA,MACH;AACD;AAAA,IACD;AACD,QAAI,KAAK,MAAM,QAAQ,MAAM,KAAK,GAAG,GAAG;AACtC,aAAO,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI;AACjC,QAAE;AAAA,IACH;AACD,QAAI,QAAQ,wBAAwB;AAClC,aAAO;AAAA,IACR;AAAA,EACF;AACD,QAAM,YAAY,SAAS;AAC3B,OAAK,IAAI;AACT,MAAI,KAAK,GAAG,MAAM,GAAG;AACnB,WAAO,EAAE,IAAI;AACb,MAAE;AAAA,EACH;AACD,OAAK,IAAI,GAAG,IAAI,OAAO,KAAK;AAC1B,QAAI,KAAK,GAAG,MAAM,KAAK,MAAM,CAAC,GAAG;AAC/B,aAAO,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI;AACjC,QAAE;AAAA,IACH;AACD;AAAA,EACD;AACD,MAAI,KAAK,GAAG,MAAM,GAAG;AACnB,WAAO,KAAK,CAAC,IAAI;AACjB,MAAE;AAAA,EACH;AACD,MAAI,QAAQ,wBAAwB;AAClC,WAAO;AAAA,EACR;AACD,QAAM,QAAQ,IAAI,WAAW,CAAC,GAAG,QAAQ,IAAI,GAAG,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;AACpE,QAAM,OAAO,IAAI;AACjB,OAAK,IAAI,GAAG,SAAS,KAAK,QAAQ,KAAK;AACrC,QAAI,IAAI,IAAI;AACZ,UAAM,MAAM,IAAI;AAChB,WAAO,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG;AAC5B;AAAA,IACD;AACD,QAAI,MAAM,KAAK;AACb;AAAA,IACD;AACD,SAAK,OAAO,IAAI,QAAQ,CAAC;AACzB,UAAM,KAAK;AACX,QAAI,OAAO,OAAO,CAAC;AACnB,OAAG;AACD,YAAM,OAAO,MAAM,IAAI;AACvB,SAAG;AACD,aAAK;AAAA,MACb,SAAe,CAAC,OAAO,CAAC;AAClB,YAAM,KAAK,OAAO,CAAC;AACnB,UAAI,OAAO,KAAK,OAAO,IAAI;AACzB,eAAO;AACP,eAAO,CAAC,IAAI;AAAA,MACpB,OAAa;AACL,eAAO,KAAK,KAAO,QAAQ;AAC3B,eAAO,CAAC,KAAK,QAAQ,IAAI,QAAQ;AAAA,MAClC;AACD,WAAK,OAAO,IAAI,QAAQ,IAAI,SAAS,CAAC;AACtC,UAAI,CAAC,OAAO,CAAC,GAAG;AACd,UAAE;AAAA,MACH;AAAA,IACP,SAAa,OAAO;AAChB,MAAE;AAAA,EACH;AACD,SAAO;AACP,WAAS;AACT,QAAM,cAAc,SAAU,GAAG;AAC/B,MAAE,KAAI;AACN,MAAE,MAAM,IAAI,OAAO,KAAK,MAAM;AAC9B,MAAE,UAAU,GAAG,CAAC,MAAM;AACtB,MAAE,KAAK,IAAI;AACX,MAAE,UAAS;AACX,MAAE,QAAO;AAAA,EACb;AACE,SAAO;AACT;AACA,MAAM,iBAAiB;AAAA,EACrB,YAAY,OAAO,QAAQ;AACzB,SAAK,eAAe;AACpB,SAAK,WAAW;AAChB,SAAK,gBAAgB;AACrB,SAAK,aAAa;AAClB,SAAK,kBAAkB;AACvB,SAAK,aAAa;AAClB,SAAK,UAAU;AACf,SAAK,IAAI;AACT,SAAK,IAAI;AACT,SAAK,QAAQ;AACb,SAAK,QAAQ;AACb,SAAK,cAAc;AACnB,SAAK,cAAc;AACnB,SAAK,aAAa;AAClB,SAAK,oBAAoB,kBAAkB;AAC3C,SAAK,WAAW;AAChB,SAAK,YAAY;AACjB,SAAK,cAAc;AACnB,SAAK,cAAc;AACnB,SAAK,YAAY;AACjB,SAAK,cAAc;AACnB,SAAK,YAAY;AACjB,SAAK,cAAc;AACnB,SAAK,eAAe;AACpB,SAAK,uBAAuB,CAAC,GAAG,GAAG,OAAO,MAAM,CAAC;AAAA,EAClD;AAAA,EACD,QAAQ;AACN,UAAM,QAAQ,OAAO,OAAO,IAAI;AAChC,UAAM,UAAU,KAAK,QAAQ,MAAK;AAClC,WAAO;AAAA,EACR;AAAA,EACD,gBAAgB,GAAG,GAAG;AACpB,SAAK,IAAI;AACT,SAAK,IAAI;AAAA,EACV;AAAA,EACD,iBAAiB,WAAW,GAAG,GAAG;AAChC,KAAC,GAAG,CAAC,IAAI,KAAK,eAAe,CAAC,GAAG,CAAC,GAAG,SAAS;AAC9C,SAAK,OAAO,KAAK,IAAI,KAAK,MAAM,CAAC;AACjC,SAAK,OAAO,KAAK,IAAI,KAAK,MAAM,CAAC;AACjC,SAAK,OAAO,KAAK,IAAI,KAAK,MAAM,CAAC;AACjC,SAAK,OAAO,KAAK,IAAI,KAAK,MAAM,CAAC;AAAA,EAClC;AAAA,EACD,iBAAiB,WAAW,MAAM;AAChC,UAAM,KAAK,KAAK,eAAe,MAAM,SAAS;AAC9C,UAAM,KAAK,KAAK,eAAe,KAAK,MAAM,CAAC,GAAG,SAAS;AACvD,UAAM,KAAK,KAAK,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,SAAS;AAC5D,UAAM,KAAK,KAAK,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,SAAS;AAC5D,SAAK,OAAO,KAAK,IAAI,KAAK,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAC1D,SAAK,OAAO,KAAK,IAAI,KAAK,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAC1D,SAAK,OAAO,KAAK,IAAI,KAAK,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAC1D,SAAK,OAAO,KAAK,IAAI,KAAK,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,EAC3D;AAAA,EACD,wBAAwB,WAAW,QAAQ;AACzC,SAAK,YAAY,WAAW,MAAM;AAClC,SAAK,OAAO,KAAK,IAAI,KAAK,MAAM,OAAO,CAAC,CAAC;AACzC,SAAK,OAAO,KAAK,IAAI,KAAK,MAAM,OAAO,CAAC,CAAC;AACzC,SAAK,OAAO,KAAK,IAAI,KAAK,MAAM,OAAO,CAAC,CAAC;AACzC,SAAK,OAAO,KAAK,IAAI,KAAK,MAAM,OAAO,CAAC,CAAC;AAAA,EAC1C;AAAA,EACD,sBAAsB,WAAW,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,QAAQ;AACvE,UAAM,MAAM,KAAK,kBAAkB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM;AACzE,QAAI,QAAQ;AACV;AAAA,IACD;AACD,SAAK,iBAAiB,WAAW,GAAG;AAAA,EACrC;AAAA,EACD,mBAAmB,WAAW,SAAS,MAAM,YAAY,MAAM;AAC7D,UAAM,MAAM,CAAC,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,IAAI;AACvD,QAAI,aAAa,SAAS,QAAQ;AAChC,UAAI,CAAC,WAAW;AACd,oBAAY,6CAA6C;AAAA,MAC1D;AACD,YAAM,QAAQ,KAAK,8BAA8B,SAAS;AAC1D,YAAM,aAAa,MAAM,CAAC,IAAI,KAAK,YAAY;AAC/C,YAAM,aAAa,MAAM,CAAC,IAAI,KAAK,YAAY;AAC/C,UAAI,CAAC,KAAK;AACV,UAAI,CAAC,KAAK;AACV,UAAI,CAAC,KAAK;AACV,UAAI,CAAC,KAAK;AAAA,IACX;AACD,WAAO;AAAA,EACR;AAAA,EACD,qBAAqB;AACnB,UAAM,YAAY,KAAK,UAAU,KAAK,SAAS,KAAK,mBAAkB,CAAE;AACxE,SAAK,uBAAuB,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AAAA,EACtD;AAAA,EACD,cAAc;AACZ,WAAO,KAAK,SAAS;AAAA,EACtB;AAAA,EACD,uBAAuB,KAAK;AAC1B,SAAK,UAAU;AACf,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,OAAO;AAAA,EACb;AAAA,EACD,0BAA0B,WAAW,SAAS,MAAM,YAAY,MAAM;AACpE,WAAO,KAAK,UAAU,KAAK,SAAS,KAAK,mBAAmB,UAAU,SAAS,CAAC;AAAA,EACjF;AACH;AACA,SAAS,mBAAmB,KAAK,SAAS;AACxC,MAAI,OAAO,cAAc,eAAe,mBAAmB,WAAW;AACpE,QAAI,aAAa,SAAS,GAAG,CAAC;AAC9B;AAAA,EACD;AACD,QAAM,SAAS,QAAQ,QACrB,QAAQ,QAAQ;AAClB,QAAM,qBAAqB,SAAS;AACpC,QAAM,cAAc,SAAS,sBAAsB;AACnD,QAAM,cAAc,uBAAuB,IAAI,aAAa,aAAa;AACzE,QAAM,eAAe,IAAI,gBAAgB,OAAO,iBAAiB;AACjE,MAAI,SAAS,GACX;AACF,QAAM,MAAM,QAAQ;AACpB,QAAM,OAAO,aAAa;AAC1B,MAAI,GAAG,GAAG,iBAAiB;AAC3B,MAAI,QAAQ,SAAS,eAAe,gBAAgB;AAClD,UAAM,YAAY,IAAI;AACtB,UAAM,SAAS,IAAI,YAAY,KAAK,QAAQ,GAAG,KAAK,cAAc,CAAC;AACnE,UAAM,mBAAmB,OAAO;AAChC,UAAM,cAAc,QAAQ,KAAK;AACjC,UAAM,QAAQ;AACd,UAAM,QAAQ,iBAAiB,iBAAiB,aAAa;AAC7D,SAAK,IAAI,GAAG,IAAI,aAAa,KAAK;AAChC,wBAAkB,IAAI,aAAa,oBAAoB;AACvD,gBAAU;AACV,WAAK,IAAI,GAAG,IAAI,iBAAiB,KAAK;AACpC,cAAM,UAAU,YAAY;AAC5B,YAAI,IAAI;AACR,cAAM,OAAO,UAAU,cAAc,QAAQ,UAAU,IAAI;AAC3D,cAAM,eAAe,OAAO,CAAC;AAC7B,YAAI,OAAO;AACX,YAAI,UAAU;AACd,eAAO,IAAI,cAAc,KAAK,GAAG;AAC/B,oBAAU,IAAI,QAAQ;AACtB,iBAAO,SAAS,IAAI,UAAU,MAAM,QAAQ;AAC5C,iBAAO,SAAS,IAAI,UAAU,KAAK,QAAQ;AAC3C,iBAAO,SAAS,IAAI,UAAU,KAAK,QAAQ;AAC3C,iBAAO,SAAS,IAAI,UAAU,KAAK,QAAQ;AAC3C,iBAAO,SAAS,IAAI,UAAU,IAAI,QAAQ;AAC1C,iBAAO,SAAS,IAAI,UAAU,IAAI,QAAQ;AAC1C,iBAAO,SAAS,IAAI,UAAU,IAAI,QAAQ;AAC1C,iBAAO,SAAS,IAAI,UAAU,IAAI,QAAQ;AAAA,QAC3C;AACD,eAAO,IAAI,MAAM,KAAK;AACpB,cAAI,SAAS,GAAG;AACd,sBAAU,IAAI,QAAQ;AACtB,mBAAO;AAAA,UACR;AACD,iBAAO,SAAS,IAAI,UAAU,OAAO,QAAQ;AAC7C,mBAAS;AAAA,QACV;AAAA,MACF;AACD,aAAO,UAAU,kBAAkB;AACjC,eAAO,SAAS,IAAI;AAAA,MACrB;AACD,UAAI,aAAa,cAAc,GAAG,IAAI,iBAAiB;AAAA,IACxD;AAAA,EACF,WAAU,QAAQ,SAAS,eAAe,YAAY;AACrD,QAAI;AACJ,uBAAmB,QAAQ,oBAAoB;AAC/C,SAAK,IAAI,GAAG,IAAI,YAAY,KAAK;AAC/B,WAAK,IAAI,IAAI,SAAS,QAAQ,SAAS,gBAAgB,CAAC;AACxD,gBAAU;AACV,UAAI,aAAa,cAAc,GAAG,CAAC;AACnC,WAAK;AAAA,IACN;AACD,QAAI,IAAI,aAAa;AACnB,yBAAmB,QAAQ,qBAAqB;AAChD,WAAK,IAAI,IAAI,SAAS,QAAQ,SAAS,gBAAgB,CAAC;AACxD,UAAI,aAAa,cAAc,GAAG,CAAC;AAAA,IACpC;AAAA,EACF,WAAU,QAAQ,SAAS,eAAe,WAAW;AACpD,sBAAkB;AAClB,uBAAmB,QAAQ;AAC3B,SAAK,IAAI,GAAG,IAAI,aAAa,KAAK;AAChC,UAAI,KAAK,YAAY;AACnB,0BAAkB;AAClB,2BAAmB,QAAQ;AAAA,MAC5B;AACD,gBAAU;AACV,WAAK,IAAI,kBAAkB,OAAM;AAC/B,aAAK,SAAS,IAAI,IAAI,QAAQ;AAC9B,aAAK,SAAS,IAAI,IAAI,QAAQ;AAC9B,aAAK,SAAS,IAAI,IAAI,QAAQ;AAC9B,aAAK,SAAS,IAAI;AAAA,MACnB;AACD,UAAI,aAAa,cAAc,GAAG,IAAI,iBAAiB;AAAA,IACxD;AAAA,EACL,OAAS;AACL,UAAM,IAAI,MAAM,mBAAmB,QAAQ,IAAI,EAAE;AAAA,EAClD;AACH;AACA,SAAS,mBAAmB,KAAK,SAAS;AACxC,MAAI,QAAQ,QAAQ;AAClB,QAAI,UAAU,QAAQ,QAAQ,GAAG,CAAC;AAClC;AAAA,EACD;AACD,QAAM,SAAS,QAAQ,QACrB,QAAQ,QAAQ;AAClB,QAAM,qBAAqB,SAAS;AACpC,QAAM,cAAc,SAAS,sBAAsB;AACnD,QAAM,cAAc,uBAAuB,IAAI,aAAa,aAAa;AACzE,QAAM,eAAe,IAAI,gBAAgB,OAAO,iBAAiB;AACjE,MAAI,SAAS;AACb,QAAM,MAAM,QAAQ;AACpB,QAAM,OAAO,aAAa;AAC1B,WAAS,IAAI,GAAG,IAAI,aAAa,KAAK;AACpC,UAAM,kBAAkB,IAAI,aAAa,oBAAoB;AAC7D,KAAC;AAAA,MACC;AAAA,IACD,IAAG,2BAA2B;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR,eAAe;AAAA,IACrB,CAAK;AACD,QAAI,aAAa,cAAc,GAAG,IAAI,iBAAiB;AAAA,EACxD;AACH;AACA,SAAS,aAAa,WAAW,SAAS;AACxC,QAAM,aAAa,CAAC,eAAe,aAAa,YAAY,eAAe,aAAa,WAAW,YAAY,cAAc,4BAA4B,QAAQ,QAAQ;AACzK,aAAW,YAAY,YAAY;AACjC,QAAI,UAAU,QAAQ,MAAM,QAAW;AACrC,cAAQ,QAAQ,IAAI,UAAU,QAAQ;AAAA,IACvC;AAAA,EACF;AACD,MAAI,UAAU,gBAAgB,QAAW;AACvC,YAAQ,YAAY,UAAU,YAAa;AAC3C,YAAQ,iBAAiB,UAAU;AAAA,EACpC;AACH;AACA,SAAS,kBAAkB,KAAK;AAC9B,MAAI,cAAc,IAAI,YAAY;AAClC,MAAI,WAAW;AACf,MAAI,cAAc;AAClB,MAAI,YAAY;AAChB,MAAI,UAAU;AACd,MAAI,WAAW;AACf,MAAI,aAAa;AACjB,MAAI,2BAA2B;AAC/B,MAAI,OAAO;AACX,MAAI,IAAI,gBAAgB,QAAW;AACjC,QAAI,YAAY,EAAE;AAClB,QAAI,iBAAiB;AAAA,EACtB;AACD,MAAI,CAAC,UAAU;AACb,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,QAAI,WAAW,UAAU,WAAW,IAAI;AACtC,UAAI,SAAS;AAAA,IACd;AAAA,EACF;AACH;AACA,SAAS,yBAAyB,WAAW,aAAa;AACxD,MAAI,aAAa;AACf,WAAO;AAAA,EACR;AACD,QAAM,QAAQ,KAAK,8BAA8B,SAAS;AAC1D,QAAM,CAAC,IAAI,KAAK,OAAO,MAAM,CAAC,CAAC;AAC/B,QAAM,CAAC,IAAI,KAAK,OAAO,MAAM,CAAC,CAAC;AAC/B,QAAM,cAAc,KAAK,QAAQ,WAAW,oBAAoB,KAAK,cAAc,gBAAgB;AACnG,SAAO,MAAM,CAAC,KAAK,eAAe,MAAM,CAAC,KAAK;AAChD;AACA,MAAM,kBAAkB,CAAC,QAAQ,SAAS,QAAQ;AAClD,MAAM,mBAAmB,CAAC,SAAS,SAAS,OAAO;AACnD,MAAM,cAAc;AACpB,MAAM,UAAU;AAChB,MAAM,kBAAN,MAAM,gBAAe;AAAA,EACnB,YAAY,WAAW,YAAY,MAAM,eAAe,eAAe;AAAA,IACrE;AAAA,IACA,qBAAqB;AAAA,EACzB,GAAK,qBAAqB,YAAY;AAoHpC;AA8BA;AAjJE,SAAK,MAAM;AACX,SAAK,UAAU,IAAI,iBAAiB,KAAK,IAAI,OAAO,OAAO,KAAK,IAAI,OAAO,MAAM;AACjF,SAAK,aAAa;AAClB,SAAK,cAAc;AACnB,SAAK,gBAAgB;AACrB,SAAK,MAAM;AACX,SAAK,QAAQ;AACb,SAAK,aAAa;AAClB,SAAK,OAAO;AACZ,SAAK,gBAAgB;AACrB,SAAK,gBAAgB;AACrB,SAAK,aAAa;AAClB,SAAK,kBAAkB;AACvB,SAAK,gBAAgB;AACrB,SAAK,qBAAqB;AAC1B,SAAK,aAAa;AAClB,SAAK,aAAa;AAClB,SAAK,eAAe;AACpB,SAAK,YAAY;AACjB,SAAK,eAAe;AACpB,SAAK,iBAAiB;AACtB,SAAK,qBAAqB,sBAAsB;AAChD,SAAK,wBAAwB;AAC7B,SAAK,iBAAiB,IAAI,eAAe,KAAK,aAAa;AAC3D,SAAK,iBAAiB,oBAAI;AAC1B,SAAK,sBAAsB;AAC3B,SAAK,gBAAgB;AACrB,SAAK,eAAe;AACpB,SAAK,eAAe;AACpB,SAAK,aAAa;AAClB,SAAK,0BAA0B,CAAC,IAAI,CAAC;AACrC,SAAK,6BAA6B;AAClC,SAAK,oBAAoB,oBAAI;EAC9B;AAAA,EACD,UAAU,MAAM,WAAW,MAAM;AAC/B,QAAI,OAAO,SAAS,UAAU;AAC5B,aAAO,KAAK,WAAW,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI;AAAA,IAC9E;AACD,WAAO;AAAA,EACR;AAAA,EACD,aAAa;AAAA,IACX;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,aAAa;AAAA,EACjB,GAAK;AACD,UAAM,QAAQ,KAAK,IAAI,OAAO;AAC9B,UAAM,SAAS,KAAK,IAAI,OAAO;AAC/B,UAAM,iBAAiB,KAAK,IAAI;AAChC,SAAK,IAAI,YAAY,cAAc;AACnC,SAAK,IAAI,SAAS,GAAG,GAAG,OAAO,MAAM;AACrC,SAAK,IAAI,YAAY;AACrB,QAAI,cAAc;AAChB,YAAM,oBAAoB,KAAK,eAAe,UAAU,eAAe,OAAO,MAAM;AACpF,WAAK,eAAe,KAAK;AACzB,WAAK,oBAAoB,kBAAkB;AAC3C,WAAK,MAAM,kBAAkB;AAC7B,WAAK,IAAI;AACT,WAAK,IAAI,UAAU,GAAG,oBAAoB,KAAK,YAAY,CAAC;AAAA,IAC7D;AACD,SAAK,IAAI;AACT,sBAAkB,KAAK,GAAG;AAC1B,QAAI,WAAW;AACb,WAAK,IAAI,UAAU,GAAG,SAAS;AAC/B,WAAK,eAAe,UAAU,CAAC;AAC/B,WAAK,eAAe,UAAU,CAAC;AAAA,IAChC;AACD,SAAK,IAAI,UAAU,GAAG,SAAS,SAAS;AACxC,SAAK,gBAAgB,SAAS;AAC9B,SAAK,gBAAgB,oBAAoB,KAAK,GAAG;AAAA,EAClD;AAAA,EACD,oBAAoB,cAAc,mBAAmB,kBAAkB,SAAS;AAC9E,UAAM,YAAY,aAAa;AAC/B,UAAM,UAAU,aAAa;AAC7B,QAAI,IAAI,qBAAqB;AAC7B,UAAM,eAAe,UAAU;AAC/B,QAAI,iBAAiB,GAAG;AACtB,aAAO;AAAA,IACR;AACD,UAAM,kBAAkB,eAAe,IAAI,mBAAmB,OAAO,qBAAqB;AAC1F,UAAM,UAAU,kBAAkB,KAAK,IAAK,IAAG,iBAAiB;AAChE,QAAI,QAAQ;AACZ,UAAM,aAAa,KAAK;AACxB,UAAM,OAAO,KAAK;AAClB,QAAI;AACJ,WAAO,MAAM;AACX,UAAI,YAAY,UAAa,MAAM,QAAQ,gBAAgB;AACzD,gBAAQ,QAAQ,GAAG,gBAAgB;AACnC,eAAO;AAAA,MACR;AACD,aAAO,QAAQ,CAAC;AAChB,UAAI,SAAS,IAAI,YAAY;AAC3B,aAAK,IAAI,EAAE,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,MAC3C,OAAa;AACL,mBAAW,YAAY,UAAU,CAAC,GAAG;AACnC,gBAAM,WAAW,SAAS,WAAW,IAAI,IAAI,aAAa;AAC1D,cAAI,CAAC,SAAS,IAAI,QAAQ,GAAG;AAC3B,qBAAS,IAAI,UAAU,gBAAgB;AACvC,mBAAO;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACD;AACA,UAAI,MAAM,cAAc;AACtB,eAAO;AAAA,MACR;AACD,UAAI,mBAAmB,EAAE,QAAQ,iBAAiB;AAChD,YAAI,KAAK,IAAK,IAAG,SAAS;AACxB;AACA,iBAAO;AAAA,QACR;AACD,gBAAQ;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAgBD,aAAa;AACX,0BAAK,8CAAL;AACA,SAAK,eAAe;AACpB,SAAK,eAAe;AACpB,eAAW,SAAS,KAAK,kBAAkB,OAAM,GAAI;AACnD,iBAAW,UAAU,MAAM,UAAU;AACnC,YAAI,OAAO,sBAAsB,eAAe,kBAAkB,mBAAmB;AACnF,iBAAO,QAAQ,OAAO,SAAS;AAAA,QAChC;AAAA,MACF;AACD,YAAM,MAAK;AAAA,IACZ;AACD,SAAK,kBAAkB;AACvB,0BAAK,4BAAL;AAAA,EACD;AAAA,EAYD,YAAY,KAAK,kBAAkB;AACjC,UAAM,QAAQ,IAAI;AAClB,UAAM,SAAS,IAAI;AACnB,QAAI,aAAa,KAAK,IAAI,KAAK,MAAM,iBAAiB,CAAC,GAAG,iBAAiB,CAAC,CAAC,GAAG,CAAC;AACjF,QAAI,cAAc,KAAK,IAAI,KAAK,MAAM,iBAAiB,CAAC,GAAG,iBAAiB,CAAC,CAAC,GAAG,CAAC;AAClF,QAAI,aAAa,OACf,cAAc;AAChB,QAAI,cAAc;AAClB,QAAI,WAAW;AACf,WAAO,aAAa,KAAK,aAAa,KAAK,cAAc,KAAK,cAAc,GAAG;AAC7E,UAAI,WAAW,YACb,YAAY;AACd,UAAI,aAAa,KAAK,aAAa,GAAG;AACpC,mBAAW,cAAc,QAAQ,KAAK,MAAM,aAAa,CAAC,IAAI,KAAK,IAAI,KAAK,KAAK,aAAa,CAAC;AAC/F,sBAAc,aAAa;AAAA,MAC5B;AACD,UAAI,cAAc,KAAK,cAAc,GAAG;AACtC,oBAAY,eAAe,QAAQ,KAAK,MAAM,cAAc,CAAC,IAAI,KAAK,IAAI,KAAK,KAAK,WAAW,IAAI;AACnG,uBAAe,cAAc;AAAA,MAC9B;AACD,kBAAY,KAAK,eAAe,UAAU,aAAa,UAAU,SAAS;AAC1E,eAAS,UAAU;AACnB,aAAO,UAAU,GAAG,GAAG,UAAU,SAAS;AAC1C,aAAO,UAAU,KAAK,GAAG,GAAG,YAAY,aAAa,GAAG,GAAG,UAAU,SAAS;AAC9E,YAAM,UAAU;AAChB,mBAAa;AACb,oBAAc;AACd,oBAAc,gBAAgB,cAAc,cAAc;AAAA,IAC3D;AACD,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACG;AAAA,EACD,kBAAkB,KAAK;AACrB,UAAM,MAAM,KAAK;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACD,IAAG;AACJ,UAAM,YAAY,KAAK,QAAQ;AAC/B,UAAM,gBAAgB,KAAK,QAAQ;AACnC,UAAM,mBAAmB,oBAAoB,GAAG;AAChD,QAAI,OAAO,UAAU,QAAQ;AAC7B,SAAK,IAAI,UAAU,IAAI,SAAS,IAAI,QAAQ,GAAG;AAC7C,YAAM,UAAU,IAAI,UAAU,IAAI,KAAK;AACvC,iBAAW,KAAK,UAAU,gBAAgB,mBAAmB,CAAC,iBAAiB,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;AACtG,cAAQ,KAAK,kBAAkB,IAAI,OAAO;AAC1C,UAAI,CAAC,OAAO;AACV,gBAAQ,oBAAI;AACZ,aAAK,kBAAkB,IAAI,SAAS,KAAK;AAAA,MAC1C;AACD,YAAM,cAAc,MAAM,IAAI,QAAQ;AACtC,UAAI,eAAe,CAAC,eAAe;AACjC,cAAMC,WAAU,KAAK,MAAM,KAAK,IAAI,iBAAiB,CAAC,GAAG,iBAAiB,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC;AACnG,cAAMC,WAAU,KAAK,MAAM,KAAK,IAAI,iBAAiB,CAAC,GAAG,iBAAiB,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC;AACnG,eAAO;AAAA,UACL,QAAQ;AAAA,UACR,SAAAD;AAAA,UACA,SAAAC;AAAA,QACV;AAAA,MACO;AACD,eAAS;AAAA,IACV;AACD,QAAI,CAAC,QAAQ;AACX,mBAAa,KAAK,eAAe,UAAU,cAAc,OAAO,MAAM;AACtE,yBAAmB,WAAW,SAAS,GAAG;AAAA,IAC3C;AACD,QAAI,eAAe,KAAK,UAAU,kBAAkB,CAAC,IAAI,OAAO,GAAG,GAAG,KAAK,QAAQ,GAAG,CAAC,CAAC;AACxF,mBAAe,KAAK,UAAU,cAAc,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;AACpE,UAAM,CAAC,MAAM,MAAM,MAAM,IAAI,IAAI,KAAK,2BAA2B,CAAC,GAAG,GAAG,OAAO,MAAM,GAAG,YAAY;AACpG,UAAM,aAAa,KAAK,MAAM,OAAO,IAAI,KAAK;AAC9C,UAAM,cAAc,KAAK,MAAM,OAAO,IAAI,KAAK;AAC/C,UAAM,aAAa,KAAK,eAAe,UAAU,cAAc,YAAY,WAAW;AACtF,UAAM,UAAU,WAAW;AAC3B,UAAM,UAAU;AAChB,UAAM,UAAU;AAChB,YAAQ,UAAU,CAAC,SAAS,CAAC,OAAO;AACpC,YAAQ,UAAU,GAAG,YAAY;AACjC,QAAI,CAAC,QAAQ;AACX,eAAS,KAAK,YAAY,WAAW,QAAQ,2BAA2B,OAAO,CAAC;AAChF,eAAS,OAAO;AAChB,UAAI,SAAS,eAAe;AAC1B,cAAM,IAAI,UAAU,MAAM;AAAA,MAC3B;AAAA,IACF;AACD,YAAQ,wBAAwB,yBAAyB,oBAAoB,OAAO,GAAG,IAAI,WAAW;AACtG,6BAAyB,SAAS,QAAQ,GAAG,GAAG,OAAO,OAAO,OAAO,QAAQ,GAAG,GAAG,OAAO,MAAM;AAChG,YAAQ,2BAA2B;AACnC,UAAM,UAAU,KAAK,UAAU,2BAA2B,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;AACpG,YAAQ,YAAY,gBAAgB,UAAU,WAAW,KAAK,MAAM,SAAS,SAAS,IAAI,IAAI;AAC9F,YAAQ,SAAS,GAAG,GAAG,OAAO,MAAM;AACpC,QAAI,SAAS,CAAC,eAAe;AAC3B,WAAK,eAAe,OAAO,YAAY;AACvC,YAAM,IAAI,UAAU,WAAW,MAAM;AAAA,IACtC;AACD,WAAO;AAAA,MACL,QAAQ,WAAW;AAAA,MACnB,SAAS,KAAK,MAAM,OAAO;AAAA,MAC3B,SAAS,KAAK,MAAM,OAAO;AAAA,IACjC;AAAA,EACG;AAAA,EACD,aAAa,OAAO;AAClB,QAAI,UAAU,KAAK,QAAQ,WAAW;AACpC,WAAK,wBAAwB,CAAC,IAAI;AAAA,IACnC;AACD,SAAK,QAAQ,YAAY;AACzB,SAAK,IAAI,YAAY;AAAA,EACtB;AAAA,EACD,WAAW,OAAO;AAChB,SAAK,IAAI,UAAU,gBAAgB,KAAK;AAAA,EACzC;AAAA,EACD,YAAY,OAAO;AACjB,SAAK,IAAI,WAAW,iBAAiB,KAAK;AAAA,EAC3C;AAAA,EACD,cAAc,OAAO;AACnB,SAAK,IAAI,aAAa;AAAA,EACvB;AAAA,EACD,QAAQ,WAAW,WAAW;AAC5B,UAAM,MAAM,KAAK;AACjB,QAAI,IAAI,gBAAgB,QAAW;AACjC,UAAI,YAAY,SAAS;AACzB,UAAI,iBAAiB;AAAA,IACtB;AAAA,EACF;AAAA,EACD,mBAAmB,QAAQ;AAAA,EAAE;AAAA,EAC7B,YAAY,UAAU;AAAA,EAAE;AAAA,EACxB,UAAU,QAAQ;AAChB,eAAW,CAAC,KAAK,KAAK,KAAK,QAAQ;AACjC,cAAQ,KAAG;AAAA,QACT,KAAK;AACH,eAAK,aAAa,KAAK;AACvB;AAAA,QACF,KAAK;AACH,eAAK,WAAW,KAAK;AACrB;AAAA,QACF,KAAK;AACH,eAAK,YAAY,KAAK;AACtB;AAAA,QACF,KAAK;AACH,eAAK,cAAc,KAAK;AACxB;AAAA,QACF,KAAK;AACH,eAAK,QAAQ,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAC/B;AAAA,QACF,KAAK;AACH,eAAK,mBAAmB,KAAK;AAC7B;AAAA,QACF,KAAK;AACH,eAAK,YAAY,KAAK;AACtB;AAAA,QACF,KAAK;AACH,eAAK,QAAQ,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAC/B;AAAA,QACF,KAAK;AACH,eAAK,QAAQ,cAAc;AAC3B;AAAA,QACF,KAAK;AACH,eAAK,QAAQ,YAAY;AACzB,eAAK,IAAI,cAAc;AACvB;AAAA,QACF,KAAK;AACH,eAAK,IAAI,2BAA2B;AACpC;AAAA,QACF,KAAK;AACH,eAAK,QAAQ,cAAc,QAAQ,KAAK,YAAY;AACpD,eAAK,YAAY;AACjB,eAAK,gBAAe;AACpB;AAAA,QACF,KAAK;AACH,eAAK,IAAI,SAAS,KAAK,QAAQ,eAAe,KAAK,cAAc,UAAU,KAAK;AAChF;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EACD,IAAI,cAAc;AAChB,WAAO,CAAC,CAAC,KAAK;AAAA,EACf;AAAA,EACD,kBAAkB;AAChB,UAAM,cAAc,KAAK;AACzB,QAAI,KAAK,QAAQ,eAAe,CAAC,aAAa;AAC5C,WAAK,eAAc;AAAA,IACpB,WAAU,CAAC,KAAK,QAAQ,eAAe,aAAa;AACnD,WAAK,aAAY;AAAA,IAClB;AAAA,EACF;AAAA,EACD,iBAAiB;AACf,QAAI,KAAK,aAAa;AACpB,YAAM,IAAI,MAAM,mDAAmD;AAAA,IACpE;AACD,UAAM,aAAa,KAAK,IAAI,OAAO;AACnC,UAAM,cAAc,KAAK,IAAI,OAAO;AACpC,UAAM,UAAU,iBAAiB,KAAK;AACtC,UAAM,gBAAgB,KAAK,eAAe,UAAU,SAAS,YAAY,WAAW;AACpF,SAAK,eAAe,KAAK;AACzB,SAAK,MAAM,cAAc;AACzB,UAAM,MAAM,KAAK;AACjB,QAAI,aAAa,GAAG,oBAAoB,KAAK,YAAY,CAAC;AAC1D,iBAAa,KAAK,cAAc,GAAG;AACnC,4BAAwB,KAAK,KAAK,YAAY;AAC9C,SAAK,UAAU,CAAC,CAAC,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAAA,EAC7D;AAAA,EACD,eAAe;AACb,QAAI,CAAC,KAAK,aAAa;AACrB,YAAM,IAAI,MAAM,6CAA6C;AAAA,IAC9D;AACD,SAAK,IAAI;AACT,iBAAa,KAAK,KAAK,KAAK,YAAY;AACxC,SAAK,MAAM,KAAK;AAChB,SAAK,eAAe;AAAA,EACrB;AAAA,EACD,QAAQ,UAAU;AAChB,QAAI,CAAC,KAAK,QAAQ,aAAa;AAC7B;AAAA,IACD;AACD,QAAI,CAAC,UAAU;AACb,iBAAW,CAAC,GAAG,GAAG,KAAK,IAAI,OAAO,OAAO,KAAK,IAAI,OAAO,MAAM;AAAA,IACrE,OAAW;AACL,eAAS,CAAC,IAAI,KAAK,MAAM,SAAS,CAAC,CAAC;AACpC,eAAS,CAAC,IAAI,KAAK,MAAM,SAAS,CAAC,CAAC;AACpC,eAAS,CAAC,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC;AACnC,eAAS,CAAC,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC;AAAA,IACpC;AACD,UAAM,QAAQ,KAAK,QAAQ;AAC3B,UAAM,eAAe,KAAK;AAC1B,SAAK,aAAa,cAAc,OAAO,KAAK,KAAK,QAAQ;AACzD,SAAK,IAAI;AACT,SAAK,IAAI,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACtC,SAAK,IAAI,UAAU,GAAG,GAAG,KAAK,IAAI,OAAO,OAAO,KAAK,IAAI,OAAO,MAAM;AACtE,SAAK,IAAI;EACV;AAAA,EACD,aAAa,KAAK,OAAO,UAAU,UAAU;AAC3C,UAAM,eAAe,SAAS,CAAC;AAC/B,UAAM,eAAe,SAAS,CAAC;AAC/B,UAAM,aAAa,SAAS,CAAC,IAAI;AACjC,UAAM,cAAc,SAAS,CAAC,IAAI;AAClC,QAAI,eAAe,KAAK,gBAAgB,GAAG;AACzC;AAAA,IACD;AACD,SAAK,oBAAoB,MAAM,SAAS,UAAU,YAAY,aAAa,MAAM,SAAS,MAAM,UAAU,MAAM,aAAa,cAAc,cAAc,MAAM,SAAS,MAAM,OAAO;AACrL,QAAI,KAAI;AACR,QAAI,cAAc;AAClB,QAAI,2BAA2B;AAC/B,QAAI,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACjC,QAAI,UAAU,SAAS,QAAQ,GAAG,CAAC;AACnC,QAAI,QAAO;AAAA,EACZ;AAAA,EACD,oBAAoB,SAAS,UAAU,OAAO,QAAQ,SAAS,UAAU,aAAa,cAAc,cAAc,aAAa,aAAa;AAC1I,QAAI,aAAa,QAAQ;AACzB,QAAI,QAAQ,eAAe;AAC3B,QAAI,QAAQ,eAAe;AAC3B,QAAI,UAAU;AACZ,UAAI,QAAQ,KAAK,QAAQ,KAAK,QAAQ,QAAQ,WAAW,SAAS,QAAQ,SAAS,WAAW,QAAQ;AACpG,cAAM,SAAS,KAAK,eAAe,UAAU,iBAAiB,OAAO,MAAM;AAC3E,cAAM,MAAM,OAAO;AACnB,YAAI,UAAU,YAAY,CAAC,OAAO,CAAC,KAAK;AACxC,YAAI,SAAS,KAAK,OAAK,MAAM,CAAC,GAAG;AAC/B,cAAI,2BAA2B;AAC/B,cAAI,YAAY,KAAK,aAAa,GAAG,QAAQ;AAC7C,cAAI,SAAS,GAAG,GAAG,OAAO,MAAM;AAChC,cAAI,2BAA2B;AAAA,QAChC;AACD,qBAAa,OAAO;AACpB,gBAAQ,QAAQ;AAAA,MACxB,WAAiB,SAAS,KAAK,OAAK,MAAM,CAAC,GAAG;AACtC,gBAAQ,KAAI;AACZ,gBAAQ,cAAc;AACtB,gBAAQ,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACrC,cAAMC,QAAO,IAAI;AACjB,QAAAA,MAAK,KAAK,OAAO,OAAO,OAAO,MAAM;AACrC,gBAAQ,KAAKA,KAAI;AACjB,gBAAQ,2BAA2B;AACnC,gBAAQ,YAAY,KAAK,aAAa,GAAG,QAAQ;AACjD,gBAAQ,SAAS,OAAO,OAAO,OAAO,MAAM;AAC5C,gBAAQ,QAAO;AAAA,MAChB;AAAA,IACF;AACD,aAAS,KAAI;AACb,aAAS,cAAc;AACvB,aAAS,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACtC,QAAI,YAAY,WAAW,aAAa;AACtC,eAAS,SAAS,KAAK,cAAc,eAAe,WAAW;AAAA,IACrE,WAAe,YAAY,cAAc;AACnC,eAAS,SAAS,KAAK,cAAc,oBAAoB,WAAW;AAAA,IACrE;AACD,UAAM,OAAO,IAAI;AACjB,SAAK,KAAK,cAAc,cAAc,OAAO,MAAM;AACnD,aAAS,KAAK,IAAI;AAClB,aAAS,2BAA2B;AACpC,aAAS,UAAU,YAAY,OAAO,OAAO,OAAO,QAAQ,cAAc,cAAc,OAAO,MAAM;AACrG,aAAS,QAAO;AAAA,EACjB;AAAA,EACD,OAAO;AACL,QAAI,KAAK,aAAa;AACpB,mBAAa,KAAK,KAAK,KAAK,YAAY;AACxC,WAAK,aAAa;IACxB,OAAW;AACL,WAAK,IAAI;IACV;AACD,UAAM,MAAM,KAAK;AACjB,SAAK,WAAW,KAAK,GAAG;AACxB,SAAK,UAAU,IAAI;EACpB;AAAA,EACD,UAAU;AACR,QAAI,KAAK,WAAW,WAAW,KAAK,KAAK,aAAa;AACpD,WAAK,aAAY;AAAA,IAClB;AACD,QAAI,KAAK,WAAW,WAAW,GAAG;AAChC,WAAK,UAAU,KAAK,WAAW,IAAG;AAClC,UAAI,KAAK,aAAa;AACpB,aAAK,aAAa;AAClB,qBAAa,KAAK,cAAc,KAAK,GAAG;AAAA,MAChD,OAAa;AACL,aAAK,IAAI;MACV;AACD,WAAK,gBAAe;AACpB,WAAK,cAAc;AACnB,WAAK,wBAAwB,CAAC,IAAI;AAClC,WAAK,6BAA6B;AAAA,IACnC;AAAA,EACF;AAAA,EACD,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAC1B,SAAK,IAAI,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACnC,SAAK,wBAAwB,CAAC,IAAI;AAClC,SAAK,6BAA6B;AAAA,EACnC;AAAA,EACD,cAAc,KAAK,MAAM,QAAQ;AAC/B,UAAM,MAAM,KAAK;AACjB,UAAM,UAAU,KAAK;AACrB,QAAI,IAAI,QAAQ,GACd,IAAI,QAAQ;AACd,QAAI,QAAQ;AACZ,UAAM,mBAAmB,oBAAoB,GAAG;AAChD,UAAM,kBAAkB,iBAAiB,CAAC,MAAM,KAAK,iBAAiB,CAAC,MAAM,KAAK,iBAAiB,CAAC,MAAM,KAAK,iBAAiB,CAAC,MAAM;AACvI,UAAM,kBAAkB,kBAAkB,OAAO,MAAM,CAAC,IAAI;AAC5D,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK,IAAI,QAAQ,IAAI,IAAI,KAAK;AACnD,cAAQ,IAAI,CAAC,IAAI,GAAC;AAAA,QAChB,KAAK,IAAI;AACP,cAAI,KAAK,GAAG;AACZ,cAAI,KAAK,GAAG;AACZ,gBAAM,QAAQ,KAAK,GAAG;AACtB,gBAAM,SAAS,KAAK,GAAG;AACvB,gBAAM,KAAK,IAAI;AACf,gBAAM,KAAK,IAAI;AACf,cAAI,OAAO,GAAG,CAAC;AACf,cAAI,UAAU,KAAK,WAAW,GAAG;AAC/B,gBAAI,OAAO,IAAI,EAAE;AAAA,UAC7B,OAAiB;AACL,gBAAI,OAAO,IAAI,CAAC;AAChB,gBAAI,OAAO,IAAI,EAAE;AACjB,gBAAI,OAAO,GAAG,EAAE;AAAA,UACjB;AACD,cAAI,CAAC,iBAAiB;AACpB,oBAAQ,iBAAiB,kBAAkB,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC;AAAA,UAC1D;AACD,cAAI,UAAS;AACb;AAAA,QACF,KAAK,IAAI;AACP,cAAI,KAAK,GAAG;AACZ,cAAI,KAAK,GAAG;AACZ,cAAI,OAAO,GAAG,CAAC;AACf,cAAI,CAAC,iBAAiB;AACpB,oBAAQ,iBAAiB,kBAAkB,GAAG,CAAC;AAAA,UAChD;AACD;AAAA,QACF,KAAK,IAAI;AACP,cAAI,KAAK,GAAG;AACZ,cAAI,KAAK,GAAG;AACZ,cAAI,OAAO,GAAG,CAAC;AACf,cAAI,CAAC,iBAAiB;AACpB,oBAAQ,iBAAiB,kBAAkB,GAAG,CAAC;AAAA,UAChD;AACD;AAAA,QACF,KAAK,IAAI;AACP,mBAAS;AACT,mBAAS;AACT,cAAI,KAAK,IAAI,CAAC;AACd,cAAI,KAAK,IAAI,CAAC;AACd,cAAI,cAAc,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC;AACtE,kBAAQ,sBAAsB,kBAAkB,QAAQ,QAAQ,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,eAAe;AACrI,eAAK;AACL;AAAA,QACF,KAAK,IAAI;AACP,mBAAS;AACT,mBAAS;AACT,cAAI,cAAc,GAAG,GAAG,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;AACtE,kBAAQ,sBAAsB,kBAAkB,QAAQ,QAAQ,GAAG,GAAG,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,eAAe;AACrI,cAAI,KAAK,IAAI,CAAC;AACd,cAAI,KAAK,IAAI,CAAC;AACd,eAAK;AACL;AAAA,QACF,KAAK,IAAI;AACP,mBAAS;AACT,mBAAS;AACT,cAAI,KAAK,IAAI,CAAC;AACd,cAAI,KAAK,IAAI,CAAC;AACd,cAAI,cAAc,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,kBAAQ,sBAAsB,kBAAkB,QAAQ,QAAQ,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,eAAe;AACjH,eAAK;AACL;AAAA,QACF,KAAK,IAAI;AACP,cAAI,UAAS;AACb;AAAA,MACH;AAAA,IACF;AACD,QAAI,iBAAiB;AACnB,cAAQ,wBAAwB,kBAAkB,eAAe;AAAA,IAClE;AACD,YAAQ,gBAAgB,GAAG,CAAC;AAAA,EAC7B;AAAA,EACD,YAAY;AACV,SAAK,IAAI;EACV;AAAA,EACD,OAAO,cAAc,MAAM;AACzB,UAAM,MAAM,KAAK;AACjB,UAAM,cAAc,KAAK,QAAQ;AACjC,QAAI,cAAc,KAAK,QAAQ;AAC/B,QAAI,KAAK,gBAAgB;AACvB,UAAI,OAAO,gBAAgB,aAAY,2CAAa,aAAY;AAC9D,YAAI,KAAI;AACR,YAAI,cAAc,YAAY,WAAW,KAAK,MAAM,2BAA2B,GAAG,GAAG,SAAS,MAAM;AACpG,aAAK,iBAAiB,KAAK;AAC3B,YAAI,QAAO;AAAA,MACnB,OAAa;AACL,aAAK,iBAAiB,IAAI;AAAA,MAC3B;AAAA,IACF;AACD,QAAI,aAAa;AACf,WAAK,YAAY,KAAK,QAAQ,0BAA2B;AAAA,IAC1D;AACD,QAAI,cAAc,KAAK,QAAQ;AAAA,EAChC;AAAA,EACD,cAAc;AACZ,SAAK,UAAS;AACd,SAAK,OAAM;AAAA,EACZ;AAAA,EACD,KAAK,cAAc,MAAM;AACvB,UAAM,MAAM,KAAK;AACjB,UAAM,YAAY,KAAK,QAAQ;AAC/B,UAAM,gBAAgB,KAAK,QAAQ;AACnC,QAAI,cAAc;AAClB,QAAI,eAAe;AACjB,UAAI,KAAI;AACR,UAAI,YAAY,UAAU,WAAW,KAAK,MAAM,2BAA2B,GAAG,GAAG,SAAS,IAAI;AAC9F,oBAAc;AAAA,IACf;AACD,UAAM,YAAY,KAAK,QAAQ,0BAAyB;AACxD,QAAI,KAAK,kBAAkB,cAAc,MAAM;AAC7C,UAAI,KAAK,eAAe;AACtB,YAAI,KAAK,SAAS;AAClB,aAAK,gBAAgB;AAAA,MAC7B,OAAa;AACL,YAAI,KAAI;AAAA,MACT;AAAA,IACF;AACD,QAAI,aAAa;AACf,UAAI,QAAO;AAAA,IACZ;AACD,QAAI,aAAa;AACf,WAAK,YAAY,SAAS;AAAA,IAC3B;AAAA,EACF;AAAA,EACD,SAAS;AACP,SAAK,gBAAgB;AACrB,SAAK,KAAI;AAAA,EACV;AAAA,EACD,aAAa;AACX,SAAK,KAAK,KAAK;AACf,SAAK,OAAO,KAAK;AACjB,SAAK,YAAW;AAAA,EACjB;AAAA,EACD,eAAe;AACb,SAAK,gBAAgB;AACrB,SAAK,WAAU;AAAA,EAChB;AAAA,EACD,kBAAkB;AAChB,SAAK,UAAS;AACd,SAAK,WAAU;AAAA,EAChB;AAAA,EACD,oBAAoB;AAClB,SAAK,gBAAgB;AACrB,SAAK,UAAS;AACd,SAAK,WAAU;AAAA,EAChB;AAAA,EACD,UAAU;AACR,SAAK,YAAW;AAAA,EACjB;AAAA,EACD,OAAO;AACL,SAAK,cAAc;AAAA,EACpB;AAAA,EACD,SAAS;AACP,SAAK,cAAc;AAAA,EACpB;AAAA,EACD,YAAY;AACV,SAAK,QAAQ,aAAa;AAC1B,SAAK,QAAQ,kBAAkB;AAC/B,SAAK,QAAQ,IAAI,KAAK,QAAQ,QAAQ;AACtC,SAAK,QAAQ,IAAI,KAAK,QAAQ,QAAQ;AAAA,EACvC;AAAA,EACD,UAAU;AACR,UAAM,QAAQ,KAAK;AACnB,UAAM,MAAM,KAAK;AACjB,QAAI,UAAU,QAAW;AACvB,UAAI,UAAS;AACb;AAAA,IACD;AACD,QAAI,KAAI;AACR,QAAI,UAAS;AACb,eAAW,QAAQ,OAAO;AACxB,UAAI,aAAa,GAAG,KAAK,SAAS;AAClC,UAAI,UAAU,KAAK,GAAG,KAAK,CAAC;AAC5B,WAAK,UAAU,KAAK,KAAK,QAAQ;AAAA,IAClC;AACD,QAAI,QAAO;AACX,QAAI,KAAI;AACR,QAAI,UAAS;AACb,WAAO,KAAK;AAAA,EACb;AAAA,EACD,eAAe,SAAS;AACtB,SAAK,QAAQ,cAAc;AAAA,EAC5B;AAAA,EACD,eAAe,SAAS;AACtB,SAAK,QAAQ,cAAc;AAAA,EAC5B;AAAA,EACD,UAAU,OAAO;AACf,SAAK,QAAQ,aAAa,QAAQ;AAAA,EACnC;AAAA,EACD,WAAW,SAAS;AAClB,SAAK,QAAQ,UAAU,CAAC;AAAA,EACzB;AAAA,EACD,QAAQ,aAAa,MAAM;;AACzB,UAAM,UAAU,KAAK,WAAW,IAAI,WAAW;AAC/C,UAAM,UAAU,KAAK;AACrB,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,uBAAuB,WAAW,EAAE;AAAA,IACrD;AACD,YAAQ,aAAa,QAAQ,cAAc;AAC3C,QAAI,QAAQ,WAAW,CAAC,MAAM,KAAK,QAAQ,WAAW,CAAC,MAAM,GAAG;AAC9D,WAAK,kCAAkC,WAAW;AAAA,IACnD;AACD,QAAI,OAAO,GAAG;AACZ,aAAO,CAAC;AACR,cAAQ,gBAAgB;AAAA,IAC9B,OAAW;AACL,cAAQ,gBAAgB;AAAA,IACzB;AACD,SAAK,QAAQ,OAAO;AACpB,SAAK,QAAQ,WAAW;AACxB,QAAI,QAAQ,aAAa;AACvB;AAAA,IACD;AACD,UAAM,OAAO,QAAQ,cAAc;AACnC,UAAM,aAAWpB,MAAA,QAAQ,mBAAR,gBAAAA,IAAwB,QAAO,IAAI,IAAI,MAAM,QAAQ,YAAY;AAClF,QAAI,OAAO;AACX,QAAI,QAAQ,OAAO;AACjB,aAAO;AAAA,IACb,WAAe,QAAQ,MAAM;AACvB,aAAO;AAAA,IACR;AACD,UAAM,SAAS,QAAQ,SAAS,WAAW;AAC3C,QAAI,kBAAkB;AACtB,QAAI,OAAO,eAAe;AACxB,wBAAkB;AAAA,IACxB,WAAe,OAAO,eAAe;AAC/B,wBAAkB;AAAA,IACnB;AACD,SAAK,QAAQ,gBAAgB,OAAO;AACpC,SAAK,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,IAAI,eAAe,MAAM,QAAQ;AAAA,EACnE;AAAA,EACD,qBAAqB,MAAM;AACzB,SAAK,QAAQ,oBAAoB;AAAA,EAClC;AAAA,EACD,YAAY,MAAM;AAChB,SAAK,QAAQ,WAAW;AAAA,EACzB;AAAA,EACD,SAAS,GAAG,GAAG;AACb,SAAK,QAAQ,IAAI,KAAK,QAAQ,SAAS;AACvC,SAAK,QAAQ,IAAI,KAAK,QAAQ,SAAS;AAAA,EACxC;AAAA,EACD,mBAAmB,GAAG,GAAG;AACvB,SAAK,WAAW,CAAC,CAAC;AAClB,SAAK,SAAS,GAAG,CAAC;AAAA,EACnB;AAAA,EACD,cAAc,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAC9B,SAAK,QAAQ,aAAa,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3C,SAAK,QAAQ,kBAAkB,KAAK,MAAM,GAAG,CAAC;AAC9C,SAAK,QAAQ,IAAI,KAAK,QAAQ,QAAQ;AACtC,SAAK,QAAQ,IAAI,KAAK,QAAQ,QAAQ;AAAA,EACvC;AAAA,EACD,WAAW;AACT,SAAK,SAAS,GAAG,KAAK,QAAQ,OAAO;AAAA,EACtC;AAAA,EACD,UAAU,WAAW,GAAG,GAAG,kBAAkB;AAC3C,UAAM,MAAM,KAAK;AACjB,UAAM,UAAU,KAAK;AACrB,UAAM,OAAO,QAAQ;AACrB,UAAM,oBAAoB,QAAQ;AAClC,UAAM,WAAW,QAAQ,WAAW,QAAQ;AAC5C,UAAM,iBAAiB,oBAAoB,kBAAkB;AAC7D,UAAM,iBAAiB,CAAC,EAAE,oBAAoB,kBAAkB;AAChE,UAAM,cAAc,QAAQ,eAAe,CAAC,KAAK;AACjD,QAAI;AACJ,QAAI,KAAK,mBAAmB,kBAAkB,aAAa;AACzD,kBAAY,KAAK,iBAAiB,KAAK,YAAY,SAAS;AAAA,IAC7D;AACD,QAAI,KAAK,mBAAmB,aAAa;AACvC,UAAI,KAAI;AACR,UAAI,UAAU,GAAG,CAAC;AAClB,UAAI,UAAS;AACb,gBAAU,KAAK,QAAQ;AACvB,UAAI,kBAAkB;AACpB,YAAI,aAAa,GAAG,gBAAgB;AAAA,MACrC;AACD,UAAI,mBAAmB,kBAAkB,QAAQ,mBAAmB,kBAAkB,aAAa;AACjG,YAAI,KAAI;AAAA,MACT;AACD,UAAI,mBAAmB,kBAAkB,UAAU,mBAAmB,kBAAkB,aAAa;AACnG,YAAI,OAAM;AAAA,MACX;AACD,UAAI,QAAO;AAAA,IACjB,OAAW;AACL,UAAI,mBAAmB,kBAAkB,QAAQ,mBAAmB,kBAAkB,aAAa;AACjG,YAAI,SAAS,WAAW,GAAG,CAAC;AAAA,MAC7B;AACD,UAAI,mBAAmB,kBAAkB,UAAU,mBAAmB,kBAAkB,aAAa;AACnG,YAAI,WAAW,WAAW,GAAG,CAAC;AAAA,MAC/B;AAAA,IACF;AACD,QAAI,gBAAgB;AAClB,YAAM,QAAQ,KAAK,qBAAL,KAAK,mBAAqB;AACxC,YAAM,KAAK;AAAA,QACT,WAAW,oBAAoB,GAAG;AAAA,QAClC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACR,CAAO;AAAA,IACF;AAAA,EACF;AAAA,EACD,IAAI,0BAA0B;AAC5B,UAAM;AAAA,MACJ,SAAS;AAAA,IACf,IAAQ,KAAK,eAAe,UAAU,2BAA2B,IAAI,EAAE;AACnE,QAAI,MAAM,KAAK,CAAC;AAChB,QAAI,SAAS,KAAK,GAAG,EAAE;AACvB,UAAM,OAAO,IAAI,aAAa,GAAG,GAAG,IAAI,EAAE,EAAE;AAC5C,QAAI,UAAU;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK,GAAG;AACvC,UAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK;AAChC,kBAAU;AACV;AAAA,MACD;AAAA,IACF;AACD,WAAO,OAAO,MAAM,2BAA2B,OAAO;AAAA,EACvD;AAAA,EACD,SAAS,QAAQ;AACf,UAAM,UAAU,KAAK;AACrB,UAAM,OAAO,QAAQ;AACrB,QAAI,KAAK,aAAa;AACpB,aAAO,KAAK,cAAc,MAAM;AAAA,IACjC;AACD,UAAM,WAAW,QAAQ;AACzB,QAAI,aAAa,GAAG;AAClB,aAAO;AAAA,IACR;AACD,UAAM,MAAM,KAAK;AACjB,UAAM,gBAAgB,QAAQ;AAC9B,UAAM,cAAc,QAAQ;AAC5B,UAAM,cAAc,QAAQ;AAC5B,UAAM,gBAAgB,QAAQ;AAC9B,UAAM,aAAa,QAAQ,aAAa;AACxC,UAAM,eAAe,OAAO;AAC5B,UAAM,WAAW,KAAK;AACtB,UAAM,aAAa,WAAW,IAAI;AAClC,UAAM,kBAAkB,KAAK;AAC7B,UAAM,oBAAoB,WAAW,QAAQ,WAAW,CAAC;AACzD,UAAM,iBAAiB,QAAQ,sBAAsB,kBAAkB,QAAQ,CAAC,KAAK,mBAAmB,CAAC,QAAQ;AACjH,QAAI,KAAI;AACR,QAAI,UAAU,GAAG,QAAQ,UAAU;AACnC,QAAI,UAAU,QAAQ,GAAG,QAAQ,IAAI,QAAQ,QAAQ;AACrD,QAAI,gBAAgB,GAAG;AACrB,UAAI,MAAM,YAAY,EAAE;AAAA,IAC9B,OAAW;AACL,UAAI,MAAM,YAAY,CAAC;AAAA,IACxB;AACD,QAAI;AACJ,QAAI,QAAQ,aAAa;AACvB,UAAI,KAAI;AACR,YAAM,UAAU,QAAQ,UAAU,WAAW,KAAK,MAAM,2BAA2B,GAAG,GAAG,SAAS,IAAI;AACtG,yBAAmB,oBAAoB,GAAG;AAC1C,UAAI,QAAO;AACX,UAAI,YAAY;AAAA,IACjB;AACD,QAAI,YAAY,QAAQ;AACxB,UAAM,QAAQ,QAAQ;AACtB,QAAI,UAAU,KAAK,cAAc,GAAG;AAClC,YAAM,iBAAiB,QAAQ,oBAAoB,kBAAkB;AACrE,UAAI,mBAAmB,kBAAkB,UAAU,mBAAmB,kBAAkB,aAAa;AACnG,oBAAY,KAAK;MAClB;AAAA,IACP,OAAW;AACL,mBAAa;AAAA,IACd;AACD,QAAI,kBAAkB,GAAK;AACzB,UAAI,MAAM,eAAe,aAAa;AACtC,mBAAa;AAAA,IACd;AACD,QAAI,YAAY;AAChB,QAAI,KAAK,oBAAoB;AAC3B,YAAM,QAAQ;AACd,UAAI,QAAQ;AACZ,iBAAW,SAAS,QAAQ;AAC1B,cAAM,KAAK,MAAM,OAAO;AACxB,iBAAS,MAAM;AAAA,MAChB;AACD,UAAI,SAAS,MAAM,KAAK,EAAE,GAAG,GAAG,CAAC;AACjC,cAAQ,KAAK,QAAQ,oBAAoB;AACzC,UAAI,QAAO;AACX,WAAK,QAAO;AACZ,aAAO;AAAA,IACR;AACD,QAAI,IAAI,GACN;AACF,SAAK,IAAI,GAAG,IAAI,cAAc,EAAE,GAAG;AACjC,YAAM,QAAQ,OAAO,CAAC;AACtB,UAAI,OAAO,UAAU,UAAU;AAC7B,aAAK,aAAa,QAAQ,WAAW;AACrC;AAAA,MACD;AACD,UAAI,gBAAgB;AACpB,YAAM,WAAW,MAAM,UAAU,cAAc,KAAK;AACpD,YAAM,YAAY,MAAM;AACxB,YAAM,SAAS,MAAM;AACrB,UAAI,SAAS;AACb,UAAI,QAAQ,MAAM;AAClB,UAAI,UAAU;AACZ,cAAM,UAAU,MAAM,WAAW;AACjC,cAAM,KAAK,EAAE,MAAM,UAAU,QAAQ,CAAC,IAAI,QAAQ,OAAO;AACzD,cAAM,KAAK,QAAQ,CAAC,IAAI;AACxB,gBAAQ,UAAU,CAAC,QAAQ,CAAC,IAAI;AAChC,kBAAU,KAAK;AACf,mBAAW,IAAI,MAAM;AAAA,MAC7B,OAAa;AACL,kBAAU,IAAI;AACd,kBAAU;AAAA,MACX;AACD,UAAI,KAAK,aAAa,QAAQ,GAAG;AAC/B,cAAM,gBAAgB,IAAI,YAAY,SAAS,EAAE,QAAQ,MAAO,WAAW;AAC3E,YAAI,QAAQ,iBAAiB,KAAK,yBAAyB;AACzD,gBAAM,kBAAkB,QAAQ;AAChC,0BAAgB;AAChB,cAAI,KAAI;AACR,cAAI,MAAM,iBAAiB,CAAC;AAC5B,qBAAW;AAAA,QACrB,WAAmB,UAAU,eAAe;AAClC,sBAAY,QAAQ,iBAAiB,MAAO,WAAW;AAAA,QACxD;AAAA,MACF;AACD,UAAI,KAAK,mBAAmB,MAAM,YAAY,KAAK,cAAc;AAC/D,YAAI,kBAAkB,CAAC,QAAQ;AAC7B,cAAI,SAAS,WAAW,SAAS,OAAO;AAAA,QAClD,OAAe;AACL,eAAK,UAAU,WAAW,SAAS,SAAS,gBAAgB;AAC5D,cAAI,QAAQ;AACV,kBAAM,gBAAgB,UAAU,WAAW,OAAO,OAAO,IAAI;AAC7D,kBAAM,gBAAgB,UAAU,WAAW,OAAO,OAAO,IAAI;AAC7D,iBAAK,UAAU,OAAO,UAAU,eAAe,eAAe,gBAAgB;AAAA,UAC/E;AAAA,QACF;AAAA,MACF;AACD,YAAM,YAAY,WAAW,QAAQ,oBAAoB,UAAU,gBAAgB,QAAQ,oBAAoB,UAAU;AACzH,WAAK;AACL,UAAI,eAAe;AACjB,YAAI,QAAO;AAAA,MACZ;AAAA,IACF;AACD,QAAI,UAAU;AACZ,cAAQ,KAAK;AAAA,IACnB,OAAW;AACL,cAAQ,KAAK,IAAI;AAAA,IAClB;AACD,QAAI,QAAO;AACX,SAAK,QAAO;AACZ,WAAO;AAAA,EACR;AAAA,EACD,cAAc,QAAQ;AACpB,UAAM,MAAM,KAAK;AACjB,UAAM,UAAU,KAAK;AACrB,UAAM,OAAO,QAAQ;AACrB,UAAM,WAAW,QAAQ;AACzB,UAAM,gBAAgB,QAAQ;AAC9B,UAAM,aAAa,KAAK,WAAW,IAAI;AACvC,UAAM,cAAc,QAAQ;AAC5B,UAAM,cAAc,QAAQ;AAC5B,UAAM,aAAa,QAAQ,aAAa;AACxC,UAAM,aAAa,QAAQ,cAAc;AACzC,UAAM,eAAe,OAAO;AAC5B,UAAM,kBAAkB,QAAQ,sBAAsB,kBAAkB;AACxE,QAAI,GAAG,OAAO,OAAO;AACrB,QAAI,mBAAmB,aAAa,GAAG;AACrC;AAAA,IACD;AACD,SAAK,wBAAwB,CAAC,IAAI;AAClC,SAAK,6BAA6B;AAClC,QAAI,KAAI;AACR,QAAI,UAAU,GAAG,QAAQ,UAAU;AACnC,QAAI,UAAU,QAAQ,GAAG,QAAQ,CAAC;AAClC,QAAI,MAAM,YAAY,aAAa;AACnC,SAAK,IAAI,GAAG,IAAI,cAAc,EAAE,GAAG;AACjC,cAAQ,OAAO,CAAC;AAChB,UAAI,OAAO,UAAU,UAAU;AAC7B,wBAAgB,aAAa,QAAQ,WAAW;AAChD,aAAK,IAAI,UAAU,eAAe,CAAC;AACnC,gBAAQ,KAAK,gBAAgB;AAC7B;AAAA,MACD;AACD,YAAM,WAAW,MAAM,UAAU,cAAc,KAAK;AACpD,YAAM,eAAe,KAAK,qBAAqB,MAAM,cAAc;AACnE,UAAI,CAAC,cAAc;AACjB,aAAK,oBAAoB,MAAM,cAAc,qBAAqB;AAClE;AAAA,MACD;AACD,UAAI,KAAK,gBAAgB;AACvB,aAAK,kBAAkB;AACvB,aAAK,KAAI;AACT,YAAI,MAAM,UAAU,QAAQ;AAC5B,YAAI,UAAU,GAAG,UAAU;AAC3B,aAAK,oBAAoB,YAAY;AACrC,aAAK,QAAO;AAAA,MACb;AACD,YAAM,cAAc,KAAK,eAAe,CAAC,MAAM,OAAO,CAAC,GAAG,UAAU;AACpE,cAAQ,YAAY,CAAC,IAAI,WAAW;AACpC,UAAI,UAAU,OAAO,CAAC;AACtB,cAAQ,KAAK,QAAQ;AAAA,IACtB;AACD,QAAI,QAAO;AACX,SAAK,kBAAkB;AAAA,EACxB;AAAA,EACD,aAAa,QAAQ,QAAQ;AAAA,EAAE;AAAA,EAC/B,sBAAsB,QAAQ,QAAQ,KAAK,KAAK,KAAK,KAAK;AACxD,SAAK,IAAI,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,GAAG;AAC5C,SAAK,IAAI;AACT,SAAK,QAAO;AAAA,EACb;AAAA,EACD,kBAAkB,IAAI;AACpB,QAAI;AACJ,QAAI,GAAG,CAAC,MAAM,iBAAiB;AAC7B,YAAM,QAAQ,GAAG,CAAC;AAClB,YAAM,gBAAgB,KAAK,iBAAiB,oBAAoB,KAAK,GAAG;AACxE,YAAM,wBAAwB;AAAA,QAC5B,sBAAsB,SAAO,IAAI,gBAAe,KAAK,KAAK,YAAY,KAAK,MAAM,KAAK,eAAe,KAAK,eAAe;AAAA,UACvH,uBAAuB,KAAK;AAAA,UAC5B,oBAAoB,KAAK;AAAA,QACnC,CAAS;AAAA,MACT;AACM,gBAAU,IAAI,cAAc,IAAI,OAAO,KAAK,KAAK,uBAAuB,aAAa;AAAA,IAC3F,OAAW;AACL,gBAAU,KAAK,YAAY,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,IACxC;AACD,WAAO;AAAA,EACR;AAAA,EACD,kBAAkB;AAChB,SAAK,QAAQ,cAAc,KAAK,kBAAkB,SAAS;AAAA,EAC5D;AAAA,EACD,gBAAgB;AACd,SAAK,QAAQ,YAAY,KAAK,kBAAkB,SAAS;AACzD,SAAK,QAAQ,cAAc;AAAA,EAC5B;AAAA,EACD,kBAAkB,GAAG,GAAG,GAAG;AACzB,SAAK,IAAI,cAAc,KAAK,QAAQ,cAAc,KAAK,aAAa,GAAG,GAAG,CAAC;AAAA,EAC5E;AAAA,EACD,uBAAuB;AACrB,SAAK,IAAI,cAAc,KAAK,QAAQ,cAAc;AAAA,EACnD;AAAA,EACD,gBAAgB,GAAG,GAAG,GAAG;AACvB,SAAK,IAAI,YAAY,KAAK,QAAQ,YAAY,KAAK,aAAa,GAAG,GAAG,CAAC;AACvE,SAAK,QAAQ,cAAc;AAAA,EAC5B;AAAA,EACD,qBAAqB;AACnB,SAAK,IAAI,YAAY,KAAK,QAAQ,YAAY;AAC9C,SAAK,QAAQ,cAAc;AAAA,EAC5B;AAAA,EACD,YAAY,OAAO,SAAS,MAAM;AAChC,QAAI;AACJ,QAAI,KAAK,eAAe,IAAI,KAAK,GAAG;AAClC,gBAAU,KAAK,eAAe,IAAI,KAAK;AAAA,IAC7C,OAAW;AACL,gBAAU,kBAAkB,KAAK,UAAU,KAAK,CAAC;AACjD,WAAK,eAAe,IAAI,OAAO,OAAO;AAAA,IACvC;AACD,QAAI,QAAQ;AACV,cAAQ,SAAS;AAAA,IAClB;AACD,WAAO;AAAA,EACR;AAAA,EACD,YAAY,OAAO;AACjB,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACD;AACD,UAAM,MAAM,KAAK;AACjB,SAAK,KAAI;AACT,UAAM,UAAU,KAAK,YAAY,KAAK;AACtC,QAAI,YAAY,QAAQ,WAAW,KAAK,MAAM,2BAA2B,GAAG,GAAG,SAAS,OAAO;AAC/F,UAAM,MAAM,2BAA2B,GAAG;AAC1C,QAAI,KAAK;AACP,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACR,IAAU,IAAI;AACR,YAAM,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI,KAAK,2BAA2B,CAAC,GAAG,GAAG,OAAO,MAAM,GAAG,GAAG;AACnF,WAAK,IAAI,SAAS,IAAI,IAAI,KAAK,IAAI,KAAK,EAAE;AAAA,IAChD,OAAW;AACL,WAAK,IAAI,SAAS,OAAO,OAAO,MAAM,IAAI;AAAA,IAC3C;AACD,SAAK,QAAQ,KAAK,QAAQ,0BAA2B;AACrD,SAAK,QAAO;AAAA,EACb;AAAA,EACD,mBAAmB;AACjB,gBAAY,kCAAkC;AAAA,EAC/C;AAAA,EACD,iBAAiB;AACf,gBAAY,gCAAgC;AAAA,EAC7C;AAAA,EACD,sBAAsB,QAAQ,MAAM;AAClC,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACD;AACD,SAAK,KAAI;AACT,SAAK,mBAAmB,KAAK,KAAK,aAAa;AAC/C,QAAI,QAAQ;AACV,WAAK,UAAU,GAAG,MAAM;AAAA,IACzB;AACD,SAAK,gBAAgB,oBAAoB,KAAK,GAAG;AACjD,QAAI,MAAM;AACR,YAAM,QAAQ,KAAK,CAAC,IAAI,KAAK,CAAC;AAC9B,YAAM,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC;AAC/B,WAAK,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,MAAM;AAC7C,WAAK,QAAQ,iBAAiB,oBAAoB,KAAK,GAAG,GAAG,IAAI;AACjE,WAAK,KAAI;AACT,WAAK,QAAO;AAAA,IACb;AAAA,EACF;AAAA,EACD,sBAAsB;AACpB,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACD;AACD,SAAK,QAAO;AACZ,SAAK,gBAAgB,KAAK,mBAAmB,IAAG;AAAA,EACjD;AAAA,EACD,WAAW,OAAO;AAChB,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACD;AACD,SAAK,KAAI;AACT,QAAI,KAAK,aAAa;AACpB,WAAK,aAAY;AACjB,WAAK,QAAQ,cAAc;AAAA,IAC5B;AACD,UAAM,aAAa,KAAK;AACxB,QAAI,CAAC,MAAM,UAAU;AACnB,WAAK,oCAAoC;AAAA,IAC1C;AACD,QAAI,MAAM,UAAU;AAClB,WAAK,gCAAgC;AAAA,IACtC;AACD,UAAM,mBAAmB,oBAAoB,UAAU;AACvD,QAAI,MAAM,QAAQ;AAChB,iBAAW,UAAU,GAAG,MAAM,MAAM;AAAA,IACrC;AACD,QAAI,CAAC,MAAM,MAAM;AACf,YAAM,IAAI,MAAM,2BAA2B;AAAA,IAC5C;AACD,QAAI,SAAS,KAAK,2BAA2B,MAAM,MAAM,oBAAoB,UAAU,CAAC;AACxF,UAAM,eAAe,CAAC,GAAG,GAAG,WAAW,OAAO,OAAO,WAAW,OAAO,MAAM;AAC7E,aAAS,KAAK,UAAU,QAAQ,YAAY,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;AAC5D,UAAM,UAAU,KAAK,MAAM,OAAO,CAAC,CAAC;AACpC,UAAM,UAAU,KAAK,MAAM,OAAO,CAAC,CAAC;AACpC,UAAM,aAAa,KAAK,IAAI,KAAK,KAAK,OAAO,CAAC,CAAC,IAAI,SAAS,CAAC;AAC7D,UAAM,cAAc,KAAK,IAAI,KAAK,KAAK,OAAO,CAAC,CAAC,IAAI,SAAS,CAAC;AAC9D,SAAK,QAAQ,uBAAuB,CAAC,GAAG,GAAG,YAAY,WAAW,CAAC;AACnE,QAAI,UAAU,YAAY,KAAK;AAC/B,QAAI,MAAM,OAAO;AACf,iBAAW,YAAY,KAAK,iBAAiB;AAAA,IAC9C;AACD,UAAM,gBAAgB,KAAK,eAAe,UAAU,SAAS,YAAY,WAAW;AACpF,UAAM,WAAW,cAAc;AAC/B,aAAS,UAAU,CAAC,SAAS,CAAC,OAAO;AACrC,aAAS,UAAU,GAAG,gBAAgB;AACtC,QAAI,MAAM,OAAO;AACf,WAAK,WAAW,KAAK;AAAA,QACnB,QAAQ,cAAc;AAAA,QACtB,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA,SAAS,MAAM,MAAM;AAAA,QACrB,UAAU,MAAM,MAAM;AAAA,QACtB,aAAa,MAAM,MAAM,eAAe;AAAA,QACxC,uBAAuB;AAAA,MAC/B,CAAO;AAAA,IACP,OAAW;AACL,iBAAW,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxC,iBAAW,UAAU,SAAS,OAAO;AACrC,iBAAW,KAAI;AAAA,IAChB;AACD,iBAAa,YAAY,QAAQ;AACjC,SAAK,MAAM;AACX,SAAK,UAAU,CAAC,CAAC,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5D,SAAK,WAAW,KAAK,UAAU;AAC/B,SAAK;AAAA,EACN;AAAA,EACD,SAAS,OAAO;AACd,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACD;AACD,SAAK;AACL,UAAM,WAAW,KAAK;AACtB,UAAM,MAAM,KAAK,WAAW,IAAG;AAC/B,SAAK,MAAM;AACX,SAAK,IAAI,wBAAwB;AACjC,QAAI,MAAM,OAAO;AACf,WAAK,YAAY,KAAK,WAAW,IAAG;AACpC,WAAK,QAAO;AAAA,IAClB,OAAW;AACL,WAAK,IAAI;AACT,YAAM,aAAa,oBAAoB,KAAK,GAAG;AAC/C,WAAK,QAAO;AACZ,WAAK,IAAI;AACT,WAAK,IAAI,aAAa,GAAG,UAAU;AACnC,YAAM,WAAW,KAAK,2BAA2B,CAAC,GAAG,GAAG,SAAS,OAAO,OAAO,SAAS,OAAO,MAAM,GAAG,UAAU;AAClH,WAAK,IAAI,UAAU,SAAS,QAAQ,GAAG,CAAC;AACxC,WAAK,IAAI;AACT,WAAK,QAAQ,QAAQ;AAAA,IACtB;AAAA,EACF;AAAA,EACD,gBAAgB,IAAI,MAAM,WAAW,QAAQ,cAAc;AACzD,0BAAK,8CAAL;AACA,sBAAkB,KAAK,GAAG;AAC1B,SAAK,IAAI;AACT,SAAK,KAAI;AACT,QAAI,KAAK,eAAe;AACtB,WAAK,IAAI,aAAa,GAAG,KAAK,aAAa;AAAA,IAC5C;AACD,QAAI,MAAM;AACR,YAAM,QAAQ,KAAK,CAAC,IAAI,KAAK,CAAC;AAC9B,YAAM,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC;AAC/B,UAAI,gBAAgB,KAAK,qBAAqB;AAC5C,oBAAY,UAAU;AACtB,kBAAU,CAAC,KAAK,KAAK,CAAC;AACtB,kBAAU,CAAC,KAAK,KAAK,CAAC;AACtB,eAAO,KAAK;AACZ,aAAK,CAAC,IAAI,KAAK,CAAC,IAAI;AACpB,aAAK,CAAC,IAAI;AACV,aAAK,CAAC,IAAI;AACV,cAAM,CAAC,QAAQ,MAAM,IAAI,KAAK,8BAA8B,oBAAoB,KAAK,GAAG,CAAC;AACzF,cAAM;AAAA,UACJ;AAAA,QACD,IAAG;AACJ,cAAM,cAAc,KAAK,KAAK,QAAQ,KAAK,eAAe,aAAa;AACvE,cAAM,eAAe,KAAK,KAAK,SAAS,KAAK,eAAe,aAAa;AACzE,aAAK,mBAAmB,KAAK,cAAc,OAAO,aAAa,YAAY;AAC3E,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,QACV,IAAY,KAAK;AACT,aAAK,oBAAoB,IAAI,IAAI,MAAM;AACvC,aAAK,iBAAiB,WAAW,KAAK;AACtC,aAAK,MAAM;AACX,aAAK,IAAI;AACT,aAAK,IAAI,aAAa,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,SAAS,MAAM;AAC/D,0BAAkB,KAAK,GAAG;AAAA,MAClC,OAAa;AACL,0BAAkB,KAAK,GAAG;AAC1B,aAAK,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,MAAM;AAC7C,aAAK,IAAI;AACT,aAAK,QAAO;AAAA,MACb;AAAA,IACF;AACD,SAAK,UAAU,IAAI,iBAAiB,KAAK,IAAI,OAAO,OAAO,KAAK,IAAI,OAAO,MAAM;AACjF,SAAK,UAAU,GAAG,SAAS;AAC3B,SAAK,UAAU,GAAG,MAAM;AAAA,EACzB;AAAA,EACD,gBAAgB;AACd,QAAI,KAAK,kBAAkB;AACzB,WAAK,IAAI;AACT,4BAAK,4BAAL;AACA,WAAK,MAAM,KAAK,iBAAiB;AACjC,aAAO,KAAK,iBAAiB;AAC7B,aAAO,KAAK;AAAA,IACb;AAAA,EACF;AAAA,EACD,sBAAsB,KAAK;AACzB,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACD;AACD,UAAM,QAAQ,IAAI;AAClB,UAAM,KAAK,UAAU,IAAI,MAAM,GAAG;AAClC,QAAI,QAAQ;AACZ,UAAM,MAAM,KAAK;AACjB,UAAM,QAAQ,KAAK;AACnB,QAAI,OAAO;AACT,UAAI,MAAM,aAAa,QAAW;AAChC,cAAM,WAAW,kBAAkB,GAAG;AAAA,MACvC;AACD,UAAI,MAAM,UAAU;AAClB,cAAM,SAAS,GAAG;AAClB;AAAA,MACD;AAAA,IACF;AACD,UAAM,OAAO,KAAK,kBAAkB,GAAG;AACvC,UAAM,aAAa,KAAK;AACxB,QAAI,KAAI;AACR,QAAI,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACjC,QAAI,UAAU,YAAY,KAAK,SAAS,KAAK,OAAO;AACpD,QAAI,QAAO;AACX,SAAK,QAAO;AAAA,EACb;AAAA,EACD,4BAA4B,KAAK,QAAQ,QAAQ,GAAG,QAAQ,GAAG,QAAQ,WAAW;AAChF,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACD;AACD,UAAM,KAAK,UAAU,IAAI,MAAM,GAAG;AAClC,UAAM,MAAM,KAAK;AACjB,QAAI,KAAI;AACR,UAAM,mBAAmB,oBAAoB,GAAG;AAChD,QAAI,UAAU,QAAQ,OAAO,OAAO,QAAQ,GAAG,CAAC;AAChD,UAAM,OAAO,KAAK,kBAAkB,GAAG;AACvC,QAAI,aAAa,GAAG,GAAG,GAAG,GAAG,KAAK,UAAU,iBAAiB,CAAC,GAAG,KAAK,UAAU,iBAAiB,CAAC,CAAC;AACnG,aAAS,IAAI,GAAG,KAAK,UAAU,QAAQ,IAAI,IAAI,KAAK,GAAG;AACrD,YAAM,QAAQ,KAAK,UAAU,kBAAkB,CAAC,QAAQ,OAAO,OAAO,QAAQ,UAAU,CAAC,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC;AAC7G,YAAM,CAAC,GAAG,CAAC,IAAI,KAAK,eAAe,CAAC,GAAG,CAAC,GAAG,KAAK;AAChD,UAAI,UAAU,KAAK,QAAQ,GAAG,CAAC;AAAA,IAChC;AACD,QAAI,QAAO;AACX,SAAK,QAAO;AAAA,EACb;AAAA,EACD,2BAA2B,QAAQ;AACjC,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACD;AACD,UAAM,MAAM,KAAK;AACjB,UAAM,YAAY,KAAK,QAAQ;AAC/B,UAAM,gBAAgB,KAAK,QAAQ;AACnC,eAAW,SAAS,QAAQ;AAC1B,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,IAAG;AACJ,YAAM,aAAa,KAAK,eAAe,UAAU,cAAc,OAAO,MAAM;AAC5E,YAAM,UAAU,WAAW;AAC3B,cAAQ,KAAI;AACZ,YAAM,MAAM,KAAK,UAAU,MAAM,KAAK;AACtC,yBAAmB,SAAS,GAAG;AAC/B,cAAQ,2BAA2B;AACnC,cAAQ,YAAY,gBAAgB,UAAU,WAAW,SAAS,MAAM,2BAA2B,GAAG,GAAG,SAAS,IAAI,IAAI;AAC1H,cAAQ,SAAS,GAAG,GAAG,OAAO,MAAM;AACpC,cAAQ,QAAO;AACf,UAAI,KAAI;AACR,UAAI,UAAU,GAAG,SAAS;AAC1B,UAAI,MAAM,GAAG,EAAE;AACf,+BAAyB,KAAK,WAAW,QAAQ,GAAG,GAAG,OAAO,QAAQ,GAAG,IAAI,GAAG,CAAC;AACjF,UAAI,QAAO;AAAA,IACZ;AACD,SAAK,QAAO;AAAA,EACb;AAAA,EACD,kBAAkB,OAAO;AACvB,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACD;AACD,UAAM,UAAU,KAAK,UAAU,KAAK;AACpC,QAAI,CAAC,SAAS;AACZ,WAAK,iCAAiC;AACtC;AAAA,IACD;AACD,SAAK,wBAAwB,OAAO;AAAA,EACrC;AAAA,EACD,wBAAwB,OAAO,QAAQ,QAAQ,WAAW;AACxD,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACD;AACD,UAAM,UAAU,KAAK,UAAU,KAAK;AACpC,QAAI,CAAC,SAAS;AACZ,WAAK,iCAAiC;AACtC;AAAA,IACD;AACD,UAAM,QAAQ,QAAQ;AACtB,UAAM,SAAS,QAAQ;AACvB,UAAM,MAAM;AACZ,aAAS,IAAI,GAAG,KAAK,UAAU,QAAQ,IAAI,IAAI,KAAK,GAAG;AACrD,UAAI,KAAK;AAAA,QACP,WAAW,CAAC,QAAQ,GAAG,GAAG,QAAQ,UAAU,CAAC,GAAG,UAAU,IAAI,CAAC,CAAC;AAAA,QAChE,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,MACX,CAAO;AAAA,IACF;AACD,SAAK,6BAA6B,SAAS,GAAG;AAAA,EAC/C;AAAA,EACD,0BAA0B,KAAK;AAC7B,QAAI,KAAK,QAAQ,iBAAiB,QAAQ;AACxC,UAAI,SAAS,KAAK,QAAQ;AAC1B,UAAI,UAAU,IAAI,QAAQ,GAAG,CAAC;AAC9B,UAAI,SAAS;AAAA,IACd;AACD,WAAO,IAAI;AAAA,EACZ;AAAA,EACD,0BAA0B,SAAS;AACjC,QAAI,KAAK,QAAQ,iBAAiB,QAAQ;AACxC,aAAO,QAAQ;AAAA,IAChB;AACD,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAG;AACJ,UAAM,YAAY,KAAK,eAAe,UAAU,eAAe,OAAO,MAAM;AAC5E,UAAM,SAAS,UAAU;AACzB,WAAO,SAAS,KAAK,QAAQ;AAC7B,WAAO,UAAU,QAAQ,GAAG,CAAC;AAC7B,WAAO,SAAS;AAChB,WAAO,UAAU;AAAA,EAClB;AAAA,EACD,wBAAwB,SAAS;AAC/B,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACD;AACD,UAAM,QAAQ,QAAQ;AACtB,UAAM,SAAS,QAAQ;AACvB,UAAM,MAAM,KAAK;AACjB,SAAK,KAAI;AACT,QAAI,CAAC,UAAU;AACb,YAAM;AAAA,QACJ;AAAA,MACD,IAAG;AACJ,UAAI,WAAW,UAAU,WAAW,IAAI;AACtC,YAAI,SAAS;AAAA,MACd;AAAA,IACF;AACD,QAAI,MAAM,IAAI,OAAO,KAAK,MAAM;AAChC,QAAI;AACJ,QAAI,QAAQ,QAAQ;AAClB,mBAAa,KAAK,0BAA0B,OAAO;AAAA,IACzD,WAAe,OAAO,gBAAgB,cAAc,mBAAmB,eAAe,CAAC,QAAQ,MAAM;AAC/F,mBAAa;AAAA,IACnB,OAAW;AACL,YAAM,YAAY,KAAK,eAAe,UAAU,eAAe,OAAO,MAAM;AAC5E,YAAM,SAAS,UAAU;AACzB,yBAAmB,QAAQ,OAAO;AAClC,mBAAa,KAAK,0BAA0B,MAAM;AAAA,IACnD;AACD,UAAM,SAAS,KAAK,YAAY,YAAY,2BAA2B,GAAG,CAAC;AAC3E,QAAI,wBAAwB,yBAAyB,oBAAoB,GAAG,GAAG,QAAQ,WAAW;AAClG,6BAAyB,KAAK,OAAO,KAAK,GAAG,GAAG,OAAO,YAAY,OAAO,aAAa,GAAG,CAAC,QAAQ,OAAO,MAAM;AAChH,SAAK,QAAO;AACZ,SAAK,QAAO;AAAA,EACb;AAAA,EACD,6BAA6B,SAAS,KAAK;AACzC,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACD;AACD,UAAM,MAAM,KAAK;AACjB,QAAI;AACJ,QAAI,QAAQ,QAAQ;AAClB,mBAAa,QAAQ;AAAA,IAC3B,OAAW;AACL,YAAM,IAAI,QAAQ;AAClB,YAAM,IAAI,QAAQ;AAClB,YAAM,YAAY,KAAK,eAAe,UAAU,eAAe,GAAG,CAAC;AACnE,YAAM,SAAS,UAAU;AACzB,yBAAmB,QAAQ,OAAO;AAClC,mBAAa,KAAK,0BAA0B,MAAM;AAAA,IACnD;AACD,eAAW,SAAS,KAAK;AACvB,UAAI,KAAI;AACR,UAAI,UAAU,GAAG,MAAM,SAAS;AAChC,UAAI,MAAM,GAAG,EAAE;AACf,+BAAyB,KAAK,YAAY,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;AACzF,UAAI,QAAO;AAAA,IACZ;AACD,SAAK,QAAO;AAAA,EACb;AAAA,EACD,2BAA2B;AACzB,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACD;AACD,SAAK,IAAI,SAAS,GAAG,GAAG,GAAG,CAAC;AAC5B,SAAK,QAAO;AAAA,EACb;AAAA,EACD,UAAU,KAAK;AAAA,EAAE;AAAA,EACjB,eAAe,KAAK,YAAY;AAAA,EAAE;AAAA,EAClC,mBAAmB,KAAK;AACtB,SAAK,mBAAmB,KAAK;AAAA,MAC3B,SAAS;AAAA,IACf,CAAK;AAAA,EACF;AAAA,EACD,wBAAwB,KAAK,YAAY;AACvC,QAAI,QAAQ,MAAM;AAChB,WAAK,mBAAmB,KAAK;AAAA,QAC3B,SAAS,KAAK,sBAAsB,UAAU,UAAU;AAAA,MAChE,CAAO;AAAA,IACP,OAAW;AACL,WAAK,mBAAmB,KAAK;AAAA,QAC3B,SAAS;AAAA,MACjB,CAAO;AAAA,IACF;AACD,SAAK,iBAAiB,KAAK;EAC5B;AAAA,EACD,mBAAmB;AACjB,SAAK,mBAAmB;AACxB,SAAK,iBAAiB,KAAK;EAC5B;AAAA,EACD,cAAc;AAAA,EAAE;AAAA,EAChB,YAAY;AAAA,EAAE;AAAA,EACd,YAAY,SAAS;AACnB,UAAM,UAAU,KAAK,QAAQ,YAAW;AACxC,QAAI,KAAK,aAAa;AACpB,WAAK,QAAQ;IACd;AACD,QAAI,CAAC,KAAK,aAAa;AACrB,WAAK,QAAQ,OAAO;AAAA,IACrB;AACD,UAAM,MAAM,KAAK;AACjB,QAAI,KAAK,aAAa;AACpB,UAAI,CAAC,SAAS;AACZ,YAAI,KAAK,gBAAgB,SAAS;AAChC,cAAI,KAAK,SAAS;AAAA,QAC5B,OAAe;AACL,cAAI,KAAI;AAAA,QACT;AAAA,MACF;AACD,WAAK,cAAc;AAAA,IACpB;AACD,SAAK,QAAQ,uBAAuB,KAAK,QAAQ,OAAO;AACxD,QAAI,UAAS;AAAA,EACd;AAAA,EACD,sBAAsB;AACpB,QAAI,CAAC,KAAK,4BAA4B;AACpC,YAAM,IAAI,oBAAoB,KAAK,GAAG;AACtC,UAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,GAAG;AAC5B,aAAK,6BAA6B,IAAI,KAAK,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;AAAA,MACrF,OAAa;AACL,cAAM,SAAS,KAAK,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AACjD,cAAM,QAAQ,KAAK,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnC,cAAM,QAAQ,KAAK,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnC,aAAK,6BAA6B,KAAK,IAAI,OAAO,KAAK,IAAI;AAAA,MAC5D;AAAA,IACF;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,sBAAsB;AACpB,QAAI,KAAK,wBAAwB,CAAC,MAAM,IAAI;AAC1C,YAAM;AAAA,QACJ;AAAA,MACR,IAAU,KAAK;AACT,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACR,IAAU,KAAK,IAAI;AACb,UAAI,QAAQ;AACZ,UAAI,MAAM,KAAK,MAAM,GAAG;AACtB,cAAM,QAAQ,KAAK,IAAI,CAAC;AACxB,cAAM,QAAQ,KAAK,IAAI,CAAC;AACxB,YAAI,UAAU,OAAO;AACnB,cAAI,cAAc,GAAG;AACnB,qBAAS,SAAS,IAAI;AAAA,UAClC,OAAiB;AACL,kBAAM,kBAAkB,QAAQ;AAChC,qBAAS,SAAS,kBAAkB,IAAI,IAAI,kBAAkB;AAAA,UAC/D;AAAA,QACX,WAAmB,cAAc,GAAG;AAC1B,mBAAS,IAAI;AACb,mBAAS,IAAI;AAAA,QACvB,OAAe;AACL,gBAAM,mBAAmB,QAAQ;AACjC,gBAAM,mBAAmB,QAAQ;AACjC,mBAAS,mBAAmB,IAAI,IAAI,mBAAmB;AACvD,mBAAS,mBAAmB,IAAI,IAAI,mBAAmB;AAAA,QACxD;AAAA,MACT,OAAa;AACL,cAAM,SAAS,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC;AACrC,cAAM,QAAQ,KAAK,MAAM,GAAG,CAAC;AAC7B,cAAM,QAAQ,KAAK,MAAM,GAAG,CAAC;AAC7B,YAAI,cAAc,GAAG;AACnB,mBAAS,QAAQ;AACjB,mBAAS,QAAQ;AAAA,QAC3B,OAAe;AACL,gBAAM,WAAW,YAAY;AAC7B,mBAAS,QAAQ,WAAW,QAAQ,WAAW;AAC/C,mBAAS,QAAQ,WAAW,QAAQ,WAAW;AAAA,QAChD;AAAA,MACF;AACD,WAAK,wBAAwB,CAAC,IAAI;AAClC,WAAK,wBAAwB,CAAC,IAAI;AAAA,IACnC;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,iBAAiB,aAAa;AAC5B,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,KAAK;AACT,UAAM,CAAC,QAAQ,MAAM,IAAI,KAAK,oBAAmB;AACjD,QAAI,YAAY,aAAa;AAC7B,QAAI,WAAW,KAAK,WAAW,GAAG;AAChC,UAAI,OAAM;AACV;AAAA,IACD;AACD,UAAM,SAAS,IAAI;AACnB,QAAI,aAAa;AACf,UAAI,KAAI;AAAA,IACT;AACD,QAAI,MAAM,QAAQ,MAAM;AACxB,QAAI,OAAO,SAAS,GAAG;AACrB,YAAM,QAAQ,KAAK,IAAI,QAAQ,MAAM;AACrC,UAAI,YAAY,OAAO,IAAI,OAAK,IAAI,KAAK,CAAC;AAC1C,UAAI,kBAAkB;AAAA,IACvB;AACD,QAAI,OAAM;AACV,QAAI,aAAa;AACf,UAAI,QAAO;AAAA,IACZ;AAAA,EACF;AAAA,EACD,mBAAmB;AACjB,aAAS,IAAI,KAAK,mBAAmB,SAAS,GAAG,KAAK,GAAG,KAAK;AAC5D,UAAI,CAAC,KAAK,mBAAmB,CAAC,EAAE,SAAS;AACvC,eAAO;AAAA,MACR;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACH;AAt8CE;AAAA,yBAAoB,WAAG;AACrB,SAAO,KAAK,WAAW,UAAU,KAAK,aAAa;AACjD,SAAK,QAAO;AAAA,EACb;AACD,OAAK,QAAQ,cAAc;AAC3B,OAAK,IAAI;AACT,MAAI,KAAK,mBAAmB;AAC1B,SAAK,MAAM,KAAK;AAChB,SAAK,IAAI;AACT,SAAK,IAAI,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACtC,SAAK,IAAI,UAAU,KAAK,mBAAmB,GAAG,CAAC;AAC/C,SAAK,IAAI;AACT,SAAK,oBAAoB;AAAA,EAC1B;AACF;AAgBD;AAAA,gBAAW,WAAG;AACZ,MAAI,KAAK,YAAY;AACnB,UAAM,cAAc,KAAK,cAAc,aAAa,KAAK,WAAW,YAAY,KAAK,WAAW,UAAU;AAC1G,QAAI,gBAAgB,QAAQ;AAC1B,YAAM,cAAc,KAAK,IAAI;AAC7B,WAAK,IAAI,SAAS;AAClB,WAAK,IAAI,UAAU,KAAK,IAAI,QAAQ,GAAG,CAAC;AACxC,WAAK,IAAI,SAAS;AAAA,IACnB;AAAA,EACF;AACF;AAhKH,IAAM,iBAAN;AA+jDA,WAAW,MAAM,KAAK;AACpB,MAAI,eAAe,UAAU,EAAE,MAAM,QAAW;AAC9C,mBAAe,UAAU,IAAI,EAAE,CAAC,IAAI,eAAe,UAAU,EAAE;AAAA,EAChE;AACH;AAGA,MAAM,oBAAoB;AAAA,EAGxB,WAAW,aAAa;AACtB,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,WAAW,WAAW,KAAK;AACzB,QAAI,EAAE,OAAO,WAAW,eAAe,eAAe,WAAW,QAAQ,MAAM;AAC7E,YAAM,IAAI,MAAM,4BAA4B;AAAA,IAC7C;AACD,uBAAK,OAAQ;AAAA,EACd;AAAA,EACD,WAAW,YAAY;AACrB,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,WAAW,UAAU,KAAK;AACxB,QAAI,OAAO,QAAQ,UAAU;AAC3B,YAAM,IAAI,MAAM,2BAA2B;AAAA,IAC5C;AACD,uBAAK,MAAO;AAAA,EACb;AACH;AApBS;AACA;AADP,aADI,qBACG,OAAQ;AACf,aAFI,qBAEG,MAAO;AAuBhB,MAAM,eAAe;AAAA,EACnB,SAAS;AAAA,EACT,MAAM;AAAA,EACN,OAAO;AACT;AACA,MAAM,aAAa;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,OAAO;AAAA,EACP,SAAS;AAAA,EACT,OAAO;AAAA,EACP,MAAM;AAAA,EACN,eAAe;AAAA,EACf,gBAAgB;AAClB;AACA,SAAS,WAAW,QAAQ;AAC1B,MAAI,EAAE,kBAAkB,SAAS,OAAO,WAAW,YAAY,WAAW,OAAO;AAC/E,gBAAY,gEAAgE;AAAA,EAC7E;AACD,UAAQ,OAAO,MAAI;AAAA,IACjB,KAAK;AACH,aAAO,IAAI,eAAe,OAAO,OAAO;AAAA,IAC1C,KAAK;AACH,aAAO,IAAI,oBAAoB,OAAO,OAAO;AAAA,IAC/C,KAAK;AACH,aAAO,IAAI,kBAAkB,OAAO,SAAS,OAAO,IAAI;AAAA,IAC1D,KAAK;AACH,aAAO,IAAI,4BAA4B,OAAO,SAAS,OAAO,MAAM;AAAA,IACtE,KAAK;AACH,aAAO,IAAI,sBAAsB,OAAO,SAAS,OAAO,OAAO;AAAA,IACjE;AACE,aAAO,IAAI,sBAAsB,OAAO,SAAS,OAAO,SAAQ,CAAE;AAAA,EACrE;AACH;AACA,MAAM,eAAe;AAAA,EACnB,YAAY,YAAY,YAAY,QAAQ;AA4J5C;AAmFA;AAqHA,uBAAM;AAnWJ,SAAK,aAAa;AAClB,SAAK,aAAa;AAClB,SAAK,SAAS;AACd,SAAK,aAAa;AAClB,SAAK,WAAW;AAChB,SAAK,cAAc,uBAAO,OAAO,IAAI;AACrC,SAAK,oBAAoB,uBAAO,OAAO,IAAI;AAC3C,SAAK,uBAAuB,uBAAO,OAAO,IAAI;AAC9C,SAAK,gBAAgB,uBAAO,OAAO,IAAI;AACvC,SAAK,qBAAqB,WAAS;AACjC,YAAM,OAAO,MAAM;AACnB,UAAI,KAAK,eAAe,KAAK,YAAY;AACvC;AAAA,MACD;AACD,UAAI,KAAK,QAAQ;AACf,8BAAK,gDAAL,WAA2B;AAC3B;AAAA,MACD;AACD,UAAI,KAAK,UAAU;AACjB,cAAM,aAAa,KAAK;AACxB,cAAM,aAAa,KAAK,qBAAqB,UAAU;AACvD,YAAI,CAAC,YAAY;AACf,gBAAM,IAAI,MAAM,2BAA2B,UAAU,EAAE;AAAA,QACxD;AACD,eAAO,KAAK,qBAAqB,UAAU;AAC3C,YAAI,KAAK,aAAa,aAAa,MAAM;AACvC,qBAAW,QAAQ,KAAK,IAAI;AAAA,QAC7B,WAAU,KAAK,aAAa,aAAa,OAAO;AAC/C,qBAAW,OAAO,WAAW,KAAK,MAAM,CAAC;AAAA,QACnD,OAAe;AACL,gBAAM,IAAI,MAAM,0BAA0B;AAAA,QAC3C;AACD;AAAA,MACD;AACD,YAAM,SAAS,KAAK,cAAc,KAAK,MAAM;AAC7C,UAAI,CAAC,QAAQ;AACX,cAAM,IAAI,MAAM,+BAA+B,KAAK,MAAM,EAAE;AAAA,MAC7D;AACD,UAAI,KAAK,YAAY;AACnB,cAAM,eAAe,KAAK;AAC1B,cAAM,eAAe,KAAK;AAC1B,YAAI,QAAQ,SAAU,SAAS;AAC7B,kBAAQ,OAAO,KAAK,IAAI,CAAC;AAAA,QACnC,CAAS,EAAE,KAAK,SAAU,QAAQ;AACxB,iBAAO,YAAY;AAAA,YACjB,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,UAAU,aAAa;AAAA,YACvB,YAAY,KAAK;AAAA,YACjB,MAAM;AAAA,UAClB,CAAW;AAAA,QACF,GAAE,SAAU,QAAQ;AACnB,iBAAO,YAAY;AAAA,YACjB,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,UAAU,aAAa;AAAA,YACvB,YAAY,KAAK;AAAA,YACjB,QAAQ,WAAW,MAAM;AAAA,UACrC,CAAW;AAAA,QACX,CAAS;AACD;AAAA,MACD;AACD,UAAI,KAAK,UAAU;AACjB,8BAAK,wCAAL,WAAuB;AACvB;AAAA,MACD;AACD,aAAO,KAAK,IAAI;AAAA,IACtB;AACI,WAAO,iBAAiB,WAAW,KAAK,kBAAkB;AAAA,EAC3D;AAAA,EACD,GAAG,YAAY,SAAS;AACtB,UAAM,KAAK,KAAK;AAChB,QAAI,GAAG,UAAU,GAAG;AAClB,YAAM,IAAI,MAAM,0CAA0C,UAAU,GAAG;AAAA,IACxE;AACD,OAAG,UAAU,IAAI;AAAA,EAClB;AAAA,EACD,KAAK,YAAY,MAAM,WAAW;AAChC,SAAK,OAAO,YAAY;AAAA,MACtB,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,MACjB,QAAQ;AAAA,MACR;AAAA,IACD,GAAE,SAAS;AAAA,EACb;AAAA,EACD,gBAAgB,YAAY,MAAM,WAAW;AAC3C,UAAM,aAAa,KAAK;AACxB,UAAM,aAAa,QAAQ;AAC3B,SAAK,qBAAqB,UAAU,IAAI;AACxC,QAAI;AACF,WAAK,OAAO,YAAY;AAAA,QACtB,YAAY,KAAK;AAAA,QACjB,YAAY,KAAK;AAAA,QACjB,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,MACD,GAAE,SAAS;AAAA,IACb,SAAQ,IAAI;AACX,iBAAW,OAAO,EAAE;AAAA,IACrB;AACD,WAAO,WAAW;AAAA,EACnB;AAAA,EACD,eAAe,YAAY,MAAM,kBAAkB,WAAW;AAC5D,UAAM,WAAW,KAAK,YACpB,aAAa,KAAK,YAClB,aAAa,KAAK,YAClB,SAAS,KAAK;AAChB,WAAO,IAAI,eAAe;AAAA,MACxB,OAAO,gBAAc;AACnB,cAAM,kBAAkB,QAAQ;AAChC,aAAK,kBAAkB,QAAQ,IAAI;AAAA,UACjC;AAAA,UACA,WAAW;AAAA,UACX,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,UAAU;AAAA,QACpB;AACQ,eAAO,YAAY;AAAA,UACjB;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA,aAAa,WAAW;AAAA,QACzB,GAAE,SAAS;AACZ,eAAO,gBAAgB;AAAA,MACxB;AAAA,MACD,MAAM,gBAAc;AAClB,cAAM,iBAAiB,QAAQ;AAC/B,aAAK,kBAAkB,QAAQ,EAAE,WAAW;AAC5C,eAAO,YAAY;AAAA,UACjB;AAAA,UACA;AAAA,UACA,QAAQ,WAAW;AAAA,UACnB;AAAA,UACA,aAAa,WAAW;AAAA,QAClC,CAAS;AACD,eAAO,eAAe;AAAA,MACvB;AAAA,MACD,QAAQ,YAAU;AAChB,eAAO,kBAAkB,OAAO,iCAAiC;AACjE,cAAM,mBAAmB,QAAQ;AACjC,aAAK,kBAAkB,QAAQ,EAAE,aAAa;AAC9C,aAAK,kBAAkB,QAAQ,EAAE,WAAW;AAC5C,eAAO,YAAY;AAAA,UACjB;AAAA,UACA;AAAA,UACA,QAAQ,WAAW;AAAA,UACnB;AAAA,UACA,QAAQ,WAAW,MAAM;AAAA,QACnC,CAAS;AACD,eAAO,iBAAiB;AAAA,MACzB;AAAA,IACF,GAAE,gBAAgB;AAAA,EACpB;AAAA,EA6MD,UAAU;AACR,SAAK,OAAO,oBAAoB,WAAW,KAAK,kBAAkB;AAAA,EACnE;AACH;AA/ME;AAAA,sBAAiB,SAAC,MAAM;AACtB,QAAM,WAAW,KAAK,UACpB,aAAa,KAAK,YAClB,aAAa,KAAK,YAClB,SAAS,KAAK;AAChB,QAAM,OAAO,MACX,SAAS,KAAK,cAAc,KAAK,MAAM;AACzC,QAAM,aAAa;AAAA,IACjB,QAAQ,OAAO,OAAO,GAAG,WAAW;AAClC,UAAI,KAAK,aAAa;AACpB;AAAA,MACD;AACD,YAAM,kBAAkB,KAAK;AAC7B,WAAK,eAAe;AACpB,UAAI,kBAAkB,KAAK,KAAK,eAAe,GAAG;AAChD,aAAK,iBAAiB,QAAQ;AAC9B,aAAK,QAAQ,KAAK,eAAe;AAAA,MAClC;AACD,aAAO,YAAY;AAAA,QACjB;AAAA,QACA;AAAA,QACA,QAAQ,WAAW;AAAA,QACnB;AAAA,QACA;AAAA,MACD,GAAE,SAAS;AAAA,IACb;AAAA,IACD,QAAQ;AACN,UAAI,KAAK,aAAa;AACpB;AAAA,MACD;AACD,WAAK,cAAc;AACnB,aAAO,YAAY;AAAA,QACjB;AAAA,QACA;AAAA,QACA,QAAQ,WAAW;AAAA,QACnB;AAAA,MACV,CAAS;AACD,aAAO,KAAK,YAAY,QAAQ;AAAA,IACjC;AAAA,IACD,MAAM,QAAQ;AACZ,aAAO,kBAAkB,OAAO,gCAAgC;AAChE,UAAI,KAAK,aAAa;AACpB;AAAA,MACD;AACD,WAAK,cAAc;AACnB,aAAO,YAAY;AAAA,QACjB;AAAA,QACA;AAAA,QACA,QAAQ,WAAW;AAAA,QACnB;AAAA,QACA,QAAQ,WAAW,MAAM;AAAA,MACnC,CAAS;AAAA,IACF;AAAA,IACD,gBAAgB,QAAQ,cAAe;AAAA,IACvC,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,aAAa;AAAA,IACb,aAAa,KAAK;AAAA,IAClB,OAAO;AAAA,EACb;AACI,aAAW,eAAe;AAC1B,aAAW,QAAQ,WAAW,eAAe;AAC7C,OAAK,YAAY,QAAQ,IAAI;AAC7B,MAAI,QAAQ,SAAU,SAAS;AAC7B,YAAQ,OAAO,KAAK,MAAM,UAAU,CAAC;AAAA,EAC3C,CAAK,EAAE,KAAK,WAAY;AAClB,WAAO,YAAY;AAAA,MACjB;AAAA,MACA;AAAA,MACA,QAAQ,WAAW;AAAA,MACnB;AAAA,MACA,SAAS;AAAA,IACjB,CAAO;AAAA,EACF,GAAE,SAAU,QAAQ;AACnB,WAAO,YAAY;AAAA,MACjB;AAAA,MACA;AAAA,MACA,QAAQ,WAAW;AAAA,MACnB;AAAA,MACA,QAAQ,WAAW,MAAM;AAAA,IACjC,CAAO;AAAA,EACP,CAAK;AACF;AACD;AAAA,0BAAqB,SAAC,MAAM;AAC1B,QAAM,WAAW,KAAK,UACpB,aAAa,KAAK,YAClB,aAAa,KAAK,YAClB,SAAS,KAAK;AAChB,QAAM,mBAAmB,KAAK,kBAAkB,QAAQ,GACtD,aAAa,KAAK,YAAY,QAAQ;AACxC,UAAQ,KAAK,QAAM;AAAA,IACjB,KAAK,WAAW;AACd,UAAI,KAAK,SAAS;AAChB,yBAAiB,UAAU;MACrC,OAAe;AACL,yBAAiB,UAAU,OAAO,WAAW,KAAK,MAAM,CAAC;AAAA,MAC1D;AACD;AAAA,IACF,KAAK,WAAW;AACd,UAAI,KAAK,SAAS;AAChB,yBAAiB,SAAS;MACpC,OAAe;AACL,yBAAiB,SAAS,OAAO,WAAW,KAAK,MAAM,CAAC;AAAA,MACzD;AACD;AAAA,IACF,KAAK,WAAW;AACd,UAAI,CAAC,YAAY;AACf,eAAO,YAAY;AAAA,UACjB;AAAA,UACA;AAAA,UACA,QAAQ,WAAW;AAAA,UACnB;AAAA,UACA,SAAS;AAAA,QACrB,CAAW;AACD;AAAA,MACD;AACD,UAAI,WAAW,eAAe,KAAK,KAAK,cAAc,GAAG;AACvD,mBAAW,eAAe;MAC3B;AACD,iBAAW,cAAc,KAAK;AAC9B,UAAI,QAAQ,SAAU,SAAS;;AAC7B,iBAAQA,MAAA,WAAW,WAAX,gBAAAA,IAAA,gBAAqB;AAAA,MACvC,CAAS,EAAE,KAAK,WAAY;AAClB,eAAO,YAAY;AAAA,UACjB;AAAA,UACA;AAAA,UACA,QAAQ,WAAW;AAAA,UACnB;AAAA,UACA,SAAS;AAAA,QACrB,CAAW;AAAA,MACF,GAAE,SAAU,QAAQ;AACnB,eAAO,YAAY;AAAA,UACjB;AAAA,UACA;AAAA,UACA,QAAQ,WAAW;AAAA,UACnB;AAAA,UACA,QAAQ,WAAW,MAAM;AAAA,QACrC,CAAW;AAAA,MACX,CAAS;AACD;AAAA,IACF,KAAK,WAAW;AACd,aAAO,kBAAkB,uCAAuC;AAChE,UAAI,iBAAiB,UAAU;AAC7B;AAAA,MACD;AACD,uBAAiB,WAAW,QAAQ,KAAK,KAAK;AAC9C;AAAA,IACF,KAAK,WAAW;AACd,aAAO,kBAAkB,qCAAqC;AAC9D,UAAI,iBAAiB,UAAU;AAC7B;AAAA,MACD;AACD,uBAAiB,WAAW;AAC5B,uBAAiB,WAAW;AAC5B,4BAAK,oDAAL,WAA6B,kBAAkB;AAC/C;AAAA,IACF,KAAK,WAAW;AACd,aAAO,kBAAkB,qCAAqC;AAC9D,uBAAiB,WAAW,MAAM,WAAW,KAAK,MAAM,CAAC;AACzD,4BAAK,oDAAL,WAA6B,kBAAkB;AAC/C;AAAA,IACF,KAAK,WAAW;AACd,UAAI,KAAK,SAAS;AAChB,yBAAiB,WAAW;MACtC,OAAe;AACL,yBAAiB,WAAW,OAAO,WAAW,KAAK,MAAM,CAAC;AAAA,MAC3D;AACD,4BAAK,oDAAL,WAA6B,kBAAkB;AAC/C;AAAA,IACF,KAAK,WAAW;AACd,UAAI,CAAC,YAAY;AACf;AAAA,MACD;AACD,UAAI,QAAQ,SAAU,SAAS;;AAC7B,iBAAQA,MAAA,WAAW,aAAX,gBAAAA,IAAA,iBAAsB,WAAW,KAAK,MAAM,EAAE;AAAA,MAChE,CAAS,EAAE,KAAK,WAAY;AAClB,eAAO,YAAY;AAAA,UACjB;AAAA,UACA;AAAA,UACA,QAAQ,WAAW;AAAA,UACnB;AAAA,UACA,SAAS;AAAA,QACrB,CAAW;AAAA,MACF,GAAE,SAAU,QAAQ;AACnB,eAAO,YAAY;AAAA,UACjB;AAAA,UACA;AAAA,UACA,QAAQ,WAAW;AAAA,UACnB;AAAA,UACA,QAAQ,WAAW,MAAM;AAAA,QACrC,CAAW;AAAA,MACX,CAAS;AACD,iBAAW,eAAe,OAAO,WAAW,KAAK,MAAM,CAAC;AACxD,iBAAW,cAAc;AACzB,aAAO,KAAK,YAAY,QAAQ;AAChC;AAAA,IACF;AACE,YAAM,IAAI,MAAM,wBAAwB;AAAA,EAC3C;AACF;AACK;AAAA,4BAAuB,eAAC,kBAAkB,UAAU;;AACxD,QAAM,QAAQ,WAAW,EAACA,MAAA,iBAAiB,cAAjB,gBAAAA,IAA4B,UAAS,sBAAiB,aAAjB,mBAA2B,UAAS,sBAAiB,eAAjB,mBAA6B,OAAO,CAAC;AACxI,SAAO,KAAK,kBAAkB,QAAQ;AACvC;AAQH,MAAM,SAAS;AAAA,EAGb,YAAY;AAAA,IACV;AAAA,IACA;AAAA,EACJ,GAAK;AALH;AACA;AAKE,uBAAK,cAAe;AACpB,uBAAK,OAAQ;AAAA,EACd;AAAA,EACD,SAAS;AACP,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,IAAI,MAAM;AACR,WAAO,mBAAK,cAAa,IAAI,IAAI,KAAK;AAAA,EACvC;AAAA,EACD,SAAS;AACP,WAAO,cAAc,mBAAK,aAAY;AAAA,EACvC;AAAA,EACD,IAAI,MAAM;AACR,WAAO,mBAAK,cAAa,IAAI,IAAI;AAAA,EAClC;AACH;AArBE;AACA;AAyBF,MAAM,WAAW,OAAO,UAAU;AAClC,MAAM,qBAAqB;AAAA,EAKzB,YAAY,iBAAiB;AAAA,IAC3B;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAAK;AARH,mCAAa;AACb,iCAAW;AACX,iCAAW;AACX,iCAAW;AAMT,uBAAK,YAAa,CAAC,EAAE,kBAAkB,oBAAoB;AAC3D,uBAAK,UAAW,CAAC,EAAE,kBAAkB,oBAAoB;AACzD,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,QAAQ;AAAA,EACd;AAAA,EACD,IAAI,UAAU;AACZ,QAAI,mBAAK,WAAU;AACjB,aAAO,mBAAK;AAAA,IACb;AACD,QAAI,CAAC,mBAAK,WAAU;AAClB,aAAO;AAAA,IACR;AACD,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACN,IAAQ,KAAK;AACT,QAAI,mBAAK,aAAY;AACnB,cAAO,6BAAM,eAAc;AAAA,IACjC,WAAe,mBAAK,WAAU;AACxB,cAAO,+BAAO,gBAAe;AAAA,IAC9B;AACD,WAAO;AAAA,EACR;AAAA,EACD,YAAY,UAAU,SAAS,UAAU,OAAO;AAC9C,QAAI,aAAa,UAAU;AACzB,kBAAY,uCAAuC;AAAA,IACpD;AACD,uBAAK,UAAW;AAChB,uBAAK,UAAW;AAAA,EACjB;AACH;AAxCE;AACA;AACA;AACA;AAsCF,MAAM,sBAAsB;AAAA,EAK1B,YAAY,MAAM,kBAAkB,oBAAoB,SAAS;AA0BjE;AA9BA,uCAAiB;AACjB,gCAAU,oBAAI;AACd,qCAAe;AACf,+BAAS;AAEP,SAAK,kBAAkB;AACvB,SAAK,OAAO;AACZ,SAAK,UAAU;AACf,QAAI,SAAS,MAAM;AACjB;AAAA,IACD;AACD,SAAK,OAAO,KAAK;AACjB,SAAK,UAAU,KAAK;AACpB,uBAAK,QAAS,KAAK;AACnB,eAAW,SAAS,KAAK,QAAQ;AAC/B,yBAAK,SAAQ,IAAI,MAAM,IAAI,IAAI,qBAAqB,iBAAiB,KAAK,CAAC;AAAA,IAC5E;AACD,QAAI,KAAK,cAAc,OAAO;AAC5B,iBAAW,SAAS,mBAAK,SAAQ,OAAM,GAAI;AACzC,cAAM,YAAY,UAAU,KAAK;AAAA,MAClC;AAAA,IACF;AACD,eAAW,MAAM,KAAK,IAAI;AACxB,yBAAK,SAAQ,IAAI,EAAE,EAAE,YAAY,UAAU,IAAI;AAAA,IAChD;AACD,eAAW,OAAO,KAAK,KAAK;AAC1B,yBAAK,SAAQ,IAAI,GAAG,EAAE,YAAY,UAAU,KAAK;AAAA,IAClD;AACD,uBAAK,cAAe,KAAK;EAC1B;AAAA,EAqCD,UAAU,OAAO;AACf,QAAI,mBAAK,SAAQ,SAAS,GAAG;AAC3B,aAAO;AAAA,IACR;AACD,QAAI,CAAC,OAAO;AACV,WAAK,qCAAqC;AAC1C,aAAO;AAAA,IACR;AACD,QAAI,MAAM,SAAS,OAAO;AACxB,UAAI,CAAC,mBAAK,SAAQ,IAAI,MAAM,EAAE,GAAG;AAC/B,aAAK,qCAAqC,MAAM,EAAE,EAAE;AACpD,eAAO;AAAA,MACR;AACD,aAAO,mBAAK,SAAQ,IAAI,MAAM,EAAE,EAAE;AAAA,IACxC,WAAe,MAAM,SAAS,QAAQ;AAChC,UAAI,MAAM,YAAY;AACpB,eAAO,sBAAK,gEAAL,WAAmC,MAAM;AAAA,MACjD;AACD,UAAI,CAAC,MAAM,UAAU,MAAM,WAAW,SAAS;AAC7C,mBAAW,MAAM,MAAM,KAAK;AAC1B,cAAI,CAAC,mBAAK,SAAQ,IAAI,EAAE,GAAG;AACzB,iBAAK,qCAAqC,EAAE,EAAE;AAC9C,mBAAO;AAAA,UACR;AACD,cAAI,mBAAK,SAAQ,IAAI,EAAE,EAAE,SAAS;AAChC,mBAAO;AAAA,UACR;AAAA,QACF;AACD,eAAO;AAAA,MACf,WAAiB,MAAM,WAAW,SAAS;AACnC,mBAAW,MAAM,MAAM,KAAK;AAC1B,cAAI,CAAC,mBAAK,SAAQ,IAAI,EAAE,GAAG;AACzB,iBAAK,qCAAqC,EAAE,EAAE;AAC9C,mBAAO;AAAA,UACR;AACD,cAAI,CAAC,mBAAK,SAAQ,IAAI,EAAE,EAAE,SAAS;AACjC,mBAAO;AAAA,UACR;AAAA,QACF;AACD,eAAO;AAAA,MACf,WAAiB,MAAM,WAAW,UAAU;AACpC,mBAAW,MAAM,MAAM,KAAK;AAC1B,cAAI,CAAC,mBAAK,SAAQ,IAAI,EAAE,GAAG;AACzB,iBAAK,qCAAqC,EAAE,EAAE;AAC9C,mBAAO;AAAA,UACR;AACD,cAAI,CAAC,mBAAK,SAAQ,IAAI,EAAE,EAAE,SAAS;AACjC,mBAAO;AAAA,UACR;AAAA,QACF;AACD,eAAO;AAAA,MACf,WAAiB,MAAM,WAAW,UAAU;AACpC,mBAAW,MAAM,MAAM,KAAK;AAC1B,cAAI,CAAC,mBAAK,SAAQ,IAAI,EAAE,GAAG;AACzB,iBAAK,qCAAqC,EAAE,EAAE;AAC9C,mBAAO;AAAA,UACR;AACD,cAAI,mBAAK,SAAQ,IAAI,EAAE,EAAE,SAAS;AAChC,mBAAO;AAAA,UACR;AAAA,QACF;AACD,eAAO;AAAA,MACR;AACD,WAAK,mCAAmC,MAAM,MAAM,GAAG;AACvD,aAAO;AAAA,IACR;AACD,SAAK,sBAAsB,MAAM,IAAI,GAAG;AACxC,WAAO;AAAA,EACR;AAAA,EACD,cAAc,IAAI,UAAU,MAAM;AAChC,UAAM,QAAQ,mBAAK,SAAQ,IAAI,EAAE;AACjC,QAAI,CAAC,OAAO;AACV,WAAK,qCAAqC,EAAE,EAAE;AAC9C;AAAA,IACD;AACD,UAAM,YAAY,UAAU,CAAC,CAAC,SAAS,IAAI;AAC3C,uBAAK,gBAAiB;AAAA,EACvB;AAAA,EACD,YAAY;AAAA,IACV;AAAA,IACA;AAAA,EACJ,GAAK;AACD,QAAI;AACJ,eAAW,QAAQ,OAAO;AACxB,cAAQ,MAAI;AAAA,QACV,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,qBAAW;AACX;AAAA,MACH;AACD,YAAM,QAAQ,mBAAK,SAAQ,IAAI,IAAI;AACnC,UAAI,CAAC,OAAO;AACV;AAAA,MACD;AACD,cAAQ,UAAQ;AAAA,QACd,KAAK;AACH,gBAAM,YAAY,UAAU,IAAI;AAChC;AAAA,QACF,KAAK;AACH,gBAAM,YAAY,UAAU,KAAK;AACjC;AAAA,QACF,KAAK;AACH,gBAAM,YAAY,UAAU,CAAC,MAAM,OAAO;AAC1C;AAAA,MACH;AAAA,IACF;AACD,uBAAK,gBAAiB;AAAA,EACvB;AAAA,EACD,IAAI,uBAAuB;AACzB,WAAO,mBAAK,kBAAiB,QAAQ,KAAK,QAAS,MAAK,mBAAK;AAAA,EAC9D;AAAA,EACD,WAAW;AACT,QAAI,CAAC,mBAAK,SAAQ,MAAM;AACtB,aAAO;AAAA,IACR;AACD,QAAI,mBAAK,SAAQ;AACf,aAAO,mBAAK,QAAO;IACpB;AACD,WAAO,CAAC,GAAG,mBAAK,SAAQ,KAAM;AAAA,EAC/B;AAAA,EACD,YAAY;AACV,WAAO,mBAAK,SAAQ,OAAO,IAAI,cAAc,mBAAK,QAAO,IAAI;AAAA,EAC9D;AAAA,EACD,SAAS,IAAI;AACX,WAAO,mBAAK,SAAQ,IAAI,EAAE,KAAK;AAAA,EAChC;AAAA,EACD,UAAU;AACR,QAAI,mBAAK,oBAAmB,MAAM;AAChC,aAAO,mBAAK;AAAA,IACb;AACD,UAAM,OAAO,IAAI;AACjB,eAAW,CAAC,IAAI,KAAK,KAAK,mBAAK,UAAS;AACtC,WAAK,OAAO,GAAG,EAAE,IAAI,MAAM,OAAO,EAAE;AAAA,IACrC;AACD,WAAO,mBAAK,gBAAiB,KAAK,UAAS;AAAA,EAC5C;AACH;AA3ME;AACA;AACA;AACA;AA2BA;AAAA,kCAA6B,SAAC,OAAO;AACnC,QAAM,SAAS,MAAM;AACrB,MAAI,SAAS,GAAG;AACd,WAAO;AAAA,EACR;AACD,QAAM,WAAW,MAAM,CAAC;AACxB,WAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,UAAM,UAAU,MAAM,CAAC;AACvB,QAAI;AACJ,QAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,cAAQ,sBAAK,gEAAL,WAAmC;AAAA,IAC5C,WAAU,mBAAK,SAAQ,IAAI,OAAO,GAAG;AACpC,cAAQ,mBAAK,SAAQ,IAAI,OAAO,EAAE;AAAA,IAC1C,OAAa;AACL,WAAK,qCAAqC,OAAO,EAAE;AACnD,aAAO;AAAA,IACR;AACD,YAAQ,UAAQ;AAAA,MACd,KAAK;AACH,YAAI,CAAC,OAAO;AACV,iBAAO;AAAA,QACR;AACD;AAAA,MACF,KAAK;AACH,YAAI,OAAO;AACT,iBAAO;AAAA,QACR;AACD;AAAA,MACF,KAAK;AACH,eAAO,CAAC;AAAA,MACV;AACE,eAAO;AAAA,IACV;AAAA,EACF;AACD,SAAO,aAAa;AACrB;AA+IH,MAAM,uBAAuB;AAAA,EAC3B,YAAY,uBAAuB;AAAA,IACjC,eAAe;AAAA,IACf,gBAAgB;AAAA,EACpB,GAAK;AACD,WAAO,uBAAuB,6EAA6E;AAC3G,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAG;AACJ,SAAK,gBAAgB;AACrB,SAAK,mBAAmB;AACxB,SAAK,8BAA8B;AACnC,SAAI,2CAAa,UAAS,GAAG;AAC3B,YAAM,SAAS,uBAAuB,cAAc,YAAY,eAAe,YAAY,OAAO,aAAa,YAAY,SAAS,IAAI,WAAW,WAAW,EAAE;AAChK,WAAK,cAAc,KAAK,MAAM;AAAA,IAC/B;AACD,SAAK,yBAAyB;AAC9B,SAAK,wBAAwB,CAAC;AAC9B,SAAK,oBAAoB,CAAC;AAC1B,SAAK,iBAAiB;AACtB,SAAK,qBAAqB;AAC1B,SAAK,gBAAgB;AACrB,0BAAsB,iBAAiB,CAAC,OAAO,UAAU;AACvD,WAAK,eAAe;AAAA,QAClB;AAAA,QACA;AAAA,MACR,CAAO;AAAA,IACP,CAAK;AACD,0BAAsB,oBAAoB,CAAC,QAAQ,UAAU;AAC3D,WAAK,YAAY;AAAA,QACf;AAAA,QACA;AAAA,MACR,CAAO;AAAA,IACP,CAAK;AACD,0BAAsB,2BAA2B,WAAS;AACxD,WAAK,eAAe;AAAA,QAClB;AAAA,MACR,CAAO;AAAA,IACP,CAAK;AACD,0BAAsB,2BAA2B,MAAM;AACrD,WAAK,mBAAkB;AAAA,IAC7B,CAAK;AACD,0BAAsB,eAAc;AAAA,EACrC;AAAA,EACD,eAAe;AAAA,IACb;AAAA,IACA;AAAA,EACJ,GAAK;AACD,UAAM,SAAS,iBAAiB,cAAc,MAAM,eAAe,MAAM,OAAO,aAAa,MAAM,SAAS,IAAI,WAAW,KAAK,EAAE;AAClI,QAAI,UAAU,QAAW;AACvB,UAAI,KAAK,oBAAoB;AAC3B,aAAK,mBAAmB,SAAS,MAAM;AAAA,MAC/C,OAAa;AACL,aAAK,cAAc,KAAK,MAAM;AAAA,MAC/B;AAAA,IACP,OAAW;AACL,YAAM,QAAQ,KAAK,cAAc,KAAK,SAAU,aAAa;AAC3D,YAAI,YAAY,WAAW,OAAO;AAChC,iBAAO;AAAA,QACR;AACD,oBAAY,SAAS,MAAM;AAC3B,eAAO;AAAA,MACf,CAAO;AACD,aAAO,OAAO,yEAAyE;AAAA,IACxF;AAAA,EACF;AAAA,EACD,IAAI,yBAAyB;;AAC3B,aAAOA,MAAA,KAAK,uBAAL,gBAAAA,IAAyB,YAAW;AAAA,EAC5C;AAAA,EACD,YAAY,KAAK;;AACf,QAAI,IAAI,UAAU,QAAW;AAC3B,aAAAA,MAAA,KAAK,cAAc,CAAC,MAApB,gBAAAA,IAAuB,eAAvB,wBAAAA,KAAoC;AAAA,QAClC,QAAQ,IAAI;AAAA,MACpB;AAAA,IACA,OAAW;AACL,uBAAK,uBAAL,mBAAyB,eAAzB,4BAAsC;AAAA,QACpC,QAAQ,IAAI;AAAA,QACZ,OAAO,IAAI;AAAA,MACnB;AAAA,IACK;AAAA,EACF;AAAA,EACD,qBAAqB;;AACnB,KAAAA,MAAA,KAAK,uBAAL,gBAAAA,IAAyB;AACzB,SAAK,mBAAmB;AAAA,EACzB;AAAA,EACD,mBAAmB,QAAQ;AACzB,UAAM,IAAI,KAAK,cAAc,QAAQ,MAAM;AAC3C,QAAI,KAAK,GAAG;AACV,WAAK,cAAc,OAAO,GAAG,CAAC;AAAA,IAC/B;AAAA,EACF;AAAA,EACD,gBAAgB;AACd,WAAO,CAAC,KAAK,oBAAoB,+DAA+D;AAChG,UAAM,eAAe,KAAK;AAC1B,SAAK,gBAAgB;AACrB,WAAO,IAAI,6BAA6B,MAAM,cAAc,KAAK,kBAAkB,KAAK,2BAA2B;AAAA,EACpH;AAAA,EACD,eAAe,OAAO,KAAK;AACzB,QAAI,OAAO,KAAK,wBAAwB;AACtC,aAAO;AAAA,IACR;AACD,UAAM,SAAS,IAAI,kCAAkC,MAAM,OAAO,GAAG;AACrE,SAAK,uBAAuB,iBAAiB,OAAO,GAAG;AACvD,SAAK,cAAc,KAAK,MAAM;AAC9B,WAAO;AAAA,EACR;AAAA,EACD,kBAAkB,QAAQ;;AACxB,KAAAA,MAAA,KAAK,uBAAL,gBAAAA,IAAyB,OAAO;AAChC,eAAW,UAAU,KAAK,cAAc,MAAM,CAAC,GAAG;AAChD,aAAO,OAAO,MAAM;AAAA,IACrB;AACD,SAAK,uBAAuB;EAC7B;AACH;AACA,MAAM,6BAA6B;AAAA,EACjC,YAAY,QAAQ,cAAc,kBAAkB,OAAO,6BAA6B,MAAM;AAC5F,SAAK,UAAU;AACf,SAAK,QAAQ,mBAAmB;AAChC,SAAK,YAAY,UAAU,0BAA0B,IAAI,6BAA6B;AACtF,SAAK,gBAAgB,gBAAgB;AACrC,SAAK,UAAU;AACf,eAAW,SAAS,KAAK,eAAe;AACtC,WAAK,WAAW,MAAM;AAAA,IACvB;AACD,SAAK,YAAY;AACjB,SAAK,gBAAgB,QAAQ;AAC7B,WAAO,qBAAqB;AAC5B,SAAK,aAAa;AAAA,EACnB;AAAA,EACD,SAAS,OAAO;AACd,QAAI,KAAK,OAAO;AACd;AAAA,IACD;AACD,QAAI,KAAK,UAAU,SAAS,GAAG;AAC7B,YAAM,oBAAoB,KAAK,UAAU,MAAK;AAC9C,wBAAkB,QAAQ;AAAA,QACxB,OAAO;AAAA,QACP,MAAM;AAAA,MACd,CAAO;AAAA,IACP,OAAW;AACL,WAAK,cAAc,KAAK,KAAK;AAAA,IAC9B;AACD,SAAK,WAAW,MAAM;AAAA,EACvB;AAAA,EACD,IAAI,eAAe;AACjB,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,mBAAmB;AACrB,WAAO,KAAK,QAAQ;AAAA,EACrB;AAAA,EACD,IAAI,uBAAuB;AACzB,WAAO,KAAK,QAAQ;AAAA,EACrB;AAAA,EACD,IAAI,gBAAgB;AAClB,WAAO,KAAK,QAAQ;AAAA,EACrB;AAAA,EACD,MAAM,OAAO;AACX,QAAI,KAAK,cAAc,SAAS,GAAG;AACjC,YAAM,QAAQ,KAAK,cAAc,MAAK;AACtC,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACd;AAAA,IACK;AACD,QAAI,KAAK,OAAO;AACd,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACd;AAAA,IACK;AACD,UAAM,oBAAoB,QAAQ;AAClC,SAAK,UAAU,KAAK,iBAAiB;AACrC,WAAO,kBAAkB;AAAA,EAC1B;AAAA,EACD,OAAO,QAAQ;AACb,SAAK,QAAQ;AACb,eAAW,qBAAqB,KAAK,WAAW;AAC9C,wBAAkB,QAAQ;AAAA,QACxB,OAAO;AAAA,QACP,MAAM;AAAA,MACd,CAAO;AAAA,IACF;AACD,SAAK,UAAU,SAAS;AAAA,EACzB;AAAA,EACD,kBAAkB;AAChB,QAAI,KAAK,OAAO;AACd;AAAA,IACD;AACD,SAAK,QAAQ;AAAA,EACd;AACH;AACA,MAAM,kCAAkC;AAAA,EACtC,YAAY,QAAQ,OAAO,KAAK;AAC9B,SAAK,UAAU;AACf,SAAK,SAAS;AACd,SAAK,OAAO;AACZ,SAAK,eAAe;AACpB,SAAK,YAAY;AACjB,SAAK,QAAQ;AACb,SAAK,aAAa;AAAA,EACnB;AAAA,EACD,SAAS,OAAO;AACd,QAAI,KAAK,OAAO;AACd;AAAA,IACD;AACD,QAAI,KAAK,UAAU,WAAW,GAAG;AAC/B,WAAK,eAAe;AAAA,IAC1B,OAAW;AACL,YAAM,qBAAqB,KAAK,UAAU,MAAK;AAC/C,yBAAmB,QAAQ;AAAA,QACzB,OAAO;AAAA,QACP,MAAM;AAAA,MACd,CAAO;AACD,iBAAW,qBAAqB,KAAK,WAAW;AAC9C,0BAAkB,QAAQ;AAAA,UACxB,OAAO;AAAA,UACP,MAAM;AAAA,QAChB,CAAS;AAAA,MACF;AACD,WAAK,UAAU,SAAS;AAAA,IACzB;AACD,SAAK,QAAQ;AACb,SAAK,QAAQ,mBAAmB,IAAI;AAAA,EACrC;AAAA,EACD,IAAI,uBAAuB;AACzB,WAAO;AAAA,EACR;AAAA,EACD,MAAM,OAAO;AACX,QAAI,KAAK,cAAc;AACrB,YAAM,QAAQ,KAAK;AACnB,WAAK,eAAe;AACpB,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACd;AAAA,IACK;AACD,QAAI,KAAK,OAAO;AACd,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACd;AAAA,IACK;AACD,UAAM,oBAAoB,QAAQ;AAClC,SAAK,UAAU,KAAK,iBAAiB;AACrC,WAAO,kBAAkB;AAAA,EAC1B;AAAA,EACD,OAAO,QAAQ;AACb,SAAK,QAAQ;AACb,eAAW,qBAAqB,KAAK,WAAW;AAC9C,wBAAkB,QAAQ;AAAA,QACxB,OAAO;AAAA,QACP,MAAM;AAAA,MACd,CAAO;AAAA,IACF;AACD,SAAK,UAAU,SAAS;AACxB,SAAK,QAAQ,mBAAmB,IAAI;AAAA,EACrC;AACH;AAIA,SAAS,wCAAwC,oBAAoB;AACnE,MAAI,qBAAqB;AACzB,MAAI,MAAM,cAAc,eAAe,GAAG,EAAE,KAAK,kBAAkB;AACnE,MAAI,KAAK;AACP,UAAM,IAAI,CAAC;AACX,QAAI,WAAW,eAAe,GAAG;AACjC,eAAW,SAAS,QAAQ;AAC5B,eAAW,cAAc,QAAQ;AACjC,eAAW,cAAc,QAAQ;AACjC,WAAO,cAAc,QAAQ;AAAA,EAC9B;AACD,QAAM,gBAAgB,kBAAkB;AACxC,MAAI,KAAK;AACP,UAAM,WAAW,cAAc,GAAG;AAClC,WAAO,cAAc,QAAQ;AAAA,EAC9B;AACD,QAAM,cAAc,YAAY,GAAG,EAAE,KAAK,kBAAkB;AAC5D,MAAI,KAAK;AACP,UAAM,IAAI,CAAC;AACX,QAAI,WAAW,eAAe,GAAG;AACjC,eAAW,cAAc,QAAQ;AACjC,WAAO,cAAc,QAAQ;AAAA,EAC9B;AACD,WAAS,cAAc,kBAAkB,OAAO;AAC9C,WAAO,IAAI,OAAO,gBAAgB,mBAAmB,uDAAgF,KAAK;AAAA,EAC3I;AACD,WAAS,WAAW,UAAU,OAAO;AACnC,QAAI,UAAU;AACZ,UAAI,CAAC,iBAAiB,KAAK,KAAK,GAAG;AACjC,eAAO;AAAA,MACR;AACD,UAAI;AACF,cAAM,UAAU,IAAI,YAAY,UAAU;AAAA,UACxC,OAAO;AAAA,QACjB,CAAS;AACD,cAAM,SAAS,cAAc,KAAK;AAClC,gBAAQ,QAAQ,OAAO,MAAM;AAC7B,6BAAqB;AAAA,MACtB,QAAO;AAAA,MAAE;AAAA,IACX;AACD,WAAO;AAAA,EACR;AACD,WAAS,cAAc,OAAO;AAC5B,QAAI,sBAAsB,cAAc,KAAK,KAAK,GAAG;AACnD,cAAQ,WAAW,SAAS,KAAK;AACjC,UAAI,oBAAoB;AACtB,gBAAQ,WAAW,cAAc,KAAK;AAAA,MACvC;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACD,WAAS,gBAAgB,uBAAuB;AAC9C,UAAM,UAAU;AAChB,QAAI;AACJ,UAAM,OAAO,cAAc,mCAAmC,IAAI;AAClE,YAAQ,QAAQ,KAAK,KAAK,qBAAqB,OAAO,MAAM;AAC1D,UAAI,CAAG,KAAG,MAAM,IAAI,IAAI;AACxB,UAAI,SAAS,GAAG,EAAE;AAClB,UAAI,KAAK,SAAS;AAChB,YAAI,MAAM,GAAG;AACX;AAAA,QACD;AACD;AAAA,MACD;AACD,cAAQ,CAAC,IAAI,CAAC,MAAM,IAAI;AAAA,IACzB;AACD,UAAM,QAAQ;AACd,aAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,EAAE,GAAG;AACvC,UAAI,EAAE,KAAK,UAAU;AACnB;AAAA,MACD;AACD,UAAI,CAAC,MAAM,IAAI,IAAI,QAAQ,CAAC;AAC5B,aAAO,eAAe,IAAI;AAC1B,UAAI,MAAM;AACR,eAAO,SAAS,IAAI;AACpB,YAAI,MAAM,GAAG;AACX,iBAAO,cAAc,IAAI;AAAA,QAC1B;AAAA,MACF;AACD,YAAM,KAAK,IAAI;AAAA,IAChB;AACD,WAAO,MAAM,KAAK,EAAE;AAAA,EACrB;AACD,WAAS,eAAe,OAAO;AAC7B,QAAI,MAAM,WAAW,GAAG,GAAG;AACzB,YAAM,QAAQ,MAAM,MAAM,CAAC,EAAE,MAAM,KAAK;AACxC,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,EAAE,GAAG;AACrC,cAAM,YAAY,MAAM,CAAC,EAAE,QAAQ,GAAG;AACtC,YAAI,cAAc,IAAI;AACpB,gBAAM,CAAC,IAAI,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS;AACtC,gBAAM,SAAS,IAAI;AAAA,QACpB;AACD,cAAM,CAAC,IAAI,MAAM,CAAC,EAAE,WAAW,UAAU,IAAI;AAAA,MAC9C;AACD,cAAQ,MAAM,KAAK,GAAG;AAAA,IACvB;AACD,WAAO;AAAA,EACR;AACD,WAAS,cAAc,UAAU;AAC/B,UAAM,cAAc,SAAS,QAAQ,GAAG;AACxC,QAAI,gBAAgB,IAAI;AACtB,aAAO;AAAA,IACR;AACD,UAAM,WAAW,SAAS,MAAM,GAAG,WAAW;AAC9C,UAAM,YAAY,SAAS,MAAM,cAAc,CAAC;AAChD,UAAM,QAAQ,UAAU,QAAQ,WAAW,EAAE;AAC7C,WAAO,WAAW,UAAU,KAAK;AAAA,EAClC;AACD,WAAS,cAAc,OAAO;AAC5B,QAAI,CAAC,MAAM,WAAW,IAAI,KAAK,uBAAuB,KAAK,KAAK,GAAG;AACjE,aAAO;AAAA,IACR;AACD,WAAO,MAAM,WAAW,kDAAkD,SAAU,SAAS,SAAS,UAAU,MAAM;AACpH,UAAI,aAAa,OAAO,aAAa,KAAK;AACxC,eAAO,KAAK,WAAW,KAAK,GAAG;AAC/B,eAAO,KAAK,WAAW,sBAAsB,SAAU,OAAO,KAAK;AACjE,iBAAO,OAAO,aAAa,SAAS,KAAK,EAAE,CAAC;AAAA,QACtD,CAAS;AACD,eAAO,WAAW,SAAS,IAAI;AAAA,MAChC;AACD,UAAI;AACF,eAAO,KAAK,IAAI;AAAA,MACjB,QAAO;AAAA,MAAE;AACV,aAAO,WAAW,SAAS,IAAI;AAAA,IACrC,CAAK;AAAA,EACF;AACD,SAAO;AACT;AAMA,SAAS,iCAAiC;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAG;AACD,QAAM,eAAe;AAAA,IACnB,oBAAoB;AAAA,IACpB,iBAAiB;AAAA,EACrB;AACE,QAAM,SAAS,SAAS,kBAAkB,gBAAgB,GAAG,EAAE;AAC/D,MAAI,CAAC,OAAO,UAAU,MAAM,GAAG;AAC7B,WAAO;AAAA,EACR;AACD,eAAa,kBAAkB;AAC/B,MAAI,UAAU,IAAI,gBAAgB;AAChC,WAAO;AAAA,EACR;AACD,MAAI,gBAAgB,CAAC,QAAQ;AAC3B,WAAO;AAAA,EACR;AACD,MAAI,kBAAkB,eAAe,MAAM,SAAS;AAClD,WAAO;AAAA,EACR;AACD,QAAM,kBAAkB,kBAAkB,kBAAkB,KAAK;AACjE,MAAI,oBAAoB,YAAY;AAClC,WAAO;AAAA,EACR;AACD,eAAa,qBAAqB;AAClC,SAAO;AACT;AACA,SAAS,0BAA0B,mBAAmB;AACpD,QAAM,qBAAqB,kBAAkB,qBAAqB;AAClE,MAAI,oBAAoB;AACtB,QAAI,WAAW,wCAAwC,kBAAkB;AACzE,QAAI,SAAS,SAAS,GAAG,GAAG;AAC1B,UAAI;AACF,mBAAW,mBAAmB,QAAQ;AAAA,MACvC,QAAO;AAAA,MAAE;AAAA,IACX;AACD,QAAI,UAAU,QAAQ,GAAG;AACvB,aAAO;AAAA,IACR;AAAA,EACF;AACD,SAAO;AACT;AACA,SAAS,0BAA0B,QAAQ,KAAK;AAC9C,MAAI,WAAW,OAAO,WAAW,KAAK,IAAI,WAAW,OAAO,GAAG;AAC7D,WAAO,IAAI,oBAAoB,kBAAkB,MAAM,IAAI;AAAA,EAC5D;AACD,SAAO,IAAI,4BAA4B,+BAA+B,MAAM,2BAA2B,GAAG,MAAM,MAAM;AACxH;AACA,SAAS,uBAAuB,QAAQ;AACtC,SAAO,WAAW,OAAO,WAAW;AACtC;AAKA,SAAS,mBAAmB,SAAS,iBAAiB,iBAAiB;AACrE,SAAO;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,IACA,QAAQ,gBAAgB;AAAA,IACxB,MAAM;AAAA,IACN,aAAa,kBAAkB,YAAY;AAAA,IAC3C,UAAU;AAAA,EACd;AACA;AACA,SAAS,cAAc,aAAa;AAClC,QAAM,UAAU,IAAI;AACpB,aAAW,YAAY,aAAa;AAClC,UAAM,QAAQ,YAAY,QAAQ;AAClC,QAAI,UAAU,QAAW;AACvB;AAAA,IACD;AACD,YAAQ,OAAO,UAAU,KAAK;AAAA,EAC/B;AACD,SAAO;AACT;AACA,SAAS,eAAe,KAAK;AAC3B,MAAI,eAAe,YAAY;AAC7B,WAAO,IAAI;AAAA,EACZ;AACD,MAAI,eAAe,aAAa;AAC9B,WAAO;AAAA,EACR;AACD,OAAK,4CAA4C,GAAG,EAAE;AACtD,SAAO,IAAI,WAAW,GAAG,EAAE;AAC7B;AACA,MAAM,eAAe;AAAA,EACnB,YAAY,QAAQ;AAClB,SAAK,SAAS;AACd,SAAK,SAAS,YAAY,KAAK,OAAO,GAAG;AACzC,SAAK,cAAc,KAAK,UAAU,OAAO,eAAe;AACxD,SAAK,qBAAqB;AAC1B,SAAK,uBAAuB;EAC7B;AAAA,EACD,IAAI,yBAAyB;;AAC3B,aAAOA,MAAA,KAAK,uBAAL,gBAAAA,IAAyB,YAAW;AAAA,EAC5C;AAAA,EACD,gBAAgB;AACd,WAAO,CAAC,KAAK,oBAAoB,uDAAuD;AACxF,SAAK,qBAAqB,IAAI,qBAAqB,IAAI;AACvD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,eAAe,OAAO,KAAK;AACzB,QAAI,OAAO,KAAK,wBAAwB;AACtC,aAAO;AAAA,IACR;AACD,UAAM,SAAS,IAAI,0BAA0B,MAAM,OAAO,GAAG;AAC7D,SAAK,qBAAqB,KAAK,MAAM;AACrC,WAAO;AAAA,EACR;AAAA,EACD,kBAAkB,QAAQ;;AACxB,KAAAA,MAAA,KAAK,uBAAL,gBAAAA,IAAyB,OAAO;AAChC,eAAW,UAAU,KAAK,qBAAqB,MAAM,CAAC,GAAG;AACvD,aAAO,OAAO,MAAM;AAAA,IACrB;AAAA,EACF;AACH;AACA,MAAM,qBAAqB;AAAA,EACzB,YAAY,QAAQ;AAClB,SAAK,UAAU;AACf,SAAK,UAAU;AACf,SAAK,UAAU;AACf,SAAK,YAAY;AACjB,UAAM,SAAS,OAAO;AACtB,SAAK,mBAAmB,OAAO,mBAAmB;AAClD,SAAK,iBAAiB,OAAO;AAC7B,SAAK,qBAAqB,QAAQ;AAClC,SAAK,gBAAgB,OAAO,gBAAgB;AAC5C,SAAK,kBAAkB,OAAO;AAC9B,QAAI,CAAC,KAAK,mBAAmB,CAAC,KAAK,eAAe;AAChD,WAAK,gBAAgB;AAAA,IACtB;AACD,SAAK,mBAAmB,IAAI;AAC5B,SAAK,wBAAwB,CAAC,OAAO;AACrC,SAAK,oBAAoB,CAAC,OAAO;AACjC,SAAK,WAAW,cAAc,KAAK,QAAQ,WAAW;AACtD,UAAM,MAAM,OAAO;AACnB,UAAM,KAAK,mBAAmB,KAAK,UAAU,KAAK,kBAAkB,KAAK,gBAAgB,CAAC,EAAE,KAAK,cAAY;AAC3G,UAAI,CAAC,uBAAuB,SAAS,MAAM,GAAG;AAC5C,cAAM,0BAA0B,SAAS,QAAQ,GAAG;AAAA,MACrD;AACD,WAAK,UAAU,SAAS,KAAK,UAAS;AACtC,WAAK,mBAAmB;AACxB,YAAM,oBAAoB,UAAQ,SAAS,QAAQ,IAAI,IAAI;AAC3D,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACD,IAAG,iCAAiC;AAAA,QACnC;AAAA,QACA,QAAQ,KAAK,QAAQ;AAAA,QACrB,gBAAgB,KAAK;AAAA,QACrB,cAAc,KAAK;AAAA,MAC3B,CAAO;AACD,WAAK,oBAAoB;AACzB,WAAK,iBAAiB,mBAAmB,KAAK;AAC9C,WAAK,YAAY,0BAA0B,iBAAiB;AAC5D,UAAI,CAAC,KAAK,yBAAyB,KAAK,mBAAmB;AACzD,aAAK,OAAO,IAAI,eAAe,wBAAwB,CAAC;AAAA,MACzD;AAAA,IACF,GAAE,MAAM,KAAK,mBAAmB,MAAM;AACvC,SAAK,aAAa;AAAA,EACnB;AAAA,EACD,IAAI,eAAe;AACjB,WAAO,KAAK,mBAAmB;AAAA,EAChC;AAAA,EACD,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,gBAAgB;AAClB,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,mBAAmB;AACrB,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,uBAAuB;AACzB,WAAO,KAAK;AAAA,EACb;AAAA,EACD,MAAM,OAAO;;AACX,UAAM,KAAK,mBAAmB;AAC9B,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACD,IAAG,MAAM,KAAK,QAAQ;AACvB,QAAI,MAAM;AACR,aAAO;AAAA,QACL;AAAA,QACA;AAAA,MACR;AAAA,IACK;AACD,SAAK,WAAW,MAAM;AACtB,KAAAA,MAAA,KAAK,eAAL,gBAAAA,IAAA,WAAkB;AAAA,MAChB,QAAQ,KAAK;AAAA,MACb,OAAO,KAAK;AAAA,IAClB;AACI,WAAO;AAAA,MACL,OAAO,eAAe,KAAK;AAAA,MAC3B,MAAM;AAAA,IACZ;AAAA,EACG;AAAA,EACD,OAAO,QAAQ;;AACb,KAAAA,MAAA,KAAK,YAAL,gBAAAA,IAAc,OAAO;AACrB,SAAK,iBAAiB;EACvB;AACH;AACA,MAAM,0BAA0B;AAAA,EAC9B,YAAY,QAAQ,OAAO,KAAK;AAC9B,SAAK,UAAU;AACf,SAAK,UAAU;AACf,SAAK,UAAU;AACf,UAAM,SAAS,OAAO;AACtB,SAAK,mBAAmB,OAAO,mBAAmB;AAClD,SAAK,kBAAkB,QAAQ;AAC/B,SAAK,wBAAwB,CAAC,OAAO;AACrC,SAAK,mBAAmB,IAAI;AAC5B,SAAK,WAAW,cAAc,KAAK,QAAQ,WAAW;AACtD,SAAK,SAAS,OAAO,SAAS,SAAS,KAAK,IAAI,MAAM,CAAC,EAAE;AACzD,UAAM,MAAM,OAAO;AACnB,UAAM,KAAK,mBAAmB,KAAK,UAAU,KAAK,kBAAkB,KAAK,gBAAgB,CAAC,EAAE,KAAK,cAAY;AAC3G,UAAI,CAAC,uBAAuB,SAAS,MAAM,GAAG;AAC5C,cAAM,0BAA0B,SAAS,QAAQ,GAAG;AAAA,MACrD;AACD,WAAK,gBAAgB;AACrB,WAAK,UAAU,SAAS,KAAK,UAAS;AAAA,IACvC,GAAE,MAAM,KAAK,gBAAgB,MAAM;AACpC,SAAK,aAAa;AAAA,EACnB;AAAA,EACD,IAAI,uBAAuB;AACzB,WAAO,KAAK;AAAA,EACb;AAAA,EACD,MAAM,OAAO;;AACX,UAAM,KAAK,gBAAgB;AAC3B,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACD,IAAG,MAAM,KAAK,QAAQ;AACvB,QAAI,MAAM;AACR,aAAO;AAAA,QACL;AAAA,QACA;AAAA,MACR;AAAA,IACK;AACD,SAAK,WAAW,MAAM;AACtB,KAAAA,MAAA,KAAK,eAAL,gBAAAA,IAAA,WAAkB;AAAA,MAChB,QAAQ,KAAK;AAAA,IACnB;AACI,WAAO;AAAA,MACL,OAAO,eAAe,KAAK;AAAA,MAC3B,MAAM;AAAA,IACZ;AAAA,EACG;AAAA,EACD,OAAO,QAAQ;;AACb,KAAAA,MAAA,KAAK,YAAL,gBAAAA,IAAc,OAAO;AACrB,SAAK,iBAAiB;EACvB;AACH;AAKA,MAAM,cAAc;AACpB,MAAM,2BAA2B;AACjC,SAAS,uBAAuB,KAAK;AACnC,QAAM,OAAO,IAAI;AACjB,MAAI,OAAO,SAAS,UAAU;AAC5B,WAAO;AAAA,EACR;AACD,SAAO,cAAc,IAAI,EAAE;AAC7B;AACA,MAAM,eAAe;AAAA,EACnB,YAAY,KAAK,OAAO,IAAI;AAC1B,SAAK,MAAM;AACX,SAAK,SAAS,YAAY,KAAK,GAAG;AAClC,SAAK,cAAc,KAAK,UAAU,KAAK,eAAe,uBAAO,OAAO,IAAI;AACxE,SAAK,kBAAkB,KAAK,mBAAmB;AAC/C,SAAK,YAAY;AACjB,SAAK,kBAAkB,uBAAO,OAAO,IAAI;AAAA,EAC1C;AAAA,EACD,aAAa,OAAO,KAAK,WAAW;AAClC,UAAM,OAAO;AAAA,MACX;AAAA,MACA;AAAA,IACN;AACI,eAAW,QAAQ,WAAW;AAC5B,WAAK,IAAI,IAAI,UAAU,IAAI;AAAA,IAC5B;AACD,WAAO,KAAK,QAAQ,IAAI;AAAA,EACzB;AAAA,EACD,YAAY,WAAW;AACrB,WAAO,KAAK,QAAQ,SAAS;AAAA,EAC9B;AAAA,EACD,QAAQ,MAAM;AACZ,UAAM,MAAM,IAAI;AAChB,UAAM,QAAQ,KAAK;AACnB,UAAM,iBAAiB,KAAK,gBAAgB,KAAK,IAAI;AAAA,MACnD;AAAA,IACN;AACI,QAAI,KAAK,OAAO,KAAK,GAAG;AACxB,QAAI,kBAAkB,KAAK;AAC3B,eAAW,YAAY,KAAK,aAAa;AACvC,YAAM,QAAQ,KAAK,YAAY,QAAQ;AACvC,UAAI,UAAU,QAAW;AACvB;AAAA,MACD;AACD,UAAI,iBAAiB,UAAU,KAAK;AAAA,IACrC;AACD,QAAI,KAAK,UAAU,WAAW,QAAQ,SAAS,MAAM;AACnD,UAAI,iBAAiB,SAAS,SAAS,KAAK,KAAK,IAAI,KAAK,MAAM,CAAC,EAAE;AACnE,qBAAe,iBAAiB;AAAA,IACtC,OAAW;AACL,qBAAe,iBAAiB;AAAA,IACjC;AACD,QAAI,eAAe;AACnB,QAAI,KAAK,SAAS;AAChB,UAAI,UAAU,SAAU,KAAK;AAC3B,aAAK,QAAQ,IAAI,MAAM;AAAA,MAC/B;AAAA,IACK;AACD,QAAI,qBAAqB,KAAK,cAAc,KAAK,MAAM,KAAK;AAC5D,QAAI,aAAa,KAAK,WAAW,KAAK,MAAM,KAAK;AACjD,mBAAe,oBAAoB,KAAK;AACxC,mBAAe,SAAS,KAAK;AAC7B,mBAAe,UAAU,KAAK;AAC9B,mBAAe,aAAa,KAAK;AACjC,QAAI,KAAK,IAAI;AACb,WAAO;AAAA,EACR;AAAA,EACD,WAAW,OAAO,KAAK;;AACrB,UAAM,iBAAiB,KAAK,gBAAgB,KAAK;AACjD,QAAI,CAAC,gBAAgB;AACnB;AAAA,IACD;AACD,KAAAA,MAAA,eAAe,eAAf,gBAAAA,IAAA,qBAA4B;AAAA,EAC7B;AAAA,EACD,cAAc,OAAO,KAAK;;AACxB,UAAM,iBAAiB,KAAK,gBAAgB,KAAK;AACjD,QAAI,CAAC,gBAAgB;AACnB;AAAA,IACD;AACD,UAAM,MAAM,eAAe;AAC3B,QAAI,IAAI,cAAc,KAAK,eAAe,mBAAmB;AAC3D,qBAAe,kBAAiB;AAChC,aAAO,eAAe;AAAA,IACvB;AACD,QAAI,IAAI,eAAe,GAAG;AACxB;AAAA,IACD;AACD,QAAI,EAAE,SAAS,KAAK,kBAAkB;AACpC;AAAA,IACD;AACD,WAAO,KAAK,gBAAgB,KAAK;AACjC,QAAI,IAAI,WAAW,KAAK,KAAK,QAAQ;AACnC,OAAAA,MAAA,eAAe,YAAf,gBAAAA,IAAA,qBAAyB,IAAI;AAC7B;AAAA,IACD;AACD,UAAM,YAAY,IAAI,UAAU;AAChC,UAAM,+BAA+B,cAAc,eAAe,eAAe,mBAAmB;AACpG,QAAI,CAAC,gCAAgC,cAAc,eAAe,gBAAgB;AAChF,2BAAe,YAAf,wCAAyB,IAAI;AAC7B;AAAA,IACD;AACD,UAAM,QAAQ,uBAAuB,GAAG;AACxC,QAAI,cAAc,0BAA0B;AAC1C,YAAM,cAAc,IAAI,kBAAkB,eAAe;AACzD,YAAM,UAAU,2BAA2B,KAAK,WAAW;AAC3D,qBAAe,OAAO;AAAA,QACpB,OAAO,SAAS,QAAQ,CAAC,GAAG,EAAE;AAAA,QAC9B;AAAA,MACR,CAAO;AAAA,IACF,WAAU,OAAO;AAChB,qBAAe,OAAO;AAAA,QACpB,OAAO;AAAA,QACP;AAAA,MACR,CAAO;AAAA,IACP,OAAW;AACL,2BAAe,YAAf,wCAAyB,IAAI;AAAA,IAC9B;AAAA,EACF;AAAA,EACD,cAAc,OAAO;AACnB,WAAO,KAAK,gBAAgB,KAAK,EAAE;AAAA,EACpC;AAAA,EACD,iBAAiB,OAAO;AACtB,WAAO,SAAS,KAAK;AAAA,EACtB;AAAA,EACD,aAAa,OAAO;AAClB,UAAM,MAAM,KAAK,gBAAgB,KAAK,EAAE;AACxC,WAAO,KAAK,gBAAgB,KAAK;AACjC,QAAI,MAAK;AAAA,EACV;AACH;AACA,MAAM,iBAAiB;AAAA,EACrB,YAAY,QAAQ;AAClB,SAAK,UAAU;AACf,SAAK,WAAW,IAAI,eAAe,OAAO,KAAK;AAAA,MAC7C,aAAa,OAAO;AAAA,MACpB,iBAAiB,OAAO;AAAA,IAC9B,CAAK;AACD,SAAK,kBAAkB,OAAO;AAC9B,SAAK,qBAAqB;AAC1B,SAAK,uBAAuB;EAC7B;AAAA,EACD,4BAA4B,QAAQ;AAClC,UAAM,IAAI,KAAK,qBAAqB,QAAQ,MAAM;AAClD,QAAI,KAAK,GAAG;AACV,WAAK,qBAAqB,OAAO,GAAG,CAAC;AAAA,IACtC;AAAA,EACF;AAAA,EACD,gBAAgB;AACd,WAAO,CAAC,KAAK,oBAAoB,yDAAyD;AAC1F,SAAK,qBAAqB,IAAI,kCAAkC,KAAK,UAAU,KAAK,OAAO;AAC3F,WAAO,KAAK;AAAA,EACb;AAAA,EACD,eAAe,OAAO,KAAK;AACzB,UAAM,SAAS,IAAI,mCAAmC,KAAK,UAAU,OAAO,GAAG;AAC/E,WAAO,WAAW,KAAK,4BAA4B,KAAK,IAAI;AAC5D,SAAK,qBAAqB,KAAK,MAAM;AACrC,WAAO;AAAA,EACR;AAAA,EACD,kBAAkB,QAAQ;;AACxB,KAAAA,MAAA,KAAK,uBAAL,gBAAAA,IAAyB,OAAO;AAChC,eAAW,UAAU,KAAK,qBAAqB,MAAM,CAAC,GAAG;AACvD,aAAO,OAAO,MAAM;AAAA,IACrB;AAAA,EACF;AACH;AACA,MAAM,kCAAkC;AAAA,EACtC,YAAY,SAAS,QAAQ;AAC3B,SAAK,WAAW;AAChB,UAAM,OAAO;AAAA,MACX,mBAAmB,KAAK,mBAAmB,KAAK,IAAI;AAAA,MACpD,QAAQ,KAAK,QAAQ,KAAK,IAAI;AAAA,MAC9B,SAAS,KAAK,SAAS,KAAK,IAAI;AAAA,MAChC,YAAY,KAAK,YAAY,KAAK,IAAI;AAAA,IAC5C;AACI,SAAK,OAAO,OAAO;AACnB,SAAK,iBAAiB,QAAQ,YAAY,IAAI;AAC9C,SAAK,6BAA6B,QAAQ;AAC1C,SAAK,gBAAgB,OAAO,gBAAgB;AAC5C,SAAK,iBAAiB,OAAO;AAC7B,SAAK,kBAAkB,OAAO;AAC9B,QAAI,CAAC,KAAK,mBAAmB,CAAC,KAAK,eAAe;AAChD,WAAK,gBAAgB;AAAA,IACtB;AACD,SAAK,wBAAwB;AAC7B,SAAK,oBAAoB;AACzB,SAAK,gBAAgB;AACrB,SAAK,YAAY;AACjB,SAAK,QAAQ;AACb,SAAK,eAAe;AACpB,SAAK,YAAY;AACjB,SAAK,aAAa;AAAA,EACnB;AAAA,EACD,qBAAqB;AACnB,UAAM,mBAAmB,KAAK;AAC9B,UAAM,iBAAiB,KAAK,SAAS,cAAc,gBAAgB;AACnE,UAAM,oBAAoB,UAAQ,eAAe,kBAAkB,IAAI;AACvE,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACD,IAAG,iCAAiC;AAAA,MACnC;AAAA,MACA,QAAQ,KAAK,SAAS;AAAA,MACtB,gBAAgB,KAAK;AAAA,MACrB,cAAc,KAAK;AAAA,IACzB,CAAK;AACD,QAAI,oBAAoB;AACtB,WAAK,oBAAoB;AAAA,IAC1B;AACD,SAAK,iBAAiB,mBAAmB,KAAK;AAC9C,SAAK,YAAY,0BAA0B,iBAAiB;AAC5D,QAAI,KAAK,mBAAmB;AAC1B,WAAK,SAAS,aAAa,gBAAgB;AAAA,IAC5C;AACD,SAAK,2BAA2B;EACjC;AAAA,EACD,QAAQ,MAAM;AACZ,QAAI,MAAM;AACR,UAAI,KAAK,UAAU,SAAS,GAAG;AAC7B,cAAM,oBAAoB,KAAK,UAAU,MAAK;AAC9C,0BAAkB,QAAQ;AAAA,UACxB,OAAO,KAAK;AAAA,UACZ,MAAM;AAAA,QAChB,CAAS;AAAA,MACT,OAAa;AACL,aAAK,cAAc,KAAK,KAAK,KAAK;AAAA,MACnC;AAAA,IACF;AACD,SAAK,QAAQ;AACb,QAAI,KAAK,cAAc,SAAS,GAAG;AACjC;AAAA,IACD;AACD,eAAW,qBAAqB,KAAK,WAAW;AAC9C,wBAAkB,QAAQ;AAAA,QACxB,OAAO;AAAA,QACP,MAAM;AAAA,MACd,CAAO;AAAA,IACF;AACD,SAAK,UAAU,SAAS;AAAA,EACzB;AAAA,EACD,SAAS,QAAQ;AACf,SAAK,eAAe,0BAA0B,QAAQ,KAAK,IAAI;AAC/D,SAAK,2BAA2B,OAAO,KAAK,YAAY;AACxD,eAAW,qBAAqB,KAAK,WAAW;AAC9C,wBAAkB,OAAO,KAAK,YAAY;AAAA,IAC3C;AACD,SAAK,UAAU,SAAS;AACxB,SAAK,cAAc,SAAS;AAAA,EAC7B;AAAA,EACD,YAAY,KAAK;;AACf,KAAAA,MAAA,KAAK,eAAL,gBAAAA,IAAA,WAAkB;AAAA,MAChB,QAAQ,IAAI;AAAA,MACZ,OAAO,IAAI,mBAAmB,IAAI,QAAQ,KAAK;AAAA,IACrD;AAAA,EACG;AAAA,EACD,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,mBAAmB;AACrB,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,uBAAuB;AACzB,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,gBAAgB;AAClB,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,eAAe;AACjB,WAAO,KAAK,2BAA2B;AAAA,EACxC;AAAA,EACD,MAAM,OAAO;AACX,QAAI,KAAK,cAAc;AACrB,YAAM,KAAK;AAAA,IACZ;AACD,QAAI,KAAK,cAAc,SAAS,GAAG;AACjC,YAAM,QAAQ,KAAK,cAAc,MAAK;AACtC,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACd;AAAA,IACK;AACD,QAAI,KAAK,OAAO;AACd,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACd;AAAA,IACK;AACD,UAAM,oBAAoB,QAAQ;AAClC,SAAK,UAAU,KAAK,iBAAiB;AACrC,WAAO,kBAAkB;AAAA,EAC1B;AAAA,EACD,OAAO,QAAQ;AACb,SAAK,QAAQ;AACb,SAAK,2BAA2B,OAAO,MAAM;AAC7C,eAAW,qBAAqB,KAAK,WAAW;AAC9C,wBAAkB,QAAQ;AAAA,QACxB,OAAO;AAAA,QACP,MAAM;AAAA,MACd,CAAO;AAAA,IACF;AACD,SAAK,UAAU,SAAS;AACxB,QAAI,KAAK,SAAS,iBAAiB,KAAK,cAAc,GAAG;AACvD,WAAK,SAAS,aAAa,KAAK,cAAc;AAAA,IAC/C;AACD,SAAK,qBAAqB;AAAA,EAC3B;AACH;AACA,MAAM,mCAAmC;AAAA,EACvC,YAAY,SAAS,OAAO,KAAK;AAC/B,SAAK,WAAW;AAChB,UAAM,OAAO;AAAA,MACX,QAAQ,KAAK,QAAQ,KAAK,IAAI;AAAA,MAC9B,SAAS,KAAK,SAAS,KAAK,IAAI;AAAA,MAChC,YAAY,KAAK,YAAY,KAAK,IAAI;AAAA,IAC5C;AACI,SAAK,OAAO,QAAQ;AACpB,SAAK,aAAa,QAAQ,aAAa,OAAO,KAAK,IAAI;AACvD,SAAK,YAAY;AACjB,SAAK,eAAe;AACpB,SAAK,QAAQ;AACb,SAAK,eAAe;AACpB,SAAK,aAAa;AAClB,SAAK,WAAW;AAAA,EACjB;AAAA,EACD,SAAS;;AACP,KAAAA,MAAA,KAAK,aAAL,gBAAAA,IAAA,WAAgB;AAAA,EACjB;AAAA,EACD,QAAQ,MAAM;AACZ,UAAM,QAAQ,KAAK;AACnB,QAAI,KAAK,UAAU,SAAS,GAAG;AAC7B,YAAM,oBAAoB,KAAK,UAAU,MAAK;AAC9C,wBAAkB,QAAQ;AAAA,QACxB,OAAO;AAAA,QACP,MAAM;AAAA,MACd,CAAO;AAAA,IACP,OAAW;AACL,WAAK,eAAe;AAAA,IACrB;AACD,SAAK,QAAQ;AACb,eAAW,qBAAqB,KAAK,WAAW;AAC9C,wBAAkB,QAAQ;AAAA,QACxB,OAAO;AAAA,QACP,MAAM;AAAA,MACd,CAAO;AAAA,IACF;AACD,SAAK,UAAU,SAAS;AACxB,SAAK,OAAM;AAAA,EACZ;AAAA,EACD,SAAS,QAAQ;AACf,SAAK,eAAe,0BAA0B,QAAQ,KAAK,IAAI;AAC/D,eAAW,qBAAqB,KAAK,WAAW;AAC9C,wBAAkB,OAAO,KAAK,YAAY;AAAA,IAC3C;AACD,SAAK,UAAU,SAAS;AACxB,SAAK,eAAe;AAAA,EACrB;AAAA,EACD,YAAY,KAAK;;AACf,QAAI,CAAC,KAAK,sBAAsB;AAC9B,OAAAA,MAAA,KAAK,eAAL,gBAAAA,IAAA,WAAkB;AAAA,QAChB,QAAQ,IAAI;AAAA,MACpB;AAAA,IACK;AAAA,EACF;AAAA,EACD,IAAI,uBAAuB;AACzB,WAAO;AAAA,EACR;AAAA,EACD,MAAM,OAAO;AACX,QAAI,KAAK,cAAc;AACrB,YAAM,KAAK;AAAA,IACZ;AACD,QAAI,KAAK,iBAAiB,MAAM;AAC9B,YAAM,QAAQ,KAAK;AACnB,WAAK,eAAe;AACpB,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACd;AAAA,IACK;AACD,QAAI,KAAK,OAAO;AACd,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACd;AAAA,IACK;AACD,UAAM,oBAAoB,QAAQ;AAClC,SAAK,UAAU,KAAK,iBAAiB;AACrC,WAAO,kBAAkB;AAAA,EAC1B;AAAA,EACD,OAAO,QAAQ;AACb,SAAK,QAAQ;AACb,eAAW,qBAAqB,KAAK,WAAW;AAC9C,wBAAkB,QAAQ;AAAA,QACxB,OAAO;AAAA,QACP,MAAM;AAAA,MACd,CAAO;AAAA,IACF;AACD,SAAK,UAAU,SAAS;AACxB,QAAI,KAAK,SAAS,iBAAiB,KAAK,UAAU,GAAG;AACnD,WAAK,SAAS,aAAa,KAAK,UAAU;AAAA,IAC3C;AACD,SAAK,OAAM;AAAA,EACZ;AACH;AAMA,MAAM,WAAW;AACjB,SAAS,eAAe,WAAW;AACjC,MAAI,SAAS,KAAK,SAAS,GAAG;AAC5B,WAAO,IAAI,IAAI,SAAS;AAAA,EACzB;AACD,QAAM,MAAM,aAAa,IAAI,KAAK;AAClC,SAAO,IAAI,IAAI,IAAI,cAAc,SAAS,CAAC;AAC7C;AACA,SAAS,cAAc,KAAK,SAAS,UAAU;AAC7C,MAAI,IAAI,aAAa,SAAS;AAC5B,UAAM,OAAO,aAAa,IAAI,MAAM;AACpC,WAAO,KAAK,QAAQ,KAAK;AAAA,MACvB;AAAA,IACD,GAAE,QAAQ;AAAA,EACZ;AACD,QAAM,QAAQ,aAAa,IAAI,OAAO;AACtC,SAAO,MAAM,QAAQ,KAAK;AAAA,IACxB;AAAA,EACD,GAAE,QAAQ;AACb;AACA,MAAM,cAAc;AAAA,EAClB,YAAY,QAAQ;AAClB,SAAK,SAAS;AACd,SAAK,MAAM,eAAe,OAAO,GAAG;AACpC,SAAK,SAAS,KAAK,IAAI,aAAa,WAAW,KAAK,IAAI,aAAa;AACrE,SAAK,UAAU,KAAK,IAAI,aAAa;AACrC,SAAK,cAAc,KAAK,UAAU,OAAO,eAAe;AACxD,SAAK,qBAAqB;AAC1B,SAAK,uBAAuB;EAC7B;AAAA,EACD,IAAI,yBAAyB;;AAC3B,aAAOA,MAAA,KAAK,uBAAL,gBAAAA,IAAyB,YAAW;AAAA,EAC5C;AAAA,EACD,gBAAgB;AACd,WAAO,CAAC,KAAK,oBAAoB,sDAAsD;AACvF,SAAK,qBAAqB,KAAK,UAAU,IAAI,0BAA0B,IAAI,IAAI,IAAI,wBAAwB,IAAI;AAC/G,WAAO,KAAK;AAAA,EACb;AAAA,EACD,eAAe,OAAO,KAAK;AACzB,QAAI,OAAO,KAAK,wBAAwB;AACtC,aAAO;AAAA,IACR;AACD,UAAM,cAAc,KAAK,UAAU,IAAI,2BAA2B,MAAM,OAAO,GAAG,IAAI,IAAI,yBAAyB,MAAM,OAAO,GAAG;AACnI,SAAK,qBAAqB,KAAK,WAAW;AAC1C,WAAO;AAAA,EACR;AAAA,EACD,kBAAkB,QAAQ;;AACxB,KAAAA,MAAA,KAAK,uBAAL,gBAAAA,IAAyB,OAAO;AAChC,eAAW,UAAU,KAAK,qBAAqB,MAAM,CAAC,GAAG;AACvD,aAAO,OAAO,MAAM;AAAA,IACrB;AAAA,EACF;AACH;AACA,MAAM,eAAe;AAAA,EACnB,YAAY,QAAQ;AAClB,SAAK,OAAO,OAAO;AACnB,SAAK,QAAQ;AACb,SAAK,eAAe;AACpB,SAAK,aAAa;AAClB,UAAM,SAAS,OAAO;AACtB,SAAK,iBAAiB,OAAO;AAC7B,SAAK,UAAU;AACf,SAAK,YAAY;AACjB,SAAK,gBAAgB,OAAO,gBAAgB;AAC5C,SAAK,kBAAkB,OAAO;AAC9B,QAAI,CAAC,KAAK,mBAAmB,CAAC,KAAK,eAAe;AAChD,WAAK,gBAAgB;AAAA,IACtB;AACD,SAAK,wBAAwB,CAAC,OAAO;AACrC,SAAK,oBAAoB,CAAC,OAAO;AACjC,SAAK,kBAAkB;AACvB,SAAK,kBAAkB,QAAQ;AAC/B,SAAK,qBAAqB,QAAQ;EACnC;AAAA,EACD,IAAI,eAAe;AACjB,WAAO,KAAK,mBAAmB;AAAA,EAChC;AAAA,EACD,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,gBAAgB;AAClB,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,mBAAmB;AACrB,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,uBAAuB;AACzB,WAAO,KAAK;AAAA,EACb;AAAA,EACD,MAAM,OAAO;;AACX,UAAM,KAAK,gBAAgB;AAC3B,QAAI,KAAK,OAAO;AACd,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACd;AAAA,IACK;AACD,QAAI,KAAK,cAAc;AACrB,YAAM,KAAK;AAAA,IACZ;AACD,UAAM,QAAQ,KAAK,gBAAgB,KAAI;AACvC,QAAI,UAAU,MAAM;AAClB,WAAK,kBAAkB,QAAQ;AAC/B,aAAO,KAAK;IACb;AACD,SAAK,WAAW,MAAM;AACtB,KAAAA,MAAA,KAAK,eAAL,gBAAAA,IAAA,WAAkB;AAAA,MAChB,QAAQ,KAAK;AAAA,MACb,OAAO,KAAK;AAAA,IAClB;AACI,UAAM,SAAS,IAAI,WAAW,KAAK,EAAE;AACrC,WAAO;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,IACZ;AAAA,EACG;AAAA,EACD,OAAO,QAAQ;AACb,QAAI,CAAC,KAAK,iBAAiB;AACzB,WAAK,OAAO,MAAM;AAClB;AAAA,IACD;AACD,SAAK,gBAAgB,QAAQ,MAAM;AAAA,EACpC;AAAA,EACD,OAAO,QAAQ;AACb,SAAK,eAAe;AACpB,SAAK,gBAAgB;EACtB;AAAA,EACD,mBAAmB,gBAAgB;AACjC,SAAK,kBAAkB;AACvB,mBAAe,GAAG,YAAY,MAAM;AAClC,WAAK,gBAAgB;IAC3B,CAAK;AACD,mBAAe,GAAG,OAAO,MAAM;AAC7B,qBAAe,QAAO;AACtB,WAAK,QAAQ;AACb,WAAK,gBAAgB;IAC3B,CAAK;AACD,mBAAe,GAAG,SAAS,YAAU;AACnC,WAAK,OAAO,MAAM;AAAA,IACxB,CAAK;AACD,QAAI,CAAC,KAAK,yBAAyB,KAAK,mBAAmB;AACzD,WAAK,OAAO,IAAI,eAAe,uBAAuB,CAAC;AAAA,IACxD;AACD,QAAI,KAAK,cAAc;AACrB,WAAK,gBAAgB,QAAQ,KAAK,YAAY;AAAA,IAC/C;AAAA,EACF;AACH;AACA,MAAM,gBAAgB;AAAA,EACpB,YAAY,QAAQ;AAClB,SAAK,OAAO,OAAO;AACnB,SAAK,QAAQ;AACb,SAAK,eAAe;AACpB,SAAK,aAAa;AAClB,SAAK,UAAU;AACf,SAAK,kBAAkB;AACvB,SAAK,kBAAkB,QAAQ;AAC/B,UAAM,SAAS,OAAO;AACtB,SAAK,wBAAwB,CAAC,OAAO;AAAA,EACtC;AAAA,EACD,IAAI,uBAAuB;AACzB,WAAO,KAAK;AAAA,EACb;AAAA,EACD,MAAM,OAAO;;AACX,UAAM,KAAK,gBAAgB;AAC3B,QAAI,KAAK,OAAO;AACd,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACd;AAAA,IACK;AACD,QAAI,KAAK,cAAc;AACrB,YAAM,KAAK;AAAA,IACZ;AACD,UAAM,QAAQ,KAAK,gBAAgB,KAAI;AACvC,QAAI,UAAU,MAAM;AAClB,WAAK,kBAAkB,QAAQ;AAC/B,aAAO,KAAK;IACb;AACD,SAAK,WAAW,MAAM;AACtB,KAAAA,MAAA,KAAK,eAAL,gBAAAA,IAAA,WAAkB;AAAA,MAChB,QAAQ,KAAK;AAAA,IACnB;AACI,UAAM,SAAS,IAAI,WAAW,KAAK,EAAE;AACrC,WAAO;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,IACZ;AAAA,EACG;AAAA,EACD,OAAO,QAAQ;AACb,QAAI,CAAC,KAAK,iBAAiB;AACzB,WAAK,OAAO,MAAM;AAClB;AAAA,IACD;AACD,SAAK,gBAAgB,QAAQ,MAAM;AAAA,EACpC;AAAA,EACD,OAAO,QAAQ;AACb,SAAK,eAAe;AACpB,SAAK,gBAAgB;EACtB;AAAA,EACD,mBAAmB,gBAAgB;AACjC,SAAK,kBAAkB;AACvB,mBAAe,GAAG,YAAY,MAAM;AAClC,WAAK,gBAAgB;IAC3B,CAAK;AACD,mBAAe,GAAG,OAAO,MAAM;AAC7B,qBAAe,QAAO;AACtB,WAAK,QAAQ;AACb,WAAK,gBAAgB;IAC3B,CAAK;AACD,mBAAe,GAAG,SAAS,YAAU;AACnC,WAAK,OAAO,MAAM;AAAA,IACxB,CAAK;AACD,QAAI,KAAK,cAAc;AACrB,WAAK,gBAAgB,QAAQ,KAAK,YAAY;AAAA,IAC/C;AAAA,EACF;AACH;AACA,MAAM,gCAAgC,eAAe;AAAA,EACnD,YAAY,QAAQ;AAClB,UAAM,MAAM;AACZ,UAAM,iBAAiB,cAAY;AACjC,UAAI,SAAS,eAAe,KAAK;AAC/B,cAAM,QAAQ,IAAI,oBAAoB,gBAAgB,KAAK,IAAI,IAAI;AACnE,aAAK,eAAe;AACpB,aAAK,mBAAmB,OAAO,KAAK;AACpC;AAAA,MACD;AACD,WAAK,mBAAmB;AACxB,WAAK,mBAAmB,QAAQ;AAChC,YAAM,oBAAoB,UAAQ,KAAK,gBAAgB,QAAQ,KAAK,YAAW,CAAE;AACjF,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACD,IAAG,iCAAiC;AAAA,QACnC;AAAA,QACA,QAAQ,OAAO;AAAA,QACf,gBAAgB,KAAK;AAAA,QACrB,cAAc,KAAK;AAAA,MAC3B,CAAO;AACD,WAAK,oBAAoB;AACzB,WAAK,iBAAiB,mBAAmB,KAAK;AAC9C,WAAK,YAAY,0BAA0B,iBAAiB;AAAA,IAClE;AACI,SAAK,WAAW,cAAc,KAAK,MAAM,OAAO,aAAa,cAAc;AAC3E,SAAK,SAAS,GAAG,SAAS,YAAU;AAClC,WAAK,eAAe;AACpB,WAAK,mBAAmB,OAAO,MAAM;AAAA,IAC3C,CAAK;AACD,SAAK,SAAS;EACf;AACH;AACA,MAAM,iCAAiC,gBAAgB;AAAA,EACrD,YAAY,QAAQ,OAAO,KAAK;AAC9B,UAAM,MAAM;AACZ,SAAK,eAAe;AACpB,eAAW,YAAY,OAAO,aAAa;AACzC,YAAM,QAAQ,OAAO,YAAY,QAAQ;AACzC,UAAI,UAAU,QAAW;AACvB;AAAA,MACD;AACD,WAAK,aAAa,QAAQ,IAAI;AAAA,IAC/B;AACD,SAAK,aAAa,QAAQ,SAAS,KAAK,IAAI,MAAM,CAAC;AACnD,UAAM,iBAAiB,cAAY;AACjC,UAAI,SAAS,eAAe,KAAK;AAC/B,cAAM,QAAQ,IAAI,oBAAoB,gBAAgB,KAAK,IAAI,IAAI;AACnE,aAAK,eAAe;AACpB;AAAA,MACD;AACD,WAAK,mBAAmB,QAAQ;AAAA,IACtC;AACI,SAAK,WAAW,cAAc,KAAK,MAAM,KAAK,cAAc,cAAc;AAC1E,SAAK,SAAS,GAAG,SAAS,YAAU;AAClC,WAAK,eAAe;AAAA,IAC1B,CAAK;AACD,SAAK,SAAS;EACf;AACH;AACA,MAAM,kCAAkC,eAAe;AAAA,EACrD,YAAY,QAAQ;AAClB,UAAM,MAAM;AACZ,UAAM,KAAK,aAAa,IAAI,IAAI;AAChC,OAAG,SAAS,MAAM,KAAK,IAAI,EAAE,KAAK,UAAQ;AACxC,WAAK,iBAAiB,KAAK;AAC3B,WAAK,mBAAmB,GAAG,iBAAiB,KAAK,IAAI,CAAC;AACtD,WAAK,mBAAmB;IACzB,GAAE,WAAS;AACV,UAAI,MAAM,SAAS,UAAU;AAC3B,gBAAQ,IAAI,oBAAoB,gBAAgB,KAAK,IAAI,IAAI;AAAA,MAC9D;AACD,WAAK,eAAe;AACpB,WAAK,mBAAmB,OAAO,KAAK;AAAA,IAC1C,CAAK;AAAA,EACF;AACH;AACA,MAAM,mCAAmC,gBAAgB;AAAA,EACvD,YAAY,QAAQ,OAAO,KAAK;AAC9B,UAAM,MAAM;AACZ,UAAM,KAAK,aAAa,IAAI,IAAI;AAChC,SAAK,mBAAmB,GAAG,iBAAiB,KAAK,MAAM;AAAA,MACrD;AAAA,MACA,KAAK,MAAM;AAAA,IACZ,EAAC;AAAA,EACH;AACH;AAKA,MAAM,0BAA0B;AAChC,MAAM,oBAAoB;AAC1B,MAAM,sBAAsB;AAC5B,MAAM,aAAN,MAAM,WAAU;AAAA,EAuBd,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAAK;AAuGH;AA+BA;AA0EA;AA1OA,oCAAc,QAAQ;AACtB,uBAAAqB,aAAa;AACb,6CAAuB;AACvB,8CAAwB,CAAC,GAAC,gBAAW,kBAAX,mBAA0B;AACpD,8BAAQ;AACR,0CAAoB;AACpB,oCAAc;AACd,mCAAa;AACb,gCAAU;AACV,uCAAiB;AACjB,kCAAY;AACZ,+BAAS;AACT,oCAAc,uBAAO,OAAO,IAAI;AAChC,6CAAuB;AACvB,2CAAqB;AACrB,kCAAY;AACZ,2CAAqB,oBAAI;AACzB,mCAAa;;AAUX,QAAI,6BAA6B,gBAAgB;AAC/C,yBAAK,oBAAqB;AAAA,IAChC,WAAe,OAAO,sBAAsB,UAAU;AAChD,yBAAK,oBAAqB,IAAI,eAAe;AAAA,QAC3C,MAAM,YAAY;AAChB,qBAAW,QAAQ,iBAAiB;AACpC,qBAAW,MAAK;AAAA,QACjB;AAAA,MACT,CAAO;AAAA,IACP,OAAW;AACL,YAAM,IAAI,MAAM,6CAA6C;AAAA,IAC9D;AACD,uBAAKA,aAAa,mBAAK,gBAAiB;AACxC,uBAAK,QAAS,SAAS,SAAS,WAAW,oBAAoB;AAC/D,uBAAK,WAAY,SAAS;AAC1B,uBAAK,mBAAoB;AAAA,MACvB,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,KAAK;AAAA,MACL,YAAY;AAAA,MACZ,KAAK;AAAA,IACX;AACI,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,IAAQ,SAAS;AACb,uBAAK,YAAa,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,QAAQ,UAAU;AAC1D,uBAAK,YAAa;AAClB,uBAAK,aAAc;AACnB,oBAAArB,MAAA,YAAU,0DAAV,KAAAA;AACA,uBAAmB,WAAW,QAAQ;AACtC,uBAAK,aAAY,QAAQ,MAAM,MAAM;AAAA,IAAE,GAAE,KAAK,MAAM;AAClD,+BAAU,oBAAmB,OAAO,IAAI;AACxC,yBAAK,mBAAoB;AACzB,yBAAK,aAAc;AAAA,IACzB,CAAK;AAAA,EACF;AAAA,EACD,SAAS;AACP,UAAM,OAAO,MAAM;AACjB,yBAAK,SAAQ,KAAM,EAAC,KAAK,CAAC;AAAA,QACxB;AAAA,QACA;AAAA,MACR,MAAY;AACJ,YAAI,MAAM;AACR,6BAAK,aAAY;AACjB;AAAA,QACD;AACD,2BAAK,UAAL,mBAAK,OAAU,MAAM;AACrB,eAAO,OAAO,mBAAK,cAAa,MAAM,MAAM;AAC5C,8BAAK,gCAAL,WAAmB,MAAM;AACzB;MACR,GAAS,mBAAK,aAAY,MAAM;AAAA,IAChC;AACI,uBAAK,SAAU,mBAAK,oBAAmB,UAAS;AAChD,6BAAU,oBAAmB,IAAI,IAAI;AACrC;AACA,WAAO,mBAAK,aAAY;AAAA,EACzB;AAAA,EACD,OAAO;AAAA,IACL;AAAA,IACA,WAAW;AAAA,EACf,GAAK;;AACD,UAAM,QAAQ,SAAS,SAAS,WAAW,oBAAoB;AAC/D,UAAM,WAAW,SAAS;AAC1B,QAAI,aAAa,mBAAK,YAAW;AAC/B;AACA,yBAAK,WAAY;AACjB,yBAAmB,mBAAK,iBAAgB;AAAA,QACtC;AAAA,MACR,CAAO;AAAA,IACF;AACD,QAAI,UAAU,mBAAK,SAAQ;AACzB;AACA,yBAAK,QAAS;AACd,YAAM,SAAS;AAAA,QACb,cAAc;AAAA,QACd,gBAAgB;AAAA,QAChB,KAAK;AAAA,QACL,YAAY;AAAA,QACZ,KAAK,gBAAAA,MAAA,YAAU,oBAAV,KAAAA,KAAkB,mBAAK;AAAA,MACpC;AACM,iBAAW,OAAO,mBAAK,YAAW;AAChC,eAAO,aAAa,mBAAK,oBAAmB,IAAI,GAAG;AACnD,eAAO,MAAM;AACb,8BAAK,oBAAL,WAAa;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAAA,EACD,SAAS;;AACP,UAAM,UAAU,IAAI,eAAe,2BAA2B;AAC9D,KAAAA,MAAA,mBAAK,aAAL,gBAAAA,IAAc,OAAO,SAAS,MAAM,MAAM;AAAA;AAC1C,uBAAK,SAAU;AACf,uBAAK,aAAY,OAAO,OAAO;AAAA,EAChC;AAAA,EACD,IAAI,WAAW;AACb,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,IAAI,sBAAsB;AACxB,WAAO,mBAAK;AAAA,EACb;AAAA,EAoJD,OAAO,UAAU;AACf,QAAI,mBAAK,oBAAmB,OAAO,GAAG;AACpC;AAAA,IACD;AACD,uBAAK,cAAa;AAClB,eAAW;AAAA,MACT;AAAA,IACN,KAAS,mBAAK,iBAAgB,UAAU;AAClC,aAAO,OAAM;AAAA,IACd;AACD,uBAAK,iBAAgB;EACtB;AA4EH;AA3WE;AACAqB,cAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AA4GP;AAAA,kBAAa,SAAC,OAAO;;AACnB,MAAI,mBAAK,uBAAsB;AAC7B;AAAA,EACD;AACD,2BAAK,oBAAkB,QAAvB,GAAuB,MAAQ,gBAAArB,MAAA,YAAU,oBAAV,KAAAA,KAAkB,mBAAK;AACtD,QAAM,WAAW,mBAAK,YACpB,sBAAsB,mBAAK;AAC7B,aAAW,QAAQ,OAAO;AACxB,QAAI,SAAS,SAAS,yBAAyB;AAC7C,WAAK,uDAAuD;AAC5D,yBAAK,sBAAuB;AAC5B;AAAA,IACD;AACD,QAAI,KAAK,QAAQ,QAAW;AAC1B,UAAI,KAAK,SAAS,6BAA6B,KAAK,SAAS,sBAAsB;AACjF,cAAM,SAAS,mBAAKqB;AACpB,2BAAKA,aAAa,SAAS,cAAc,MAAM;AAC/C,2BAAKA,aAAW,UAAU,IAAI,eAAe;AAC7C,YAAI,KAAK,OAAO,MAAM;AACpB,6BAAKA,aAAW,aAAa,MAAM,GAAG,KAAK,EAAE,EAAE;AAAA,QAChD;AACD,eAAO,OAAO,mBAAKA,YAAU;AAAA,MACvC,WAAmB,KAAK,SAAS,oBAAoB;AAC3C,2BAAKA,aAAa,mBAAKA,aAAW;AAAA,MACnC;AACD;AAAA,IACD;AACD,wBAAoB,KAAK,KAAK,GAAG;AACjC,0BAAK,4BAAL,WAAiB;AAAA,EAClB;AACF;AACD;AAAA,gBAAW,SAAC,MAAM;;AAChB,QAAM,UAAU,SAAS,cAAc,MAAM;AAC7C,QAAM,oBAAoB;AAAA,IACxB,OAAO;AAAA,IACP,aAAa;AAAA,IACb,SAAS,KAAK,QAAQ;AAAA,IACtB,QAAQ,KAAK;AAAA,IACb,UAAU;AAAA,EAChB;AACI,qBAAK,WAAU,KAAK,OAAO;AAC3B,QAAM,KAAK,KAAK,UAAU,mBAAK,aAAY,KAAK,SAAS;AACzD,MAAI,QAAQ,KAAK,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AACnC,QAAM,QAAQ,mBAAK,aAAY,KAAK,QAAQ;AAC5C,MAAI,MAAM,UAAU;AAClB,aAAS,KAAK,KAAK;AAAA,EACpB;AACD,QAAM,aAAa,mBAAK,0BAAyB,MAAM,oBAAoB,MAAM;AACjF,QAAM,aAAa,KAAK,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAC1C,QAAM,aAAa,aAAa,gBAAArB,MAAA,YAAU,0BAAV,KAAAA,KAAqB,YAAY,mBAAK;AACtE,MAAI,MAAM;AACV,MAAI,UAAU,GAAG;AACf,WAAO,GAAG,CAAC;AACX,UAAM,GAAG,CAAC,IAAI;AAAA,EACpB,OAAW;AACL,WAAO,GAAG,CAAC,IAAI,aAAa,KAAK,IAAI,KAAK;AAC1C,UAAM,GAAG,CAAC,IAAI,aAAa,KAAK,IAAI,KAAK;AAAA,EAC1C;AACD,QAAM,iBAAiB;AACvB,QAAM,WAAW,QAAQ;AACzB,MAAI,mBAAKqB,iBAAe,mBAAK,iBAAgB;AAC3C,aAAS,OAAO,IAAI,MAAM,OAAO,mBAAK,aAAY,QAAQ,CAAC,CAAC;AAC5D,aAAS,MAAM,IAAI,MAAM,MAAM,mBAAK,cAAa,QAAQ,CAAC,CAAC;AAAA,EACjE,OAAW;AACL,aAAS,OAAO,GAAG,cAAc,GAAG,KAAK,QAAQ,CAAC,CAAC;AACnD,aAAS,MAAM,GAAG,cAAc,GAAG,IAAI,QAAQ,CAAC,CAAC;AAAA,EAClD;AACD,WAAS,WAAW,GAAG,cAAc,IAAI,yBAAU,gBAAe,YAAY,QAAQ,CAAC,CAAC;AACxF,WAAS,aAAa;AACtB,oBAAkB,WAAW;AAC7B,UAAQ,aAAa,QAAQ,cAAc;AAC3C,UAAQ,cAAc,KAAK;AAC3B,UAAQ,MAAM,KAAK;AACnB,MAAI,mBAAK,wBAAuB;AAC9B,YAAQ,QAAQ,WAAW,MAAM,8BAA8B,KAAK;AAAA,EACrE;AACD,MAAI,UAAU,GAAG;AACf,sBAAkB,QAAQ,SAAS,MAAM,KAAK;AAAA,EAC/C;AACD,MAAI,kBAAkB;AACtB,MAAI,KAAK,IAAI,SAAS,GAAG;AACvB,sBAAkB;AAAA,EACnB,WAAU,KAAK,QAAQ,OAAO,KAAK,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC,GAAG;AACtE,UAAM,YAAY,KAAK,IAAI,KAAK,UAAU,CAAC,CAAC,GAC1C,YAAY,KAAK,IAAI,KAAK,UAAU,CAAC,CAAC;AACxC,QAAI,cAAc,aAAa,KAAK,IAAI,WAAW,SAAS,IAAI,KAAK,IAAI,WAAW,SAAS,IAAI,KAAK;AACpG,wBAAkB;AAAA,IACnB;AAAA,EACF;AACD,MAAI,iBAAiB;AACnB,sBAAkB,cAAc,MAAM,WAAW,KAAK,SAAS,KAAK;AAAA,EACrE;AACD,qBAAK,oBAAmB,IAAI,SAAS,iBAAiB;AACtD,qBAAK,mBAAkB,MAAM;AAC7B,qBAAK,mBAAkB,aAAa;AACpC,wBAAK,oBAAL,WAAa,mBAAK;AAClB,MAAI,kBAAkB,SAAS;AAC7B,uBAAKA,aAAW,OAAO,OAAO;AAAA,EAC/B;AACD,MAAI,kBAAkB,QAAQ;AAC5B,UAAM,KAAK,SAAS,cAAc,IAAI;AACtC,OAAG,aAAa,QAAQ,cAAc;AACtC,uBAAKA,aAAW,OAAO,EAAE;AAAA,EAC1B;AACF;AACD;AAAA,YAAO,SAAC,QAAQ;AACd,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAG;AACJ,QAAM;AAAA,IACJ;AAAA,EACD,IAAG;AACJ,MAAI,YAAY;AAChB,MAAI,yBAAU,gBAAe,GAAG;AAC9B,gBAAY,SAAS,IAAI,yBAAU,aAAY;AAAA,EAChD;AACD,MAAI,WAAW,gBAAgB,KAAK,WAAW,SAAS;AACtD,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACD,IAAG;AACJ,QAAI,iBAAiB,YAAY,mBAAmB,YAAY;AAC9D,UAAI,OAAO,GAAG,WAAW,mBAAK,OAAM,MAAM,UAAU;AACpD,aAAO,eAAe;AACtB,aAAO,iBAAiB;AAAA,IACzB;AACD,UAAM;AAAA,MACJ;AAAA,IACD,IAAG,IAAI,YAAY,IAAI,WAAW;AACnC,QAAI,QAAQ,GAAG;AACb,kBAAY,UAAU,cAAc,mBAAK,UAAS,KAAK,KAAK,SAAS;AAAA,IACtE;AAAA,EACF;AACD,MAAI,WAAW,UAAU,GAAG;AAC1B,gBAAY,UAAU,WAAW,KAAK,QAAQ,SAAS;AAAA,EACxD;AACD,MAAI,UAAU,SAAS,GAAG;AACxB,UAAM,YAAY;AAAA,EACnB;AACF;AAaM;AAAA,YAAO,SAAC,OAAO,MAAM;AAC1B,MAAI,gBAAgB,mBAAK,iBAAgB,IAAI,gBAAS,GAAE;AACxD,MAAI,CAAC,eAAe;AAClB,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,WAAO,YAAY;AACnB,WAAO,OAAO;AACd,aAAS,KAAK,OAAO,MAAM;AAC3B,oBAAgB,OAAO,WAAW,MAAM;AAAA,MACtC,OAAO;AAAA,MACP,oBAAoB;AAAA,IAC5B,CAAO;AACD,uBAAK,iBAAgB,IAAI,MAAM,aAAa;AAAA,EAC7C;AACD,SAAO;AACR;AACM;AAAA,+BAA0B,WAAG;AAClC,MAAI,mBAAK,kBAAiB,MAAM;AAC9B;AAAA,EACD;AACD,QAAM,MAAM,SAAS,cAAc,KAAK;AACxC,MAAI,MAAM,UAAU;AACpB,MAAI,MAAM,aAAa;AACvB,MAAI,MAAM,WAAW;AACrB,MAAI,MAAM,WAAW;AACrB,MAAI,cAAc;AAClB,WAAS,KAAK,OAAO,GAAG;AACxB,qBAAK,cAAe,IAAI,sBAAqB,EAAG;AAChD,MAAI,OAAM;AACX;AACM;AAAA,eAAU,SAAC,YAAY,MAAM;AAClC,QAAM,eAAe,mBAAK,cAAa,IAAI,UAAU;AACrD,MAAI,cAAc;AAChB,WAAO;AAAA,EACR;AACD,QAAM,MAAM,sBAAK,oBAAL,WAAa;AACzB,QAAM,YAAY,IAAI;AACtB,MAAI,OAAO,QAAQ,IAAI,OAAO,SAAS;AACvC,MAAI,OAAO,GAAG,iBAAiB,MAAM,UAAU;AAC/C,QAAM,UAAU,IAAI,YAAY,EAAE;AAClC,MAAI,SAAS,QAAQ;AACrB,MAAI,UAAU,KAAK,IAAI,QAAQ,sBAAsB;AACrD,MAAI,QAAQ;AACV,UAAMC,SAAQ,UAAU,SAAS;AACjC,uBAAK,cAAa,IAAI,YAAYA,MAAK;AACvC,QAAI,OAAO,QAAQ,IAAI,OAAO,SAAS;AACvC,QAAI,OAAO;AACX,WAAOA;AAAA,EACR;AACD,MAAI,cAAc;AAClB,MAAI,UAAU,GAAG,GAAG,mBAAmB,iBAAiB;AACxD,MAAI,WAAW,KAAK,GAAG,CAAC;AACxB,MAAI,SAAS,IAAI,aAAa,GAAG,GAAG,mBAAmB,iBAAiB,EAAE;AAC1E,YAAU;AACV,WAAS,IAAI,OAAO,SAAS,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG;AAClD,QAAI,OAAO,CAAC,IAAI,GAAG;AACjB,gBAAU,KAAK,KAAK,IAAI,IAAI,iBAAiB;AAC7C;AAAA,IACD;AAAA,EACF;AACD,MAAI,UAAU,GAAG,GAAG,mBAAmB,iBAAiB;AACxD,MAAI,WAAW,KAAK,GAAG,iBAAiB;AACxC,WAAS,IAAI,aAAa,GAAG,GAAG,mBAAmB,iBAAiB,EAAE;AACtE,WAAS;AACT,WAAS,IAAI,GAAG,KAAK,OAAO,QAAQ,IAAI,IAAI,KAAK,GAAG;AAClD,QAAI,OAAO,CAAC,IAAI,GAAG;AACjB,eAAS,oBAAoB,KAAK,MAAM,IAAI,IAAI,iBAAiB;AACjE;AAAA,IACD;AAAA,EACF;AACD,MAAI,OAAO,QAAQ,IAAI,OAAO,SAAS;AACvC,MAAI,OAAO;AACX,QAAM,QAAQ,SAAS,UAAU,SAAS,WAAW;AACrD,qBAAK,cAAa,IAAI,YAAY,KAAK;AACvC,SAAO;AACR;AA1ED,aAjSI,YAiSG;AAeP,aAhTI,YAgTG;AAcP,aA9TI,YA8TG;AA3SP,aAnBI,YAmBG,cAAe,oBAAI;AAC1B,aApBI,YAoBG,iBAAkB,oBAAI;AAC7B,aArBI,YAqBG,cAAe;AACtB,aAtBI,YAsBG,oBAAqB,oBAAI;AAtBlC,IAAM,YAAN;AA+WA,MAAM,QAAQ;AAAA,EACZ,OAAO,YAAY,KAAK;AACtB,UAAM,QAAQ;AACd,UAAM,SAAS;AAAA,MACb;AAAA,MACA,QAAQ,uBAAO,OAAO,IAAI;AAAA,IAChC;AACI,aAAS,KAAK,MAAM;;AAClB,UAAI,CAAC,MAAM;AACT;AAAA,MACD;AACD,UAAI,MAAM;AACV,YAAM,OAAO,KAAK;AAClB,UAAI,SAAS,SAAS;AACpB,cAAM,KAAK;AAAA,MACZ,WAAU,CAAC,QAAQ,gBAAgB,IAAI,GAAG;AACzC;AAAA,MACR,YAAiBtB,MAAA,6BAAM,eAAN,gBAAAA,IAAkB,aAAa;AACxC,cAAM,KAAK,WAAW;AAAA,MAC9B,WAAiB,KAAK,OAAO;AACrB,cAAM,KAAK;AAAA,MACZ;AACD,UAAI,QAAQ,MAAM;AAChB,cAAM,KAAK;AAAA,UACT;AAAA,QACV,CAAS;AAAA,MACF;AACD,UAAI,CAAC,KAAK,UAAU;AAClB;AAAA,MACD;AACD,iBAAW,SAAS,KAAK,UAAU;AACjC,aAAK,KAAK;AAAA,MACX;AAAA,IACF;AACD,SAAK,GAAG;AACR,WAAO;AAAA,EACR;AAAA,EACD,OAAO,gBAAgB,MAAM;AAC3B,WAAO,EAAE,SAAS,cAAc,SAAS,WAAW,SAAS,YAAY,SAAS;AAAA,EACnF;AACH;AAmBA,MAAM,2BAA2B;AACjC,MAAM,8BAA8B;AACpC,MAAM,0BAA0B;AAChC,MAAM,uBAAuB,WAAW,oBAAoB;AAC5D,MAAM,2BAA2B,WAAW,wBAAwB;AACpE,MAAM,uBAAuB,WAAW,oBAAoB;AAC5D,MAAM,iCAAiC,WAAW,8BAA8B;AAChF,SAAS,YAAY,MAAM,IAAI;AAC7B,MAAI,OAAO,QAAQ,YAAY,eAAe,KAAK;AACjD,UAAM;AAAA,MACJ,KAAK;AAAA,IACX;AAAA,EACA,WAAa,eAAe,eAAe,YAAY,OAAO,GAAG,GAAG;AAChE,UAAM;AAAA,MACJ,MAAM;AAAA,IACZ;AAAA,EACG;AACD,QAAM,OAAO,IAAI;AACjB,QAAM;AAAA,IACJ;AAAA,EACD,IAAG;AACJ,QAAM,MAAM,IAAI,MAAM,WAAW,IAAI,GAAG,IAAI;AAC5C,QAAM,OAAO,IAAI,OAAO,YAAY,IAAI,IAAI,IAAI;AAChD,QAAM,cAAc,IAAI,eAAe;AACvC,QAAM,kBAAkB,IAAI,oBAAoB;AAChD,QAAM,WAAW,IAAI,YAAY;AACjC,QAAM,iBAAiB,IAAI,iBAAiB,wBAAwB,IAAI,QAAQ;AAChF,QAAM,iBAAiB,OAAO,UAAU,IAAI,cAAc,KAAK,IAAI,iBAAiB,IAAI,IAAI,iBAAiB;AAC7G,MAAI,SAAS,IAAI,kBAAkB,YAAY,IAAI,SAAS;AAC5D,QAAMuB,aAAY,IAAI;AACtB,QAAM,aAAa,OAAO,IAAI,eAAe,YAAY,CAAC,aAAa,IAAI,UAAU,IAAI,IAAI,aAAa;AAC1G,QAAM,UAAU,OAAO,IAAI,YAAY,WAAW,IAAI,UAAU;AAChE,QAAM,aAAa,IAAI,eAAe;AACtC,QAAM,oBAAoB,IAAI,qBAAqB;AACnD,QAAM,sBAAsB,OAAO,IAAI,wBAAwB,WAAW,IAAI,sBAAsB;AACpG,QAAM,0BAA0B,IAAI,2BAA2B;AAC/D,QAAM,eAAe,IAAI,iBAAiB;AAC1C,QAAM,eAAe,OAAO,UAAU,IAAI,YAAY,KAAK,IAAI,eAAe,KAAK,IAAI,eAAe;AACtG,QAAMC,mBAAkB,IAAI,oBAAoB;AAChD,QAAM,6BAA6B,OAAO,IAAI,+BAA+B,YAAY,IAAI,6BAA6B,CAAC;AAC3H,QAAM,uBAAuB,OAAO,UAAU,IAAI,oBAAoB,IAAI,IAAI,uBAAuB;AACrG,QAAM,kBAAkB,OAAO,IAAI,oBAAoB,YAAY,IAAI,kBAAkB;AACzF,QAAM,sBAAsB,IAAI,wBAAwB;AACxD,QAAM,YAAY,IAAI,cAAc;AACpC,QAAM,gBAAgB,IAAI,iBAAiB,WAAW;AACtD,QAAM,eAAe,IAAI,iBAAiB;AAC1C,QAAM,gBAAgB,IAAI,kBAAkB;AAC5C,QAAM,mBAAmB,IAAI,qBAAqB;AAClD,QAAM,SAAS,IAAI,WAAW;AAC9B,QAAM,YAAY,IAAI,cAAc;AACpC,QAAM,SAAS,iBAAiB,eAAe,SAAS,IAAI,UAAU;AACtE,QAAM,iBAAiB,OAAO,IAAI,mBAAmB,YAAY,IAAI,iBAAiB,CAAC,YAAY,CAAC;AACpG,QAAM,iBAAiB,OAAO,IAAI,mBAAmB,YAAY,IAAI,iBAAiB,sBAAsB,wBAAwB,4BAA4B,8BAA8B,WAAW,uBAAuB,gBAAgB,SAAS,SAAS,OAAO,KAAK,gBAAgB,qBAAqB,SAAS,OAAO;AACnU,QAAM,gBAAgB,IAAI,iBAAiB,IAAI,qBAAqB;AAAA,IAClE;AAAA,IACA;AAAA,EACJ,CAAG;AACD,QAAM,gBAAgB,IAAI,iBAAiB,IAAI,qBAAqB;AAAA,IAClE;AAAA,IACA;AAAA,EACJ,CAAG;AACD,QAAM,eAAe;AACrB,oBAAkBD,UAAS;AAC3B,QAAM,mBAAmB;AAAA,IACvB;AAAA,IACA;AAAA,EACJ;AACE,MAAI,CAAC,gBAAgB;AACnB,qBAAiB,oBAAoB,IAAI,kBAAkB;AAAA,MACzD,SAAS;AAAA,MACT,cAAc;AAAA,IACpB,CAAK;AACD,qBAAiB,0BAA0B,IAAI,wBAAwB;AAAA,MACrE,SAAS;AAAA,IACf,CAAK;AAAA,EACF;AACD,MAAI,CAAC,QAAQ;AACX,UAAM,eAAe;AAAA,MACnB,WAAAA;AAAA,MACA,MAAM,oBAAoB;AAAA,IAChC;AACI,aAAS,aAAa,OAAO,UAAU,SAAS,YAAY,IAAI,IAAI,UAAU,YAAY;AAC1F,SAAK,UAAU;AAAA,EAChB;AACD,QAAM,YAAY;AAAA,IAChB;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA,iBAAAC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS,iBAAiB,UAAU;AAAA,MACpC,qBAAqB,iBAAiB,sBAAsB;AAAA,IAC7D;AAAA,EACL;AACE,QAAM,kBAAkB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,MACb;AAAA,MACA;AAAA,IACD;AAAA,EACL;AACE,SAAO,QAAQ,KAAK,WAAY;AAC9B,QAAI,KAAK,WAAW;AAClB,YAAM,IAAI,MAAM,iBAAiB;AAAA,IAClC;AACD,QAAI,OAAO,WAAW;AACpB,YAAM,IAAI,MAAM,sBAAsB;AAAA,IACvC;AACD,UAAM,kBAAkB,OAAO,eAAe,gBAAgB,iBAAiB,WAAW,OAAO,CAAC,KAAK,MAAM,IAAI,IAAI;AACrH,QAAI;AACJ,QAAI,gBAAgB;AAClB,sBAAgB,IAAI,uBAAuB,gBAAgB;AAAA,QACzD;AAAA,QACA;AAAA,MACR,CAAO;AAAA,IACP,WAAe,CAAC,MAAM;AAChB,UAAI,CAAC,KAAK;AACR,cAAM,IAAI,MAAM,4CAA4C;AAAA,MAC7D;AACD,YAAM,yBAAyB,YAAU;AACvC,YAAI,UAAU;AACZ,gBAAM,mBAAmB,WAAY;AACnC,mBAAO,OAAO,UAAU,eAAe,OAAO,aAAa,eAAe,UAAU,SAAS;AAAA,UACzG;AACU,iBAAO,iBAAkB,KAAI,gBAAgB,OAAO,GAAG,IAAI,IAAI,eAAe,MAAM,IAAI,IAAI,cAAc,MAAM;AAAA,QACjH;AACD,eAAO,gBAAgB,OAAO,GAAG,IAAI,IAAI,eAAe,MAAM,IAAI,IAAI,iBAAiB,MAAM;AAAA,MACrG;AACM,sBAAgB,uBAAuB;AAAA,QACrC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACR,CAAO;AAAA,IACF;AACD,WAAO,gBAAgB,KAAK,cAAY;AACtC,UAAI,KAAK,WAAW;AAClB,cAAM,IAAI,MAAM,iBAAiB;AAAA,MAClC;AACD,UAAI,OAAO,WAAW;AACpB,cAAM,IAAI,MAAM,sBAAsB;AAAA,MACvC;AACD,YAAM,iBAAiB,IAAI,eAAe,OAAO,UAAU,OAAO,IAAI;AACtE,YAAM,YAAY,IAAI,gBAAgB,gBAAgB,MAAM,eAAe,iBAAiB,gBAAgB;AAC5G,WAAK,aAAa;AAClB,qBAAe,KAAK,SAAS,IAAI;AAAA,IACvC,CAAK;AAAA,EACF,GAAE,MAAM,KAAK,YAAY,MAAM;AAChC,SAAO;AACT;AACA,SAAS,WAAW,KAAK;AACvB,MAAI,eAAe,KAAK;AACtB,WAAO,IAAI;AAAA,EACZ;AACD,MAAI;AACF,WAAO,IAAI,IAAI,KAAK,OAAO,QAAQ,EAAE;AAAA,EACzC,QAAU;AACN,QAAI,YAAY,OAAO,QAAQ,UAAU;AACvC,aAAO;AAAA,IACR;AAAA,EACF;AACD,QAAM,IAAI,MAAM,oFAAyF;AAC3G;AACA,SAAS,YAAY,KAAK;AACxB,MAAI,YAAY,OAAO,WAAW,eAAe,eAAe,QAAQ;AACtE,UAAM,IAAI,MAAM,mEAAmE;AAAA,EACpF;AACD,MAAI,eAAe,cAAc,IAAI,eAAe,IAAI,OAAO,YAAY;AACzE,WAAO;AAAA,EACR;AACD,MAAI,OAAO,QAAQ,UAAU;AAC3B,WAAO,cAAc,GAAG;AAAA,EACzB;AACD,MAAI,eAAe,eAAe,YAAY,OAAO,GAAG,KAAK,OAAO,QAAQ,YAAY,CAAC,MAAM,2BAAK,MAAM,GAAG;AAC3G,WAAO,IAAI,WAAW,GAAG;AAAA,EAC1B;AACD,QAAM,IAAI,MAAM,4GAAiH;AACnI;AACA,SAAS,WAAW,KAAK;AACvB,SAAO,OAAO,QAAQ,YAAY,OAAO,UAAU,2BAAK,GAAG,KAAK,IAAI,OAAO,KAAK,OAAO,UAAU,2BAAK,GAAG,KAAK,IAAI,OAAO;AAC3H;AACA,MAAM,0BAAN,MAAM,wBAAuB;AAAA,EAE3B,cAAc;AACZ,SAAK,cAAc,QAAQ;AAC3B,SAAK,aAAa;AAClB,SAAK,UAAU;AACf,SAAK,QAAQ,IAAI,0CAAuBC,SAAvB,GAA+B;AAChD,SAAK,YAAY;AACjB,SAAK,aAAa;AAClB,SAAK,aAAa;AAAA,EACnB;AAAA,EACD,IAAI,UAAU;AACZ,WAAO,KAAK,YAAY;AAAA,EACzB;AAAA,EACD,MAAM,UAAU;;AACd,SAAK,YAAY;AACjB,QAAI;AACF,WAAIzB,MAAA,KAAK,YAAL,gBAAAA,IAAc,MAAM;AACtB,aAAK,QAAQ,kBAAkB;AAAA,MAChC;AACD,cAAM,UAAK,eAAL,mBAAiB;AAAA,IACxB,SAAQ,IAAI;AACX,WAAI,UAAK,YAAL,mBAAc,MAAM;AACtB,eAAO,KAAK,QAAQ;AAAA,MACrB;AACD,YAAM;AAAA,IACP;AACD,SAAK,aAAa;AAClB,QAAI,KAAK,SAAS;AAChB,WAAK,QAAQ;AACb,WAAK,UAAU;AAAA,IAChB;AAAA,EACF;AACH;AAhCSyB,UAAA;AAAP,aADI,yBACGA,SAAS;AADlB,IAAM,yBAAN;AAkCA,MAAM,sBAAsB;AAAA,EAC1B,YAAY,QAAQ,aAAa,kBAAkB,OAAO,6BAA6B,MAAM;AAC3F,SAAK,SAAS;AACd,SAAK,cAAc;AACnB,SAAK,kBAAkB;AACvB,SAAK,6BAA6B;AAClC,SAAK,kBAAkB;AACvB,SAAK,qBAAqB;AAC1B,SAAK,4BAA4B;AACjC,SAAK,4BAA4B;AACjC,SAAK,mBAAmB,QAAQ;EACjC;AAAA,EACD,iBAAiB,UAAU;AACzB,SAAK,gBAAgB,KAAK,QAAQ;AAAA,EACnC;AAAA,EACD,oBAAoB,UAAU;AAC5B,SAAK,mBAAmB,KAAK,QAAQ;AAAA,EACtC;AAAA,EACD,2BAA2B,UAAU;AACnC,SAAK,0BAA0B,KAAK,QAAQ;AAAA,EAC7C;AAAA,EACD,2BAA2B,UAAU;AACnC,SAAK,0BAA0B,KAAK,QAAQ;AAAA,EAC7C;AAAA,EACD,YAAY,OAAO,OAAO;AACxB,eAAW,YAAY,KAAK,iBAAiB;AAC3C,eAAS,OAAO,KAAK;AAAA,IACtB;AAAA,EACF;AAAA,EACD,eAAe,QAAQ,OAAO;AAC5B,SAAK,iBAAiB,QAAQ,KAAK,MAAM;AACvC,iBAAW,YAAY,KAAK,oBAAoB;AAC9C,iBAAS,QAAQ,KAAK;AAAA,MACvB;AAAA,IACP,CAAK;AAAA,EACF;AAAA,EACD,sBAAsB,OAAO;AAC3B,SAAK,iBAAiB,QAAQ,KAAK,MAAM;AACvC,iBAAW,YAAY,KAAK,2BAA2B;AACrD,iBAAS,KAAK;AAAA,MACf;AAAA,IACP,CAAK;AAAA,EACF;AAAA,EACD,wBAAwB;AACtB,SAAK,iBAAiB,QAAQ,KAAK,MAAM;AACvC,iBAAW,YAAY,KAAK,2BAA2B;AACrD;MACD;AAAA,IACP,CAAK;AAAA,EACF;AAAA,EACD,iBAAiB;AACf,SAAK,iBAAiB;EACvB;AAAA,EACD,iBAAiB,OAAO,KAAK;AAC3B,gBAAY,wDAAwD;AAAA,EACrE;AAAA,EACD,QAAQ;AAAA,EAAE;AACZ;AACA,MAAM,iBAAiB;AAAA,EACrB,YAAY,SAAS,WAAW;AAC9B,SAAK,WAAW;AAChB,SAAK,aAAa;AAAA,EACnB;AAAA,EACD,IAAI,oBAAoB;AACtB,WAAO,KAAK,WAAW;AAAA,EACxB;AAAA,EACD,IAAI,gBAAgB;AAClB,WAAO,KAAK,WAAW;AAAA,EACxB;AAAA,EACD,IAAI,WAAW;AACb,WAAO,KAAK,SAAS;AAAA,EACtB;AAAA,EACD,IAAI,eAAe;AACjB,WAAO,KAAK,SAAS;AAAA,EACtB;AAAA,EACD,IAAI,YAAY;AACd,WAAO,OAAO,MAAM,aAAa,CAAC,CAAC,KAAK,WAAW,WAAW;AAAA,EAC/D;AAAA,EACD,IAAI,aAAa;AACf,WAAO,KAAK,WAAW;AAAA,EACxB;AAAA,EACD,QAAQ,YAAY;AAClB,WAAO,KAAK,WAAW,QAAQ,UAAU;AAAA,EAC1C;AAAA,EACD,aAAa,KAAK;AAChB,WAAO,KAAK,WAAW,aAAa,GAAG;AAAA,EACxC;AAAA,EACD,kBAAkB;AAChB,WAAO,KAAK,WAAW;EACxB;AAAA,EACD,eAAe,IAAI;AACjB,WAAO,KAAK,WAAW,eAAe,EAAE;AAAA,EACzC;AAAA,EACD,gBAAgB;AACd,WAAO,KAAK,WAAW;EACxB;AAAA,EACD,gBAAgB;AACd,WAAO,KAAK,WAAW;EACxB;AAAA,EACD,cAAc;AACZ,WAAO,KAAK,WAAW;EACxB;AAAA,EACD,uBAAuB;AACrB,WAAO,KAAK,WAAW;EACxB;AAAA,EACD,gBAAgB;AACd,WAAO,KAAK,WAAW;EACxB;AAAA,EACD,iBAAiB;AACf,WAAO,KAAK,WAAW;EACxB;AAAA,EACD,eAAe;AACb,WAAO,KAAK,WAAW;EACxB;AAAA,EACD,aAAa;AACX,WAAO,KAAK,WAAW;EACxB;AAAA,EACD,yBAAyB;AAAA,IACvB,SAAS;AAAA,EACV,IAAG,IAAI;AACN,UAAM;AAAA,MACJ;AAAA,IACD,IAAG,KAAK,WAAW,mBAAmB,MAAM;AAC7C,WAAO,KAAK,WAAW,yBAAyB,eAAe;AAAA,EAChE;AAAA,EACD,iBAAiB;AACf,WAAO,KAAK,WAAW;EACxB;AAAA,EACD,cAAc;AACZ,WAAO,KAAK,WAAW;EACxB;AAAA,EACD,cAAc;AACZ,WAAO,KAAK,WAAW;EACxB;AAAA,EACD,UAAU;AACR,WAAO,KAAK,WAAW;EACxB;AAAA,EACD,eAAe;AACb,WAAO,KAAK,WAAW;EACxB;AAAA,EACD,kBAAkB;AAChB,WAAO,KAAK,WAAW,uBAAuB;AAAA,EAC/C;AAAA,EACD,QAAQ,kBAAkB,OAAO;AAC/B,WAAO,KAAK,WAAW,aAAa,mBAAmB,KAAK,SAAS;AAAA,EACtE;AAAA,EACD,UAAU;AACR,WAAO,KAAK,YAAY;EACzB;AAAA,EACD,iBAAiB,KAAK;AACpB,WAAO,KAAK,WAAW,iBAAiB,GAAG;AAAA,EAC5C;AAAA,EACD,IAAI,gBAAgB;AAClB,WAAO,KAAK,WAAW;AAAA,EACxB;AAAA,EACD,IAAI,cAAc;AAChB,WAAO,KAAK,WAAW;AAAA,EACxB;AAAA,EACD,kBAAkB;AAChB,WAAO,KAAK,WAAW;EACxB;AAAA,EACD,eAAe;AACb,WAAO,KAAK,WAAW;EACxB;AAAA,EACD,yBAAyB;AACvB,WAAO,KAAK,WAAW;EACxB;AACH;AACA,MAAM,aAAa;AAAA,EAGjB,YAAY,WAAW,UAAU,WAAW,SAAS,OAAO;AAyR5D;AAyBA;AApTA,+CAAyB;AACzB,wCAAkB;AAEhB,SAAK,aAAa;AAClB,SAAK,YAAY;AACjB,SAAK,aAAa;AAClB,SAAK,SAAS,SAAS,IAAI,UAAS,IAAK;AACzC,SAAK,UAAU;AACf,SAAK,aAAa,UAAU;AAC5B,SAAK,OAAO,IAAI;AAChB,SAAK,2BAA2B;AAChC,SAAK,gBAAgB,oBAAI;AACzB,SAAK,YAAY;AAAA,EAClB;AAAA,EACD,IAAI,aAAa;AACf,WAAO,KAAK,aAAa;AAAA,EAC1B;AAAA,EACD,IAAI,SAAS;AACX,WAAO,KAAK,UAAU;AAAA,EACvB;AAAA,EACD,IAAI,MAAM;AACR,WAAO,KAAK,UAAU;AAAA,EACvB;AAAA,EACD,IAAI,WAAW;AACb,WAAO,KAAK,UAAU;AAAA,EACvB;AAAA,EACD,IAAI,OAAO;AACT,WAAO,KAAK,UAAU;AAAA,EACvB;AAAA,EACD,YAAY;AAAA,IACV;AAAA,IACA,WAAW,KAAK;AAAA,IAChB,UAAU;AAAA,IACV,UAAU;AAAA,IACV,WAAW;AAAA,EACZ,IAAG,IAAI;AACN,WAAO,IAAI,aAAa;AAAA,MACtB,SAAS,KAAK;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,CAAK;AAAA,EACF;AAAA,EACD,eAAe;AAAA,IACb,SAAS;AAAA,EACV,IAAG,IAAI;AACN,UAAM;AAAA,MACJ;AAAA,IACD,IAAG,KAAK,WAAW,mBAAmB,MAAM;AAC7C,WAAO,KAAK,WAAW,eAAe,KAAK,YAAY,eAAe;AAAA,EACvE;AAAA,EACD,eAAe;AACb,WAAO,KAAK,WAAW,iBAAiB,KAAK,UAAU;AAAA,EACxD;AAAA,EACD,IAAI,gBAAgB;AAClB,WAAO,KAAK,WAAW;AAAA,EACxB;AAAA,EACD,IAAI,YAAY;AACd,WAAO,OAAO,MAAM,aAAa,CAAC,CAAC,KAAK,WAAW,WAAW;AAAA,EAC/D;AAAA,EACD,MAAM,SAAS;;AACb,aAAOzB,MAAA,KAAK,WAAW,gBAAhB,gBAAAA,IAA6B,SAAS,KAAK,gBAAe;AAAA,EAClE;AAAA,EACD,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,iBAAiB,eAAe;AAAA,IAChC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,+BAA+B;AAAA,IAC/B,sBAAsB;AAAA,IACtB,aAAa;AAAA,IACb,yBAAyB;AAAA,IACzB,YAAY;AAAA,EAChB,GAAK;;AACD,KAAAA,MAAA,KAAK,WAAL,gBAAAA,IAAa,KAAK;AAClB,UAAM,aAAa,KAAK,WAAW,mBAAmB,QAAQ,gBAAgB,wBAAwB,SAAS;AAC/G,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACD,IAAG;AACJ,uBAAK,iBAAkB;AACvB,0BAAK,8CAAL;AACA,oEAAiC,KAAK,WAAW,yBAAyB,eAAe;AACzF,QAAI,cAAc,KAAK,cAAc,IAAI,QAAQ;AACjD,QAAI,CAAC,aAAa;AAChB,oBAAc,uBAAO,OAAO,IAAI;AAChC,WAAK,cAAc,IAAI,UAAU,WAAW;AAAA,IAC7C;AACD,QAAI,YAAY,2BAA2B;AACzC,mBAAa,YAAY,yBAAyB;AAClD,kBAAY,4BAA4B;AAAA,IACzC;AACD,UAAM,cAAc,CAAC,EAAE,kBAAkB,oBAAoB;AAC7D,QAAI,CAAC,YAAY,wBAAwB;AACvC,kBAAY,yBAAyB,QAAQ;AAC7C,kBAAY,eAAe;AAAA,QACzB,SAAS,CAAE;AAAA,QACX,WAAW,CAAE;AAAA,QACb,WAAW;AAAA,QACX,gBAAgB;AAAA,MACxB;AACM,iBAAK,WAAL,mBAAa,KAAK;AAClB,WAAK,kBAAkB,UAAU;AAAA,IAClC;AACD,UAAM,WAAW,WAAS;;AACxB,kBAAY,YAAY,OAAO,kBAAkB;AACjD,UAAI,KAAK,4BAA4B,aAAa;AAChD,2BAAK,iBAAkB;AAAA,MACxB;AACD,4BAAK,4BAAL,WAAiB,CAAC;AAClB,UAAI,OAAO;AACT,2BAAmB,WAAW,OAAO,KAAK;AAC1C,aAAK,mBAAmB;AAAA,UACtB;AAAA,UACA,QAAQ,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,KAAK;AAAA,QAClE,CAAS;AAAA,MACT,OAAa;AACL,2BAAmB,WAAW;MAC/B;AACD,UAAI,KAAK,QAAQ;AACf,aAAK,OAAO,QAAQ,WAAW;AAC/B,aAAK,OAAO,QAAQ,SAAS;AAC7B,aAAIA,MAAA,WAAW,UAAX,gBAAAA,IAAkB,SAAS;AAC7B,qBAAW,MAAM,IAAI,KAAK,YAAY,KAAK,MAAM;AAAA,QAClD;AAAA,MACF;AAAA,IACP;AACI,UAAM,qBAAqB,IAAI,mBAAmB;AAAA,MAChD,UAAU;AAAA,MACV,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,MACD,MAAM,KAAK;AAAA,MACX,YAAY,KAAK;AAAA,MACjB;AAAA,MACA,cAAc,YAAY;AAAA,MAC1B,WAAW,KAAK;AAAA,MAChB,eAAe,KAAK,WAAW;AAAA,MAC/B,eAAe,KAAK,WAAW;AAAA,MAC/B,0BAA0B,CAAC;AAAA,MAC3B,QAAQ,KAAK;AAAA,MACb;AAAA,IACN,CAAK;AACD,KAAC,YAAY,gBAAZ,YAAY,cAAgB,oBAAI,IAAG,IAAI,IAAI,kBAAkB;AAC9D,UAAM,aAAa,mBAAmB;AACtC,YAAQ,IAAI,CAAC,YAAY,uBAAuB,SAAS,4BAA4B,CAAC,EAAE,KAAK,CAAC,CAAC,cAAc,qBAAqB,MAAM;;AACtI,UAAI,KAAK,WAAW;AAClB;AACA;AAAA,MACD;AACD,OAAAA,MAAA,KAAK,WAAL,gBAAAA,IAAa,KAAK;AAClB,UAAI,EAAE,sBAAsB,kBAAkB,kBAAkB;AAC9D,cAAM,IAAI,MAAM,qIAA0I;AAAA,MAC3J;AACD,yBAAmB,mBAAmB;AAAA,QACpC;AAAA,QACA;AAAA,MACR,CAAO;AACD,yBAAmB,oBAAmB;AAAA,IAC5C,CAAK,EAAE,MAAM,QAAQ;AACjB,WAAO;AAAA,EACR;AAAA,EACD,gBAAgB;AAAA,IACd,SAAS;AAAA,IACT,iBAAiB,eAAe;AAAA,IAChC,yBAAyB;AAAA,IACzB,YAAY;AAAA,EACb,IAAG,IAAI;;AACN,aAAS,sBAAsB;AAC7B,UAAI,YAAY,aAAa,WAAW;AACtC,oBAAY,qBAAqB,QAAQ,YAAY,YAAY;AACjE,oBAAY,YAAY,OAAO,UAAU;AAAA,MAC1C;AAAA,IACF;AACD,UAAM,aAAa,KAAK,WAAW,mBAAmB,QAAQ,gBAAgB,wBAAwB,WAAW,IAAI;AACrH,QAAI,cAAc,KAAK,cAAc,IAAI,WAAW,QAAQ;AAC5D,QAAI,CAAC,aAAa;AAChB,oBAAc,uBAAO,OAAO,IAAI;AAChC,WAAK,cAAc,IAAI,WAAW,UAAU,WAAW;AAAA,IACxD;AACD,QAAI;AACJ,QAAI,CAAC,YAAY,sBAAsB;AACrC,mBAAa,uBAAO,OAAO,IAAI;AAC/B,iBAAW,sBAAsB;AACjC,kBAAY,uBAAuB,QAAQ;AAC3C,OAAC,YAAY,gBAAZ,YAAY,cAAgB,oBAAI,IAAG,IAAI,IAAI,UAAU;AACtD,kBAAY,eAAe;AAAA,QACzB,SAAS,CAAE;AAAA,QACX,WAAW,CAAE;AAAA,QACb,WAAW;AAAA,QACX,gBAAgB;AAAA,MACxB;AACM,OAAAA,MAAA,KAAK,WAAL,gBAAAA,IAAa,KAAK;AAClB,WAAK,kBAAkB,UAAU;AAAA,IAClC;AACD,WAAO,YAAY,qBAAqB;AAAA,EACzC;AAAA,EACD,kBAAkB;AAAA,IAChB,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,EACxB,IAAG,IAAI;AACN,UAAM,0BAA0B;AAChC,WAAO,KAAK,WAAW,eAAe,eAAe,kBAAkB;AAAA,MACrE,WAAW,KAAK;AAAA,MAChB,sBAAsB,yBAAyB;AAAA,MAC/C,sBAAsB,yBAAyB;AAAA,IACrD,GAAO;AAAA,MACD,eAAe;AAAA,MACf,KAAK,aAAa;AAChB,eAAO,YAAY,MAAM;AAAA,MAC1B;AAAA,IACP,CAAK;AAAA,EACF;AAAA,EACD,eAAe,SAAS,IAAI;AAC1B,QAAI,KAAK,WAAW,aAAa;AAC/B,aAAO,KAAK,OAAM,EAAG,KAAK,SAAO,QAAQ,YAAY,GAAG,CAAC;AAAA,IAC1D;AACD,UAAM,iBAAiB,KAAK,kBAAkB,MAAM;AACpD,WAAO,IAAI,QAAQ,SAAU,SAAS,QAAQ;AAC5C,eAAS,OAAO;AACd,eAAO,OAAO,KAAK,SAAU;AAAA,UAC3B;AAAA,UACA;AAAA,QACV,GAAW;AACD,cAAI,MAAM;AACR,oBAAQ,WAAW;AACnB;AAAA,UACD;AACD,sBAAY,SAAZ,YAAY,OAAS,MAAM;AAC3B,iBAAO,OAAO,YAAY,QAAQ,MAAM,MAAM;AAC9C,sBAAY,MAAM,KAAK,GAAG,MAAM,KAAK;AACrC;QACD,GAAE,MAAM;AAAA,MACV;AACD,YAAM,SAAS,eAAe;AAC9B,YAAM,cAAc;AAAA,QAClB,OAAO,CAAE;AAAA,QACT,QAAQ,uBAAO,OAAO,IAAI;AAAA,QAC1B,MAAM;AAAA,MACd;AACM;IACN,CAAK;AAAA,EACF;AAAA,EACD,gBAAgB;AACd,WAAO,KAAK,WAAW,cAAc,KAAK,UAAU;AAAA,EACrD;AAAA,EACD,WAAW;AACT,SAAK,YAAY;AACjB,UAAM,SAAS;AACf,eAAW,eAAe,KAAK,cAAc,OAAM,GAAI;AACrD,WAAK,mBAAmB;AAAA,QACtB;AAAA,QACA,QAAQ,IAAI,MAAM,qBAAqB;AAAA,QACvC,OAAO;AAAA,MACf,CAAO;AACD,UAAI,YAAY,sBAAsB;AACpC;AAAA,MACD;AACD,iBAAW,sBAAsB,YAAY,aAAa;AACxD,eAAO,KAAK,mBAAmB,SAAS;AACxC,2BAAmB,OAAM;AAAA,MAC1B;AAAA,IACF;AACD,SAAK,KAAK;AACV,uBAAK,iBAAkB;AACvB,0BAAK,8CAAL;AACA,WAAO,QAAQ,IAAI,MAAM;AAAA,EAC1B;AAAA,EACD,QAAQ,aAAa,OAAO;AAC1B,uBAAK,iBAAkB;AACvB,UAAM,UAAU,sBAAK,4BAAL,WAAiB;AACjC,QAAI,cAAc,SAAS;AACzB,WAAK,WAAL,KAAK,SAAW,IAAI;IACrB;AACD,WAAO;AAAA,EACR;AAAA,EAgCD,iBAAiB,cAAc,UAAU;;AACvC,UAAM,cAAc,KAAK,cAAc,IAAI,QAAQ;AACnD,QAAI,CAAC,aAAa;AAChB;AAAA,IACD;AACD,KAAAA,MAAA,KAAK,WAAL,gBAAAA,IAAa,QAAQ;AACrB,sBAAY,2BAAZ,mBAAoC,QAAQ;AAAA,EAC7C;AAAA,EACD,iBAAiB,mBAAmB,aAAa;AAC/C,aAAS,IAAI,GAAG,KAAK,kBAAkB,QAAQ,IAAI,IAAI,KAAK;AAC1D,kBAAY,aAAa,QAAQ,KAAK,kBAAkB,QAAQ,CAAC,CAAC;AAClE,kBAAY,aAAa,UAAU,KAAK,kBAAkB,UAAU,CAAC,CAAC;AAAA,IACvE;AACD,gBAAY,aAAa,YAAY,kBAAkB;AACvD,gBAAY,aAAa,iBAAiB,kBAAkB;AAC5D,eAAW,sBAAsB,YAAY,aAAa;AACxD,yBAAmB,oBAAmB;AAAA,IACvC;AACD,QAAI,kBAAkB,WAAW;AAC/B,4BAAK,4BAAL,WAAiB;AAAA,IAClB;AAAA,EACF;AAAA,EACD,kBAAkB;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAAK;AACD,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACD,IAAG;AACJ,UAAM,iBAAiB,KAAK,WAAW,eAAe,eAAe,mBAAmB;AAAA,MACtF,WAAW,KAAK;AAAA,MAChB,QAAQ;AAAA,MACR;AAAA,MACA,mBAAmB;AAAA,MACnB;AAAA,IACD,GAAE,QAAQ;AACX,UAAM,SAAS,eAAe;AAC9B,UAAM,cAAc,KAAK,cAAc,IAAI,QAAQ;AACnD,gBAAY,eAAe;AAC3B,UAAM,OAAO,MAAM;AACjB,aAAO,OAAO,KAAK,CAAC;AAAA,QAClB;AAAA,QACA;AAAA,MACR,MAAY;AACJ,YAAI,MAAM;AACR,sBAAY,eAAe;AAC3B;AAAA,QACD;AACD,YAAI,KAAK,WAAW,WAAW;AAC7B;AAAA,QACD;AACD,aAAK,iBAAiB,OAAO,WAAW;AACxC;MACD,GAAE,YAAU;AACX,oBAAY,eAAe;AAC3B,YAAI,KAAK,WAAW,WAAW;AAC7B;AAAA,QACD;AACD,YAAI,YAAY,cAAc;AAC5B,sBAAY,aAAa,YAAY;AACrC,qBAAW,sBAAsB,YAAY,aAAa;AACxD,+BAAmB,oBAAmB;AAAA,UACvC;AACD,gCAAK,4BAAL,WAAiB;AAAA,QAClB;AACD,YAAI,YAAY,wBAAwB;AACtC,sBAAY,uBAAuB,OAAO,MAAM;AAAA,QAC1D,WAAmB,YAAY,sBAAsB;AAC3C,sBAAY,qBAAqB,OAAO,MAAM;AAAA,QACxD,OAAe;AACL,gBAAM;AAAA,QACP;AAAA,MACT,CAAO;AAAA,IACP;AACI;EACD;AAAA,EACD,mBAAmB;AAAA,IACjB;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,EACZ,GAAK;AACD,QAAI,CAAC,YAAY,cAAc;AAC7B;AAAA,IACD;AACD,QAAI,YAAY,2BAA2B;AACzC,mBAAa,YAAY,yBAAyB;AAClD,kBAAY,4BAA4B;AAAA,IACzC;AACD,QAAI,CAAC,OAAO;AACV,UAAI,YAAY,YAAY,OAAO,GAAG;AACpC;AAAA,MACD;AACD,UAAI,kBAAkB,6BAA6B;AACjD,YAAI,QAAQ;AACZ,YAAI,OAAO,aAAa,KAAK,OAAO,aAAa,KAAM;AACrD,mBAAS,OAAO;AAAA,QACjB;AACD,oBAAY,4BAA4B,WAAW,MAAM;AACvD,sBAAY,4BAA4B;AACxC,eAAK,mBAAmB;AAAA,YACtB;AAAA,YACA;AAAA,YACA,OAAO;AAAA,UACnB,CAAW;AAAA,QACF,GAAE,KAAK;AACR;AAAA,MACD;AAAA,IACF;AACD,gBAAY,aAAa,OAAO,IAAI,eAAe,OAAO,OAAO,CAAC,EAAE,MAAM,MAAM;AAAA,KAAE;AAClF,gBAAY,eAAe;AAC3B,QAAI,KAAK,WAAW,WAAW;AAC7B;AAAA,IACD;AACD,eAAW,CAAC,aAAa,cAAc,KAAK,KAAK,eAAe;AAC9D,UAAI,mBAAmB,aAAa;AAClC,aAAK,cAAc,OAAO,WAAW;AACrC;AAAA,MACD;AAAA,IACF;AACD,SAAK,QAAO;AAAA,EACb;AAAA,EACD,IAAI,QAAQ;AACV,WAAO,KAAK;AAAA,EACb;AACH;AAzbE;AACA;AA0RA;AAAA,gBAAW,SAAC,UAAU,OAAO;AAC3B,wBAAK,8CAAL;AACA,MAAI,CAAC,mBAAK,oBAAmB,KAAK,WAAW;AAC3C,WAAO;AAAA,EACR;AACD,MAAI,SAAS;AACX,uBAAK,wBAAyB,WAAW,MAAM;AAC7C,yBAAK,wBAAyB;AAC9B,4BAAK,4BAAL,WAAiB;AAAA,IAClB,GAAE,uBAAuB;AAC1B,WAAO;AAAA,EACR;AACD,aAAW;AAAA,IACT;AAAA,IACA;AAAA,EACN,KAAS,KAAK,cAAc,UAAU;AAChC,QAAI,YAAY,OAAO,KAAK,CAAC,aAAa,WAAW;AACnD,aAAO;AAAA,IACR;AAAA,EACF;AACD,OAAK,cAAc;AACnB,OAAK,KAAK;AACV,qBAAK,iBAAkB;AACvB,SAAO;AACR;AACD;AAAA,yBAAoB,WAAG;AACrB,MAAI,mBAAK,yBAAwB;AAC/B,iBAAa,mBAAK,uBAAsB;AACxC,uBAAK,wBAAyB;AAAA,EAC/B;AACF;AAiIH,MAAM,aAAa;AAAA,EAAnB;AACE,mCAAa,oBAAI;AACjB,kCAAY,QAAQ;;EACpB,YAAY,KAAK,UAAU;AACzB,UAAM,QAAQ;AAAA,MACZ,MAAM,gBAAgB,KAAK,WAAW;AAAA,QACpC;AAAA,MACD,IAAG,IAAI;AAAA,IACd;AACI,uBAAK,WAAU,KAAK,MAAM;AACxB,iBAAW,YAAY,mBAAK,aAAY;AACtC,iBAAS,KAAK,MAAM,KAAK;AAAA,MAC1B;AAAA,IACP,CAAK;AAAA,EACF;AAAA,EACD,iBAAiB,MAAM,UAAU;AAC/B,uBAAK,YAAW,IAAI,QAAQ;AAAA,EAC7B;AAAA,EACD,oBAAoB,MAAM,UAAU;AAClC,uBAAK,YAAW,OAAO,QAAQ;AAAA,EAChC;AAAA,EACD,YAAY;AACV,uBAAK,YAAW;EACjB;AACH;AAvBE;AACA;AAuBF,MAAM,aAAN,MAAM,WAAU;AAAA,EA6Bd,YAAY;AAAA,IACV,OAAO;AAAA,IACP,OAAO;AAAA,IACP,WAAAuB,aAAY,kBAAmB;AAAA,EAChC,IAAG,IAAI;AAwBR;;AAvBE,SAAK,OAAO;AACZ,SAAK,YAAY;AACjB,SAAK,YAAYA;AACjB,SAAK,mBAAmB,QAAQ;AAChC,SAAK,QAAQ;AACb,SAAK,aAAa;AAClB,SAAK,kBAAkB;AACvB,QAAI,MAAM;AACR,WAAIvB,MAAA,yBAAU,kBAAV,gBAAAA,IAAwB,IAAI,OAAO;AACrC,cAAM,IAAI,MAAM,8CAA8C;AAAA,MAC/D;AACD,OAAC,yBAAU,iBAAV,yBAAU,cAAiB,oBAAI,QAAS,IAAE,IAAI,MAAM,IAAI;AACzD,WAAK,oBAAoB,IAAI;AAC7B;AAAA,IACD;AACD,SAAK,YAAW;AAAA,EACjB;AAAA,EACD,IAAI,UAAU;AACZ,QAAI,UAAU;AACZ,aAAO,QAAQ,IAAI,CAAC,aAAa,SAAS,KAAK,iBAAiB,OAAO,CAAC;AAAA,IACzE;AACD,WAAO,KAAK,iBAAiB;AAAA,EAC9B;AAAA,EAOD,IAAI,OAAO;AACT,WAAO,KAAK;AAAA,EACb;AAAA,EACD,IAAI,iBAAiB;AACnB,WAAO,KAAK;AAAA,EACb;AAAA,EACD,oBAAoB,MAAM;AACxB,SAAK,QAAQ;AACb,SAAK,kBAAkB,IAAI,eAAe,QAAQ,UAAU,IAAI;AAChE,SAAK,gBAAgB,GAAG,SAAS,WAAY;AAAA,IAAE;AAC/C,0BAAK,sBAAL;AAAA,EACD;AAAA,EACD,cAAc;AACZ,QAAI,yBAAU,sBAAqB,yBAAU,sEAAiC;AAC5E,WAAK,iBAAgB;AACrB;AAAA,IACD;AACD,QAAI;AAAA,MACF;AAAA,IACD,IAAG;AACJ,QAAI;AACF,UAAI,CAAC,WAAU,cAAc,OAAO,SAAS,MAAM,SAAS,GAAG;AAC7D,oBAAY,WAAU,kBAAkB,IAAI,IAAI,WAAW,OAAO,QAAQ,EAAE,IAAI;AAAA,MACjF;AACD,YAAM,SAAS,IAAI,OAAO,WAAW;AAAA,QACnC,MAAM;AAAA,MACd,CAAO;AACD,YAAM,iBAAiB,IAAI,eAAe,QAAQ,UAAU,MAAM;AAClE,YAAM,iBAAiB,MAAM;AAC3B,WAAG,MAAK;AACR,uBAAe,QAAO;AACtB,eAAO,UAAS;AAChB,YAAI,KAAK,WAAW;AAClB,eAAK,iBAAiB,OAAO,IAAI,MAAM,sBAAsB,CAAC;AAAA,QACxE,OAAe;AACL,eAAK,iBAAgB;AAAA,QACtB;AAAA,MACT;AACM,YAAM,KAAK,IAAI;AACf,aAAO,iBAAiB,SAAS,MAAM;AACrC,YAAI,CAAC,KAAK,YAAY;AACpB;QACD;AAAA,MACT,GAAS;AAAA,QACD,QAAQ,GAAG;AAAA,MACnB,CAAO;AACD,qBAAe,GAAG,QAAQ,UAAQ;AAChC,WAAG,MAAK;AACR,YAAI,KAAK,aAAa,CAAC,MAAM;AAC3B;AACA;AAAA,QACD;AACD,aAAK,kBAAkB;AACvB,aAAK,QAAQ;AACb,aAAK,aAAa;AAClB,8BAAK,sBAAL;AAAA,MACR,CAAO;AACD,qBAAe,GAAG,SAAS,UAAQ;AACjC,WAAG,MAAK;AACR,YAAI,KAAK,WAAW;AAClB;AACA;AAAA,QACD;AACD,YAAI;AACF;QACV,QAAgB;AACN,eAAK,iBAAgB;AAAA,QACtB;AAAA,MACT,CAAO;AACD,YAAM,WAAW,MAAM;AACrB,cAAM,UAAU,IAAI;AACpB,uBAAe,KAAK,QAAQ,SAAS,CAAC,QAAQ,MAAM,CAAC;AAAA,MAC7D;AACM;AACA;AAAA,IACN,QAAY;AACN,WAAK,+BAA+B;AAAA,IACrC;AACD,SAAK,iBAAgB;AAAA,EACtB;AAAA,EACD,mBAAmB;AACjB,QAAI,CAAC,yBAAU,oBAAmB;AAChC,WAAK,yBAAyB;AAC9B,+BAAU,mBAAoB;AAAA,IAC/B;AACD,eAAU,uBAAuB,KAAK,0BAAwB;AAC5D,UAAI,KAAK,WAAW;AAClB,aAAK,iBAAiB,OAAO,IAAI,MAAM,sBAAsB,CAAC;AAC9D;AAAA,MACD;AACD,YAAM,OAAO,IAAI;AACjB,WAAK,QAAQ;AACb,YAAM,KAAK,OAAO,6BAAU,eAAV,GAAyB;AAC3C,YAAM,gBAAgB,IAAI,eAAe,KAAK,WAAW,IAAI,IAAI;AACjE,2BAAqB,MAAM,eAAe,IAAI;AAC9C,WAAK,kBAAkB,IAAI,eAAe,IAAI,KAAK,WAAW,IAAI;AAClE,4BAAK,sBAAL;AAAA,IACN,CAAK,EAAE,MAAM,YAAU;AACjB,WAAK,iBAAiB,OAAO,IAAI,MAAM,mCAAmC,OAAO,OAAO,IAAI,CAAC;AAAA,IACnG,CAAK;AAAA,EACF;AAAA,EACD,UAAU;;AACR,SAAK,YAAY;AACjB,QAAI,KAAK,YAAY;AACnB,WAAK,WAAW;AAChB,WAAK,aAAa;AAAA,IACnB;AACD,KAAAA,MAAA,yBAAU,kBAAV,gBAAAA,IAAwB,OAAO,KAAK;AACpC,SAAK,QAAQ;AACb,QAAI,KAAK,iBAAiB;AACxB,WAAK,gBAAgB;AACrB,WAAK,kBAAkB;AAAA,IACxB;AAAA,EACF;AAAA,EACD,OAAO,SAAS,QAAQ;;AACtB,QAAI,EAAC,iCAAQ,OAAM;AACjB,YAAM,IAAI,MAAM,gDAAgD;AAAA,IACjE;AACD,UAAM,cAAaA,MAAA,mBAAK,kBAAL,gBAAAA,IAAmB,IAAI,OAAO;AACjD,QAAI,YAAY;AACd,UAAI,WAAW,iBAAiB;AAC9B,cAAM,IAAI,MAAM,yHAA8H;AAAA,MAC/I;AACD,aAAO;AAAA,IACR;AACD,WAAO,IAAI,WAAU,MAAM;AAAA,EAC5B;AAAA,EACD,WAAW,YAAY;AACrB,QAAI,oBAAoB,WAAW;AACjC,aAAO,oBAAoB;AAAA,IAC5B;AACD,UAAM,IAAI,MAAM,+CAA+C;AAAA,EAChE;AAAA,EAQD,WAAW,yBAAyB;AAClC,UAAM,SAAS,YAAY;AACzB,UAAI,mBAAK,sEAAiC;AACxC,eAAO,mBAAK;AAAA,MACb;AACD,YAAM,SAAS,MAAM;AAAA;AAAA,QAA+B,KAAK;AAAA,SAAS;AAClE,aAAO,OAAO;AAAA,IACpB;AACI,WAAO,OAAO,MAAM,0BAA0B,OAAQ;AAAA,EACvD;AACH;AApNS;AACA;AACA;AAsDP;AAAA,aAAQ,WAAG;AACT,OAAK,iBAAiB;AACtB,OAAK,gBAAgB,KAAK,aAAa;AAAA,IACrC,WAAW,KAAK;AAAA,EACtB,CAAK;AACF;AAsIU;AAAA,qCAA+B,WAAG;;AAC3C,MAAI;AACF,aAAOA,MAAA,WAAW,gBAAX,gBAAAA,IAAwB,yBAAwB;AAAA,EAC7D,QAAY;AACN,WAAO;AAAA,EACR;AACF;AAND,aApMI,YAoMO;AAnMX,aADI,YACG,eAAgB;AACvB,aAFI,YAEG,mBAAoB;AAC3B,aAHI,YAGG,cAAP;AAAA,CACA;AACE,MAAI,UAAU;AACZ,6BAAK,mBAAoB;AACzB,wBAAoB,cAApB,oBAAoB,YAAc;AAAA,EACnC;AACD,aAAK,gBAAgB,CAAC,SAAS,aAAa;AAC1C,QAAI;AACJ,QAAI;AACF,aAAO,IAAI,IAAI,OAAO;AACtB,UAAI,CAAC,KAAK,UAAU,KAAK,WAAW,QAAQ;AAC1C,eAAO;AAAA,MACR;AAAA,IACT,QAAc;AACN,aAAO;AAAA,IACR;AACD,UAAM,QAAQ,IAAI,IAAI,UAAU,IAAI;AACpC,WAAO,KAAK,WAAW,MAAM;AAAA,EACnC;AACI,aAAK,oBAAoB,SAAO;AAC9B,UAAM,UAAU,iBAAiB,GAAG;AACpC,WAAO,IAAI,gBAAgB,IAAI,KAAK,CAAC,OAAO,GAAG;AAAA,MAC7C,MAAM;AAAA,IACP,EAAC;AAAA,EACR;AACG;AA5BH,IAAM,YAAN;AAsNA,MAAM,gBAAgB;AAAA,EAMpB,YAAY,gBAAgB,aAAa,eAAe,QAAQ,SAAS;AAsBzE;AA3BA,wCAAkB,oBAAI;AACtB,mCAAa,oBAAI;AACjB,sCAAgB,oBAAI;AACpB,sCAAgB,oBAAI;AACpB,4CAAsB;AAEpB,SAAK,iBAAiB;AACtB,SAAK,cAAc;AACnB,SAAK,aAAa,IAAI;AACtB,SAAK,aAAa,IAAI,WAAW;AAAA,MAC/B,eAAe,OAAO;AAAA,MACtB,cAAc,OAAO;AAAA,IAC3B,CAAK;AACD,SAAK,gBAAgB,OAAO;AAC5B,SAAK,UAAU;AACf,SAAK,gBAAgB,QAAQ;AAC7B,SAAK,gBAAgB,QAAQ;AAC7B,SAAK,oBAAoB,QAAQ;AACjC,SAAK,0BAA0B,QAAQ;AACvC,SAAK,YAAY;AACjB,SAAK,oBAAoB;AACzB,SAAK,iBAAiB;AACtB,SAAK,cAAc;AACnB,SAAK,gBAAgB;AACrB,SAAK,yBAAyB,QAAQ;AACtC,SAAK,oBAAmB;AAAA,EACzB;AAAA,EAUD,IAAI,oBAAoB;AACtB,WAAO,OAAO,MAAM,qBAAqB,IAAI,kBAAmB;AAAA,EACjE;AAAA,EACD,mBAAmB,QAAQ,iBAAiB,eAAe,QAAQ,yBAAyB,MAAM,YAAY,OAAO,WAAW,OAAO;AACrI,QAAI,kBAAkB,oBAAoB;AAC1C,QAAI,gCAAgC;AACpC,YAAQ,QAAM;AAAA,MACZ,KAAK;AACH,0BAAkB,oBAAoB;AACtC;AAAA,MACF,KAAK;AACH;AAAA,MACF,KAAK;AACH,0BAAkB,oBAAoB;AACtC;AAAA,MACF;AACE,aAAK,wCAAwC,MAAM,EAAE;AAAA,IACxD;AACD,UAAM,oBAAoB,kBAAkB,oBAAoB,SAAS,kCAAkC,yBAAyB,yBAAyB,KAAK;AAClK,YAAQ,gBAAc;AAAA,MACpB,KAAK,eAAe;AAClB,2BAAmB,oBAAoB;AACvC;AAAA,MACF,KAAK,eAAe;AAClB;AAAA,MACF,KAAK,eAAe;AAClB,2BAAmB,oBAAoB;AACvC;AAAA,MACF,KAAK,eAAe;AAClB,2BAAmB,oBAAoB;AACvC,wCAAgC,kBAAkB;AAClD;AAAA,MACF;AACE,aAAK,gDAAgD,cAAc,EAAE;AAAA,IACxE;AACD,QAAI,WAAW;AACb,yBAAmB,oBAAoB;AAAA,IACxC;AACD,QAAI,UAAU;AACZ,yBAAmB,oBAAoB;AAAA,IACxC;AACD,UAAM;AAAA,MACJ,KAAK;AAAA,MACL,MAAM;AAAA,IACZ,IAAQ,kBAAkB;AACtB,UAAM,cAAc,CAAC,iBAAiB,8BAA8B,MAAM,eAAe;AACzF,WAAO;AAAA,MACL;AAAA,MACA,UAAU,YAAY,KAAK,GAAG;AAAA,MAC9B;AAAA,MACA;AAAA,IACN;AAAA,EACG;AAAA,EACD,UAAU;;AACR,QAAI,KAAK,mBAAmB;AAC1B,aAAO,KAAK,kBAAkB;AAAA,IAC/B;AACD,SAAK,YAAY;AACjB,SAAK,oBAAoB,QAAQ;AACjC,KAAAA,MAAA,mBAAK,yBAAL,gBAAAA,IAA0B,OAAO,IAAI,MAAM,iDAAiD;AAC5F,UAAM,SAAS;AACf,eAAW,QAAQ,mBAAK,YAAW,OAAM,GAAI;AAC3C,aAAO,KAAK,KAAK,SAAU;AAAA,IAC5B;AACD,uBAAK,YAAW;AAChB,uBAAK,eAAc;AACnB,uBAAK,eAAc;AACnB,QAAI,KAAK,eAAe,mBAAmB,GAAG;AAC5C,WAAK,kBAAkB;IACxB;AACD,UAAM,aAAa,KAAK,eAAe,gBAAgB,aAAa,IAAI;AACxE,WAAO,KAAK,UAAU;AACtB,YAAQ,IAAI,MAAM,EAAE,KAAK,MAAM;;AAC7B,WAAK,WAAW;AAChB,WAAK,WAAW;AAChB,yBAAK,iBAAgB;AACrB,WAAK,cAAc;AACnB,gBAAU,QAAO;AACjB,OAAAA,MAAA,KAAK,mBAAL,gBAAAA,IAAqB,kBAAkB,IAAI,eAAe,wBAAwB;AAClF,UAAI,KAAK,gBAAgB;AACvB,aAAK,eAAe;AACpB,aAAK,iBAAiB;AAAA,MACvB;AACD,WAAK,kBAAkB;IAC7B,GAAO,KAAK,kBAAkB,MAAM;AAChC,WAAO,KAAK,kBAAkB;AAAA,EAC/B;AAAA,EACD,sBAAsB;AACpB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACD,IAAG;AACJ,mBAAe,GAAG,aAAa,CAAC,MAAM,SAAS;AAC7C,aAAO,KAAK,gBAAgB,iDAAiD;AAC7E,WAAK,cAAc,KAAK,eAAe,cAAa;AACpD,WAAK,YAAY,aAAa,SAAO;AACnC,aAAK,gBAAgB;AAAA,UACnB,QAAQ,IAAI;AAAA,UACZ,OAAO,IAAI;AAAA,QACrB;AAAA,MACA;AACM,WAAK,SAAS,MAAM;AAClB,aAAK,YAAY,KAAM,EAAC,KAAK,SAAU;AAAA,UACrC;AAAA,UACA;AAAA,QACV,GAAW;AACD,cAAI,MAAM;AACR,iBAAK,MAAK;AACV;AAAA,UACD;AACD,iBAAO,iBAAiB,aAAa,sCAAsC;AAC3E,eAAK,QAAQ,IAAI,WAAW,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AAAA,QACxD,CAAS,EAAE,MAAM,YAAU;AACjB,eAAK,MAAM,MAAM;AAAA,QAC3B,CAAS;AAAA,MACT;AACM,WAAK,WAAW,YAAU;AACxB,aAAK,YAAY,OAAO,MAAM;AAC9B,aAAK,MAAM,MAAM,iBAAe;AAC9B,cAAI,KAAK,WAAW;AAClB;AAAA,UACD;AACD,gBAAM;AAAA,QAChB,CAAS;AAAA,MACT;AAAA,IACA,CAAK;AACD,mBAAe,GAAG,sBAAsB,UAAQ;AAC9C,YAAM,oBAAoB,QAAQ;AAClC,YAAM,aAAa,KAAK;AACxB,iBAAW,aAAa,KAAK,MAAM;;AACjC,YAAI,CAAC,WAAW,wBAAwB,CAAC,WAAW,kBAAkB;AACpE,cAAI,KAAK,eAAe;AACtB,aAAAA,MAAA,YAAY,eAAZ,gBAAAA,IAAA,kBAAyB,KAAK;AAAA,UAC/B;AACD,qBAAW,aAAa,SAAO;;AAC7B,aAAAA,MAAA,YAAY,eAAZ,gBAAAA,IAAA,kBAAyB;AAAA,cACvB,QAAQ,IAAI;AAAA,cACZ,OAAO,IAAI;AAAA,YACzB;AAAA,UACA;AAAA,QACS;AACD,0BAAkB,QAAQ;AAAA,UACxB,sBAAsB,WAAW;AAAA,UACjC,kBAAkB,WAAW;AAAA,UAC7B,eAAe,WAAW;AAAA,QACpC,CAAS;AAAA,MACT,GAAS,kBAAkB,MAAM;AAC3B,aAAO,kBAAkB;AAAA,IAC/B,CAAK;AACD,mBAAe,GAAG,kBAAkB,CAAC,MAAM,SAAS;AAClD,aAAO,KAAK,gBAAgB,sDAAsD;AAClF,YAAM,cAAc,KAAK,eAAe,eAAe,KAAK,OAAO,KAAK,GAAG;AAC3E,UAAI,CAAC,aAAa;AAChB,aAAK,MAAK;AACV;AAAA,MACD;AACD,WAAK,SAAS,MAAM;AAClB,oBAAY,OAAO,KAAK,SAAU;AAAA,UAChC;AAAA,UACA;AAAA,QACV,GAAW;AACD,cAAI,MAAM;AACR,iBAAK,MAAK;AACV;AAAA,UACD;AACD,iBAAO,iBAAiB,aAAa,2CAA2C;AAChF,eAAK,QAAQ,IAAI,WAAW,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AAAA,QACxD,CAAS,EAAE,MAAM,YAAU;AACjB,eAAK,MAAM,MAAM;AAAA,QAC3B,CAAS;AAAA,MACT;AACM,WAAK,WAAW,YAAU;AACxB,oBAAY,OAAO,MAAM;AACzB,aAAK,MAAM,MAAM,iBAAe;AAC9B,cAAI,KAAK,WAAW;AAClB;AAAA,UACD;AACD,gBAAM;AAAA,QAChB,CAAS;AAAA,MACT;AAAA,IACA,CAAK;AACD,mBAAe,GAAG,UAAU,CAAC;AAAA,MAC3B;AAAA,IACN,MAAU;AACJ,WAAK,YAAY,QAAQ;AACzB,WAAK,cAAc,QAAQ;AAC3B,aAAO,QAAQ;AACf,kBAAY,YAAY,QAAQ,IAAI,iBAAiB,SAAS,IAAI,CAAC;AAAA,IACzE,CAAK;AACD,mBAAe,GAAG,gBAAgB,SAAU,IAAI;AAC9C,UAAI;AACJ,cAAQ,GAAG,MAAI;AAAA,QACb,KAAK;AACH,mBAAS,IAAI,kBAAkB,GAAG,SAAS,GAAG,IAAI;AAClD;AAAA,QACF,KAAK;AACH,mBAAS,IAAI,oBAAoB,GAAG,OAAO;AAC3C;AAAA,QACF,KAAK;AACH,mBAAS,IAAI,oBAAoB,GAAG,OAAO;AAC3C;AAAA,QACF,KAAK;AACH,mBAAS,IAAI,4BAA4B,GAAG,SAAS,GAAG,MAAM;AAC9D;AAAA,QACF,KAAK;AACH,mBAAS,IAAI,sBAAsB,GAAG,SAAS,GAAG,OAAO;AACzD;AAAA,QACF;AACE,sBAAY,wCAAwC;AAAA,MACvD;AACD,kBAAY,YAAY,OAAO,MAAM;AAAA,IAC3C,CAAK;AACD,mBAAe,GAAG,mBAAmB,eAAa;AAChD,yBAAK,qBAAsB,QAAQ;AACnC,UAAI,YAAY,YAAY;AAC1B,cAAM,iBAAiB,cAAY;AACjC,cAAI,oBAAoB,OAAO;AAC7B,+BAAK,qBAAoB,OAAO,QAAQ;AAAA,UACpD,OAAiB;AACL,+BAAK,qBAAoB,QAAQ;AAAA,cAC/B;AAAA,YACd,CAAa;AAAA,UACF;AAAA,QACX;AACQ,YAAI;AACF,sBAAY,WAAW,gBAAgB,UAAU,IAAI;AAAA,QACtD,SAAQ,IAAI;AACX,6BAAK,qBAAoB,OAAO,EAAE;AAAA,QACnC;AAAA,MACT,OAAa;AACL,2BAAK,qBAAoB,OAAO,IAAI,kBAAkB,UAAU,SAAS,UAAU,IAAI,CAAC;AAAA,MACzF;AACD,aAAO,mBAAK,qBAAoB;AAAA,IACtC,CAAK;AACD,mBAAe,GAAG,cAAc,UAAQ;;AACtC,OAAAA,MAAA,YAAY,eAAZ,gBAAAA,IAAA,kBAAyB;AAAA,QACvB,QAAQ,KAAK;AAAA,QACb,OAAO,KAAK;AAAA,MACpB;AACM,WAAK,uBAAuB,QAAQ,IAAI;AAAA,IAC9C,CAAK;AACD,mBAAe,GAAG,mBAAmB,UAAQ;AAC3C,UAAI,KAAK,WAAW;AAClB;AAAA,MACD;AACD,YAAM,OAAO,mBAAK,YAAW,IAAI,KAAK,SAAS;AAC/C,WAAK,iBAAiB,KAAK,cAAc,KAAK,QAAQ;AAAA,IAC5D,CAAK;AACD,mBAAe,GAAG,aAAa,CAAC,CAAC,IAAI,MAAM,YAAY,MAAM;;AAC3D,UAAI,KAAK,WAAW;AAClB,eAAO;AAAA,MACR;AACD,UAAI,KAAK,WAAW,IAAI,EAAE,GAAG;AAC3B,eAAO;AAAA,MACR;AACD,cAAQ,MAAI;AAAA,QACV,KAAK;AACH,gBAAM;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,UACZ,IAAc,KAAK;AACT,cAAI,WAAW,cAAc;AAC3B,kBAAM,gBAAgB,aAAa;AACnC,iBAAK,8BAA8B,aAAa,EAAE;AAClD,iBAAK,WAAW,QAAQ,IAAI,aAAa;AACzC;AAAA,UACD;AACD,gBAAM,cAAc,YAAUA,MAAA,WAAW,kBAAX,gBAAAA,IAA0B,WAAU,CAAC0B,OAAM,QAAQ,WAAW,cAAc,UAAUA,OAAM,GAAG,IAAI;AACjI,gBAAM,OAAO,IAAI,eAAe,cAAc;AAAA,YAC5C;AAAA,YACA;AAAA,UACZ,CAAW;AACD,eAAK,WAAW,KAAK,IAAI,EAAE,MAAM,MAAM,eAAe,gBAAgB,gBAAgB;AAAA,YACpF;AAAA,UACZ,CAAW,CAAC,EAAE,QAAQ,MAAM;AAChB,gBAAI,CAAC,uBAAuB,KAAK,MAAM;AACrC,mBAAK,OAAO;AAAA,YACb;AACD,iBAAK,WAAW,QAAQ,IAAI,IAAI;AAAA,UAC5C,CAAW;AACD;AAAA,QACF,KAAK;AACH,gBAAM;AAAA,YACJ;AAAA,UACD,IAAG;AACJ,iBAAO,UAAU,+BAA+B;AAChD,qBAAW,aAAa,mBAAK,YAAW,OAAM,GAAI;AAChD,uBAAW,CAAG,MAAI,KAAK,UAAU,MAAM;AACrC,mBAAI,6BAAM,SAAQ,UAAU;AAC1B;AAAA,cACD;AACD,kBAAI,CAAC,KAAK,SAAS;AACjB,uBAAO;AAAA,cACR;AACD,mBAAK,WAAW,QAAQ,IAAI,gBAAgB,IAAI,CAAC;AACjD,qBAAO,KAAK;AAAA,YACb;AAAA,UACF;AACD;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,eAAK,WAAW,QAAQ,IAAI,YAAY;AACxC;AAAA,QACF;AACE,gBAAM,IAAI,MAAM,kCAAkC,IAAI,EAAE;AAAA,MAC3D;AACD,aAAO;AAAA,IACb,CAAK;AACD,mBAAe,GAAG,OAAO,CAAC,CAAC,IAAI,WAAW,MAAM,SAAS,MAAM;;AAC7D,UAAI,KAAK,WAAW;AAClB;AAAA,MACD;AACD,YAAM,YAAY,mBAAK,YAAW,IAAI,SAAS;AAC/C,UAAI,UAAU,KAAK,IAAI,EAAE,GAAG;AAC1B;AAAA,MACD;AACD,UAAI,UAAU,cAAc,SAAS,GAAG;AACtC,SAAA1B,MAAA,uCAAW,WAAX,gBAAAA,IAAmB;AACnB;AAAA,MACD;AACD,cAAQ,MAAI;AAAA,QACV,KAAK;AACH,oBAAU,KAAK,QAAQ,IAAI,SAAS;AACpC,eAAI,uCAAW,WAAU,yBAAyB;AAChD,sBAAU,2BAA2B;AAAA,UACtC;AACD;AAAA,QACF,KAAK;AACH,oBAAU,KAAK,QAAQ,IAAI,SAAS;AACpC;AAAA,QACF;AACE,gBAAM,IAAI,MAAM,2BAA2B,IAAI,EAAE;AAAA,MACpD;AAAA,IACP,CAAK;AACD,mBAAe,GAAG,eAAe,UAAQ;;AACvC,UAAI,KAAK,WAAW;AAClB;AAAA,MACD;AACD,OAAAA,MAAA,YAAY,eAAZ,gBAAAA,IAAA,kBAAyB;AAAA,QACvB,QAAQ,KAAK;AAAA,QACb,OAAO,KAAK;AAAA,MACpB;AAAA,IACA,CAAK;AACD,mBAAe,GAAG,oBAAoB,UAAQ;AAC5C,UAAI,KAAK,WAAW;AAClB,eAAO,QAAQ,OAAO,IAAI,MAAM,uBAAuB,CAAC;AAAA,MACzD;AACD,UAAI,CAAC,KAAK,mBAAmB;AAC3B,eAAO,QAAQ,OAAO,IAAI,MAAM,wEAAwE,CAAC;AAAA,MAC1G;AACD,aAAO,KAAK,kBAAkB,MAAM,IAAI;AAAA,IAC9C,CAAK;AACD,mBAAe,GAAG,yBAAyB,UAAQ;AACjD,UAAI,KAAK,WAAW;AAClB,eAAO,QAAQ,OAAO,IAAI,MAAM,uBAAuB,CAAC;AAAA,MACzD;AACD,UAAI,CAAC,KAAK,yBAAyB;AACjC,eAAO,QAAQ,OAAO,IAAI,MAAM,8EAA8E,CAAC;AAAA,MAChH;AACD,aAAO,KAAK,wBAAwB,MAAM,IAAI;AAAA,IACpD,CAAK;AAAA,EACF;AAAA,EACD,UAAU;AACR,WAAO,KAAK,eAAe,gBAAgB,WAAW,IAAI;AAAA,EAC3D;AAAA,EACD,eAAe;;AACb,QAAI,KAAK,kBAAkB,QAAQ,GAAG;AACpC,WAAK,gGAAqG;AAAA,IAC3G;AACD,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACN,IAAQ,KAAK,kBAAkB;AAC3B,WAAO,KAAK,eAAe,gBAAgB,gBAAgB;AAAA,MACzD,WAAW,CAAC,CAAC,KAAK;AAAA,MAClB,UAAU,KAAK;AAAA,MACf,mBAAmB;AAAA,MACnB,YAAUA,MAAA,KAAK,gBAAL,gBAAAA,IAAkB,aAAY;AAAA,IAC9C,GAAO,QAAQ,EAAE,QAAQ,MAAM;AACzB,WAAK,kBAAkB;IAC7B,CAAK;AAAA,EACF;AAAA,EACD,QAAQ,YAAY;AAClB,QAAI,CAAC,OAAO,UAAU,UAAU,KAAK,cAAc,KAAK,aAAa,KAAK,WAAW;AACnF,aAAO,QAAQ,OAAO,IAAI,MAAM,uBAAuB,CAAC;AAAA,IACzD;AACD,UAAM,YAAY,aAAa,GAC7B,gBAAgB,mBAAK,eAAc,IAAI,SAAS;AAClD,QAAI,eAAe;AACjB,aAAO;AAAA,IACR;AACD,UAAM,UAAU,KAAK,eAAe,gBAAgB,WAAW;AAAA,MAC7D;AAAA,IACN,CAAK,EAAE,KAAK,cAAY;AAClB,UAAI,KAAK,WAAW;AAClB,cAAM,IAAI,MAAM,qBAAqB;AAAA,MACtC;AACD,UAAI,SAAS,QAAQ;AACnB,2BAAK,eAAc,IAAI,SAAS,QAAQ,UAAU;AAAA,MACnD;AACD,YAAM,OAAO,IAAI,aAAa,WAAW,UAAU,MAAM,KAAK,QAAQ,MAAM;AAC5E,yBAAK,YAAW,IAAI,WAAW,IAAI;AACnC,aAAO;AAAA,IACb,CAAK;AACD,uBAAK,eAAc,IAAI,WAAW,OAAO;AACzC,WAAO;AAAA,EACR;AAAA,EACD,aAAa,KAAK;AAChB,QAAI,CAAC,WAAW,GAAG,GAAG;AACpB,aAAO,QAAQ,OAAO,IAAI,MAAM,4BAA4B,CAAC;AAAA,IAC9D;AACD,WAAO,KAAK,eAAe,gBAAgB,gBAAgB;AAAA,MACzD,KAAK,IAAI;AAAA,MACT,KAAK,IAAI;AAAA,IACf,CAAK;AAAA,EACF;AAAA,EACD,eAAe,WAAW,QAAQ;AAChC,WAAO,KAAK,eAAe,gBAAgB,kBAAkB;AAAA,MAC3D;AAAA,MACA;AAAA,IACN,CAAK;AAAA,EACF;AAAA,EACD,kBAAkB;AAChB,WAAO,sBAAK,0CAAL,WAAwB;AAAA,EAChC;AAAA,EACD,eAAe;AACb,WAAO,sBAAK,0CAAL,WAAwB;AAAA,EAChC;AAAA,EACD,yBAAyB;AACvB,WAAO,KAAK,eAAe,gBAAgB,0BAA0B,IAAI;AAAA,EAC1E;AAAA,EACD,kBAAkB;AAChB,WAAO,KAAK,eAAe,gBAAgB,mBAAmB,IAAI;AAAA,EACnE;AAAA,EACD,eAAe,IAAI;AACjB,QAAI,OAAO,OAAO,UAAU;AAC1B,aAAO,QAAQ,OAAO,IAAI,MAAM,8BAA8B,CAAC;AAAA,IAChE;AACD,WAAO,KAAK,eAAe,gBAAgB,kBAAkB;AAAA,MAC3D;AAAA,IACN,CAAK;AAAA,EACF;AAAA,EACD,gBAAgB;AACd,WAAO,KAAK,eAAe,gBAAgB,iBAAiB,IAAI;AAAA,EACjE;AAAA,EACD,gBAAgB;AACd,WAAO,KAAK,eAAe,gBAAgB,iBAAiB,IAAI;AAAA,EACjE;AAAA,EACD,cAAc;AACZ,WAAO,KAAK,eAAe,gBAAgB,eAAe,IAAI;AAAA,EAC/D;AAAA,EACD,uBAAuB;AACrB,WAAO,KAAK,eAAe,gBAAgB,wBAAwB,IAAI;AAAA,EACxE;AAAA,EACD,gBAAgB;AACd,WAAO,KAAK,eAAe,gBAAgB,iBAAiB,IAAI;AAAA,EACjE;AAAA,EACD,iBAAiB;AACf,WAAO,KAAK,eAAe,gBAAgB,kBAAkB,IAAI;AAAA,EAClE;AAAA,EACD,kBAAkB;AAChB,WAAO,sBAAK,0CAAL,WAAwB;AAAA,EAChC;AAAA,EACD,iBAAiB,WAAW;AAC1B,WAAO,KAAK,eAAe,gBAAgB,oBAAoB;AAAA,MAC7D;AAAA,IACN,CAAK;AAAA,EACF;AAAA,EACD,cAAc,WAAW;AACvB,WAAO,KAAK,eAAe,gBAAgB,iBAAiB;AAAA,MAC1D;AAAA,IACN,CAAK;AAAA,EACF;AAAA,EACD,aAAa;AACX,WAAO,KAAK,eAAe,gBAAgB,cAAc,IAAI;AAAA,EAC9D;AAAA,EACD,yBAAyB,iBAAiB;AACxC,WAAO,sBAAK,0CAAL,WAAwB,4BAA4B,KAAK,UAAQ,IAAI,sBAAsB,MAAM,eAAe,CAAC;AAAA,EACzH;AAAA,EACD,iBAAiB;AACf,WAAO,KAAK,eAAe,gBAAgB,kBAAkB,IAAI;AAAA,EAClE;AAAA,EACD,cAAc;AACZ,UAAM,OAAO,eACX,gBAAgB,mBAAK,iBAAgB,IAAI,IAAI;AAC/C,QAAI,eAAe;AACjB,aAAO;AAAA,IACR;AACD,UAAM,UAAU,KAAK,eAAe,gBAAgB,MAAM,IAAI,EAAE,KAAK,aAAY;;AAAA;AAAA,QAC/E,MAAM,QAAQ,CAAC;AAAA,QACf,UAAU,QAAQ,CAAC,IAAI,IAAI,SAAS,QAAQ,CAAC,CAAC,IAAI;AAAA,QAClD,8BAA4BA,MAAA,KAAK,gBAAL,gBAAAA,IAAkB,aAAY;AAAA,QAC1D,iBAAe,UAAK,gBAAL,mBAAkB,kBAAiB;AAAA,MACnD;AAAA,KAAC;AACF,uBAAK,iBAAgB,IAAI,MAAM,OAAO;AACtC,WAAO;AAAA,EACR;AAAA,EACD,cAAc;AACZ,WAAO,KAAK,eAAe,gBAAgB,eAAe,IAAI;AAAA,EAC/D;AAAA,EACD,MAAM,aAAa,kBAAkB,OAAO;AAC1C,QAAI,KAAK,WAAW;AAClB;AAAA,IACD;AACD,UAAM,KAAK,eAAe,gBAAgB,WAAW,IAAI;AACzD,eAAW,QAAQ,mBAAK,YAAW,OAAM,GAAI;AAC3C,YAAM,oBAAoB,KAAK;AAC/B,UAAI,CAAC,mBAAmB;AACtB,cAAM,IAAI,MAAM,sBAAsB,KAAK,UAAU,0BAA0B;AAAA,MAChF;AAAA,IACF;AACD,SAAK,WAAW;AAChB,QAAI,CAAC,iBAAiB;AACpB,WAAK,WAAW;IACjB;AACD,uBAAK,iBAAgB;AACrB,SAAK,cAAc,QAAQ,IAAI;AAC/B,cAAU,QAAO;AAAA,EAClB;AAAA,EACD,iBAAiB,KAAK;AACpB,QAAI,CAAC,WAAW,GAAG,GAAG;AACpB,aAAO;AAAA,IACR;AACD,UAAM,SAAS,IAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG;AACpE,WAAO,mBAAK,eAAc,IAAI,MAAM,KAAK;AAAA,EAC1C;AACH;AApjBE;AACA;AACA;AACA;AACA;AAuBA;AAAA,uBAAkB,SAAC,MAAM,OAAO,MAAM;AACpC,QAAM,gBAAgB,mBAAK,iBAAgB,IAAI,IAAI;AACnD,MAAI,eAAe;AACjB,WAAO;AAAA,EACR;AACD,QAAM,UAAU,KAAK,eAAe,gBAAgB,MAAM,IAAI;AAC9D,qBAAK,iBAAgB,IAAI,MAAM,OAAO;AACtC,SAAO;AACR;AAkhBH,MAAM,eAAe,OAAO,cAAc;AAC1C,MAAM,WAAW;AAAA,EAAjB;AAEE;AADA,8BAAQ,uBAAO,OAAO,IAAI;AAAA;AAAA,EAO1B,IAAI,OAAO,WAAW,MAAM;AAC1B,QAAI,UAAU;AACZ,YAAM2B,OAAM,sBAAK,0BAAL,WAAgB;AAC5B,MAAAA,KAAI,QAAQ,KAAK,MAAM,SAASA,KAAI,IAAI,CAAC;AACzC,aAAO;AAAA,IACR;AACD,UAAM,MAAM,mBAAK,OAAM,KAAK;AAC5B,QAAI,CAAC,OAAO,IAAI,SAAS,cAAc;AACrC,YAAM,IAAI,MAAM,6CAA6C,KAAK,GAAG;AAAA,IACtE;AACD,WAAO,IAAI;AAAA,EACZ;AAAA,EACD,IAAI,OAAO;AACT,UAAM,MAAM,mBAAK,OAAM,KAAK;AAC5B,WAAO,CAAC,CAAC,OAAO,IAAI,SAAS;AAAA,EAC9B;AAAA,EACD,QAAQ,OAAO,OAAO,MAAM;AAC1B,UAAM,MAAM,sBAAK,0BAAL,WAAgB;AAC5B,QAAI,OAAO;AACX,QAAI,QAAO;AAAA,EACZ;AAAA,EACD,QAAQ;;AACN,eAAW,SAAS,mBAAK,QAAO;AAC9B,YAAM;AAAA,QACJ;AAAA,MACR,IAAU,mBAAK,OAAM,KAAK;AACpB,OAAA3B,MAAA,6BAAM,WAAN,gBAAAA,IAAc;AAAA,IACf;AACD,uBAAK,OAAQ,uBAAO,OAAO,IAAI;AAAA,EAChC;AAAA,EACD,EAAE,OAAO,QAAQ,IAAI;AACnB,eAAW,SAAS,mBAAK,QAAO;AAC9B,YAAM;AAAA,QACJ;AAAA,MACR,IAAU,mBAAK,OAAM,KAAK;AACpB,UAAI,SAAS,cAAc;AACzB;AAAA,MACD;AACD,YAAM,CAAC,OAAO,IAAI;AAAA,IACnB;AAAA,EACF;AACH;AAhDE;AACA;AAAA,eAAU,SAAC,OAAO;;AAChB,UAAOA,MAAA,mBAAK,QAAL,WAAAA,IAAA,SAAsB;AAAA,IAC3B,GAAG,QAAQ,cAAe;AAAA,IAC1B,MAAM;AAAA,EACZ;AACG;AA2CH,MAAM,WAAW;AAAA,EAEf,YAAY,oBAAoB;AADhC,4CAAsB;AAEpB,uBAAK,qBAAsB;AAC3B,SAAK,aAAa;AAAA,EACnB;AAAA,EACD,IAAI,UAAU;AACZ,WAAO,mBAAK,qBAAoB,WAAW;AAAA,EAC5C;AAAA,EACD,OAAO,aAAa,GAAG;AACrB,uBAAK,qBAAoB,OAAO,MAAM,UAAU;AAAA,EACjD;AAAA,EACD,IAAI,iBAAiB;AACnB,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,mBAAK,qBAAoB;AAC7B,QAAI,CAAC,gBAAgB;AACnB,aAAO;AAAA,IACR;AACD,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,mBAAK;AACT,WAAO,eAAe,QAAQ,eAAe,WAAU,2DAAqB,QAAO;AAAA,EACpF;AACH;AAvBE;AAwBF,MAAM,sBAAN,MAAM,oBAAmB;AAAA,EAGvB,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,2BAA2B;AAAA,IAC3B,SAAS;AAAA,IACT,aAAa;AAAA,EACjB,GAAK;AAfH,6BAAO;AAgBL,SAAK,WAAW;AAChB,SAAK,SAAS;AACd,SAAK,OAAO;AACZ,SAAK,aAAa;AAClB,SAAK,sBAAsB;AAC3B,SAAK,kBAAkB;AACvB,SAAK,eAAe;AACpB,SAAK,aAAa;AAClB,SAAK,gBAAgB;AACrB,SAAK,gBAAgB;AACrB,SAAK,UAAU;AACf,SAAK,aAAa;AAClB,SAAK,UAAU;AACf,SAAK,wBAAwB;AAC7B,SAAK,gBAAgB;AACrB,SAAK,4BAA4B,6BAA6B,QAAQ,OAAO,WAAW;AACxF,SAAK,YAAY;AACjB,SAAK,aAAa,QAAQ;AAC1B,SAAK,OAAO,IAAI,WAAW,IAAI;AAC/B,SAAK,eAAe,KAAK,OAAO,KAAK,IAAI;AACzC,SAAK,iBAAiB,KAAK,UAAU,KAAK,IAAI;AAC9C,SAAK,qBAAqB,KAAK,cAAc,KAAK,IAAI;AACtD,SAAK,aAAa,KAAK,MAAM,KAAK,IAAI;AACtC,SAAK,UAAU,OAAO,cAAc;AAAA,EACrC;AAAA,EACD,IAAI,YAAY;AACd,WAAO,KAAK,WAAW,QAAQ,MAAM,WAAY;AAAA,IAAE;AAAA,EACpD;AAAA,EACD,mBAAmB;AAAA,IACjB,eAAe;AAAA,IACf;AAAA,EACJ,GAAK;;AACD,QAAI,KAAK,WAAW;AAClB;AAAA,IACD;AACD,QAAI,KAAK,SAAS;AAChB,UAAI,kCAAmB,cAAa,IAAI,KAAK,OAAO,GAAG;AACrD,cAAM,IAAI,MAAM,iJAA2J;AAAA,MAC5K;AACD,wCAAmB,cAAa,IAAI,KAAK,OAAO;AAAA,IACjD;AACD,QAAI,KAAK,aAAWA,MAAA,WAAW,mBAAX,gBAAAA,IAA2B,UAAS;AACtD,WAAK,UAAU,WAAW,eAAe,OAAO,KAAK,UAAU;AAC/D,WAAK,QAAQ,KAAK,KAAK,YAAY;AACnC,WAAK,QAAQ,iBAAiB,KAAK,QAAQ,kBAAiB;AAAA,IAC7D;AACD,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,IAAQ,KAAK;AACT,SAAK,MAAM,IAAI,eAAe,eAAe,KAAK,YAAY,KAAK,MAAM,KAAK,eAAe,KAAK,eAAe;AAAA,MAC/G;AAAA,IACD,GAAE,KAAK,qBAAqB,KAAK,UAAU;AAC5C,SAAK,IAAI,aAAa;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,CAAK;AACD,SAAK,kBAAkB;AACvB,SAAK,gBAAgB;AACrB,eAAK,0BAAL;AAAA,EACD;AAAA,EACD,OAAO,QAAQ,MAAM,aAAa,GAAG;;AACnC,SAAK,UAAU;AACf,SAAK,YAAY;AACjB,KAAAA,MAAA,KAAK,QAAL,gBAAAA,IAAU;AACV,QAAI,mBAAK,OAAM;AACb,aAAO,qBAAqB,mBAAK,KAAI;AACrC,yBAAK,MAAO;AAAA,IACb;AACD,sCAAmB,cAAa,OAAO,KAAK,OAAO;AACnD,SAAK,SAAS,SAAS,IAAI,4BAA4B,6BAA6B,KAAK,aAAa,CAAC,IAAI,UAAU,CAAC;AAAA,EACvH;AAAA,EACD,sBAAsB;;AACpB,QAAI,CAAC,KAAK,eAAe;AACvB,WAAK,0BAAL,KAAK,wBAA0B,KAAK;AACpC;AAAA,IACD;AACD,KAAAA,MAAA,KAAK,YAAL,gBAAAA,IAAc,mBAAmB,KAAK;AACtC,QAAI,KAAK,SAAS;AAChB;AAAA,IACD;AACD,SAAK,UAAS;AAAA,EACf;AAAA,EACD,YAAY;AACV,SAAK,UAAU;AACf,QAAI,KAAK,WAAW;AAClB;AAAA,IACD;AACD,QAAI,KAAK,KAAK,YAAY;AACxB,WAAK,KAAK,WAAW,KAAK,kBAAkB;AAAA,IAClD,OAAW;AACL,WAAK,cAAa;AAAA,IACnB;AAAA,EACF;AAAA,EACD,gBAAgB;AACd,QAAI,KAAK,2BAA2B;AAClC,yBAAK,MAAO,OAAO,sBAAsB,MAAM;AAC7C,2BAAK,MAAO;AACZ,aAAK,WAAY,EAAC,MAAM,KAAK,YAAY;AAAA,MACjD,CAAO;AAAA,IACP,OAAW;AACL,cAAQ,UAAU,KAAK,KAAK,UAAU,EAAE,MAAM,KAAK,YAAY;AAAA,IAChE;AAAA,EACF;AAAA,EACD,MAAM,QAAQ;AACZ,QAAI,KAAK,WAAW;AAClB;AAAA,IACD;AACD,SAAK,kBAAkB,KAAK,IAAI,oBAAoB,KAAK,cAAc,KAAK,iBAAiB,KAAK,gBAAgB,KAAK,OAAO;AAC9H,QAAI,KAAK,oBAAoB,KAAK,aAAa,UAAU,QAAQ;AAC/D,WAAK,UAAU;AACf,UAAI,KAAK,aAAa,WAAW;AAC/B,aAAK,IAAI;AACT,0CAAmB,cAAa,OAAO,KAAK,OAAO;AACnD,aAAK,SAAQ;AAAA,MACd;AAAA,IACF;AAAA,EACF;AACH;AA1IE;AACO;AAAP,aAFI,qBAEG,cAAe,oBAAI;AAF5B,IAAM,qBAAN;AA4IA,MAAM,UAAU;AAChB,MAAM,QAAQ;AAGd,SAAS,cAAc,GAAG;AACxB,SAAO,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AACnF;AACA,SAAS,cAAc,GAAG;AACxB,SAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,CAAC,CAAC;AAC3C;AACA,MAAM,gBAAgB;AAAA,EACpB,OAAO,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG;AAC1B,WAAO,CAAC,KAAK,IAAI,KAAK,IAAI,GAAG,MAAM,IAAI,OAAO,IAAI,OAAO,IAAI,CAAC,CAAC;AAAA,EAChE;AAAA,EACD,OAAO,OAAO,CAAC,CAAC,GAAG;AACjB,WAAO,CAAC,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC;AAAA,EAC/B;AAAA,EACD,OAAO,MAAM,CAAC,CAAC,GAAG;AAChB,WAAO,CAAC,OAAO,GAAG,GAAG,CAAC;AAAA,EACvB;AAAA,EACD,OAAO,MAAM,CAAC,CAAC,GAAG;AAChB,QAAI,cAAc,CAAC;AACnB,WAAO,CAAC,GAAG,GAAG,CAAC;AAAA,EAChB;AAAA,EACD,OAAO,OAAO,CAAC,CAAC,GAAG;AACjB,UAAM,IAAI,cAAc,CAAC;AACzB,WAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAAA,EACrB;AAAA,EACD,OAAO,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG;AACtB,WAAO,CAAC,KAAK,MAAM,IAAI,OAAO,IAAI,OAAO,CAAC;AAAA,EAC3C;AAAA,EACD,OAAO,QAAQ,OAAO;AACpB,WAAO,MAAM,IAAI,aAAa;AAAA,EAC/B;AAAA,EACD,OAAO,SAAS,OAAO;AACrB,WAAO,IAAI,MAAM,IAAI,aAAa,EAAE,KAAK,EAAE,CAAC;AAAA,EAC7C;AAAA,EACD,OAAO,SAAS;AACd,WAAO;AAAA,EACR;AAAA,EACD,OAAO,QAAQ;AACb,WAAO,CAAC,IAAI;AAAA,EACb;AAAA,EACD,OAAO,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG;AAC5B,WAAO,CAAC,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC;AAAA,EACtF;AAAA,EACD,OAAO,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG;AAC5B,WAAO,CAAC,cAAc,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,cAAc,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,cAAc,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;AAAA,EAC5H;AAAA,EACD,OAAO,UAAU,YAAY;AAC3B,UAAM,MAAM,KAAK,SAAS,UAAU,EAAE,MAAM,CAAC;AAC7C,WAAO,KAAK,SAAS,GAAG;AAAA,EACzB;AAAA,EACD,OAAO,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG;AACzB,UAAM,IAAI,IAAI;AACd,UAAM,IAAI,IAAI;AACd,UAAM,IAAI,IAAI;AACd,UAAM,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC;AAC1B,WAAO,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC;AAAA,EAC3B;AACH;AAIA,MAAM,SAAS;AAAA,EACb,OAAO,aAAa,MAAM,IAAI,SAAS,SAAS,QAAQ;AACtD,UAAM,aAAa,QAAQ,SAAS,IAAI;AAAA,MACtC,OAAO;AAAA,IACb,CAAK;AACD,YAAQ,QAAQ,MAAI;AAAA,MAClB,KAAK;AACH,YAAI,WAAW,UAAU,MAAM;AAC7B,eAAK,cAAc,WAAW;AAAA,QAC/B;AACD,YAAI,WAAW,SAAS;AACtB;AAAA,QACD;AACD,aAAK,iBAAiB,SAAS,WAAS;AACtC,kBAAQ,SAAS,IAAI;AAAA,YACnB,OAAO,MAAM,OAAO;AAAA,UAChC,CAAW;AAAA,QACX,CAAS;AACD;AAAA,MACF,KAAK;AACH,YAAI,QAAQ,WAAW,SAAS,WAAW,QAAQ,WAAW,SAAS,YAAY;AACjF,cAAI,WAAW,UAAU,QAAQ,WAAW,OAAO;AACjD,iBAAK,aAAa,WAAW,IAAI;AAAA,UAClC,WAAU,WAAW,UAAU,QAAQ,WAAW,QAAQ;AACzD,iBAAK,gBAAgB,SAAS;AAAA,UAC/B;AACD,cAAI,WAAW,SAAS;AACtB;AAAA,UACD;AACD,eAAK,iBAAiB,UAAU,WAAS;AACvC,oBAAQ,SAAS,IAAI;AAAA,cACnB,OAAO,MAAM,OAAO,UAAU,MAAM,OAAO,aAAa,OAAO,IAAI,MAAM,OAAO,aAAa,QAAQ;AAAA,YACnH,CAAa;AAAA,UACb,CAAW;AAAA,QACX,OAAe;AACL,cAAI,WAAW,UAAU,MAAM;AAC7B,iBAAK,aAAa,SAAS,WAAW,KAAK;AAAA,UAC5C;AACD,cAAI,WAAW,SAAS;AACtB;AAAA,UACD;AACD,eAAK,iBAAiB,SAAS,WAAS;AACtC,oBAAQ,SAAS,IAAI;AAAA,cACnB,OAAO,MAAM,OAAO;AAAA,YAClC,CAAa;AAAA,UACb,CAAW;AAAA,QACF;AACD;AAAA,MACF,KAAK;AACH,YAAI,WAAW,UAAU,MAAM;AAC7B,eAAK,aAAa,SAAS,WAAW,KAAK;AAC3C,qBAAW,UAAU,QAAQ,UAAU;AACrC,gBAAI,OAAO,WAAW,UAAU,WAAW,OAAO;AAChD,qBAAO,WAAW,WAAW;AAAA,YAC9B,WAAU,OAAO,WAAW,eAAe,UAAU,GAAG;AACvD,qBAAO,OAAO,WAAW;AAAA,YAC1B;AAAA,UACF;AAAA,QACF;AACD,aAAK,iBAAiB,SAAS,WAAS;AACtC,gBAAM,UAAU,MAAM,OAAO;AAC7B,gBAAM,QAAQ,QAAQ,kBAAkB,KAAK,KAAK,QAAQ,QAAQ,aAAa,EAAE;AACjF,kBAAQ,SAAS,IAAI;AAAA,YACnB;AAAA,UACZ,CAAW;AAAA,QACX,CAAS;AACD;AAAA,IACH;AAAA,EACF;AAAA,EACD,OAAO,cAAc;AAAA,IACnB;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,EACJ,GAAK;AACD,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,UAAM,sBAAsB,gBAAgB;AAC5C,QAAI,WAAW,SAAS,SAAS;AAC/B,iBAAW,OAAO,GAAG,WAAW,IAAI,IAAI,MAAM;AAAA,IAC/C;AACD,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,UAAU,GAAG;AACrD,UAAI,UAAU,QAAQ,UAAU,QAAW;AACzC;AAAA,MACD;AACD,cAAQ,KAAG;AAAA,QACT,KAAK;AACH,cAAI,MAAM,QAAQ;AAChB,iBAAK,aAAa,KAAK,MAAM,KAAK,GAAG,CAAC;AAAA,UACvC;AACD;AAAA,QACF,KAAK;AACH;AAAA,QACF,KAAK;AACH,eAAK,aAAa,mBAAmB,KAAK;AAC1C;AAAA,QACF,KAAK;AACH,iBAAO,OAAO,KAAK,OAAO,KAAK;AAC/B;AAAA,QACF,KAAK;AACH,eAAK,cAAc;AACnB;AAAA,QACF;AACE,cAAI,CAAC,uBAAuB,QAAQ,UAAU,QAAQ,aAAa;AACjE,iBAAK,aAAa,KAAK,KAAK;AAAA,UAC7B;AAAA,MACJ;AAAA,IACF;AACD,QAAI,qBAAqB;AACvB,kBAAY,kBAAkB,MAAM,WAAW,MAAM,WAAW,SAAS;AAAA,IAC1E;AACD,QAAI,WAAW,WAAW,QAAQ;AAChC,WAAK,aAAa,MAAM,WAAW,QAAQ,SAAS,OAAO;AAAA,IAC5D;AAAA,EACF;AAAA,EACD,OAAO,OAAO,YAAY;;AACxB,UAAM,UAAU,WAAW;AAC3B,UAAM,cAAc,WAAW;AAC/B,UAAM,OAAO,WAAW;AACxB,UAAM,SAAS,WAAW,UAAU;AACpC,UAAM,WAAW,SAAS,cAAc,KAAK,IAAI;AACjD,QAAI,KAAK,YAAY;AACnB,WAAK,cAAc;AAAA,QACjB,MAAM;AAAA,QACN,SAAS;AAAA,QACT;AAAA,QACA;AAAA,MACR,CAAO;AAAA,IACF;AACD,UAAM,mBAAmB,WAAW;AACpC,UAAM,UAAU,WAAW;AAC3B,YAAQ,OAAO,QAAQ;AACvB,QAAI,WAAW,UAAU;AACvB,YAAM,YAAY,UAAU,WAAW,SAAS,UAAU,KAAK,GAAG,CAAC;AACnE,cAAQ,MAAM,YAAY;AAAA,IAC3B;AACD,QAAI,kBAAkB;AACpB,cAAQ,aAAa,SAAS,kBAAkB;AAAA,IACjD;AACD,UAAM,WAAW;AACjB,QAAI,KAAK,SAAS,WAAW,GAAG;AAC9B,UAAI,KAAK,OAAO;AACd,cAAM,OAAO,SAAS,eAAe,KAAK,KAAK;AAC/C,iBAAS,OAAO,IAAI;AACpB,YAAI,oBAAoB,QAAQ,gBAAgB,KAAK,IAAI,GAAG;AAC1D,mBAAS,KAAK,IAAI;AAAA,QACnB;AAAA,MACF;AACD,aAAO;AAAA,QACL;AAAA,MACR;AAAA,IACK;AACD,UAAM,QAAQ,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC;AACnC,WAAO,MAAM,SAAS,GAAG;AACvB,YAAM,CAAC,QAAQ,GAAG,IAAI,IAAI,MAAM,GAAG,EAAE;AACrC,UAAI,IAAI,MAAM,OAAO,SAAS,QAAQ;AACpC,cAAM,IAAG;AACT;AAAA,MACD;AACD,YAAM,QAAQ,OAAO,SAAS,EAAE,MAAM,GAAG,EAAE,EAAE,CAAC,CAAC;AAC/C,UAAI,UAAU,MAAM;AAClB;AAAA,MACD;AACD,YAAM;AAAA,QACJ;AAAA,MACD,IAAG;AACJ,UAAI,SAAS,SAAS;AACpB,cAAM,OAAO,SAAS,eAAe,MAAM,KAAK;AAChD,iBAAS,KAAK,IAAI;AAClB,aAAK,OAAO,IAAI;AAChB;AAAA,MACD;AACD,YAAM,cAAYA,MAAA,+BAAO,eAAP,gBAAAA,IAAmB,SAAQ,SAAS,gBAAgB,MAAM,WAAW,OAAO,IAAI,IAAI,SAAS,cAAc,IAAI;AACjI,WAAK,OAAO,SAAS;AACrB,UAAI,MAAM,YAAY;AACpB,aAAK,cAAc;AAAA,UACjB,MAAM;AAAA,UACN,SAAS;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACV,CAAS;AAAA,MACF;AACD,YAAI,WAAM,aAAN,mBAAgB,UAAS,GAAG;AAC9B,cAAM,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC;AAAA,MACzC,WAAiB,MAAM,OAAO;AACtB,cAAM,OAAO,SAAS,eAAe,MAAM,KAAK;AAChD,YAAI,oBAAoB,QAAQ,gBAAgB,IAAI,GAAG;AACrD,mBAAS,KAAK,IAAI;AAAA,QACnB;AACD,kBAAU,OAAO,IAAI;AAAA,MACtB;AAAA,IACF;AACD,eAAW,MAAM,QAAQ,iBAAiB,uDAAuD,GAAG;AAClG,SAAG,aAAa,YAAY,IAAI;AAAA,IACjC;AACD,WAAO;AAAA,MACL;AAAA,IACN;AAAA,EACG;AAAA,EACD,OAAO,OAAO,YAAY;AACxB,UAAM,YAAY,UAAU,WAAW,SAAS,UAAU,KAAK,GAAG,CAAC;AACnE,eAAW,IAAI,MAAM,YAAY;AACjC,eAAW,IAAI,SAAS;AAAA,EACzB;AACH;AAQA,MAAM,oBAAoB;AAC1B,MAAM,qCAAqC;AAC3C,MAAM,uBAAuB,oBAAI;AACjC,SAAS,YAAY,MAAM;AACzB,SAAO;AAAA,IACL,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC;AAAA,IACvB,QAAQ,KAAK,CAAC,IAAI,KAAK,CAAC;AAAA,EAC5B;AACA;AACA,MAAM,yBAAyB;AAAA,EAC7B,OAAO,OAAO,YAAY;AACxB,UAAM,UAAU,WAAW,KAAK;AAChC,YAAQ,SAAO;AAAA,MACb,KAAK,eAAe;AAClB,eAAO,IAAI,sBAAsB,UAAU;AAAA,MAC7C,KAAK,eAAe;AAClB,eAAO,IAAI,sBAAsB,UAAU;AAAA,MAC7C,KAAK,eAAe;AAClB,cAAM,YAAY,WAAW,KAAK;AAClC,gBAAQ,WAAS;AAAA,UACf,KAAK;AACH,mBAAO,IAAI,4BAA4B,UAAU;AAAA,UACnD,KAAK;AACH,gBAAI,WAAW,KAAK,aAAa;AAC/B,qBAAO,IAAI,mCAAmC,UAAU;AAAA,YACtE,WAAuB,WAAW,KAAK,UAAU;AACnC,qBAAO,IAAI,gCAAgC,UAAU;AAAA,YACtD;AACD,mBAAO,IAAI,kCAAkC,UAAU;AAAA,UACzD,KAAK;AACH,mBAAO,IAAI,8BAA8B,UAAU;AAAA,UACrD,KAAK;AACH,mBAAO,IAAI,iCAAiC,UAAU;AAAA,QACzD;AACD,eAAO,IAAI,wBAAwB,UAAU;AAAA,MAC/C,KAAK,eAAe;AAClB,eAAO,IAAI,uBAAuB,UAAU;AAAA,MAC9C,KAAK,eAAe;AAClB,eAAO,IAAI,0BAA0B,UAAU;AAAA,MACjD,KAAK,eAAe;AAClB,eAAO,IAAI,sBAAsB,UAAU;AAAA,MAC7C,KAAK,eAAe;AAClB,eAAO,IAAI,wBAAwB,UAAU;AAAA,MAC/C,KAAK,eAAe;AAClB,eAAO,IAAI,wBAAwB,UAAU;AAAA,MAC/C,KAAK,eAAe;AAClB,eAAO,IAAI,0BAA0B,UAAU;AAAA,MACjD,KAAK,eAAe;AAClB,eAAO,IAAI,uBAAuB,UAAU;AAAA,MAC9C,KAAK,eAAe;AAClB,eAAO,IAAI,qBAAqB,UAAU;AAAA,MAC5C,KAAK,eAAe;AAClB,eAAO,IAAI,yBAAyB,UAAU;AAAA,MAChD,KAAK,eAAe;AAClB,eAAO,IAAI,2BAA2B,UAAU;AAAA,MAClD,KAAK,eAAe;AAClB,eAAO,IAAI,2BAA2B,UAAU;AAAA,MAClD,KAAK,eAAe;AAClB,eAAO,IAAI,0BAA0B,UAAU;AAAA,MACjD,KAAK,eAAe;AAClB,eAAO,IAAI,2BAA2B,UAAU;AAAA,MAClD,KAAK,eAAe;AAClB,eAAO,IAAI,uBAAuB,UAAU;AAAA,MAC9C,KAAK,eAAe;AAClB,eAAO,IAAI,gCAAgC,UAAU;AAAA,MACvD;AACE,eAAO,IAAI,kBAAkB,UAAU;AAAA,IAC1C;AAAA,EACF;AACH;AACA,MAAM,qBAAN,MAAM,mBAAkB;AAAA,EAItB,YAAY,YAAY;AAAA,IACtB,eAAe;AAAA,IACf,eAAe;AAAA,IACf,uBAAuB;AAAA,EACxB,IAAG,IAAI;AAyDR;AAhEA,iCAAW;AACX,mCAAa;AACb,sCAAgB;AAMd,SAAK,eAAe;AACpB,SAAK,OAAO,WAAW;AACvB,SAAK,QAAQ,WAAW;AACxB,SAAK,cAAc,WAAW;AAC9B,SAAK,kBAAkB,WAAW;AAClC,SAAK,qBAAqB,WAAW;AACrC,SAAK,cAAc,WAAW;AAC9B,SAAK,aAAa,WAAW;AAC7B,SAAK,oBAAoB,WAAW;AACpC,SAAK,kBAAkB,WAAW;AAClC,SAAK,eAAe,WAAW;AAC/B,SAAK,gBAAgB,WAAW;AAChC,SAAK,SAAS,WAAW;AACzB,QAAI,cAAc;AAChB,WAAK,YAAY,KAAK,iBAAiB,YAAY;AAAA,IACpD;AACD,QAAI,sBAAsB;AACxB,WAAK,sBAAqB;AAAA,IAC3B;AAAA,EACF;AAAA,EACD,OAAO,cAAc;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAAK;AACD,WAAO,CAAC,GAAE,qCAAU,SAAO,2CAAa,SAAO,qCAAU;AAAA,EAC1D;AAAA,EACD,IAAI,cAAc;AAChB,WAAO,KAAK,KAAK;AAAA,EAClB;AAAA,EACD,IAAI,eAAe;AACjB,WAAO,mBAAkB,cAAc,KAAK,IAAI;AAAA,EACjD;AAAA,EACD,aAAa,QAAQ;;AACnB,QAAI,CAAC,KAAK,WAAW;AACnB;AAAA,IACD;AACD,uBAAK,aAAL,mBAAK,UAAa;AAAA,MAChB,MAAM,KAAK,KAAK,KAAK,MAAM,CAAC;AAAA,IAClC;AACI,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,QAAI,MAAM;AACR,4BAAK,kCAAL,WAAoB;AAAA,IACrB;AACD,KAAAA,MAAA,mBAAK,mBAAL,gBAAAA,IAAoB,MAAM,aAAa;AAAA,EACxC;AAAA,EACD,cAAc;;AACZ,QAAI,CAAC,mBAAK,WAAU;AAClB;AAAA,IACD;AACD,0BAAK,kCAAL,WAAoB,mBAAK,UAAS;AAClC,KAAAA,MAAA,mBAAK,mBAAL,gBAAAA,IAAoB,MAAM;AAC1B,uBAAK,UAAW;AAAA,EACjB;AAAA,EAmCD,iBAAiB,cAAc;AAC7B,UAAM;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,MACD;AAAA,IACF,IAAG;AACJ,UAAM,YAAY,SAAS,cAAc,SAAS;AAClD,cAAU,aAAa,sBAAsB,KAAK,EAAE;AACpD,QAAI,EAAE,gBAAgB,0BAA0B;AAC9C,gBAAU,WAAW;AAAA,IACtB;AACD,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,UAAM,SAAS,KAAK,OAAO;AAC3B,QAAI,KAAK,UAAU;AACjB,gBAAU,aAAa,iBAAiB,QAAQ;AAAA,IACjD;AACD,QAAI,KAAK,iBAAiB;AACxB,gBAAU,QAAQ,KAAK;AAAA,IACxB;AACD,QAAI,KAAK,UAAU;AACjB,gBAAU,UAAU,IAAI,UAAU;AAAA,IACnC;AACD,QAAI,CAAC,KAAK,QAAQ,gBAAgB,wBAAwB;AACxD,YAAM;AAAA,QACJ,UAAA4B;AAAA,MACD,IAAG;AACJ,UAAI,CAAC,KAAK,gBAAgBA,cAAa,GAAG;AACxC,aAAK,YAAYA,WAAU,SAAS;AAAA,MACrC;AACD,aAAO;AAAA,IACR;AACD,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACN,IAAQ,YAAY,KAAK,IAAI;AACzB,QAAI,CAAC,gBAAgB,KAAK,YAAY,QAAQ,GAAG;AAC/C,YAAM,cAAc,GAAG,KAAK,YAAY,KAAK;AAC7C,YAAM,mBAAmB,KAAK,YAAY;AAC1C,YAAM,iBAAiB,KAAK,YAAY;AACxC,UAAI,mBAAmB,KAAK,iBAAiB,GAAG;AAC9C,cAAM,SAAS,QAAQ,gBAAgB,oCAAoC,cAAc;AACzF,cAAM,eAAe;AAAA,MAC7B,WAAiB,gBAAgB,oCAAoC;AAC7D,cAAM,SAAS,QAAQ,KAAK,oCAAoC,MAAM;AACtE,cAAM,eAAe;AAAA,MACtB;AACD,cAAQ,KAAK,YAAY,OAAK;AAAA,QAC5B,KAAK,0BAA0B;AAC7B,gBAAM,cAAc;AACpB;AAAA,QACF,KAAK,0BAA0B;AAC7B,gBAAM,cAAc;AACpB;AAAA,QACF,KAAK,0BAA0B;AAC7B,eAAK,qCAAqC;AAC1C;AAAA,QACF,KAAK,0BAA0B;AAC7B,eAAK,mCAAmC;AACxC;AAAA,QACF,KAAK,0BAA0B;AAC7B,gBAAM,oBAAoB;AAC1B;AAAA,MAGH;AACD,YAAM,cAAc,KAAK,eAAe;AACxC,UAAI,aAAa;AACf,2BAAK,YAAa;AAClB,cAAM,cAAc,KAAK,aAAa,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;AAAA,MACxG,OAAa;AACL,cAAM,cAAc;AAAA,MACrB;AAAA,IACF;AACD,UAAM,OAAO,KAAK,cAAc,CAAC,KAAK,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC;AACpJ,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,IAAQ,SAAS;AACb,UAAM,OAAO,GAAG,OAAO,KAAK,CAAC,IAAI,SAAS,SAAS;AACnD,UAAM,MAAM,GAAG,OAAO,KAAK,CAAC,IAAI,SAAS,UAAU;AACnD,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,QAAI,KAAK,gBAAgB,aAAa,GAAG;AACvC,YAAM,QAAQ,GAAG,MAAM,QAAQ,SAAS;AACxC,YAAM,SAAS,GAAG,MAAM,SAAS,UAAU;AAAA,IACjD,OAAW;AACL,WAAK,YAAY,UAAU,SAAS;AAAA,IACrC;AACD,WAAO;AAAA,EACR;AAAA,EACD,YAAY,OAAO,YAAY,KAAK,WAAW;AAC7C,QAAI,CAAC,KAAK,KAAK,MAAM;AACnB;AAAA,IACD;AACD,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACD,IAAG,KAAK,OAAO,SAAS;AACzB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACD,IAAG,YAAY,KAAK,KAAK,IAAI;AAC9B,QAAI,cAAc;AAClB,QAAI,QAAQ,QAAQ,GAAG;AACrB,qBAAe,MAAM,QAAQ;AAC7B,sBAAgB,MAAM,SAAS;AAAA,IACrC,OAAW;AACL,qBAAe,MAAM,SAAS;AAC9B,sBAAgB,MAAM,QAAQ;AAAA,IAC/B;AACD,cAAU,MAAM,QAAQ,GAAG,YAAY;AACvC,cAAU,MAAM,SAAS,GAAG,aAAa;AACzC,cAAU,aAAa,uBAAuB,MAAM,SAAS,GAAG;AAAA,EACjE;AAAA,EACD,IAAI,iBAAiB;AACnB,UAAM,WAAW,CAAC,QAAQ,WAAW,UAAU;AAC7C,YAAM,QAAQ,MAAM,OAAO,MAAM;AACjC,YAAM,YAAY,MAAM,CAAC;AACzB,YAAM,aAAa,MAAM,MAAM,CAAC;AAChC,YAAM,OAAO,MAAM,SAAS,IAAI,gBAAgB,GAAG,SAAS,OAAO,EAAE,UAAU;AAC/E,WAAK,kBAAkB,SAAS,KAAK,KAAK,IAAI;AAAA,QAC5C,CAAC,SAAS,GAAG,gBAAgB,GAAG,SAAS,MAAM,EAAE,UAAU;AAAA,MACnE,CAAO;AAAA,IACP;AACI,WAAO,OAAO,MAAM,kBAAkB;AAAA,MACpC,SAAS,WAAS;AAChB,cAAM;AAAA,UACJ;AAAA,QACV,IAAY,MAAM;AACV,cAAM,SAAS,UAAU,MAAM;AAC/B,aAAK,UAAU,MAAM,aAAa,SAAS,WAAW;AACtD,aAAK,kBAAkB,SAAS,KAAK,KAAK,IAAI;AAAA,UAC5C,QAAQ;AAAA,UACR,SAAS,YAAY,KAAK,YAAY;AAAA,QAChD,CAAS;AAAA,MACF;AAAA,MACD,OAAO,WAAS;AACd,aAAK,kBAAkB,SAAS,KAAK,KAAK,IAAI;AAAA,UAC5C,SAAS,CAAC,MAAM,OAAO;AAAA,QACjC,CAAS;AAAA,MACF;AAAA,MACD,QAAQ,WAAS;AACf,cAAM;AAAA,UACJ;AAAA,QACV,IAAY,MAAM;AACV,aAAK,UAAU,MAAM,aAAa,SAAS,WAAW;AACtD,aAAK,kBAAkB,SAAS,KAAK,KAAK,IAAI;AAAA,UAC5C,SAAS;AAAA,UACT,QAAQ;AAAA,QAClB,CAAS;AAAA,MACF;AAAA,MACD,OAAO,WAAS;AACd,mBAAW,MAAM,MAAM,OAAO,MAAM;AAAA,UAClC,eAAe;AAAA,QACzB,CAAS,GAAG,CAAC;AAAA,MACN;AAAA,MACD,UAAU,WAAS;AACjB,cAAM,OAAO,QAAQ,MAAM,OAAO;AAAA,MACnC;AAAA,MACD,UAAU,WAAS;AACjB,cAAM,OAAO,WAAW,MAAM,OAAO;AAAA,MACtC;AAAA,MACD,UAAU,WAAS;AACjB,aAAK,aAAa,MAAM,QAAQ,MAAM,OAAO,QAAQ;AAAA,MACtD;AAAA,MACD,SAAS,WAAS;AAChB,iBAAS,WAAW,mBAAmB,KAAK;AAAA,MAC7C;AAAA,MACD,WAAW,WAAS;AAClB,iBAAS,aAAa,mBAAmB,KAAK;AAAA,MAC/C;AAAA,MACD,SAAS,WAAS;AAChB,iBAAS,WAAW,SAAS,KAAK;AAAA,MACnC;AAAA,MACD,WAAW,WAAS;AAClB,iBAAS,aAAa,SAAS,KAAK;AAAA,MACrC;AAAA,MACD,aAAa,WAAS;AACpB,iBAAS,eAAe,eAAe,KAAK;AAAA,MAC7C;AAAA,MACD,aAAa,WAAS;AACpB,iBAAS,eAAe,eAAe,KAAK;AAAA,MAC7C;AAAA,MACD,UAAU,WAAS;AACjB,cAAM,QAAQ,MAAM,OAAO;AAC3B,aAAK,YAAY,KAAK;AACtB,aAAK,kBAAkB,SAAS,KAAK,KAAK,IAAI;AAAA,UAC5C,UAAU;AAAA,QACpB,CAAS;AAAA,MACF;AAAA,IACP,CAAK;AAAA,EACF;AAAA,EACD,0BAA0B,SAAS,SAAS;AAC1C,UAAM,gBAAgB,KAAK;AAC3B,eAAW,QAAQ,OAAO,KAAK,QAAQ,MAAM,GAAG;AAC9C,YAAM,SAAS,QAAQ,IAAI,KAAK,cAAc,IAAI;AAClD,uCAAS;AAAA,IACV;AAAA,EACF;AAAA,EACD,4BAA4B,SAAS;AACnC,QAAI,CAAC,KAAK,iBAAiB;AACzB;AAAA,IACD;AACD,UAAM,aAAa,KAAK,kBAAkB,YAAY,KAAK,KAAK,EAAE;AAClE,QAAI,CAAC,YAAY;AACf;AAAA,IACD;AACD,UAAM,gBAAgB,KAAK;AAC3B,eAAW,CAAC,YAAY,MAAM,KAAK,OAAO,QAAQ,UAAU,GAAG;AAC7D,YAAM,SAAS,cAAc,UAAU;AACvC,UAAI,QAAQ;AACV,cAAM,aAAa;AAAA,UACjB,QAAQ;AAAA,YACN,CAAC,UAAU,GAAG;AAAA,UACf;AAAA,UACD,QAAQ;AAAA,QAClB;AACQ,eAAO,UAAU;AACjB,eAAO,WAAW,UAAU;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AAAA,EACD,wBAAwB;AACtB,QAAI,CAAC,KAAK,WAAW;AACnB;AAAA,IACD;AACD,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,KAAK;AACT,QAAI,CAAC,YAAY;AACf;AAAA,IACD;AACD,UAAM,CAAC,SAAS,SAAS,SAAS,OAAO,IAAI,KAAK,KAAK,KAAK,IAAI,OAAK,KAAK,OAAO,CAAC,CAAC;AACnF,QAAI,WAAW,WAAW,GAAG;AAC3B,YAAM,CAAC,KAAK,KAAK,KAAK,GAAG,IAAI,WAAW,SAAS,GAAG,CAAC;AACrD,UAAI,YAAY,OAAO,YAAY,OAAO,YAAY,OAAO,YAAY,KAAK;AAC5E;AAAA,MACD;AAAA,IACF;AACD,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,KAAK;AACT,QAAI;AACJ,QAAI,mBAAK,aAAY;AACnB,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACD,IAAG;AACJ,YAAM,cAAc;AACpB,kBAAY,CAAC,iCAAiC,2CAA2C,kDAAkD,iCAAiC,WAAW,mBAAmB,WAAW,IAAI;AACzN,WAAK,UAAU,UAAU,IAAI,WAAW;AAAA,IACzC;AACD,UAAM,QAAQ,UAAU;AACxB,UAAM,SAAS,UAAU;AACzB,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,UAAM,MAAM,WAAW,cAAc,KAAK;AAC1C,QAAI,UAAU,IAAI,yBAAyB;AAC3C,QAAI,aAAa,SAAS,CAAC;AAC3B,QAAI,aAAa,UAAU,CAAC;AAC5B,UAAM,OAAO,WAAW,cAAc,MAAM;AAC5C,QAAI,OAAO,IAAI;AACf,UAAM,WAAW,WAAW,cAAc,UAAU;AACpD,UAAM,KAAK,YAAY,KAAK,KAAK,EAAE;AACnC,aAAS,aAAa,MAAM,EAAE;AAC9B,aAAS,aAAa,iBAAiB,mBAAmB;AAC1D,SAAK,OAAO,QAAQ;AACpB,aAAS,IAAI,GAAG,KAAK,WAAW,QAAQ,IAAI,IAAI,KAAK,GAAG;AACtD,YAAM,MAAM,WAAW,CAAC;AACxB,YAAM,MAAM,WAAW,IAAI,CAAC;AAC5B,YAAM,MAAM,WAAW,IAAI,CAAC;AAC5B,YAAM,MAAM,WAAW,IAAI,CAAC;AAC5B,YAAM,OAAO,WAAW,cAAc,MAAM;AAC5C,YAAM,KAAK,MAAM,WAAW;AAC5B,YAAM,KAAK,UAAU,OAAO;AAC5B,YAAM,aAAa,MAAM,OAAO;AAChC,YAAM,cAAc,MAAM,OAAO;AACjC,WAAK,aAAa,KAAK,CAAC;AACxB,WAAK,aAAa,KAAK,CAAC;AACxB,WAAK,aAAa,SAAS,SAAS;AACpC,WAAK,aAAa,UAAU,UAAU;AACtC,eAAS,OAAO,IAAI;AACpB,6CAAW,KAAK,+CAA+C,CAAC,QAAQ,CAAC,YAAY,SAAS,aAAa,UAAU;AAAA,IACtH;AACD,QAAI,mBAAK,aAAY;AACnB,gBAAU,KAAK,cAAc;AAC7B,YAAM,kBAAkB,UAAU,KAAK,EAAE;AAAA,IAC1C;AACD,SAAK,UAAU,OAAO,GAAG;AACzB,SAAK,UAAU,MAAM,WAAW,QAAQ,EAAE;AAAA,EAC3C;AAAA,EACD,eAAe;AACb,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACD,IAAG;AACJ,cAAU,aAAa,iBAAiB,QAAQ;AAChD,UAAM,QAAQ,mBAAK,eAAgB,IAAI,uBAAuB;AAAA,MAC5D,MAAM;AAAA,QACJ,OAAO,KAAK;AAAA,QACZ,UAAU,KAAK;AAAA,QACf,kBAAkB,KAAK;AAAA,QACvB,aAAa,KAAK;AAAA,QAClB,UAAU,KAAK;AAAA,QACf,YAAY,KAAK;AAAA,QACjB,aAAa;AAAA,QACb,IAAI,SAAS,KAAK,EAAE;AAAA,QACpB,UAAU,KAAK;AAAA,MAChB;AAAA,MACD,QAAQ,KAAK;AAAA,MACb,UAAU,CAAC,IAAI;AAAA,IACrB,CAAK;AACD,SAAK,OAAO,IAAI,OAAO,MAAM,OAAM,CAAE;AAAA,EACtC;AAAA,EACD,SAAS;AACP,gBAAY,mDAAmD;AAAA,EAChE;AAAA,EACD,mBAAmB,MAAM,SAAS,MAAM;AACtC,UAAM,SAAS;AACf,QAAI,KAAK,eAAe;AACtB,YAAM,WAAW,KAAK,cAAc,IAAI;AACxC,UAAI,UAAU;AACZ,mBAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACD,KAAI,UAAU;AACb,cAAI,SAAS,IAAI;AACf;AAAA,UACD;AACD,cAAI,OAAO,QAAQ;AACjB;AAAA,UACD;AACD,gBAAM,cAAc,OAAO,iBAAiB,WAAW,eAAe;AACtE,gBAAM,aAAa,SAAS,cAAc,qBAAqB,EAAE,IAAI;AACrE,cAAI,cAAc,CAAC,qBAAqB,IAAI,UAAU,GAAG;AACvD,iBAAK,6CAA6C,EAAE,EAAE;AACtD;AAAA,UACD;AACD,iBAAO,KAAK;AAAA,YACV;AAAA,YACA;AAAA,YACA;AAAA,UACZ,CAAW;AAAA,QACF;AAAA,MACF;AACD,aAAO;AAAA,IACR;AACD,eAAW,cAAc,SAAS,kBAAkB,IAAI,GAAG;AACzD,YAAM;AAAA,QACJ;AAAA,MACD,IAAG;AACJ,YAAM,KAAK,WAAW,aAAa,iBAAiB;AACpD,UAAI,OAAO,QAAQ;AACjB;AAAA,MACD;AACD,UAAI,CAAC,qBAAqB,IAAI,UAAU,GAAG;AACzC;AAAA,MACD;AACD,aAAO,KAAK;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,MACR,CAAO;AAAA,IACF;AACD,WAAO;AAAA,EACR;AAAA,EACD,OAAO;;AACL,QAAI,KAAK,WAAW;AAClB,WAAK,UAAU,SAAS;AAAA,IACzB;AACD,KAAA5B,MAAA,KAAK,UAAL,gBAAAA,IAAY;AAAA,EACb;AAAA,EACD,OAAO;;AACL,QAAI,KAAK,WAAW;AAClB,WAAK,UAAU,SAAS;AAAA,IACzB;AACD,KAAAA,MAAA,KAAK,UAAL,gBAAAA,IAAY;AAAA,EACb;AAAA,EACD,4BAA4B;AAC1B,WAAO,KAAK;AAAA,EACb;AAAA,EACD,mBAAmB;AACjB,UAAM,WAAW,KAAK;AACtB,QAAI,MAAM,QAAQ,QAAQ,GAAG;AAC3B,iBAAW,WAAW,UAAU;AAC9B,gBAAQ,UAAU,IAAI,eAAe;AAAA,MACtC;AAAA,IACP,OAAW;AACL,eAAS,UAAU,IAAI,eAAe;AAAA,IACvC;AAAA,EACF;AAAA,EACD,qBAAqB;AACnB,QAAI,CAAC,KAAK,aAAa;AACrB;AAAA,IACD;AACD,UAAM;AAAA,MACJ,sBAAsB;AAAA,MACtB,MAAM;AAAA,QACJ,IAAI;AAAA,MACL;AAAA,IACF,IAAG;AACJ,SAAK,UAAU,iBAAiB,YAAY,MAAM;;AAChD,OAAAA,MAAA,KAAK,YAAY,aAAjB,gBAAAA,IAA2B,SAAS,8BAA8B;AAAA,QAChE,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,MACR;AAAA,IACA,CAAK;AAAA,EACF;AACH;AApgBE;AACA;AACA;AA8DA;AAAA,mBAAc,SAAC,MAAM;AACnB,QAAM;AAAA,IACJ,WAAW;AAAA,MACT;AAAA,IACD;AAAA,IACD,MAAM;AAAA,MACJ,MAAM;AAAA,MACN;AAAA,IACD;AAAA,IACD,QAAQ;AAAA,MACN,UAAU;AAAA,QACR,SAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACF;AAAA,IACF;AAAA,EACF,IAAG;AACJ,6CAAa,OAAO,GAAG,GAAG,GAAG;AAC7B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACN,IAAQ,YAAY,IAAI;AACpB,QAAM,OAAO,GAAG,OAAO,KAAK,CAAC,IAAI,SAAS,SAAS;AACnD,QAAM,MAAM,GAAG,OAAO,aAAa,KAAK,CAAC,IAAI,SAAS,UAAU;AAChE,MAAI,aAAa,GAAG;AAClB,UAAM,QAAQ,GAAG,MAAM,QAAQ,SAAS;AACxC,UAAM,SAAS,GAAG,MAAM,SAAS,UAAU;AAAA,EACjD,OAAW;AACL,SAAK,YAAY,QAAQ;AAAA,EAC1B;AACF;AAlGH,IAAM,oBAAN;AAsgBA,MAAM,8BAA8B,kBAAkB;AAAA,EACpD,YAAY,YAAY,UAAU,MAAM;AACtC,UAAM,YAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc,CAAC,EAAC,mCAAS;AAAA,MACzB,sBAAsB;AAAA,IAC5B,CAAK;AA6CH;AAuBA;AAWA;AA9EE,SAAK,gBAAgB,WAAW,KAAK;AAAA,EACtC;AAAA,EACD,SAAS;AACP,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACD,IAAG;AACJ,UAAM,OAAO,SAAS,cAAc,GAAG;AACvC,SAAK,aAAa,mBAAmB,KAAK,EAAE;AAC5C,QAAI,UAAU;AACd,QAAI,KAAK,KAAK;AACZ,kBAAY,kBAAkB,MAAM,KAAK,KAAK,KAAK,SAAS;AAC5D,gBAAU;AAAA,IAChB,WAAe,KAAK,QAAQ;AACtB,WAAK,iBAAiB,MAAM,KAAK,MAAM;AACvC,gBAAU;AAAA,IAChB,WAAe,KAAK,YAAY;AAC1B,4BAAK,oCAAL,WAAqB,MAAM,KAAK,YAAY,KAAK;AACjD,gBAAU;AAAA,IAChB,WAAe,KAAK,aAAa;AAC3B,4BAAK,sCAAL,WAAsB,MAAM,KAAK;AACjC,gBAAU;AAAA,IAChB,WAAe,KAAK,MAAM;AACpB,WAAK,UAAU,MAAM,KAAK,IAAI;AAC9B,gBAAU;AAAA,IAChB,OAAW;AACL,UAAI,KAAK,YAAY,KAAK,QAAQ,UAAU,KAAK,QAAQ,UAAU,KAAK,KAAK,QAAQ,YAAY,MAAM,KAAK,mBAAmB,KAAK,cAAc;AAChJ,aAAK,cAAc,MAAM,IAAI;AAC7B,kBAAU;AAAA,MACX;AACD,UAAI,KAAK,WAAW;AAClB,aAAK,qBAAqB,MAAM,KAAK,SAAS;AAC9C,kBAAU;AAAA,MACX,WAAU,KAAK,iBAAiB,CAAC,SAAS;AACzC,aAAK,UAAU,MAAM,EAAE;AACvB,kBAAU;AAAA,MACX;AAAA,IACF;AACD,SAAK,UAAU,UAAU,IAAI,gBAAgB;AAC7C,QAAI,SAAS;AACX,WAAK,UAAU,OAAO,IAAI;AAAA,IAC3B;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EAID,UAAU,MAAM,aAAa;AAC3B,SAAK,OAAO,KAAK,YAAY,mBAAmB,WAAW;AAC3D,SAAK,UAAU,MAAM;AACnB,UAAI,aAAa;AACf,aAAK,YAAY,gBAAgB,WAAW;AAAA,MAC7C;AACD,aAAO;AAAA,IACb;AACI,QAAI,eAAe,gBAAgB,IAAI;AACrC,4BAAK,sCAAL;AAAA,IACD;AAAA,EACF;AAAA,EACD,iBAAiB,MAAM,QAAQ;AAC7B,SAAK,OAAO,KAAK,YAAY,aAAa,EAAE;AAC5C,SAAK,UAAU,MAAM;AACnB,WAAK,YAAY,mBAAmB,MAAM;AAC1C,aAAO;AAAA,IACb;AACI,0BAAK,sCAAL;AAAA,EACD;AAAA,EAoBD,cAAc,MAAM,MAAM;AACxB,SAAK,OAAO,KAAK,YAAY,aAAa,EAAE;AAC5C,UAAM,MAAM,oBAAI,IAAI,CAAC,CAAC,UAAU,SAAS,GAAG,CAAC,YAAY,WAAW,GAAG,CAAC,cAAc,aAAa,CAAC,CAAC;AACrG,eAAW,QAAQ,OAAO,KAAK,KAAK,OAAO,GAAG;AAC5C,YAAM,SAAS,IAAI,IAAI,IAAI;AAC3B,UAAI,CAAC,QAAQ;AACX;AAAA,MACD;AACD,WAAK,MAAM,IAAI,MAAM;;AACnB,SAAAA,MAAA,KAAK,YAAY,aAAjB,gBAAAA,IAA2B,SAAS,0BAA0B;AAAA,UAC5D,QAAQ;AAAA,UACR,QAAQ;AAAA,YACN,IAAI,KAAK;AAAA,YACT;AAAA,UACD;AAAA,QACX;AACQ,eAAO;AAAA,MACf;AAAA,IACK;AACD,QAAI,CAAC,KAAK,SAAS;AACjB,WAAK,UAAU,MAAM;AAAA,IACtB;AACD,0BAAK,sCAAL;AAAA,EACD;AAAA,EACD,qBAAqB,MAAM,WAAW;AACpC,UAAM,mBAAmB,KAAK;AAC9B,QAAI,CAAC,kBAAkB;AACrB,WAAK,OAAO,KAAK,YAAY,aAAa,EAAE;AAAA,IAC7C;AACD,0BAAK,sCAAL;AACA,QAAI,CAAC,KAAK,eAAe;AACvB,WAAK,kHAAqH;AAC1H,UAAI,CAAC,kBAAkB;AACrB,aAAK,UAAU,MAAM;AAAA,MACtB;AACD;AAAA,IACD;AACD,SAAK,UAAU,MAAM;;AACnB;AACA,YAAM;AAAA,QACJ,QAAQ;AAAA,QACR,MAAM;AAAA,QACN;AAAA,MACD,IAAG;AACJ,YAAM,YAAY;AAClB,UAAI,gBAAgB,WAAW,KAAK,cAAc,WAAW,GAAG;AAC9D,cAAM,WAAW,IAAI,IAAI,aAAa;AACtC,mBAAW,aAAa,iBAAiB;AACvC,gBAAM,SAAS,KAAK,cAAc,SAAS,KAAK;AAChD,qBAAW;AAAA,YACT;AAAA,UACD,KAAI,QAAQ;AACX,qBAAS,IAAI,EAAE;AAAA,UAChB;AAAA,QACF;AACD,mBAAW,UAAU,OAAO,OAAO,KAAK,aAAa,GAAG;AACtD,qBAAW,SAAS,QAAQ;AAC1B,gBAAI,SAAS,IAAI,MAAM,EAAE,MAAM,SAAS;AACtC,wBAAU,KAAK,KAAK;AAAA,YACrB;AAAA,UACF;AAAA,QACF;AAAA,MACT,OAAa;AACL,mBAAW,UAAU,OAAO,OAAO,KAAK,aAAa,GAAG;AACtD,oBAAU,KAAK,GAAG,MAAM;AAAA,QACzB;AAAA,MACF;AACD,YAAM,UAAU,KAAK;AACrB,YAAM,SAAS;AACf,iBAAW,SAAS,WAAW;AAC7B,cAAM;AAAA,UACJ;AAAA,QACD,IAAG;AACJ,eAAO,KAAK,EAAE;AACd,gBAAQ,MAAM,MAAI;AAAA,UAChB,KAAK,QACH;AACE,kBAAM,QAAQ,MAAM,gBAAgB;AACpC,oBAAQ,SAAS,IAAI;AAAA,cACnB;AAAA,YAChB,CAAe;AACD;AAAA,UACD;AAAA,UACH,KAAK;AAAA,UACL,KAAK,eACH;AACE,kBAAM,QAAQ,MAAM,iBAAiB,MAAM;AAC3C,oBAAQ,SAAS,IAAI;AAAA,cACnB;AAAA,YAChB,CAAe;AACD;AAAA,UACD;AAAA,UACH,KAAK;AAAA,UACL,KAAK,WACH;AACE,kBAAM,QAAQ,MAAM,gBAAgB;AACpC,oBAAQ,SAAS,IAAI;AAAA,cACnB;AAAA,YAChB,CAAe;AACD;AAAA,UACD;AAAA,UACH;AACE;AAAA,QACH;AACD,cAAM,aAAa,SAAS,cAAc,qBAAqB,EAAE,IAAI;AACrE,YAAI,CAAC,YAAY;AACf;AAAA,QACD,WAAU,CAAC,qBAAqB,IAAI,UAAU,GAAG;AAChD,eAAK,+CAA+C,EAAE,EAAE;AACxD;AAAA,QACD;AACD,mBAAW,cAAc,IAAI,MAAM,WAAW,CAAC;AAAA,MAChD;AACD,UAAI,KAAK,iBAAiB;AACxB,SAAAA,MAAA,KAAK,YAAY,aAAjB,gBAAAA,IAA2B,SAAS,0BAA0B;AAAA,UAC5D,QAAQ;AAAA,UACR,QAAQ;AAAA,YACN,IAAI;AAAA,YACJ,KAAK;AAAA,YACL,MAAM;AAAA,UACP;AAAA,QACX;AAAA,MACO;AACD,aAAO;AAAA,IACb;AAAA,EACG;AACH;AAxKE;AAAA,qBAAgB,WAAG;AACjB,OAAK,UAAU,aAAa,sBAAsB,EAAE;AACrD;AAqBD;AAAA,oBAAe,SAAC,MAAM,YAAY,OAAO,MAAM;AAC7C,OAAK,OAAO,KAAK,YAAY,aAAa,EAAE;AAC5C,MAAI,WAAW,aAAa;AAC1B,SAAK,QAAQ,WAAW;AAAA,EACzB;AACD,OAAK,UAAU,MAAM;;AACnB,KAAAA,MAAA,KAAK,oBAAL,gBAAAA,IAAsB,mBAAmB,WAAW,SAAS,WAAW,UAAU;AAClF,WAAO;AAAA,EACb;AACI,wBAAK,sCAAL;AACD;AACD;AAAA,qBAAgB,SAAC,MAAM,QAAQ;AAC7B,OAAK,OAAO,KAAK,YAAY,aAAa,EAAE;AAC5C,OAAK,UAAU,MAAM;AACnB,SAAK,YAAY,mBAAmB,MAAM;AAC1C,WAAO;AAAA,EACb;AACI,wBAAK,sCAAL;AACD;AAgIH,MAAM,8BAA8B,kBAAkB;AAAA,EACpD,YAAY,YAAY;AACtB,UAAM,YAAY;AAAA,MAChB,cAAc;AAAA,IACpB,CAAK;AAAA,EACF;AAAA,EACD,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,gBAAgB;AAC7C,UAAM,QAAQ,SAAS,cAAc,KAAK;AAC1C,UAAM,MAAM,KAAK,qBAAqB,gBAAgB,KAAK,KAAK,KAAK,YAAa,IAAG;AACrF,UAAM,aAAa,gBAAgB,4BAA4B;AAC/D,UAAM,aAAa,kBAAkB,KAAK,UAAU;AAAA,MAClD,MAAM,KAAK,KAAK;AAAA,IACjB,EAAC;AACF,QAAI,CAAC,KAAK,KAAK,YAAY,KAAK,cAAc;AAC5C,WAAK,aAAY;AAAA,IAClB;AACD,SAAK,UAAU,OAAO,KAAK;AAC3B,WAAO,KAAK;AAAA,EACb;AACH;AACA,MAAM,gCAAgC,kBAAkB;AAAA,EACtD,SAAS;AACP,WAAO,KAAK;AAAA,EACb;AAAA,EACD,yBAAyB,SAAS;;AAChC,QAAI,KAAK,KAAK,cAAc;AAC1B,YAAIA,MAAA,QAAQ,oBAAR,gBAAAA,IAAyB,cAAa,UAAU;AAClD,gBAAQ,gBAAgB,SAAS;AAAA,MAClC;AACD,cAAQ,SAAS;AAAA,IAClB;AAAA,EACF;AAAA,EACD,gBAAgB,OAAO;AACrB,WAAO,iBAAiB,SAAS,QAAQ,MAAM,UAAU,MAAM;AAAA,EAChE;AAAA,EACD,kBAAkB,SAAS,aAAa,UAAU,WAAW,aAAa;AACxE,QAAI,SAAS,SAAS,OAAO,GAAG;AAC9B,cAAQ,iBAAiB,UAAU,WAAS;;AAC1C,SAAAA,MAAA,KAAK,YAAY,aAAjB,gBAAAA,IAA2B,SAAS,0BAA0B;AAAA,UAC5D,QAAQ;AAAA,UACR,QAAQ;AAAA,YACN,IAAI,KAAK,KAAK;AAAA,YACd,MAAM;AAAA,YACN,OAAO,YAAY,KAAK;AAAA,YACxB,OAAO,MAAM;AAAA,YACb,UAAU,KAAK,gBAAgB,KAAK;AAAA,UACrC;AAAA,QACX;AAAA,MACA,CAAO;AAAA,IACP,OAAW;AACL,cAAQ,iBAAiB,UAAU,WAAS;;AAC1C,YAAI,aAAa,QAAQ;AACvB,cAAI,CAAC,YAAY,WAAW,CAAC,MAAM,eAAe;AAChD;AAAA,UACD;AACD,sBAAY,UAAU;AAAA,QAChC,WAAmB,aAAa,SAAS;AAC/B,cAAI,YAAY,SAAS;AACvB;AAAA,UACD;AACD,sBAAY,UAAU;AAAA,QACvB;AACD,YAAI,CAAC,aAAa;AAChB;AAAA,QACD;AACD,SAAAA,MAAA,KAAK,YAAY,aAAjB,gBAAAA,IAA2B,SAAS,0BAA0B;AAAA,UAC5D,QAAQ;AAAA,UACR,QAAQ;AAAA,YACN,IAAI,KAAK,KAAK;AAAA,YACd,MAAM;AAAA,YACN,OAAO,YAAY,KAAK;AAAA,UACzB;AAAA,QACX;AAAA,MACA,CAAO;AAAA,IACF;AAAA,EACF;AAAA,EACD,mBAAmB,SAAS,aAAa,OAAO,QAAQ;;AACtD,eAAW,CAAC,UAAU,SAAS,KAAK,OAAO;AACzC,UAAI,cAAc,cAAYA,MAAA,KAAK,KAAK,YAAV,gBAAAA,IAAoB,aAAY;AAC5D,YAAI,cAAc,WAAW,cAAc,QAAQ;AACjD,wCAAgB;AAAA,YACd,SAAS;AAAA,UACrB;AAAA,QACS;AACD,aAAK,kBAAkB,SAAS,aAAa,UAAU,WAAW,MAAM;AACxE,YAAI,cAAc,WAAW,GAAC,UAAK,KAAK,YAAV,mBAAmB,OAAM;AACrD,eAAK,kBAAkB,SAAS,aAAa,QAAQ,QAAQ,IAAI;AAAA,QAC3E,WAAmB,cAAc,UAAU,GAAC,UAAK,KAAK,YAAV,mBAAmB,QAAO;AAC5D,eAAK,kBAAkB,SAAS,aAAa,SAAS,SAAS,IAAI;AAAA,QACpE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACD,oBAAoB,SAAS;AAC3B,UAAM,QAAQ,KAAK,KAAK,mBAAmB;AAC3C,YAAQ,MAAM,kBAAkB,UAAU,OAAO,gBAAgB,KAAK,aAAa,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,EAChH;AAAA,EACD,cAAc,SAAS;AACrB,UAAM,iBAAiB,CAAC,QAAQ,UAAU,OAAO;AACjD,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,KAAK,KAAK;AACd,UAAM,WAAW,KAAK,KAAK,sBAAsB,YAAY;AAC7D,UAAM,QAAQ,QAAQ;AACtB,QAAI;AACJ,UAAM,cAAc;AACpB,UAAM,oBAAoB,OAAK,KAAK,MAAM,KAAK,CAAC,IAAI;AACpD,QAAI,KAAK,KAAK,WAAW;AACvB,YAAM,SAAS,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,WAAW;AAC3E,YAAM,gBAAgB,KAAK,MAAM,UAAU,cAAc,SAAS,KAAK;AACvE,YAAM,aAAa,SAAS;AAC5B,yBAAmB,KAAK,IAAI,UAAU,kBAAkB,aAAa,WAAW,CAAC;AAAA,IACvF,OAAW;AACL,YAAM,SAAS,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,WAAW;AAC3E,yBAAmB,KAAK,IAAI,UAAU,kBAAkB,SAAS,WAAW,CAAC;AAAA,IAC9E;AACD,UAAM,WAAW,QAAQ,gBAAgB;AACzC,UAAM,QAAQ,KAAK,aAAa,UAAU,CAAC,GAAG,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC;AACxE,QAAI,KAAK,KAAK,kBAAkB,MAAM;AACpC,YAAM,YAAY,eAAe,KAAK,KAAK,aAAa;AAAA,IACzD;AAAA,EACF;AAAA,EACD,aAAa,SAAS,YAAY;AAChC,QAAI,YAAY;AACd,cAAQ,aAAa,YAAY,IAAI;AAAA,IAC3C,OAAW;AACL,cAAQ,gBAAgB,UAAU;AAAA,IACnC;AACD,YAAQ,aAAa,iBAAiB,UAAU;AAAA,EACjD;AACH;AACA,MAAM,oCAAoC,wBAAwB;AAAA,EAChE,YAAY,YAAY;AACtB,UAAM,eAAe,WAAW,eAAe,WAAW,KAAK,gBAAgB,CAAC,WAAW,KAAK,iBAAiB,CAAC,CAAC,WAAW,KAAK;AACnI,UAAM,YAAY;AAAA,MAChB;AAAA,IACN,CAAK;AAAA,EACF;AAAA,EACD,sBAAsB,MAAM,KAAK,OAAO,cAAc;AACpD,UAAM,UAAU,KAAK;AACrB,eAAW,WAAW,KAAK,mBAAmB,KAAK,MAAM,KAAK,EAAE,GAAG;AACjE,UAAI,QAAQ,YAAY;AACtB,gBAAQ,WAAW,GAAG,IAAI;AAAA,MAC3B;AACD,cAAQ,SAAS,QAAQ,IAAI;AAAA,QAC3B,CAAC,YAAY,GAAG;AAAA,MACxB,CAAO;AAAA,IACF;AAAA,EACF;AAAA,EACD,SAAS;;AACP,UAAM,UAAU,KAAK;AACrB,UAAM,KAAK,KAAK,KAAK;AACrB,SAAK,UAAU,UAAU,IAAI,sBAAsB;AACnD,QAAI,UAAU;AACd,QAAI,KAAK,aAAa;AACpB,YAAM,aAAa,QAAQ,SAAS,IAAI;AAAA,QACtC,OAAO,KAAK,KAAK;AAAA,MACzB,CAAO;AACD,UAAI,cAAc,WAAW,SAAS;AACtC,YAAM,SAAS,QAAQ,SAAS,IAAI;AAAA,QAClC,WAAW,KAAK,KAAK;AAAA,MACtB,GAAE;AACH,UAAI,UAAU,YAAY,SAAS,QAAQ;AACzC,sBAAc,YAAY,MAAM,GAAG,MAAM;AAAA,MAC1C;AACD,UAAI,uBAAuB,WAAW,oBAAkBA,MAAA,KAAK,KAAK,gBAAV,gBAAAA,IAAuB,KAAK,UAAS;AAC7F,UAAI,wBAAwB,KAAK,KAAK,MAAM;AAC1C,+BAAuB,qBAAqB,WAAW,QAAQ,EAAE;AAAA,MAClE;AACD,YAAM,cAAc;AAAA,QAClB,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,oBAAoB;AAAA,QACpB,WAAW;AAAA,QACX,SAAS;AAAA,MACjB;AACM,UAAI,KAAK,KAAK,WAAW;AACvB,kBAAU,SAAS,cAAc,UAAU;AAC3C,gBAAQ,cAAc,wBAAwB;AAC9C,YAAI,KAAK,KAAK,aAAa;AACzB,kBAAQ,MAAM,YAAY;AAAA,QAC3B;AAAA,MACT,OAAa;AACL,kBAAU,SAAS,cAAc,OAAO;AACxC,gBAAQ,OAAO;AACf,gBAAQ,aAAa,SAAS,wBAAwB,WAAW;AACjE,YAAI,KAAK,KAAK,aAAa;AACzB,kBAAQ,MAAM,YAAY;AAAA,QAC3B;AAAA,MACF;AACD,UAAI,KAAK,KAAK,cAAc;AAC1B,gBAAQ,SAAS;AAAA,MAClB;AACD,2BAAqB,IAAI,OAAO;AAChC,cAAQ,aAAa,mBAAmB,EAAE;AAC1C,cAAQ,WAAW,KAAK,KAAK;AAC7B,cAAQ,OAAO,KAAK,KAAK;AACzB,cAAQ,WAAW;AACnB,WAAK,aAAa,SAAS,KAAK,KAAK,QAAQ;AAC7C,UAAI,QAAQ;AACV,gBAAQ,YAAY;AAAA,MACrB;AACD,cAAQ,iBAAiB,SAAS,WAAS;AACzC,gBAAQ,SAAS,IAAI;AAAA,UACnB,OAAO,MAAM,OAAO;AAAA,QAC9B,CAAS;AACD,aAAK,sBAAsB,SAAS,SAAS,MAAM,OAAO,OAAO,OAAO;AACxE,oBAAY,iBAAiB;AAAA,MACrC,CAAO;AACD,cAAQ,iBAAiB,aAAa,WAAS;AAC7C,cAAM,eAAe,KAAK,KAAK,qBAAqB;AACpD,gBAAQ,QAAQ,YAAY,YAAY;AACxC,oBAAY,iBAAiB;AAAA,MACrC,CAAO;AACD,UAAI,eAAe,WAAS;AAC1B,cAAM;AAAA,UACJ;AAAA,QACD,IAAG;AACJ,YAAI,mBAAmB,QAAQ,mBAAmB,QAAW;AAC3D,gBAAM,OAAO,QAAQ;AAAA,QACtB;AACD,cAAM,OAAO,aAAa;AAAA,MAClC;AACM,UAAI,KAAK,mBAAmB,KAAK,cAAc;AAC7C,gBAAQ,iBAAiB,SAAS,WAAS;;AACzC,cAAI,YAAY,SAAS;AACvB;AAAA,UACD;AACD,gBAAM;AAAA,YACJ;AAAA,UACD,IAAG;AACJ,cAAI,YAAY,WAAW;AACzB,mBAAO,QAAQ,YAAY;AAAA,UAC5B;AACD,sBAAY,qBAAqB,OAAO;AACxC,sBAAY,YAAY;AACxB,cAAI,GAACA,MAAA,KAAK,KAAK,YAAV,gBAAAA,IAAmB,QAAO;AAC7B,wBAAY,UAAU;AAAA,UACvB;AAAA,QACX,CAAS;AACD,gBAAQ,iBAAiB,qBAAqB,aAAW;AACvD,eAAK,yBAAyB,QAAQ,MAAM;AAC5C,gBAAM,UAAU;AAAA,YACd,MAAM,OAAO;AACX,0BAAY,YAAY,MAAM,OAAO,SAAS;AAC9C,sBAAQ,SAAS,IAAI;AAAA,gBACnB,OAAO,YAAY,UAAU,SAAU;AAAA,cACvD,CAAe;AACD,oBAAM,OAAO,QAAQ,YAAY;AAAA,YAClC;AAAA,YACD,eAAe,OAAO;AACpB,oBAAM;AAAA,gBACJ;AAAA,cAChB,IAAkB,MAAM;AACV,0BAAY,iBAAiB;AAC7B,kBAAI,mBAAmB,QAAQ,mBAAmB,UAAa,MAAM,WAAW,SAAS,eAAe;AACtG,sBAAM,OAAO,QAAQ;AAAA,cACtB;AACD,sBAAQ,SAAS,IAAI;AAAA,gBACnB;AAAA,cAChB,CAAe;AAAA,YACF;AAAA,YACD,SAAS,OAAO;AACd,oBAAM,OAAO,kBAAkB,GAAG,MAAM,OAAO,QAAQ;AAAA,YACxD;AAAA,YACD,WAAW,WAAS;;AAClB,oBAAM;AAAA,gBACJ;AAAA,cAChB,IAAkB,MAAM;AACV,oBAAM;AAAA,gBACJ;AAAA,cACD,IAAG;AACJ,kBAAI,cAAc,GAAG;AACnB,uBAAO,gBAAgB,WAAW;AAClC;AAAA,cACD;AACD,qBAAO,aAAa,aAAa,SAAS;AAC1C,kBAAI,QAAQ,YAAY;AACxB,kBAAI,CAAC,SAAS,MAAM,UAAU,WAAW;AACvC;AAAA,cACD;AACD,sBAAQ,MAAM,MAAM,GAAG,SAAS;AAChC,qBAAO,QAAQ,YAAY,YAAY;AACvC,sBAAQ,SAAS,IAAI;AAAA,gBACnB;AAAA,cAChB,CAAe;AACD,eAAAA,MAAA,KAAK,YAAY,aAAjB,gBAAAA,IAA2B,SAAS,0BAA0B;AAAA,gBAC5D,QAAQ;AAAA,gBACR,QAAQ;AAAA,kBACN;AAAA,kBACA,MAAM;AAAA,kBACN;AAAA,kBACA,YAAY;AAAA,kBACZ,WAAW;AAAA,kBACX,UAAU,OAAO;AAAA,kBACjB,QAAQ,OAAO;AAAA,gBAChB;AAAA,cACjB;AAAA,YACa;AAAA,UACb;AACU,eAAK,0BAA0B,SAAS,OAAO;AAAA,QACzD,CAAS;AACD,gBAAQ,iBAAiB,WAAW,WAAS;;AAC3C,sBAAY,YAAY;AACxB,cAAI,YAAY;AAChB,cAAI,MAAM,QAAQ,UAAU;AAC1B,wBAAY;AAAA,UACxB,WAAqB,MAAM,QAAQ,WAAW,CAAC,KAAK,KAAK,WAAW;AACxD,wBAAY;AAAA,UACxB,WAAqB,MAAM,QAAQ,OAAO;AAC9B,wBAAY,YAAY;AAAA,UACzB;AACD,cAAI,cAAc,IAAI;AACpB;AAAA,UACD;AACD,gBAAM;AAAA,YACJ;AAAA,UACZ,IAAc,MAAM;AACV,cAAI,YAAY,uBAAuB,OAAO;AAC5C;AAAA,UACD;AACD,sBAAY,qBAAqB;AACjC,sBAAY,YAAY;AACxB,WAAAA,MAAA,KAAK,YAAY,aAAjB,gBAAAA,IAA2B,SAAS,0BAA0B;AAAA,YAC5D,QAAQ;AAAA,YACR,QAAQ;AAAA,cACN;AAAA,cACA,MAAM;AAAA,cACN;AAAA,cACA,YAAY;AAAA,cACZ;AAAA,cACA,UAAU,MAAM,OAAO;AAAA,cACvB,QAAQ,MAAM,OAAO;AAAA,YACtB;AAAA,UACb;AAAA,QACA,CAAS;AACD,cAAM,gBAAgB;AACtB,uBAAe;AACf,gBAAQ,iBAAiB,QAAQ,WAAS;;AACxC,cAAI,CAAC,YAAY,WAAW,CAAC,MAAM,eAAe;AAChD;AAAA,UACD;AACD,cAAI,GAACA,MAAA,KAAK,KAAK,YAAV,gBAAAA,IAAmB,OAAM;AAC5B,wBAAY,UAAU;AAAA,UACvB;AACD,gBAAM;AAAA,YACJ;AAAA,UACZ,IAAc,MAAM;AACV,sBAAY,YAAY;AACxB,cAAI,YAAY,uBAAuB,OAAO;AAC5C,aAAAc,MAAA,KAAK,YAAY,aAAjB,gBAAAA,IAA2B,SAAS,0BAA0B;AAAA,cAC5D,QAAQ;AAAA,cACR,QAAQ;AAAA,gBACN;AAAA,gBACA,MAAM;AAAA,gBACN;AAAA,gBACA,YAAY;AAAA,gBACZ,WAAW,YAAY;AAAA,gBACvB,UAAU,MAAM,OAAO;AAAA,gBACvB,QAAQ,MAAM,OAAO;AAAA,cACtB;AAAA,YACf;AAAA,UACW;AACD,wBAAc,KAAK;AAAA,QAC7B,CAAS;AACD,aAAI,UAAK,KAAK,YAAV,mBAAmB,WAAW;AAChC,kBAAQ,iBAAiB,eAAe,WAAS;;AAC/C,wBAAY,qBAAqB;AACjC,kBAAM;AAAA,cACJ;AAAA,cACA;AAAA,YACD,IAAG;AACJ,kBAAM;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,YACD,IAAG;AACJ,gBAAI,WAAW,gBACb,SAAS;AACX,oBAAQ,MAAM,WAAS;AAAA,cACrB,KAAK,sBACH;AACE,sBAAM,QAAQ,MAAM,UAAU,GAAG,cAAc,EAAE,MAAM,YAAY;AACnE,oBAAI,OAAO;AACT,8BAAY,MAAM,CAAC,EAAE;AAAA,gBACtB;AACD;AAAA,cACD;AAAA,cACH,KAAK,qBACH;AACE,sBAAM,QAAQ,MAAM,UAAU,cAAc,EAAE,MAAM,YAAY;AAChE,oBAAI,OAAO;AACT,4BAAU,MAAM,CAAC,EAAE;AAAA,gBACpB;AACD;AAAA,cACD;AAAA,cACH,KAAK;AACH,oBAAI,mBAAmB,cAAc;AACnC,8BAAY;AAAA,gBACb;AACD;AAAA,cACF,KAAK;AACH,oBAAI,mBAAmB,cAAc;AACnC,4BAAU;AAAA,gBACX;AACD;AAAA,YACH;AACD,kBAAM,eAAc;AACpB,aAAAd,MAAA,KAAK,YAAY,aAAjB,gBAAAA,IAA2B,SAAS,0BAA0B;AAAA,cAC5D,QAAQ;AAAA,cACR,QAAQ;AAAA,gBACN;AAAA,gBACA,MAAM;AAAA,gBACN;AAAA,gBACA,QAAQ,QAAQ;AAAA,gBAChB,YAAY;AAAA,gBACZ;AAAA,gBACA;AAAA,cACD;AAAA,YACf;AAAA,UACA,CAAW;AAAA,QACF;AACD,aAAK,mBAAmB,SAAS,aAAa,CAAC,CAAC,SAAS,OAAO,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,aAAa,YAAY,GAAG,CAAC,cAAc,aAAa,GAAG,CAAC,cAAc,YAAY,GAAG,CAAC,WAAW,UAAU,CAAC,GAAG,WAAS,MAAM,OAAO,KAAK;AAAA,MACrO;AACD,UAAI,cAAc;AAChB,gBAAQ,iBAAiB,QAAQ,YAAY;AAAA,MAC9C;AACD,UAAI,KAAK,KAAK,MAAM;AAClB,cAAM,aAAa,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC;AACvD,cAAM,YAAY,aAAa;AAC/B,gBAAQ,UAAU,IAAI,MAAM;AAC5B,gBAAQ,MAAM,gBAAgB,QAAQ,SAAS;AAAA,MAChD;AAAA,IACP,OAAW;AACL,gBAAU,SAAS,cAAc,KAAK;AACtC,cAAQ,cAAc,KAAK,KAAK;AAChC,cAAQ,MAAM,gBAAgB;AAC9B,cAAQ,MAAM,UAAU;AACxB,UAAI,KAAK,KAAK,cAAc;AAC1B,gBAAQ,SAAS;AAAA,MAClB;AAAA,IACF;AACD,SAAK,cAAc,OAAO;AAC1B,SAAK,oBAAoB,OAAO;AAChC,SAAK,4BAA4B,OAAO;AACxC,SAAK,UAAU,OAAO,OAAO;AAC7B,WAAO,KAAK;AAAA,EACb;AACH;AACA,MAAM,yCAAyC,wBAAwB;AAAA,EACrE,YAAY,YAAY;AACtB,UAAM,YAAY;AAAA,MAChB,cAAc,CAAC,CAAC,WAAW,KAAK;AAAA,IACtC,CAAK;AAAA,EACF;AACH;AACA,MAAM,wCAAwC,wBAAwB;AAAA,EACpE,YAAY,YAAY;AACtB,UAAM,YAAY;AAAA,MAChB,cAAc,WAAW;AAAA,IAC/B,CAAK;AAAA,EACF;AAAA,EACD,SAAS;AACP,UAAM,UAAU,KAAK;AACrB,UAAM,OAAO,KAAK;AAClB,UAAM,KAAK,KAAK;AAChB,QAAI,QAAQ,QAAQ,SAAS,IAAI;AAAA,MAC/B,OAAO,KAAK,gBAAgB,KAAK;AAAA,IAClC,GAAE;AACH,QAAI,OAAO,UAAU,UAAU;AAC7B,cAAQ,UAAU;AAClB,cAAQ,SAAS,IAAI;AAAA,QACnB;AAAA,MACR,CAAO;AAAA,IACF;AACD,SAAK,UAAU,UAAU,IAAI,0BAA0B,UAAU;AACjE,UAAM,UAAU,SAAS,cAAc,OAAO;AAC9C,yBAAqB,IAAI,OAAO;AAChC,YAAQ,aAAa,mBAAmB,EAAE;AAC1C,YAAQ,WAAW,KAAK;AACxB,SAAK,aAAa,SAAS,KAAK,KAAK,QAAQ;AAC7C,YAAQ,OAAO;AACf,YAAQ,OAAO,KAAK;AACpB,QAAI,OAAO;AACT,cAAQ,aAAa,WAAW,IAAI;AAAA,IACrC;AACD,YAAQ,aAAa,eAAe,KAAK,WAAW;AACpD,YAAQ,WAAW;AACnB,YAAQ,iBAAiB,UAAU,WAAS;AAC1C,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACR,IAAU,MAAM;AACV,iBAAW,YAAY,KAAK,mBAAmB,MAAM,EAAE,GAAG;AACxD,cAAM,aAAa,WAAW,SAAS,gBAAgB,KAAK;AAC5D,YAAI,SAAS,YAAY;AACvB,mBAAS,WAAW,UAAU;AAAA,QAC/B;AACD,gBAAQ,SAAS,SAAS,IAAI;AAAA,UAC5B,OAAO;AAAA,QACjB,CAAS;AAAA,MACF;AACD,cAAQ,SAAS,IAAI;AAAA,QACnB,OAAO;AAAA,MACf,CAAO;AAAA,IACP,CAAK;AACD,YAAQ,iBAAiB,aAAa,WAAS;AAC7C,YAAM,eAAe,KAAK,qBAAqB;AAC/C,YAAM,OAAO,UAAU,iBAAiB,KAAK;AAAA,IACnD,CAAK;AACD,QAAI,KAAK,mBAAmB,KAAK,cAAc;AAC7C,cAAQ,iBAAiB,qBAAqB,aAAW;AACvD,cAAM,UAAU;AAAA,UACd,MAAM,OAAO;AACX,kBAAM,OAAO,UAAU,MAAM,OAAO,UAAU;AAC9C,oBAAQ,SAAS,IAAI;AAAA,cACnB,OAAO,MAAM,OAAO;AAAA,YAClC,CAAa;AAAA,UACF;AAAA,QACX;AACQ,aAAK,0BAA0B,SAAS,OAAO;AAAA,MACvD,CAAO;AACD,WAAK,mBAAmB,SAAS,MAAM,CAAC,CAAC,UAAU,UAAU,GAAG,CAAC,UAAU,QAAQ,GAAG,CAAC,SAAS,OAAO,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,aAAa,YAAY,GAAG,CAAC,cAAc,aAAa,GAAG,CAAC,cAAc,YAAY,GAAG,CAAC,WAAW,UAAU,CAAC,GAAG,WAAS,MAAM,OAAO,OAAO;AAAA,IAC9Q;AACD,SAAK,oBAAoB,OAAO;AAChC,SAAK,4BAA4B,OAAO;AACxC,SAAK,UAAU,OAAO,OAAO;AAC7B,WAAO,KAAK;AAAA,EACb;AACH;AACA,MAAM,2CAA2C,wBAAwB;AAAA,EACvE,YAAY,YAAY;AACtB,UAAM,YAAY;AAAA,MAChB,cAAc,WAAW;AAAA,IAC/B,CAAK;AAAA,EACF;AAAA,EACD,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,0BAA0B,aAAa;AACpE,UAAM,UAAU,KAAK;AACrB,UAAM,OAAO,KAAK;AAClB,UAAM,KAAK,KAAK;AAChB,QAAI,QAAQ,QAAQ,SAAS,IAAI;AAAA,MAC/B,OAAO,KAAK,eAAe,KAAK;AAAA,IACjC,GAAE;AACH,QAAI,OAAO,UAAU,UAAU;AAC7B,cAAQ,UAAU,KAAK;AACvB,cAAQ,SAAS,IAAI;AAAA,QACnB;AAAA,MACR,CAAO;AAAA,IACF;AACD,QAAI,OAAO;AACT,iBAAW,SAAS,KAAK,mBAAmB,KAAK,WAAW,EAAE,GAAG;AAC/D,gBAAQ,SAAS,MAAM,IAAI;AAAA,UACzB,OAAO;AAAA,QACjB,CAAS;AAAA,MACF;AAAA,IACF;AACD,UAAM,UAAU,SAAS,cAAc,OAAO;AAC9C,yBAAqB,IAAI,OAAO;AAChC,YAAQ,aAAa,mBAAmB,EAAE;AAC1C,YAAQ,WAAW,KAAK;AACxB,SAAK,aAAa,SAAS,KAAK,KAAK,QAAQ;AAC7C,YAAQ,OAAO;AACf,YAAQ,OAAO,KAAK;AACpB,QAAI,OAAO;AACT,cAAQ,aAAa,WAAW,IAAI;AAAA,IACrC;AACD,YAAQ,WAAW;AACnB,YAAQ,iBAAiB,UAAU,WAAS;AAC1C,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACR,IAAU,MAAM;AACV,iBAAW,SAAS,KAAK,mBAAmB,MAAM,EAAE,GAAG;AACrD,gBAAQ,SAAS,MAAM,IAAI;AAAA,UACzB,OAAO;AAAA,QACjB,CAAS;AAAA,MACF;AACD,cAAQ,SAAS,IAAI;AAAA,QACnB,OAAO;AAAA,MACf,CAAO;AAAA,IACP,CAAK;AACD,YAAQ,iBAAiB,aAAa,WAAS;AAC7C,YAAM,eAAe,KAAK;AAC1B,YAAM,OAAO,UAAU,iBAAiB,QAAQ,iBAAiB,UAAa,iBAAiB,KAAK;AAAA,IAC1G,CAAK;AACD,QAAI,KAAK,mBAAmB,KAAK,cAAc;AAC7C,YAAM,iBAAiB,KAAK;AAC5B,cAAQ,iBAAiB,qBAAqB,aAAW;AACvD,cAAM,UAAU;AAAA,UACd,OAAO,WAAS;AACd,kBAAM,UAAU,mBAAmB,MAAM,OAAO;AAChD,uBAAW,SAAS,KAAK,mBAAmB,MAAM,OAAO,IAAI,GAAG;AAC9D,oBAAM,aAAa,WAAW,MAAM,OAAO;AAC3C,kBAAI,MAAM,YAAY;AACpB,sBAAM,WAAW,UAAU;AAAA,cAC5B;AACD,sBAAQ,SAAS,MAAM,IAAI;AAAA,gBACzB,OAAO;AAAA,cACvB,CAAe;AAAA,YACF;AAAA,UACF;AAAA,QACX;AACQ,aAAK,0BAA0B,SAAS,OAAO;AAAA,MACvD,CAAO;AACD,WAAK,mBAAmB,SAAS,MAAM,CAAC,CAAC,UAAU,UAAU,GAAG,CAAC,UAAU,QAAQ,GAAG,CAAC,SAAS,OAAO,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,aAAa,YAAY,GAAG,CAAC,cAAc,aAAa,GAAG,CAAC,cAAc,YAAY,GAAG,CAAC,WAAW,UAAU,CAAC,GAAG,WAAS,MAAM,OAAO,OAAO;AAAA,IAC9Q;AACD,SAAK,oBAAoB,OAAO;AAChC,SAAK,4BAA4B,OAAO;AACxC,SAAK,UAAU,OAAO,OAAO;AAC7B,WAAO,KAAK;AAAA,EACb;AACH;AACA,MAAM,0CAA0C,sBAAsB;AAAA,EACpE,YAAY,YAAY;AACtB,UAAM,YAAY;AAAA,MAChB,cAAc,WAAW,KAAK;AAAA,IACpC,CAAK;AAAA,EACF;AAAA,EACD,SAAS;AACP,UAAM,YAAY,MAAM;AACxB,cAAU,UAAU,IAAI,0BAA0B,YAAY;AAC9D,UAAM,cAAc,UAAU;AAC9B,QAAI,KAAK,mBAAmB,KAAK,gBAAgB,aAAa;AAC5D,WAAK,4BAA4B,WAAW;AAC5C,kBAAY,iBAAiB,qBAAqB,aAAW;AAC3D,aAAK,0BAA0B,IAAI,OAAO;AAAA,MAClD,CAAO;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACH;AACA,MAAM,sCAAsC,wBAAwB;AAAA,EAClE,YAAY,YAAY;AACtB,UAAM,YAAY;AAAA,MAChB,cAAc,WAAW;AAAA,IAC/B,CAAK;AAAA,EACF;AAAA,EACD,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,wBAAwB;AACrD,UAAM,UAAU,KAAK;AACrB,UAAM,KAAK,KAAK,KAAK;AACrB,UAAM,aAAa,QAAQ,SAAS,IAAI;AAAA,MACtC,OAAO,KAAK,KAAK;AAAA,IACvB,CAAK;AACD,UAAM,gBAAgB,SAAS,cAAc,QAAQ;AACrD,yBAAqB,IAAI,aAAa;AACtC,kBAAc,aAAa,mBAAmB,EAAE;AAChD,kBAAc,WAAW,KAAK,KAAK;AACnC,SAAK,aAAa,eAAe,KAAK,KAAK,QAAQ;AACnD,kBAAc,OAAO,KAAK,KAAK;AAC/B,kBAAc,WAAW;AACzB,QAAI,kBAAkB,KAAK,KAAK,SAAS,KAAK,KAAK,QAAQ,SAAS;AACpE,QAAI,CAAC,KAAK,KAAK,OAAO;AACpB,oBAAc,OAAO,KAAK,KAAK,QAAQ;AACvC,UAAI,KAAK,KAAK,aAAa;AACzB,sBAAc,WAAW;AAAA,MAC1B;AAAA,IACF;AACD,kBAAc,iBAAiB,aAAa,WAAS;AACnD,YAAM,eAAe,KAAK,KAAK;AAC/B,iBAAW,UAAU,cAAc,SAAS;AAC1C,eAAO,WAAW,OAAO,UAAU;AAAA,MACpC;AAAA,IACP,CAAK;AACD,eAAW,UAAU,KAAK,KAAK,SAAS;AACtC,YAAM,gBAAgB,SAAS,cAAc,QAAQ;AACrD,oBAAc,cAAc,OAAO;AACnC,oBAAc,QAAQ,OAAO;AAC7B,UAAI,WAAW,MAAM,SAAS,OAAO,WAAW,GAAG;AACjD,sBAAc,aAAa,YAAY,IAAI;AAC3C,0BAAkB;AAAA,MACnB;AACD,oBAAc,OAAO,aAAa;AAAA,IACnC;AACD,QAAI,mBAAmB;AACvB,QAAI,iBAAiB;AACnB,YAAM,oBAAoB,SAAS,cAAc,QAAQ;AACzD,wBAAkB,QAAQ;AAC1B,wBAAkB,aAAa,UAAU,IAAI;AAC7C,wBAAkB,aAAa,YAAY,IAAI;AAC/C,oBAAc,QAAQ,iBAAiB;AACvC,yBAAmB,MAAM;AACvB,0BAAkB,OAAM;AACxB,sBAAc,oBAAoB,SAAS,gBAAgB;AAC3D,2BAAmB;AAAA,MAC3B;AACM,oBAAc,iBAAiB,SAAS,gBAAgB;AAAA,IACzD;AACD,UAAM,WAAW,cAAY;AAC3B,YAAM,OAAO,WAAW,UAAU;AAClC,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACD,IAAG;AACJ,UAAI,CAAC,UAAU;AACb,eAAO,QAAQ,kBAAkB,KAAK,OAAO,QAAQ,QAAQ,aAAa,EAAE,IAAI;AAAA,MACjF;AACD,aAAO,MAAM,UAAU,OAAO,KAAK,SAAS,YAAU,OAAO,QAAQ,EAAE,IAAI,YAAU,OAAO,IAAI,CAAC;AAAA,IACvG;AACI,QAAI,iBAAiB,SAAS,KAAK;AACnC,UAAM,WAAW,WAAS;AACxB,YAAM,UAAU,MAAM,OAAO;AAC7B,aAAO,MAAM,UAAU,IAAI,KAAK,SAAS,aAAW;AAAA,QAClD,cAAc,OAAO;AAAA,QACrB,aAAa,OAAO;AAAA,MACrB,EAAC;AAAA,IACR;AACI,QAAI,KAAK,mBAAmB,KAAK,cAAc;AAC7C,oBAAc,iBAAiB,qBAAqB,aAAW;AAC7D,cAAM,UAAU;AAAA,UACd,MAAM,OAAO;AACX;AACA,kBAAM,QAAQ,MAAM,OAAO;AAC3B,kBAAM,SAAS,IAAI,IAAI,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;AAC7D,uBAAW,UAAU,cAAc,SAAS;AAC1C,qBAAO,WAAW,OAAO,IAAI,OAAO,KAAK;AAAA,YAC1C;AACD,oBAAQ,SAAS,IAAI;AAAA,cACnB,OAAO,SAAS,IAAI;AAAA,YAClC,CAAa;AACD,6BAAiB,SAAS,KAAK;AAAA,UAChC;AAAA,UACD,kBAAkB,OAAO;AACvB,0BAAc,WAAW;AAAA,UAC1B;AAAA,UACD,OAAO,OAAO;AACZ,kBAAM,UAAU,cAAc;AAC9B,kBAAM,QAAQ,MAAM,OAAO;AAC3B,oBAAQ,KAAK,EAAE,WAAW;AAC1B,0BAAc,OAAO,KAAK;AAC1B,gBAAI,QAAQ,SAAS,GAAG;AACtB,oBAAM,IAAI,MAAM,UAAU,UAAU,KAAK,SAAS,YAAU,OAAO,QAAQ;AAC3E,kBAAI,MAAM,IAAI;AACZ,wBAAQ,CAAC,EAAE,WAAW;AAAA,cACvB;AAAA,YACF;AACD,oBAAQ,SAAS,IAAI;AAAA,cACnB,OAAO,SAAS,IAAI;AAAA,cACpB,OAAO,SAAS,KAAK;AAAA,YACnC,CAAa;AACD,6BAAiB,SAAS,KAAK;AAAA,UAChC;AAAA,UACD,MAAM,OAAO;AACX,mBAAO,cAAc,WAAW,GAAG;AACjC,4BAAc,OAAO,CAAC;AAAA,YACvB;AACD,oBAAQ,SAAS,IAAI;AAAA,cACnB,OAAO;AAAA,cACP,OAAO,CAAE;AAAA,YACvB,CAAa;AACD,6BAAiB,SAAS,KAAK;AAAA,UAChC;AAAA,UACD,OAAO,OAAO;AACZ,kBAAM;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,YACd,IAAgB,MAAM,OAAO;AACjB,kBAAM,cAAc,cAAc,SAAS,KAAK;AAChD,kBAAM,gBAAgB,SAAS,cAAc,QAAQ;AACrD,0BAAc,cAAc;AAC5B,0BAAc,QAAQ;AACtB,gBAAI,aAAa;AACf,0BAAY,OAAO,aAAa;AAAA,YAC9C,OAAmB;AACL,4BAAc,OAAO,aAAa;AAAA,YACnC;AACD,oBAAQ,SAAS,IAAI;AAAA,cACnB,OAAO,SAAS,IAAI;AAAA,cACpB,OAAO,SAAS,KAAK;AAAA,YACnC,CAAa;AACD,6BAAiB,SAAS,KAAK;AAAA,UAChC;AAAA,UACD,MAAM,OAAO;AACX,kBAAM;AAAA,cACJ;AAAA,YACd,IAAgB,MAAM;AACV,mBAAO,cAAc,WAAW,GAAG;AACjC,4BAAc,OAAO,CAAC;AAAA,YACvB;AACD,uBAAW,QAAQ,OAAO;AACxB,oBAAM;AAAA,gBACJ;AAAA,gBACA;AAAA,cACD,IAAG;AACJ,oBAAM,gBAAgB,SAAS,cAAc,QAAQ;AACrD,4BAAc,cAAc;AAC5B,4BAAc,QAAQ;AACtB,4BAAc,OAAO,aAAa;AAAA,YACnC;AACD,gBAAI,cAAc,QAAQ,SAAS,GAAG;AACpC,4BAAc,QAAQ,CAAC,EAAE,WAAW;AAAA,YACrC;AACD,oBAAQ,SAAS,IAAI;AAAA,cACnB,OAAO,SAAS,IAAI;AAAA,cACpB,OAAO,SAAS,KAAK;AAAA,YACnC,CAAa;AACD,6BAAiB,SAAS,KAAK;AAAA,UAChC;AAAA,UACD,QAAQ,OAAO;AACb,kBAAM,UAAU,IAAI,IAAI,MAAM,OAAO,OAAO;AAC5C,uBAAW,UAAU,MAAM,OAAO,SAAS;AACzC,qBAAO,WAAW,QAAQ,IAAI,OAAO,KAAK;AAAA,YAC3C;AACD,oBAAQ,SAAS,IAAI;AAAA,cACnB,OAAO,SAAS,IAAI;AAAA,YAClC,CAAa;AACD,6BAAiB,SAAS,KAAK;AAAA,UAChC;AAAA,UACD,SAAS,OAAO;AACd,kBAAM,OAAO,WAAW,CAAC,MAAM,OAAO;AAAA,UACvC;AAAA,QACX;AACQ,aAAK,0BAA0B,SAAS,OAAO;AAAA,MACvD,CAAO;AACD,oBAAc,iBAAiB,SAAS,WAAS;;AAC/C,cAAM,cAAc,SAAS,IAAI;AACjC,cAAM,SAAS,SAAS,KAAK;AAC7B,gBAAQ,SAAS,IAAI;AAAA,UACnB,OAAO;AAAA,QACjB,CAAS;AACD,cAAM,eAAc;AACpB,SAAAA,MAAA,KAAK,YAAY,aAAjB,gBAAAA,IAA2B,SAAS,0BAA0B;AAAA,UAC5D,QAAQ;AAAA,UACR,QAAQ;AAAA,YACN;AAAA,YACA,MAAM;AAAA,YACN,OAAO;AAAA,YACP;AAAA,YACA,UAAU;AAAA,YACV,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,SAAS;AAAA,UACV;AAAA,QACX;AAAA,MACA,CAAO;AACD,WAAK,mBAAmB,eAAe,MAAM,CAAC,CAAC,SAAS,OAAO,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,aAAa,YAAY,GAAG,CAAC,cAAc,aAAa,GAAG,CAAC,cAAc,YAAY,GAAG,CAAC,WAAW,UAAU,GAAG,CAAC,SAAS,QAAQ,GAAG,CAAC,SAAS,UAAU,CAAC,GAAG,WAAS,MAAM,OAAO,KAAK;AAAA,IACrR,OAAW;AACL,oBAAc,iBAAiB,SAAS,SAAU,OAAO;AACvD,gBAAQ,SAAS,IAAI;AAAA,UACnB,OAAO,SAAS,IAAI;AAAA,QAC9B,CAAS;AAAA,MACT,CAAO;AAAA,IACF;AACD,QAAI,KAAK,KAAK,OAAO;AACnB,WAAK,cAAc,aAAa;AAAA,IACzB;AACT,SAAK,oBAAoB,aAAa;AACtC,SAAK,4BAA4B,aAAa;AAC9C,SAAK,UAAU,OAAO,aAAa;AACnC,WAAO,KAAK;AAAA,EACb;AACH;AACA,MAAM,+BAA+B,kBAAkB;AAAA,EACrD,YAAY,YAAY;AACtB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACD,IAAG;AACJ,UAAM,YAAY;AAAA,MAChB,cAAc,kBAAkB,cAAc,IAAI;AAAA,IACxD,CAAK;AACD,SAAK,WAAW;AAChB,SAAK,QAAQ;AAAA,EACd;AAAA,EACD,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,iBAAiB;AAC9C,UAAM,QAAQ,KAAK,QAAQ,IAAI,aAAa;AAAA,MAC1C,WAAW,KAAK;AAAA,MAChB,OAAO,KAAK,KAAK;AAAA,MACjB,UAAU,KAAK,KAAK;AAAA,MACpB,kBAAkB,KAAK,KAAK;AAAA,MAC5B,aAAa,KAAK,KAAK;AAAA,MACvB,UAAU,KAAK,KAAK;AAAA,MACpB,MAAM,KAAK,KAAK;AAAA,MAChB,YAAY,KAAK,KAAK,cAAc;AAAA,MACpC,QAAQ,KAAK;AAAA,MACb,UAAU,KAAK;AAAA,MACf,MAAM,KAAK,KAAK;AAAA,IACtB,CAAK;AACD,UAAM,aAAa;AACnB,eAAW,WAAW,KAAK,UAAU;AACnC,cAAQ,QAAQ;AAChB,iBAAW,KAAK,QAAQ,KAAK,EAAE;AAC/B,cAAQ,iBAAgB;AAAA,IACzB;AACD,SAAK,UAAU,aAAa,iBAAiB,WAAW,IAAI,QAAM,GAAG,gBAAgB,GAAG,EAAE,EAAE,EAAE,KAAK,GAAG,CAAC;AACvG,WAAO,KAAK;AAAA,EACb;AACH;AACA,MAAM,aAAa;AAAA,EAoBjB,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAAK;AAyEH,uBAAI;AAQJ,uBAAI;AAGJ,uBAAI;AAGJ;AA+CA;AAuCA;AAsCA;AAYA;AAYA;AA1QA,sCAAgB,sBAAK,sBAAS,KAAK,IAAI;AACvC,mCAAa,sBAAK,gBAAM,KAAK,IAAI;AACjC,mCAAa,sBAAK,gBAAM,KAAK,IAAI;AACjC,qCAAe,sBAAK,oBAAQ,KAAK,IAAI;AACrC,+BAAS;AACT,uBAAAqB,aAAa;AACb,qCAAe;AACf,iCAAW;AACX,kCAAY;AACZ,gCAAU;AACV,oCAAc;AACd,gCAAU;AACV,+BAAS;AACT,uBAAAQ,YAAY;AACZ,8BAAQ;AACR,kCAAY;AACZ,kCAAY;AACZ,uBAAAC,WAAW;AACX,oCAAc;;AAcZ,uBAAKT,aAAa;AAClB,uBAAK,WAAY;AACjB,uBAAK,cAAe;AACpB,uBAAK,WAAY;AACjB,uBAAK,SAAU;AACf,uBAAK,QAAS;AACd,uBAAK,OAAQ;AACb,uBAAK,aAAc;AACnB,uBAAK,WAAY;AACjB,uBAAK,UAAW,cAAc,aAAa,gBAAgB;AAC3D,SAAK,UAAU,SAAS,QAAQ,OAAK,EAAE,0BAAyB,CAAE;AAClE,eAAW,WAAW,KAAK,SAAS;AAClC,cAAQ,iBAAiB,SAAS,mBAAK,aAAY;AACnD,cAAQ,iBAAiB,cAAc,mBAAK,WAAU;AACtD,cAAQ,iBAAiB,cAAc,mBAAK,WAAU;AACtD,cAAQ,UAAU,IAAI,kBAAkB;AAAA,IACzC;AACD,eAAW,WAAW,UAAU;AAC9B,OAAArB,MAAA,QAAQ,cAAR,gBAAAA,IAAmB,iBAAiB,WAAW,mBAAK;AAAA,IACrD;AACD,uBAAKqB,aAAW,SAAS;AACzB,QAAI,MAAM;AACR,4BAAK,oBAAL;AAAA,IACD;AAAA,EACF;AAAA,EACD,SAAS;AACP,QAAI,mBAAK,SAAQ;AACf;AAAA,IACD;AACD,UAAM,QAAQ,mBAAK,QAAS,SAAS,cAAc,KAAK;AACxD,UAAM,YAAY;AAClB,QAAI,mBAAK,SAAQ;AACf,YAAM,YAAY,MAAM,MAAM,eAAe,KAAK,aAAa,GAAG,mBAAK,OAAM;AAC7E,UAAI,IAAI,SAAS,oBAAoB,oCAAoC,GAAG;AAC1E,cAAM,MAAM,kBAAkB,sBAAsB,SAAS;AAAA,MACrE,OAAa;AACL,cAAM,qBAAqB;AAC3B,cAAM,MAAM,kBAAkB,KAAK,aAAa,GAAG,mBAAK,QAAO,IAAI,OAAK,KAAK,MAAM,sBAAsB,MAAM,KAAK,CAAC,CAAC,CAAC;AAAA,MACxH;AAAA,IACF;AACD,UAAM,SAAS,SAAS,cAAc,MAAM;AAC5C,WAAO,YAAY;AACnB,UAAM,QAAQ,SAAS,cAAc,IAAI;AACzC,WAAO,OAAO,KAAK;AACnB,KAAC;AAAA,MACC,KAAK,MAAM;AAAA,MACX,KAAK,MAAM;AAAA,IACjB,IAAQ,mBAAK;AACT,UAAM,OAAO,MAAM;AACnB,QAAI,mBAAK,WAAU;AACjB,YAAM,mBAAmB,SAAS,cAAc,MAAM;AACtD,uBAAiB,UAAU,IAAI,WAAW;AAC1C,uBAAiB,aAAa,gBAAgB,mCAAmC;AACjF,uBAAiB,aAAa,kBAAkB,KAAK,UAAU;AAAA,QAC7D,SAAS,mBAAK,UAAS,QAAS;AAAA,MACjC,EAAC;AACF,aAAO,OAAO,gBAAgB;AAAA,IAC/B;AACD,UAAM,OAAO,mBAAK;AAClB,QAAI,MAAM;AACR,eAAS,OAAO;AAAA,QACd,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,KAAK;AAAA,MACb,CAAO;AACD,YAAM,UAAU,UAAU,IAAI,YAAY,cAAc;AAAA,IAC9D,OAAW;AACL,YAAM,WAAW,KAAK,gBAAgB,mBAAK,aAAY;AACvD,YAAM,OAAO,QAAQ;AAAA,IACtB;AACD,uBAAKA,aAAW,OAAO,KAAK;AAAA,EAC7B;AAAA,EA6CD,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,EACJ,GAAK;AACD,UAAM,IAAI,SAAS,cAAc,GAAG;AACpC,MAAE,UAAU,IAAI,cAAc;AAC9B,MAAE,MAAM;AACR,UAAM,QAAQ,IAAI,MAAM,cAAc;AACtC,aAAS,IAAI,GAAG,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE,GAAG;AAC9C,YAAM,OAAO,MAAM,CAAC;AACpB,QAAE,OAAO,SAAS,eAAe,IAAI,CAAC;AACtC,UAAI,IAAI,KAAK,GAAG;AACd,UAAE,OAAO,SAAS,cAAc,IAAI,CAAC;AAAA,MACtC;AAAA,IACF;AACD,WAAO;AAAA,EACR;AAAA,EASD,aAAa;AAAA,IACX;AAAA,IACA;AAAA,EACJ,GAAK;;AACD,uBAAKS,cAAL,mBAAKA,WAAa;AAAA,MAChB,aAAa,mBAAK;AAAA,MAClB,UAAU,mBAAK;AAAA,IACrB;AACI,QAAI,MAAM;AACR,yBAAKD,YAAY;AAAA,IAClB;AACD,QAAI,cAAc;AAChB,yBAAK,WAAY,sBAAK,wCAAL,WAAuB;AACxC,yBAAK,cAAe;AAAA,IACrB;AACD,KAAA7B,MAAA,mBAAK,YAAL,gBAAAA,IAAa;AACb,uBAAK,QAAS;AAAA,EACf;AAAA,EACD,cAAc;;AACZ,QAAI,CAAC,mBAAK8B,YAAU;AAClB;AAAA,IACD;AACD,KAAC;AAAA,MACC,aAAa;AAAA,MACb,UAAU;AAAA,IAChB,IAAQ,mBAAKA;AACT,uBAAKA,WAAW;AAChB,KAAA9B,MAAA,mBAAK,YAAL,gBAAAA,IAAa;AACb,uBAAK,QAAS;AACd,uBAAK6B,YAAY;AAAA,EAClB;AAAA,EAuED,YAAY;AACV,uBAAK,aAAc,KAAK;AACxB,QAAI,CAAC,mBAAK,cAAa;AACrB;AAAA,IACD;AACD,uBAAKR,aAAW,SAAS;AAAA,EAC1B;AAAA,EACD,YAAY;AACV,QAAI,CAAC,mBAAK,cAAa;AACrB;AAAA,IACD;AACD,QAAI,CAAC,mBAAK,SAAQ;AAChB,4BAAK,gBAAL;AAAA,IACD;AACD,uBAAK,aAAc;AACnB,uBAAKA,aAAW,SAAS;AAAA,EAC1B;AAAA,EACD,IAAI,YAAY;AACd,WAAO,mBAAKA,aAAW,WAAW;AAAA,EACnC;AACH;AAtSE;AACA;AACA;AACA;AACA;AACAA,cAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAQ,aAAA;AACA;AACA;AACA;AACAC,YAAA;AACA;AAsFI;AAAA,WAAK,WAAG;AACV,QAAM,WAAW,mBAAK;AACtB,QAAM,cAAc,mBAAK;AACzB,OAAI,qCAAU,SAAQ,EAAC,2CAAa,QAAO,YAAY,QAAQ,SAAS,MAAM;AAC5E,WAAO,mBAAK,WAAU,QAAQ;AAAA,EAC/B;AACD,SAAO;AACR;AACG;AAAA,eAAS,WAAG;;AACd,WAAO,YAAA9B,MAAA,mBAAK,qBAAL,gBAAAA,IAAY,eAAZ,mBAAwB,UAAxB,mBAA+B,aAAY;AACnD;AACG;AAAA,gBAAU,WAAG;;AACf,WAAO,YAAAA,MAAA,mBAAK,qBAAL,gBAAAA,IAAY,eAAZ,mBAAwB,UAAxB,mBAA+B,UAAS;AAChD;AACD;AAAA,sBAAiB,SAAC,MAAM;AACtB,QAAM,aAAa;AACnB,QAAM,eAAe;AAAA,IACnB,KAAK;AAAA,IACL,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,YAAY;AAAA,QACV,KAAK;AAAA,MACN;AAAA,MACD,UAAU,CAAC;AAAA,QACT,MAAM;AAAA,QACN,UAAU;AAAA,MACpB,CAAS;AAAA,IACF;AAAA,EACP;AACI,QAAM,iBAAiB;AAAA,IACrB,OAAO;AAAA,MACL,OAAO,mBAAK;AAAA,MACZ,UAAU,mBAAK,2BAAY,QAAQ,mBAAK,wBAAS,8BAA8B;AAAA,IAChF;AAAA,EACP;AACI,aAAW,QAAQ,KAAK,MAAM,IAAI,GAAG;AACnC,eAAW,KAAK;AAAA,MACd,MAAM;AAAA,MACN,OAAO;AAAA,MACP,YAAY;AAAA,IACpB,CAAO;AAAA,EACF;AACD,SAAO;AACR;AAkBD;AAAA,aAAQ,SAAC,OAAO;AACd,MAAI,MAAM,UAAU,MAAM,YAAY,MAAM,WAAW,MAAM,SAAS;AACpE;AAAA,EACD;AACD,MAAI,MAAM,QAAQ,WAAW,MAAM,QAAQ,YAAY,mBAAK,UAAS;AACnE,0BAAK,oBAAL;AAAA,EACD;AACF;AAgCD;AAAA,iBAAY,WAAG;AACb,MAAI,mBAAK6B,gBAAc,MAAM;AAC3B;AAAA,EACD;AACD,QAAM;AAAA,IACJ,MAAM;AAAA,MACJ;AAAA,IACD;AAAA,IACD,UAAU;AAAA,MACR,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACF;AAAA,EACP,IAAQ,mBAAK;AACT,MAAI,gBAAgB,CAAC,CAAC,mBAAK;AAC3B,MAAI,OAAO,gBAAgB,mBAAK,eAAc,mBAAK;AACnD,aAAW,WAAW,mBAAK,YAAW;AACpC,QAAI,CAAC,QAAQ,KAAK,UAAU,QAAQ,KAAK,MAAM,IAAI,MAAM,MAAM;AAC7D,aAAO,QAAQ,KAAK;AACpB,sBAAgB;AAChB;AAAA,IACD;AAAA,EACF;AACD,QAAM,iBAAiB,KAAK,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AACtH,QAAM,oCAAoC;AAC1C,QAAM,cAAc,gBAAgB,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,oCAAoC;AAC5F,QAAM,YAAY,eAAe,CAAC,IAAI;AACtC,QAAM,WAAW,eAAe,CAAC;AACjC,qBAAKA,YAAY,CAAC,OAAO,YAAY,SAAS,WAAW,OAAO,WAAW,SAAS,UAAU;AAC9F,QAAM;AAAA,IACJ;AAAA,EACN,IAAQ,mBAAKR;AACT,QAAM,OAAO,GAAG,mBAAKQ,YAAU,CAAC,CAAC;AACjC,QAAM,MAAM,GAAG,mBAAKA,YAAU,CAAC,CAAC;AACjC;AACD;AAAA,YAAO,WAAG;AACR,qBAAK,SAAU,CAAC,mBAAK;AACrB,MAAI,mBAAK,UAAS;AAChB,0BAAK,gBAAL;AACA,uBAAKR,aAAW,iBAAiB,SAAS,mBAAK,aAAY;AAC3D,uBAAKA,aAAW,iBAAiB,WAAW,mBAAK,cAAa;AAAA,EACpE,OAAW;AACL,0BAAK,gBAAL;AACA,uBAAKA,aAAW,oBAAoB,SAAS,mBAAK,aAAY;AAC9D,uBAAKA,aAAW,oBAAoB,WAAW,mBAAK,cAAa;AAAA,EAClE;AACF;AACD;AAAA,UAAK,WAAG;AACN,MAAI,CAAC,mBAAK,SAAQ;AAChB,SAAK,OAAM;AAAA,EACZ;AACD,MAAI,CAAC,KAAK,WAAW;AACnB,0BAAK,8BAAL;AACA,uBAAKA,aAAW,SAAS;AACzB,uBAAKA,aAAW,MAAM,SAAS,SAAS,mBAAKA,aAAW,MAAM,MAAM,IAAI;AAAA,EAC9E,WAAe,mBAAK,UAAS;AACvB,uBAAKA,aAAW,UAAU,IAAI,SAAS;AAAA,EACxC;AACF;AACD;AAAA,UAAK,WAAG;AACN,qBAAKA,aAAW,UAAU,OAAO,SAAS;AAC1C,MAAI,mBAAK,YAAW,CAAC,KAAK,WAAW;AACnC;AAAA,EACD;AACD,qBAAKA,aAAW,SAAS;AACzB,qBAAKA,aAAW,MAAM,SAAS,SAAS,mBAAKA,aAAW,MAAM,MAAM,IAAI;AACzE;AAsBH,MAAM,kCAAkC,kBAAkB;AAAA,EACxD,YAAY,YAAY;AACtB,UAAM,YAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,IACpB,CAAK;AACD,SAAK,cAAc,WAAW,KAAK;AACnC,SAAK,eAAe,WAAW,KAAK;AACpC,SAAK,uBAAuB,qBAAqB;AAAA,EAClD;AAAA,EACD,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,oBAAoB;AACjD,QAAI,KAAK,aAAa;AACpB,YAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,cAAQ,UAAU,IAAI,uBAAuB;AAC7C,cAAQ,aAAa,QAAQ,SAAS;AACtC,iBAAW,QAAQ,KAAK,aAAa;AACnC,cAAM,WAAW,SAAS,cAAc,MAAM;AAC9C,iBAAS,cAAc;AACvB,gBAAQ,OAAO,QAAQ;AAAA,MACxB;AACD,WAAK,UAAU,OAAO,OAAO;AAAA,IAC9B;AACD,QAAI,CAAC,KAAK,KAAK,YAAY,KAAK,cAAc;AAC5C,WAAK,aAAY;AAAA,IAClB;AACD,SAAK,mBAAkB;AACvB,WAAO,KAAK;AAAA,EACb;AACH;AACA,MAAM,8BAA8B,kBAAkB;AAAA,EAEpD,YAAY,YAAY;AACtB,UAAM,YAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,IACpB,CAAK;AALH,8BAAQ;AAAA,EAMP;AAAA,EACD,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,gBAAgB;AAC7C,UAAM,OAAO,KAAK;AAClB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACN,IAAQ,YAAY,KAAK,IAAI;AACzB,UAAM,MAAM,KAAK,WAAW,OAAO,OAAO,QAAQ,IAAI;AACtD,UAAM,OAAO,mBAAK,OAAQ,KAAK,WAAW,cAAc,UAAU;AAClE,SAAK,aAAa,MAAM,KAAK,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;AAC9D,SAAK,aAAa,MAAM,KAAK,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;AAC9D,SAAK,aAAa,MAAM,KAAK,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;AAC9D,SAAK,aAAa,MAAM,KAAK,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;AAC9D,SAAK,aAAa,gBAAgB,KAAK,YAAY,SAAS,CAAC;AAC7D,SAAK,aAAa,UAAU,aAAa;AACzC,SAAK,aAAa,QAAQ,aAAa;AACvC,QAAI,OAAO,IAAI;AACf,SAAK,UAAU,OAAO,GAAG;AACzB,QAAI,CAAC,KAAK,YAAY,KAAK,cAAc;AACvC,WAAK,aAAY;AAAA,IAClB;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,4BAA4B;AAC1B,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,mBAAmB;AACjB,SAAK,UAAU,UAAU,IAAI,eAAe;AAAA,EAC7C;AACH;AApCE;AAqCF,MAAM,gCAAgC,kBAAkB;AAAA,EAEtD,YAAY,YAAY;AACtB,UAAM,YAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,IACpB,CAAK;AALH,gCAAU;AAAA,EAMT;AAAA,EACD,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,kBAAkB;AAC/C,UAAM,OAAO,KAAK;AAClB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACN,IAAQ,YAAY,KAAK,IAAI;AACzB,UAAM,MAAM,KAAK,WAAW,OAAO,OAAO,QAAQ,IAAI;AACtD,UAAM,cAAc,KAAK,YAAY;AACrC,UAAM,SAAS,mBAAK,SAAU,KAAK,WAAW,cAAc,UAAU;AACtE,WAAO,aAAa,KAAK,cAAc,CAAC;AACxC,WAAO,aAAa,KAAK,cAAc,CAAC;AACxC,WAAO,aAAa,SAAS,QAAQ,WAAW;AAChD,WAAO,aAAa,UAAU,SAAS,WAAW;AAClD,WAAO,aAAa,gBAAgB,eAAe,CAAC;AACpD,WAAO,aAAa,UAAU,aAAa;AAC3C,WAAO,aAAa,QAAQ,aAAa;AACzC,QAAI,OAAO,MAAM;AACjB,SAAK,UAAU,OAAO,GAAG;AACzB,QAAI,CAAC,KAAK,YAAY,KAAK,cAAc;AACvC,WAAK,aAAY;AAAA,IAClB;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,4BAA4B;AAC1B,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,mBAAmB;AACjB,SAAK,UAAU,UAAU,IAAI,eAAe;AAAA,EAC7C;AACH;AArCE;AAsCF,MAAM,gCAAgC,kBAAkB;AAAA,EAEtD,YAAY,YAAY;AACtB,UAAM,YAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,IACpB,CAAK;AALH,gCAAU;AAAA,EAMT;AAAA,EACD,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,kBAAkB;AAC/C,UAAM,OAAO,KAAK;AAClB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACN,IAAQ,YAAY,KAAK,IAAI;AACzB,UAAM,MAAM,KAAK,WAAW,OAAO,OAAO,QAAQ,IAAI;AACtD,UAAM,cAAc,KAAK,YAAY;AACrC,UAAM,SAAS,mBAAK,SAAU,KAAK,WAAW,cAAc,aAAa;AACzE,WAAO,aAAa,MAAM,QAAQ,CAAC;AACnC,WAAO,aAAa,MAAM,SAAS,CAAC;AACpC,WAAO,aAAa,MAAM,QAAQ,IAAI,cAAc,CAAC;AACrD,WAAO,aAAa,MAAM,SAAS,IAAI,cAAc,CAAC;AACtD,WAAO,aAAa,gBAAgB,eAAe,CAAC;AACpD,WAAO,aAAa,UAAU,aAAa;AAC3C,WAAO,aAAa,QAAQ,aAAa;AACzC,QAAI,OAAO,MAAM;AACjB,SAAK,UAAU,OAAO,GAAG;AACzB,QAAI,CAAC,KAAK,YAAY,KAAK,cAAc;AACvC,WAAK,aAAY;AAAA,IAClB;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,4BAA4B;AAC1B,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,mBAAmB;AACjB,SAAK,UAAU,UAAU,IAAI,eAAe;AAAA,EAC7C;AACH;AArCE;AAsCF,MAAM,kCAAkC,kBAAkB;AAAA,EAExD,YAAY,YAAY;AACtB,UAAM,YAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,IACpB,CAAK;AALH,kCAAY;AAMV,SAAK,qBAAqB;AAC1B,SAAK,iBAAiB;AAAA,EACvB;AAAA,EACD,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,KAAK,kBAAkB;AACpD,UAAM;AAAA,MACJ,MAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACF,IAAG;AACJ,QAAI,CAAC,UAAU;AACb,aAAO,KAAK;AAAA,IACb;AACD,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACN,IAAQ,YAAY,IAAI;AACpB,UAAM,MAAM,KAAK,WAAW,OAAO,OAAO,QAAQ,IAAI;AACtD,QAAI,SAAS;AACb,aAAS,IAAI,GAAG,KAAK,SAAS,QAAQ,IAAI,IAAI,KAAK,GAAG;AACpD,YAAM,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC;AAC9B,YAAM,IAAI,KAAK,CAAC,IAAI,SAAS,IAAI,CAAC;AAClC,aAAO,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE;AAAA,IACxB;AACD,aAAS,OAAO,KAAK,GAAG;AACxB,UAAM,WAAW,mBAAK,WAAY,KAAK,WAAW,cAAc,KAAK,cAAc;AACnF,aAAS,aAAa,UAAU,MAAM;AACtC,aAAS,aAAa,gBAAgB,YAAY,SAAS,CAAC;AAC5D,aAAS,aAAa,UAAU,aAAa;AAC7C,aAAS,aAAa,QAAQ,aAAa;AAC3C,QAAI,OAAO,QAAQ;AACnB,SAAK,UAAU,OAAO,GAAG;AACzB,QAAI,CAAC,YAAY,KAAK,cAAc;AAClC,WAAK,aAAY;AAAA,IAClB;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,4BAA4B;AAC1B,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,mBAAmB;AACjB,SAAK,UAAU,UAAU,IAAI,eAAe;AAAA,EAC7C;AACH;AApDE;AAqDF,MAAM,iCAAiC,0BAA0B;AAAA,EAC/D,YAAY,YAAY;AACtB,UAAM,UAAU;AAChB,SAAK,qBAAqB;AAC1B,SAAK,iBAAiB;AAAA,EACvB;AACH;AACA,MAAM,+BAA+B,kBAAkB;AAAA,EACrD,YAAY,YAAY;AACtB,UAAM,YAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,IACpB,CAAK;AAAA,EACF;AAAA,EACD,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,iBAAiB;AAC9C,QAAI,CAAC,KAAK,KAAK,YAAY,KAAK,cAAc;AAC5C,WAAK,aAAY;AAAA,IAClB;AACD,WAAO,KAAK;AAAA,EACb;AACH;AACA,MAAM,6BAA6B,kBAAkB;AAAA,EAEnD,YAAY,YAAY;AACtB,UAAM,YAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,IACpB,CAAK;AALH,mCAAa;AAMX,SAAK,qBAAqB;AAC1B,SAAK,iBAAiB;AACtB,SAAK,uBAAuB,qBAAqB;AAAA,EAClD;AAAA,EACD,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,KAAK,kBAAkB;AACpD,UAAM;AAAA,MACJ,MAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACF,IAAG;AACJ,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACN,IAAQ,YAAY,IAAI;AACpB,UAAM,MAAM,KAAK,WAAW,OAAO,OAAO,QAAQ,IAAI;AACtD,eAAW,WAAW,UAAU;AAC9B,UAAI,SAAS;AACb,eAAS,IAAI,GAAG,KAAK,QAAQ,QAAQ,IAAI,IAAI,KAAK,GAAG;AACnD,cAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;AAC7B,cAAM,IAAI,KAAK,CAAC,IAAI,QAAQ,IAAI,CAAC;AACjC,eAAO,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE;AAAA,MACxB;AACD,eAAS,OAAO,KAAK,GAAG;AACxB,YAAM,WAAW,KAAK,WAAW,cAAc,KAAK,cAAc;AAClE,yBAAK,YAAW,KAAK,QAAQ;AAC7B,eAAS,aAAa,UAAU,MAAM;AACtC,eAAS,aAAa,gBAAgB,YAAY,SAAS,CAAC;AAC5D,eAAS,aAAa,UAAU,aAAa;AAC7C,eAAS,aAAa,QAAQ,aAAa;AAC3C,UAAI,CAAC,YAAY,KAAK,cAAc;AAClC,aAAK,aAAY;AAAA,MAClB;AACD,UAAI,OAAO,QAAQ;AAAA,IACpB;AACD,SAAK,UAAU,OAAO,GAAG;AACzB,WAAO,KAAK;AAAA,EACb;AAAA,EACD,4BAA4B;AAC1B,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,mBAAmB;AACjB,SAAK,UAAU,UAAU,IAAI,eAAe;AAAA,EAC7C;AACH;AArDE;AAsDF,MAAM,mCAAmC,kBAAkB;AAAA,EACzD,YAAY,YAAY;AACtB,UAAM,YAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,MACd,sBAAsB;AAAA,IAC5B,CAAK;AAAA,EACF;AAAA,EACD,SAAS;AACP,QAAI,CAAC,KAAK,KAAK,YAAY,KAAK,cAAc;AAC5C,WAAK,aAAY;AAAA,IAClB;AACD,SAAK,UAAU,UAAU,IAAI,qBAAqB;AAClD,WAAO,KAAK;AAAA,EACb;AACH;AACA,MAAM,mCAAmC,kBAAkB;AAAA,EACzD,YAAY,YAAY;AACtB,UAAM,YAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,MACd,sBAAsB;AAAA,IAC5B,CAAK;AAAA,EACF;AAAA,EACD,SAAS;AACP,QAAI,CAAC,KAAK,KAAK,YAAY,KAAK,cAAc;AAC5C,WAAK,aAAY;AAAA,IAClB;AACD,SAAK,UAAU,UAAU,IAAI,qBAAqB;AAClD,WAAO,KAAK;AAAA,EACb;AACH;AACA,MAAM,kCAAkC,kBAAkB;AAAA,EACxD,YAAY,YAAY;AACtB,UAAM,YAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,MACd,sBAAsB;AAAA,IAC5B,CAAK;AAAA,EACF;AAAA,EACD,SAAS;AACP,QAAI,CAAC,KAAK,KAAK,YAAY,KAAK,cAAc;AAC5C,WAAK,aAAY;AAAA,IAClB;AACD,SAAK,UAAU,UAAU,IAAI,oBAAoB;AACjD,WAAO,KAAK;AAAA,EACb;AACH;AACA,MAAM,mCAAmC,kBAAkB;AAAA,EACzD,YAAY,YAAY;AACtB,UAAM,YAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,MACd,sBAAsB;AAAA,IAC5B,CAAK;AAAA,EACF;AAAA,EACD,SAAS;AACP,QAAI,CAAC,KAAK,KAAK,YAAY,KAAK,cAAc;AAC5C,WAAK,aAAY;AAAA,IAClB;AACD,SAAK,UAAU,UAAU,IAAI,qBAAqB;AAClD,WAAO,KAAK;AAAA,EACb;AACH;AACA,MAAM,+BAA+B,kBAAkB;AAAA,EACrD,YAAY,YAAY;AACtB,UAAM,YAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,IACpB,CAAK;AAAA,EACF;AAAA,EACD,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,iBAAiB;AAC9C,QAAI,CAAC,KAAK,KAAK,YAAY,KAAK,cAAc;AAC5C,WAAK,aAAY;AAAA,IAClB;AACD,WAAO,KAAK;AAAA,EACb;AACH;AACA,MAAM,wCAAwC,kBAAkB;AAAA,EAE9D,YAAY,YAAY;;AACtB,UAAM,YAAY;AAAA,MAChB,cAAc;AAAA,IACpB,CAAK;AAmDH;AAvDA,iCAAW;AAKT,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,KAAK;AACT,SAAK,WAAW,KAAK;AACrB,SAAK,UAAU,KAAK;AACpB,KAAArB,MAAA,KAAK,YAAY,aAAjB,gBAAAA,IAA2B,SAAS,4BAA4B;AAAA,MAC9D,QAAQ;AAAA,MACR,GAAG;AAAA,IACT;AAAA,EACG;AAAA,EACD,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,0BAA0B;AACvD,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACD,IAAG;AACJ,QAAI;AACJ,QAAI,KAAK,iBAAiB,KAAK,cAAc,GAAG;AAC9C,gBAAU,SAAS,cAAc,KAAK;AAAA,IAC5C,OAAW;AACL,gBAAU,SAAS,cAAc,KAAK;AACtC,cAAQ,MAAM,GAAG,KAAK,kBAAkB,cAAc,aAAa,KAAK,KAAK,IAAI,IAAI,cAAc,SAAS;AAC5G,UAAI,KAAK,aAAa,KAAK,YAAY,GAAG;AACxC,gBAAQ,QAAQ,mBAAmB,KAAK,MAAM,KAAK,YAAY,GAAG,CAAC;AAAA,MACpE;AAAA,IACF;AACD,YAAQ,iBAAiB,YAAY,sBAAK,wBAAU,KAAK,IAAI,CAAC;AAC9D,uBAAK,UAAW;AAChB,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,iBAAiB;AACrB,cAAU,iBAAiB,WAAW,SAAO;AAC3C,UAAI,IAAI,QAAQ,YAAY,QAAQ,IAAI,UAAU,IAAI,UAAU;AAC9D,8BAAK,wBAAL;AAAA,MACD;AAAA,IACP,CAAK;AACD,QAAI,CAAC,KAAK,YAAY,KAAK,cAAc;AACvC,WAAK,aAAY;AAAA,IACvB,OAAW;AACL,cAAQ,UAAU,IAAI,kBAAkB;AAAA,IACzC;AACD,cAAU,OAAO,OAAO;AACxB,WAAO;AAAA,EACR;AAAA,EACD,4BAA4B;AAC1B,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,mBAAmB;AACjB,SAAK,UAAU,UAAU,IAAI,eAAe;AAAA,EAC7C;AAIH;AA1DE;AAuDA;AAAA,cAAS,WAAG;;AACV,GAAAA,MAAA,KAAK,oBAAL,gBAAAA,IAAsB,mBAAmB,KAAK,SAAS,KAAK;AAC7D;AAEH,MAAM,gBAAgB;AAAA,EAIpB,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAAK;AAYH;AAoFA;AA1GA,8CAAwB;AACxB,6CAAuB;AACvB,6CAAuB,oBAAI;AASzB,SAAK,MAAM;AACX,uBAAK,uBAAwB;AAC7B,uBAAK,sBAAuB;AAC5B,SAAK,OAAO;AACZ,SAAK,WAAW;AAChB,SAAK,SAAS;AACd,SAAK,6BAA6B;AAAA,EACnC;AAAA,EACD,yBAAyB;AACvB,WAAO,mBAAK,sBAAqB,OAAO;AAAA,EACzC;AAAA,EAOD,MAAM,OAAO,QAAQ;;AACnB,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,UAAM,QAAQ,KAAK;AACnB,uBAAmB,OAAO,KAAK,QAAQ;AACvC,UAAM,kBAAkB,oBAAI;AAC5B,UAAM,gBAAgB;AAAA,MACpB,MAAM;AAAA,MACN;AAAA,MACA,aAAa,OAAO;AAAA,MACpB,iBAAiB,OAAO;AAAA,MACxB,oBAAoB,OAAO,sBAAsB;AAAA,MACjD,aAAa,OAAO,gBAAgB;AAAA,MACpC,YAAY,IAAI,cAAe;AAAA,MAC/B,mBAAmB,OAAO,qBAAqB,IAAI,kBAAmB;AAAA,MACtE,iBAAiB,OAAO,oBAAoB;AAAA,MAC5C,cAAc,OAAO;AAAA,MACrB,cAAc,OAAO;AAAA,MACrB,QAAQ;AAAA,MACR,UAAU;AAAA,IAChB;AACI,eAAW,QAAQ,aAAa;AAC9B,UAAI,KAAK,QAAQ;AACf;AAAA,MACD;AACD,YAAM,oBAAoB,KAAK,mBAAmB,eAAe;AACjE,UAAI,CAAC,mBAAmB;AACtB,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,QACV,IAAY,YAAY,KAAK,IAAI;AACzB,YAAI,SAAS,KAAK,UAAU,GAAG;AAC7B;AAAA,QACD;AAAA,MACT,OAAa;AACL,cAAM,WAAW,gBAAgB,IAAI,KAAK,EAAE;AAC5C,YAAI,CAAC,UAAU;AACb;AAAA,QACD;AACD,sBAAc,WAAW;AAAA,MAC1B;AACD,oBAAc,OAAO;AACrB,YAAM,UAAU,yBAAyB,OAAO,aAAa;AAC7D,UAAI,CAAC,QAAQ,cAAc;AACzB;AAAA,MACD;AACD,UAAI,CAAC,qBAAqB,KAAK,UAAU;AACvC,cAAM,WAAW,gBAAgB,IAAI,KAAK,QAAQ;AAClD,YAAI,CAAC,UAAU;AACb,0BAAgB,IAAI,KAAK,UAAU,CAAC,OAAO,CAAC;AAAA,QACtD,OAAe;AACL,mBAAS,KAAK,OAAO;AAAA,QACtB;AAAA,MACF;AACD,YAAM,WAAW,QAAQ;AACzB,UAAI,KAAK,QAAQ;AACf,iBAAS,MAAM,aAAa;AAAA,MAC7B;AACD,4BAAK,kCAAL,WAAoB,UAAU,KAAK;AACnC,UAAI,QAAQ,aAAa;AACvB,2BAAK,sBAAqB,IAAI,QAAQ,KAAK,IAAI,OAAO;AACtD,SAAAA,MAAA,KAAK,+BAAL,gBAAAA,IAAiC,wBAAwB;AAAA,MAC1D;AAAA,IACF;AACD,0BAAK,oDAAL;AAAA,EACD;AAAA,EACD,OAAO;AAAA,IACL;AAAA,EACJ,GAAK;AACD,UAAM,QAAQ,KAAK;AACnB,SAAK,WAAW;AAChB,uBAAmB,OAAO;AAAA,MACxB,UAAU,SAAS;AAAA,IACzB,CAAK;AACD,0BAAK,oDAAL;AACA,UAAM,SAAS;AAAA,EAChB;AAAA,EA2BD,yBAAyB;AACvB,WAAO,MAAM,KAAK,mBAAK,sBAAqB,OAAQ;AAAA,EACrD;AAAA,EACD,sBAAsB,IAAI;AACxB,WAAO,mBAAK,sBAAqB,IAAI,EAAE;AAAA,EACxC;AACH;AA1IE;AACA;AACA;AAoBA;AAAA,mBAAc,SAAC,SAAS,IAAI;;AAC1B,QAAM,iBAAiB,QAAQ,cAAc;AAC7C,iBAAe,KAAK,GAAG,gBAAgB,GAAG,EAAE;AAC5C,OAAK,IAAI,OAAO,OAAO;AACvB,GAAAA,MAAA,mBAAK,2BAAL,gBAAAA,IAA4B,iBAAiB,KAAK,KAAK,SAAS,gBAAgB;AACjF;AA+ED;AAAA,4BAAuB,WAAG;AACxB,MAAI,CAAC,mBAAK,uBAAsB;AAC9B;AAAA,EACD;AACD,QAAM,QAAQ,KAAK;AACnB,aAAW,CAAC,IAAI,MAAM,KAAK,mBAAK,uBAAsB;AACpD,UAAM,UAAU,MAAM,cAAc,wBAAwB,EAAE,IAAI;AAClE,QAAI,CAAC,SAAS;AACZ;AAAA,IACD;AACD,WAAO,YAAY;AACnB,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,QAAI,CAAC,YAAY;AACf,cAAQ,OAAO,MAAM;AAAA,IAC7B,WAAiB,WAAW,aAAa,UAAU;AAC3C,iBAAW,YAAY,MAAM;AAAA,IAC9B,WAAU,CAAC,WAAW,UAAU,SAAS,mBAAmB,GAAG;AAC9D,iBAAW,OAAO,MAAM;AAAA,IAChC,OAAa;AACL,iBAAW,MAAM,MAAM;AAAA,IACxB;AAAA,EACF;AACD,qBAAK,sBAAqB;AAC3B;AAcH,MAAM,cAAc;AACpB,MAAM,kBAAN,MAAM,wBAAuB,iBAAiB;AAAA,EA8C5C,YAAY,QAAQ;AAClB,UAAM;AAAA,MACJ,GAAG;AAAA,MACH,MAAM;AAAA,IACZ,CAAK;AAqCH;AAkBA;AAgHA;AAQA;AAwPA;AAWA;AAuFA;AA1jBA,uBAAA+B,SAAA;AACA,iCAAW;AACX,qCAAe,GAAG,KAAK,EAAE;AACzB,oCAAc;AACd,uBAAAC,YAAA;AACA,qCAAe;AA6Cb,uBAAKD,SAAS,OAAO,SAAS,gBAAe,iBAAiB,iBAAiB;AAC/E,uBAAKC,YAAY,OAAO,YAAY,gBAAe;AAAA,EACpD;AAAA,EA1CD,WAAW,mBAAmB;AAC5B,UAAM,QAAQ,gBAAe;AAC7B,UAAM,eAAe,UAAQ,KAAK,QAAO;AACzC,UAAM,QAAQ,0BAA0B;AACxC,UAAM,MAAM,0BAA0B;AACtC,WAAO,OAAO,MAAM,oBAAoB,IAAI,gBAAgB,CAAC,CAAC,CAAC,UAAU,cAAc,UAAU,YAAY,GAAG,MAAM,gBAAgB;AAAA,MACpI,SAAS;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,cAAc,kBAAkB,UAAU,YAAY,GAAG,MAAM,cAAc,GAAG,CAAC,CAAC,aAAa,eAAe,GAAG,MAAM,iBAAiB;AAAA,MAC5I,MAAM,CAAC,CAAC,OAAO,CAAC;AAAA,MAChB,SAAS;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,kBAAkB,qBAAqB,GAAG,MAAM,iBAAiB;AAAA,MACrE,MAAM,CAAC,CAAC,KAAK,CAAC;AAAA,MACd,SAAS;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,cAAc,gBAAgB,GAAG,MAAM,iBAAiB;AAAA,MAC5D,MAAM,CAAC,OAAO,CAAC;AAAA,MACf,SAAS;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,mBAAmB,sBAAsB,GAAG,MAAM,iBAAiB;AAAA,MACvE,MAAM,CAAC,KAAK,CAAC;AAAA,MACb,SAAS;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,WAAW,aAAa,GAAG,MAAM,iBAAiB;AAAA,MACtD,MAAM,CAAC,GAAG,CAAC,KAAK;AAAA,MAChB,SAAS;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,gBAAgB,mBAAmB,GAAG,MAAM,iBAAiB;AAAA,MACjE,MAAM,CAAC,GAAG,CAAC,GAAG;AAAA,MACd,SAAS;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,aAAa,eAAe,GAAG,MAAM,iBAAiB;AAAA,MAC1D,MAAM,CAAC,GAAG,KAAK;AAAA,MACf,SAAS;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,kBAAkB,qBAAqB,GAAG,MAAM,iBAAiB;AAAA,MACrE,MAAM,CAAC,GAAG,GAAG;AAAA,MACb,SAAS;AAAA,IACf,CAAK,CAAC,CAAC,CAAC;AAAA,EACL;AAAA,EAWD,OAAO,WAAW,MAAM,WAAW;AACjC,qBAAiB,WAAW,MAAM,WAAW;AAAA,MAC3C,SAAS,CAAC,iCAAiC;AAAA,IACjD,CAAK;AACD,UAAM,QAAQ,iBAAiB,SAAS,eAAe;AACvD,SAAK,mBAAmB,WAAW,MAAM,iBAAiB,oBAAoB,CAAC;AAAA,EAChF;AAAA,EACD,OAAO,oBAAoB,MAAM,OAAO;AACtC,YAAQ,MAAI;AAAA,MACV,KAAK,2BAA2B;AAC9B,wBAAe,mBAAmB;AAClC;AAAA,MACF,KAAK,2BAA2B;AAC9B,wBAAe,gBAAgB;AAC/B;AAAA,IACH;AAAA,EACF;AAAA,EACD,aAAa,MAAM,OAAO;AACxB,YAAQ,MAAI;AAAA,MACV,KAAK,2BAA2B;AAC9B,8BAAK,oCAAL,WAAqB;AACrB;AAAA,MACF,KAAK,2BAA2B;AAC9B,8BAAK,8BAAL,WAAkB;AAClB;AAAA,IACH;AAAA,EACF;AAAA,EACD,WAAW,4BAA4B;AACrC,WAAO,CAAC,CAAC,2BAA2B,eAAe,gBAAe,gBAAgB,GAAG,CAAC,2BAA2B,gBAAgB,gBAAe,iBAAiB,iBAAiB,iBAAiB,CAAC;AAAA,EACrM;AAAA,EACD,IAAI,qBAAqB;AACvB,WAAO,CAAC,CAAC,2BAA2B,eAAe,mBAAKA,WAAS,GAAG,CAAC,2BAA2B,gBAAgB,mBAAKD,QAAM,CAAC;AAAA,EAC7H;AAAA,EAkCD,gBAAgB,GAAG,GAAG;AACpB,SAAK,WAAW,yBAAyB,GAAG,GAAG,IAAI;AAAA,EACpD;AAAA,EACD,wBAAwB;AACtB,UAAM,QAAQ,KAAK;AACnB,WAAO,CAAC,CAAC,gBAAe,mBAAmB,OAAO,EAAE,gBAAe,mBAAmB,mBAAKC,eAAa,KAAK;AAAA,EAC9G;AAAA,EACD,UAAU;AACR,QAAI,CAAC,KAAK,QAAQ;AAChB;AAAA,IACD;AACD,UAAM,QAAO;AACb,QAAI,KAAK,QAAQ,MAAM;AACrB;AAAA,IACD;AACD,QAAI,CAAC,KAAK,iBAAiB;AACzB,WAAK,OAAO,IAAI,IAAI;AAAA,IACrB;AAAA,EACF;AAAA,EACD,iBAAiB;AACf,QAAI,KAAK,gBAAgB;AACvB;AAAA,IACD;AACD,SAAK,OAAO,gBAAgB,KAAK;AACjC,SAAK,OAAO,cAAc,qBAAqB,QAAQ;AACvD,UAAM,eAAc;AACpB,SAAK,WAAW,UAAU,OAAO,SAAS;AAC1C,SAAK,UAAU,kBAAkB;AACjC,SAAK,eAAe;AACpB,SAAK,IAAI,gBAAgB,uBAAuB;AAChD,uBAAK,aAAc,IAAI;AACvB,UAAM,SAAS,KAAK,WAAW,eAAe,mBAAK,YAAW;AAC9D,SAAK,UAAU,iBAAiB,WAAW,KAAK,iBAAiB,KAAK,IAAI,GAAG;AAAA,MAC3E;AAAA,IACN,CAAK;AACD,SAAK,UAAU,iBAAiB,SAAS,KAAK,eAAe,KAAK,IAAI,GAAG;AAAA,MACvE;AAAA,IACN,CAAK;AACD,SAAK,UAAU,iBAAiB,QAAQ,KAAK,cAAc,KAAK,IAAI,GAAG;AAAA,MACrE;AAAA,IACN,CAAK;AACD,SAAK,UAAU,iBAAiB,SAAS,KAAK,eAAe,KAAK,IAAI,GAAG;AAAA,MACvE;AAAA,IACN,CAAK;AACD,SAAK,UAAU,iBAAiB,SAAS,KAAK,eAAe,KAAK,IAAI,GAAG;AAAA,MACvE;AAAA,IACN,CAAK;AAAA,EACF;AAAA,EACD,kBAAkB;;AAChB,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACD;AACD,SAAK,OAAO,gBAAgB,IAAI;AAChC,UAAM,gBAAe;AACrB,SAAK,WAAW,UAAU,IAAI,SAAS;AACvC,SAAK,UAAU,kBAAkB;AACjC,SAAK,IAAI,aAAa,yBAAyB,mBAAK,aAAY;AAChE,SAAK,eAAe;AACpB,KAAAhC,MAAA,mBAAK,iBAAL,gBAAAA,IAAkB;AAClB,uBAAK,aAAc;AACnB,SAAK,IAAI,MAAM;AAAA,MACb,eAAe;AAAA,IACrB,CAAK;AACD,SAAK,YAAY;AACjB,SAAK,OAAO,IAAI,UAAU,IAAI,iBAAiB;AAAA,EAChD;AAAA,EACD,QAAQ,OAAO;AACb,QAAI,CAAC,KAAK,qBAAqB;AAC7B;AAAA,IACD;AACD,UAAM,QAAQ,KAAK;AACnB,QAAI,MAAM,WAAW,KAAK,WAAW;AACnC,WAAK,UAAU;IAChB;AAAA,EACF;AAAA,EACD,YAAY;;AACV,QAAI,KAAK,OAAO;AACd;AAAA,IACD;AACD,SAAK,eAAc;AACnB,SAAK,UAAU;AACf,SAAIA,MAAA,KAAK,oBAAL,gBAAAA,IAAsB,YAAY;AACpC,WAAK,OAAM;AAAA,IACZ;AACD,SAAK,kBAAkB;AAAA,EACxB;AAAA,EACD,UAAU;AACR,WAAO,CAAC,KAAK,aAAa,KAAK,UAAU,UAAU,KAAM,MAAK;AAAA,EAC/D;AAAA,EACD,SAAS;AACP,SAAK,YAAY;AACjB,QAAI,KAAK,QAAQ;AACf,WAAK,OAAO,gBAAgB,IAAI;AAChC,WAAK,OAAO,IAAI,UAAU,IAAI,iBAAiB;AAAA,IAChD;AACD,UAAM,OAAM;AAAA,EACb;AAAA,EAsCD,SAAS;AACP,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACD;AACD,UAAM,OAAM;AACZ,SAAK,gBAAe;AACpB,UAAM,YAAY,mBAAK;AACvB,UAAM,UAAU,mBAAK,UAAW,sBAAK,8BAAL,WAAoB;AACpD,QAAI,cAAc,SAAS;AACzB;AAAA,IACD;AACD,UAAM,UAAU,UAAQ;AACtB,yBAAK,UAAW;AAChB,UAAI,CAAC,MAAM;AACT,aAAK,OAAM;AACX;AAAA,MACD;AACD,4BAAK,4BAAL;AACA,WAAK,WAAW,QAAQ,IAAI;AAC5B,4BAAK,8CAAL;AAAA,IACN;AACI,SAAK,YAAY;AAAA,MACf,KAAK,MAAM;AACT,gBAAQ,OAAO;AAAA,MAChB;AAAA,MACD,MAAM,MAAM;AACV,gBAAQ,SAAS;AAAA,MAClB;AAAA,MACD,UAAU;AAAA,IAChB,CAAK;AACD,0BAAK,8CAAL;AAAA,EACD;AAAA,EACD,0BAA0B;AACxB,WAAO,KAAK;EACb;AAAA,EACD,kBAAkB;AAChB,SAAK,eAAc;AACnB,SAAK,UAAU;EAChB;AAAA,EACD,SAAS,OAAO;AACd,SAAK,gBAAe;AAAA,EACrB;AAAA,EACD,QAAQ,OAAO;AACb,QAAI,MAAM,WAAW,KAAK,OAAO,MAAM,QAAQ,SAAS;AACtD,WAAK,gBAAe;AACpB,YAAM,eAAc;AAAA,IACrB;AAAA,EACF;AAAA,EACD,iBAAiB,OAAO;AACtB,oBAAe,iBAAiB,KAAK,MAAM,KAAK;AAAA,EACjD;AAAA,EACD,eAAe,OAAO;AACpB,SAAK,YAAY;AAAA,EAClB;AAAA,EACD,cAAc,OAAO;AACnB,SAAK,YAAY;AAAA,EAClB;AAAA,EACD,eAAe,OAAO;AACpB,SAAK,OAAO,IAAI,UAAU,OAAO,mBAAmB,KAAK,QAAO,CAAE;AAAA,EACnE;AAAA,EACD,iBAAiB;AACf,SAAK,UAAU,aAAa,QAAQ,SAAS;AAC7C,SAAK,UAAU,gBAAgB,gBAAgB;AAAA,EAChD;AAAA,EACD,gBAAgB;AACd,SAAK,UAAU,aAAa,QAAQ,SAAS;AAC7C,SAAK,UAAU,aAAa,kBAAkB,IAAI;AAAA,EACnD;AAAA,EACD,SAAS;AACP,QAAI,KAAK,KAAK;AACZ,aAAO,KAAK;AAAA,IACb;AACD,QAAI,OAAO;AACX,QAAI,KAAK,OAAO;AACd,cAAQ,KAAK;AACb,cAAQ,KAAK;AAAA,IACd;AACD,UAAM,OAAM;AACZ,SAAK,YAAY,SAAS,cAAc,KAAK;AAC7C,SAAK,UAAU,YAAY;AAC3B,SAAK,UAAU,aAAa,MAAM,mBAAK,aAAY;AACnD,SAAK,UAAU,aAAa,gBAAgB,iBAAiB;AAC7D,SAAK,cAAa;AAClB,qBAAiB,aAAa,IAAI,iCAAiC,EAAE,KAAK;;AAAO,cAAAA,MAAA,KAAK,cAAL,gBAAAA,IAAgB,aAAa,mBAAmB;AAAA,KAAI;AACrI,SAAK,UAAU,kBAAkB;AACjC,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,KAAK;AACT,UAAM,WAAW,QAAQ,mBAAKgC,WAAS;AACvC,UAAM,QAAQ,mBAAKD;AACnB,SAAK,IAAI,OAAO,KAAK,SAAS;AAC9B,SAAK,aAAa,SAAS,cAAc,KAAK;AAC9C,SAAK,WAAW,UAAU,IAAI,WAAW,SAAS;AAClD,SAAK,IAAI,OAAO,KAAK,UAAU;AAC/B,eAAW,MAAM,KAAK,KAAK,CAAC,YAAY,SAAS,CAAC;AAClD,QAAI,KAAK,OAAO;AACd,YAAM,CAAC,aAAa,YAAY,IAAI,KAAK;AACzC,UAAI,KAAK,qBAAqB;AAC5B,cAAM;AAAA,UACJ;AAAA,QACV,IAAY,mBAAK;AACT,YAAI,CAAC,IAAI,EAAE,IAAI,KAAK,sBAAqB;AACzC,SAAC,IAAI,EAAE,IAAI,KAAK,wBAAwB,IAAI,EAAE;AAC9C,cAAM,CAAC,WAAW,UAAU,IAAI,KAAK;AACrC,cAAM,CAAC,OAAO,KAAK,IAAI,KAAK;AAC5B,YAAI,MAAM;AACV,gBAAQ,KAAK,UAAQ;AAAA,UACnB,KAAK;AACH,mBAAO,SAAS,SAAS,CAAC,IAAI,SAAS;AACvC,mBAAO,QAAQ,KAAK,UAAU,SAAS,CAAC,IAAI,SAAS;AACrD;AAAA,UACF,KAAK;AACH,mBAAO,SAAS,SAAS,CAAC,IAAI,SAAS;AACvC,mBAAO,SAAS,SAAS,CAAC,IAAI,SAAS;AACvC,aAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;AACnB;AAAA,UACF,KAAK;AACH,mBAAO,QAAQ,KAAK,SAAS,SAAS,CAAC,IAAI,SAAS;AACpD,mBAAO,SAAS,SAAS,CAAC,IAAI,SAAS;AACvC,aAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACpB;AAAA,UACF,KAAK;AACH,mBAAO,SAAS,SAAS,CAAC,IAAI,QAAQ,KAAK,SAAS,cAAc;AAClE,mBAAO,SAAS,SAAS,CAAC,IAAI,QAAQ,KAAK,QAAQ,aAAa;AAChE,aAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE;AACnB;AAAA,QACH;AACD,aAAK,MAAM,OAAO,aAAa,OAAO,cAAc,IAAI,EAAE;AAAA,MAClE,OAAa;AACL,aAAK,MAAM,QAAQ,aAAa,QAAQ,cAAc,KAAK,QAAQ,aAAa,KAAK,SAAS,YAAY;AAAA,MAC3G;AACD,4BAAK,4BAAL;AACA,WAAK,eAAe;AACpB,WAAK,UAAU,kBAAkB;AAAA,IACvC,OAAW;AACL,WAAK,eAAe;AACpB,WAAK,UAAU,kBAAkB;AAAA,IAClC;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EAID,eAAe,OAAO;;AACpB,UAAM,gBAAgB,MAAM,iBAAiB,OAAO;AACpD,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,QAAI,MAAM,WAAW,KAAK,MAAM,CAAC,MAAM,cAAc;AACnD;AAAA,IACD;AACD,UAAM,eAAc;AACpB,UAAM,QAAQ,gBAAA/B,MAAA,iBAAe,4CAAf,KAAAA,KAAmC,cAAc,QAAQ,MAAM,KAAK,IAAI,WAAW,aAAa,IAAI;AAClH,QAAI,CAAC,OAAO;AACV;AAAA,IACD;AACD,UAAM,YAAY,OAAO;AACzB,QAAI,CAAC,UAAU,YAAY;AACzB;AAAA,IACD;AACD,SAAK,UAAU;AACf,cAAU,mBAAkB;AAC5B,UAAM,QAAQ,UAAU,WAAW,CAAC;AACpC,QAAI,CAAC,MAAM,SAAS,IAAI,GAAG;AACzB,YAAM,WAAW,SAAS,eAAe,KAAK,CAAC;AAC/C,WAAK,UAAU;AACf,gBAAU,gBAAe;AACzB;AAAA,IACD;AACD,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACD,IAAG;AACJ,UAAM,eAAe;AACrB,UAAM,cAAc;AACpB,QAAI,eAAe,aAAa,KAAK,WAAW;AAC9C,YAAM,SAAS,eAAe;AAC9B,kBAAY,KAAK,eAAe,UAAU,MAAM,WAAW,EAAE,WAAW,aAAa,EAAE,CAAC;AACxF,UAAI,WAAW,KAAK,WAAW;AAC7B,YAAI,SAAS;AACb,mBAAW,SAAS,KAAK,UAAU,YAAY;AAC7C,cAAI,UAAU,QAAQ;AACpB,qBAAS;AACT;AAAA,UACD;AACD,iBAAO,KAAK,sCAAe,oCAAf,SAA+B,MAAM;AAAA,QAClD;AAAA,MACF;AACD,mBAAa,KAAK,eAAe,UAAU,MAAM,GAAG,WAAW,EAAE,WAAW,aAAa,EAAE,CAAC;AAAA,IAClG,WAAe,mBAAmB,KAAK,WAAW;AAC5C,UAAI,SAAS;AACb,UAAI,IAAI;AACR,iBAAW,SAAS,KAAK,UAAU,YAAY;AAC7C,YAAI,QAAQ,aAAa;AACvB,mBAAS;AAAA,QACV;AACD,eAAO,KAAK,sCAAe,oCAAf,SAA+B,MAAM;AAAA,MAClD;AAAA,IACF;AACD,uBAAK,UAAW,GAAG,aAAa,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,YAAY,KAAK,IAAI,CAAC;AAC3E,0BAAK,4BAAL;AACA,UAAM,WAAW,IAAI;AACrB,QAAI,eAAe,aAAa,OAAO,CAAC,KAAK,SAAS,MAAM,KAAK,QAAQ,CAAC;AAC1E,eAAW;AAAA,MACT;AAAA,IACN,KAAS,KAAK,UAAU,YAAY;AAC9B,UAAI,WAAW,aAAa,KAAK,WAAW;AAC1C,cAAM,SAAS,WAAW,UAAU;AACpC,YAAI,gBAAgB,QAAQ;AAC1B,mBAAS,SAAS,YAAY,YAAY;AAC1C,mBAAS,OAAO,YAAY,YAAY;AACxC;AAAA,QACD;AACD,wBAAgB;AAAA,MACjB;AAAA,IACF;AACD,cAAU,gBAAe;AACzB,cAAU,SAAS,QAAQ;AAAA,EAC5B;AAAA,EAkBD,IAAI,aAAa;AACf,WAAO,KAAK;AAAA,EACb;AAAA,EACD,OAAO,YAAY,MAAM,QAAQ,WAAW;;AAC1C,QAAI,cAAc;AAClB,QAAI,gBAAgB,2BAA2B;AAC7C,YAAM;AAAA,QACJ,MAAM;AAAA,UACJ,uBAAuB;AAAA,YACrB;AAAA,YACA;AAAA,UACD;AAAA,UACD;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,QACD;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,UACN,MAAM;AAAA,YACJ;AAAA,UACD;AAAA,QACF;AAAA,MACF,IAAG;AACJ,UAAI,CAAC,eAAe,YAAY,WAAW,GAAG;AAC5C,eAAO;AAAA,MACR;AACD,oBAAc,OAAO;AAAA,QACnB,gBAAgB,qBAAqB;AAAA,QACrC,OAAO,MAAM,KAAK,SAAS;AAAA,QAC3B;AAAA,QACA,OAAO,YAAY,KAAK,IAAI;AAAA,QAC5B,UAAU;AAAA,QACV,WAAW,aAAa;AAAA,QACxB,MAAM,KAAK,MAAM,CAAC;AAAA,QAClB;AAAA,QACA;AAAA,QACA,SAAS;AAAA,MACjB;AAAA,IACK;AACD,UAAM,SAAS,MAAM,YAAY,MAAM,QAAQ,SAAS;AACxD,yBAAOgC,YAAY,KAAK;AACxB,yBAAOD,SAAS,KAAK,aAAa,GAAG,KAAK,KAAK;AAC/C,yBAAO,UAAW,gBAAA/B,MAAA,iBAAe,4CAAf,KAAAA,KAAmC,KAAK;AAC1D,WAAO,sBAAsB,KAAK,MAAM;AACxC,yBAAO,cAAe;AACtB,WAAO;AAAA,EACR;AAAA,EACD,UAAU,eAAe,OAAO;AAC9B,QAAI,KAAK,WAAW;AAClB,aAAO;AAAA,IACR;AACD,QAAI,KAAK,SAAS;AAChB,aAAO;AAAA,QACL,WAAW,KAAK;AAAA,QAChB,IAAI,KAAK;AAAA,QACT,SAAS;AAAA,MACjB;AAAA,IACK;AACD,UAAM,UAAU,gBAAe,mBAAmB,KAAK;AACvD,UAAM,OAAO,KAAK,QAAQ,SAAS,OAAO;AAC1C,UAAM,QAAQ,iBAAiB,cAAc,QAAQ,KAAK,kBAAkB,iBAAiB,KAAK,SAAS,EAAE,QAAQ,mBAAK+B,QAAM;AAChI,UAAM,aAAa;AAAA,MACjB,gBAAgB,qBAAqB;AAAA,MACrC;AAAA,MACA,UAAU,mBAAKC;AAAA,MACf,OAAO,sBAAK,wCAAL;AAAA,MACP,WAAW,KAAK;AAAA,MAChB;AAAA,MACA,UAAU,KAAK;AAAA,MACf,oBAAoB,KAAK;AAAA,IAC/B;AACI,QAAI,cAAc;AAChB,aAAO;AAAA,IACR;AACD,QAAI,KAAK,uBAAuB,CAAC,sBAAK,0CAAL,WAAwB,aAAa;AACpE,aAAO;AAAA,IACR;AACD,eAAW,KAAK,KAAK;AACrB,WAAO;AAAA,EACR;AAAA,EAUD,wBAAwB,YAAY;AAClC,UAAM,UAAU,MAAM,wBAAwB,UAAU;AACxD,QAAI,KAAK,SAAS;AAChB,aAAO;AAAA,IACR;AACD,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,UAAM,WAAW,QAAQ,mBAAKA,WAAS;AACvC,UAAM,QAAQ,mBAAKD;AACnB,YAAQ,gBAAe;AACvB,eAAW,QAAQ,mBAAK,UAAS,MAAM,IAAI,GAAG;AAC5C,YAAM,MAAM,SAAS,cAAc,KAAK;AACxC,UAAI,OAAO,OAAO,SAAS,eAAe,IAAI,IAAI,SAAS,cAAc,IAAI,CAAC;AAC9E,cAAQ,OAAO,GAAG;AAAA,IACnB;AACD,UAAM,UAAU,gBAAe,mBAAmB,KAAK;AACvD,eAAW,aAAa;AAAA,MACtB,MAAM,KAAK,QAAQ,SAAS,OAAO;AAAA,MACnC,cAAc,mBAAK;AAAA,IACzB,CAAK;AACD,WAAO;AAAA,EACR;AAAA,EACD,uBAAuB,YAAY;AACjC,UAAM,uBAAuB,UAAU;AACvC,eAAW,YAAW;AAAA,EACvB;AACH;AA9lBEA,UAAA;AACA;AACA;AACA;AACAC,aAAA;AACA;AAiFA;AAAA,oBAAe,SAAC,UAAU;AACxB,QAAM,cAAc,UAAQ;AAC1B,SAAK,UAAU,MAAM,WAAW,QAAQ,IAAI;AAC5C,SAAK,UAAU,GAAG,EAAE,OAAO,mBAAKA,eAAa,KAAK,WAAW;AAC7D,uBAAKA,YAAY;AACjB,0BAAK,8CAAL;AAAA,EACN;AACI,QAAM,gBAAgB,mBAAKA;AAC3B,OAAK,YAAY;AAAA,IACf,KAAK,YAAY,KAAK,MAAM,QAAQ;AAAA,IACpC,MAAM,YAAY,KAAK,MAAM,aAAa;AAAA,IAC1C,MAAM,KAAK,WAAW,SAAS,KAAK,KAAK,YAAY,IAAI;AAAA,IACzD,UAAU;AAAA,IACV,MAAM,2BAA2B;AAAA,IACjC,qBAAqB;AAAA,IACrB,UAAU;AAAA,EAChB,CAAK;AACF;AACD;AAAA,iBAAY,SAAC,OAAO;AAClB,QAAM,WAAW,SAAO;AACtB,uBAAKD,SAAS,KAAK,UAAU,MAAM,QAAQ;AAAA,EACjD;AACI,QAAM,aAAa,mBAAKA;AACxB,OAAK,YAAY;AAAA,IACf,KAAK,SAAS,KAAK,MAAM,KAAK;AAAA,IAC9B,MAAM,SAAS,KAAK,MAAM,UAAU;AAAA,IACpC,MAAM,KAAK,WAAW,SAAS,KAAK,KAAK,YAAY,IAAI;AAAA,IACzD,UAAU;AAAA,IACV,MAAM,2BAA2B;AAAA,IACjC,qBAAqB;AAAA,IACrB,UAAU;AAAA,EAChB,CAAK;AACF;AAkGD;AAAA,iBAAY,WAAG;;AACb,QAAM,SAAS;AACf,OAAK,UAAU;AACf,aAAW,SAAS,KAAK,UAAU,YAAY;AAC7C,WAAO,KAAK,gBAAA/B,MAAA,iBAAe,oCAAf,KAAAA,KAA+B,MAAM;AAAA,EAClD;AACD,SAAO,OAAO,KAAK,IAAI;AACxB;AACD;AAAA,yBAAoB,WAAG;AACrB,QAAM,CAAC,aAAa,YAAY,IAAI,KAAK;AACzC,MAAI;AACJ,MAAI,KAAK,iBAAiB;AACxB,WAAO,KAAK,IAAI;EACtB,OAAW;AACL,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACD,IAAG;AACJ,UAAM,eAAe,IAAI,MAAM;AAC/B,UAAM,kBAAkB,IAAI,UAAU,SAAS,QAAQ;AACvD,QAAI,UAAU,OAAO,QAAQ;AAC7B,QAAI,MAAM,UAAU;AACpB,iBAAa,IAAI,OAAO,KAAK,GAAG;AAChC,WAAO,IAAI;AACX,QAAI,OAAM;AACV,QAAI,MAAM,UAAU;AACpB,QAAI,UAAU,OAAO,UAAU,eAAe;AAAA,EAC/C;AACD,MAAI,KAAK,WAAW,QAAQ,KAAK,iBAAiB,KAAK;AACrD,SAAK,QAAQ,KAAK,QAAQ;AAC1B,SAAK,SAAS,KAAK,SAAS;AAAA,EAClC,OAAW;AACL,SAAK,QAAQ,KAAK,SAAS;AAC3B,SAAK,SAAS,KAAK,QAAQ;AAAA,EAC5B;AACD,OAAK,kBAAiB;AACvB;AA6IM;AAAA,oBAAe,SAAC,MAAM;AAC3B,UAAQ,KAAK,aAAa,KAAK,YAAY,KAAK,YAAY,KAAK,WAAW,WAAW,aAAa,EAAE;AACvG;AA6ED;AAAA,gBAAW,WAAG;AACZ,OAAK,UAAU;AACf,MAAI,CAAC,mBAAK,WAAU;AAClB;AAAA,EACD;AACD,aAAW,QAAQ,mBAAK,UAAS,MAAM,IAAI,GAAG;AAC5C,UAAM,MAAM,SAAS,cAAc,KAAK;AACxC,QAAI,OAAO,OAAO,SAAS,eAAe,IAAI,IAAI,SAAS,cAAc,IAAI,CAAC;AAC9E,SAAK,UAAU,OAAO,GAAG;AAAA,EAC1B;AACF;AACD;AAAA,sBAAiB,WAAG;AAClB,SAAO,mBAAK,UAAS,WAAW,KAAQ,GAAG;AAC5C;AACM;AAAA,wBAAmB,SAAC,SAAS;AAClC,SAAO,QAAQ,WAAW,KAAK,GAAM;AACtC;AAkFD;AAAA,uBAAkB,SAAC,YAAY;AAC7B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACN,IAAQ,mBAAK;AACT,SAAO,KAAK,iBAAiB,WAAW,UAAU,SAAS,WAAW,aAAa,YAAY,WAAW,MAAM,KAAK,CAAC,GAAG,MAAM,MAAM,MAAM,CAAC,CAAC,KAAK,WAAW,cAAc;AAC5K;AAzLD,aA1YI,iBA0YG;AA6FP,aAveI,iBAueG;AAheP,cAPI,iBAOG,2BAA0B;AACjC,cARI,iBAQG,oBAAmB;AAC1B,cATI,iBASG,iBAAgB;AACvB,cAVI,iBAUG,oBAAmB;AAkC1B,cA5CI,iBA4CG,SAAQ;AACf,cA7CI,iBA6CG,eAAc,qBAAqB;AA7C5C,IAAM,iBAAN;AAmmBA,MAAM,SAAS;AAAA,EAIb,YAAY,OAAO,cAAc,GAAG,cAAc,GAAG,QAAQ,MAAM;AA2DnE;AA+CA;AAkBA;AAIA;AAuBA;AA1JA;AACA,uCAAiB;AACjB,mCAAa;AAEX,QAAI,OAAO;AACX,QAAI,OAAO;AACX,QAAI,OAAO;AACX,QAAI,OAAO;AACX,UAAM,mBAAmB;AACzB,UAAM,UAAU,MAAM,CAAC;AACvB,eAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,KAAI,OAAO;AACV,YAAM,KAAK,KAAK,OAAO,IAAI,eAAe,OAAO,IAAI;AACrD,YAAM,KAAK,KAAK,MAAM,IAAI,QAAQ,eAAe,OAAO,IAAI;AAC5D,YAAM,KAAK,KAAK,OAAO,IAAI,eAAe,OAAO,IAAI;AACrD,YAAM,KAAK,KAAK,MAAM,IAAI,SAAS,eAAe,OAAO,IAAI;AAC7D,YAAM,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI;AAC9B,YAAM,QAAQ,CAAC,IAAI,IAAI,IAAI,KAAK;AAChC,yBAAK,gBAAe,KAAK,MAAM,KAAK;AACpC,aAAO,KAAK,IAAI,MAAM,EAAE;AACxB,aAAO,KAAK,IAAI,MAAM,EAAE;AACxB,aAAO,KAAK,IAAI,MAAM,EAAE;AACxB,aAAO,KAAK,IAAI,MAAM,EAAE;AAAA,IACzB;AACD,UAAM,YAAY,OAAO,OAAO,IAAI;AACpC,UAAM,aAAa,OAAO,OAAO,IAAI;AACrC,UAAM,cAAc,OAAO;AAC3B,UAAM,cAAc,OAAO;AAC3B,UAAM,WAAW,mBAAK,gBAAe,GAAG,QAAQ,KAAK,EAAE;AACvD,UAAM,YAAY,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;AAC3C,eAAW,QAAQ,mBAAK,iBAAgB;AACtC,YAAM,CAAC,GAAG,IAAI,EAAE,IAAI;AACpB,WAAK,CAAC,KAAK,IAAI,eAAe;AAC9B,WAAK,CAAC,KAAK,KAAK,eAAe;AAC/B,WAAK,CAAC,KAAK,KAAK,eAAe;AAAA,IAChC;AACD,uBAAK,MAAO;AAAA,MACV,GAAG;AAAA,MACH,GAAG;AAAA,MACH,OAAO;AAAA,MACP,QAAQ;AAAA,MACR;AAAA,IACN;AAAA,EACG;AAAA,EACD,cAAc;AACZ,uBAAK,gBAAe,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5E,UAAM,uBAAuB;AAC7B,eAAW,QAAQ,mBAAK,iBAAgB;AACtC,UAAI,KAAK,CAAC,GAAG;AACX,6BAAqB,KAAK,GAAG,sBAAK,0BAAL,WAAgB,KAAK;AAClD,8BAAK,oBAAL,WAAa;AAAA,MACrB,OAAa;AACL,8BAAK,oBAAL,WAAa;AACb,6BAAqB,KAAK,GAAG,sBAAK,0BAAL,WAAgB,KAAK;AAAA,MACnD;AAAA,IACF;AACD,WAAO,sBAAK,8BAAL,WAAkB;AAAA,EAC1B;AA6HH;AA1LE;AACA;AACA;AA4DA;AAAA,iBAAY,SAAC,sBAAsB;AACjC,QAAM,QAAQ;AACd,QAAM,WAAW,oBAAI;AACrB,aAAW,QAAQ,sBAAsB;AACvC,UAAM,CAAC,GAAG,IAAI,EAAE,IAAI;AACpB,UAAM,KAAK,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC;AAAA,EACxC;AACD,QAAM,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/C,WAAS,IAAI,GAAG,KAAK,MAAM,QAAQ,IAAI,IAAI,KAAK,GAAG;AACjD,UAAM,QAAQ,MAAM,CAAC,EAAE,CAAC;AACxB,UAAM,QAAQ,MAAM,IAAI,CAAC,EAAE,CAAC;AAC5B,UAAM,KAAK,KAAK;AAChB,UAAM,KAAK,KAAK;AAChB,aAAS,IAAI,KAAK;AAClB,aAAS,IAAI,KAAK;AAAA,EACnB;AACD,QAAM,WAAW;AACjB,MAAI;AACJ,SAAO,SAAS,OAAO,GAAG;AACxB,UAAM,OAAO,SAAS,OAAQ,EAAC,KAAI,EAAG;AACtC,QAAI,CAAC,GAAG,IAAI,IAAI,OAAO,KAAK,IAAI;AAChC,aAAS,OAAO,IAAI;AACpB,QAAI,aAAa;AACjB,QAAI,aAAa;AACjB,cAAU,CAAC,GAAG,EAAE;AAChB,aAAS,KAAK,OAAO;AACrB,WAAO,MAAM;AACX,UAAI;AACJ,UAAI,SAAS,IAAI,KAAK,GAAG;AACvB,YAAI;AAAA,MACL,WAAU,SAAS,IAAI,KAAK,GAAG;AAC9B,YAAI;AAAA,MACd,OAAe;AACL;AAAA,MACD;AACD,eAAS,OAAO,CAAC;AACjB,OAAC,GAAG,IAAI,IAAI,OAAO,KAAK,IAAI;AAC5B,UAAI,eAAe,GAAG;AACpB,gBAAQ,KAAK,YAAY,YAAY,GAAG,eAAe,KAAK,KAAK,EAAE;AACnE,qBAAa;AAAA,MACd;AACD,mBAAa,eAAe,KAAK,KAAK;AAAA,IACvC;AACD,YAAQ,KAAK,YAAY,UAAU;AAAA,EACpC;AACD,SAAO,IAAI,iBAAiB,UAAU,mBAAK,KAAI;AAChD;AACD;AAAA,kBAAa,SAAC,GAAG;AACf,QAAM,QAAQ,mBAAK;AACnB,MAAI,QAAQ;AACZ,MAAI,MAAM,MAAM,SAAS;AACzB,SAAO,SAAS,KAAK;AACnB,UAAM,SAAS,QAAQ,OAAO;AAC9B,UAAM,KAAK,MAAM,MAAM,EAAE,CAAC;AAC1B,QAAI,OAAO,GAAG;AACZ,aAAO;AAAA,IACR;AACD,QAAI,KAAK,GAAG;AACV,cAAQ,SAAS;AAAA,IACzB,OAAa;AACL,YAAM,SAAS;AAAA,IAChB;AAAA,EACF;AACD,SAAO,MAAM;AACd;AACD;AAAA,YAAO,SAAC,GAAG,IAAI,EAAE,GAAG;AAClB,QAAM,QAAQ,sBAAK,gCAAL,WAAmB;AACjC,qBAAK,YAAW,OAAO,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AAC1C;AACD;AAAA,YAAO,SAAC,GAAG,IAAI,EAAE,GAAG;AAClB,QAAM,QAAQ,sBAAK,gCAAL,WAAmB;AACjC,WAAS,IAAI,OAAO,IAAI,mBAAK,YAAW,QAAQ,KAAK;AACnD,UAAM,CAAC,OAAO,GAAG,IAAI,mBAAK,YAAW,CAAC;AACtC,QAAI,UAAU,IAAI;AAChB;AAAA,IACD;AACD,QAAI,UAAU,MAAM,QAAQ,IAAI;AAC9B,yBAAK,YAAW,OAAO,GAAG,CAAC;AAC3B;AAAA,IACD;AAAA,EACF;AACD,WAAS,IAAI,QAAQ,GAAG,KAAK,GAAG,KAAK;AACnC,UAAM,CAAC,OAAO,GAAG,IAAI,mBAAK,YAAW,CAAC;AACtC,QAAI,UAAU,IAAI;AAChB;AAAA,IACD;AACD,QAAI,UAAU,MAAM,QAAQ,IAAI;AAC9B,yBAAK,YAAW,OAAO,GAAG,CAAC;AAC3B;AAAA,IACD;AAAA,EACF;AACF;AACD;AAAA,eAAU,SAAC,MAAM;AACf,QAAM,CAAC,GAAG,IAAI,EAAE,IAAI;AACpB,QAAM,UAAU,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;AAC5B,QAAM,QAAQ,sBAAK,gCAAL,WAAmB;AACjC,WAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC9B,UAAM,CAAC,OAAO,GAAG,IAAI,mBAAK,YAAW,CAAC;AACtC,aAAS,IAAI,GAAG,KAAK,QAAQ,QAAQ,IAAI,IAAI,KAAK;AAChD,YAAM,CAAG,MAAI,EAAE,IAAI,QAAQ,CAAC;AAC5B,UAAI,OAAO,MAAM,MAAM,OAAO;AAC5B;AAAA,MACD;AACD,UAAI,MAAM,OAAO;AACf,YAAI,KAAK,KAAK;AACZ,kBAAQ,CAAC,EAAE,CAAC,IAAI;AAAA,QAC5B,OAAiB;AACL,cAAI,OAAO,GAAG;AACZ,mBAAO;UACR;AACD,kBAAQ,OAAO,GAAG,CAAC;AACnB;AACA;AAAA,QACD;AACD;AAAA,MACD;AACD,cAAQ,CAAC,EAAE,CAAC,IAAI;AAChB,UAAI,KAAK,KAAK;AACZ,gBAAQ,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AACD,SAAO;AACR;AAEH,MAAM,QAAQ;AAAA,EACZ,YAAY;AACV,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACnE;AAAA,EACD,IAAI,MAAM;AACR,UAAM,IAAI,MAAM,4CAA4C;AAAA,EAC7D;AAAA,EACD,UAAUiC,QAAOC,YAAW;AAC1B,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACnE;AAAA,EACD,IAAI,OAAO;AACT,WAAO,gBAAgB;AAAA,EACxB;AACH;AACA,MAAM,yBAAyB,QAAQ;AAAA,EAGrC,YAAY,UAAU,KAAK;AACzB;AAHF,uBAAAC,OAAA;AACA;AAGE,uBAAK,WAAY;AACjB,uBAAKA,OAAO;AAAA,EACb;AAAA,EACD,YAAY;AACV,UAAM,SAAS;AACf,eAAW,WAAW,mBAAK,YAAW;AACpC,UAAI,CAAC,OAAO,KAAK,IAAI;AACrB,aAAO,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE;AAChC,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,GAAG;AAC1C,cAAM,IAAI,QAAQ,CAAC;AACnB,cAAM,IAAI,QAAQ,IAAI,CAAC;AACvB,YAAI,MAAM,OAAO;AACf,iBAAO,KAAK,IAAI,CAAC,EAAE;AACnB,kBAAQ;AAAA,QAClB,WAAmB,MAAM,OAAO;AACtB,iBAAO,KAAK,IAAI,CAAC,EAAE;AACnB,kBAAQ;AAAA,QACT;AAAA,MACF;AACD,aAAO,KAAK,GAAG;AAAA,IAChB;AACD,WAAO,OAAO,KAAK,GAAG;AAAA,EACvB;AAAA,EACD,UAAU,CAAC,KAAK,KAAK,KAAK,GAAG,GAAGD,YAAW;AACzC,UAAM,WAAW;AACjB,UAAM,QAAQ,MAAM;AACpB,UAAM,SAAS,MAAM;AACrB,eAAW,WAAW,mBAAK,YAAW;AACpC,YAAM,SAAS,IAAI,MAAM,QAAQ,MAAM;AACvC,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,GAAG;AAC1C,eAAO,CAAC,IAAI,MAAM,QAAQ,CAAC,IAAI;AAC/B,eAAO,IAAI,CAAC,IAAI,MAAM,QAAQ,IAAI,CAAC,IAAI;AAAA,MACxC;AACD,eAAS,KAAK,MAAM;AAAA,IACrB;AACD,WAAO;AAAA,EACR;AAAA,EACD,IAAI,MAAM;AACR,WAAO,mBAAKC;AAAA,EACb;AACH;AA5CEA,QAAA;AACA;AA4CF,MAAM,gBAAN,MAAM,cAAa;AAAA,EAiBjB,YAAY;AAAA,IACV;AAAA,IACA;AAAA,EACJ,GAAK,KAAK,aAAa,WAAW,OAAO,cAAc,GAAG;AAiBxD;AApCA,uBAAAA,OAAA;AACA,gCAAU;AACV;AACA;AACA,6BAAO;AACP,8BAAQ,IAAI,aAAa,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,gCAAU;AAQR,uBAAKA,OAAO;AACZ,uBAAK,YAAa,YAAY;AAC9B,uBAAK,QAAS;AACd,uBAAK,OAAM,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC;AAC5C,uBAAK,cAAe;AACpB,uBAAK,WAAY,4BAAa,aAAY;AAC1C,uBAAK,MAAO,4BAAa,QAAO;AAChC,uBAAK,cAAe;AACpB,uBAAK,SAAQ,KAAK,GAAG,CAAC;AAAA,EACvB;AAAA,EACD,IAAI,OAAO;AACT,WAAO;AAAA,EACR;AAAA,EACD,UAAU;AACR,WAAO,MAAM,mBAAK,OAAM,CAAC,CAAC;AAAA,EAC3B;AAAA,EAOD,IAAI;AAAA,IACF;AAAA,IACA;AAAA,EACJ,GAAK;;AACD,uBAAK,QAAS;AACd,uBAAK,QAAS;AACd,UAAM,CAAC,QAAQ,QAAQ,YAAY,WAAW,IAAI,mBAAKA;AACvD,QAAI,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI,mBAAK,OAAM,SAAS,GAAG,EAAE;AAChD,UAAM,QAAQ,IAAI;AAClB,UAAM,QAAQ,IAAI;AAClB,UAAM,IAAI,KAAK,MAAM,OAAO,KAAK;AACjC,QAAI,IAAI,mBAAK,OAAM;AACjB,aAAO;AAAA,IACR;AACD,UAAM,QAAQ,IAAI,mBAAK;AACvB,UAAM,IAAI,QAAQ;AAClB,UAAM,SAAS,IAAI;AACnB,UAAM,SAAS,IAAI;AACnB,QAAI,KAAK;AACT,QAAI,KAAK;AACT,SAAK;AACL,SAAK;AACL,UAAM;AACN,UAAM;AACN,KAAAnC,MAAA,mBAAK,aAAL,gBAAAA,IAAc,KAAK,GAAG;AACtB,UAAM,KAAK,CAAC,SAAS;AACrB,UAAM,KAAK,SAAS;AACpB,UAAM,MAAM,KAAK,mBAAK;AACtB,UAAM,MAAM,KAAK,mBAAK;AACtB,uBAAK,OAAM,IAAI,mBAAK,OAAM,SAAS,GAAG,CAAC,GAAG,CAAC;AAC3C,uBAAK,OAAM,IAAI,CAAC,KAAK,KAAK,KAAK,GAAG,GAAG,CAAC;AACtC,uBAAK,OAAM,IAAI,mBAAK,OAAM,SAAS,IAAI,EAAE,GAAG,EAAE;AAC9C,uBAAK,OAAM,IAAI,CAAC,KAAK,KAAK,KAAK,GAAG,GAAG,EAAE;AACvC,QAAI,MAAM,mBAAK,OAAM,CAAC,CAAC,GAAG;AACxB,UAAI,mBAAK,MAAK,WAAW,GAAG;AAC1B,2BAAK,OAAM,IAAI,CAAC,KAAK,KAAK,KAAK,GAAG,GAAG,CAAC;AACtC,2BAAK,MAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,UAAU,aAAa,KAAK,MAAM,UAAU,WAAW;AACtG,2BAAK,OAAM,IAAI,CAAC,KAAK,KAAK,KAAK,GAAG,GAAG,EAAE;AACvC,2BAAK,SAAQ,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,UAAU,aAAa,KAAK,MAAM,UAAU,WAAW;AAAA,MAC1G;AACD,yBAAK,OAAM,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC;AAC1C,aAAO,CAAC,KAAK;IACd;AACD,uBAAK,OAAM,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC;AAC1C,UAAM,QAAQ,KAAK,IAAI,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,IAAI,KAAK,MAAM,QAAQ,MAAM,CAAC;AAChF,QAAI,QAAQ,KAAK,KAAK,GAAG;AACvB,OAAC,IAAI,IAAI,IAAI,EAAE,IAAI,mBAAK,OAAM,SAAS,GAAG,CAAC;AAC3C,yBAAK,MAAK,KAAK,KAAK,KAAK,KAAK,OAAO,KAAK,MAAM,IAAI,UAAU,cAAc,KAAK,MAAM,IAAI,UAAU,WAAW;AAChH,OAAC,IAAI,IAAI,IAAI,EAAE,IAAI,mBAAK,OAAM,SAAS,IAAI,EAAE;AAC7C,yBAAK,SAAQ,KAAK,KAAK,KAAK,KAAK,OAAO,KAAK,MAAM,IAAI,UAAU,cAAc,KAAK,MAAM,IAAI,UAAU,WAAW;AACnH,aAAO;AAAA,IACR;AACD,KAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,mBAAK,OAAM,SAAS,GAAG,CAAC;AACnD,uBAAK,MAAK,OAAO,KAAK,IAAI,MAAM,IAAI,UAAU,cAAc,KAAK,IAAI,MAAM,IAAI,UAAU,eAAe,IAAI,KAAK,MAAM,IAAI,UAAU,cAAc,IAAI,KAAK,MAAM,IAAI,UAAU,eAAe,KAAK,MAAM,IAAI,UAAU,cAAc,KAAK,MAAM,IAAI,UAAU,WAAW;AAC1Q,KAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,mBAAK,OAAM,SAAS,IAAI,EAAE;AACrD,uBAAK,SAAQ,OAAO,KAAK,IAAI,MAAM,IAAI,UAAU,cAAc,KAAK,IAAI,MAAM,IAAI,UAAU,eAAe,IAAI,KAAK,MAAM,IAAI,UAAU,cAAc,IAAI,KAAK,MAAM,IAAI,UAAU,eAAe,KAAK,MAAM,IAAI,UAAU,cAAc,KAAK,MAAM,IAAI,UAAU,WAAW;AAC7Q,WAAO;AAAA,EACR;AAAA,EACD,YAAY;AACV,QAAI,KAAK,WAAW;AAClB,aAAO;AAAA,IACR;AACD,UAAM,MAAM,mBAAK;AACjB,UAAM,SAAS,mBAAK;AACpB,UAAM,UAAU,mBAAK,OAAM,SAAS,GAAG,CAAC;AACxC,UAAM,aAAa,mBAAK,OAAM,SAAS,IAAI,EAAE;AAC7C,UAAM,CAAC,GAAG,GAAG,OAAO,MAAM,IAAI,mBAAKmC;AACnC,UAAM,CAAC,UAAU,UAAU,aAAa,WAAW,IAAI,sBAAK,kCAAL;AACvD,QAAI,MAAM,mBAAK,OAAM,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW;AAC3C,aAAO,KAAK,mBAAK,OAAM,CAAC,IAAI,KAAK,KAAK,KAAK,mBAAK,OAAM,CAAC,IAAI,KAAK,MAAM,MAAM,mBAAK,OAAM,CAAC,IAAI,KAAK,KAAK,KAAK,mBAAK,OAAM,CAAC,IAAI,KAAK,MAAM,KAAK,QAAQ,IAAI,QAAQ,KAAK,WAAW,IAAI,WAAW,MAAM,mBAAK,OAAM,EAAE,IAAI,KAAK,KAAK,KAAK,mBAAK,OAAM,EAAE,IAAI,KAAK,MAAM,MAAM,mBAAK,OAAM,EAAE,IAAI,KAAK,KAAK,KAAK,mBAAK,OAAM,EAAE,IAAI,KAAK,MAAM;AAAA,IACnU;AACD,UAAM,SAAS;AACf,WAAO,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE;AAClC,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,GAAG;AACtC,UAAI,MAAM,IAAI,CAAC,CAAC,GAAG;AACjB,eAAO,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,EAAE;AAAA,MAClD,OAAa;AACL,eAAO,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,EAAE;AAAA,MAC/F;AAAA,IACF;AACD,WAAO,KAAK,KAAK,QAAQ,CAAC,IAAI,KAAK,KAAK,KAAK,QAAQ,CAAC,IAAI,KAAK,MAAM,KAAK,QAAQ,IAAI,QAAQ,KAAK,WAAW,IAAI,WAAW,MAAM,WAAW,CAAC,IAAI,KAAK,KAAK,KAAK,WAAW,CAAC,IAAI,KAAK,MAAM,EAAE;AAC/L,aAAS,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG;AAC9C,UAAI,MAAM,OAAO,CAAC,CAAC,GAAG;AACpB,eAAO,KAAK,IAAI,OAAO,IAAI,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,EAAE;AAAA,MACxD,OAAa;AACL,eAAO,KAAK,IAAI,OAAO,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,EAAE;AAAA,MACjH;AAAA,IACF;AACD,WAAO,KAAK,IAAI,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI;AAC1C,WAAO,OAAO,KAAK,GAAG;AAAA,EACvB;AAAA,EACD,cAAc;;AACZ,UAAM,MAAM,mBAAK;AACjB,UAAM,SAAS,mBAAK;AACpB,UAAM,OAAO,mBAAK;AAClB,UAAM,UAAU,KAAK,SAAS,GAAG,CAAC;AAClC,UAAM,aAAa,KAAK,SAAS,IAAI,EAAE;AACvC,UAAM,CAAC,QAAQ,QAAQ,YAAY,WAAW,IAAI,mBAAKA;AACvD,UAAM,SAAS,IAAI,gBAAcnC,MAAA,mBAAK,aAAL,gBAAAA,IAAc,WAAU,KAAK,CAAC;AAC/D,aAAS,IAAI,GAAG,KAAK,OAAO,SAAS,GAAG,IAAI,IAAI,KAAK,GAAG;AACtD,aAAO,CAAC,KAAK,mBAAK,SAAQ,CAAC,IAAI,UAAU;AACzC,aAAO,IAAI,CAAC,KAAK,mBAAK,SAAQ,IAAI,CAAC,IAAI,UAAU;AAAA,IAClD;AACD,WAAO,OAAO,SAAS,CAAC,KAAK,mBAAK,UAAS,UAAU;AACrD,WAAO,OAAO,SAAS,CAAC,KAAK,mBAAK,UAAS,UAAU;AACrD,UAAM,CAAC,UAAU,UAAU,aAAa,WAAW,IAAI,sBAAK,kCAAL;AACvD,QAAI,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW;AACrC,YAAMoC,WAAU,IAAI,aAAa,EAAE;AACnC,MAAAA,SAAQ,IAAI,CAAC,KAAK,KAAK,KAAK,MAAM,KAAK,CAAC,IAAI,UAAU,aAAa,KAAK,CAAC,IAAI,UAAU,aAAa,KAAK,KAAK,KAAK,MAAM,KAAK,CAAC,IAAI,UAAU,aAAa,KAAK,CAAC,IAAI,UAAU,aAAa,KAAK,KAAK,KAAK,KAAK,UAAU,UAAU,KAAK,KAAK,KAAK,KAAK,aAAa,aAAa,KAAK,KAAK,KAAK,MAAM,KAAK,EAAE,IAAI,UAAU,aAAa,KAAK,EAAE,IAAI,UAAU,aAAa,KAAK,KAAK,KAAK,MAAM,KAAK,EAAE,IAAI,UAAU,aAAa,KAAK,EAAE,IAAI,UAAU,WAAW,GAAG,CAAC;AACrc,aAAO,IAAI,qBAAqBA,UAAS,QAAQ,mBAAKD,QAAM,mBAAK,eAAc,mBAAK,eAAc,mBAAK,OAAM;AAAA,IAC9G;AACD,UAAM,UAAU,IAAI,aAAa,mBAAK,MAAK,SAAS,KAAK,mBAAK,SAAQ,MAAM;AAC5E,QAAI,IAAI,IAAI;AACZ,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG;AAC7B,UAAI,MAAM,IAAI,CAAC,CAAC,GAAG;AACjB,gBAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,IAAI;AAC9B;AAAA,MACD;AACD,cAAQ,CAAC,IAAI,IAAI,CAAC;AAClB,cAAQ,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;AAAA,IAC3B;AACD,YAAQ,IAAI,CAAC,KAAK,KAAK,KAAK,MAAM,QAAQ,CAAC,IAAI,UAAU,aAAa,QAAQ,CAAC,IAAI,UAAU,aAAa,KAAK,KAAK,KAAK,KAAK,UAAU,UAAU,KAAK,KAAK,KAAK,KAAK,aAAa,aAAa,KAAK,KAAK,KAAK,MAAM,WAAW,CAAC,IAAI,UAAU,aAAa,WAAW,CAAC,IAAI,UAAU,WAAW,GAAG,CAAC;AACrS,SAAK;AACL,aAAS,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG;AAC9C,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG;AAC7B,YAAI,MAAM,OAAO,IAAI,CAAC,CAAC,GAAG;AACxB,kBAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,IAAI;AAC9B,eAAK;AACL;AAAA,QACD;AACD,gBAAQ,CAAC,IAAI,OAAO,IAAI,CAAC;AACzB,gBAAQ,IAAI,CAAC,IAAI,OAAO,IAAI,IAAI,CAAC;AACjC,aAAK;AAAA,MACN;AAAA,IACF;AACD,YAAQ,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC;AACzD,WAAO,IAAI,qBAAqB,SAAS,QAAQ,mBAAKA,QAAM,mBAAK,eAAc,mBAAK,eAAc,mBAAK,OAAM;AAAA,EAC9G;AACH;AApLEA,QAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AAqBP;AAAA,mBAAc,WAAG;AACf,QAAM,UAAU,mBAAK,OAAM,SAAS,GAAG,CAAC;AACxC,QAAM,aAAa,mBAAK,OAAM,SAAS,IAAI,EAAE;AAC7C,QAAM,CAAC,GAAG,GAAG,OAAO,MAAM,IAAI,mBAAKA;AACnC,SAAO,EAAE,mBAAK,WAAU,QAAQ,CAAC,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,QAAQ,mBAAK,WAAU,QAAQ,CAAC,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,SAAS,mBAAK,WAAU,WAAW,CAAC,IAAI,QAAQ,CAAC,KAAK,IAAI,KAAK,QAAQ,mBAAK,WAAU,WAAW,CAAC,IAAI,QAAQ,CAAC,KAAK,IAAI,KAAK,MAAM;AACjQ;AA5BD,aAdI,eAcG,WAAY;AACnB,aAfI,eAeG,WAAY;AACnB,aAhBI,eAgBG,MAAO,4BAAa,aAAY,4BAAa;AAhBtD,IAAM,eAAN;AAsLA,MAAM,6BAA6B,QAAQ;AAAA,EAQzC,YAAY,SAAS,QAAQ,KAAK,aAAa,aAAa,OAAO;AACjE;AA+DF;AAQA;AAQA;AAvFA,uBAAAA,OAAA;AACA,8BAAQ;AACR,uBAAAE,eAAA;AACA,uBAAAC,SAAA;AACA,uBAAAC,UAAA;AACA,uBAAAC,eAAA;AACA;AAGE,uBAAK,UAAW;AAChB,uBAAKD,UAAU;AACf,uBAAKJ,OAAO;AACZ,uBAAKK,eAAe;AACpB,uBAAKH,eAAe;AACpB,uBAAKC,SAAS;AACd,0BAAK,kCAAL,WAAoB;AACpB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,IAAQ,mBAAK;AACT,aAAS,IAAI,GAAG,KAAK,QAAQ,QAAQ,IAAI,IAAI,KAAK,GAAG;AACnD,cAAQ,CAAC,KAAK,QAAQ,CAAC,IAAI,KAAK;AAChC,cAAQ,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,KAAK;AAAA,IACzC;AACD,aAAS,IAAI,GAAG,KAAK,OAAO,QAAQ,IAAI,IAAI,KAAK,GAAG;AAClD,aAAO,CAAC,KAAK,OAAO,CAAC,IAAI,KAAK;AAC9B,aAAO,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,IAAI,KAAK;AAAA,IACvC;AAAA,EACF;AAAA,EACD,YAAY;AACV,UAAM,SAAS,CAAC,IAAI,mBAAK,UAAS,CAAC,CAAC,IAAI,mBAAK,UAAS,CAAC,CAAC,EAAE;AAC1D,aAAS,IAAI,GAAG,KAAK,mBAAK,UAAS,QAAQ,IAAI,IAAI,KAAK,GAAG;AACzD,UAAI,MAAM,mBAAK,UAAS,CAAC,CAAC,GAAG;AAC3B,eAAO,KAAK,IAAI,mBAAK,UAAS,IAAI,CAAC,CAAC,IAAI,mBAAK,UAAS,IAAI,CAAC,CAAC,EAAE;AAC9D;AAAA,MACD;AACD,aAAO,KAAK,IAAI,mBAAK,UAAS,CAAC,CAAC,IAAI,mBAAK,UAAS,IAAI,CAAC,CAAC,IAAI,mBAAK,UAAS,IAAI,CAAC,CAAC,IAAI,mBAAK,UAAS,IAAI,CAAC,CAAC,IAAI,mBAAK,UAAS,IAAI,CAAC,CAAC,IAAI,mBAAK,UAAS,IAAI,CAAC,CAAC,EAAE;AAAA,IAC3J;AACD,WAAO,KAAK,GAAG;AACf,WAAO,OAAO,KAAK,GAAG;AAAA,EACvB;AAAA,EACD,UAAU,CAAC,KAAK,KAAK,KAAK,GAAG,GAAG,UAAU;AACxC,UAAM,QAAQ,MAAM;AACpB,UAAM,SAAS,MAAM;AACrB,QAAI;AACJ,QAAI;AACJ,YAAQ,UAAQ;AAAA,MACd,KAAK;AACH,kBAAU,sBAAK,sBAAL,WAAc,mBAAK,WAAU,KAAK,KAAK,OAAO,CAAC;AACzD,iBAAS,sBAAK,sBAAL,WAAc,mBAAKC,WAAS,KAAK,KAAK,OAAO,CAAC;AACvD;AAAA,MACF,KAAK;AACH,kBAAU,sBAAK,oCAAL,WAAqB,mBAAK,WAAU,KAAK,KAAK,OAAO;AAC/D,iBAAS,sBAAK,oCAAL,WAAqB,mBAAKA,WAAS,KAAK,KAAK,OAAO;AAC7D;AAAA,MACF,KAAK;AACH,kBAAU,sBAAK,sBAAL,WAAc,mBAAK,WAAU,KAAK,KAAK,CAAC,OAAO;AACzD,iBAAS,sBAAK,sBAAL,WAAc,mBAAKA,WAAS,KAAK,KAAK,CAAC,OAAO;AACvD;AAAA,MACF,KAAK;AACH,kBAAU,sBAAK,oCAAL,WAAqB,mBAAK,WAAU,KAAK,KAAK,CAAC,OAAO,CAAC;AACjE,iBAAS,sBAAK,oCAAL,WAAqB,mBAAKA,WAAS,KAAK,KAAK,CAAC,OAAO,CAAC;AAC/D;AAAA,IACH;AACD,WAAO;AAAA,MACL,SAAS,MAAM,KAAK,OAAO;AAAA,MAC3B,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC;AAAA,IACjC;AAAA,EACG;AAAA,EAoED,IAAI,MAAM;AACR,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,cAAc,WAAW,aAAa;AACpC,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,IAAQ,mBAAK;AACT,UAAM,CAAC,QAAQ,QAAQ,YAAY,WAAW,IAAI,mBAAKJ;AACvD,UAAM,KAAK,QAAQ;AACnB,UAAM,KAAK,SAAS;AACpB,UAAM,KAAK,IAAI,aAAa;AAC5B,UAAM,KAAK,IAAI,cAAc;AAC7B,UAAM,WAAW,IAAI,aAAa;AAAA,MAChC,GAAG,mBAAKI,UAAQ,CAAC,IAAI,KAAK;AAAA,MAC1B,GAAG,mBAAKA,UAAQ,CAAC,IAAI,KAAK;AAAA,IAC3B,GAAE,mBAAKJ,QAAM,mBAAKK,gBAAc,WAAW,mBAAKF,UAAQ,eAAe,mBAAKD,cAAY;AACzF,aAAS,IAAI,GAAG,IAAI,mBAAKE,UAAQ,QAAQ,KAAK,GAAG;AAC/C,eAAS,IAAI;AAAA,QACX,GAAG,mBAAKA,UAAQ,CAAC,IAAI,KAAK;AAAA,QAC1B,GAAG,mBAAKA,UAAQ,IAAI,CAAC,IAAI,KAAK;AAAA,MACtC,CAAO;AAAA,IACF;AACD,WAAO,SAAS;EACjB;AACH;AArKEJ,QAAA;AACA;AACAE,gBAAA;AACAC,UAAA;AACAC,WAAA;AACAC,gBAAA;AACA;AAiEA;AAAA,aAAQ,SAAC,KAAK,IAAI,IAAI,IAAI,IAAI;AAC5B,QAAM,OAAO,IAAI,aAAa,IAAI,MAAM;AACxC,WAAS,IAAI,GAAG,KAAK,IAAI,QAAQ,IAAI,IAAI,KAAK,GAAG;AAC/C,SAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;AACxB,SAAK,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI;AAAA,EACjC;AACD,SAAO;AACR;AACD;AAAA,oBAAe,SAAC,KAAK,IAAI,IAAI,IAAI,IAAI;AACnC,QAAM,OAAO,IAAI,aAAa,IAAI,MAAM;AACxC,WAAS,IAAI,GAAG,KAAK,IAAI,QAAQ,IAAI,IAAI,KAAK,GAAG;AAC/C,SAAK,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI;AAC5B,SAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;AAAA,EAC7B;AACD,SAAO;AACR;AACD;AAAA,mBAAc,SAAC,OAAO;AACpB,QAAM,UAAU,mBAAK;AACrB,MAAI,QAAQ,QAAQ,CAAC;AACrB,MAAI,QAAQ,QAAQ,CAAC;AACrB,MAAI,OAAO;AACX,MAAI,OAAO;AACX,MAAI,OAAO;AACX,MAAI,OAAO;AACX,MAAI,aAAa;AACjB,MAAI,aAAa;AACjB,QAAM,cAAc,QAAQ,KAAK,MAAM,KAAK;AAC5C,WAAS,IAAI,GAAG,KAAK,QAAQ,QAAQ,IAAI,IAAI,KAAK,GAAG;AACnD,QAAI,MAAM,QAAQ,CAAC,CAAC,GAAG;AACrB,aAAO,KAAK,IAAI,MAAM,QAAQ,IAAI,CAAC,CAAC;AACpC,aAAO,KAAK,IAAI,MAAM,QAAQ,IAAI,CAAC,CAAC;AACpC,aAAO,KAAK,IAAI,MAAM,QAAQ,IAAI,CAAC,CAAC;AACpC,aAAO,KAAK,IAAI,MAAM,QAAQ,IAAI,CAAC,CAAC;AACpC,UAAI,aAAa,QAAQ,IAAI,CAAC,GAAG;AAC/B,qBAAa,QAAQ,IAAI,CAAC;AAC1B,qBAAa,QAAQ,IAAI,CAAC;AAAA,MAC3B,WAAU,eAAe,QAAQ,IAAI,CAAC,GAAG;AACxC,qBAAa,YAAY,YAAY,QAAQ,IAAI,CAAC,CAAC;AAAA,MACpD;AAAA,IACT,OAAa;AACL,YAAM,OAAO,KAAK,kBAAkB,OAAO,OAAO,GAAG,QAAQ,MAAM,GAAG,IAAI,CAAC,CAAC;AAC5E,aAAO,KAAK,IAAI,MAAM,KAAK,CAAC,CAAC;AAC7B,aAAO,KAAK,IAAI,MAAM,KAAK,CAAC,CAAC;AAC7B,aAAO,KAAK,IAAI,MAAM,KAAK,CAAC,CAAC;AAC7B,aAAO,KAAK,IAAI,MAAM,KAAK,CAAC,CAAC;AAC7B,UAAI,aAAa,KAAK,CAAC,GAAG;AACxB,qBAAa,KAAK,CAAC;AACnB,qBAAa,KAAK,CAAC;AAAA,MACpB,WAAU,eAAe,KAAK,CAAC,GAAG;AACjC,qBAAa,YAAY,YAAY,KAAK,CAAC,CAAC;AAAA,MAC7C;AAAA,IACF;AACD,YAAQ,QAAQ,IAAI,CAAC;AACrB,YAAQ,QAAQ,IAAI,CAAC;AAAA,EACtB;AACD,QAAM,IAAI,OAAO,mBAAKH,gBACpB,IAAI,OAAO,mBAAKA,gBAChB,QAAQ,OAAO,OAAO,IAAI,mBAAKA,gBAC/B,SAAS,OAAO,OAAO,IAAI,mBAAKA;AAClC,qBAAK,OAAQ;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,CAAC,YAAY,UAAU;AAAA,EACxC;AACG;AAkCH,MAAM,eAAN,MAAM,aAAY;AAAA,EAgBhB,YAAY;AAAA,IACV,SAAS;AAAA,IACT,YAAY;AAAA,EAChB,GAAK;AAuCH;AAiCA;AAwDA,uBAAAI;AAGA;AAgBA,uBAAAC;AAUA,uBAAI;AA/KJ,uBAAAC,gBAAgB,sBAAKF,WAAAG,aAAS,KAAK,IAAI;AACvC,0CAAoB,sBAAKF,eAAAG,iBAAa,KAAK,IAAI;AAC/C,gCAAU;AACV,sCAAgB;AAChB;AACA,kCAAY;AACZ,iDAA2B;AAC3B,2CAAqB;AACrB,uBAAApC,UAAU;AACV;AACA,uBAAAN,aAAa;AACb;;AAQE,QAAI,QAAQ;AACV,yBAAK,oBAAqB;AAC1B,yBAAK,OAAQ,2BAA2B;AACxC,yBAAKM,UAAU;AAAA,IACrB,OAAW;AACL,yBAAK,oBAAqB;AAC1B,yBAAK,OAAQ,2BAA2B;AAAA,IACzC;AACD,uBAAKN,cAAa,iCAAQ,eAAc;AACxC,uBAAK,WAAY,mBAAKA,aAAW;AACjC,uBAAK,gBAAgB,iCAAQ,YAASH,MAAA,mBAAKG,iBAAL,gBAAAH,IAAiB,gBAAgB,SAAS,OAAO,UAAS;AAAA,EACjG;AAAA,EAlBD,WAAW,mBAAmB;AAC5B,WAAO,OAAO,MAAM,oBAAoB,IAAI,gBAAgB,CAAC,CAAC,CAAC,UAAU,YAAY,GAAG,aAAY,UAAU,yBAAyB,GAAG,CAAC,CAAC,KAAK,OAAO,GAAG,aAAY,UAAU,wBAAwB,GAAG,CAAC,CAAC,aAAa,cAAc,iBAAiB,gBAAgB,GAAG,aAAY,UAAU,WAAW,GAAG,CAAC,CAAC,WAAW,aAAa,eAAe,eAAe,GAAG,aAAY,UAAU,eAAe,GAAG,CAAC,CAAC,QAAQ,UAAU,GAAG,aAAY,UAAU,gBAAgB,GAAG,CAAC,CAAC,OAAO,SAAS,GAAG,aAAY,UAAU,UAAU,CAAC,CAAC,CAAC;AAAA,EAC7gB;AAAA,EAiBD,eAAe;AACb,UAAM,SAAS,mBAAK,SAAU,SAAS,cAAc,QAAQ;AAC7D,WAAO,YAAY;AACnB,WAAO,WAAW;AAClB,WAAO,aAAa,gBAAgB,iCAAiC;AACrE,WAAO,aAAa,iBAAiB,IAAI;AACzC,UAAM,SAAS,mBAAKG,aAAW;AAC/B,WAAO,iBAAiB,SAAS,sBAAK,gCAAc,KAAK,IAAI,GAAG;AAAA,MAC9D;AAAA,IACN,CAAK;AACD,WAAO,iBAAiB,WAAW,mBAAKwC,iBAAe;AAAA,MACrD;AAAA,IACN,CAAK;AACD,UAAM,SAAS,mBAAK,eAAgB,SAAS,cAAc,MAAM;AACjE,WAAO,YAAY;AACnB,WAAO,aAAa,eAAe,IAAI;AACvC,WAAO,MAAM,kBAAkB,mBAAK;AACpC,WAAO,OAAO,MAAM;AACpB,WAAO;AAAA,EACR;AAAA,EACD,qBAAqB;AACnB,UAAM,WAAW,mBAAK,WAAY,sBAAK,sCAAL;AAClC,aAAS,aAAa,oBAAoB,YAAY;AACtD,aAAS,aAAa,mBAAmB,2BAA2B;AACpE,WAAO;AAAA,EACR;AAAA,EA0CD,yBAAyB,OAAO;AAC9B,QAAI,MAAM,WAAW,mBAAK,UAAS;AACjC,4BAAK,gCAAL,WAAmB;AACnB;AAAA,IACD;AACD,UAAM,QAAQ,MAAM,OAAO,aAAa,YAAY;AACpD,QAAI,CAAC,OAAO;AACV;AAAA,IACD;AACD,0BAAK,8BAAL,WAAkB,OAAO;AAAA,EAC1B;AAAA,EACD,YAAY,OAAO;;AACjB,QAAI,CAAC,mBAAK,4CAAoB;AAC5B,4BAAK,gCAAL,WAAmB;AACnB;AAAA,IACD;AACD,QAAI,MAAM,WAAW,mBAAK,UAAS;AACjC,OAAA3C,MAAA,mBAAK,WAAU,eAAf,gBAAAA,IAA2B;AAC3B;AAAA,IACD;AACD,gBAAM,OAAO,gBAAb,mBAA0B;AAAA,EAC3B;AAAA,EACD,gBAAgB,OAAO;;AACrB,QAAI,MAAM,aAAWA,MAAA,mBAAK,eAAL,gBAAAA,IAAgB,eAAc,MAAM,WAAW,mBAAK,UAAS;AAChF,UAAI,mBAAK,4CAAoB;AAC3B,aAAK,0BAAyB;AAAA,MAC/B;AACD;AAAA,IACD;AACD,QAAI,CAAC,mBAAK,4CAAoB;AAC5B,4BAAK,gCAAL,WAAmB;AAAA,IACpB;AACD,gBAAM,OAAO,oBAAb,mBAA8B;AAAA,EAC/B;AAAA,EACD,iBAAiB,OAAO;;AACtB,QAAI,CAAC,mBAAK,4CAAoB;AAC5B,4BAAK,gCAAL,WAAmB;AACnB;AAAA,IACD;AACD,KAAAA,MAAA,mBAAK,WAAU,eAAf,gBAAAA,IAA2B;AAAA,EAC5B;AAAA,EACD,WAAW,OAAO;;AAChB,QAAI,CAAC,mBAAK,4CAAoB;AAC5B,4BAAK,gCAAL,WAAmB;AACnB;AAAA,IACD;AACD,KAAAA,MAAA,mBAAK,WAAU,cAAf,gBAAAA,IAA0B;AAAA,EAC3B;AAAA,EA0BD,eAAe;;AACb,KAAAA,MAAA,mBAAK,eAAL,gBAAAA,IAAgB,UAAU,IAAI;AAC9B,WAAO,oBAAoB,eAAe,mBAAK,kBAAiB;AAAA,EACjE;AAAA,EAID,4BAA4B;;AAC1B,QAAI,mBAAK,qBAAoB;AAC3B;AAAA,IACD;AACD,QAAI,CAAC,mBAAK,4CAAoB;AAC5B,OAAAA,MAAA,mBAAKS,cAAL,gBAAAT,IAAc;AACd;AAAA,IACD;AACD,SAAK,aAAY;AACjB,uBAAK,SAAQ,MAAM;AAAA,MACjB,eAAe;AAAA,MACf,cAAc,mBAAK;AAAA,IACzB,CAAK;AAAA,EACF;AAAA,EACD,YAAY,OAAO;AACjB,QAAI,mBAAK,gBAAe;AACtB,yBAAK,eAAc,MAAM,kBAAkB;AAAA,IAC5C;AACD,QAAI,CAAC,mBAAK,YAAW;AACnB;AAAA,IACD;AACD,UAAM,IAAI,mBAAKG,aAAW,gBAAgB,OAAM;AAChD,eAAW,SAAS,mBAAK,WAAU,UAAU;AAC3C,YAAM,aAAa,iBAAiB,EAAE,OAAO,UAAU,KAAK;AAAA,IAC7D;AAAA,EACF;AAAA,EACD,UAAU;;AACR,KAAAH,MAAA,mBAAK,aAAL,gBAAAA,IAAc;AACd,uBAAK,SAAU;AACf,uBAAK,eAAgB;AACrB,6BAAK,eAAL,mBAAgB;AAChB,uBAAK,WAAY;AAAA,EAClB;AACH;AAnNE2C,iBAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAlC,WAAA;AACA;AACAN,cAAA;AACA;AA8CA;AAAA,qBAAgB,WAAG;AACjB,QAAM,MAAM,SAAS,cAAc,KAAK;AACxC,QAAM,SAAS,mBAAKA,aAAW;AAC/B,MAAI,iBAAiB,eAAe,eAAe;AAAA,IACjD;AAAA,EACN,CAAK;AACD,MAAI,YAAY;AAChB,MAAI,OAAO;AACX,MAAI,aAAa,wBAAwB,KAAK;AAC9C,MAAI,aAAa,oBAAoB,UAAU;AAC/C,MAAI,aAAa,gBAAgB,mCAAmC;AACpE,aAAW,CAAC,MAAM,KAAK,KAAK,mBAAKA,aAAW,iBAAiB;AAC3D,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,WAAO,WAAW;AAClB,WAAO,OAAO;AACd,WAAO,aAAa,cAAc,KAAK;AACvC,WAAO,QAAQ;AACf,WAAO,aAAa,gBAAgB,4BAA4B,IAAI,EAAE;AACtE,UAAM,SAAS,SAAS,cAAc,MAAM;AAC5C,WAAO,OAAO,MAAM;AACpB,WAAO,YAAY;AACnB,WAAO,MAAM,kBAAkB;AAC/B,WAAO,aAAa,iBAAiB,UAAU,mBAAK,cAAa;AACjE,WAAO,iBAAiB,SAAS,sBAAK,8BAAa,KAAK,MAAM,KAAK,GAAG;AAAA,MACpE;AAAA,IACR,CAAO;AACD,QAAI,OAAO,MAAM;AAAA,EAClB;AACD,MAAI,iBAAiB,WAAW,mBAAKwC,iBAAe;AAAA,IAClD;AAAA,EACN,CAAK;AACD,SAAO;AACR;AACD;AAAA,iBAAY,SAAC,OAAO,OAAO;AACzB,QAAM,gBAAe;AACrB,qBAAK,WAAU,SAAS,gCAAgC;AAAA,IACtD,QAAQ;AAAA,IACR,MAAM,mBAAK;AAAA,IACX,OAAO;AAAA,EACb,CAAK;AACF;AAiDDF,YAAA;AAAAG,cAAQ,SAAC,OAAO;AACd,eAAY,iBAAiB,KAAK,MAAM,KAAK;AAC9C;AACD;AAAA,kBAAa,SAAC,OAAO;AACnB,MAAI,mBAAK,4CAAoB;AAC3B,SAAK,aAAY;AACjB;AAAA,EACD;AACD,qBAAK,0BAA2B,MAAM,WAAW;AACjD,SAAO,iBAAiB,eAAe,mBAAK,oBAAmB;AAAA,IAC7D,QAAQ,mBAAKzC,aAAW;AAAA,EAC9B,CAAK;AACD,MAAI,mBAAK,YAAW;AAClB,uBAAK,WAAU,UAAU,OAAO,QAAQ;AACxC;AAAA,EACD;AACD,QAAM,OAAO,mBAAK,WAAY,sBAAK,sCAAL;AAC9B,qBAAK,SAAQ,OAAO,IAAI;AACzB;AACDuC,gBAAA;AAAAG,kBAAY,SAAC,OAAO;;AAClB,OAAI7C,MAAA,mBAAK,eAAL,gBAAAA,IAAgB,SAAS,MAAM,SAAS;AAC1C;AAAA,EACD;AACD,OAAK,aAAY;AAClB;AAKG;AAAA,wBAAkB,WAAG;AACvB,SAAO,mBAAK,cAAa,CAAC,mBAAK,WAAU,UAAU,SAAS,QAAQ;AACrE;AAlLH,IAAM,cAAN;AA6NA,MAAM,mBAAN,MAAM,yBAAwB,iBAAiB;AAAA,EAwC7C,YAAY,QAAQ;AAClB,UAAM;AAAA,MACJ,GAAG;AAAA,MACH,MAAM;AAAA,IACZ,CAAK;AA0CH;AAgBA;AAiGA,uBAAA8C;AAqBA;AAwFA;AAWA;AASA;AAkGA;AAgBA;AAuCA;AAGA;AAyBA;AA5fA,oCAAc;AACd,sCAAgB;AAChB;AACA,oCAAc;AACd,uBAAAC,eAAe;AACf,uCAAiB;AACjB,mCAAa;AACb,qCAAe;AACf,sCAAgB;AAChB,2CAAqB;AACrB,uBAAAzC,MAAM;AACN,yCAAmB;AACnB,mCAAa;AACb;AACA,mCAAa;AACb,8BAAQ;AACR,uBAAA0C,aAAA;AACA,0CAAoB;AA2BlB,SAAK,QAAQ,OAAO,SAAS,iBAAgB;AAC7C,uBAAKA,aAAa,OAAO,aAAa,iBAAgB;AACtD,uBAAK,UAAW,OAAO,WAAW,iBAAgB;AAClD,uBAAK,QAAS,OAAO,SAAS;AAC9B,uBAAK,mBAAoB,OAAO,oBAAoB;AACpD,uBAAK,OAAQ,OAAO,QAAQ;AAC5B,SAAK,eAAe;AACpB,QAAI,OAAO,cAAc,IAAI;AAC3B,yBAAK,kBAAmB;AACxB,4BAAK,4CAAL,WAAyB;AACzB,4BAAK,oCAAL;AAAA,IACN,OAAW;AACL,yBAAK,aAAc,OAAO;AAC1B,yBAAK,eAAgB,OAAO;AAC5B,yBAAK,YAAa,OAAO;AACzB,yBAAK,cAAe,OAAO;AAC3B,4BAAK,oCAAL;AACA,4BAAK,oCAAL;AACA,WAAK,OAAO,KAAK,QAAQ;AAAA,IAC1B;AAAA,EACF;AAAA,EArCD,WAAW,mBAAmB;AAC5B,UAAM,QAAQ,iBAAgB;AAC9B,WAAO,OAAO,MAAM,oBAAoB,IAAI,gBAAgB,CAAC,CAAC,CAAC,aAAa,eAAe,GAAG,MAAM,YAAY;AAAA,MAC9G,MAAM,CAAC,CAAC;AAAA,IACd,CAAK,GAAG,CAAC,CAAC,cAAc,gBAAgB,GAAG,MAAM,YAAY;AAAA,MACvD,MAAM,CAAC,CAAC;AAAA,IACd,CAAK,GAAG,CAAC,CAAC,WAAW,aAAa,GAAG,MAAM,YAAY;AAAA,MACjD,MAAM,CAAC,CAAC;AAAA,IACd,CAAK,GAAG,CAAC,CAAC,aAAa,eAAe,GAAG,MAAM,YAAY;AAAA,MACrD,MAAM,CAAC,CAAC;AAAA,IACd,CAAK,CAAC,CAAC,CAAC;AAAA,EACL;AAAA,EA2BD,IAAI,uBAAuB;AACzB,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,MAAM,mBAAK,oBAAmB,mBAAmB;AAAA,MACjD,OAAO,KAAK,WAAW,oBAAoB,IAAI,KAAK,KAAK;AAAA,MACzD,WAAW,mBAAKA;AAAA,MAChB,kBAAkB,mBAAK;AAAA,IAC7B;AAAA,EACG;AAAA,EACD,IAAI,qBAAqB;AACvB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO,KAAK,WAAW,oBAAoB,IAAI,KAAK,KAAK;AAAA,IAC/D;AAAA,EACG;AAAA,EACD,OAAO,0BAA0B,MAAM;AACrC,WAAO;AAAA,MACL,gBAAgB,KAAK,IAAI,OAAO,EAAE;AAAA,IACxC;AAAA,EACG;AAAA,EAgFD,OAAO,WAAW,MAAM,WAAW;;AACjC,qBAAiB,WAAW,MAAM,SAAS;AAC3C,qBAAgB,kBAAhB,iBAAgB,kBAAkBhD,MAAA,UAAU,oBAAV,gBAAAA,IAA2B,SAAS,OAAO,UAAS;AAAA,EACvF;AAAA,EACD,OAAO,oBAAoB,MAAM,OAAO;AACtC,YAAQ,MAAI;AAAA,MACV,KAAK,2BAA2B;AAC9B,yBAAgB,gBAAgB;AAChC;AAAA,MACF,KAAK,2BAA2B;AAC9B,yBAAgB,oBAAoB;AACpC;AAAA,IACH;AAAA,EACF;AAAA,EACD,gBAAgB,GAAG,GAAG;AAAA,EAAE;AAAA,EACxB,IAAI,kBAAkB;AACpB,WAAO,mBAAK;AAAA,EACb;AAAA,EACD,aAAa,MAAM,OAAO;AACxB,YAAQ,MAAI;AAAA,MACV,KAAK,2BAA2B;AAC9B,8BAAK8C,eAAAG,iBAAL,WAAkB;AAClB;AAAA,MACF,KAAK,2BAA2B;AAC9B,8BAAK,sCAAL,WAAsB;AACtB;AAAA,IACH;AAAA,EACF;AAAA,EACD,WAAW,4BAA4B;AACrC,WAAO,CAAC,CAAC,2BAA2B,yBAAyB,iBAAgB,aAAa,GAAG,CAAC,2BAA2B,qBAAqB,iBAAgB,iBAAiB,CAAC;AAAA,EACjL;AAAA,EACD,IAAI,qBAAqB;AACvB,WAAO,CAAC,CAAC,2BAA2B,iBAAiB,KAAK,SAAS,iBAAgB,aAAa,GAAG,CAAC,2BAA2B,qBAAqB,mBAAKD,gBAAc,iBAAgB,iBAAiB,GAAG,CAAC,2BAA2B,gBAAgB,mBAAK,iBAAgB,CAAC;AAAA,EAC9Q;AAAA,EA0CD,MAAM,iBAAiB;AACrB,UAAM,UAAU,MAAM,MAAM;AAC5B,QAAI,CAAC,SAAS;AACZ,aAAO;AAAA,IACR;AACD,QAAI,KAAK,WAAW,iBAAiB;AACnC,yBAAKD,eAAe,IAAI,YAAY;AAAA,QAClC,QAAQ;AAAA,MAChB,CAAO;AACD,cAAQ,eAAe,mBAAKA,cAAY;AAAA,IACzC;AACD,WAAO;AAAA,EACR;AAAA,EACD,iBAAiB;AACf,UAAM,eAAc;AACpB,SAAK,IAAI,UAAU,OAAO,YAAY,IAAI;AAAA,EAC3C;AAAA,EACD,gBAAgB;AACd,UAAM,cAAa;AACnB,SAAK,IAAI,UAAU,OAAO,YAAY,KAAK;AAAA,EAC5C;AAAA,EACD,oBAAoB;AAClB,WAAO,MAAM,kBAAkB,sBAAK,8BAAL,UAAmB;AAAA,EACnD;AAAA,EACD,qBAAqB;AACnB,WAAO,CAAC,GAAG,CAAC;AAAA,EACb;AAAA,EACD,QAAQ,IAAI,IAAI;AACd,WAAO,MAAM,QAAQ,IAAI,IAAI,sBAAK,8BAAL,UAAmB;AAAA,EACjD;AAAA,EACD,YAAY;AACV,SAAK,OAAO,kBAAkB,IAAI;AAClC,SAAK,IAAI;EACV;AAAA,EACD,SAAS;AACP,0BAAK,oCAAL;AACA,SAAK,iBAAiB;AAAA,MACpB,QAAQ;AAAA,IACd,CAAK;AACD,UAAM,OAAM;AAAA,EACb;AAAA,EACD,UAAU;AACR,QAAI,CAAC,KAAK,QAAQ;AAChB;AAAA,IACD;AACD,UAAM,QAAO;AACb,QAAI,KAAK,QAAQ,MAAM;AACrB;AAAA,IACD;AACD,0BAAK,oCAAL;AACA,QAAI,CAAC,KAAK,iBAAiB;AACzB,WAAK,OAAO,IAAI,IAAI;AAAA,IACrB;AAAA,EACF;AAAA,EACD,UAAU,QAAQ;;AAChB,QAAI,iBAAiB;AACrB,QAAI,KAAK,UAAU,CAAC,QAAQ;AAC1B,4BAAK,oCAAL;AAAA,IACD,WAAU,QAAQ;AACjB,4BAAK,oCAAL,WAAqB;AACrB,uBAAiB,CAAC,KAAK,YAAU/C,MAAA,KAAK,QAAL,gBAAAA,IAAU,UAAU,SAAS;AAAA,IAC/D;AACD,UAAM,UAAU,MAAM;AACtB,SAAK,KAAK,KAAK,UAAU;AACzB,QAAI,gBAAgB;AAClB,WAAK,OAAM;AAAA,IACZ;AAAA,EACF;AAAA,EAsED,OAAO,OAAO;;AACZ,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,KAAK;AACT,QAAI;AACJ,QAAI,mBAAK,mBAAkB;AACzB,eAAS,QAAQ,KAAK,WAAW,OAAO;AACxC,YAAM,gBAAAA,MAAA,kBAAgB,4BAAhB,KAAAA,KAA4B,mBAAK,oBAAmB,KAAK;AAAA,IACrE,OAAW;AACL,YAAM,uCAAgB,4BAAhB,SAA4B,MAAM;AAAA,IACzC;AACD,cAAU,OAAO,mBAAKM,OAAK,KAAK;AAChC,cAAU,OAAO,mBAAK,aAAY,KAAK;AACvC,cAAU,UAAU,mBAAKA,OAAK,GAAG;AACjC,cAAU,UAAU,mBAAK,aAAY,uCAAgB,4BAAhB,SAA4B,mBAAK,gBAAe,KAAK,MAAM;AAAA,EACjG;AAAA,EACD,SAAS;AACP,QAAI,KAAK,KAAK;AACZ,aAAO,KAAK;AAAA,IACb;AACD,UAAM,MAAM,MAAM;AAClB,QAAI,mBAAK,QAAO;AACd,UAAI,aAAa,cAAc,mBAAK,MAAK;AACzC,UAAI,aAAa,QAAQ,MAAM;AAAA,IAChC;AACD,QAAI,mBAAK,mBAAkB;AACzB,UAAI,UAAU,IAAI,MAAM;AAAA,IAC9B,OAAW;AACL,WAAK,IAAI,iBAAiB,WAAW,sBAAK,sBAAS,KAAK,IAAI,GAAG;AAAA,QAC7D,QAAQ,KAAK,WAAW;AAAA,MAChC,CAAO;AAAA,IACF;AACD,UAAM,eAAe,mBAAK,eAAgB,SAAS,cAAc,KAAK;AACtE,QAAI,OAAO,YAAY;AACvB,iBAAa,aAAa,eAAe,MAAM;AAC/C,iBAAa,YAAY;AACzB,iBAAa,MAAM,WAAW,mBAAK;AACnC,UAAM,CAAC,aAAa,YAAY,IAAI,KAAK;AACzC,SAAK,QAAQ,KAAK,QAAQ,aAAa,KAAK,SAAS,YAAY;AACjE,eAAW,MAAM,mBAAK,gBAAe,CAAC,eAAe,cAAc,CAAC;AACpE,SAAK,cAAa;AAClB,WAAO;AAAA,EACR;AAAA,EACD,cAAc;AACZ,SAAK,OAAO,UAAU,SAAS,mBAAK,aAAY,SAAS;AAAA,EAC1D;AAAA,EACD,eAAe;AACb,SAAK,OAAO,UAAU,YAAY,mBAAK,aAAY,SAAS;AAAA,EAC7D;AAAA,EAID,WAAW,WAAW;AACpB,SAAK,OAAO,SAAS,IAAI;AACzB,YAAQ,WAAS;AAAA,MACf,KAAK;AAAA,MACL,KAAK;AACH,8BAAK,wBAAL,WAAe;AACf;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,8BAAK,wBAAL,WAAe;AACf;AAAA,IACH;AAAA,EACF;AAAA,EAYD,SAAS;;AACP,UAAM,OAAM;AACZ,QAAI,CAAC,mBAAK,aAAY;AACpB;AAAA,IACD;AACD,KAAAN,MAAA,KAAK,WAAL,gBAAAA,IAAa,UAAU,YAAY,mBAAK,aAAY;AACpD,eAAK,WAAL,mBAAa,UAAU,SAAS,mBAAK,aAAY;AAAA,EAClD;AAAA,EACD,WAAW;;AACT,UAAM,SAAQ;AACd,QAAI,CAAC,mBAAK,aAAY;AACpB;AAAA,IACD;AACD,KAAAA,MAAA,KAAK,WAAL,gBAAAA,IAAa,UAAU,YAAY,mBAAK,aAAY;AACpD,QAAI,CAAC,mBAAK,mBAAkB;AAC1B,4BAAK,wBAAL,WAAe;AAAA,IAChB;AAAA,EACF;AAAA,EACD,IAAI,mBAAmB;AACrB,WAAO,CAAC,mBAAK;AAAA,EACd;AAAA,EACD,KAAK,UAAU,KAAK,YAAY;AAC9B,UAAM,KAAK,OAAO;AAClB,QAAI,KAAK,QAAQ;AACf,WAAK,OAAO,UAAU,KAAK,mBAAKM,OAAK,OAAO;AAC5C,WAAK,OAAO,UAAU,KAAK,mBAAK,aAAY,OAAO;AAAA,IACpD;AAAA,EACF;AAAA,EAgCD,OAAO,kBAAkB,QAAQ,OAAO;AAAA,IACtC,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACJ,GAAK;AACD,UAAM;AAAA,MACJ,GAAG;AAAA,MACH,GAAG;AAAA,MACH,OAAO;AAAA,MACP,QAAQ;AAAA,IACd,IAAQ,UAAU;AACd,UAAM,KAAK,IAAI;AACf,UAAM,SAAS,OAAO,eAAe,EAAE;AACvC,UAAM,cAAc,OAAK;AACvB,QAAE,eAAc;AAChB,QAAE,gBAAe;AAAA,IACvB;AACI,UAAM,oBAAoB,OAAK;AAC7B,SAAG,MAAK;AACR,4BAAK,gCAAL,WAAmB,QAAQ;AAAA,IACjC;AACI,WAAO,iBAAiB,QAAQ,mBAAmB;AAAA,MACjD;AAAA,IACN,CAAK;AACD,WAAO,iBAAiB,aAAa,mBAAmB;AAAA,MACtD;AAAA,IACN,CAAK;AACD,WAAO,iBAAiB,eAAe,aAAa;AAAA,MAClD,SAAS;AAAA,MACT,SAAS;AAAA,MACT;AAAA,IACN,CAAK;AACD,WAAO,iBAAiB,eAAe,eAAe;AAAA,MACpD;AAAA,IACN,CAAK;AACD,cAAU,iBAAiB,eAAe,sBAAK,kCAAe,KAAK,MAAM,MAAM,GAAG;AAAA,MAChF;AAAA,IACN,CAAK;AACD,SAAK,iBAAiB,IAAI,aAAa;AAAA,MACrC;AAAA,MACA;AAAA,IACD,GAAE,CAAC,QAAQ,QAAQ,aAAa,YAAY,GAAG,OAAO,OAAO,KAAK,oBAAoB,GAAG,OAAO,IAAK;AACtG,KAAC;AAAA,MACC,IAAI,KAAK;AAAA,MACT,YAAY,KAAK;AAAA,IAClB,IAAG,OAAO,UAAU,UAAU,KAAK,gBAAgB,KAAK,eAAe,KAAK,iBAAiB,IAAI;AAAA,EACnG;AAAA,EAqBD,OAAO,YAAY,MAAM,QAAQ,WAAW;;AAC1C,UAAM,SAAS,MAAM,YAAY,MAAM,QAAQ,SAAS;AACxD,UAAM;AAAA,MACJ,MAAM,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,MACzB;AAAA,MACA;AAAA,IACD,IAAG;AACJ,WAAO,QAAQ,KAAK,aAAa,GAAG,KAAK;AACzC,yBAAO,UAAW,KAAK;AACvB,UAAM,CAAC,WAAW,UAAU,IAAI,OAAO;AACvC,WAAO,SAAS,MAAM,OAAO;AAC7B,WAAO,UAAU,MAAM,OAAO;AAC9B,UAAM,QAAQ,qBAAO,QAAS;AAC9B,aAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK,GAAG;AAC7C,YAAM,KAAK;AAAA,QACT,IAAI,WAAW,CAAC,IAAI,OAAO;AAAA,QAC3B,IAAI,OAAO,IAAI,WAAW,IAAI,CAAC,MAAM;AAAA,QACrC,QAAQ,WAAW,IAAI,CAAC,IAAI,WAAW,CAAC,KAAK;AAAA,QAC7C,SAAS,WAAW,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,KAAK;AAAA,MAC1D,CAAO;AAAA,IACF;AACD,oBAAAN,MAAA,QAAO,oCAAP,KAAAA;AACA,WAAO;AAAA,EACR;AAAA,EACD,UAAU,eAAe,OAAO;AAC9B,QAAI,KAAK,QAAS,KAAI,cAAc;AAClC,aAAO;AAAA,IACR;AACD,UAAM,OAAO,KAAK,QAAQ,GAAG,CAAC;AAC9B,UAAM,QAAQ,iBAAiB,cAAc,QAAQ,KAAK,KAAK;AAC/D,WAAO;AAAA,MACL,gBAAgB,qBAAqB;AAAA,MACrC;AAAA,MACA,SAAS,mBAAK;AAAA,MACd,WAAW,mBAAKgD;AAAA,MAChB,YAAY,sBAAK,oCAAL;AAAA,MACZ,UAAU,sBAAK,0CAAL,WAAwB;AAAA,MAClC,WAAW,KAAK;AAAA,MAChB;AAAA,MACA,UAAU,sBAAK,8BAAL;AAAA,MACV,oBAAoB,KAAK;AAAA,IAC/B;AAAA,EACG;AAAA,EACD,OAAO,0BAA0B;AAC/B,WAAO;AAAA,EACR;AACH;AAhnBE;AACA;AACA;AACA;AACAD,gBAAA;AACA;AACA;AACA;AACA;AACA;AACAzC,OAAA;AACA;AACA;AACA;AACA;AACA;AACA0C,cAAA;AACA;AAoEA;AAAA,oBAAe,WAAG;AAChB,QAAM,WAAW,IAAI,SAAS,mBAAK,SAAQ,IAAK;AAChD,qBAAK,oBAAqB,SAAS;AACnC,GAAC;AAAA,IACC,GAAG,KAAK;AAAA,IACR,GAAG,KAAK;AAAA,IACR,OAAO,KAAK;AAAA,IACZ,QAAQ,KAAK;AAAA,EACnB,IAAQ,mBAAK,oBAAmB;AAC5B,QAAM,qBAAqB,IAAI,SAAS,mBAAK,SAAQ,OAAQ,MAAO,KAAK,WAAW,cAAc,KAAK;AACvG,qBAAK,gBAAiB,mBAAmB;AACzC,QAAM;AAAA,IACJ;AAAA,EACN,IAAQ,mBAAK,gBAAe;AACxB,qBAAK,YAAa,EAAE,UAAU,CAAC,IAAI,KAAK,KAAK,KAAK,QAAQ,UAAU,CAAC,IAAI,KAAK,KAAK,KAAK,MAAM;AAC/F;AACD;AAAA,wBAAmB,SAAC;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AACJ,GAAK;;AACD,qBAAK,oBAAqB;AAC1B,QAAM,iBAAiB;AACvB,qBAAK,gBAAiB,kBAAkB,cAAc,mBAAKA,eAAa,IAAI,gBAAgB,KAAM;AAClG,MAAI,eAAe,GAAG;AACpB,uBAAK1C,MAAM;AACX,uBAAK,aAAc;AACnB,SAAK,OAAO,UAAU,aAAa,aAAa,iBAAiB;AACjE,uBAAK,YAAa,KAAK,OAAO,UAAU,iBAAiB,mBAAK,eAAc;AAAA,EAClF,WAAe,KAAK,QAAQ;AACtB,UAAM,QAAQ,KAAK,OAAO,SAAS;AACnC,SAAK,OAAO,UAAU,WAAW,mBAAKA,OAAK,iBAAiB;AAC5D,SAAK,OAAO,UAAU,UAAU,mBAAKA,OAAK,gBAAAN,MAAA,kBAAgB,4BAAhB,KAAAA,KAA4B,mBAAK,oBAAmB,MAAM,QAAQ,KAAK,WAAW,OAAO,IAAI;AACvI,SAAK,OAAO,UAAU,WAAW,mBAAK,aAAY,mBAAK,eAAc;AACrE,SAAK,OAAO,UAAU,UAAU,mBAAK,aAAY,uCAAgB,4BAAhB,SAA4B,mBAAK,gBAAe,KAAK,MAAM;AAAA,EAC7G;AACD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACN,IAAQ,kBAAkB;AACtB,UAAQ,KAAK,UAAQ;AAAA,IACnB,KAAK;AACH,WAAK,IAAI;AACT,WAAK,IAAI;AACT,WAAK,QAAQ;AACb,WAAK,SAAS;AACd;AAAA,IACF,KAAK,IACH;AACE,YAAM,CAAC,WAAW,UAAU,IAAI,KAAK;AACrC,WAAK,IAAI;AACT,WAAK,IAAI,IAAI;AACb,WAAK,QAAQ,QAAQ,aAAa;AAClC,WAAK,SAAS,SAAS,YAAY;AACnC;AAAA,IACD;AAAA,IACH,KAAK;AACH,WAAK,IAAI,IAAI;AACb,WAAK,IAAI,IAAI;AACb,WAAK,QAAQ;AACb,WAAK,SAAS;AACd;AAAA,IACF,KAAK,KACH;AACE,YAAM,CAAC,WAAW,UAAU,IAAI,KAAK;AACrC,WAAK,IAAI,IAAI;AACb,WAAK,IAAI;AACT,WAAK,QAAQ,QAAQ,aAAa;AAClC,WAAK,SAAS,SAAS,YAAY;AACnC;AAAA,IACD;AAAA,EACJ;AACD,QAAM;AAAA,IACJ;AAAA,EACN,IAAQ,mBAAK,gBAAe;AACxB,qBAAK,YAAa,EAAE,UAAU,CAAC,IAAI,KAAK,QAAQ,UAAU,CAAC,IAAI,KAAK,MAAM;AAC3E;AAmCD8C,gBAAA;AAAAG,kBAAY,SAAC,OAAO;AAClB,QAAM,WAAW,SAAO;;AACtB,SAAK,QAAQ;AACb,KAAAjD,MAAA,KAAK,WAAL,gBAAAA,IAAa,UAAU,YAAY,mBAAKM,OAAK;AAC7C,6BAAKyC,mBAAL,mBAAmB,YAAY;AAAA,EACrC;AACI,QAAM,aAAa,KAAK;AACxB,OAAK,YAAY;AAAA,IACf,KAAK,SAAS,KAAK,MAAM,KAAK;AAAA,IAC9B,MAAM,SAAS,KAAK,MAAM,UAAU;AAAA,IACpC,MAAM,KAAK,WAAW,SAAS,KAAK,KAAK,YAAY,IAAI;AAAA,IACzD,UAAU;AAAA,IACV,MAAM,2BAA2B;AAAA,IACjC,qBAAqB;AAAA,IACrB,UAAU;AAAA,EAChB,CAAK;AACD,OAAK,iBAAiB;AAAA,IACpB,QAAQ;AAAA,IACR,OAAO,KAAK,WAAW,oBAAoB,IAAI,KAAK;AAAA,EACrD,GAAE,IAAI;AACR;AACD;AAAA,qBAAgB,SAAC,WAAW;AAC1B,QAAM,iBAAiB,mBAAKC;AAC5B,QAAM,eAAe,QAAM;AACzB,uBAAKA,aAAa;AAClB,0BAAK,sCAAL,WAAsB;AAAA,EAC5B;AACI,OAAK,YAAY;AAAA,IACf,KAAK,aAAa,KAAK,MAAM,SAAS;AAAA,IACtC,MAAM,aAAa,KAAK,MAAM,cAAc;AAAA,IAC5C,MAAM,KAAK,WAAW,SAAS,KAAK,KAAK,YAAY,IAAI;AAAA,IACzD,UAAU;AAAA,IACV,MAAM,2BAA2B;AAAA,IACjC,qBAAqB;AAAA,IACrB,UAAU;AAAA,EAChB,CAAK;AACD,OAAK,iBAAiB;AAAA,IACpB,QAAQ;AAAA,IACR;AAAA,EACD,GAAE,IAAI;AACR;AAqED;AAAA,qBAAgB,SAAC,WAAW;AAC1B,MAAI,CAAC,mBAAK,mBAAkB;AAC1B;AAAA,EACD;AACD,wBAAK,4CAAL,WAAyB;AAAA,IACvB,mBAAmB,mBAAK,oBAAmB,cAAc,YAAY,CAAC;AAAA,EAC5E;AACI,OAAK,kBAAiB;AACtB,QAAM,CAAC,aAAa,YAAY,IAAI,KAAK;AACzC,OAAK,QAAQ,KAAK,QAAQ,aAAa,KAAK,SAAS,YAAY;AAClE;AACD;AAAA,oBAAe,WAAG;AAChB,MAAI,mBAAK1C,UAAQ,QAAQ,CAAC,KAAK,QAAQ;AACrC;AAAA,EACD;AACD,OAAK,OAAO,UAAU,OAAO,mBAAKA,KAAG;AACrC,qBAAKA,MAAM;AACX,OAAK,OAAO,UAAU,OAAO,mBAAK,WAAU;AAC5C,qBAAK,YAAa;AACnB;AACD;AAAA,oBAAe,SAAC,SAAS,KAAK,QAAQ;AACpC,MAAI,mBAAKA,UAAQ,MAAM;AACrB;AAAA,EACD;AACD,GAAC;AAAA,IACC,IAAI,uBAAAA,MAAA;AAAA,IACJ,YAAY;AAAA,EAClB,IAAQ,OAAO,UAAU,UAAU,mBAAK,qBAAoB,KAAK,OAAO,mBAAK,SAAQ;AACjF,qBAAK,YAAa,OAAO,UAAU,iBAAiB,mBAAK,eAAc;AACvE,MAAI,mBAAK,gBAAe;AACtB,uBAAK,eAAc,MAAM,WAAW,mBAAK;AAAA,EAC1C;AACF;AACM;AAAA,gBAAW,SAAC;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAE,OAAO;AACR,UAAQ,OAAK;AAAA,IACX,KAAK;AACH,aAAO;AAAA,QACL,GAAG,IAAI,IAAI;AAAA,QACX,GAAG;AAAA,QACH,OAAO;AAAA,QACP,QAAQ;AAAA,MAClB;AAAA,IACM,KAAK;AACH,aAAO;AAAA,QACL,GAAG,IAAI,IAAI;AAAA,QACX,GAAG,IAAI,IAAI;AAAA,QACX;AAAA,QACA;AAAA,MACV;AAAA,IACM,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG,IAAI,IAAI;AAAA,QACX,OAAO;AAAA,QACP,QAAQ;AAAA,MAClB;AAAA,EACK;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACN;AACG;AAkDD;AAAA,aAAQ,SAAC,OAAO;AACd,mBAAgB,iBAAiB,KAAK,MAAM,KAAK;AAClD;AAcD;AAAA,cAAS,SAAC,OAAO;AACf,MAAI,CAAC,mBAAK,cAAa;AACrB;AAAA,EACD;AACD,QAAM,YAAY,OAAO;AACzB,MAAI,OAAO;AACT,cAAU,YAAY,mBAAK,cAAa,mBAAK,cAAa;AAAA,EAChE,OAAW;AACL,cAAU,YAAY,mBAAK,aAAY,mBAAK,aAAY;AAAA,EACzD;AACF;AA6BD;AAAA,iBAAY,WAAG;AACb,SAAO,mBAAK,oBAAmB,KAAK,WAAW;AAChD;AACD;AAAA,oBAAe,WAAG;AAChB,MAAI,mBAAK,mBAAkB;AACzB,WAAO;AAAA,EACR;AACD,QAAM,CAAC,WAAW,UAAU,IAAI,KAAK;AACrC,QAAM,CAAC,OAAO,KAAK,IAAI,KAAK;AAC5B,QAAM,QAAQ,mBAAK;AACnB,QAAM,aAAa,IAAI,aAAa,MAAM,SAAS,CAAC;AACpD,MAAI,IAAI;AACR,aAAW;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,KAAI,OAAO;AACV,UAAM,KAAK,IAAI,YAAY;AAC3B,UAAM,MAAM,IAAI,IAAI,UAAU,aAAa;AAC3C,eAAW,CAAC,IAAI,WAAW,IAAI,CAAC,IAAI;AACpC,eAAW,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,IAAI;AACxC,eAAW,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,IAAI,KAAK,QAAQ;AACrD,eAAW,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,IAAI,KAAK,SAAS;AACtD,SAAK;AAAA,EACN;AACD,SAAO;AACR;AACD;AAAA,uBAAkB,SAAC,MAAM;AACvB,SAAO,mBAAK,oBAAmB,UAAU,MAAM,sBAAK,8BAAL,UAAmB;AACnE;AAgDM;AAAA,mBAAc,SAAC,QAAQ,OAAO;AACnC,MAAI,KAAK,eAAe,IAAI,KAAK,GAAG;AAClC,WAAO,UAAU,WAAW,KAAK,kBAAkB,KAAK,cAAc;AAAA,EACvE;AACF;AACM;AAAA,kBAAa,SAAC,QAAQ,OAAO;AAClC,MAAI,CAAC,KAAK,eAAe,WAAW;AAClC,WAAO,sBAAsB,OAAO,OAAO;AAAA,MACzC,aAAa,KAAK;AAAA,MAClB,mBAAmB,KAAK,eAAe,YAAa;AAAA,MACpD,YAAY,KAAK;AAAA,MACjB,kBAAkB;AAAA,IAC1B,CAAO;AAAA,EACP,OAAW;AACL,WAAO,UAAU,oBAAoB,KAAK,gBAAgB;AAAA,EAC3D;AACD,OAAK,mBAAmB;AACxB,OAAK,iBAAiB;AACtB,OAAK,uBAAuB;AAC7B;AA7OD,aArVI,kBAqVG;AA0NP,aA/iBI,kBA+iBG;AAKP,aApjBI,kBAojBG;AAjiBP,cAnBI,kBAmBG,iBAAgB;AACvB,cApBI,kBAoBG,mBAAkB;AACzB,cArBI,kBAqBG,qBAAoB;AAC3B,cAtBI,kBAsBG;AACP,cAvBI,kBAuBG,SAAQ;AACf,cAxBI,kBAwBG,eAAc,qBAAqB;AAC1C,cAzBI,kBAyBG,oBAAmB;AAC1B,cA1BI,kBA0BG,kBAAiB;AACxB,cA3BI,kBA2BG,wBAAuB;AA3BhC,IAAM,kBAAN;AAynBA,MAAM,aAAN,MAAM,mBAAkB,iBAAiB;AAAA,EAmBvC,YAAY,QAAQ;AAClB,UAAM;AAAA,MACJ,GAAG;AAAA,MACH,MAAM;AAAA,IACZ,CAAK;AAiDH,uBAAA4C;AAgBA,uBAAAJ;AAgBA;AA0FA;AAgBA;AAeA;AAmCA;AAoBA;AAOA;AA2CA;AAwBA;AAOA;AAyBA;AA0CA;AAUA;AA4BA;AAeA;AAQA;AAiDA;AA8BA;AAMA;AAmFA;AA0CA;AAgBA;AAGA;AA7sBA,oCAAc;AACd,mCAAa;AACb,oDAA8B;AAC9B,uCAAiB,IAAI;AACrB,wCAAkB;AAClB,mCAAa;AACb,4CAAsB;AACtB,6CAAuB;AACvB,kCAAY;AACZ,uCAAiB;AACjB,mCAAa;AACb,oCAAc;AACd,8CAAwB;AAWtB,SAAK,QAAQ,OAAO,SAAS;AAC7B,SAAK,YAAY,OAAO,aAAa;AACrC,SAAK,UAAU,OAAO,WAAW;AACjC,SAAK,QAAQ;AACb,SAAK,eAAe;AACpB,SAAK,cAAc;AACnB,SAAK,cAAc;AACnB,SAAK,cAAc;AACnB,SAAK,eAAe,KAAK,eAAe;AACxC,SAAK,IAAI;AACT,SAAK,IAAI;AACT,SAAK,uBAAuB;AAAA,EAC7B;AAAA,EACD,OAAO,WAAW,MAAM,WAAW;AACjC,qBAAiB,WAAW,MAAM,SAAS;AAAA,EAC5C;AAAA,EACD,OAAO,oBAAoB,MAAM,OAAO;AACtC,YAAQ,MAAI;AAAA,MACV,KAAK,2BAA2B;AAC9B,mBAAU,oBAAoB;AAC9B;AAAA,MACF,KAAK,2BAA2B;AAC9B,mBAAU,gBAAgB;AAC1B;AAAA,MACF,KAAK,2BAA2B;AAC9B,mBAAU,kBAAkB,QAAQ;AACpC;AAAA,IACH;AAAA,EACF;AAAA,EACD,aAAa,MAAM,OAAO;AACxB,YAAQ,MAAI;AAAA,MACV,KAAK,2BAA2B;AAC9B,8BAAKI,mBAAAC,qBAAL,WAAsB;AACtB;AAAA,MACF,KAAK,2BAA2B;AAC9B,8BAAKL,eAAAG,iBAAL,WAAkB;AAClB;AAAA,MACF,KAAK,2BAA2B;AAC9B,8BAAK,kCAAL,WAAoB;AACpB;AAAA,IACH;AAAA,EACF;AAAA,EACD,WAAW,4BAA4B;AACrC,WAAO,CAAC,CAAC,2BAA2B,eAAe,WAAU,iBAAiB,GAAG,CAAC,2BAA2B,WAAW,WAAU,iBAAiB,iBAAiB,iBAAiB,GAAG,CAAC,2BAA2B,aAAa,KAAK,MAAM,WAAU,kBAAkB,GAAG,CAAC,CAAC;AAAA,EAC9Q;AAAA,EACD,IAAI,qBAAqB;AACvB,WAAO,CAAC,CAAC,2BAA2B,eAAe,KAAK,aAAa,WAAU,iBAAiB,GAAG,CAAC,2BAA2B,WAAW,KAAK,SAAS,WAAU,iBAAiB,iBAAiB,iBAAiB,GAAG,CAAC,2BAA2B,aAAa,KAAK,MAAM,OAAO,KAAK,WAAW,WAAU,gBAAgB,CAAC,CAAC;AAAA,EAChU;AAAA,EAkDD,UAAU;AACR,QAAI,CAAC,KAAK,QAAQ;AAChB;AAAA,IACD;AACD,UAAM,QAAO;AACb,QAAI,KAAK,QAAQ,MAAM;AACrB;AAAA,IACD;AACD,QAAI,CAAC,KAAK,QAAQ;AAChB,4BAAK,gCAAL;AACA,4BAAK,oCAAL;AAAA,IACD;AACD,QAAI,CAAC,KAAK,iBAAiB;AACzB,WAAK,OAAO,IAAI,IAAI;AACpB,4BAAK,kCAAL;AAAA,IACD;AACD,0BAAK,gCAAL;AAAA,EACD;AAAA,EACD,SAAS;;AACP,QAAI,KAAK,WAAW,MAAM;AACxB;AAAA,IACD;AACD,QAAI,CAAC,KAAK,WAAW;AACnB,WAAK,OAAM;AAAA,IACZ;AACD,SAAK,OAAO,QAAQ,KAAK,OAAO,SAAS;AACzC,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,QAAI,mBAAK,8BAA6B;AACpC,mBAAa,mBAAK,4BAA2B;AAC7C,yBAAK,6BAA8B;AAAA,IACpC;AACD,KAAAjD,MAAA,mBAAK,eAAL,gBAAAA,IAAgB;AAChB,uBAAK,WAAY;AACjB,UAAM,OAAM;AAAA,EACb;AAAA,EACD,UAAU,QAAQ;AAChB,QAAI,CAAC,KAAK,UAAU,QAAQ;AAC1B,WAAK,WAAW,oBAAoB,IAAI;AAAA,IACzC,WAAU,KAAK,UAAU,WAAW,MAAM;AACzC,WAAK,WAAW,iBAAiB,IAAI;AAAA,IACtC;AACD,UAAM,UAAU,MAAM;AAAA,EACvB;AAAA,EACD,kBAAkB;AAChB,UAAM,CAAC,aAAa,YAAY,IAAI,KAAK;AACzC,UAAM,QAAQ,KAAK,QAAQ;AAC3B,UAAM,SAAS,KAAK,SAAS;AAC7B,SAAK,cAAc,OAAO,MAAM;AAAA,EACjC;AAAA,EACD,iBAAiB;AACf,QAAI,mBAAK,oBAAmB,KAAK,WAAW,MAAM;AAChD;AAAA,IACD;AACD,UAAM,eAAc;AACpB,SAAK,eAAe;AACpB,0BAAK,oDAAL;AAAA,EACD;AAAA,EACD,kBAAkB;AAChB,QAAI,CAAC,KAAK,aAAY,KAAM,KAAK,WAAW,MAAM;AAChD;AAAA,IACD;AACD,UAAM,gBAAe;AACrB,SAAK,eAAe,CAAC,KAAK,QAAO;AACjC,SAAK,IAAI,UAAU,OAAO,SAAS;AACnC,0BAAK,0DAAL;AAAA,EACD;AAAA,EACD,YAAY;AACV,SAAK,eAAe,CAAC,KAAK,QAAO;AAAA,EAClC;AAAA,EACD,UAAU;AACR,WAAO,KAAK,MAAM,WAAW,KAAK,KAAK,MAAM,WAAW,KAAK,KAAK,MAAM,CAAC,EAAE,WAAW;AAAA,EACvF;AAAA,EAkND,SAAS;AACP,QAAI,mBAAK,kBAAiB;AACxB;AAAA,IACD;AACD,UAAM,OAAM;AACZ,SAAK,YAAY;AACjB,SAAK,gBAAe;AACpB,SAAK,gBAAe;AACpB,uBAAK,iBAAkB;AACvB,SAAK,IAAI,UAAU,IAAI,UAAU;AACjC,0BAAK,gCAAL,WAAmB;AACnB,SAAK,OAAM;AACX,SAAK,OAAO,qBAAqB,IAAI;AACrC,SAAK,UAAS;AACd,SAAK,IAAI,MAAM;AAAA,MACb,eAAe;AAAA,IACrB,CAAK;AAAA,EACF;AAAA,EACD,QAAQ,OAAO;AACb,QAAI,CAAC,KAAK,qBAAqB;AAC7B;AAAA,IACD;AACD,UAAM,QAAQ,KAAK;AACnB,SAAK,eAAc;AAAA,EACpB;AAAA,EAeD,kBAAkB,OAAO;AACvB,QAAI,MAAM,WAAW,KAAK,CAAC,KAAK,aAAc,KAAI,mBAAK,kBAAiB;AACtE;AAAA,IACD;AACD,SAAK,gBAAe;AACpB,UAAM,eAAc;AACpB,QAAI,CAAC,KAAK,IAAI,SAAS,SAAS,aAAa,GAAG;AAC9C,WAAK,IAAI,MAAM;AAAA,QACb,eAAe;AAAA,MACvB,CAAO;AAAA,IACF;AACD,0BAAK,gCAAL,WAAmB,MAAM,SAAS,MAAM;AAAA,EACzC;AAAA,EACD,kBAAkB,OAAO;AACvB,UAAM,eAAc;AACpB,0BAAK,gBAAL,WAAW,MAAM,SAAS,MAAM;AAAA,EACjC;AAAA,EACD,gBAAgB,OAAO;AACrB,UAAM,eAAc;AACpB,0BAAK,4BAAL,WAAiB;AAAA,EAClB;AAAA,EACD,mBAAmB,OAAO;AACxB,0BAAK,4BAAL,WAAiB;AAAA,EAClB;AAAA,EAuCD,IAAI,cAAc;AAChB,WAAO,CAAC,KAAK,aAAa,mBAAK;AAAA,EAChC;AAAA,EACD,SAAS;AACP,QAAI,KAAK,KAAK;AACZ,aAAO,KAAK;AAAA,IACb;AACD,QAAI,OAAO;AACX,QAAI,KAAK,OAAO;AACd,cAAQ,KAAK;AACb,cAAQ,KAAK;AAAA,IACd;AACD,UAAM,OAAM;AACZ,SAAK,IAAI,aAAa,gBAAgB,WAAW;AACjD,UAAM,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,sBAAK,oCAAL;AACrB,SAAK,MAAM,GAAG,GAAG,GAAG,CAAC;AACrB,SAAK,QAAQ,GAAG,CAAC;AACjB,0BAAK,gCAAL;AACA,QAAI,KAAK,OAAO;AACd,YAAM,CAAC,aAAa,YAAY,IAAI,KAAK;AACzC,WAAK,eAAe,KAAK,QAAQ,aAAa,KAAK,SAAS,YAAY;AACxE,WAAK,MAAM,QAAQ,aAAa,QAAQ,cAAc,KAAK,QAAQ,aAAa,KAAK,SAAS,YAAY;AAC1G,yBAAK,sBAAuB;AAC5B,4BAAK,kCAAL;AACA,WAAK,QAAQ,KAAK,QAAQ,aAAa,KAAK,SAAS,YAAY;AACjE,4BAAK,oBAAL;AACA,WAAK,IAAI,UAAU,IAAI,UAAU;AAAA,IACvC,OAAW;AACL,WAAK,IAAI,UAAU,IAAI,SAAS;AAChC,WAAK,eAAc;AAAA,IACpB;AACD,0BAAK,oCAAL;AACA,WAAO,KAAK;AAAA,EACb;AAAA,EAUD,cAAc,OAAO,QAAQ;AAC3B,UAAM,eAAe,KAAK,MAAM,KAAK;AACrC,UAAM,gBAAgB,KAAK,MAAM,MAAM;AACvC,QAAI,mBAAK,gBAAe,gBAAgB,mBAAK,iBAAgB,eAAe;AAC1E;AAAA,IACD;AACD,uBAAK,YAAa;AAClB,uBAAK,aAAc;AACnB,SAAK,OAAO,MAAM,aAAa;AAC/B,UAAM,CAAC,aAAa,YAAY,IAAI,KAAK;AACzC,SAAK,QAAQ,QAAQ;AACrB,SAAK,SAAS,SAAS;AACvB,SAAK,kBAAiB;AACtB,QAAI,mBAAK,kBAAiB;AACxB,4BAAK,oCAAL,WAAqB,OAAO;AAAA,IAC7B;AACD,0BAAK,kCAAL;AACA,0BAAK,oBAAL;AACA,SAAK,OAAO,MAAM,aAAa;AAC/B,SAAK,QAAO;AAAA,EACb;AAAA,EAqLD,OAAO,YAAY,MAAM,QAAQ,WAAW;;AAC1C,QAAI,gBAAgB,sBAAsB;AACxC,aAAO;AAAA,IACR;AACD,UAAM,SAAS,MAAM,YAAY,MAAM,QAAQ,SAAS;AACxD,WAAO,YAAY,KAAK;AACxB,WAAO,QAAQ,KAAK,aAAa,GAAG,KAAK,KAAK;AAC9C,WAAO,UAAU,KAAK;AACtB,UAAM,CAAC,WAAW,UAAU,IAAI,OAAO;AACvC,UAAM,QAAQ,OAAO,QAAQ;AAC7B,UAAM,SAAS,OAAO,SAAS;AAC/B,UAAM,cAAc,OAAO;AAC3B,UAAM,UAAU,KAAK,YAAY;AACjC,yBAAO,iBAAkB;AACzB,yBAAO,YAAa,KAAK,MAAM,KAAK;AACpC,yBAAO,aAAc,KAAK,MAAM,MAAM;AACtC,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAG;AACJ,aAAS;AAAA,MACP;AAAA,IACD,KAAI,OAAO;AACV,eAAS,gBAAAA,MAAA,YAAU,4CAAV,KAAAA,KAA8B,QAAQ,MAAM;AACrD,YAAM,OAAO;AACb,aAAO,MAAM,KAAK,IAAI;AACtB,UAAI,KAAK,eAAe,OAAO,CAAC,IAAI;AACpC,UAAI,KAAK,eAAe,OAAO,CAAC,IAAI;AACpC,eAAS,IAAI,GAAG,KAAK,OAAO,QAAQ,IAAI,IAAI,KAAK,GAAG;AAClD,cAAM,MAAM,eAAe,OAAO,CAAC,IAAI;AACvC,cAAM,MAAM,eAAe,OAAO,IAAI,CAAC,IAAI;AAC3C,cAAM,MAAM,eAAe,OAAO,IAAI,CAAC,IAAI;AAC3C,cAAM,MAAM,eAAe,OAAO,IAAI,CAAC,IAAI;AAC3C,cAAM,MAAM,eAAe,OAAO,IAAI,CAAC,IAAI;AAC3C,cAAM,MAAM,eAAe,OAAO,IAAI,CAAC,IAAI;AAC3C,aAAK,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;AACxD,aAAK;AACL,aAAK;AAAA,MACN;AACD,YAAM,SAAS,sBAAK,8BAAL,WAAkB;AACjC,aAAO,aAAa,KAAK,MAAM;AAAA,IAChC;AACD,UAAM,OAAO,6BAAO,sBAAP;AACb,yBAAO,YAAa,KAAK,IAAI,iBAAiB,UAAU,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC;AACzE,yBAAO,aAAc,KAAK,IAAI,iBAAiB,UAAU,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC;AAC1E,iCAAO,oCAAP,SAAuB,OAAO;AAC9B,WAAO;AAAA,EACR;AAAA,EACD,YAAY;AACV,QAAI,KAAK,WAAW;AAClB,aAAO;AAAA,IACR;AACD,UAAM,OAAO,KAAK,QAAQ,GAAG,CAAC;AAC9B,UAAM,QAAQ,iBAAiB,cAAc,QAAQ,KAAK,IAAI,WAAW;AACzE,WAAO;AAAA,MACL,gBAAgB,qBAAqB;AAAA,MACrC;AAAA,MACA,WAAW,KAAK;AAAA,MAChB,SAAS,KAAK;AAAA,MACd,OAAO,sBAAK,oCAAL,WAAqB,KAAK,cAAc,KAAK,aAAa,KAAK,cAAc,KAAK,cAAc;AAAA,MACvG,WAAW,KAAK;AAAA,MAChB;AAAA,MACA,UAAU,KAAK;AAAA,MACf,oBAAoB,KAAK;AAAA,IAC/B;AAAA,EACG;AACH;AA9yBE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA2DAkD,oBAAA;AAAAC,sBAAgB,SAAC,WAAW;AAC1B,QAAM,eAAe,QAAM;AACzB,SAAK,YAAY;AACjB,0BAAK,gCAAL;AAAA,EACN;AACI,QAAM,iBAAiB,KAAK;AAC5B,OAAK,YAAY;AAAA,IACf,KAAK,aAAa,KAAK,MAAM,SAAS;AAAA,IACtC,MAAM,aAAa,KAAK,MAAM,cAAc;AAAA,IAC5C,MAAM,KAAK,WAAW,SAAS,KAAK,KAAK,YAAY,IAAI;AAAA,IACzD,UAAU;AAAA,IACV,MAAM,2BAA2B;AAAA,IACjC,qBAAqB;AAAA,IACrB,UAAU;AAAA,EAChB,CAAK;AACF;AACDL,gBAAA;AAAAG,kBAAY,SAAC,OAAO;AAClB,QAAM,WAAW,SAAO;AACtB,SAAK,QAAQ;AACb,0BAAK,oBAAL;AAAA,EACN;AACI,QAAM,aAAa,KAAK;AACxB,OAAK,YAAY;AAAA,IACf,KAAK,SAAS,KAAK,MAAM,KAAK;AAAA,IAC9B,MAAM,SAAS,KAAK,MAAM,UAAU;AAAA,IACpC,MAAM,KAAK,WAAW,SAAS,KAAK,KAAK,YAAY,IAAI;AAAA,IACzD,UAAU;AAAA,IACV,MAAM,2BAA2B;AAAA,IACjC,qBAAqB;AAAA,IACrB,UAAU;AAAA,EAChB,CAAK;AACF;AACD;AAAA,mBAAc,SAAC,SAAS;AACtB,QAAM,aAAa,QAAM;AACvB,SAAK,UAAU;AACf,0BAAK,oBAAL;AAAA,EACN;AACI,aAAW;AACX,QAAM,eAAe,KAAK;AAC1B,OAAK,YAAY;AAAA,IACf,KAAK,WAAW,KAAK,MAAM,OAAO;AAAA,IAClC,MAAM,WAAW,KAAK,MAAM,YAAY;AAAA,IACxC,MAAM,KAAK,WAAW,SAAS,KAAK,KAAK,YAAY,IAAI;AAAA,IACzD,UAAU;AAAA,IACV,MAAM,2BAA2B;AAAA,IACjC,qBAAqB;AAAA,IACrB,UAAU;AAAA,EAChB,CAAK;AACF;AA0ED;AAAA,oBAAe,WAAG;AAChB,QAAM;AAAA,IACJ;AAAA,IACA,kBAAkB,CAAC,OAAO,MAAM;AAAA,EACjC,IAAG;AACJ,UAAQ,gBAAc;AAAA,IACpB,KAAK;AACH,aAAO,CAAC,GAAG,QAAQ,QAAQ,KAAK;AAAA,IAClC,KAAK;AACH,aAAO,CAAC,OAAO,QAAQ,OAAO,MAAM;AAAA,IACtC,KAAK;AACH,aAAO,CAAC,OAAO,GAAG,QAAQ,KAAK;AAAA,IACjC;AACE,aAAO,CAAC,GAAG,GAAG,OAAO,MAAM;AAAA,EAC9B;AACF;AACD;AAAA,eAAU,WAAG;AACX,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAG;AACJ,MAAI,YAAY,YAAY,cAAc;AAC1C,MAAI,UAAU;AACd,MAAI,WAAW;AACf,MAAI,aAAa;AACjB,MAAI,cAAc,GAAG,KAAK,GAAG,aAAa,OAAO,CAAC;AACnD;AACD;AAAA,kBAAa,SAAC,GAAG,GAAG;AAClB,OAAK,OAAO,iBAAiB,eAAe,eAAe;AAAA,IACzD,QAAQ,KAAK,WAAW;AAAA,EAC9B,CAAK;AACD,wBAAK,0DAAL;AACA,qBAAK,YAAa,IAAI;AACtB,QAAM,SAAS,KAAK,WAAW,eAAe,mBAAK,WAAU;AAC7D,OAAK,OAAO,iBAAiB,gBAAgB,KAAK,mBAAmB,KAAK,IAAI,GAAG;AAAA,IAC/E;AAAA,EACN,CAAK;AACD,OAAK,OAAO,iBAAiB,eAAe,KAAK,kBAAkB,KAAK,IAAI,GAAG;AAAA,IAC7E;AAAA,EACN,CAAK;AACD,OAAK,OAAO,iBAAiB,aAAa,KAAK,gBAAgB,KAAK,IAAI,GAAG;AAAA,IACzE;AAAA,EACN,CAAK;AACD,OAAK,YAAY;AACjB,MAAI,CAAC,mBAAK,uBAAsB;AAC9B,uBAAK,sBAAuB;AAC5B,0BAAK,kCAAL;AACA,SAAK,cAAL,KAAK,YAAc,WAAU;AAC7B,SAAK,UAAL,KAAK,QAAU,WAAU,iBAAiB,iBAAiB;AAC3D,SAAK,YAAL,KAAK,UAAY,WAAU;AAAA,EAC5B;AACD,OAAK,YAAY,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5B,qBAAK,qBAAsB;AAC3B,wBAAK,0BAAL;AACA,qBAAK,uBAAwB,MAAM;AACjC,0BAAK,4BAAL;AACA,QAAI,mBAAK,wBAAuB;AAC9B,aAAO,sBAAsB,mBAAK,sBAAqB;AAAA,IACxD;AAAA,EACP;AACI,SAAO,sBAAsB,mBAAK,sBAAqB;AACxD;AACD;AAAA,UAAK,SAAC,GAAG,GAAG;AACV,QAAM,CAAC,OAAO,KAAK,IAAI,KAAK,YAAY,GAAG,EAAE;AAC7C,MAAI,KAAK,YAAY,SAAS,KAAK,MAAM,SAAS,MAAM,OAAO;AAC7D;AAAA,EACD;AACD,QAAM,cAAc,KAAK;AACzB,MAAI,SAAS,mBAAK;AAClB,cAAY,KAAK,CAAC,GAAG,CAAC,CAAC;AACvB,qBAAK,qBAAsB;AAC3B,MAAI,YAAY,UAAU,GAAG;AAC3B,WAAO,OAAO,GAAG,YAAY,CAAC,CAAC;AAC/B,WAAO,OAAO,GAAG,CAAC;AAClB;AAAA,EACD;AACD,MAAI,YAAY,WAAW,GAAG;AAC5B,uBAAK,gBAAiB,SAAS,IAAI,OAAM;AACzC,WAAO,OAAO,GAAG,YAAY,CAAC,CAAC;AAAA,EAChC;AACD,wBAAK,sCAAL,WAAsB,QAAQ,GAAG,YAAY,GAAG,EAAE,GAAG,GAAG,YAAY,GAAG,EAAE,GAAG,GAAG;AAChF;AACD;AAAA,aAAQ,WAAG;AACT,MAAI,KAAK,YAAY,WAAW,GAAG;AACjC;AAAA,EACD;AACD,QAAM,YAAY,KAAK,YAAY,GAAG,EAAE;AACxC,qBAAK,gBAAe,OAAO,GAAG,SAAS;AACxC;AACD;AAAA,iBAAY,SAAC,GAAG,GAAG;AACjB,qBAAK,uBAAwB;AAC7B,MAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,KAAK;AAC9C,MAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,MAAM;AAC/C,wBAAK,gBAAL,WAAW,GAAG;AACd,wBAAK,sBAAL;AACA,MAAI;AACJ,MAAI,KAAK,YAAY,WAAW,GAAG;AACjC,aAAS,sBAAK,gDAAL;AAAA,EACf,OAAW;AACL,UAAM,KAAK,CAAC,GAAG,CAAC;AAChB,aAAS,CAAC,CAAC,IAAI,GAAG,SAAS,GAAG,MAAK,GAAI,EAAE,CAAC;AAAA,EAC3C;AACD,QAAM,SAAS,mBAAK;AACpB,QAAM,cAAc,KAAK;AACzB,OAAK,cAAc;AACnB,qBAAK,gBAAiB,IAAI;AAC1B,QAAM,MAAM,MAAM;AAChB,SAAK,YAAY,KAAK,WAAW;AACjC,SAAK,MAAM,KAAK,MAAM;AACtB,SAAK,aAAa,KAAK,MAAM;AAC7B,SAAK,WAAW,QAAQ,IAAI;AAAA,EAClC;AACI,QAAM,OAAO,MAAM;AACjB,SAAK,YAAY;AACjB,SAAK,MAAM;AACX,SAAK,aAAa;AAClB,QAAI,KAAK,MAAM,WAAW,GAAG;AAC3B,WAAK,OAAM;AAAA,IACnB,OAAa;AACL,UAAI,CAAC,KAAK,QAAQ;AAChB,8BAAK,gCAAL;AACA,8BAAK,oCAAL;AAAA,MACD;AACD,4BAAK,gCAAL;AAAA,IACD;AAAA,EACP;AACI,OAAK,YAAY;AAAA,IACf;AAAA,IACA;AAAA,IACA,UAAU;AAAA,EAChB,CAAK;AACF;AACD;AAAA,gBAAW,WAAG;AACZ,MAAI,CAAC,mBAAK,sBAAqB;AAC7B;AAAA,EACD;AACD,qBAAK,qBAAsB;AAC3B,QAAM,YAAY,KAAK,KAAK,KAAK,YAAY,KAAK,WAAW;AAC7D,QAAM,aAAa,KAAK,YAAY,MAAM,EAAE;AAC5C,QAAM,IAAI,WAAW,IAAI,QAAM,GAAG,CAAC,CAAC;AACpC,QAAM,IAAI,WAAW,IAAI,QAAM,GAAG,CAAC,CAAC;AACvB,OAAK,IAAI,GAAG,CAAC,IAAI;AACjB,OAAK,IAAI,GAAG,CAAC,IAAI;AACjB,OAAK,IAAI,GAAG,CAAC,IAAI;AACjB,OAAK,IAAI,GAAG,CAAC,IAAI;AAC9B,QAAM;AAAA,IACJ;AAAA,EACD,IAAG;AACJ,MAAI,KAAI;AACR,MAAI,UAAU,GAAG,GAAG,KAAK,OAAO,OAAO,KAAK,OAAO,MAAM;AACzD,aAAW,QAAQ,KAAK,cAAc;AACpC,QAAI,OAAO,IAAI;AAAA,EAChB;AACD,MAAI,OAAO,mBAAK,eAAc;AAC9B,MAAI,QAAO;AACZ;AACD;AAAA,qBAAgB,SAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAC/C,QAAM,SAAS,KAAK,MAAM;AAC1B,QAAM,SAAS,KAAK,MAAM;AAC1B,QAAM,MAAM,KAAK,MAAM;AACvB,QAAM,MAAM,KAAK,MAAM;AACvB,SAAO,cAAc,QAAQ,KAAK,KAAK,SAAS,GAAG,QAAQ,KAAK,KAAK,SAAS,GAAG,KAAK,KAAK,KAAK,MAAM,GAAG,KAAK,KAAK,KAAK,MAAM,GAAG,IAAI,EAAE;AACxI;AACD;AAAA,0BAAqB,WAAG;AACtB,QAAM,OAAO,KAAK;AAClB,MAAI,KAAK,UAAU,GAAG;AACpB,WAAO,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC;AAAA,EACrD;AACD,QAAM,eAAe;AACrB,MAAI;AACJ,MAAI,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC;AACrB,OAAK,IAAI,GAAG,IAAI,KAAK,SAAS,GAAG,KAAK;AACpC,UAAM,CAACG,KAAIC,GAAE,IAAI,KAAK,CAAC;AACvB,UAAM,CAACC,KAAIC,GAAE,IAAI,KAAK,IAAI,CAAC;AAC3B,UAAM,MAAMH,MAAKE,OAAM;AACvB,UAAM,MAAMD,MAAKE,OAAM;AACvB,UAAMC,YAAW,CAAC,KAAK,KAAKJ,MAAK,MAAM,GAAG,KAAK,KAAKC,MAAK,MAAM,CAAC;AAChE,UAAMI,YAAW,CAAC,KAAK,KAAKL,MAAK,MAAM,GAAG,KAAK,KAAKC,MAAK,MAAM,CAAC;AAChE,iBAAa,KAAK,CAAC,CAAC,IAAI,EAAE,GAAGG,WAAUC,WAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1D,KAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAAA,EACnB;AACD,QAAM,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC;AACvB,QAAM,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;AAC3B,QAAM,WAAW,CAAC,KAAK,KAAK,KAAK,MAAM,GAAG,KAAK,KAAK,KAAK,MAAM,CAAC;AAChE,QAAM,WAAW,CAAC,KAAK,KAAK,KAAK,MAAM,GAAG,KAAK,KAAK,KAAK,MAAM,CAAC;AAChE,eAAa,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,UAAU,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1D,SAAO;AACR;AACD;AAAA,YAAO,WAAG;AACR,MAAI,KAAK,WAAW;AAClB,0BAAK,sCAAL;AACA;AAAA,EACD;AACD,wBAAK,0BAAL;AACA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACD,IAAG;AACJ,MAAI,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACjC,MAAI,UAAU,GAAG,GAAG,OAAO,OAAO,OAAO,MAAM;AAC/C,wBAAK,sCAAL;AACA,aAAW,QAAQ,KAAK,cAAc;AACpC,QAAI,OAAO,IAAI;AAAA,EAChB;AACF;AA0BD;AAAA,4BAAuB,WAAG;AACxB,MAAI,mBAAK,iBAAgB;AACvB;AAAA,EACD;AACD,qBAAK,gBAAiB,IAAI;AAC1B,QAAM,SAAS,KAAK,WAAW,eAAe,mBAAK,eAAc;AACjE,OAAK,OAAO,iBAAiB,eAAe,KAAK,kBAAkB,KAAK,IAAI,GAAG;AAAA,IAC7E;AAAA,EACN,CAAK;AACF;AACD;AAAA,+BAA0B,WAAG;;AAC3B,GAAAzD,MAAA,KAAK,kBAAL,gBAAAA,IAAoB;AACpB,OAAK,gBAAgB;AACtB;AAyBD;AAAA,gBAAW,SAAC,OAAO;;AACjB,GAAAA,MAAA,mBAAK,gBAAL,gBAAAA,IAAiB;AACjB,qBAAK,YAAa;AAClB,wBAAK,oDAAL;AACA,MAAI,mBAAK,8BAA6B;AACpC,iBAAa,mBAAK,4BAA2B;AAAA,EAC9C;AACD,qBAAK,6BAA8B,WAAW,MAAM;AAClD,uBAAK,6BAA8B;AACnC,SAAK,OAAO,oBAAoB,eAAe,aAAa;AAAA,EAC7D,GAAE,EAAE;AACL,wBAAK,8BAAL,WAAkB,MAAM,SAAS,MAAM;AACvC,OAAK,uBAAsB;AAC3B,OAAK,gBAAe;AACrB;AACD;AAAA,kBAAa,WAAG;AACd,OAAK,SAAS,SAAS,cAAc,QAAQ;AAC7C,OAAK,OAAO,QAAQ,KAAK,OAAO,SAAS;AACzC,OAAK,OAAO,YAAY;AACxB,OAAK,OAAO,aAAa,gBAAgB,kBAAkB;AAC3D,OAAK,IAAI,OAAO,KAAK,MAAM;AAC3B,OAAK,MAAM,KAAK,OAAO,WAAW,IAAI;AACvC;AACD;AAAA,oBAAe,WAAG;AAChB,qBAAK,WAAY,IAAI,eAAe,aAAW;AAC7C,UAAM,OAAO,QAAQ,CAAC,EAAE;AACxB,QAAI,KAAK,SAAS,KAAK,QAAQ;AAC7B,WAAK,cAAc,KAAK,OAAO,KAAK,MAAM;AAAA,IAC3C;AAAA,EACP,CAAK;AACD,qBAAK,WAAU,QAAQ,KAAK,GAAG;AAC/B,OAAK,WAAW,QAAQ,iBAAiB,SAAS,MAAM;;AACtD,KAAAA,MAAA,mBAAK,eAAL,gBAAAA,IAAgB;AAChB,uBAAK,WAAY;AAAA,EACvB,GAAO;AAAA,IACD,MAAM;AAAA,EACZ,CAAK;AACF;AAmCD;AAAA,mBAAc,WAAG;AACf,MAAI,CAAC,mBAAK,uBAAsB;AAC9B;AAAA,EACD;AACD,QAAM,CAAC,aAAa,YAAY,IAAI,KAAK;AACzC,OAAK,OAAO,QAAQ,KAAK,KAAK,KAAK,QAAQ,WAAW;AACtD,OAAK,OAAO,SAAS,KAAK,KAAK,KAAK,SAAS,YAAY;AACzD,wBAAK,sCAAL;AACD;AAsBD;AAAA,oBAAe,SAAC,OAAO,QAAQ;AAC7B,QAAM,UAAU,sBAAK,4BAAL;AAChB,QAAM,gBAAgB,QAAQ,WAAW,mBAAK;AAC9C,QAAM,gBAAgB,SAAS,WAAW,mBAAK;AAC/C,OAAK,cAAc,KAAK,IAAI,cAAc,YAAY;AACvD;AACD;AAAA,qBAAgB,WAAG;AACjB,QAAM,UAAU,sBAAK,4BAAL,aAAqB;AACrC,OAAK,IAAI,aAAa,KAAK,aAAa,GAAG,GAAG,KAAK,aAAa,KAAK,eAAe,KAAK,cAAc,SAAS,KAAK,eAAe,KAAK,cAAc,OAAO;AAC/J;AACM;AAAA,iBAAY,SAAC,QAAQ;AAC1B,QAAM,SAAS,IAAI;AACnB,WAAS,IAAI,GAAG,KAAK,OAAO,QAAQ,IAAI,IAAI,KAAK;AAC/C,UAAM,CAAC,OAAO,UAAU,UAAU,MAAM,IAAI,OAAO,CAAC;AACpD,QAAI,MAAM,GAAG;AACX,aAAO,OAAO,GAAG,KAAK;AAAA,IACvB;AACD,WAAO,cAAc,SAAS,CAAC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AAAA,EAC9F;AACD,SAAO;AACR;AACM;AAAA,sBAAiB,SAAC,QAAQ,MAAM,UAAU;AAC/C,QAAM,CAAC,KAAK,KAAK,KAAK,GAAG,IAAI;AAC7B,UAAQ,UAAQ;AAAA,IACd,KAAK;AACH,eAAS,IAAI,GAAG,KAAK,OAAO,QAAQ,IAAI,IAAI,KAAK,GAAG;AAClD,eAAO,CAAC,KAAK;AACb,eAAO,IAAI,CAAC,IAAI,MAAM,OAAO,IAAI,CAAC;AAAA,MACnC;AACD;AAAA,IACF,KAAK;AACH,eAAS,IAAI,GAAG,KAAK,OAAO,QAAQ,IAAI,IAAI,KAAK,GAAG;AAClD,cAAM,IAAI,OAAO,CAAC;AAClB,eAAO,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI;AAC5B,eAAO,IAAI,CAAC,IAAI,IAAI;AAAA,MACrB;AACD;AAAA,IACF,KAAK;AACH,eAAS,IAAI,GAAG,KAAK,OAAO,QAAQ,IAAI,IAAI,KAAK,GAAG;AAClD,eAAO,CAAC,IAAI,MAAM,OAAO,CAAC;AAC1B,eAAO,IAAI,CAAC,KAAK;AAAA,MAClB;AACD;AAAA,IACF,KAAK;AACH,eAAS,IAAI,GAAG,KAAK,OAAO,QAAQ,IAAI,IAAI,KAAK,GAAG;AAClD,cAAM,IAAI,OAAO,CAAC;AAClB,eAAO,CAAC,IAAI,MAAM,OAAO,IAAI,CAAC;AAC9B,eAAO,IAAI,CAAC,IAAI,MAAM;AAAA,MACvB;AACD;AAAA,IACF;AACE,YAAM,IAAI,MAAM,kBAAkB;AAAA,EACrC;AACD,SAAO;AACR;AACM;AAAA,wBAAmB,SAAC,QAAQ,MAAM,UAAU;AACjD,QAAM,CAAC,KAAK,KAAK,KAAK,GAAG,IAAI;AAC7B,UAAQ,UAAQ;AAAA,IACd,KAAK;AACH,eAAS,IAAI,GAAG,KAAK,OAAO,QAAQ,IAAI,IAAI,KAAK,GAAG;AAClD,eAAO,CAAC,KAAK;AACb,eAAO,IAAI,CAAC,IAAI,MAAM,OAAO,IAAI,CAAC;AAAA,MACnC;AACD;AAAA,IACF,KAAK;AACH,eAAS,IAAI,GAAG,KAAK,OAAO,QAAQ,IAAI,IAAI,KAAK,GAAG;AAClD,cAAM,IAAI,OAAO,CAAC;AAClB,eAAO,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI;AAC5B,eAAO,IAAI,CAAC,IAAI,IAAI;AAAA,MACrB;AACD;AAAA,IACF,KAAK;AACH,eAAS,IAAI,GAAG,KAAK,OAAO,QAAQ,IAAI,IAAI,KAAK,GAAG;AAClD,eAAO,CAAC,IAAI,MAAM,OAAO,CAAC;AAC1B,eAAO,IAAI,CAAC,KAAK;AAAA,MAClB;AACD;AAAA,IACF,KAAK;AACH,eAAS,IAAI,GAAG,KAAK,OAAO,QAAQ,IAAI,IAAI,KAAK,GAAG;AAClD,cAAM,IAAI,OAAO,CAAC;AAClB,eAAO,CAAC,IAAI,MAAM,OAAO,IAAI,CAAC;AAC9B,eAAO,IAAI,CAAC,IAAI,MAAM;AAAA,MACvB;AACD;AAAA,IACF;AACE,YAAM,IAAI,MAAM,kBAAkB;AAAA,EACrC;AACD,SAAO;AACR;AACD;AAAA,oBAAe,SAAC,GAAG,IAAI,IAAI,MAAM;;AAC/B,QAAM,QAAQ;AACd,QAAM,UAAU,KAAK,YAAY;AACjC,QAAM,SAAS,IAAI,KAAK;AACxB,QAAM,SAAS,IAAI,KAAK;AACxB,aAAW,UAAU,KAAK,OAAO;AAC/B,UAAM,SAAS;AACf,UAAM,SAAS;AACf,aAAS,IAAI,GAAG,KAAK,OAAO,QAAQ,IAAI,IAAI,KAAK;AAC/C,YAAM,CAAC,OAAO,UAAU,UAAU,MAAM,IAAI,OAAO,CAAC;AACpD,UAAI,MAAM,CAAC,MAAM,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,OAAO,CAAC,KAAK,OAAO,GAAG;AAChE,cAAM,KAAK,IAAI,MAAM,CAAC,IAAI;AAC1B,cAAM,KAAK,IAAI,MAAM,CAAC,IAAI;AAC1B,eAAO,KAAK,IAAI,EAAE;AAClB,eAAO,KAAK,IAAI,EAAE;AAClB;AAAA,MACD;AACD,YAAM,MAAM,IAAI,MAAM,CAAC,IAAI;AAC3B,YAAM,MAAM,IAAI,MAAM,CAAC,IAAI;AAC3B,YAAM,MAAM,IAAI,SAAS,CAAC,IAAI;AAC9B,YAAM,MAAM,IAAI,SAAS,CAAC,IAAI;AAC9B,YAAM,MAAM,IAAI,SAAS,CAAC,IAAI;AAC9B,YAAM,MAAM,IAAI,SAAS,CAAC,IAAI;AAC9B,YAAM,MAAM,IAAI,OAAO,CAAC,IAAI;AAC5B,YAAM,MAAM,IAAI,OAAO,CAAC,IAAI;AAC5B,UAAI,MAAM,GAAG;AACX,eAAO,KAAK,KAAK,GAAG;AACpB,eAAO,KAAK,KAAK,GAAG;AAAA,MACrB;AACD,aAAO,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AACxC,aAAO,KAAK,KAAK,GAAG;AACpB,UAAI,MAAM,KAAK,GAAG;AAChB,eAAO,KAAK,KAAK,GAAG;AAAA,MACrB;AAAA,IACF;AACD,UAAM,KAAK;AAAA,MACT,QAAQ,gBAAAA,MAAA,YAAU,wCAAV,KAAAA,KAA4B,QAAQ,MAAM,KAAK;AAAA,MACvD,QAAQ,iCAAU,wCAAV,SAA4B,QAAQ,MAAM,KAAK;AAAA,IAC/D,CAAO;AAAA,EACF;AACD,SAAO;AACR;AACD;AAAA,aAAQ,WAAG;AACT,MAAI,OAAO;AACX,MAAI,OAAO;AACX,MAAI,OAAO;AACX,MAAI,OAAO;AACX,aAAW,QAAQ,KAAK,OAAO;AAC7B,eAAW,CAAC,OAAO,UAAU,UAAU,MAAM,KAAK,MAAM;AACtD,YAAM,OAAO,KAAK,kBAAkB,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM;AACjF,aAAO,KAAK,IAAI,MAAM,KAAK,CAAC,CAAC;AAC7B,aAAO,KAAK,IAAI,MAAM,KAAK,CAAC,CAAC;AAC7B,aAAO,KAAK,IAAI,MAAM,KAAK,CAAC,CAAC;AAC7B,aAAO,KAAK,IAAI,MAAM,KAAK,CAAC,CAAC;AAAA,IAC9B;AAAA,EACF;AACD,SAAO,CAAC,MAAM,MAAM,MAAM,IAAI;AAC/B;AACD;AAAA,gBAAW,WAAG;AACZ,SAAO,mBAAK,mBAAkB,KAAK,KAAK,KAAK,YAAY,KAAK,WAAW,IAAI;AAC9E;AACD;AAAA,kBAAa,SAAC,YAAY,OAAO;AAC/B,MAAI,KAAK,WAAW;AAClB;AAAA,EACD;AACD,MAAI,CAAC,mBAAK,kBAAiB;AACzB,0BAAK,oBAAL;AACA;AAAA,EACD;AACD,QAAM,OAAO,sBAAK,sBAAL;AACb,QAAM,UAAU,sBAAK,4BAAL;AAChB,qBAAK,YAAa,KAAK,IAAI,iBAAiB,UAAU,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC;AACvE,qBAAK,aAAc,KAAK,IAAI,iBAAiB,UAAU,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC;AACxE,QAAM,QAAQ,KAAK,KAAK,UAAU,mBAAK,cAAa,KAAK,WAAW;AACpE,QAAM,SAAS,KAAK,KAAK,UAAU,mBAAK,eAAc,KAAK,WAAW;AACtE,QAAM,CAAC,aAAa,YAAY,IAAI,KAAK;AACzC,OAAK,QAAQ,QAAQ;AACrB,OAAK,SAAS,SAAS;AACvB,OAAK,eAAe,OAAO,MAAM;AACjC,QAAM,mBAAmB,KAAK;AAC9B,QAAM,mBAAmB,KAAK;AAC9B,OAAK,eAAe,CAAC,KAAK,CAAC;AAC3B,OAAK,eAAe,CAAC,KAAK,CAAC;AAC3B,wBAAK,kCAAL;AACA,wBAAK,oBAAL;AACA,qBAAK,YAAa;AAClB,qBAAK,aAAc;AACnB,OAAK,QAAQ,OAAO,MAAM;AAC1B,QAAM,kBAAkB,YAAY,UAAU,KAAK,cAAc,IAAI;AACrE,OAAK,UAAU,mBAAmB,KAAK,eAAe,iBAAiB,mBAAmB,KAAK,eAAe,eAAe;AAC9H;AAzKD,aAlkBI,YAkkBG;AAWP,aA7kBI,YA6kBG;AAkCP,aA/mBI,YA+mBG;AAjmBP,cAdI,YAcG,iBAAgB;AACvB,cAfI,YAeG,mBAAkB;AACzB,cAhBI,YAgBG,qBAAoB;AAC3B,cAjBI,YAiBG,SAAQ;AACf,cAlBI,YAkBG,eAAc,qBAAqB;AAlB5C,IAAM,YAAN;AAszBA,MAAM,eAAN,MAAM,qBAAoB,iBAAiB;AAAA,EAczC,YAAY,QAAQ;AAClB,UAAM;AAAA,MACJ,GAAG;AAAA,MACH,MAAM;AAAA,IACZ,CAAK;AAyCH;AAeA;AA0EA;AAsHA,uBAAA0D;AAwGA;AAoBA;AAwBA;AAiBA;AA4BA,uBAAAC;AA1cA,gCAAU;AACV,kCAAY;AACZ,uCAAiB;AACjB,mCAAa;AACb,oCAAc;AACd,wCAAkB;AAClB,gCAAU;AACV,uBAAAC,YAAY;AACZ,yCAAmB;AACnB,+BAAS;AACT,iDAA2B;AAQzB,uBAAK,YAAa,OAAO;AACzB,uBAAK,aAAc,OAAO;AAAA,EAC3B;AAAA,EACD,OAAO,WAAW,MAAM,WAAW;AACjC,qBAAiB,WAAW,MAAM,SAAS;AAAA,EAC5C;AAAA,EACD,WAAW,iBAAiB;AAC1B,UAAM,QAAQ,CAAC,QAAQ,QAAQ,OAAO,OAAO,QAAQ,OAAO,WAAW,QAAQ,QAAQ;AACvF,WAAO,OAAO,MAAM,kBAAkB,MAAM,IAAI,UAAQ,SAAS,IAAI,EAAE,CAAC;AAAA,EACzE;AAAA,EACD,WAAW,oBAAoB;AAC7B,WAAO,OAAO,MAAM,qBAAqB,KAAK,eAAe,KAAK,GAAG,CAAC;AAAA,EACvE;AAAA,EACD,OAAO,yBAAyB,MAAM;AACpC,WAAO,KAAK,eAAe,SAAS,IAAI;AAAA,EACzC;AAAA,EACD,OAAO,MAAM,MAAM,QAAQ;AACzB,WAAO,YAAY,qBAAqB,OAAO;AAAA,MAC7C,YAAY,KAAK,UAAW;AAAA,IAClC,CAAK;AAAA,EACF;AAAA,EACD,gBAAgB;AACd,QAAI,KAAK,WAAW,mBAAmB;AACrC,WAAK,IAAI,SAAS;AAAA,IACnB;AACD,UAAM,cAAa;AAAA,EACpB;AAAA,EACD,IAAI,qBAAqB;;AACvB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,YAAY,CAAC,GAAC5D,MAAA,KAAK,gBAAL,gBAAAA,IAAkB;AAAA,IACtC;AAAA,EACG;AAAA,EACD,OAAO,0BAA0B,MAAM;AACrC,UAAM,kBAAkB,KAAK,IAAI,YAAY;AAC7C,WAAO;AAAA,MACL,YAAY,gBAAgB,IAAI,IAAI,KAAK;AAAA,MACzC,cAAc,gBAAgB,IAAI,KAAK,KAAK;AAAA,IAClD;AAAA,EACG;AAAA,EAyCD,MAAM,eAAe,YAAY,MAAM,oBAAoB,MAAM;AAC/D,QAAI,KAAK,kBAAkB;AACzB,aAAO;AAAA,IACR;AACD,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,KAAK;AACT,QAAI,CAAC,WAAW;AACd,YAAM,IAAI,MAAM,QAAQ;AAAA,IACzB;AACD,QAAI,CAAE,MAAM,UAAU,aAAa,SAAS,GAAI;AAC9C,YAAM,IAAI,MAAM,gCAAgC;AAAA,IACjD;AACD,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACN,IAAQ,aAAa,KAAK,WAAW,MAAM,IAAI,EAAE;AAC7C,UAAM,WAAW,MAAM,UAAU,MAAM;AAAA,MACrC,MAAM;AAAA,MACN,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU,KAAK,UAAU,QAAQ;AAAA,MAClC;AAAA,IACP,CAAK;AACD,QAAI,CAAC,UAAU;AACb,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACnD;AACD,QAAI,SAAS,OAAO;AAClB,YAAM,IAAI,MAAM,4BAA4B;AAAA,IAC7C;AACD,QAAI,SAAS,QAAQ;AACnB,aAAO;AAAA,IACR;AACD,QAAI,CAAC,SAAS,QAAQ;AACpB,YAAM,IAAI,MAAM,wCAAwC;AAAA,IACzD;AACD,UAAM,UAAU,SAAS;AACzB,UAAM,KAAK,kBAAkB,OAAO;AACpC,QAAI,qBAAqB,CAAC,KAAK,kBAAkB;AAC/C,WAAK,cAAc;AAAA,QACjB,KAAK;AAAA,QACL,YAAY;AAAA,MACpB;AAAA,IACK;AACD,WAAO;AAAA,EACR;AAAA,EAqDD,SAAS;;AACP,QAAI,mBAAK,YAAW;AAClB,yBAAK,SAAU;AACf,WAAK,WAAW,aAAa,SAAS,mBAAK,UAAS;AACpD,OAAAA,MAAA,mBAAK,aAAL,gBAAAA,IAAc;AACd,yBAAK,SAAU;AACf,+BAAK4D,gBAAL,mBAAgB;AAChB,yBAAKA,YAAY;AACjB,UAAI,mBAAK,mBAAkB;AACzB,qBAAa,mBAAK,iBAAgB;AAClC,2BAAK,kBAAmB;AAAA,MACzB;AAAA,IACF;AACD,UAAM,OAAM;AAAA,EACb;AAAA,EACD,UAAU;AACR,QAAI,CAAC,KAAK,QAAQ;AAChB,UAAI,mBAAK,YAAW;AAClB,8BAAK,0BAAL;AAAA,MACD;AACD;AAAA,IACD;AACD,UAAM,QAAO;AACb,QAAI,KAAK,QAAQ,MAAM;AACrB;AAAA,IACD;AACD,QAAI,mBAAK,cAAa,mBAAK,aAAY,MAAM;AAC3C,4BAAK,0BAAL;AAAA,IACD;AACD,QAAI,CAAC,KAAK,iBAAiB;AACzB,WAAK,OAAO,IAAI,IAAI;AAAA,IACrB;AAAA,EACF;AAAA,EACD,YAAY;AACV,SAAK,eAAe;AACpB,SAAK,IAAI;EACV;AAAA,EACD,UAAU;AACR,WAAO,EAAE,mBAAK,mBAAkB,mBAAK,YAAW,mBAAK,eAAc,mBAAK,gBAAe,mBAAK;AAAA,EAC7F;AAAA,EACD,IAAI,cAAc;AAChB,WAAO;AAAA,EACR;AAAA,EACD,SAAS;AACP,QAAI,KAAK,KAAK;AACZ,aAAO,KAAK;AAAA,IACb;AACD,QAAI,OAAO;AACX,QAAI,KAAK,OAAO;AACd,cAAQ,KAAK;AACb,cAAQ,KAAK;AAAA,IACd;AACD,UAAM,OAAM;AACZ,SAAK,IAAI,SAAS;AAClB,SAAK,iBAAgB;AACrB,QAAI,mBAAK,UAAS;AAChB,4BAAKF,gBAAAG,kBAAL;AAAA,IACN,OAAW;AACL,4BAAK,0BAAL;AAAA,IACD;AACD,QAAI,KAAK,OAAO;AACd,YAAM,CAAC,aAAa,YAAY,IAAI,KAAK;AACzC,WAAK,MAAM,QAAQ,aAAa,QAAQ,cAAc,KAAK,QAAQ,aAAa,KAAK,SAAS,YAAY;AAAA,IAC3G;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EAwCD,WAAW,cAAc,kBAAkB,OAAO;;AAChD,QAAI,CAAC,cAAc;AACjB,qBAAe;AAAA,IAChB;AACD,UAAM;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,IACd,IAAQ,mBAAK;AACT,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,QAAI,SAAS,mBAAK;AAClB,QAAI,QAAQ,aACV,SAAS;AACX,QAAI,cAAc,gBAAgB,eAAe,cAAc;AAC7D,YAAM,QAAQ,KAAK,IAAI,eAAe,aAAa,eAAe,YAAY;AAC9E,cAAQ,KAAK,MAAM,cAAc,KAAK;AACtC,eAAS,KAAK,MAAM,eAAe,KAAK;AACxC,UAAI,CAAC,mBAAK,SAAQ;AAChB,iBAAS,sBAAK,8BAAL,WAAkB,OAAO;AAAA,MACnC;AAAA,IACF;AACD,WAAO,QAAQ;AACf,WAAO,SAAS;AAChB,UAAM,MAAM,OAAO,WAAW,IAAI;AAClC,QAAI,SAAS,KAAK,WAAW;AAC7B,QAAI,QAAQ,SACV,QAAQ;AACV,QAAI,KAAK,WAAW,cAAc,QAAQ;AACxC,cAAQ;AAAA,IACT,YAAU7D,MAAA,OAAO,eAAP,gBAAAA,IAAA,aAAoB,gCAAgC,SAAS;AACtE,cAAQ;AACR,cAAQ;AAAA,IACT;AACD,UAAM,SAAS;AACf,UAAM,UAAU,IAAI,gBAAgB,SAAS,GAAG,SAAS,CAAC;AAC1D,UAAM,aAAa,QAAQ,WAAW,IAAI;AAC1C,eAAW,YAAY;AACvB,eAAW,SAAS,GAAG,GAAG,SAAS,GAAG,SAAS,CAAC;AAChD,eAAW,YAAY;AACvB,eAAW,SAAS,GAAG,GAAG,QAAQ,MAAM;AACxC,eAAW,SAAS,QAAQ,QAAQ,QAAQ,MAAM;AAClD,QAAI,YAAY,IAAI,cAAc,SAAS,QAAQ;AACnD,QAAI,SAAS,GAAG,GAAG,OAAO,MAAM;AAChC,QAAI,iBAAiB;AACnB,YAAM,YAAY,IAAI,gBAAgB,OAAO,MAAM;AACnD,YAAM,eAAe,UAAU,WAAW,MAAM;AAAA,QAC9C,oBAAoB;AAAA,MAC5B,CAAO;AACD,mBAAa,UAAU,QAAQ,GAAG,GAAG,OAAO,OAAO,OAAO,QAAQ,GAAG,GAAG,OAAO,MAAM;AACrF,YAAM,OAAO,aAAa,aAAa,GAAG,GAAG,OAAO,MAAM,EAAE;AAC5D,UAAI,UAAU,WAAW,GAAG,CAAC;AAC7B,aAAO;AAAA,QACL;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACT;AAAA,IACK;AACD,QAAI,UAAU,QAAQ,GAAG,GAAG,OAAO,OAAO,OAAO,QAAQ,GAAG,GAAG,OAAO,MAAM;AAC5E,WAAO;AAAA,MACL;AAAA,MACA,WAAW;AAAA,IACjB;AAAA,EACG;AAAA,EA2DD,qBAAqB;AACnB,WAAO,mBAAK;AAAA,EACb;AAAA,EA+CD,OAAO,YAAY,MAAM,QAAQ,WAAW;AAC1C,QAAI,gBAAgB,wBAAwB;AAC1C,aAAO;AAAA,IACR;AACD,UAAM,SAAS,MAAM,YAAY,MAAM,QAAQ,SAAS;AACxD,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAG;AACJ,QAAI,YAAY,UAAU,aAAa,UAAU,QAAQ,GAAG;AAC1D,2BAAO,WAAY;AAAA,IACzB,OAAW;AACL,2BAAO,YAAa;AAAA,IACrB;AACD,yBAAO,QAAS;AAChB,UAAM,CAAC,aAAa,YAAY,IAAI,OAAO;AAC3C,WAAO,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK;AACrC,WAAO,UAAU,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK;AACtC,QAAI,mBAAmB;AACrB,aAAO,cAAc;AAAA,IACtB;AACD,WAAO;AAAA,EACR;AAAA,EACD,UAAU,eAAe,OAAO,UAAU,MAAM;AAC9C,QAAI,KAAK,WAAW;AAClB,aAAO;AAAA,IACR;AACD,UAAM,aAAa;AAAA,MACjB,gBAAgB,qBAAqB;AAAA,MACrC,UAAU,mBAAK;AAAA,MACf,WAAW,KAAK;AAAA,MAChB,MAAM,KAAK,QAAQ,GAAG,CAAC;AAAA,MACvB,UAAU,KAAK;AAAA,MACf,OAAO,mBAAK;AAAA,MACZ,oBAAoB,KAAK;AAAA,IAC/B;AACI,QAAI,cAAc;AAChB,iBAAW,YAAY,sBAAK,sCAAL,WAAsB;AAC7C,iBAAW,oBAAoB,KAAK,iBAAiB,IAAI;AACzD,aAAO;AAAA,IACR;AACD,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACN,IAAQ,KAAK,iBAAiB,KAAK;AAC/B,QAAI,CAAC,cAAc,SAAS;AAC1B,iBAAW,oBAAoB;AAAA,QAC7B,MAAM;AAAA,QACN,KAAK;AAAA,MACb;AAAA,IACK;AACD,QAAI,YAAY,MAAM;AACpB,aAAO;AAAA,IACR;AACD,YAAQ,WAAR,QAAQ,SAAW,oBAAI;AACvB,UAAM,OAAO,mBAAK,WAAU,WAAW,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,MAAM,WAAW,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,KAAK;AACnH,QAAI,CAAC,QAAQ,OAAO,IAAI,mBAAK,UAAS,GAAG;AACvC,cAAQ,OAAO,IAAI,mBAAK,YAAW;AAAA,QACjC;AAAA,QACA;AAAA,MACR,CAAO;AACD,iBAAW,SAAS,sBAAK,sCAAL,WAAsB;AAAA,IAChD,WAAe,mBAAK,SAAQ;AACtB,YAAM,WAAW,QAAQ,OAAO,IAAI,mBAAK,UAAS;AAClD,UAAI,OAAO,SAAS,MAAM;AACxB,iBAAS,OAAO;AAChB,iBAAS,WAAW,OAAO;AAC3B,iBAAS,WAAW,SAAS,sBAAK,sCAAL,WAAsB;AAAA,MACpD;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACH;AAviBE;AACA;AACA;AACA;AACA;AACA;AACA;AACA4D,aAAA;AACA;AACA;AACA;AAgDA;AAAA,sBAAiB,SAAC,MAAM,SAAS,OAAO;AACtC,MAAI,CAAC,MAAM;AACT,SAAK,OAAM;AACX;AAAA,EACD;AACD,qBAAK,SAAU,KAAK;AACpB,MAAI,CAAC,QAAQ;AACX,uBAAK,WAAY,KAAK;AACtB,uBAAK,QAAS,KAAK;AAAA,EACpB;AACD,MAAI,KAAK,MAAM;AACb,uBAAK,iBAAkB,KAAK,KAAK;AAAA,EAClC;AACD,wBAAKF,gBAAAG,kBAAL;AACD;AACD;AAAA,mBAAc,WAAG;AACf,qBAAK,gBAAiB;AACtB,OAAK,WAAW,cAAc,KAAK;AACnC,MAAI,CAAC,mBAAK,UAAS;AACjB;AAAA,EACD;AACD,MAAI,KAAK,WAAW,gCAAgC,KAAK,WAAW,qBAAqB,mBAAK,UAAS;AACrG,SAAK,aAAa;AAClB,SAAK,WAAW,YAAY,MAAM,IAAI;AACtC;AAAA,EACD;AACD,MAAI,CAAC,KAAK,WAAW,gCAAgC,KAAK,WAAW,qBAAqB,mBAAK,UAAS;AACtG,SAAK,iBAAiB;AAAA,MACpB,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,gBAAgB;AAAA,QAChB,eAAe;AAAA,MAChB;AAAA,IACT,CAAO;AACD,QAAI;AACF,WAAK,eAAc;AAAA,IACpB,QAAO;AAAA,IAAE;AAAA,EACX;AACD,OAAK,IAAI;AACV;AAkDD;AAAA,eAAU,WAAG;AACX,MAAI,mBAAK,YAAW;AAClB,SAAK,WAAW,cAAc,IAAI;AAClC,SAAK,WAAW,aAAa,UAAU,mBAAK,UAAS,EAAE,KAAK,UAAQ,sBAAK,wCAAL,WAAuB,MAAM,KAAK,EAAE,QAAQ,MAAM,sBAAK,kCAAL,UAAqB;AAC3I;AAAA,EACD;AACD,MAAI,mBAAK,aAAY;AACnB,UAAM,MAAM,mBAAK;AACjB,uBAAK,YAAa;AAClB,SAAK,WAAW,cAAc,IAAI;AAClC,uBAAK,gBAAiB,KAAK,WAAW,aAAa,WAAW,GAAG,EAAE,KAAK,UAAQ,sBAAK,wCAAL,WAAuB,KAAK,EAAE,QAAQ,MAAM,sBAAK,kCAAL,UAAqB;AACjJ;AAAA,EACD;AACD,MAAI,mBAAK,cAAa;AACpB,UAAM,OAAO,mBAAK;AAClB,uBAAK,aAAc;AACnB,SAAK,WAAW,cAAc,IAAI;AAClC,uBAAK,gBAAiB,KAAK,WAAW,aAAa,YAAY,IAAI,EAAE,KAAK,UAAQ,sBAAK,wCAAL,WAAuB,KAAK,EAAE,QAAQ,MAAM,sBAAK,kCAAL,UAAqB;AACnJ;AAAA,EACD;AACD,QAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,QAAM,OAAO;AACb,QAAM,SAAS,aAAY;AAC3B,QAAM,SAAS,KAAK,WAAW;AAC/B,qBAAK,gBAAiB,IAAI,QAAQ,aAAW;AAC3C,UAAM,iBAAiB,UAAU,YAAY;AAC3C,UAAI,CAAC,MAAM,SAAS,MAAM,MAAM,WAAW,GAAG;AAC5C,aAAK,OAAM;AAAA,MACrB,OAAe;AACL,aAAK,WAAW,cAAc,IAAI;AAClC,cAAM,OAAO,MAAM,KAAK,WAAW,aAAa,YAAY,MAAM,MAAM,CAAC,CAAC;AAC1E,aAAK,iBAAiB;AAAA,UACpB,QAAQ;AAAA,UACR,MAAM;AAAA,YACJ,gBAAgB,KAAK,WAAW;AAAA,UACjC;AAAA,QACb,CAAW;AACD,8BAAK,wCAAL,WAAuB;AAAA,MACxB;AACD;IACR,GAAS;AAAA,MACD;AAAA,IACR,CAAO;AACD,UAAM,iBAAiB,UAAU,MAAM;AACrC,WAAK,OAAM;AACX;IACR,GAAS;AAAA,MACD;AAAA,IACR,CAAO;AAAA,EACF,GAAE,QAAQ,MAAM,sBAAK,kCAAL,UAAqB;AACtC,QAAM,MAAK;AACZ;AAmEDH,iBAAA;AAAAG,mBAAa,WAAG;AACd,QAAM;AAAA,IACJ;AAAA,EACD,IAAG;AACJ,MAAI;AAAA,IACF;AAAA,IACA;AAAA,EACN,IAAQ,mBAAK;AACT,QAAM,CAAC,WAAW,UAAU,IAAI,KAAK;AACrC,QAAM,YAAY;AAClB,MAAI,KAAK,OAAO;AACd,YAAQ,KAAK,QAAQ;AACrB,aAAS,KAAK,SAAS;AAAA,EAC7B,WAAe,QAAQ,YAAY,aAAa,SAAS,YAAY,YAAY;AAC3E,UAAM,SAAS,KAAK,IAAI,YAAY,YAAY,OAAO,YAAY,aAAa,MAAM;AACtF,aAAS;AACT,cAAU;AAAA,EACX;AACD,QAAM,CAAC,aAAa,YAAY,IAAI,KAAK;AACzC,OAAK,QAAQ,QAAQ,cAAc,WAAW,SAAS,eAAe,UAAU;AAChF,OAAK,WAAW,cAAc,KAAK;AACnC,QAAM,SAAS,mBAAK,SAAU,SAAS,cAAc,QAAQ;AAC7D,MAAI,OAAO,MAAM;AACjB,MAAI,CAAC,KAAK,WAAW,gCAAgC,CAAC,KAAK,WAAW,mBAAmB;AACvF,QAAI,SAAS;AAAA,EACd;AACD,wBAAK,4BAAL,WAAiB,OAAO;AACxB,wBAAKF,kBAAAG,oBAAL;AACA,MAAI,CAAC,mBAAK,2BAA0B;AAClC,SAAK,OAAO,kBAAkB,IAAI;AAClC,uBAAK,0BAA2B;AAAA,EACjC;AACD,OAAK,iBAAiB;AAAA,IACpB,QAAQ;AAAA,EACd,CAAK;AACD,MAAI,mBAAK,kBAAiB;AACxB,WAAO,aAAa,cAAc,mBAAK,gBAAe;AAAA,EACvD;AACF;AAkED;AAAA,mBAAc,SAAC,OAAO,QAAQ;;AAC5B,QAAM,CAAC,aAAa,YAAY,IAAI,KAAK;AACzC,OAAK,QAAQ,QAAQ;AACrB,OAAK,SAAS,SAAS;AACvB,OAAK,QAAQ,OAAO,MAAM;AAC1B,OAAI9D,MAAA,KAAK,oBAAL,gBAAAA,IAAsB,YAAY;AACpC,SAAK,OAAM;AAAA,EACjB,OAAW;AACL,SAAK,kBAAiB;AAAA,EACvB;AACD,OAAK,kBAAkB;AACvB,MAAI,mBAAK,sBAAqB,MAAM;AAClC,iBAAa,mBAAK,iBAAgB;AAAA,EACnC;AACD,QAAM,eAAe;AACrB,qBAAK,kBAAmB,WAAW,MAAM;AACvC,uBAAK,kBAAmB;AACxB,0BAAK,4BAAL,WAAiB,OAAO;AAAA,EACzB,GAAE,YAAY;AAChB;AACD;AAAA,iBAAY,SAAC,OAAO,QAAQ;AAC1B,QAAM;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,EACd,IAAQ,mBAAK;AACT,MAAI,WAAW;AACf,MAAI,YAAY;AAChB,MAAI,SAAS,mBAAK;AAClB,SAAO,WAAW,IAAI,SAAS,YAAY,IAAI,QAAQ;AACrD,UAAM,YAAY;AAClB,UAAM,aAAa;AACnB,QAAI,WAAW,IAAI,OAAO;AACxB,iBAAW,YAAY,QAAQ,KAAK,MAAM,WAAW,CAAC,IAAI,IAAI,KAAK,KAAK,WAAW,CAAC;AAAA,IACrF;AACD,QAAI,YAAY,IAAI,QAAQ;AAC1B,kBAAY,aAAa,QAAQ,KAAK,MAAM,YAAY,CAAC,IAAI,IAAI,KAAK,KAAK,YAAY,CAAC;AAAA,IACzF;AACD,UAAM,YAAY,IAAI,gBAAgB,UAAU,SAAS;AACzD,UAAM,MAAM,UAAU,WAAW,IAAI;AACrC,QAAI,UAAU,QAAQ,GAAG,GAAG,WAAW,YAAY,GAAG,GAAG,UAAU,SAAS;AAC5E,aAAS,UAAU;EACpB;AACD,SAAO;AACR;AACD;AAAA,gBAAW,SAAC,OAAO,QAAQ;AACzB,UAAQ,KAAK,KAAK,KAAK;AACvB,WAAS,KAAK,KAAK,MAAM;AACzB,QAAM,SAAS,mBAAK;AACpB,MAAI,CAAC,UAAU,OAAO,UAAU,SAAS,OAAO,WAAW,QAAQ;AACjE;AAAA,EACD;AACD,SAAO,QAAQ;AACf,SAAO,SAAS;AAChB,QAAM,SAAS,mBAAK,UAAS,mBAAK,WAAU,sBAAK,8BAAL,WAAkB,OAAO;AACrE,QAAM,MAAM,OAAO,WAAW,IAAI;AAClC,MAAI,SAAS,KAAK,WAAW;AAC7B,MAAI,UAAU,QAAQ,GAAG,GAAG,OAAO,OAAO,OAAO,QAAQ,GAAG,GAAG,OAAO,MAAM;AAC7E;AAID;AAAA,qBAAgB,SAAC,OAAO;AACtB,MAAI,OAAO;AACT,QAAI,mBAAK,SAAQ;AACf,YAAM,MAAM,KAAK,WAAW,aAAa,UAAU,mBAAK,UAAS;AACjE,UAAI,KAAK;AACP,eAAO;AAAA,MACR;AAAA,IACF;AACD,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,KAAC;AAAA,MACC,OAAO,OAAO;AAAA,MACd,QAAQ,OAAO;AAAA,IACvB,IAAU,mBAAK;AACT,UAAM,MAAM,OAAO,WAAW,IAAI;AAClC,QAAI,UAAU,mBAAK,UAAS,GAAG,CAAC;AAChC,WAAO,OAAO;EACf;AACD,MAAI,mBAAK,SAAQ;AACf,UAAM,CAAC,WAAW,UAAU,IAAI,KAAK;AACrC,UAAM,QAAQ,KAAK,MAAM,KAAK,QAAQ,YAAY,cAAc,gBAAgB;AAChF,UAAM,SAAS,KAAK,MAAM,KAAK,SAAS,aAAa,cAAc,gBAAgB;AACnF,UAAM,YAAY,IAAI,gBAAgB,OAAO,MAAM;AACnD,UAAM,MAAM,UAAU,WAAW,IAAI;AACrC,QAAI,UAAU,mBAAK,UAAS,GAAG,GAAG,mBAAK,SAAQ,OAAO,mBAAK,SAAQ,QAAQ,GAAG,GAAG,OAAO,MAAM;AAC9F,WAAO,UAAU;EAClB;AACD,SAAO,gBAAgB,mBAAK,QAAO;AACpC;AACD2D,mBAAA;AAAAG,qBAAe,WAAG;AAChB,MAAI,CAAC,KAAK,WAAW,SAAS;AAC5B;AAAA,EACD;AACD,qBAAKF,YAAY,IAAI,eAAe,aAAW;AAC7C,UAAM,OAAO,QAAQ,CAAC,EAAE;AACxB,QAAI,KAAK,SAAS,KAAK,QAAQ;AAC7B,4BAAK,kCAAL,WAAoB,KAAK,OAAO,KAAK;AAAA,IACtC;AAAA,EACP,CAAK;AACD,qBAAKA,YAAU,QAAQ,KAAK,GAAG;AAC/B,OAAK,WAAW,QAAQ,iBAAiB,SAAS,MAAM;;AACtD,KAAA5D,MAAA,mBAAK4D,gBAAL,gBAAA5D,IAAgB;AAChB,uBAAK4D,YAAY;AAAA,EACvB,GAAO;AAAA,IACD,MAAM;AAAA,EACZ,CAAK;AACF;AAhdD,cAZI,cAYG,SAAQ;AACf,cAbI,cAaG,eAAc,qBAAqB;AAb5C,IAAM,cAAN;AAkjBA,MAAM,yBAAN,MAAM,uBAAsB;AAAA,EAe1B,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAAK;AA0NH;AAuJA,uBAAI;AAMJ;AA+CA;AA0GA;AAxiBA,uBAAAG,wBAAA;AACA,oCAAc;AACd,yCAAmB;AACnB,iCAAW;AACX,8CAAwB;AACxB,iCAAW,oBAAI;AACf,wCAAkB;AAClB,sCAAgB;AAChB,qCAAe;AACf,mCAAa;AACb,yCAAmB;AACnB,uBAAA5D,aAAA;AAcE,UAAM,cAAc,CAAC,GAAG,qCAAsB6D,eAAa,OAAQ;AACnE,QAAI,CAAC,uBAAsB,cAAc;AACvC,6BAAsB,eAAe;AACrC,iBAAW,cAAc,aAAa;AACpC,mBAAW,WAAW,MAAM,SAAS;AAAA,MACtC;AAAA,IACF;AACD,cAAU,oBAAoB,WAAW;AACzC,uBAAK7D,aAAa;AAClB,SAAK,YAAY;AACjB,SAAK,MAAM;AACX,uBAAK4D,wBAAwB;AAC7B,uBAAK,kBAAmB;AACxB,SAAK,WAAW;AAChB,uBAAK,YAAa;AAClB,SAAK,YAAY;AACjB,uBAAK5D,aAAW,SAAS,IAAI;AAAA,EAC9B;AAAA,EACD,IAAI,UAAU;AACZ,WAAO,mBAAK,UAAS,SAAS;AAAA,EAC/B;AAAA,EACD,IAAI,cAAc;AAChB,WAAO,KAAK,WAAW,mBAAKA,aAAW,QAAS,MAAK,qBAAqB;AAAA,EAC3E;AAAA,EACD,cAAc,MAAM;AAClB,uBAAKA,aAAW,cAAc,IAAI;AAAA,EACnC;AAAA,EACD,WAAW,OAAO,mBAAKA,aAAW,QAAO,GAAI;AAC3C,0BAAK,sBAAL;AACA,YAAQ,MAAI;AAAA,MACV,KAAK,qBAAqB;AACxB,aAAK,qBAAoB;AACzB,aAAK,oBAAoB,KAAK;AAC9B,aAAK,mCAAmC,IAAI;AAC5C,aAAK,aAAY;AACjB;AAAA,MACF,KAAK,qBAAqB;AACxB,aAAK,qBAAqB,KAAK;AAC/B,aAAK,qBAAoB;AACzB,aAAK,oBAAoB,IAAI;AAC7B,aAAK,aAAY;AACjB;AAAA,MACF,KAAK,qBAAqB;AACxB,aAAK,oBAAmB;AACxB,aAAK,oBAAoB,KAAK;AAC9B,aAAK,aAAY;AACjB;AAAA,MACF;AACE,aAAK,qBAAoB;AACzB,aAAK,oBAAoB,IAAI;AAC7B,aAAK,YAAW;AAAA,IACnB;AACD,SAAK,mCAAmC,KAAK;AAC7C,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,KAAK;AACT,eAAW,cAAc,qCAAsB6D,eAAa,OAAM,GAAI;AACpE,gBAAU,OAAO,GAAG,WAAW,KAAK,WAAW,SAAS,WAAW,WAAW;AAAA,IAC/E;AACD,SAAK,IAAI,SAAS;AAAA,EACnB;AAAA,EACD,aAAa,WAAW;;AACtB,WAAO,gBAAchE,MAAA,mBAAK,gBAAL,gBAAAA,IAAiB;AAAA,EACvC;AAAA,EACD,qBAAqB,cAAc;AACjC,QAAI,mBAAKG,aAAW,QAAO,MAAO,qBAAqB,KAAK;AAC1D;AAAA,IACD;AACD,QAAI,CAAC,cAAc;AACjB,iBAAW8D,WAAU,mBAAK,UAAS,OAAM,GAAI;AAC3C,YAAIA,QAAO,WAAW;AACpB,UAAAA,QAAO,gBAAe;AACtB;AAAA,QACD;AAAA,MACF;AAAA,IACF;AACD,UAAM,SAAS,KAAK,sBAAsB;AAAA,MACxC,SAAS;AAAA,MACT,SAAS;AAAA,IACV,GAAE,KAAK;AACR,WAAO,gBAAe;AAAA,EACvB;AAAA,EACD,gBAAgB,WAAW;AACzB,uBAAK9D,aAAW,gBAAgB,SAAS;AAAA,EAC1C;AAAA,EACD,YAAY,QAAQ;AAClB,uBAAKA,aAAW,YAAY,MAAM;AAAA,EACnC;AAAA,EACD,cAAc,UAAU,OAAO;AAC7B,SAAK,IAAI,UAAU,OAAO,WAAW,CAAC,OAAO;AAAA,EAC9C;AAAA,EACD,oBAAoB,UAAU,OAAO;AACnC,SAAK,IAAI,UAAU,OAAO,YAAY,CAAC,OAAO;AAAA,EAC/C;AAAA,EACD,mCAAmC,UAAU,OAAO;;AAClD,KAAAH,MAAA,mBAAK,sBAAL,gBAAAA,IAAuB,IAAI,UAAU,OAAO,YAAY,CAAC;AAAA,EAC1D;AAAA,EACD,SAAS;AACP,SAAK,IAAI,WAAW;AACpB,SAAK,oBAAoB,IAAI;AAC7B,UAAM,uBAAuB,oBAAI;AACjC,eAAW,UAAU,mBAAK,UAAS,OAAM,GAAI;AAC3C,aAAO,cAAa;AACpB,aAAO,KAAK,IAAI;AAChB,UAAI,OAAO,qBAAqB;AAC9B,2BAAKG,aAAW,gCAAgC,MAAM;AACtD,6BAAqB,IAAI,OAAO,mBAAmB;AAAA,MACpD;AAAA,IACF;AACD,QAAI,CAAC,mBAAK,mBAAkB;AAC1B;AAAA,IACD;AACD,UAAM,YAAY,mBAAK,kBAAiB,uBAAsB;AAC9D,eAAW,YAAY,WAAW;AAChC,eAAS,KAAI;AACb,UAAI,mBAAKA,aAAW,2BAA2B,SAAS,KAAK,EAAE,GAAG;AAChE;AAAA,MACD;AACD,UAAI,qBAAqB,IAAI,SAAS,KAAK,EAAE,GAAG;AAC9C;AAAA,MACD;AACD,YAAM,SAAS,KAAK,YAAY,QAAQ;AACxC,UAAI,CAAC,QAAQ;AACX;AAAA,MACD;AACD,WAAK,aAAa,MAAM;AACxB,aAAO,cAAa;AAAA,IACrB;AAAA,EACF;AAAA,EACD,UAAU;;AACR,uBAAK,cAAe;AACpB,SAAK,IAAI,WAAW;AACpB,SAAK,oBAAoB,KAAK;AAC9B,UAAM,qBAAqB,oBAAI;AAC/B,UAAM,mBAAmB,oBAAI;AAC7B,eAAW,UAAU,mBAAK,UAAS,OAAM,GAAI;AAC3C,aAAO,eAAc;AACrB,UAAI,CAAC,OAAO,qBAAqB;AAC/B;AAAA,MACD;AACD,UAAI,OAAO,UAAW,MAAK,MAAM;AAC/B,2BAAmB,IAAI,OAAO,qBAAqB,MAAM;AACzD;AAAA,MACR,OAAa;AACL,yBAAiB,IAAI,OAAO,qBAAqB,MAAM;AAAA,MACxD;AACD,OAAAH,MAAA,KAAK,sBAAsB,OAAO,mBAAmB,MAArD,gBAAAA,IAAwD;AACxD,aAAO,OAAM;AAAA,IACd;AACD,QAAI,mBAAK,mBAAkB;AACzB,YAAM,YAAY,mBAAK,kBAAiB,uBAAsB;AAC9D,iBAAW,YAAY,WAAW;AAChC,cAAM;AAAA,UACJ;AAAA,QACV,IAAY,SAAS;AACb,YAAI,mBAAKG,aAAW,2BAA2B,EAAE,GAAG;AAClD;AAAA,QACD;AACD,YAAI,SAAS,iBAAiB,IAAI,EAAE;AACpC,YAAI,QAAQ;AACV,iBAAO,uBAAuB,QAAQ;AACtC,iBAAO,KAAK,KAAK;AACjB,mBAAS,KAAI;AACb;AAAA,QACD;AACD,iBAAS,mBAAmB,IAAI,EAAE;AAClC,YAAI,QAAQ;AACV,6BAAKA,aAAW,6BAA6B,MAAM;AACnD,iBAAO,wBAAwB,QAAQ;AACvC,iBAAO,KAAK,KAAK;AAAA,QAClB;AACD,iBAAS,KAAI;AAAA,MACd;AAAA,IACF;AACD,0BAAK,sBAAL;AACA,QAAI,KAAK,SAAS;AAChB,WAAK,IAAI,SAAS;AAAA,IACnB;AACD,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,KAAK;AACT,eAAW,cAAc,qCAAsB6D,eAAa,OAAM,GAAI;AACpE,gBAAU,OAAO,GAAG,WAAW,KAAK,SAAS;AAAA,IAC9C;AACD,SAAK,qBAAoB;AACzB,SAAK,mCAAmC,IAAI;AAC5C,uBAAK,cAAe;AAAA,EACrB;AAAA,EACD,sBAAsB,IAAI;;AACxB,aAAOhE,MAAA,mBAAK,sBAAL,gBAAAA,IAAuB,sBAAsB,QAAO;AAAA,EAC5D;AAAA,EACD,gBAAgB,QAAQ;AACtB,UAAM,gBAAgB,mBAAKG,aAAW,UAAS;AAC/C,QAAI,kBAAkB,QAAQ;AAC5B;AAAA,IACD;AACD,uBAAKA,aAAW,gBAAgB,MAAM;AAAA,EACvC;AAAA,EACD,sBAAsB;;AACpB,SAAK,IAAI,WAAW;AACpB,UAAIH,MAAA,mBAAK,gBAAL,gBAAAA,IAAiB,QAAO,CAAC,mBAAK,mBAAkB;AAClD,yBAAK,kBAAmB,IAAI;AAC5B,YAAM,SAAS,mBAAKG,aAAW,eAAe,mBAAK,iBAAgB;AACnE,yBAAK,YAAW,IAAI,iBAAiB,eAAe,sBAAK,gDAAsB,KAAK,IAAI,GAAG;AAAA,QACzF;AAAA,MACR,CAAO;AACD,yBAAK,YAAW,IAAI,UAAU,IAAI,cAAc;AAAA,IACjD;AAAA,EACF;AAAA,EACD,uBAAuB;;AACrB,SAAK,IAAI,WAAW;AACpB,UAAIH,MAAA,mBAAK,gBAAL,gBAAAA,IAAiB,QAAO,mBAAK,mBAAkB;AACjD,yBAAK,kBAAiB;AACtB,yBAAK,kBAAmB;AACxB,yBAAK,YAAW,IAAI,UAAU,OAAO,cAAc;AAAA,IACpD;AAAA,EACF;AAAA,EA2BD,cAAc;AACZ,QAAI,mBAAK,WAAU;AACjB;AAAA,IACD;AACD,uBAAK,UAAW,IAAI;AACpB,UAAM,SAAS,mBAAKG,aAAW,eAAe,mBAAK,SAAQ;AAC3D,SAAK,IAAI,iBAAiB,eAAe,KAAK,YAAY,KAAK,IAAI,GAAG;AAAA,MACpE;AAAA,IACN,CAAK;AACD,SAAK,IAAI,iBAAiB,aAAa,KAAK,UAAU,KAAK,IAAI,GAAG;AAAA,MAChE;AAAA,IACN,CAAK;AAAA,EACF;AAAA,EACD,eAAe;;AACb,KAAAH,MAAA,mBAAK,cAAL,gBAAAA,IAAe;AACf,uBAAK,UAAW;AAAA,EACjB;AAAA,EACD,OAAO,QAAQ;AACb,uBAAK,UAAS,IAAI,OAAO,IAAI,MAAM;AACnC,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,QAAI,uBAAuB,mBAAKG,aAAW,2BAA2B,mBAAmB,GAAG;AAC1F,yBAAKA,aAAW,+BAA+B,MAAM;AAAA,IACtD;AAAA,EACF;AAAA,EACD,OAAO,QAAQ;;AACb,uBAAK,UAAS,OAAO,OAAO,EAAE;AAC9B,KAAAH,MAAA,mBAAK+D,4BAAL,gBAAA/D,IAA4B,yBAAyB,OAAO;AAC5D,QAAI,CAAC,mBAAK,iBAAgB,OAAO,qBAAqB;AACpD,yBAAKG,aAAW,4BAA4B,MAAM;AAAA,IACnD;AAAA,EACF;AAAA,EACD,OAAO,QAAQ;AACb,SAAK,OAAO,MAAM;AAClB,uBAAKA,aAAW,aAAa,MAAM;AACnC,WAAO,IAAI;AACX,WAAO,kBAAkB;AACzB,QAAI,CAAC,mBAAK,gBAAe;AACvB,WAAK,qBAAqB,KAAK;AAAA,IAChC;AAAA,EACF;AAAA,EACD,aAAa,QAAQ;;AACnB,QAAI,OAAO,WAAW,MAAM;AAC1B;AAAA,IACD;AACD,QAAI,OAAO,UAAU,OAAO,qBAAqB;AAC/C,yBAAKA,aAAW,4BAA4B,OAAO,mBAAmB;AACtE,uBAAiB,wBAAwB,MAAM;AAC/C,aAAO,sBAAsB;AAAA,IAC9B;AACD,SAAK,OAAO,MAAM;AAClB,KAAAH,MAAA,OAAO,WAAP,gBAAAA,IAAe,OAAO;AACtB,WAAO,UAAU,IAAI;AACrB,QAAI,OAAO,OAAO,OAAO,iBAAiB;AACxC,aAAO,IAAI;AACX,WAAK,IAAI,OAAO,OAAO,GAAG;AAAA,IAC3B;AAAA,EACF;AAAA,EACD,IAAI,QAAQ;AACV,QAAI,OAAO,WAAW,QAAQ,OAAO,iBAAiB;AACpD;AAAA,IACD;AACD,SAAK,aAAa,MAAM;AACxB,uBAAKG,aAAW,UAAU,MAAM;AAChC,SAAK,OAAO,MAAM;AAClB,QAAI,CAAC,OAAO,iBAAiB;AAC3B,YAAM,MAAM,OAAO;AACnB,WAAK,IAAI,OAAO,GAAG;AACnB,aAAO,kBAAkB;AAAA,IAC1B;AACD,WAAO,kBAAiB;AACxB,WAAO,UAAS;AAChB,uBAAKA,aAAW,uBAAuB,MAAM;AAC7C,WAAO,iBAAiB,OAAO,oBAAoB;AAAA,EACpD;AAAA,EACD,gBAAgB,QAAQ;;AACtB,QAAI,CAAC,OAAO,iBAAiB;AAC3B;AAAA,IACD;AACD,UAAM;AAAA,MACJ;AAAA,IACD,IAAG;AACJ,QAAI,OAAO,IAAI,SAAS,aAAa,KAAK,CAAC,mBAAK,wBAAuB;AACrE,aAAO,sBAAsB;AAC7B,yBAAK,uBAAwB,WAAW,MAAM;AAC5C,2BAAK,uBAAwB;AAC7B,YAAI,CAAC,OAAO,IAAI,SAAS,SAAS,aAAa,GAAG;AAChD,iBAAO,IAAI,iBAAiB,WAAW,MAAM;AAC3C,mBAAO,sBAAsB;AAAA,UACzC,GAAa;AAAA,YACD,MAAM;AAAA,YACN,QAAQ,mBAAKA,aAAW;AAAA,UACpC,CAAW;AACD,wBAAc,MAAK;AAAA,QAC7B,OAAe;AACL,iBAAO,sBAAsB;AAAA,QAC9B;AAAA,MACF,GAAE,CAAC;AAAA,IACL;AACD,WAAO,uBAAsBH,MAAA,mBAAK+D,4BAAL,gBAAA/D,IAA4B,iBAAiB,KAAK,KAAK,OAAO,KAAK,OAAO,YAAY;AAAA,EACpH;AAAA,EACD,aAAa,QAAQ;AACnB,QAAI,OAAO,oBAAoB;AAC7B,aAAO,WAAP,OAAO,SAAW;AAClB,aAAO,QAAO;AACd,aAAO,KAAI;AAAA,IACjB,OAAW;AACL,WAAK,IAAI,MAAM;AAAA,IAChB;AAAA,EACF;AAAA,EACD,kBAAkB,QAAQ;AACxB,UAAM,MAAM,MAAM,OAAO,WAAW,QAAQ,MAAM;AAClD,UAAM,OAAO,MAAM;AACjB,aAAO,OAAM;AAAA,IACnB;AACI,SAAK,YAAY;AAAA,MACf;AAAA,MACA;AAAA,MACA,UAAU;AAAA,IAChB,CAAK;AAAA,EACF;AAAA,EACD,YAAY;AACV,WAAO,mBAAKG,aAAW;EACxB;AAAA,EAID,eAAe,IAAI;AACjB,WAAO,mBAAKA,aAAW,eAAe,EAAE;AAAA,EACzC;AAAA,EAKD,0BAA0B;;AACxB,YAAOH,MAAA,mBAAK,+CAAL,gBAAAA,IAAyB;AAAA,EACjC;AAAA,EACD,YAAY,MAAM,QAAQ;AACxB,uBAAKG,aAAW,cAAc,IAAI;AAClC,uBAAKA,aAAW,WAAW,IAAI;AAC/B,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACN,IAAQ,sBAAK,oCAAL;AACJ,UAAM,KAAK,KAAK;AAChB,UAAM,SAAS,sBAAK,sCAAL,WAAsB;AAAA,MACnC,QAAQ;AAAA,MACR;AAAA,MACA,GAAG;AAAA,MACH,GAAG;AAAA,MACH,WAAW,mBAAKA;AAAA,MAChB,YAAY;AAAA,MACZ,GAAG;AAAA,IACT;AACI,QAAI,QAAQ;AACV,WAAK,IAAI,MAAM;AAAA,IAChB;AAAA,EACF;AAAA,EACD,YAAY,MAAM;;AAChB,aAAOH,MAAA,qCAAsBgE,eAAa,IAAI,KAAK,kBAAkB,KAAK,oBAAoB,MAAvF,gBAAAhE,IAA0F,YAAY,MAAM,MAAM,mBAAKG,kBAAe;AAAA,EAC9I;AAAA,EACD,sBAAsB,OAAO,YAAY,OAAO,IAAI;AAClD,UAAM,KAAK,KAAK;AAChB,UAAM,SAAS,sBAAK,sCAAL,WAAsB;AAAA,MACnC,QAAQ;AAAA,MACR;AAAA,MACA,GAAG,MAAM;AAAA,MACT,GAAG,MAAM;AAAA,MACT,WAAW,mBAAKA;AAAA,MAChB;AAAA,MACA,GAAG;AAAA,IACT;AACI,QAAI,QAAQ;AACV,WAAK,IAAI,MAAM;AAAA,IAChB;AACD,WAAO;AAAA,EACR;AAAA,EAoBD,eAAe;AACb,SAAK,sBAAsB,sBAAK,oCAAL,YAAwB,IAAI;AAAA,EACxD;AAAA,EACD,YAAY,QAAQ;AAClB,uBAAKA,aAAW,YAAY,MAAM;AAAA,EACnC;AAAA,EACD,eAAe,QAAQ;AACrB,uBAAKA,aAAW,eAAe,MAAM;AAAA,EACtC;AAAA,EACD,WAAW,QAAQ;AACjB,WAAO,mBAAKA,aAAW,WAAW,MAAM;AAAA,EACzC;AAAA,EACD,SAAS,QAAQ;AACf,uBAAKA,aAAW,SAAS,MAAM;AAAA,EAChC;AAAA,EACD,UAAU,OAAO;AACf,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,iBAAiB;AACrB,QAAI,MAAM,WAAW,KAAK,MAAM,WAAW,OAAO;AAChD;AAAA,IACD;AACD,QAAI,MAAM,WAAW,KAAK,KAAK;AAC7B;AAAA,IACD;AACD,QAAI,CAAC,mBAAK,kBAAiB;AACzB;AAAA,IACD;AACD,uBAAK,iBAAkB;AACvB,QAAI,CAAC,mBAAK,cAAa;AACrB,yBAAK,aAAc;AACnB;AAAA,IACD;AACD,QAAI,mBAAKA,aAAW,QAAO,MAAO,qBAAqB,OAAO;AAC5D,yBAAKA,aAAW;AAChB;AAAA,IACD;AACD,SAAK,sBAAsB,OAAO,KAAK;AAAA,EACxC;AAAA,EACD,YAAY,OAAO;AACjB,QAAI,mBAAKA,aAAW,QAAO,MAAO,qBAAqB,WAAW;AAChE,WAAK,oBAAmB;AAAA,IACzB;AACD,QAAI,mBAAK,kBAAiB;AACxB,yBAAK,iBAAkB;AACvB;AAAA,IACD;AACD,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ,iBAAiB;AACrB,QAAI,MAAM,WAAW,KAAK,MAAM,WAAW,OAAO;AAChD;AAAA,IACD;AACD,QAAI,MAAM,WAAW,KAAK,KAAK;AAC7B;AAAA,IACD;AACD,uBAAK,iBAAkB;AACvB,UAAM,SAAS,mBAAKA,aAAW,UAAS;AACxC,uBAAK,aAAc,CAAC,UAAU,OAAO,QAAO;AAAA,EAC7C;AAAA,EACD,cAAc,QAAQ,GAAG,GAAG;AAC1B,UAAM,QAAQ,mBAAKA,aAAW,WAAW,GAAG,CAAC;AAC7C,QAAI,UAAU,QAAQ,UAAU,MAAM;AACpC,aAAO;AAAA,IACR;AACD,UAAM,aAAa,MAAM;AACzB,WAAO;AAAA,EACR;AAAA,EACD,UAAU;;AACR,UAAIH,MAAA,mBAAKG,aAAW,UAAS,MAAzB,gBAAAH,IAA6B,YAAW,MAAM;AAChD,yBAAKG,aAAW;AAChB,yBAAKA,aAAW,gBAAgB,IAAI;AAAA,IACrC;AACD,QAAI,mBAAK,wBAAuB;AAC9B,mBAAa,mBAAK,sBAAqB;AACvC,yBAAK,uBAAwB;AAAA,IAC9B;AACD,eAAW,UAAU,mBAAK,UAAS,OAAM,GAAI;AAC3C,+BAAK4D,4BAAL,mBAA4B,yBAAyB,OAAO;AAC5D,aAAO,UAAU,IAAI;AACrB,aAAO,kBAAkB;AACzB,aAAO,IAAI;IACZ;AACD,SAAK,MAAM;AACX,uBAAK,UAAS;AACd,uBAAK5D,aAAW,YAAY,IAAI;AAAA,EACjC;AAAA,EAUD,OAAO;AAAA,IACL;AAAA,EACJ,GAAK;AACD,SAAK,WAAW;AAChB,uBAAmB,KAAK,KAAK,QAAQ;AACrC,eAAW,UAAU,mBAAKA,aAAW,WAAW,KAAK,SAAS,GAAG;AAC/D,WAAK,IAAI,MAAM;AACf,aAAO,QAAO;AAAA,IACf;AACD,SAAK,WAAU;AAAA,EAChB;AAAA,EACD,OAAO;AAAA,IACL;AAAA,EACJ,GAAK;AACD,uBAAKA,aAAW;AAChB,0BAAK,sBAAL;AACA,UAAM,cAAc,KAAK,SAAS;AAClC,UAAM,WAAW,SAAS;AAC1B,SAAK,WAAW;AAChB,uBAAmB,KAAK,KAAK;AAAA,MAC3B;AAAA,IACN,CAAK;AACD,QAAI,gBAAgB,UAAU;AAC5B,iBAAW,UAAU,mBAAK,UAAS,OAAM,GAAI;AAC3C,eAAO,OAAO,QAAQ;AAAA,MACvB;AAAA,IACF;AACD,SAAK,qBAAqB,KAAK;AAAA,EAChC;AAAA,EACD,IAAI,iBAAiB;AACnB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACN,IAAQ,KAAK,SAAS;AAClB,WAAO,CAAC,WAAW,UAAU;AAAA,EAC9B;AAAA,EACD,IAAI,QAAQ;AACV,WAAO,mBAAKA,aAAW,eAAe;AAAA,EACvC;AACH;AAxlBE4D,yBAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA5D,cAAA;AAEO6D,gBAAA;AAqOP;AAAA,0BAAqB,SAAC,OAAO;AAC3B,qBAAK7D,aAAW;AAChB,QAAM;AAAA,IACJ;AAAA,EACD,IAAG;AACJ,MAAI,WAAW,mBAAK,YAAW,OAAO,OAAO,UAAU,SAAS,cAAc,KAAK,mBAAK,YAAW,IAAI,SAAS,MAAM,GAAG;AACvH,UAAM;AAAA,MACJ;AAAA,IACR,IAAU,iBAAiB;AACrB,QAAI,MAAM,WAAW,KAAK,MAAM,WAAW,OAAO;AAChD;AAAA,IACD;AACD,uBAAKA,aAAW,eAAe,aAAa,MAAM,IAAI;AACtD,uBAAK,YAAW,IAAI,UAAU,IAAI,MAAM;AACxC,SAAK,cAAa;AAClB,oBAAgB,kBAAkB,MAAM,mBAAKA,aAAW,cAAc,OAAO,KAAK;AAClF,uBAAK,YAAW,IAAI,iBAAiB,aAAa,MAAM;AACtD,yBAAK,YAAW,IAAI,UAAU,OAAO,MAAM;AAC3C,WAAK,cAAc,IAAI;AAAA,IAC/B,GAAS;AAAA,MACD,MAAM;AAAA,MACN,QAAQ,mBAAKA,aAAW;AAAA,IAChC,CAAO;AACD,UAAM,eAAc;AAAA,EACrB;AACF;AA8HG;AAAA,wBAAkB,WAAG;AACvB,SAAO,qCAAsB6D,eAAa,IAAI,mBAAK7D,aAAW,QAAO,CAAE;AACxE;AAID;AAAA,qBAAgB,SAAC,QAAQ;AACvB,QAAM,aAAa,mBAAK;AACxB,SAAO,aAAa,IAAI,WAAW,UAAU,YAAY,MAAM,IAAI;AACpE;AA4CD;AAAA,oBAAe,WAAG;AAChB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACN,IAAQ,KAAK,IAAI;AACb,QAAM,MAAM,KAAK,IAAI,GAAG,CAAC;AACzB,QAAM,MAAM,KAAK,IAAI,GAAG,CAAC;AACzB,QAAM,MAAM,KAAK,IAAI,OAAO,YAAY,IAAI,KAAK;AACjD,QAAM,MAAM,KAAK,IAAI,OAAO,aAAa,IAAI,MAAM;AACnD,QAAM,WAAW,MAAM,OAAO,IAAI;AAClC,QAAM,WAAW,MAAM,OAAO,IAAI;AAClC,QAAM,CAAC,SAAS,OAAO,IAAI,KAAK,SAAS,WAAW,QAAQ,IAAI,CAAC,SAAS,OAAO,IAAI,CAAC,SAAS,OAAO;AACtG,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACN;AACG;AAwFD;AAAA,aAAQ,WAAG;AACT,qBAAK,eAAgB;AACrB,aAAW,UAAU,mBAAK,UAAS,OAAM,GAAI;AAC3C,QAAI,OAAO,WAAW;AACpB,aAAO,OAAM;AAAA,IACd;AAAA,EACF;AACD,qBAAK,eAAgB;AACtB;AApiBD,cAbI,wBAaG,gBAAe;AACtB,aAdI,wBAcG6D,eAAe,IAAI,IAAI,CAAC,gBAAgB,WAAW,aAAa,eAAe,EAAE,IAAI,UAAQ,CAAC,KAAK,aAAa,IAAI,CAAC,CAAC;AAd/H,IAAM,wBAAN;AA8lBA,MAAM,aAAN,MAAM,WAAU;AAAA,EAKd,YAAY;AAAA,IACV;AAAA,EACJ,GAAK;AAmCH;AAOA;AAhDA,uBAAAE,UAAU;AACV,uBAAA5D,MAAM;AACN,iCAAW,oBAAI;AACf,kCAAY,oBAAI;AAId,SAAK,YAAY;AAAA,EAClB;AAAA,EACD,UAAU,QAAQ;AAChB,QAAI,CAAC,mBAAK4D,WAAS;AACjB,yBAAKA,UAAU;AACf;AAAA,IACD;AACD,QAAI,mBAAKA,cAAY,QAAQ;AAC3B,UAAI,mBAAK,UAAS,OAAO,GAAG;AAC1B,mBAAW,QAAQ,mBAAK,UAAS,OAAM,GAAI;AACzC,eAAK,OAAM;AACX,iBAAO,OAAO,IAAI;AAAA,QACnB;AAAA,MACF;AACD,yBAAKA,UAAU;AAAA,IAChB;AAAA,EACF;AAAA,EACD,WAAW,cAAc;AACvB,WAAO,OAAO,MAAM,eAAe,IAAI,cAAe;AAAA,EACvD;AAAA,EAkCD,UAAU,UAAU,OAAO,SAAS,kBAAkB,OAAO;AAC3D,UAAM,KAAK,uBAAK5D,MAAL;AACX,UAAM,OAAO,sBAAK,0BAAL,WAAgB,SAAS;AACtC,SAAK,UAAU,IAAI,WAAW;AAC9B,QAAI,SAAS,MAAM;AACjB,WAAK,UAAU,IAAI,MAAM;AAAA,IAC1B;AACD,UAAM,OAAO,WAAU,YAAY,cAAc,MAAM;AACvD,SAAK,OAAO,IAAI;AAChB,UAAM,OAAO,WAAU,YAAY,cAAc,MAAM;AACvD,SAAK,OAAO,IAAI;AAChB,UAAM,SAAS,SAAS,KAAK,SAAS,IAAI,EAAE;AAC5C,SAAK,aAAa,MAAM,MAAM;AAC9B,SAAK,aAAa,KAAK,SAAS,UAAW;AAC3C,QAAI,iBAAiB;AACnB,yBAAK,WAAU,IAAI,IAAI,IAAI;AAAA,IAC5B;AACD,UAAM,aAAa,sBAAK,oCAAL,WAAqB,MAAM;AAC9C,UAAM,MAAM,WAAU,YAAY,cAAc,KAAK;AACrD,SAAK,OAAO,GAAG;AACf,SAAK,aAAa,QAAQ,KAAK;AAC/B,SAAK,aAAa,gBAAgB,OAAO;AACzC,QAAI,aAAa,QAAQ,IAAI,MAAM,EAAE;AACrC,uBAAK,UAAS,IAAI,IAAI,IAAI;AAC1B,WAAO;AAAA,MACL;AAAA,MACA,YAAY,QAAQ,UAAU;AAAA,IACpC;AAAA,EACG;AAAA,EACD,iBAAiB,UAAU;AACzB,UAAM,KAAK,uBAAKA,MAAL;AACX,UAAM,OAAO,sBAAK,0BAAL,WAAgB,SAAS;AACtC,SAAK,UAAU,IAAI,kBAAkB;AACrC,UAAM,OAAO,WAAU,YAAY,cAAc,MAAM;AACvD,SAAK,OAAO,IAAI;AAChB,UAAM,OAAO,WAAU,YAAY,cAAc,MAAM;AACvD,SAAK,OAAO,IAAI;AAChB,UAAM,SAAS,SAAS,KAAK,SAAS,IAAI,EAAE;AAC5C,SAAK,aAAa,MAAM,MAAM;AAC9B,SAAK,aAAa,KAAK,SAAS,UAAW;AAC3C,SAAK,aAAa,iBAAiB,oBAAoB;AACvD,QAAI;AACJ,QAAI,SAAS,MAAM;AACjB,WAAK,UAAU,IAAI,MAAM;AACzB,YAAM,OAAO,WAAU,YAAY,cAAc,MAAM;AACvD,WAAK,OAAO,IAAI;AAChB,eAAS,SAAS,KAAK,SAAS,IAAI,EAAE;AACtC,WAAK,aAAa,MAAM,MAAM;AAC9B,WAAK,aAAa,aAAa,mBAAmB;AAClD,YAAM,OAAO,WAAU,YAAY,cAAc,MAAM;AACvD,WAAK,OAAO,IAAI;AAChB,WAAK,aAAa,SAAS,GAAG;AAC9B,WAAK,aAAa,UAAU,GAAG;AAC/B,WAAK,aAAa,QAAQ,OAAO;AACjC,YAAM,MAAM,WAAU,YAAY,cAAc,KAAK;AACrD,WAAK,OAAO,GAAG;AACf,UAAI,aAAa,QAAQ,IAAI,MAAM,EAAE;AACrC,UAAI,aAAa,UAAU,MAAM;AACjC,UAAI,aAAa,QAAQ,OAAO;AAChC,UAAI,aAAa,aAAa,SAAS;AACvC,UAAI,UAAU,IAAI,MAAM;AAAA,IACzB;AACD,UAAM,OAAO,WAAU,YAAY,cAAc,KAAK;AACtD,SAAK,OAAO,IAAI;AAChB,SAAK,aAAa,QAAQ,IAAI,MAAM,EAAE;AACtC,QAAI,QAAQ;AACV,WAAK,aAAa,QAAQ,QAAQ,MAAM,GAAG;AAAA,IAC5C;AACD,UAAM,OAAO,KAAK;AAClB,SAAK,OAAO,IAAI;AAChB,SAAK,UAAU,IAAI,aAAa;AAChC,SAAK,UAAU,IAAI,kBAAkB;AACrC,uBAAK,UAAS,IAAI,IAAI,IAAI;AAC1B,WAAO;AAAA,EACR;AAAA,EACD,aAAa,IAAI,MAAM;AACrB,UAAM,OAAO,mBAAK,WAAU,IAAI,EAAE;AAClC,uBAAK,WAAU,OAAO,EAAE;AACxB,SAAK,UAAU,IAAI,KAAK,GAAG;AAC3B,SAAK,aAAa,KAAK,KAAK,UAAW;AAAA,EACxC;AAAA,EACD,WAAW,IAAI,MAAM;AACnB,UAAM,OAAO,mBAAK,UAAS,IAAI,EAAE;AACjC,UAAM,OAAO,KAAK;AAClB,UAAM,OAAO,KAAK;AAClB,SAAK,aAAa,KAAK,KAAK,UAAW;AAAA,EACxC;AAAA,EACD,oBAAoB,IAAI;AACtB,SAAK,OAAO,EAAE;AACd,uBAAK,WAAU,OAAO,EAAE;AAAA,EACzB;AAAA,EACD,WAAW,IAAI,MAAM;AACnB,uBAAK,WAAU,IAAI,EAAE,EAAE,aAAa,KAAK,KAAK,UAAS,CAAE;AAAA,EAC1D;AAAA,EACD,UAAU,IAAI,KAAK;;AACjB,oBAAAN,MAAA,YAAU,oBAAV,KAAAA,KAAkB,mBAAK,UAAS,IAAI,EAAE,GAAG;AAAA,EAC1C;AAAA,EACD,KAAK,IAAI,SAAS;AAChB,uBAAK,UAAS,IAAI,EAAE,EAAE,UAAU,OAAO,UAAU,CAAC,OAAO;AAAA,EAC1D;AAAA,EACD,OAAO,IAAI,OAAO;AAChB,uBAAK,UAAS,IAAI,EAAE,EAAE,aAAa,sBAAsB,KAAK;AAAA,EAC/D;AAAA,EACD,YAAY,IAAI,OAAO;AACrB,uBAAK,UAAS,IAAI,EAAE,EAAE,aAAa,QAAQ,KAAK;AAAA,EACjD;AAAA,EACD,cAAc,IAAI,SAAS;AACzB,uBAAK,UAAS,IAAI,EAAE,EAAE,aAAa,gBAAgB,OAAO;AAAA,EAC3D;AAAA,EACD,SAAS,IAAI,WAAW;AACtB,uBAAK,UAAS,IAAI,EAAE,EAAE,UAAU,IAAI,SAAS;AAAA,EAC9C;AAAA,EACD,YAAY,IAAI,WAAW;AACzB,uBAAK,UAAS,IAAI,EAAE,EAAE,UAAU,OAAO,SAAS;AAAA,EACjD;AAAA,EACD,OAAO,IAAI;AACT,QAAI,mBAAKkE,cAAY,MAAM;AACzB;AAAA,IACD;AACD,uBAAK,UAAS,IAAI,EAAE,EAAE,OAAM;AAC5B,uBAAK,UAAS,OAAO,EAAE;AAAA,EACxB;AAAA,EACD,UAAU;AACR,uBAAKA,UAAU;AACf,eAAW,QAAQ,mBAAK,UAAS,OAAM,GAAI;AACzC,WAAK,OAAM;AAAA,IACZ;AACD,uBAAK,UAAS;EACf;AACH;AA7LEA,WAAA;AACA5D,OAAA;AACA;AACA;AAwBO;AAAA,YAAO,SAAC,SAAS;AAAA,EACtB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,QAAQ;AAAA,EACR,SAAS;AACV,IAAG,IAAI;AACN,QAAM;AAAA,IACJ;AAAA,EACD,IAAG;AACJ,QAAM,MAAM,GAAG,MAAM,CAAC;AACtB,QAAM,OAAO,GAAG,MAAM,CAAC;AACvB,QAAM,QAAQ,GAAG,MAAM,KAAK;AAC5B,QAAM,SAAS,GAAG,MAAM,MAAM;AAC/B;AACD;AAAA,eAAU,SAAC,KAAK;;AACd,QAAM,MAAM,WAAU,YAAY,OAAO,GAAG,GAAG,IAAI;AACnD,qBAAK4D,UAAQ,OAAO,GAAG;AACvB,MAAI,aAAa,eAAe,IAAI;AACpC,kBAAAlE,MAAA,YAAU,oBAAV,KAAAA,KAAkB,KAAK;AACvB,SAAO;AACR;AACD;AAAA,oBAAe,SAAC,MAAM,QAAQ;AAC5B,QAAM,WAAW,WAAU,YAAY,cAAc,UAAU;AAC/D,OAAK,OAAO,QAAQ;AACpB,QAAM,aAAa,QAAQ,MAAM;AACjC,WAAS,aAAa,MAAM,UAAU;AACtC,WAAS,aAAa,iBAAiB,mBAAmB;AAC1D,QAAM,cAAc,WAAU,YAAY,cAAc,KAAK;AAC7D,WAAS,OAAO,WAAW;AAC3B,cAAY,aAAa,QAAQ,IAAI,MAAM,EAAE;AAC7C,cAAY,UAAU,IAAI,MAAM;AAChC,SAAO;AACR;AAhCD,aA5BI,YA4BG;AA5BT,IAAM,YAAN;AAgNwC,oBAAoB;AACb,oBAAoB;AACf,oBAAoB;AAC1B,oBAAoB;AACf,oBAAoB;AAC9B,oBAAoB;AACrB,oBAAoB;AACf,oBAAoB;AAC5B,oBAAoB;AAClB,oBAAoB;AACxB,oBAAoB;AAClB,oBAAoB;AACtD,IAAC,yCAAyC,oBAAoB;AAC9B,oBAAoB;AACV,oBAAoB;AACpB,oBAAoB;AACpC,oBAAoB;AACF,oBAAoB;AAC5B,oBAAoB;AACxB,oBAAoB;AACZ,oBAAoB;AACvB,oBAAoB;AACrB,oBAAoB;AACN,oBAAoB;AACtC,oBAAoB;AACF,oBAAoB;AAC3C,oBAAoB;AACV,oBAAoB;AAC1B,oBAAoB;AACvB,oBAAoB;AACH,oBAAoB;AACjC,oBAAoB;AACpD,IAAC,iCAAiC,oBAAoB;AACb,oBAAoB;AACjB,oBAAoB;AACvB,oBAAoB;AAC1B,oBAAoB;AACvB,oBAAoB;AAChB,oBAAoB;AACjB,oBAAoB;AAClB,oBAAoB;AAChC,oBAAoB;AACnB,oBAAoB;AC3gnBrD;AAAA;AAAA;AAAA;AAKA,MAAM,MAAM;AAAA,EACR,YAAY,GAAG,GAAG,UAAU,MAAM;AAC9B,QAAI,MAAM,CAAC,KAAK,MAAM,CAAC,GAAG;AACtB,YAAM,IAAI,MAAM,sBAAsB,CAAC,KAAK,CAAC,GAAG;AAAA,IACnD;AACD,SAAK,IAAI,CAAC;AACV,SAAK,IAAI,CAAC;AACV,SAAK,WAAW,YAAY;AAC5B,SAAK,OAAO,QAAQ,KAAK,IAAG;AAAA,EAC/B;AAAA,EACD,WAAW,OAAO;AACd,WAAO,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,MAAM,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,GAAG,CAAC,CAAC;AAAA,EACjF;AAAA,EACD,OAAO,OAAO;AACV,WAAQ,KAAK,MAAM,MAAM,KACrB,KAAK,MAAM,MAAM,KACjB,KAAK,aAAa,MAAM,YACxB,KAAK,SAAS,MAAM;AAAA,EAC3B;AAAA,EACD,aAAa,OAAO;AAChB,WAAO,KAAK,SAAS,MAAM,OACrB,KAAK,WAAW,KAAK,KAAK,KAAK,OAAO,MAAM,QAC5C;AAAA,EACT;AACL;AAEA,MAAM,OAAO;AAAA,EACT,OAAO,WAAW,QAAQ,QAAQ;AAC9B,UAAM,KAAK,KAAK,uBAAuB,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE;AACxE,UAAM,KAAK,KAAK,uBAAuB,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE;AACxE,WAAO,IAAI,OAAO,OAAO,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,OAAO,OAAO,OAAO,GAAG;AAAA,EAC3E;AAAA,EACD,OAAO,uBAAuB,IAAI,IAAI,IAAI;AACtC,UAAM,MAAM,GAAG,IAAI,GAAG;AACtB,UAAM,MAAM,GAAG,IAAI,GAAG;AACtB,UAAM,MAAM,GAAG,IAAI,GAAG;AACtB,UAAM,MAAM,GAAG,IAAI,GAAG;AACtB,UAAM,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACxD,UAAM,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACxD,UAAM,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,GAAG;AAC1C,UAAM,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,GAAG;AAC1C,UAAM,MAAM,GAAG,IAAI,GAAG;AACtB,UAAM,MAAM,GAAG,IAAI,GAAG;AACtB,UAAM,IAAI,KAAK,MAAM,IAAI,IAAI,MAAM,KAAK;AACxC,UAAM,KAAK,EAAE,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG,GAAG,IAAI,MAAM,EAAC;AACjD,UAAM,KAAK,GAAG,IAAI,GAAG;AACrB,UAAM,KAAK,GAAG,IAAI,GAAG;AACrB,WAAO;AAAA,MACH,IAAI,IAAI,MAAM,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE;AAAA,MAClC,IAAI,IAAI,MAAM,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE;AAAA,IAC9C;AAAA,EACK;AAAA,EACD,YAAY,YAAY,UAAU,UAAU,UAAU,YAAY,UAAU;AACxE,SAAK,aAAa;AAClB,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,aAAa;AAClB,SAAK,WAAW;AAAA,EACnB;AAAA,EACD,SAAS;AACL,UAAM,QAAQ;AACd,QAAI,SAAS;AACb,QAAI;AACJ,QAAI;AACJ,aAAS,IAAI,GAAG,KAAK,OAAO,KAAK,GAAG;AAChC,YAAM,IAAI,IAAI;AACd,YAAM,KAAK,KAAK,MAAM,GAAG,KAAK,WAAW,GAAG,KAAK,SAAS,GAAG,KAAK,SAAS,GAAG,KAAK,SAAS,CAAC;AAC7F,YAAM,KAAK,KAAK,MAAM,GAAG,KAAK,WAAW,GAAG,KAAK,SAAS,GAAG,KAAK,SAAS,GAAG,KAAK,SAAS,CAAC;AAC7F,UAAI,IAAI,GAAG;AACP,cAAM,QAAQ,KAAK;AACnB,cAAM,QAAQ,KAAK;AACnB,kBAAU,KAAK,KAAK,QAAQ,QAAQ,QAAQ,KAAK;AAAA,MACpD;AACD,WAAK;AACL,WAAK;AAAA,IACR;AACD,WAAO;AAAA,EACV;AAAA,EACD,MAAM,GAAG,OAAO,IAAI,IAAI,KAAK;AACzB,WAAQ,SAAS,IAAM,MAAM,IAAM,MAAM,IAAM,KACxC,IAAM,MAAM,IAAM,MAAM,IAAM,KAAK,IACnC,IAAM,MAAM,IAAM,KAAK,IAAI,IAC3B,MAAM,IAAI,IAAI;AAAA,EACxB;AACL;AAEA,MAAM,qBAAqB;AAAA,EACvB,cAAc;AACV,QAAI;AACA,WAAK,MAAM,IAAI;IAClB,SACM,OAAO;AACV,WAAK,MAAM;AAAA,IACd;AAAA,EACJ;AAAA,EACD,iBAAiB,MAAM,UAAU,SAAS;AACtC,SAAK,IAAI,iBAAiB,MAAM,UAAU,OAAO;AAAA,EACpD;AAAA,EACD,cAAc,OAAO;AACjB,WAAO,KAAK,IAAI,cAAc,KAAK;AAAA,EACtC;AAAA,EACD,oBAAoB,MAAM,UAAU,SAAS;AACzC,SAAK,IAAI,oBAAoB,MAAM,UAAU,OAAO;AAAA,EACvD;AACL;AAEA,SAAS,SAAS,IAAI,OAAO,KAAK;AAC9B,MAAI,WAAW;AACf,MAAI,UAAU;AACd,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,QAAM,QAAQ,MAAM;AAChB,eAAW,KAAK;AAChB,cAAU;AACV,aAAS,GAAG,MAAM,eAAe,UAAU;AAC3C,QAAI,CAAC,SAAS;AACV,sBAAgB;AAChB,mBAAa;AAAA,IAChB;AAAA,EACT;AACI,SAAO,SAAS,WAAW,MAAM;AAC7B,UAAM,MAAM,KAAK;AACjB,UAAM,YAAY,QAAQ,MAAM;AAChC,oBAAgB;AAChB,iBAAa;AACb,QAAI,aAAa,KAAK,YAAY,MAAM;AACpC,UAAI,SAAS;AACT,qBAAa,OAAO;AACpB,kBAAU;AAAA,MACb;AACD,iBAAW;AACX,eAAS,GAAG,MAAM,eAAe,UAAU;AAC3C,UAAI,CAAC,SAAS;AACV,wBAAgB;AAChB,qBAAa;AAAA,MAChB;AAAA,IACJ,WACQ,CAAC,SAAS;AACf,gBAAU,OAAO,WAAW,OAAO,SAAS;AAAA,IAC/C;AACD,WAAO;AAAA,EACf;AACA;AAEA,MAAM,qBAAqB,qBAAqB;AAAA,EAC5C,YAAY,QAAQ,UAAU,IAAI;AAC9B,QAAIA,KAAI,IAAI;AACZ;AACA,SAAK,SAAS;AACd,SAAK,iBAAiB;AACtB,SAAK,WAAW;AAChB,SAAK,cAAc;AACnB,SAAK,QAAQ;AACb,SAAK,gBAAgB;AACrB,SAAK,aAAa;AAClB,SAAK,mBAAmB,CAAC,UAAU;AAC/B,UAAI,CAAC,KAAK,qBAAqB,OAAO,IAAI,KAAK,KAAK,gBAAgB;AAChE;AAAA,MACH;AACD,WAAK,aAAa,KAAK,8BAA8B,KAAK,CAAC;AAAA,IACvE;AACQ,SAAK,mBAAmB,CAAC,UAAU;AAC/B,UAAI,CAAC,KAAK,qBAAqB,OAAO,IAAI,KAAK,CAAC,KAAK,gBAAgB;AACjE,aAAK,WAAW,KAAK,8BAA8B,KAAK,GAAG,KAAK;AAChE;AAAA,MACH;AACD,WAAK,kBAAkB,KAAK,8BAA8B,KAAK,CAAC;AAAA,IAC5E;AACQ,SAAK,iBAAiB,CAAC,UAAU;AAC7B,UAAI,KAAK,qBAAqB,KAAK,GAAG;AAClC;AAAA,MACH;AACD,WAAK,WAAW,KAAK,8BAA8B,KAAK,CAAC;AAAA,IACrE;AACQ,SAAK,oBAAoB,CAAC,UAAU;AAChC,UAAI,MAAM,cAAc,WAAW,KAAK,KAAK,gBAAgB;AACzD;AAAA,MACH;AACD,UAAI,MAAM,YAAY;AAClB,cAAM,eAAc;AAAA,MACvB;AACD,WAAK,aAAa,KAAK,4BAA4B,KAAK,CAAC;AAAA,IACrE;AACQ,SAAK,mBAAmB,CAAC,UAAU;AAC/B,UAAI,MAAM,cAAc,WAAW,GAAG;AAClC;AAAA,MACH;AACD,UAAI,MAAM,YAAY;AAClB,cAAM,eAAc;AAAA,MACvB;AACD,UAAI,CAAC,KAAK,gBAAgB;AACtB,aAAK,WAAW,KAAK,4BAA4B,KAAK,GAAG,KAAK;AAC9D;AAAA,MACH;AACD,WAAK,kBAAkB,KAAK,4BAA4B,KAAK,CAAC;AAAA,IAC1E;AACQ,SAAK,kBAAkB,CAAC,UAAU;AAC9B,UAAI,MAAM,cAAc,WAAW,GAAG;AAClC;AAAA,MACH;AACD,UAAI,MAAM,YAAY;AAClB,cAAM,eAAc;AAAA,MACvB;AACD,WAAK,OAAO,oBAAoB,aAAa,KAAK,gBAAgB;AAClE,WAAK,WAAW,KAAK,4BAA4B,KAAK,CAAC;AAAA,IACnE;AACQ,SAAK,qBAAqB,CAAC,UAAU;AACjC,UAAI,CAAC,KAAK,qBAAqB,KAAK,KAAK,KAAK,gBAAgB;AAC1D;AAAA,MACH;AACD,YAAM,eAAc;AACpB,WAAK,aAAa,KAAK,8BAA8B,KAAK,CAAC;AAAA,IACvE;AACQ,SAAK,qBAAqB,CAAC,UAAU;AACjC,UAAI,CAAC,KAAK,qBAAqB,OAAO,IAAI,KAAK,CAAC,KAAK,gBAAgB;AACjE,aAAK,WAAW,KAAK,8BAA8B,KAAK,GAAG,KAAK;AAChE;AAAA,MACH;AACD,YAAM,eAAc;AACpB,WAAK,kBAAkB,KAAK,8BAA8B,KAAK,CAAC;AAAA,IAC5E;AACQ,SAAK,mBAAmB,CAAC,UAAU;AAC/B,UAAI,KAAK,qBAAqB,KAAK,GAAG;AAClC;AAAA,MACH;AACD,YAAM,eAAc;AACpB,WAAK,WAAW,KAAK,8BAA8B,KAAK,CAAC;AAAA,IACrE;AACQ,SAAK,uBAAuB,QAAQ,wBAAwB;AAC5D,SAAK,WAAW,QAAQ,YAAY;AACpC,SAAK,WAAW,QAAQ,YAAY;AACpC,SAAK,YAAYA,MAAK,QAAQ,cAAc,QAAQA,QAAO,SAASA,MAAK;AACzE,SAAK,eAAe,KAAK,QAAQ,iBAAiB,QAAQ,OAAO,SAAS,KAAK;AAC/E,SAAK,UAAU,QAAQ,WAAW;AAClC,SAAK,WAAW,QAAQ,YAAY;AACpC,SAAK,kBAAkB,QAAQ,mBAAmB;AAClD,SAAK,qBAAqB,QAAQ,sBAAsB;AACxD,SAAK,wBAAwB,KAAK,QAAQ,0BAA0B,QAAQ,OAAO,SAAS,KAAK;AACjG,SAAK,oBAAoB,KAAK,WACxB,SAAS,aAAa,UAAU,eAAe,KAAK,QAAQ,IAC5D,aAAa,UAAU;AAC7B,SAAK,OAAO,OAAO,WAAW,MAAM,KAAK,oBAAoB;AAC7D,SAAK,MAAK;AACV,SAAK,GAAE;AAAA,EACV;AAAA,EACD,QAAQ;AACJ,UAAM,EAAE,MAAM,KAAK,OAAM,IAAK;AAC9B,QAAI,YAAY,KAAK;AACrB,QAAI,UAAU,GAAG,GAAG,OAAO,OAAO,OAAO,MAAM;AAC/C,QAAI,SAAS,GAAG,GAAG,OAAO,OAAO,OAAO,MAAM;AAC9C,SAAK,QAAQ;AACb,SAAK,OAAO,KAAK,sBAAuB;AACxC,SAAK,WAAW;AAAA,EACnB;AAAA,EACD,YAAY,SAAS,UAAU,IAAI;AAC/B,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACpC,YAAM,QAAQ,IAAI;AAClB,YAAM,QAAQ,QAAQ,SAAS,OAAO,oBAAoB;AAC1D,YAAM,QAAQ,QAAQ,SAAS,KAAK,OAAO,QAAQ;AACnD,YAAM,SAAS,QAAQ,UAAU,KAAK,OAAO,SAAS;AACtD,YAAM,UAAU,QAAQ,WAAW;AACnC,YAAM,UAAU,QAAQ,WAAW;AACnC,WAAK,OAAO,KAAK,sBAAuB;AACxC,YAAM,SAAS,MAAM;AACjB,aAAK,KAAK,UAAU,OAAO,SAAS,SAAS,OAAO,MAAM;AAC1D;MAChB;AACY,YAAM,UAAU,CAAC,UAAU;AACvB,eAAO,KAAK;AAAA,MAC5B;AACY,YAAM,cAAc;AACpB,YAAM,MAAM;AACZ,WAAK,WAAW;AAAA,IAC5B,CAAS;AAAA,EACJ;AAAA,EACD,UAAU,OAAO,aAAa,gBAAgB;AAC1C,YAAQ,MAAI;AAAA,MACR,KAAK;AACD,YAAI,OAAO,mBAAmB,UAAU;AACpC,2BAAiB;AAAA,QACpB;AACD,eAAO,6BAA6B,KAAK,KAAK,MAAM,cAAc,CAAC,CAAC;AAAA,MACxE;AACI,YAAI,OAAO,mBAAmB,UAAU;AACpC,2BAAiB;AAAA,QACpB;AACD,eAAO,KAAK,OAAO,UAAU,MAAM,cAAc;AAAA,IACxD;AAAA,EACJ;AAAA,EACD,KAAK;AACD,SAAK,OAAO,MAAM,cAAc;AAChC,SAAK,OAAO,MAAM,gBAAgB;AAClC,SAAK,OAAO,MAAM,aAAa;AAC/B,UAAM,QAAQ,YAAY,KAAK,UAAU,SAAS,KAAK,kBAAkB;AACzE,QAAI,OAAO,gBAAgB,CAAC,OAAO;AAC/B,WAAK,qBAAoB;AAAA,IAC5B,OACI;AACD,WAAK,mBAAkB;AACvB,UAAI,kBAAkB,QAAQ;AAC1B,aAAK,mBAAkB;AAAA,MAC1B;AAAA,IACJ;AAAA,EACJ;AAAA,EACD,MAAM;AACF,SAAK,OAAO,MAAM,cAAc;AAChC,SAAK,OAAO,MAAM,gBAAgB;AAClC,SAAK,OAAO,MAAM,aAAa;AAC/B,SAAK,OAAO,oBAAoB,eAAe,KAAK,kBAAkB;AACtE,SAAK,OAAO,oBAAoB,aAAa,KAAK,gBAAgB;AAClE,SAAK,OAAO,oBAAoB,cAAc,KAAK,iBAAiB;AACpE,SAAK,4BAA2B;AAAA,EACnC;AAAA,EACD,wBAAwB;AACpB,QAAIA;AACJ,UAAM,eAAe,OAAO,aAAa,KAAK,OAAO,gBAC/C,UACCA,MAAK,KAAK,OAAO,cAAc,iBAAiB,QAAQA,QAAO,SAASA,MAAK,KAAK,OAAO;AAChG,WAAO;AAAA,MACH,kBAAkB,aAAa,iBAAiB,KAAK,YAAY;AAAA,MACjE,qBAAqB,aAAa,oBAAoB,KAAK,YAAY;AAAA,IACnF;AAAA,EACK;AAAA,EACD,8BAA8B;AAC1B,UAAM,EAAE,oBAAmB,IAAK,KAAK,sBAAqB;AAC1D,wBAAoB,eAAe,KAAK,kBAAkB;AAC1D,wBAAoB,aAAa,KAAK,gBAAgB;AACtD,wBAAoB,aAAa,KAAK,gBAAgB;AACtD,wBAAoB,WAAW,KAAK,cAAc;AAClD,wBAAoB,aAAa,KAAK,gBAAgB;AACtD,wBAAoB,YAAY,KAAK,eAAe;AAAA,EACvD;AAAA,EACD,UAAU;AACN,WAAO,KAAK;AAAA,EACf;AAAA,EACD,SAAS,aAAa,EAAE,QAAQ,KAAI,IAAK,IAAI;AACzC,QAAI,OAAO;AACP,WAAK,MAAK;AAAA,IACb;AACD,SAAK,UAAU,aAAa,KAAK,WAAW,KAAK,IAAI,GAAG,KAAK,SAAS,KAAK,IAAI,CAAC;AAChF,SAAK,QAAQ,KAAK,MAAM,OAAO,WAAW;AAAA,EAC7C;AAAA,EACD,SAAS;AACL,WAAO,KAAK;AAAA,EACf;AAAA,EACD,qBAAqB,OAAO,MAAM;AAC9B,QAAI,MAAM;AACN,aAAO,MAAM,YAAY;AAAA,IAC5B;AACD,YAAQ,MAAM,UAAU,OAAO;AAAA,EAClC;AAAA,EACD,8BAA8B,OAAO;AACjC,WAAO;AAAA,MACH;AAAA,MACA,MAAM,MAAM;AAAA,MACZ,GAAG,MAAM;AAAA,MACT,GAAG,MAAM;AAAA,MACT,UAAU,cAAc,QAAQ,MAAM,WAAW;AAAA,IAC7D;AAAA,EACK;AAAA,EACD,4BAA4B,OAAO;AAC/B,UAAM,QAAQ,MAAM,eAAe,CAAC;AACpC,WAAO;AAAA,MACH;AAAA,MACA,MAAM,MAAM;AAAA,MACZ,GAAG,MAAM;AAAA,MACT,GAAG,MAAM;AAAA,MACT,UAAU,MAAM;AAAA,IAC5B;AAAA,EACK;AAAA,EACD,sBAAsB,OAAO;AACzB,WAAO;AAAA,MACH,UAAU,SAAS,cAAc,QAAQ,MAAM,WAAW,KAAK;AAAA,MAC/D,SAAS,SAAS,aAAa,QAAQ,MAAM,UAAU,KAAK;AAAA,MAC5D,UAAU,SAAS,cAAc,QAAQ,MAAM,WAAW,KAAK;AAAA,MAC/D,UAAU,SAAS,cAAc,QAAQ,MAAM,WAAW,KAAK;AAAA,MAC/D,sBAAsB,SAAS,0BAA0B,QACnD,MAAM,uBACN,KAAK;AAAA,MACX,oBAAoB,SAAS,wBAAwB,QAC/C,MAAM,qBACN,KAAK;AAAA,IACvB;AAAA,EACK;AAAA,EACD,aAAa,OAAO;AAChB,UAAM,YAAY,CAAC,KAAK,cAAc,IAAI,YAAY,eAAe,EAAE,QAAQ,OAAO,YAAY,KAAI,CAAE,CAAC;AACzG,QAAI,WAAW;AACX;AAAA,IACH;AACD,UAAM,EAAE,iBAAgB,IAAK,KAAK,sBAAqB;AACvD,YAAQ,MAAM,MAAM,MAAI;AAAA,MACpB,KAAK;AACD,yBAAiB,aAAa,KAAK,gBAAgB;AACnD,yBAAiB,WAAW,KAAK,cAAc;AAC/C;AAAA,MACJ,KAAK;AACD,yBAAiB,aAAa,KAAK,gBAAgB;AACnD,yBAAiB,YAAY,KAAK,eAAe;AACjD;AAAA,MACJ,KAAK;AACD,yBAAiB,eAAe,KAAK,kBAAkB;AACvD,yBAAiB,aAAa,KAAK,gBAAgB;AACnD;AAAA,IACP;AACD,SAAK,iBAAiB;AACtB,UAAM,oBAAoB,KAAK;AAC/B,UAAM,gBAAgB,OAAO,OAAO,OAAO,OAAO,IAAI,iBAAiB,GAAG,EAAE,QAAQ,GAAI;AACxF,SAAK,MAAM,KAAK,aAAa;AAC7B,SAAK,OAAO,iBAAiB;AAC7B,SAAK,cAAc,KAAK;AAAA,EAC3B;AAAA,EACD,cAAc,OAAO;AACjB,QAAI,CAAC,KAAK,gBAAgB;AACtB;AAAA,IACH;AACD,QAAI,KAAK,MAAM,WAAW,GAAG;AACzB,WAAK,aAAa,KAAK;AACvB;AAAA,IACH;AACD,SAAK,cAAc,IAAI,YAAY,sBAAsB,EAAE,QAAQ,MAAO,EAAC;AAC3E,UAAM,QAAQ,KAAK,aAAa,MAAM,GAAG,MAAM,GAAG,MAAM,QAAQ;AAChE,UAAM,iBAAiB,KAAK,MAAM,KAAK,MAAM,SAAS,CAAC;AACvD,UAAM,aAAa,eAAe;AAClC,UAAM,YAAY,WAAW,SAAS,KAAK,WAAW,WAAW,SAAS,CAAC;AAC3E,UAAM,sBAAsB,YACtB,MAAM,WAAW,SAAS,KAAK,KAAK,cACpC;AACN,UAAM,oBAAoB,KAAK,sBAAsB,cAAc;AACnE,QAAI,CAAC,aAAa,EAAE,aAAa,sBAAsB;AACnD,YAAM,QAAQ,KAAK,UAAU,OAAO,iBAAiB;AACrD,UAAI,CAAC,WAAW;AACZ,aAAK,SAAS,OAAO,iBAAiB;AAAA,MACzC,WACQ,OAAO;AACZ,aAAK,WAAW,OAAO,iBAAiB;AAAA,MAC3C;AACD,iBAAW,KAAK;AAAA,QACZ,MAAM,MAAM;AAAA,QACZ,GAAG,MAAM;AAAA,QACT,GAAG,MAAM;AAAA,QACT,UAAU,MAAM;AAAA,MAChC,CAAa;AAAA,IACJ;AACD,SAAK,cAAc,IAAI,YAAY,qBAAqB,EAAE,QAAQ,MAAO,EAAC;AAAA,EAC7E;AAAA,EACD,WAAW,OAAO,eAAe,MAAM;AACnC,SAAK,4BAA2B;AAChC,QAAI,CAAC,KAAK,gBAAgB;AACtB;AAAA,IACH;AACD,QAAI,cAAc;AACd,WAAK,cAAc,KAAK;AAAA,IAC3B;AACD,SAAK,iBAAiB;AACtB,SAAK,cAAc,IAAI,YAAY,aAAa,EAAE,QAAQ,MAAO,EAAC;AAAA,EACrE;AAAA,EACD,uBAAuB;AACnB,SAAK,iBAAiB;AACtB,SAAK,OAAO,iBAAiB,eAAe,KAAK,kBAAkB;AAAA,EACtE;AAAA,EACD,qBAAqB;AACjB,SAAK,iBAAiB;AACtB,SAAK,OAAO,iBAAiB,aAAa,KAAK,gBAAgB;AAAA,EAClE;AAAA,EACD,qBAAqB;AACjB,SAAK,OAAO,iBAAiB,cAAc,KAAK,iBAAiB;AAAA,EACpE;AAAA,EACD,OAAO,SAAS;AACZ,SAAK,cAAc;AACnB,SAAK,gBAAgB;AACrB,SAAK,cAAc,QAAQ,WAAW,QAAQ,YAAY;AAC1D,SAAK,KAAK,YAAY,QAAQ;AAC9B,SAAK,KAAK,2BAA2B,QAAQ;AAAA,EAChD;AAAA,EACD,aAAa,GAAG,GAAG,UAAU;AACzB,UAAM,OAAO,KAAK,OAAO,sBAAqB;AAC9C,WAAO,IAAI,MAAM,IAAI,KAAK,MAAM,IAAI,KAAK,KAAK,WAAU,oBAAI,KAAI,GAAG,QAAS;AAAA,EAC/E;AAAA,EACD,UAAU,OAAO,SAAS;AACtB,UAAM,EAAE,YAAa,IAAG;AACxB,gBAAY,KAAK,KAAK;AACtB,QAAI,YAAY,SAAS,GAAG;AACxB,UAAI,YAAY,WAAW,GAAG;AAC1B,oBAAY,QAAQ,YAAY,CAAC,CAAC;AAAA,MACrC;AACD,YAAM,SAAS,KAAK,sBAAsB,YAAY,CAAC,GAAG,YAAY,CAAC,GAAG,OAAO;AACjF,YAAM,QAAQ,OAAO,WAAW,aAAa,MAAM;AACnD,kBAAY,MAAK;AACjB,aAAO;AAAA,IACV;AACD,WAAO;AAAA,EACV;AAAA,EACD,sBAAsB,YAAY,UAAU,SAAS;AACjD,UAAM,WAAW,QAAQ,uBAAuB,SAAS,aAAa,UAAU,KAC3E,IAAI,QAAQ,wBAAwB,KAAK;AAC9C,UAAM,WAAW,KAAK,aAAa,UAAU,OAAO;AACpD,UAAM,SAAS;AAAA,MACX,KAAK;AAAA,MACL,OAAO,KAAK;AAAA,IACxB;AACQ,SAAK,gBAAgB;AACrB,SAAK,aAAa;AAClB,WAAO;AAAA,EACV;AAAA,EACD,aAAa,UAAU,SAAS;AAC5B,WAAO,KAAK,IAAI,QAAQ,YAAY,WAAW,IAAI,QAAQ,QAAQ;AAAA,EACtE;AAAA,EACD,kBAAkB,GAAG,GAAG,OAAO;AAC3B,UAAM,MAAM,KAAK;AACjB,QAAI,OAAO,GAAG,CAAC;AACf,QAAI,IAAI,GAAG,GAAG,OAAO,GAAG,IAAI,KAAK,IAAI,KAAK;AAC1C,SAAK,WAAW;AAAA,EACnB;AAAA,EACD,WAAW,OAAO,SAAS;AACvB,UAAM,MAAM,KAAK;AACjB,UAAM,aAAa,MAAM,WAAW,MAAM;AAC1C,UAAM,YAAY,KAAK,KAAK,MAAM,OAAM,CAAE,IAAI;AAC9C,QAAI,UAAS;AACb,QAAI,YAAY,QAAQ;AACxB,aAAS,IAAI,GAAG,IAAI,WAAW,KAAK,GAAG;AACnC,YAAM,IAAI,IAAI;AACd,YAAM,KAAK,IAAI;AACf,YAAM,MAAM,KAAK;AACjB,YAAM,IAAI,IAAI;AACd,YAAM,KAAK,IAAI;AACf,YAAM,MAAM,KAAK;AACjB,UAAI,IAAI,MAAM,MAAM,WAAW;AAC/B,WAAK,IAAI,KAAK,IAAI,MAAM,SAAS;AACjC,WAAK,IAAI,IAAI,KAAK,MAAM,SAAS;AACjC,WAAK,MAAM,MAAM,SAAS;AAC1B,UAAI,IAAI,MAAM,MAAM,WAAW;AAC/B,WAAK,IAAI,KAAK,IAAI,MAAM,SAAS;AACjC,WAAK,IAAI,IAAI,KAAK,MAAM,SAAS;AACjC,WAAK,MAAM,MAAM,SAAS;AAC1B,YAAM,QAAQ,KAAK,IAAI,MAAM,aAAa,MAAM,YAAY,QAAQ,QAAQ;AAC5E,WAAK,kBAAkB,GAAG,GAAG,KAAK;AAAA,IACrC;AACD,QAAI,UAAS;AACb,QAAI,KAAI;AAAA,EACX;AAAA,EACD,SAAS,OAAO,SAAS;AACrB,UAAM,MAAM,KAAK;AACjB,UAAM,QAAQ,QAAQ,UAAU,IAC1B,QAAQ,WACP,QAAQ,WAAW,QAAQ,YAAY;AAC9C,QAAI,UAAS;AACb,SAAK,kBAAkB,MAAM,GAAG,MAAM,GAAG,KAAK;AAC9C,QAAI,UAAS;AACb,QAAI,YAAY,QAAQ;AACxB,QAAI,KAAI;AAAA,EACX;AAAA,EACD,UAAU,aAAa,WAAW,SAAS;AACvC,eAAW,SAAS,aAAa;AAC7B,YAAM,EAAE,OAAQ,IAAG;AACnB,YAAM,oBAAoB,KAAK,sBAAsB,KAAK;AAC1D,UAAI,OAAO,SAAS,GAAG;AACnB,iBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACvC,gBAAM,aAAa,OAAO,CAAC;AAC3B,gBAAM,QAAQ,IAAI,MAAM,WAAW,GAAG,WAAW,GAAG,WAAW,UAAU,WAAW,IAAI;AACxF,cAAI,MAAM,GAAG;AACT,iBAAK,OAAO,iBAAiB;AAAA,UAChC;AACD,gBAAM,QAAQ,KAAK,UAAU,OAAO,iBAAiB;AACrD,cAAI,OAAO;AACP,sBAAU,OAAO,iBAAiB;AAAA,UACrC;AAAA,QACJ;AAAA,MACJ,OACI;AACD,aAAK,OAAO,iBAAiB;AAC7B,gBAAQ,OAAO,CAAC,GAAG,iBAAiB;AAAA,MACvC;AAAA,IACJ;AAAA,EACJ;AAAA,EACD,MAAM,EAAE,yBAAyB,MAAK,IAAK,IAAI;AAC3C,UAAM,cAAc,KAAK;AACzB,UAAM,QAAQ,KAAK,IAAI,OAAO,oBAAoB,GAAG,CAAC;AACtD,UAAM,OAAO;AACb,UAAM,OAAO;AACb,UAAM,OAAO,KAAK,OAAO,QAAQ;AACjC,UAAM,OAAO,KAAK,OAAO,SAAS;AAClC,UAAM,MAAM,SAAS,gBAAgB,8BAA8B,KAAK;AACxE,QAAI,aAAa,SAAS,4BAA4B;AACtD,QAAI,aAAa,eAAe,8BAA8B;AAC9D,QAAI,aAAa,WAAW,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAC7D,QAAI,aAAa,SAAS,KAAK,SAAU;AACzC,QAAI,aAAa,UAAU,KAAK,SAAU;AAC1C,QAAI,0BAA0B,KAAK,iBAAiB;AAChD,YAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,WAAK,aAAa,SAAS,MAAM;AACjC,WAAK,aAAa,UAAU,MAAM;AAClC,WAAK,aAAa,QAAQ,KAAK,eAAe;AAC9C,UAAI,YAAY,IAAI;AAAA,IACvB;AACD,SAAK,UAAU,aAAa,CAAC,OAAO,EAAE,SAAQ,MAAO;AACjD,YAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,UAAI,CAAC,MAAM,MAAM,SAAS,CAAC,KACvB,CAAC,MAAM,MAAM,SAAS,CAAC,KACvB,CAAC,MAAM,MAAM,SAAS,CAAC,KACvB,CAAC,MAAM,MAAM,SAAS,CAAC,GAAG;AAC1B,cAAM,OAAO,KAAK,MAAM,WAAW,EAAE,QAAQ,CAAC,CAAC,IAAI,MAAM,WAAW,EAAE,QAAQ,CAAC,CAAC,MACvE,MAAM,SAAS,EAAE,QAAQ,CAAC,CAAC,IAAI,MAAM,SAAS,EAAE,QAAQ,CAAC,CAAC,IAC5D,MAAM,SAAS,EAAE,QAAQ,CAAC,CAAC,IAAI,MAAM,SAAS,EAAE,QAAQ,CAAC,CAAC,IAC1D,MAAM,SAAS,EAAE,QAAQ,CAAC,CAAC,IAAI,MAAM,SAAS,EAAE,QAAQ,CAAC,CAAC;AACjE,aAAK,aAAa,KAAK,IAAI;AAC3B,aAAK,aAAa,iBAAiB,MAAM,WAAW,MAAM,QAAQ,CAAC,CAAC;AACpE,aAAK,aAAa,UAAU,QAAQ;AACpC,aAAK,aAAa,QAAQ,MAAM;AAChC,aAAK,aAAa,kBAAkB,OAAO;AAC3C,YAAI,YAAY,IAAI;AAAA,MACvB;AAAA,IACb,GAAW,CAAC,OAAO,EAAE,UAAU,SAAS,UAAU,eAAe;AACrD,YAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,YAAM,OAAO,UAAU,IAAI,WAAW,WAAW,YAAY;AAC7D,aAAO,aAAa,KAAK,KAAK,SAAU;AACxC,aAAO,aAAa,MAAM,MAAM,EAAE,SAAQ,CAAE;AAC5C,aAAO,aAAa,MAAM,MAAM,EAAE,SAAQ,CAAE;AAC5C,aAAO,aAAa,QAAQ,QAAQ;AACpC,UAAI,YAAY,MAAM;AAAA,IAClC,CAAS;AACD,WAAO,IAAI;AAAA,EACd;AACL","names":["BaseException","_a","info","mapR","_uiManager","_buttons","_toolbar","_id","_cache","_altText","_editor","_type","x","y","i","_b","data","k","elem","offsetX","offsetY","clip","_container","ratio","verbosity","isEvalSupported","_docId","font","obj","rotation","_position","_updates","_color","_fontSize","_bbox","_rotation","_box","outline","_innerMargin","_isLTR","_points","_scaleFactor","_keyDown","_pointerDown","_boundKeyDown","keyDown_fn","pointerDown_fn","_updateColor","_colorPicker","_thickness","updateColor_fn","_updateThickness","updateThickness_fn","x1","y1","x2","y2","control1","control2","_createCanvas","_createObserver","_observer","createCanvas_fn","createObserver_fn","_accessibilityManager","_editorTypes","editor","_parent"],"sources":["../../../node_modules/pdfjs-dist/build/pdf.mjs","../../../node_modules/signature_pad/dist/signature_pad.js"],"sourcesContent":["/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/******/ // The require scope\n/******/ var __webpack_require__ = {};\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__webpack_require__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/************************************************************************/\nvar __webpack_exports__ = globalThis.pdfjsLib = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n AbortException: () => (/* reexport */ AbortException),\n AnnotationEditorLayer: () => (/* reexport */ AnnotationEditorLayer),\n AnnotationEditorParamsType: () => (/* reexport */ AnnotationEditorParamsType),\n AnnotationEditorType: () => (/* reexport */ AnnotationEditorType),\n AnnotationEditorUIManager: () => (/* reexport */ AnnotationEditorUIManager),\n AnnotationLayer: () => (/* reexport */ AnnotationLayer),\n AnnotationMode: () => (/* reexport */ AnnotationMode),\n CMapCompressionType: () => (/* reexport */ CMapCompressionType),\n ColorPicker: () => (/* reexport */ ColorPicker),\n DOMSVGFactory: () => (/* reexport */ DOMSVGFactory),\n DrawLayer: () => (/* reexport */ DrawLayer),\n FeatureTest: () => (/* reexport */ util_FeatureTest),\n GlobalWorkerOptions: () => (/* reexport */ GlobalWorkerOptions),\n ImageKind: () => (/* reexport */ util_ImageKind),\n InvalidPDFException: () => (/* reexport */ InvalidPDFException),\n MissingPDFException: () => (/* reexport */ MissingPDFException),\n OPS: () => (/* reexport */ OPS),\n PDFDataRangeTransport: () => (/* reexport */ PDFDataRangeTransport),\n PDFDateString: () => (/* reexport */ PDFDateString),\n PDFWorker: () => (/* reexport */ PDFWorker),\n PasswordResponses: () => (/* reexport */ PasswordResponses),\n PermissionFlag: () => (/* reexport */ PermissionFlag),\n PixelsPerInch: () => (/* reexport */ PixelsPerInch),\n RenderingCancelledException: () => (/* reexport */ RenderingCancelledException),\n TextLayer: () => (/* reexport */ TextLayer),\n UnexpectedResponseException: () => (/* reexport */ UnexpectedResponseException),\n Util: () => (/* reexport */ Util),\n VerbosityLevel: () => (/* reexport */ VerbosityLevel),\n XfaLayer: () => (/* reexport */ XfaLayer),\n build: () => (/* reexport */ build),\n createValidAbsoluteUrl: () => (/* reexport */ createValidAbsoluteUrl),\n fetchData: () => (/* reexport */ fetchData),\n getDocument: () => (/* reexport */ getDocument),\n getFilenameFromUrl: () => (/* reexport */ getFilenameFromUrl),\n getPdfFilenameFromUrl: () => (/* reexport */ getPdfFilenameFromUrl),\n getXfaPageViewport: () => (/* reexport */ getXfaPageViewport),\n isDataScheme: () => (/* reexport */ isDataScheme),\n isPdfFile: () => (/* reexport */ isPdfFile),\n noContextMenu: () => (/* reexport */ noContextMenu),\n normalizeUnicode: () => (/* reexport */ normalizeUnicode),\n setLayerDimensions: () => (/* reexport */ setLayerDimensions),\n shadow: () => (/* reexport */ shadow),\n version: () => (/* reexport */ version)\n});\n\n;// CONCATENATED MODULE: ./src/shared/util.js\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6;\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n IS_EDITING: 0x80,\n OPLIST: 0x100\n};\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15\n};\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_DEFAULT_COLOR: 32,\n HIGHLIGHT_THICKNESS: 33,\n HIGHLIGHT_FREE: 34,\n HIGHLIGHT_SHOW_ALL: 35\n};\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nconst util_ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n};\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1\n};\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n setStrokeTransparent: 92,\n setFillTransparent: 93\n};\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch {}\n return null;\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch {\n return false;\n }\n}\nclass util_FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get platform() {\n if (typeof navigator !== \"undefined\" && typeof navigator?.platform === \"string\") {\n return shadow(this, \"platform\", {\n isMac: navigator.platform.includes(\"Mac\")\n });\n }\n return shadow(this, \"platform\", {\n isMac: false\n });\n }\n static get isCSSRoundSupported() {\n return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n }\n}\nconst hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[0];\n minMax[2] *= transform[0];\n if (transform[3] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n if (transform[1] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[1];\n minMax[3] *= transform[1];\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[2];\n minMax[2] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[5];\n minMax[2] += transform[4];\n minMax[3] += transform[5];\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = this.applyTransform(r, m);\n const p2 = this.applyTransform(r.slice(2, 4), m);\n const p3 = this.applyTransform([r[0], r[3]], m);\n const p4 = this.applyTransform([r[2], r[1]], m);\n return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n }\n return;\n }\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n if (minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n } else {\n minMax = [Math.min(x0, x3), Math.min(y0, y3), Math.max(x0, x3), Math.max(y0, y3)];\n }\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n return minMax;\n }\n}\nconst PDFStringTranslateTable = (/* unused pure expression or super */ null && ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]));\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n const decoded = decoder.decode(buffer);\n if (!decoded.includes(\"\\x1b\")) {\n return decoded;\n }\n return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const charCode = str.charCodeAt(i);\n if (charCode === 0x1b) {\n while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n continue;\n }\n const code = PDFStringTranslateTable[charCode];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction getModificationDate(date = new Date()) {\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto?.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n if (typeof crypto !== \"undefined\" && typeof crypto?.getRandomValues === \"function\") {\n crypto.getRandomValues(buf);\n } else {\n for (let i = 0; i < 32; i++) {\n buf[i] = Math.floor(Math.random() * 255);\n }\n }\n return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nconst FontRenderOps = {\n BEZIER_CURVE_TO: 0,\n MOVE_TO: 1,\n LINE_TO: 2,\n QUADRATIC_CURVE_TO: 3,\n RESTORE: 4,\n SAVE: 5,\n SCALE: 6,\n TRANSFORM: 7,\n TRANSLATE: 8\n};\n\n;// CONCATENATED MODULE: ./src/display/base_factory.js\n\nclass BaseFilterFactory {\n addFilter(maps) {\n return \"none\";\n }\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addAlphaFilter(map) {\n return \"none\";\n }\n addLuminosityFilter(map) {\n return \"none\";\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n destroy(keepHCM = false) {}\n}\nclass BaseCanvasFactory {\n #enableHWA = false;\n constructor({\n enableHWA = false\n } = {}) {\n this.#enableHWA = enableHWA;\n }\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\", {\n willReadFrequently: !this.#enableHWA\n })\n };\n }\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = true\n }) {\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.\");\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n const compressionType = this.isCompressed ? CMapCompressionType.BINARY : CMapCompressionType.NONE;\n return this._fetchData(url, compressionType).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n _fetchData(url, compressionType) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\nclass BaseStandardFontDataFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `standardFontDataUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetchData(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n _fetchData(url) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\nclass BaseSVGFactory {\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n }\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/display_utils.js\n\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nclass DOMFilterFactory extends BaseFilterFactory {\n #baseUrl;\n #_cache;\n #_defs;\n #docId;\n #document;\n #_hcmCache;\n #id = 0;\n constructor({\n docId,\n ownerDocument = globalThis.document\n } = {}) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n get #cache() {\n return this.#_cache ||= new Map();\n }\n get #hcmCache() {\n return this.#_hcmCache ||= new Map();\n }\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const {\n style\n } = div;\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n #createTables(maps) {\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n const table = buffer.join(\",\");\n return [table, table, table];\n }\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n }\n #createUrl(id) {\n if (this.#baseUrl === undefined) {\n this.#baseUrl = \"\";\n const url = this.#document.URL;\n if (url !== this.#document.baseURI) {\n if (isDataScheme(url)) {\n warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n } else {\n this.#baseUrl = url.split(\"#\", 1)[0];\n }\n }\n }\n return `url(${this.#baseUrl}#${id})`;\n }\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n const [tableR, tableG, tableB] = this.#createTables(maps);\n const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n return url;\n }\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n const filterName = \"base\";\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const fgRGB = this.#getRGB(fgColor);\n fgColor = Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n return info.url;\n }\n const map = new Array(256);\n for (let i = 0; i <= 255; i++) {\n const x = i / 255;\n map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n }\n const table = map.join(\",\");\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + i / n * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n addAlphaFilter(map) {\n let value = this.#cache.get(map);\n if (value) {\n return value;\n }\n const [tableA] = this.#createTables([map]);\n const key = `alpha_${tableA}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapAlphaConversion(tableA, filter);\n return url;\n }\n addLuminosityFilter(map) {\n let value = this.#cache.get(map || \"luminosity\");\n if (value) {\n return value;\n }\n let tableA, key;\n if (map) {\n [tableA] = this.#createTables([map]);\n key = `luminosity_${tableA}`;\n } else {\n key = \"luminosity\";\n }\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addLuminosityConversion(filter);\n if (map) {\n this.#addTransferMapAlphaConversion(tableA, filter);\n }\n return url;\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n }\n this.#defs.style.color = \"\";\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n destroy(keepHCM = false) {\n if (keepHCM && this.#hcmCache.size !== 0) {\n return;\n }\n if (this.#_defs) {\n this.#_defs.parentNode.parentNode.remove();\n this.#_defs = null;\n }\n if (this.#_cache) {\n this.#_cache.clear();\n this.#_cache = null;\n }\n this.#id = 0;\n }\n #addLuminosityConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n filter.append(feColorMatrix);\n }\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n filter.append(feColorMatrix);\n }\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n return filter;\n }\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n #addTransferMapAlphaConversion(aTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n }\n #getRGB(color) {\n this.#defs.style.color = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n }\n}\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document,\n enableHWA = false\n } = {}) {\n super({\n enableHWA\n });\n this._document = ownerDocument;\n }\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\nasync function fetchData(url, type = \"text\") {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n switch (type) {\n case \"arraybuffer\":\n return response.arrayBuffer();\n case \"blob\":\n return response.blob();\n case \"json\":\n return response.json();\n }\n return response.text();\n }\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = type;\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n switch (type) {\n case \"arraybuffer\":\n case \"blob\":\n case \"json\":\n resolve(request.response);\n return;\n }\n resolve(request.responseText);\n return;\n }\n reject(new Error(request.statusText));\n };\n request.send(null);\n });\n}\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\").then(data => ({\n cMapData: data instanceof ArrayBuffer ? new Uint8Array(data) : stringToBytes(data),\n compressionType\n }));\n }\n}\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url, \"arraybuffer\").then(data => new Uint8Array(data));\n }\n}\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\nclass PageViewport {\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = (viewBox[3] - viewBox[1]) * scale;\n height = (viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n get rawDims() {\n const {\n viewBox\n } = this;\n return shadow(this, \"rawDims\", {\n pageWidth: viewBox[2] - viewBox[0],\n pageHeight: viewBox[3] - viewBox[1],\n pageX: viewBox[0],\n pageY: viewBox[1]\n });\n }\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n }\n convertToViewportRectangle(rect) {\n const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n}\nclass RenderingCancelledException extends BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\n }\n}\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url) {\n [url] = url.split(/[#?]/, 1);\n return url.substring(url.lastIndexOf(\"/\") + 1);\n}\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n try {\n suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n } catch {}\n }\n }\n return suggestedFilename || defaultFilename;\n}\nclass StatTimer {\n started = Object.create(null);\n times = [];\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n toString() {\n const outBuf = [];\n let longest = 0;\n for (const {\n name\n } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const {\n name,\n start,\n end\n } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const {\n protocol\n } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n return protocol === \"http:\" || protocol === \"https:\";\n } catch {\n return false;\n }\n}\nfunction noContextMenu(e) {\n e.preventDefault();\n}\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\nlet pdfDateStringRegex;\nclass PDFDateString {\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n pdfDateStringRegex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n const matches = pdfDateStringRegex.exec(input);\n if (!matches) {\n return null;\n }\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\nfunction getXfaPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n}) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n return new PageViewport({\n viewBox,\n scale,\n rotation\n });\n}\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n }\n if (color.startsWith(\"rgb(\")) {\n return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n }\n if (color.startsWith(\"rgba(\")) {\n return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n }\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\nfunction getCurrentTransform(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n if (viewport instanceof PageViewport) {\n const {\n pageWidth,\n pageHeight\n } = viewport.rawDims;\n const {\n style\n } = div;\n const useRound = util_FeatureTest.isCSSRoundSupported;\n const w = `var(--scale-factor) * ${pageWidth}px`,\n h = `var(--scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(${w}, 1px)` : `calc(${w})`,\n heightStr = useRound ? `round(${h}, 1px)` : `calc(${h})`;\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/toolbar.js\n\nclass EditorToolbar {\n #toolbar = null;\n #colorPicker = null;\n #editor;\n #buttons = null;\n #altText = null;\n static #l10nRemove = null;\n constructor(editor) {\n this.#editor = editor;\n EditorToolbar.#l10nRemove ||= Object.freeze({\n freetext: \"pdfjs-editor-remove-freetext-button\",\n highlight: \"pdfjs-editor-remove-highlight-button\",\n ink: \"pdfjs-editor-remove-ink-button\",\n stamp: \"pdfjs-editor-remove-stamp-button\"\n });\n }\n render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.className = \"editToolbar\";\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#editor._uiManager._signal;\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n signal\n });\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n const position = this.#editor.toolbarPosition;\n if (position) {\n const {\n style\n } = editToolbar;\n const x = this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0];\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;\n }\n this.#addDeleteButton();\n return editToolbar;\n }\n static #pointerDown(e) {\n e.stopPropagation();\n }\n #focusIn(e) {\n this.#editor._focusEventsAllowed = false;\n e.preventDefault();\n e.stopPropagation();\n }\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n e.preventDefault();\n e.stopPropagation();\n }\n #addListenersToElement(element) {\n const signal = this.#editor._uiManager._signal;\n element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n }\n hide() {\n this.#toolbar.classList.add(\"hidden\");\n this.#colorPicker?.hideDropdown();\n }\n show() {\n this.#toolbar.classList.remove(\"hidden\");\n this.#altText?.shown();\n }\n #addDeleteButton() {\n const {\n editorType,\n _uiManager\n } = this.#editor;\n const button = document.createElement(\"button\");\n button.className = \"delete\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n this.#addListenersToElement(button);\n button.addEventListener(\"click\", e => {\n _uiManager.delete();\n }, {\n signal: _uiManager._signal\n });\n this.#buttons.append(button);\n }\n get #divider() {\n const divider = document.createElement(\"div\");\n divider.className = \"divider\";\n return divider;\n }\n async addAltText(altText) {\n const button = await altText.render();\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n this.#altText = altText;\n }\n addColorPicker(colorPicker) {\n this.#colorPicker = colorPicker;\n const button = colorPicker.renderButton();\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n }\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\nclass HighlightToolbar {\n #buttons = null;\n #toolbar = null;\n #uiManager;\n constructor(uiManager) {\n this.#uiManager = uiManager;\n }\n #render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.className = \"editToolbar\";\n editToolbar.setAttribute(\"role\", \"toolbar\");\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal: this.#uiManager._signal\n });\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n this.#addHighlightButton();\n return editToolbar;\n }\n #getLastPoint(boxes, isLTR) {\n let lastY = 0;\n let lastX = 0;\n for (const box of boxes) {\n const y = box.y + box.height;\n if (y < lastY) {\n continue;\n }\n const x = box.x + (isLTR ? box.width : 0);\n if (y > lastY) {\n lastX = x;\n lastY = y;\n continue;\n }\n if (isLTR) {\n if (x > lastX) {\n lastX = x;\n }\n } else if (x < lastX) {\n lastX = x;\n }\n }\n return [isLTR ? 1 - lastX : lastX, lastY];\n }\n show(parent, boxes, isLTR) {\n const [x, y] = this.#getLastPoint(boxes, isLTR);\n const {\n style\n } = this.#toolbar ||= this.#render();\n parent.append(this.#toolbar);\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n }\n hide() {\n this.#toolbar.remove();\n }\n #addHighlightButton() {\n const button = document.createElement(\"button\");\n button.className = \"highlightButton\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", `pdfjs-highlight-floating-button1`);\n const span = document.createElement(\"span\");\n button.append(span);\n span.className = \"visuallyHidden\";\n span.setAttribute(\"data-l10n-id\", \"pdfjs-highlight-floating-button-label\");\n const signal = this.#uiManager._signal;\n button.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n button.addEventListener(\"click\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n }, {\n signal\n });\n this.#buttons.append(button);\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/tools.js\n\n\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\nfunction opacityToHex(opacity) {\n return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, \"0\");\n}\nclass IdManager {\n #id = 0;\n get id() {\n return `${AnnotationEditorPrefix}${this.#id++}`;\n }\n}\nclass ImageManager {\n #baseId = getUuid();\n #id = 0;\n #cache = null;\n static get _isSVGFittingCanvas() {\n const svg = `data:image/svg+xml;charset=UTF-8,`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n const image = new Image();\n image.src = svg;\n const promise = image.decode().then(() => {\n ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n });\n return shadow(this, \"_isSVGFittingCanvas\", promise);\n }\n async #get(key, rawData) {\n this.#cache ||= new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n return null;\n }\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n try {\n data ||= {\n bitmap: null,\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 0,\n isSvg: false\n };\n let image;\n if (typeof rawData === \"string\") {\n data.url = rawData;\n image = await fetchData(rawData, \"blob\");\n } else {\n image = data.file = rawData;\n }\n if (image.type === \"image/svg+xml\") {\n const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n const fileReader = new FileReader();\n const imageElement = new Image();\n const imagePromise = new Promise((resolve, reject) => {\n imageElement.onload = () => {\n data.bitmap = imageElement;\n data.isSvg = true;\n resolve();\n };\n fileReader.onload = async () => {\n const url = data.svgUrl = fileReader.result;\n imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url;\n };\n imageElement.onerror = fileReader.onerror = reject;\n });\n fileReader.readAsDataURL(image);\n await imagePromise;\n } else {\n data.bitmap = await createImageBitmap(image);\n }\n data.refCounter = 1;\n } catch (e) {\n console.error(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n async getFromFile(file) {\n const {\n lastModified,\n name,\n size,\n type\n } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n async getFromId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n if (data.file) {\n return this.getFromFile(data.file);\n }\n return this.getFromUrl(data.url);\n }\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n deleteId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n data.bitmap = null;\n }\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n add({\n cmd,\n undo,\n post,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n if (this.#locked) {\n return;\n }\n const save = {\n cmd,\n undo,\n post,\n type\n };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n this.#commands.push(save);\n }\n undo() {\n if (this.#position === -1) {\n return;\n }\n this.#locked = true;\n const {\n undo,\n post\n } = this.#commands[this.#position];\n undo();\n post?.();\n this.#locked = false;\n this.#position -= 1;\n }\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n const {\n cmd,\n post\n } = this.#commands[this.#position];\n cmd();\n post?.();\n this.#locked = false;\n }\n }\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n destroy() {\n this.#commands = null;\n }\n}\nclass KeyboardManager {\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const {\n isMac\n } = util_FeatureTest.platform;\n for (const [keys, callback, options = {}] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n #serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return str;\n }\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const info = this.callbacks.get(this.#serialize(event));\n if (!info) {\n return;\n }\n const {\n callback,\n options: {\n bubbles = false,\n args = [],\n checker = null\n }\n } = info;\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args, event)();\n if (!bubbles) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n}\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return Util.makeHexColor(...rgb);\n }\n}\nclass AnnotationEditorUIManager {\n #abortController = new AbortController();\n #activeEditor = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #altTextManager = null;\n #annotationStorage = null;\n #changedExistingAnnotations = null;\n #commandManager = new CommandManager();\n #copyPasteAC = null;\n #currentPageIndex = 0;\n #deletedAnnotationsElementIds = new Set();\n #draggingEditors = null;\n #editorTypes = null;\n #editorsToRescale = new Set();\n #enableHighlightFloatingButton = false;\n #enableUpdatedAddImage = false;\n #enableNewAltTextWhenAddingImage = false;\n #filterFactory = null;\n #focusMainContainerTimeoutId = null;\n #focusManagerAC = null;\n #highlightColors = null;\n #highlightWhenShiftUp = false;\n #highlightToolbar = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isWaiting = false;\n #keyboardManagerAC = null;\n #lastActiveElement = null;\n #mainHighlightColorPicker = null;\n #mlManager = null;\n #mode = AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #selectedTextNode = null;\n #pageColors = null;\n #showAllStates = null;\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n hasSelectedText: false\n };\n #translation = [0, 0];\n #translationTimeoutId = null;\n #container = null;\n #viewer = null;\n static TRANSLATE_SMALL = 1;\n static TRANSLATE_BIG = 10;\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n const arrowChecker = self => self.#container.contains(document.activeElement) && document.activeElement.tagName !== \"BUTTON\" && self.hasSomethingToControl();\n const textInputChecker = (_self, {\n target: el\n }) => {\n if (el instanceof HTMLInputElement) {\n const {\n type\n } = el;\n return type !== \"text\" && type !== \"number\";\n }\n return true;\n };\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll, {\n checker: textInputChecker\n }], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, {\n checker: textInputChecker\n }], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo, {\n checker: textInputChecker\n }], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete, {\n checker: textInputChecker\n }], [[\"Enter\", \"mac+Enter\"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(el) && !self.isEnterHandled\n }], [[\" \", \"mac+ \"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(document.activeElement)\n }], [[\"Escape\", \"mac+Escape\"], proto.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto.translateSelectedEditors, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n constructor(container, viewer, altTextManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager) {\n const signal = this._signal = this.#abortController.signal;\n this.#container = container;\n this.#viewer = viewer;\n this.#altTextManager = altTextManager;\n this._eventBus = eventBus;\n eventBus._on(\"editingaction\", this.onEditingAction.bind(this), {\n signal\n });\n eventBus._on(\"pagechanging\", this.onPageChanging.bind(this), {\n signal\n });\n eventBus._on(\"scalechanging\", this.onScaleChanging.bind(this), {\n signal\n });\n eventBus._on(\"rotationchanging\", this.onRotationChanging.bind(this), {\n signal\n });\n eventBus._on(\"setpreference\", this.onSetPreference.bind(this), {\n signal\n });\n eventBus._on(\"switchannotationeditorparams\", evt => this.updateParams(evt.type, evt.value), {\n signal\n });\n this.#addSelectionListener();\n this.#addDragAndDropListeners();\n this.#addKeyboardManager();\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.#highlightColors = highlightColors || null;\n this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n this.#enableUpdatedAddImage = enableUpdatedAddImage;\n this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n this.#mlManager = mlManager || null;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n this.isShiftKeyDown = false;\n }\n destroy() {\n this.#abortController?.abort();\n this.#abortController = null;\n this._signal = null;\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager?.destroy();\n this.#highlightToolbar?.hide();\n this.#highlightToolbar = null;\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n this.#focusMainContainerTimeoutId = null;\n }\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n this.#translationTimeoutId = null;\n }\n }\n combinedSignal(ac) {\n return AbortSignal.any([this._signal, ac.signal]);\n }\n get mlManager() {\n return this.#mlManager;\n }\n get useNewAltTextFlow() {\n return this.#enableUpdatedAddImage;\n }\n get useNewAltTextWhenAddingImage() {\n return this.#enableNewAltTextWhenAddingImage;\n }\n get hcmFilter() {\n return shadow(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n }\n get direction() {\n return shadow(this, \"direction\", getComputedStyle(this.#container).direction);\n }\n get highlightColors() {\n return shadow(this, \"highlightColors\", this.#highlightColors ? new Map(this.#highlightColors.split(\",\").map(pair => pair.split(\"=\").map(x => x.trim()))) : null);\n }\n get highlightColorNames() {\n return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n }\n setMainHighlightColorPicker(colorPicker) {\n this.#mainHighlightColorPicker = colorPicker;\n }\n editAltText(editor, firstTime = false) {\n this.#altTextManager?.editAltText(this, editor, firstTime);\n }\n switchToMode(mode, callback) {\n this._eventBus.on(\"annotationeditormodechanged\", callback, {\n once: true,\n signal: this._signal\n });\n this._eventBus.dispatch(\"showannotationeditorui\", {\n source: this,\n mode\n });\n }\n setPreference(name, value) {\n this._eventBus.dispatch(\"setpreference\", {\n source: this,\n name,\n value\n });\n }\n onSetPreference({\n name,\n value\n }) {\n switch (name) {\n case \"enableNewAltTextWhenAddingImage\":\n this.#enableNewAltTextWhenAddingImage = value;\n break;\n }\n }\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n focusMainContainer() {\n this.#container.focus();\n }\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height\n } = layer.div.getBoundingClientRect();\n if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n return layer;\n }\n }\n return null;\n }\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n onScaleChanging({\n scale\n }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n }\n onRotationChanging({\n pagesRotation\n }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n #getAnchorElementForSelection({\n anchorNode\n }) {\n return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n }\n #getLayerForTextLayer(textLayer) {\n const {\n currentLayer\n } = this;\n if (currentLayer.hasTextLayer(textLayer)) {\n return currentLayer;\n }\n for (const layer of this.#allLayers.values()) {\n if (layer.hasTextLayer(textLayer)) {\n return layer;\n }\n }\n return null;\n }\n highlightSelection(methodOfCreation = \"\") {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset\n } = selection;\n const text = selection.toString();\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n selection.empty();\n const layer = this.#getLayerForTextLayer(textLayer);\n const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n const callback = () => {\n layer?.createAndAddNewEditor({\n x: 0,\n y: 0\n }, false, {\n methodOfCreation,\n boxes,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n text\n });\n if (isNoneMode) {\n this.showAllEditors(\"highlight\", true, true);\n }\n };\n if (isNoneMode) {\n this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n return;\n }\n callback();\n }\n #displayHighlightToolbar() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n this.#highlightToolbar ||= new HighlightToolbar(this);\n this.#highlightToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n }\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n const {\n anchorNode\n } = selection;\n if (anchorNode === this.#selectedTextNode) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n if (!textLayer) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = anchorNode;\n this.#dispatchUpdateStates({\n hasSelectedText: true\n });\n if (this.#mode !== AnnotationEditorType.HIGHLIGHT && this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.showAllEditors(\"highlight\", true, true);\n }\n this.#highlightWhenShiftUp = this.isShiftKeyDown;\n if (!this.isShiftKeyDown) {\n const activeLayer = this.#mode === AnnotationEditorType.HIGHLIGHT ? this.#getLayerForTextLayer(textLayer) : null;\n activeLayer?.toggleDrawing();\n const ac = new AbortController();\n const signal = this.combinedSignal(ac);\n const pointerup = e => {\n if (e.type === \"pointerup\" && e.button !== 0) {\n return;\n }\n ac.abort();\n activeLayer?.toggleDrawing(true);\n if (e.type === \"pointerup\") {\n this.#onSelectEnd(\"main_toolbar\");\n }\n };\n window.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n window.addEventListener(\"blur\", pointerup, {\n signal\n });\n }\n }\n #onSelectEnd(methodOfCreation = \"\") {\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n } else if (this.#enableHighlightFloatingButton) {\n this.#displayHighlightToolbar();\n }\n }\n #addSelectionListener() {\n document.addEventListener(\"selectionchange\", this.#selectionChange.bind(this), {\n signal: this._signal\n });\n }\n #addFocusManager() {\n if (this.#focusManagerAC) {\n return;\n }\n this.#focusManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#focusManagerAC);\n window.addEventListener(\"focus\", this.focus.bind(this), {\n signal\n });\n window.addEventListener(\"blur\", this.blur.bind(this), {\n signal\n });\n }\n #removeFocusManager() {\n this.#focusManagerAC?.abort();\n this.#focusManagerAC = null;\n }\n blur() {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n if (!this.hasSelection) {\n return;\n }\n const {\n activeElement\n } = document;\n for (const editor of this.#selectedEditors) {\n if (editor.div.contains(activeElement)) {\n this.#lastActiveElement = [editor, activeElement];\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\"focusin\", () => {\n lastEditor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this._signal\n });\n lastActiveElement.focus();\n }\n #addKeyboardManager() {\n if (this.#keyboardManagerAC) {\n return;\n }\n this.#keyboardManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#keyboardManagerAC);\n window.addEventListener(\"keydown\", this.keydown.bind(this), {\n signal\n });\n window.addEventListener(\"keyup\", this.keyup.bind(this), {\n signal\n });\n }\n #removeKeyboardManager() {\n this.#keyboardManagerAC?.abort();\n this.#keyboardManagerAC = null;\n }\n #addCopyPasteListeners() {\n if (this.#copyPasteAC) {\n return;\n }\n this.#copyPasteAC = new AbortController();\n const signal = this.combinedSignal(this.#copyPasteAC);\n document.addEventListener(\"copy\", this.copy.bind(this), {\n signal\n });\n document.addEventListener(\"cut\", this.cut.bind(this), {\n signal\n });\n document.addEventListener(\"paste\", this.paste.bind(this), {\n signal\n });\n }\n #removeCopyPasteListeners() {\n this.#copyPasteAC?.abort();\n this.#copyPasteAC = null;\n }\n #addDragAndDropListeners() {\n const signal = this._signal;\n document.addEventListener(\"dragover\", this.dragOver.bind(this), {\n signal\n });\n document.addEventListener(\"drop\", this.drop.bind(this), {\n signal\n });\n }\n addEditListeners() {\n this.#addKeyboardManager();\n this.#addCopyPasteListeners();\n }\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.#removeCopyPasteListeners();\n }\n dragOver(event) {\n for (const {\n type\n } of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(type)) {\n event.dataTransfer.dropEffect = \"copy\";\n event.preventDefault();\n return;\n }\n }\n }\n }\n drop(event) {\n for (const item of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n event.preventDefault();\n return;\n }\n }\n }\n }\n copy(event) {\n event.preventDefault();\n this.#activeEditor?.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n cut(event) {\n this.copy(event);\n this.delete();\n }\n paste(event) {\n event.preventDefault();\n const {\n clipboardData\n } = event;\n for (const item of clipboardData.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n try {\n data = JSON.parse(data);\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n return;\n }\n if (!Array.isArray(data)) {\n return;\n }\n this.unselectAll();\n const layer = this.currentLayer;\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n this.#selectEditors(newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n }\n }\n keydown(event) {\n if (!this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = true;\n }\n if (this.#mode !== AnnotationEditorType.NONE && !this.isEditorHandlingKeyboard) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n keyup(event) {\n if (this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n onEditingAction({\n name\n }) {\n switch (name) {\n case \"undo\":\n case \"redo\":\n case \"delete\":\n case \"selectAll\":\n this[name]();\n break;\n case \"highlightSelection\":\n this.highlightSelection(\"context_menu\");\n break;\n }\n }\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n if (hasChanged) {\n this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n if (this.#mode === AnnotationEditorType.HIGHLIGHT && details.hasSelectedEditor === false) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_FREE, true]]);\n }\n }\n }\n #dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addFocusManager();\n this.#addCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false\n });\n } else {\n this.#removeFocusManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false\n });\n this.disableUserSelect(false);\n }\n }\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return this.#idManager.id;\n }\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n updateMode(mode, editId = null, isFromKeyboard = false) {\n if (this.#mode === mode) {\n return;\n }\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n return;\n }\n this.setEditingState(true);\n this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (!editId && isFromKeyboard) {\n this.addNewEditorFromKeyboard();\n return;\n }\n if (!editId) {\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.annotationElementId === editId) {\n this.setSelected(editor);\n editor.enterInEditMode();\n break;\n }\n }\n }\n addNewEditorFromKeyboard() {\n if (this.currentLayer.canCreateNewEmptyEditor()) {\n this.currentLayer.addNewEditor();\n }\n }\n updateToolbar(mode) {\n if (mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n switch (type) {\n case AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor();\n return;\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n this.#mainHighlightColorPicker?.updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n this._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data: {\n type: \"highlight\",\n action: \"toggle_visibility\"\n }\n }\n });\n (this.#showAllStates ||= new Map()).set(type, value);\n this.showAllEditors(\"highlight\", value);\n break;\n }\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n showAllEditors(type, visible, updateButton = false) {\n for (const editor of this.#allEditors.values()) {\n if (editor.editorType === type) {\n editor.show(visible);\n }\n }\n const state = this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ?? true;\n if (state !== visible) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible]]);\n }\n }\n enableWaiting(mustWait = false) {\n if (this.#isWaiting === mustWait) {\n return;\n }\n this.#isWaiting = mustWait;\n for (const layer of this.#allLayers.values()) {\n if (mustWait) {\n layer.disableClick();\n } else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n for (const layer of this.#allLayers.values()) {\n layer.enable();\n }\n for (const editor of this.#allEditors.values()) {\n editor.enable();\n }\n }\n }\n #disableAll() {\n this.unselectAll();\n if (this.#isEnabled) {\n this.#isEnabled = false;\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n for (const editor of this.#allEditors.values()) {\n editor.disable();\n }\n }\n }\n getEditors(pageIndex) {\n const editors = [];\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n editors.push(editor);\n }\n }\n return editors;\n }\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n removeEditor(editor) {\n if (editor.div.contains(document.activeElement)) {\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n }\n this.#focusMainContainerTimeoutId = setTimeout(() => {\n this.focusMainContainer();\n this.#focusMainContainerTimeoutId = null;\n }, 0);\n }\n this.#allEditors.delete(editor.id);\n this.unselect(editor);\n if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n this.addChangedExistingAnnotation(editor);\n editor.deleted = true;\n }\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n this.removeChangedExistingAnnotation(editor);\n editor.deleted = false;\n }\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n }\n }\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n get #lastSelectedEditor() {\n let ed = null;\n for (ed of this.#selectedEditors) {}\n return ed;\n }\n updateUI(editor) {\n if (this.#lastSelectedEditor === editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n setSelected(editor) {\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n get firstSelectedEditor() {\n return this.#selectedEditors.values().next().value;\n }\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n get isEnterHandled() {\n return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n }\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n }\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty()\n });\n }\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n return false;\n }\n delete() {\n this.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [...this.#selectedEditors];\n const cmd = () => {\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n commitOrRemove() {\n this.#activeEditor?.commitOrRemove();\n }\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n #selectEditors(editors) {\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n if (this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n }\n if (!this.hasSelection) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n const TIME_TO_WAIT = 1000;\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\n }\n }\n setUpDragSession() {\n if (!this.hasSelection) {\n return;\n }\n this.disableUserSelect(true);\n this.#draggingEditors = new Map();\n for (const editor of this.#selectedEditors) {\n this.#draggingEditors.set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1\n });\n }\n }\n endDragSession() {\n if (!this.#draggingEditors) {\n return false;\n }\n this.disableUserSelect(false);\n const map = this.#draggingEditors;\n this.#draggingEditors = null;\n let mustBeAddedInUndoStack = false;\n for (const [{\n x,\n y,\n pageIndex\n }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n }\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n const parent = this.#allLayers.get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n } else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n this.addCommands({\n cmd: () => {\n for (const [editor, {\n newX,\n newY,\n newPageIndex\n }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, {\n savedX,\n savedY,\n savedPageIndex\n }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true\n });\n return true;\n }\n dragSelectedEditors(tx, ty) {\n if (!this.#draggingEditors) {\n return;\n }\n for (const editor of this.#draggingEditors.keys()) {\n editor.drag(tx, ty);\n }\n }\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n } else {\n editor.parent.addOrRebuild(editor);\n }\n }\n get isEditorHandlingKeyboard() {\n return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();\n }\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n getActive() {\n return this.#activeEditor;\n }\n getMode() {\n return this.#mode;\n }\n get imageManager() {\n return shadow(this, \"imageManager\", new ImageManager());\n }\n getSelectionBoxes(textLayer) {\n if (!textLayer) {\n return null;\n }\n const selection = document.getSelection();\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n return null;\n }\n }\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n let rotator;\n switch (textLayer.getAttribute(\"data-main-rotation\")) {\n case \"90\":\n rotator = (x, y, w, h) => ({\n x: (y - layerY) / parentHeight,\n y: 1 - (x + w - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n case \"180\":\n rotator = (x, y, w, h) => ({\n x: 1 - (x + w - layerX) / parentWidth,\n y: 1 - (y + h - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n case \"270\":\n rotator = (x, y, w, h) => ({\n x: 1 - (y + h - layerY) / parentHeight,\n y: (x - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n default:\n rotator = (x, y, w, h) => ({\n x: (x - layerX) / parentWidth,\n y: (y - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n }\n const boxes = [];\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n const range = selection.getRangeAt(i);\n if (range.collapsed) {\n continue;\n }\n for (const {\n x,\n y,\n width,\n height\n } of range.getClientRects()) {\n if (width === 0 || height === 0) {\n continue;\n }\n boxes.push(rotator(x, y, width, height));\n }\n }\n return boxes.length === 0 ? null : boxes;\n }\n addChangedExistingAnnotation({\n annotationElementId,\n id\n }) {\n (this.#changedExistingAnnotations ||= new Map()).set(annotationElementId, id);\n }\n removeChangedExistingAnnotation({\n annotationElementId\n }) {\n this.#changedExistingAnnotations?.delete(annotationElementId);\n }\n renderAnnotationElement(annotation) {\n const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n if (!editorId) {\n return;\n }\n const editor = this.#annotationStorage.getRawValue(editorId);\n if (!editor) {\n return;\n }\n if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n return;\n }\n editor.renderAnnotationElement(annotation);\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/alt_text.js\n\nclass AltText {\n #altText = null;\n #altTextDecorative = false;\n #altTextButton = null;\n #altTextTooltip = null;\n #altTextTooltipTimeout = null;\n #altTextWasFromKeyBoard = false;\n #badge = null;\n #editor = null;\n #guessedText = null;\n #textWithDisclaimer = null;\n #useNewAltTextFlow = false;\n static _l10nPromise = null;\n constructor(editor) {\n this.#editor = editor;\n this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n }\n static initialize(l10nPromise) {\n AltText._l10nPromise ||= l10nPromise;\n }\n async render() {\n const altText = this.#altTextButton = document.createElement(\"button\");\n altText.className = \"altText\";\n let msg;\n if (this.#useNewAltTextFlow) {\n altText.classList.add(\"new\");\n msg = await AltText._l10nPromise.get(\"pdfjs-editor-new-alt-text-missing-button-label\");\n } else {\n msg = await AltText._l10nPromise.get(\"pdfjs-editor-alt-text-button-label\");\n }\n altText.textContent = msg;\n altText.setAttribute(\"aria-label\", msg);\n altText.tabIndex = \"0\";\n const signal = this.#editor._uiManager._signal;\n altText.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n this.#editor._uiManager.editAltText(this.#editor);\n if (this.#useNewAltTextFlow) {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n data: {\n label: this.#label\n }\n });\n }\n };\n altText.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n altText.addEventListener(\"keydown\", event => {\n if (event.target === altText && event.key === \"Enter\") {\n this.#altTextWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n await this.#setState();\n return altText;\n }\n get #label() {\n return this.#altText && \"added\" || this.#altText === null && this.guessedText && \"review\" || \"missing\";\n }\n finish() {\n if (!this.#altTextButton) {\n return;\n }\n this.#altTextButton.focus({\n focusVisible: this.#altTextWasFromKeyBoard\n });\n this.#altTextWasFromKeyBoard = false;\n }\n isEmpty() {\n if (this.#useNewAltTextFlow) {\n return this.#altText === null;\n }\n return !this.#altText && !this.#altTextDecorative;\n }\n hasData() {\n if (this.#useNewAltTextFlow) {\n return this.#altText !== null || !!this.#guessedText;\n }\n return this.isEmpty();\n }\n get guessedText() {\n return this.#guessedText;\n }\n async setGuessedText(guessedText) {\n if (this.#altText !== null) {\n return;\n }\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = await AltText._l10nPromise.get(\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\")({\n generatedAltText: guessedText\n });\n this.#setState();\n }\n toggleAltTextBadge(visibility = false) {\n if (!this.#useNewAltTextFlow || this.#altText) {\n this.#badge?.remove();\n this.#badge = null;\n return;\n }\n if (!this.#badge) {\n const badge = this.#badge = document.createElement(\"div\");\n badge.className = \"noAltTextBadge\";\n this.#editor.div.append(badge);\n }\n this.#badge.classList.toggle(\"hidden\", !visibility);\n }\n serialize(isForCopying) {\n let altText = this.#altText;\n if (!isForCopying && this.#guessedText === altText) {\n altText = this.#textWithDisclaimer;\n }\n return {\n altText,\n decorative: this.#altTextDecorative,\n guessedText: this.#guessedText,\n textWithDisclaimer: this.#textWithDisclaimer\n };\n }\n get data() {\n return {\n altText: this.#altText,\n decorative: this.#altTextDecorative\n };\n }\n set data({\n altText,\n decorative,\n guessedText,\n textWithDisclaimer,\n cancel = false\n }) {\n if (guessedText) {\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = textWithDisclaimer;\n }\n if (this.#altText === altText && this.#altTextDecorative === decorative) {\n return;\n }\n if (!cancel) {\n this.#altText = altText;\n this.#altTextDecorative = decorative;\n }\n this.#setState();\n }\n toggle(enabled = false) {\n if (!this.#altTextButton) {\n return;\n }\n if (!enabled && this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextButton.disabled = !enabled;\n }\n shown() {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n data: {\n label: this.#label\n }\n });\n }\n destroy() {\n this.#altTextButton?.remove();\n this.#altTextButton = null;\n this.#altTextTooltip = null;\n this.#badge?.remove();\n this.#badge = null;\n }\n async #setState() {\n const button = this.#altTextButton;\n if (!button) {\n return;\n }\n if (this.#useNewAltTextFlow) {\n const label = this.#label;\n const type = label === \"review\" ? \"to-review\" : label;\n button.classList.toggle(\"done\", !!this.#altText);\n AltText._l10nPromise.get(`pdfjs-editor-new-alt-text-${type}-button-label`).then(msg => {\n button.setAttribute(\"aria-label\", msg);\n for (const child of button.childNodes) {\n if (child.nodeType === Node.TEXT_NODE) {\n child.textContent = msg;\n break;\n }\n }\n });\n if (!this.#altText) {\n this.#altTextTooltip?.remove();\n return;\n }\n } else {\n if (!this.#altText && !this.#altTextDecorative) {\n button.classList.remove(\"done\");\n this.#altTextTooltip?.remove();\n return;\n }\n button.classList.add(\"done\");\n AltText._l10nPromise.get(\"pdfjs-editor-alt-text-edit-button-label\").then(msg => {\n button.setAttribute(\"aria-label\", msg);\n });\n }\n let tooltip = this.#altTextTooltip;\n if (!tooltip) {\n this.#altTextTooltip = tooltip = document.createElement(\"span\");\n tooltip.className = \"tooltip\";\n tooltip.setAttribute(\"role\", \"tooltip\");\n const id = tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n button.setAttribute(\"aria-describedby\", id);\n const DELAY_TO_SHOW_TOOLTIP = 100;\n const signal = this.#editor._uiManager._signal;\n signal.addEventListener(\"abort\", () => {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }, {\n once: true\n });\n button.addEventListener(\"mouseenter\", () => {\n this.#altTextTooltipTimeout = setTimeout(() => {\n this.#altTextTooltipTimeout = null;\n this.#altTextTooltip.classList.add(\"show\");\n this.#editor._reportTelemetry({\n action: \"alt_text_tooltip\"\n });\n }, DELAY_TO_SHOW_TOOLTIP);\n }, {\n signal\n });\n button.addEventListener(\"mouseleave\", () => {\n if (this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextTooltip?.classList.remove(\"show\");\n }, {\n signal\n });\n }\n tooltip.innerText = this.#altTextDecorative ? await AltText._l10nPromise.get(\"pdfjs-editor-alt-text-decorative-tooltip\") : this.#altText;\n if (!tooltip.parentNode) {\n button.append(tooltip);\n }\n const element = this.#editor.getImageForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/editor.js\n\n\n\n\n\nclass AnnotationEditor {\n #accessibilityData = null;\n #allResizerDivs = null;\n #altText = null;\n #disabled = false;\n #keepAspectRatio = false;\n #resizersDiv = null;\n #savedDimensions = null;\n #focusAC = null;\n #focusedResizerName = \"\";\n #hasBeenClicked = false;\n #initialPosition = null;\n #isEditing = false;\n #isInEditMode = false;\n #isResizerEnabledForKeyboard = false;\n #moveInDOMTimeout = null;\n #prevDragX = 0;\n #prevDragY = 0;\n #telemetryTimeouts = null;\n _editToolbar = null;\n _initialOptions = Object.create(null);\n _isVisible = true;\n _uiManager = null;\n _focusEventsAllowed = true;\n static _l10nPromise = null;\n static _l10nResizer = null;\n #isDraggable = false;\n #zIndex = AnnotationEditor._zIndex++;\n static _borderLineWidth = -1;\n static _colorManager = new ColorManager();\n static _zIndex = 1;\n static _telemetryTimeout = 1000;\n static get _resizerKeyboardManager() {\n const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_resizerKeyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, {\n args: [-small, 0]\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], resize, {\n args: [-big, 0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], resize, {\n args: [small, 0]\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], resize, {\n args: [big, 0]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], resize, {\n args: [0, -small]\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, {\n args: [0, -big]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], resize, {\n args: [0, small]\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, {\n args: [0, big]\n }], [[\"Escape\", \"mac+Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n }\n constructor(parameters) {\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n this._structTreeParentId = null;\n const {\n rotation,\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = this.parent.viewport;\n this.rotation = rotation;\n this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n static get _defaultLineColor() {\n return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor.parent.getNextId(),\n parent: editor.parent,\n uiManager: editor._uiManager\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n static initialize(l10n, _uiManager, options) {\n AnnotationEditor._l10nResizer ||= Object.freeze({\n topLeft: \"pdfjs-editor-resizer-top-left\",\n topMiddle: \"pdfjs-editor-resizer-top-middle\",\n topRight: \"pdfjs-editor-resizer-top-right\",\n middleRight: \"pdfjs-editor-resizer-middle-right\",\n bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n middleLeft: \"pdfjs-editor-resizer-middle-left\"\n });\n AnnotationEditor._l10nPromise ||= new Map([...[\"pdfjs-editor-alt-text-button-label\", \"pdfjs-editor-alt-text-edit-button-label\", \"pdfjs-editor-alt-text-decorative-tooltip\", \"pdfjs-editor-new-alt-text-added-button-label\", \"pdfjs-editor-new-alt-text-missing-button-label\", \"pdfjs-editor-new-alt-text-to-review-button-label\"].map(str => [str, l10n.get(str)]), ...[\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\"].map(str => [str, l10n.get.bind(l10n, str)])]);\n if (options?.strings) {\n for (const str of options.strings) {\n AnnotationEditor._l10nPromise.set(str, l10n.get(str));\n }\n }\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n static updateDefaultParams(_type, _value) {}\n static get defaultPropertiesToUpdate() {\n return [];\n }\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n static paste(item, parent) {\n unreachable(\"Not implemented\");\n }\n get propertiesToUpdate() {\n return [];\n }\n get _isDraggable() {\n return this.#isDraggable;\n }\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n get isEnterHandled() {\n return true;\n }\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= this.height * pageHeight / (pageWidth * 2);\n this.y += this.width * pageWidth / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += this.height * pageHeight / (pageWidth * 2);\n this.y -= this.width * pageWidth / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n } else {\n this.#stopResizing();\n }\n this.parent = parent;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.#hasBeenClicked) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenClicked = false;\n }\n }\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.isAttachedToDOM) {\n return;\n }\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n event.preventDefault();\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n commit() {\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.fixAndSetPosition();\n }\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this.fixAndSetPosition();\n }\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n translateInPage(x, y) {\n this.#initialPosition ||= [this.x, this.y];\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n drag(tx, ty) {\n this.#initialPosition ||= [this.x, this.y];\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n const {\n x,\n y\n } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x, y)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n let {\n x,\n y\n } = this;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n this.div.style.left = `${(100 * x).toFixed(2)}%`;\n this.div.style.top = `${(100 * y).toFixed(2)}%`;\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n get _hasBeenMoved() {\n return !!this.#initialPosition && (this.#initialPosition[0] !== this.x || this.#initialPosition[1] !== this.y);\n }\n getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n _borderLineWidth\n } = AnnotationEditor;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n get _mustFixPosition() {\n return true;\n }\n fixAndSetPosition(rotation = this.rotation) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n let {\n x,\n y,\n width,\n height\n } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n if (this._mustFixPosition) {\n switch (rotation) {\n case 0:\n x = Math.max(0, Math.min(pageWidth - width, x));\n y = Math.max(0, Math.min(pageHeight - height, y));\n break;\n case 90:\n x = Math.max(0, Math.min(pageWidth - height, x));\n y = Math.min(pageHeight, Math.max(width, y));\n break;\n case 180:\n x = Math.min(pageWidth, Math.max(width, x));\n y = Math.min(pageHeight, Math.max(height, y));\n break;\n case 270:\n x = Math.min(pageWidth, Math.max(height, x));\n y = Math.max(0, Math.min(pageHeight - width, y));\n break;\n }\n }\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n const {\n style\n } = this.div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this.moveInDOM();\n }\n static #rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n const scaledWidth = pageWidth * parentScale;\n const scaledHeight = pageHeight * parentScale;\n return util_FeatureTest.isCSSRoundSupported ? [Math.round(scaledWidth), Math.round(scaledHeight)] : [scaledWidth, scaledHeight];\n }\n setDims(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.div.style.width = `${(100 * width / parentWidth).toFixed(2)}%`;\n if (!this.#keepAspectRatio) {\n this.div.style.height = `${(100 * height / parentHeight).toFixed(2)}%`;\n }\n }\n fixDims() {\n const {\n style\n } = this.div;\n const {\n height,\n width\n } = style;\n const widthPercent = width.endsWith(\"%\");\n const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n if (widthPercent && heightPercent) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (!widthPercent) {\n style.width = `${(100 * parseFloat(width) / parentWidth).toFixed(2)}%`;\n }\n if (!this.#keepAspectRatio && !heightPercent) {\n style.height = `${(100 * parseFloat(height) / parentHeight).toFixed(2)}%`;\n }\n }\n getInitialTranslation() {\n return [0, 0];\n }\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n const signal = this._uiManager._signal;\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.setAttribute(\"data-resizer-name\", name);\n div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n signal\n });\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.tabIndex = -1;\n }\n this.div.prepend(this.#resizersDiv);\n }\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#altText?.toggle(false);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n this.parent.togglePointerEvents(false);\n window.addEventListener(\"pointermove\", this.#resizerPointermove.bind(this, name), {\n passive: true,\n capture: true,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n const pointerUpCallback = () => {\n ac.abort();\n this.parent.togglePointerEvents(true);\n this.#altText?.toggle(true);\n this._isDraggable = savedDraggable;\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n #addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight) {\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.addCommands({\n cmd: () => {\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n },\n undo: () => {\n this.width = savedWidth;\n this.height = savedHeight;\n this.x = savedX;\n this.y = savedY;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * savedWidth, parentHeight * savedHeight);\n this.fixAndSetPosition();\n },\n mustExec: true\n });\n }\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n const round = x => Math.round(x * 10000) / 10000;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = round(savedX + transfOppositePoint[0]);\n const oppositeY = round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n let [deltaX, deltaY] = this.screenToPageTranslation(event.movementX, event.movementY);\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n } else if (isHorizontal) {\n ratioX = Math.max(minWidth, Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))) / savedWidth;\n } else {\n ratioY = Math.max(minHeight, Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))) / savedHeight;\n }\n const newWidth = round(savedWidth * ratioX);\n const newHeight = round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n }\n altTextFinish() {\n this.#altText?.finish();\n }\n async addEditToolbar() {\n if (this._editToolbar || this.#isInEditMode) {\n return this._editToolbar;\n }\n this._editToolbar = new EditorToolbar(this);\n this.div.append(this._editToolbar.render());\n if (this.#altText) {\n await this._editToolbar.addAltText(this.#altText);\n }\n return this._editToolbar;\n }\n removeEditToolbar() {\n if (!this._editToolbar) {\n return;\n }\n this._editToolbar.remove();\n this._editToolbar = null;\n this.#altText?.destroy();\n }\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n async addAltTextButton() {\n if (this.#altText) {\n return;\n }\n AltText.initialize(AnnotationEditor._l10nPromise);\n this.#altText = new AltText(this);\n if (this.#accessibilityData) {\n this.#altText.data = this.#accessibilityData;\n this.#accessibilityData = null;\n }\n await this.addEditToolbar();\n }\n get altTextData() {\n return this.#altText?.data;\n }\n set altTextData(data) {\n if (!this.#altText) {\n return;\n }\n this.#altText.data = data;\n }\n get guessedAltText() {\n return this.#altText?.guessedText;\n }\n async setGuessedAltText(text) {\n await this.#altText?.setGuessedText(text);\n }\n serializeAltText(isForCopying) {\n return this.#altText?.serialize(isForCopying);\n }\n hasAltText() {\n return !!this.#altText && !this.#altText.isEmpty();\n }\n hasAltTextData() {\n return this.#altText?.hasData() ?? false;\n }\n render() {\n this.div = document.createElement(\"div\");\n this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n this.div.className = this.name;\n this.div.setAttribute(\"id\", this.id);\n this.div.tabIndex = this.#disabled ? -1 : 0;\n if (!this._isVisible) {\n this.div.classList.add(\"hidden\");\n }\n this.setInForeground();\n this.#addFocusListeners();\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n this.div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n this.div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n bindEvents(this, this.div, [\"pointerdown\"]);\n return this.div;\n }\n pointerdown(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n this.#hasBeenClicked = true;\n if (this._isDraggable) {\n this.#setUpDragSession(event);\n return;\n }\n this.#selectOnPointerEvent(event);\n }\n #selectOnPointerEvent(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n #setUpDragSession(event) {\n const isSelected = this._uiManager.isSelected(this);\n this._uiManager.setUpDragSession();\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n if (isSelected) {\n this.div.classList.add(\"moving\");\n this.#prevDragX = event.clientX;\n this.#prevDragY = event.clientY;\n const pointerMoveCallback = e => {\n const {\n clientX: x,\n clientY: y\n } = e;\n const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n this.#prevDragX = x;\n this.#prevDragY = y;\n this._uiManager.dragSelectedEditors(tx, ty);\n };\n window.addEventListener(\"pointermove\", pointerMoveCallback, {\n passive: true,\n capture: true,\n signal\n });\n }\n const pointerUpCallback = () => {\n ac.abort();\n if (isSelected) {\n this.div.classList.remove(\"moving\");\n }\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n this.#selectOnPointerEvent(event);\n }\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n moveInDOM() {\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n }\n this.#moveInDOMTimeout = setTimeout(() => {\n this.#moveInDOMTimeout = null;\n this.parent?.moveEditorInDOM(this);\n }, 0);\n }\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n }\n getRect(tx, ty, rotation = this.rotation) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n switch (rotation) {\n case 0:\n return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n case 90:\n return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n case 180:\n return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n case 270:\n return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n onceAdded() {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n this.#isInEditMode = true;\n }\n disableEditMode() {\n this.#isInEditMode = false;\n }\n isInEditMode() {\n return this.#isInEditMode;\n }\n shouldGetKeyboardEvents() {\n return this.#isResizerEnabledForKeyboard;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n #addFocusListeners() {\n if (this.#focusAC || !this.div) {\n return;\n }\n this.#focusAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#focusAC);\n this.div.addEventListener(\"focusin\", this.focusin.bind(this), {\n signal\n });\n this.div.addEventListener(\"focusout\", this.focusout.bind(this), {\n signal\n });\n }\n rebuild() {\n this.#addFocusListeners();\n }\n rotate(_angle) {}\n serialize(isForCopying = false, context = null) {\n unreachable(\"An editor must be serializable\");\n }\n static deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager\n });\n editor.rotation = data.rotation;\n editor.#accessibilityData = data.accessibilityData;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n get hasBeenModified() {\n return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n }\n remove() {\n this.#focusAC?.abort();\n this.#focusAC = null;\n if (!this.isEmpty()) {\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n this.#moveInDOMTimeout = null;\n }\n this.#stopResizing();\n this.removeEditToolbar();\n if (this.#telemetryTimeouts) {\n for (const timeout of this.#telemetryTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.#telemetryTimeouts = null;\n }\n this.parent = null;\n }\n get isResizable() {\n return false;\n }\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n bindEvents(this, this.div, [\"keydown\"]);\n }\n }\n get toolbarPosition() {\n return null;\n }\n keydown(event) {\n if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\n return;\n }\n this._uiManager.setSelected(this);\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const children = this.#resizersDiv.children;\n if (!this.#allResizerDivs) {\n this.#allResizerDivs = Array.from(children);\n const boundResizerKeydown = this.#resizerKeydown.bind(this);\n const boundResizerBlur = this.#resizerBlur.bind(this);\n const signal = this._uiManager._signal;\n for (const div of this.#allResizerDivs) {\n const name = div.getAttribute(\"data-resizer-name\");\n div.setAttribute(\"role\", \"spinbutton\");\n div.addEventListener(\"keydown\", boundResizerKeydown, {\n signal\n });\n div.addEventListener(\"blur\", boundResizerBlur, {\n signal\n });\n div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n signal\n });\n div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n const first = this.#allResizerDivs[0];\n let firstPosition = 0;\n for (const div of children) {\n if (div === first) {\n break;\n }\n firstPosition++;\n }\n const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n if (nextFirstPosition !== firstPosition) {\n if (nextFirstPosition < firstPosition) {\n for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n this.#resizersDiv.append(this.#resizersDiv.firstChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\n }\n }\n let i = 0;\n for (const child of children) {\n const div = this.#allResizerDivs[i++];\n const name = div.getAttribute(\"data-resizer-name\");\n child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n this.#setResizerTabIndex(0);\n this.#isResizerEnabledForKeyboard = true;\n this.#resizersDiv.firstChild.focus({\n focusVisible: true\n });\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n #resizerKeydown(event) {\n AnnotationEditor._resizerKeyboardManager.exec(this, event);\n }\n #resizerBlur(event) {\n if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n this.#stopResizing();\n }\n }\n #resizerFocus(name) {\n this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n }\n #setResizerTabIndex(value) {\n if (!this.#allResizerDivs) {\n return;\n }\n for (const div of this.#allResizerDivs) {\n div.tabIndex = value;\n }\n }\n _resizeWithKeyboard(x, y) {\n if (!this.#isResizerEnabledForKeyboard) {\n return;\n }\n this.#resizerPointermove(this.#focusedResizerName, {\n movementX: x,\n movementY: y\n });\n }\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n if (this.#savedDimensions) {\n const {\n savedX,\n savedY,\n savedWidth,\n savedHeight\n } = this.#savedDimensions;\n this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n this.#savedDimensions = null;\n }\n }\n _stopResizingWithKeyboard() {\n this.#stopResizing();\n this.div.focus();\n }\n select() {\n this.makeResizable();\n this.div?.classList.add(\"selectedEditor\");\n if (!this._editToolbar) {\n this.addEditToolbar().then(() => {\n if (this.div?.classList.contains(\"selectedEditor\")) {\n this._editToolbar?.show();\n }\n });\n return;\n }\n this._editToolbar?.show();\n this.#altText?.toggleAltTextBadge(false);\n }\n unselect() {\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n this._uiManager.currentLayer.div.focus({\n preventScroll: true\n });\n }\n this._editToolbar?.hide();\n this.#altText?.toggleAltTextBadge(true);\n }\n updateParams(type, value) {}\n disableEditing() {}\n enableEditing() {}\n enterInEditMode() {}\n getImageForAltText() {\n return null;\n }\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return this.#isEditing;\n }\n set isEditing(value) {\n this.#isEditing = value;\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n setAspectRatio(width, height) {\n this.#keepAspectRatio = true;\n const aspectRatio = width / height;\n const {\n style\n } = this.div;\n style.aspectRatio = aspectRatio;\n style.height = \"auto\";\n }\n static get MIN_SIZE() {\n return 16;\n }\n static canCreateNewEmptyEditor() {\n return true;\n }\n get telemetryInitialData() {\n return {\n action: \"added\"\n };\n }\n get telemetryFinalData() {\n return null;\n }\n _reportTelemetry(data, mustWait = false) {\n if (mustWait) {\n this.#telemetryTimeouts ||= new Map();\n const {\n action\n } = data;\n let timeout = this.#telemetryTimeouts.get(action);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n this._reportTelemetry(data);\n this.#telemetryTimeouts.delete(action);\n if (this.#telemetryTimeouts.size === 0) {\n this.#telemetryTimeouts = null;\n }\n }, AnnotationEditor._telemetryTimeout);\n this.#telemetryTimeouts.set(action, timeout);\n return;\n }\n data.type ||= this.editorType;\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data\n }\n });\n }\n show(visible = this._isVisible) {\n this.div.classList.toggle(\"hidden\", !visible);\n this._isVisible = visible;\n }\n enable() {\n if (this.div) {\n this.div.tabIndex = 0;\n }\n this.#disabled = false;\n }\n disable() {\n if (this.div) {\n this.div.tabIndex = -1;\n }\n this.#disabled = true;\n }\n renderAnnotationElement(annotation) {\n let content = annotation.container.querySelector(\".annotationContent\");\n if (!content) {\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n annotation.container.prepend(content);\n } else if (content.nodeName === \"CANVAS\") {\n const canvas = content;\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n canvas.before(content);\n }\n return content;\n }\n resetAnnotationElement(annotation) {\n const {\n firstChild\n } = annotation.container;\n if (firstChild.nodeName === \"DIV\" && firstChild.classList.contains(\"annotationContent\")) {\n firstChild.remove();\n }\n }\n}\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n serialize() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex\n };\n }\n}\n\n;// CONCATENATED MODULE: ./src/shared/murmurhash3.js\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/annotation_storage.js\n\n\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined\n});\nclass AnnotationStorage {\n #modified = false;\n #modifiedIds = null;\n #storage = new Map();\n constructor() {\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n return Object.assign(defaultValue, value);\n }\n getRawValue(key) {\n return this.#storage.get(key);\n }\n remove(key) {\n this.#storage.delete(key);\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of this.#storage.values()) {\n if (value instanceof AnnotationEditor) {\n return;\n }\n }\n this.onAnnotationEditor(null);\n }\n }\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n if (value instanceof AnnotationEditor && typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n has(key) {\n return this.#storage.has(key);\n }\n getAll() {\n return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\n }\n setAll(obj) {\n for (const [key, val] of Object.entries(obj)) {\n this.setValue(key, val);\n }\n }\n get size() {\n return this.#storage.size;\n }\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(),\n hash = new MurmurHash3_64(),\n transfer = [];\n const context = Object.create(null);\n let hasBitmap = false;\n for (const [key, val] of this.#storage) {\n const serialized = val instanceof AnnotationEditor ? val.serialize(false, context) : val;\n if (serialized) {\n map.set(key, serialized);\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n if (hasBitmap) {\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n return map.size > 0 ? {\n map,\n hash: hash.hexdigest(),\n transfer\n } : SerializableEmpty;\n }\n get editorStats() {\n let stats = null;\n const typeToEditor = new Map();\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor)) {\n continue;\n }\n const editorStats = value.telemetryFinalData;\n if (!editorStats) {\n continue;\n }\n const {\n type\n } = editorStats;\n if (!typeToEditor.has(type)) {\n typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n }\n stats ||= Object.create(null);\n const map = stats[type] ||= new Map();\n for (const [key, val] of Object.entries(editorStats)) {\n if (key === \"type\") {\n continue;\n }\n let counters = map.get(key);\n if (!counters) {\n counters = new Map();\n map.set(key, counters);\n }\n const count = counters.get(val) ?? 0;\n counters.set(val, count + 1);\n }\n }\n for (const [type, editor] of typeToEditor) {\n stats[type] = editor.computeTelemetryFinalData(stats[type]);\n }\n return stats;\n }\n resetModifiedIds() {\n this.#modifiedIds = null;\n }\n get modifiedIds() {\n if (this.#modifiedIds) {\n return this.#modifiedIds;\n }\n const ids = [];\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor) || !value.annotationElementId || !value.serialize()) {\n continue;\n }\n ids.push(value.annotationElementId);\n }\n return this.#modifiedIds = {\n ids: new Set(ids),\n hash: ids.join(\",\")\n };\n }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n constructor(parent) {\n super();\n const {\n map,\n hash,\n transfer\n } = parent.serializable;\n const clone = structuredClone(map, transfer ? {\n transfer\n } : null);\n this.#serializable = {\n map: clone,\n hash,\n transfer\n };\n }\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return this.#serializable;\n }\n get modifiedIds() {\n return shadow(this, \"modifiedIds\", {\n ids: new Set(),\n hash: \"\"\n });\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/font_loader.js\n\nclass FontLoader {\n #systemFonts = new Set();\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n this._document = ownerDocument;\n this.nativeFontFaces = new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont({\n systemFontInfo: info,\n _inspectFont\n }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(!this.disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName,\n src,\n style\n } = info;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n _inspectFont?.(info);\n } catch {\n warn(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n unreachable(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n async bind(font) {\n if (font.attached || font.missingFile && !font.systemFontInfo) {\n return;\n }\n font.attached = true;\n if (font.systemFontInfo) {\n await this.loadSystemFont(font);\n return;\n }\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n return;\n }\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n }\n }\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n get isSyncFontLoadingSupported() {\n let supported = false;\n if (isNodeJS) {\n supported = true;\n } else if (typeof navigator !== \"undefined\" && typeof navigator?.userAgent === \"string\" && /Mozilla\\/5.0.*?rv:\\d+.*? Gecko/.test(navigator.userAgent)) {\n supported = true;\n }\n return shadow(this, \"isSyncFontLoadingSupported\", supported);\n }\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n const {\n loadingRequests\n } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback\n };\n loadingRequests.push(request);\n return request;\n }\n get _loadTestFont() {\n const testFont = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n return shadow(this, \"_loadTestFont\", testFont);\n }\n _prepareFontLoadEvent(font, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n function isFontReady(name, callback) {\n if (++called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n for (const name of [font.loadedName, loadTestFontId]) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n this._document.body.append(div);\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n}\nclass FontFaceObject {\n constructor(translatedData, {\n disableFontFace = false,\n inspectFont = null\n }) {\n this.compiledGlyphs = Object.create(null);\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this.disableFontFace = disableFontFace === true;\n this._inspectFont = inspectFont;\n }\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n }\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const data = bytesToString(this.data);\n const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n this._inspectFont?.(this, url);\n return rule;\n }\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n let cmds;\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n }\n if (!Array.isArray(cmds) || cmds.length === 0) {\n return this.compiledGlyphs[character] = function (c, size) {};\n }\n const commands = [];\n for (let i = 0, ii = cmds.length; i < ii;) {\n switch (cmds[i++]) {\n case FontRenderOps.BEZIER_CURVE_TO:\n {\n const [a, b, c, d, e, f] = cmds.slice(i, i + 6);\n commands.push(ctx => ctx.bezierCurveTo(a, b, c, d, e, f));\n i += 6;\n }\n break;\n case FontRenderOps.MOVE_TO:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.moveTo(a, b));\n i += 2;\n }\n break;\n case FontRenderOps.LINE_TO:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.lineTo(a, b));\n i += 2;\n }\n break;\n case FontRenderOps.QUADRATIC_CURVE_TO:\n {\n const [a, b, c, d] = cmds.slice(i, i + 4);\n commands.push(ctx => ctx.quadraticCurveTo(a, b, c, d));\n i += 4;\n }\n break;\n case FontRenderOps.RESTORE:\n commands.push(ctx => ctx.restore());\n break;\n case FontRenderOps.SAVE:\n commands.push(ctx => ctx.save());\n break;\n case FontRenderOps.SCALE:\n assert(commands.length === 2, \"Scale command is only valid at the third position.\");\n break;\n case FontRenderOps.TRANSFORM:\n {\n const [a, b, c, d, e, f] = cmds.slice(i, i + 6);\n commands.push(ctx => ctx.transform(a, b, c, d, e, f));\n i += 6;\n }\n break;\n case FontRenderOps.TRANSLATE:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.translate(a, b));\n i += 2;\n }\n break;\n }\n }\n return this.compiledGlyphs[character] = function glyphDrawer(ctx, size) {\n commands[0](ctx);\n commands[1](ctx);\n ctx.scale(size, -size);\n for (let i = 2, ii = commands.length; i < ii; i++) {\n commands[i](ctx);\n }\n };\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/node_utils.js\n\n\nif (isNodeJS) {\n var packageCapability = Promise.withResolvers();\n var packageMap = null;\n const loadPackages = async () => {\n const fs = await import( /*webpackIgnore: true*/\"fs\"),\n http = await import( /*webpackIgnore: true*/\"http\"),\n https = await import( /*webpackIgnore: true*/\"https\"),\n url = await import( /*webpackIgnore: true*/\"url\");\n let canvas, path2d;\n return new Map(Object.entries({\n fs,\n http,\n https,\n url,\n canvas,\n path2d\n }));\n };\n loadPackages().then(map => {\n packageMap = map;\n packageCapability.resolve();\n }, reason => {\n warn(`loadPackages: ${reason}`);\n packageMap = new Map();\n packageCapability.resolve();\n });\n}\nclass NodePackages {\n static get promise() {\n return packageCapability.promise;\n }\n static get(name) {\n return packageMap?.get(name);\n }\n}\nconst node_utils_fetchData = function (url) {\n const fs = NodePackages.get(\"fs\");\n return fs.promises.readFile(url).then(data => new Uint8Array(data));\n};\nclass NodeFilterFactory extends BaseFilterFactory {}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const canvas = NodePackages.get(\"canvas\");\n return canvas.createCanvas(width, height);\n }\n}\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return node_utils_fetchData(url).then(data => ({\n cMapData: data,\n compressionType\n }));\n }\n}\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n _fetchData(url) {\n return node_utils_fetchData(url);\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/pattern_helper.js\n\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\nclass BaseShadingPattern {\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);\n }\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, getCurrentTransform(ctx)) || [0, 0, 0, 0];\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height, true);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n}\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case \"lattice\":\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[7];\n this._background = IR[8];\n this.matrix = null;\n }\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n const EXPECTED_SCALE = 1.1;\n const MAX_PATTERN_SIZE = 3000;\n const BORDER_SIZE = 2;\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight, false);\n const tmpCtx = tmpCanvas.context;\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n let scale;\n if (pathType === PathType.SHADING) {\n scale = Util.singularValueDecompose2dScale(getCurrentTransform(ctx));\n } else {\n scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n if (this.matrix) {\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\nclass TilingPattern {\n static MAX_PATTERN_SIZE = 3000;\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n createPatternCanvas(owner) {\n const operatorList = this.operatorList;\n const bbox = this.bbox;\n const xstep = this.xstep;\n const ystep = this.ystep;\n const paintType = this.paintType;\n const tilingType = this.tilingType;\n const color = this.color;\n const canvasGraphicsFactory = this.canvasGraphicsFactory;\n info(\"TilingType: \" + tilingType);\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n const curMatrixScale = Util.singularValueDecompose2dScale(this.baseTransform);\n const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];\n const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);\n const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size, true);\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n let adjustedX0 = x0;\n let adjustedY0 = y0;\n let adjustedX1 = x1;\n let adjustedY1 = y1;\n if (x0 < 0) {\n adjustedX0 = 0;\n adjustedX1 += Math.abs(x0);\n }\n if (y0 < 0) {\n adjustedY0 = 0;\n adjustedY1 += Math.abs(y0);\n }\n tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: adjustedX0,\n offsetY: adjustedY0\n };\n }\n getSizeAndScale(step, realOutputSize, scale) {\n step = Math.abs(step);\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return {\n scale,\n size\n };\n }\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.current.updateRectMinMax(getCurrentTransform(graphics.ctx), [x0, y0, x1, y1]);\n graphics.clip();\n graphics.endPath();\n }\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n getPattern(ctx, owner, inverse, pathType) {\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = Util.transform(matrix, this.matrix);\n }\n }\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\n\n;// CONCATENATED MODULE: ./src/shared/image_utils.js\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len32 = src.length >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n if (FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff000000;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n }\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n dest[destPos + 3] = s3 << 8 | 0xff;\n }\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/canvas.js\n\n\n\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst MAX_SIZE_TO_COMPILE = 1000;\nconst FULL_CHUNK_HEIGHT = 16;\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n ctx.save = function ctxSave() {\n destCtx.save();\n this.__originalSave();\n };\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n this.__originalRestore();\n };\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n getCanvas(id, width, height) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n return canvasEntry;\n }\n delete(id) {\n delete this.cache[id];\n }\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n if (b === 0 && c === 0) {\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rWidth, rHeight];\n }\n if (a === 0 && d === 0) {\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rHeight, rWidth];\n }\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\nfunction compileType3Glyph(imgData) {\n const {\n width,\n height\n } = imgData;\n if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n return null;\n }\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n const width1 = width + 1;\n let points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n const lineSize = width + 7 & ~7;\n let data = new Uint8Array(lineSize * height),\n pos = 0;\n for (const elem of imgData.data) {\n let mask = 128;\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n let count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const path = new Path2D();\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n path.moveTo(p % width1, i);\n const p0 = p;\n let type = points[p];\n do {\n const step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n type = pp;\n points[p] = 0;\n } else {\n type = pp & 0x33 * type >> 4;\n points[p] &= type >> 2 | type << 2;\n }\n path.lineTo(p % width1, p / width1 | 0);\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n --i;\n }\n data = null;\n points = null;\n const drawOutline = function (c) {\n c.save();\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.fill(path);\n c.beginPath();\n c.restore();\n };\n return drawOutline;\n}\nclass CanvasExtraState {\n constructor(width, height) {\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = \"none\";\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n updatePathMinMax(transform, x, y) {\n [x, y] = Util.applyTransform([x, y], transform);\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n updateRectMinMax(transform, rect) {\n const p1 = Util.applyTransform(rect, transform);\n const p2 = Util.applyTransform(rect.slice(2), transform);\n const p3 = Util.applyTransform([rect[0], rect[3]], transform);\n const p4 = Util.applyTransform([rect[2], rect[1]], transform);\n this.minX = Math.min(this.minX, p1[0], p2[0], p3[0], p4[0]);\n this.minY = Math.min(this.minY, p1[1], p2[1], p3[1], p4[1]);\n this.maxX = Math.max(this.maxX, p1[0], p2[0], p3[0], p4[0]);\n this.maxY = Math.max(this.maxY, p1[1], p2[1], p3[1], p4[1]);\n }\n updateScalingPathMinMax(transform, minMax) {\n Util.scaleMinMax(transform, minMax);\n this.minX = Math.min(this.minX, minMax[0]);\n this.minY = Math.min(this.minY, minMax[1]);\n this.maxX = Math.max(this.maxX, minMax[2]);\n this.maxY = Math.max(this.maxY, minMax[3]);\n }\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax);\n if (minMax) {\n return;\n }\n this.updateRectMinMax(transform, box);\n }\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = [this.minX, this.minY, this.maxX, this.maxY];\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n const scale = Util.singularValueDecompose2dScale(transform);\n const xStrokePad = scale[0] * this.lineWidth / 2;\n const yStrokePad = scale[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minX === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 0;\n }\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n}\nfunction putBinaryImageData(ctx, imgData) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n if (imgData.kind === util_ImageKind.GRAYSCALE_1BPP) {\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = width + 7 >> 3;\n const white = 0xffffffff;\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === util_ImageKind.RGBA_32BPP) {\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === util_ImageKind.RGB_24BPP) {\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n destPos = 0;\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n ({\n srcPos\n } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const property of properties) {\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n if (!isNodeJS) {\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n if (interpolate) {\n return true;\n }\n const scale = Util.singularValueDecompose2dScale(transform);\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS);\n return scale[0] <= actualScale && scale[1] <= actualScale;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n optionalContentConfig,\n markedContentStack = null\n }, annotationCanvasMap, pageColors) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this.groupStack = [];\n this.processingType3 = null;\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n if (argsArrayLen === i) {\n return i;\n }\n const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n fnId = fnArray[i];\n if (fnId !== OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n i++;\n if (i === argsArrayLen) {\n return i;\n }\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n }\n }\n #restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n this.current.activeSMask = null;\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n endDrawing() {\n this.#restoreInitialState();\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n _scaleImage(img, inverseTransform) {\n const width = img.width;\n const height = img.height;\n let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight\n };\n }\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const {\n width,\n height\n } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = getCurrentTransform(ctx);\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n return {\n canvas: cachedImage,\n offsetX,\n offsetY\n };\n }\n scaled = cachedImage;\n }\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n let maskToCanvas = Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox([0, 0, width, height], maskToCanvas);\n const drawnWidth = Math.round(maxX - minX) || 1;\n const drawnHeight = Math.round(maxY - minY) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n const fillCtx = fillCanvas.context;\n const offsetX = minX;\n const offsetY = minY;\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n if (!scaled) {\n scaled = this._scaleImage(maskCanvas.canvas, getCurrentTransformInverse(fillCtx));\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(fillCtx), img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n fillCtx.globalCompositeOperation = \"source-in\";\n const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n if (cache && !isPatternFill) {\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(width) {\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(intent) {}\n setFlatness(flatness) {}\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.current.fillAlpha = value;\n this.ctx.globalAlpha = value;\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n }\n beginSMaskMode() {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n this.suspendedCtx = this.ctx;\n this.ctx = scratchCanvas.context;\n const ctx = this.ctx;\n ctx.setTransform(...getCurrentTransform(this.suspendedCtx));\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n this.genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n }\n genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n let maskCanvas = maskCtx.canvas;\n let maskX = layerOffsetX - maskOffsetX;\n let maskY = layerOffsetY - maskOffsetY;\n if (backdrop) {\n if (maskX < 0 || maskY < 0 || maskX + width > maskCanvas.width || maskY + height > maskCanvas.height) {\n const canvas = this.cachedCanvases.getCanvas(\"maskExtension\", width, height);\n const ctx = canvas.context;\n ctx.drawImage(maskCanvas, -maskX, -maskY);\n if (backdrop.some(c => c !== 0)) {\n ctx.globalCompositeOperation = \"destination-atop\";\n ctx.fillStyle = Util.makeHexColor(...backdrop);\n ctx.fillRect(0, 0, width, height);\n ctx.globalCompositeOperation = \"source-over\";\n }\n maskCanvas = canvas.canvas;\n maskX = maskY = 0;\n } else if (backdrop.some(c => c !== 0)) {\n maskCtx.save();\n maskCtx.globalAlpha = 1;\n maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n const clip = new Path2D();\n clip.rect(maskX, maskY, width, height);\n maskCtx.clip(clip);\n maskCtx.globalCompositeOperation = \"destination-atop\";\n maskCtx.fillStyle = Util.makeHexColor(...backdrop);\n maskCtx.fillRect(maskX, maskY, width, height);\n maskCtx.restore();\n }\n }\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n if (subtype === \"Alpha\" && transferMap) {\n layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\n } else if (subtype === \"Luminosity\") {\n layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\n }\n const clip = new Path2D();\n clip.rect(layerOffsetX, layerOffsetY, width, height);\n layerCtx.clip(clip);\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.drawImage(maskCanvas, maskX, maskY, width, height, layerOffsetX, layerOffsetY, width, height);\n layerCtx.restore();\n }\n save() {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n this.suspendedCtx.save();\n } else {\n this.ctx.save();\n }\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n restore() {\n if (this.stateStack.length === 0 && this.inSMaskMode) {\n this.endSMaskMode();\n }\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n if (this.inSMaskMode) {\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(ops, args, minMax) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n const currentTransform = getCurrentTransform(ctx);\n const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0;\n const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n ctx.moveTo(x, y);\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n if (!isScalingMatrix) {\n current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n }\n ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier);\n j += 6;\n break;\n case OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier);\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier);\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n if (isScalingMatrix) {\n current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n }\n current.setCurrentPoint(x, y);\n }\n closePath() {\n this.ctx.closePath();\n }\n stroke(consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n this.rescaleAndStroke(false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(true);\n }\n }\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n ctx.globalAlpha = this.current.fillAlpha;\n }\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n fill(consumePath = true) {\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n needRestore = true;\n }\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n this.consumePath();\n }\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n endPath() {\n this.consumePath();\n }\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n beginText() {\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n ctx.save();\n ctx.beginPath();\n for (const path of paths) {\n ctx.setTransform(...path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n setLeading(leading) {\n this.current.leading = -leading;\n }\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n this.current.font = fontObj;\n this.current.fontSize = size;\n if (fontObj.isType3Font) {\n return;\n }\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n paintChar(character, x, y, patternTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n let addToPath;\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (patternTransform) {\n ctx.setTransform(...patternTransform);\n }\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fill();\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths ||= [];\n paths.push({\n transform: getCurrentTransform(ctx),\n x,\n y,\n fontSize,\n addToPath\n });\n }\n }\n get isFontSubpixelAAEnabled() {\n const {\n context: ctx\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n const simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n let patternTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n patternTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n ctx.lineWidth = lineWidth;\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n ctx.fillText(chars.join(\"\"), 0, 0);\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n return undefined;\n }\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n if (font.remeasure && width > 0) {\n const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternTransform);\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);\n }\n }\n }\n const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n return undefined;\n }\n showType3Text(glyphs) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y);\n ctx.scale(textHScale, fontDirection);\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n }\n setCharWidth(xWidth, yWidth) {}\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip();\n this.endPath();\n }\n getColorN_Pattern(IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const color = IR[1];\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n })\n };\n pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n setStrokeRGBColor(r, g, b) {\n this.ctx.strokeStyle = this.current.strokeColor = Util.makeHexColor(r, g, b);\n }\n setStrokeTransparent() {\n this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n }\n setFillRGBColor(r, g, b) {\n this.ctx.fillStyle = this.current.fillColor = Util.makeHexColor(r, g, b);\n this.current.patternFill = false;\n }\n setFillTransparent() {\n this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n this.current.patternFill = false;\n }\n _getPattern(objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.getObject(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING);\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const [x0, y0, x1, y1] = Util.getAxialAlignedBoundingBox([0, 0, width, height], inv);\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n if (matrix) {\n this.transform(...matrix);\n }\n this.baseTransform = getCurrentTransform(this.ctx);\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updateRectMinMax(getCurrentTransform(this.ctx), bbox);\n this.clip();\n this.endPath();\n }\n }\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const currentCtx = this.ctx;\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n const currentTransform = getCurrentTransform(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n let bounds = Util.getAxialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx));\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n const groupCtx = scratchCanvas.context;\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n } else {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.save();\n }\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n this.ctx.imageSmoothingEnabled = false;\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore();\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n if (rect) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx));\n const {\n viewportScale\n } = this;\n const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n const {\n canvas,\n context\n } = this.annotationCanvas;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.ctx.rect(rect[0], rect[1], width, height);\n this.ctx.clip();\n this.endPath();\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(...transform);\n this.transform(...matrix);\n }\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const glyph = this.processingType3;\n if (glyph) {\n if (glyph.compiled === undefined) {\n glyph.compiled = compileType3Glyph(img);\n }\n if (glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n }\n const mask = this._createMaskCanvas(img);\n const maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(img.data, img);\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = getCurrentTransform(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n const [x, y] = Util.applyTransform([0, 0], trans);\n ctx.drawImage(mask.canvas, x, y);\n }\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n for (const image of images) {\n const {\n data,\n width,\n height,\n transform\n } = image;\n const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n const img = this.getObject(data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const {\n bitmap,\n width,\n height\n } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n return tmpCanvas.canvas;\n }\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n this.save();\n if (!isNodeJS) {\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n const scaled = this._scaleImage(imgToPaint, getCurrentTransformInverse(ctx));\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(ctx), imgData.interpolate);\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n this.compose();\n this.restore();\n }\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n markPoint(tag) {}\n markPointProps(tag, properties) {}\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat() {}\n endCompat() {}\n consumePath(clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = getCurrentTransform(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n getScaleForStroking() {\n if (this._cachedScaleForStroking[0] === -1) {\n const {\n lineWidth\n } = this.current;\n const {\n a,\n b,\n c,\n d\n } = this.ctx.getTransform();\n let scaleX, scaleY;\n if (b === 0 && c === 0) {\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(saveRestore) {\n const {\n ctx\n } = this;\n const {\n lineWidth\n } = this.current;\n const [scaleX, scaleY] = this.getScaleForStroking();\n ctx.lineWidth = lineWidth || 1;\n if (scaleX === 1 && scaleY === 1) {\n ctx.stroke();\n return;\n }\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map(x => x / scale));\n ctx.lineDashOffset /= scale;\n }\n ctx.stroke();\n if (saveRestore) {\n ctx.restore();\n }\n }\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/worker_options.js\nclass GlobalWorkerOptions {\n static #port = null;\n static #src = \"\";\n static get workerPort() {\n return this.#port;\n }\n static set workerPort(val) {\n if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n throw new Error(\"Invalid `workerPort` type.\");\n }\n this.#port = val;\n }\n static get workerSrc() {\n return this.#src;\n }\n static set workerSrc(val) {\n if (typeof val !== \"string\") {\n throw new Error(\"Invalid `workerSrc` type.\");\n }\n this.#src = val;\n }\n}\n\n;// CONCATENATED MODULE: ./src/shared/message_handler.js\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\nfunction wrapReason(reason) {\n if (!(reason instanceof Error || typeof reason === \"object\" && reason !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n this._onComObjOnMessage = event => {\n const data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n on(actionName, handler) {\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = Promise.withResolvers();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n new Promise(function (resolve) {\n resolve(streamSink.onPull?.());\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n new Promise(function (resolve) {\n resolve(streamSink.onCancel?.(wrapReason(data.reason)));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/metadata.js\n\nclass Metadata {\n #metadataMap;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n getAll() {\n return objectFromMap(this.#metadataMap);\n }\n has(name) {\n return this.#metadataMap.has(name);\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/optional_content_config.js\n\n\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n #isDisplay = false;\n #isPrint = false;\n #userSet = false;\n #visible = true;\n constructor(renderingIntent, {\n name,\n intent,\n usage\n }) {\n this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n this.name = name;\n this.intent = intent;\n this.usage = usage;\n }\n get visible() {\n if (this.#userSet) {\n return this.#visible;\n }\n if (!this.#visible) {\n return false;\n }\n const {\n print,\n view\n } = this.usage;\n if (this.#isDisplay) {\n return view?.viewState !== \"OFF\";\n } else if (this.#isPrint) {\n return print?.printState !== \"OFF\";\n }\n return true;\n }\n _setVisible(internal, visible, userSet = false) {\n if (internal !== INTERNAL) {\n unreachable(\"Internal method `_setVisible` called.\");\n }\n this.#userSet = userSet;\n this.#visible = visible;\n }\n}\nclass OptionalContentConfig {\n #cachedGetHash = null;\n #groups = new Map();\n #initialHash = null;\n #order = null;\n constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\n this.renderingIntent = renderingIntent;\n this.name = null;\n this.creator = null;\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n for (const group of data.groups) {\n this.#groups.set(group.id, new OptionalContentGroup(renderingIntent, group));\n }\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n this.#initialHash = this.getHash();\n }\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this.#evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n info(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n setVisibility(id, visible = true) {\n const group = this.#groups.get(id);\n if (!group) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n group._setVisible(INTERNAL, !!visible, true);\n this.#cachedGetHash = null;\n }\n setOCGState({\n state,\n preserveRB\n }) {\n let operator;\n for (const elem of state) {\n switch (elem) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n operator = elem;\n continue;\n }\n const group = this.#groups.get(elem);\n if (!group) {\n continue;\n }\n switch (operator) {\n case \"ON\":\n group._setVisible(INTERNAL, true);\n break;\n case \"OFF\":\n group._setVisible(INTERNAL, false);\n break;\n case \"Toggle\":\n group._setVisible(INTERNAL, !group.visible);\n break;\n }\n }\n this.#cachedGetHash = null;\n }\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\n }\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n if (this.#order) {\n return this.#order.slice();\n }\n return [...this.#groups.keys()];\n }\n getGroups() {\n return this.#groups.size > 0 ? objectFromMap(this.#groups) : null;\n }\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new MurmurHash3_64();\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return this.#cachedGetHash = hash.hexdigest();\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/transport_stream.js\n\n\nclass PDFDataTransportStream {\n constructor(pdfDataRangeTransport, {\n disableRange = false,\n disableStream = false\n }) {\n assert(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n const {\n length,\n initialData,\n progressiveDone,\n contentDispositionFilename\n } = pdfDataRangeTransport;\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n if (initialData?.length > 0) {\n const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n pdfDataRangeTransport.transportReady();\n }\n _onReceiveData({\n begin,\n chunk\n }) {\n const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\n if (begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n _onProgress(evt) {\n if (evt.total === undefined) {\n this._rangeReaders[0]?.onProgress?.({\n loaded: evt.loaded\n });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename) ? contentDispositionFilename : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n get headersReady() {\n return this._headersReady;\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n get contentLength() {\n return this._stream._contentLength;\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/content_disposition.js\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {}\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n });\n }\n return \"\";\n}\n\n;// CONCATENATED MODULE: ./src/display/network_utils.js\n\n\n\nfunction validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n returnValues.suggestedLength = length;\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\nfunction extractFilenameFromHeader(getResponseHeader) {\n const contentDisposition = getResponseHeader(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\nfunction createResponseStatusError(status, url) {\n if (status === 404 || status === 0 && url.startsWith(\"file:\")) {\n return new MissingPDFException('Missing PDF \"' + url + '\".');\n }\n return new UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status);\n}\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n;// CONCATENATED MODULE: ./src/display/fetch_stream.js\n\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\nfunction createHeaders(httpHeaders) {\n const headers = new Headers();\n for (const property in httpHeaders) {\n const value = httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n headers.append(property, value);\n }\n return headers;\n}\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n warn(`getArrayBuffer - unexpected data format: ${val}`);\n return new Uint8Array(val).buffer;\n}\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._headers = createHeaders(this._stream.httpHeaders);\n const url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n const getResponseHeader = name => response.headers.get(name);\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(getResponseHeader);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = Promise.withResolvers();\n this._isStreamingSupported = !source.disableStream;\n this._abortController = new AbortController();\n this._headers = createHeaders(this._stream.httpHeaders);\n this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n const url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/network.js\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return stringToBytes(data).buffer;\n}\nclass NetworkManager {\n constructor(url, args = {}) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = this.isHttp && args.httpHeaders || Object.create(null);\n this.withCredentials = args.withCredentials || false;\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end\n };\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n }\n requestFull(listeners) {\n return this.request(listeners);\n }\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const property in this.httpHeaders) {\n const value = this.httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n xhr.setRequestHeader(property, value);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n pendingRequest.onProgress?.(evt);\n }\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n delete this.pendingRequests[xhrId];\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const chunk = network_getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else {\n pendingRequest.onError?.(xhr.status);\n }\n }\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n const getResponseHeader = name => fullRequestXhr.getResponseHeader(name);\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(getResponseHeader);\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n this._headersReceivedCapability.resolve();\n }\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n this._headersReceivedCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get contentLength() {\n return this._contentLength;\n }\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersReceivedCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n const args = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = manager.url;\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n this.onProgress = null;\n this.onClosed = null;\n }\n _close() {\n this.onClosed?.(this);\n }\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._close();\n }\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({\n loaded: evt.loaded\n });\n }\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/node_stream.js\n\n\n\nconst urlRegex = /^[a-z][a-z0-9\\-+.]+:/i;\nfunction parseUrlOrPath(sourceUrl) {\n if (urlRegex.test(sourceUrl)) {\n return new URL(sourceUrl);\n }\n const url = NodePackages.get(\"url\");\n return new URL(url.pathToFileURL(sourceUrl));\n}\nfunction createRequest(url, headers, callback) {\n if (url.protocol === \"http:\") {\n const http = NodePackages.get(\"http\");\n return http.request(url, {\n headers\n }, callback);\n }\n const https = NodePackages.get(\"https\");\n return https.request(url, {\n headers\n }, callback);\n}\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrlOrPath(source.url);\n this.isHttp = this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n this._headersCapability = Promise.withResolvers();\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n this._headersCapability.resolve();\n this._setReadableStream(response);\n const getResponseHeader = name => this._readableStream.headers[name.toLowerCase()];\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(getResponseHeader);\n };\n this._request = createRequest(this._url, stream.httpHeaders, handleResponse);\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n this._headersCapability.reject(reason);\n });\n this._request.end();\n }\n}\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n this._httpHeaders = {};\n for (const property in stream.httpHeaders) {\n const value = stream.httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n this._httpHeaders[property] = value;\n }\n this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n this._setReadableStream(response);\n };\n this._request = createRequest(this._url, this._httpHeaders, handleResponse);\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n this._request.end();\n }\n}\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n const fs = NodePackages.get(\"fs\");\n fs.promises.lstat(this._url).then(stat => {\n this._contentLength = stat.size;\n this._setReadableStream(fs.createReadStream(this._url));\n this._headersCapability.resolve();\n }, error => {\n if (error.code === \"ENOENT\") {\n error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n });\n }\n}\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n const fs = NodePackages.get(\"fs\");\n this._setReadableStream(fs.createReadStream(this._url, {\n start,\n end: end - 1\n }));\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/text_layer.js\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nclass TextLayer {\n #capability = Promise.withResolvers();\n #container = null;\n #disableProcessItems = false;\n #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n #lang = null;\n #layoutTextParams = null;\n #pageHeight = 0;\n #pageWidth = 0;\n #reader = null;\n #rootContainer = null;\n #rotation = 0;\n #scale = 0;\n #styleCache = Object.create(null);\n #textContentItemsStr = [];\n #textContentSource = null;\n #textDivs = [];\n #textDivProperties = new WeakMap();\n #transform = null;\n static #ascentCache = new Map();\n static #canvasContexts = new Map();\n static #minFontSize = null;\n static #pendingTextLayers = new Set();\n constructor({\n textContentSource,\n container,\n viewport\n }) {\n if (textContentSource instanceof ReadableStream) {\n this.#textContentSource = textContentSource;\n } else if (typeof textContentSource === \"object\") {\n this.#textContentSource = new ReadableStream({\n start(controller) {\n controller.enqueue(textContentSource);\n controller.close();\n }\n });\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n this.#container = this.#rootContainer = container;\n this.#scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n this.#rotation = viewport.rotation;\n this.#layoutTextParams = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n properties: null,\n ctx: null\n };\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this.#pageWidth = pageWidth;\n this.#pageHeight = pageHeight;\n TextLayer.#ensureMinFontSizeComputed();\n setLayerDimensions(container, viewport);\n this.#capability.promise.catch(() => {}).then(() => {\n TextLayer.#pendingTextLayers.delete(this);\n this.#layoutTextParams = null;\n this.#styleCache = null;\n });\n }\n render() {\n const pump = () => {\n this.#reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n this.#capability.resolve();\n return;\n }\n this.#lang ??= value.lang;\n Object.assign(this.#styleCache, value.styles);\n this.#processItems(value.items);\n pump();\n }, this.#capability.reject);\n };\n this.#reader = this.#textContentSource.getReader();\n TextLayer.#pendingTextLayers.add(this);\n pump();\n return this.#capability.promise;\n }\n update({\n viewport,\n onBefore = null\n }) {\n const scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n const rotation = viewport.rotation;\n if (rotation !== this.#rotation) {\n onBefore?.();\n this.#rotation = rotation;\n setLayerDimensions(this.#rootContainer, {\n rotation\n });\n }\n if (scale !== this.#scale) {\n onBefore?.();\n this.#scale = scale;\n const params = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n properties: null,\n ctx: TextLayer.#getCtx(this.#lang)\n };\n for (const div of this.#textDivs) {\n params.properties = this.#textDivProperties.get(div);\n params.div = div;\n this.#layout(params);\n }\n }\n }\n cancel() {\n const abortEx = new AbortException(\"TextLayer task cancelled.\");\n this.#reader?.cancel(abortEx).catch(() => {});\n this.#reader = null;\n this.#capability.reject(abortEx);\n }\n get textDivs() {\n return this.#textDivs;\n }\n get textContentItemsStr() {\n return this.#textContentItemsStr;\n }\n #processItems(items) {\n if (this.#disableProcessItems) {\n return;\n }\n this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n const textDivs = this.#textDivs,\n textContentItemsStr = this.#textContentItemsStr;\n for (const item of items) {\n if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n warn(\"Ignoring additional textDivs for performance reasons.\");\n this.#disableProcessItems = true;\n return;\n }\n if (item.str === undefined) {\n if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n const parent = this.#container;\n this.#container = document.createElement(\"span\");\n this.#container.classList.add(\"markedContent\");\n if (item.id !== null) {\n this.#container.setAttribute(\"id\", `${item.id}`);\n }\n parent.append(this.#container);\n } else if (item.type === \"endMarkedContent\") {\n this.#container = this.#container.parentNode;\n }\n continue;\n }\n textContentItemsStr.push(item.str);\n this.#appendText(item);\n }\n }\n #appendText(geom) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n this.#textDivs.push(textDiv);\n const tx = Util.transform(this.#transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = this.#styleCache[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n const fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, this.#lang);\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n const scaleFactorStr = \"calc(var(--scale-factor)*\";\n const divStyle = textDiv.style;\n if (this.#container === this.#rootContainer) {\n divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n } else {\n divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n }\n divStyle.fontSize = `${scaleFactorStr}${(TextLayer.#minFontSize * fontHeight).toFixed(2)}px)`;\n divStyle.fontFamily = fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n if (this.#fontInspectorEnabled) {\n textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n this.#textDivProperties.set(textDiv, textDivProperties);\n this.#layoutTextParams.div = textDiv;\n this.#layoutTextParams.properties = textDivProperties;\n this.#layout(this.#layoutTextParams);\n if (textDivProperties.hasText) {\n this.#container.append(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this.#container.append(br);\n }\n }\n #layout(params) {\n const {\n div,\n properties,\n ctx,\n prevFontSize,\n prevFontFamily\n } = params;\n const {\n style\n } = div;\n let transform = \"\";\n if (TextLayer.#minFontSize > 1) {\n transform = `scale(${1 / TextLayer.#minFontSize})`;\n }\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const {\n fontFamily\n } = style;\n const {\n canvasWidth,\n fontSize\n } = properties;\n if (prevFontSize !== fontSize || prevFontFamily !== fontFamily) {\n ctx.font = `${fontSize * this.#scale}px ${fontFamily}`;\n params.prevFontSize = fontSize;\n params.prevFontFamily = fontFamily;\n }\n const {\n width\n } = ctx.measureText(div.textContent);\n if (width > 0) {\n transform = `scaleX(${canvasWidth * this.#scale / width}) ${transform}`;\n }\n }\n if (properties.angle !== 0) {\n transform = `rotate(${properties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n style.transform = transform;\n }\n }\n static cleanup() {\n if (this.#pendingTextLayers.size > 0) {\n return;\n }\n this.#ascentCache.clear();\n for (const {\n canvas\n } of this.#canvasContexts.values()) {\n canvas.remove();\n }\n this.#canvasContexts.clear();\n }\n static #getCtx(lang = null) {\n let canvasContext = this.#canvasContexts.get(lang ||= \"\");\n if (!canvasContext) {\n const canvas = document.createElement(\"canvas\");\n canvas.className = \"hiddenCanvasElement\";\n canvas.lang = lang;\n document.body.append(canvas);\n canvasContext = canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: true\n });\n this.#canvasContexts.set(lang, canvasContext);\n }\n return canvasContext;\n }\n static #ensureMinFontSizeComputed() {\n if (this.#minFontSize !== null) {\n return;\n }\n const div = document.createElement(\"div\");\n div.style.opacity = 0;\n div.style.lineHeight = 1;\n div.style.fontSize = \"1px\";\n div.style.position = \"absolute\";\n div.textContent = \"X\";\n document.body.append(div);\n this.#minFontSize = div.getBoundingClientRect().height;\n div.remove();\n }\n static #getAscent(fontFamily, lang) {\n const cachedAscent = this.#ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n const ctx = this.#getCtx(lang);\n const savedFont = ctx.font;\n ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n const metrics = ctx.measureText(\"\");\n let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n this.#ascentCache.set(fontFamily, ratio);\n ctx.canvas.width = ctx.canvas.height = 0;\n ctx.font = savedFont;\n return ratio;\n }\n ctx.strokeStyle = \"red\";\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"g\", 0, 0);\n let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n descent = 0;\n for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n if (pixels[i] > 0) {\n descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n ascent = 0;\n for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n if (pixels[i] > 0) {\n ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n ctx.canvas.width = ctx.canvas.height = 0;\n ctx.font = savedFont;\n const ratio = ascent ? ascent / (ascent + descent) : DEFAULT_FONT_ASCENT;\n this.#ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/xfa_text.js\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null)\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/api.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536;\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nconst DELAYED_CLEANUP_TIMEOUT = 5000;\nconst DefaultCanvasFactory = isNodeJS ? NodeCanvasFactory : DOMCanvasFactory;\nconst DefaultCMapReaderFactory = isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory;\nconst DefaultFilterFactory = isNodeJS ? NodeFilterFactory : DOMFilterFactory;\nconst DefaultStandardFontDataFactory = isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory;\nfunction getDocument(src = {}) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = {\n url: src\n };\n } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n src = {\n data: src\n };\n }\n const task = new PDFDocumentLoadingTask();\n const {\n docId\n } = task;\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n const docBaseUrl = typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : null;\n const cMapUrl = typeof src.cMapUrl === \"string\" ? src.cMapUrl : null;\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\n const standardFontDataUrl = typeof src.standardFontDataUrl === \"string\" ? src.standardFontDataUrl : null;\n const StandardFontDataFactory = src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n const enableHWA = src.enableHWA === true;\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && cMapUrl && standardFontDataUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI);\n const canvasFactory = src.canvasFactory || new DefaultCanvasFactory({\n ownerDocument,\n enableHWA\n });\n const filterFactory = src.filterFactory || new DefaultFilterFactory({\n docId,\n ownerDocument\n });\n const styleElement = null;\n setVerbosityLevel(verbosity);\n const transportFactory = {\n canvasFactory,\n filterFactory\n };\n if (!useWorkerFetch) {\n transportFactory.cMapReaderFactory = new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked\n });\n transportFactory.standardFontDataFactory = new StandardFontDataFactory({\n baseUrl: standardFontDataUrl\n });\n }\n if (!worker) {\n const workerParams = {\n verbosity,\n port: GlobalWorkerOptions.workerPort\n };\n worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docParams = {\n docId,\n apiVersion: \"4.6.82\",\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n cMapUrl: useWorkerFetch ? cMapUrl : null,\n standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null\n }\n };\n const transportParams = {\n disableFontFace,\n fontExtraProperties,\n ownerDocument,\n pdfBug,\n styleElement,\n loadingParams: {\n disableAutoFetch,\n enableXfa\n }\n };\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(rangeTransport, {\n disableRange,\n disableStream\n });\n } else if (!data) {\n if (!url) {\n throw new Error(\"getDocument - no `url` parameter provided.\");\n }\n const createPDFNetworkStream = params => {\n if (isNodeJS) {\n const isFetchSupported = function () {\n return typeof fetch !== \"undefined\" && typeof Response !== \"undefined\" && \"body\" in Response.prototype;\n };\n return isFetchSupported() && isValidFetchUrl(params.url) ? new PDFFetchStream(params) : new PDFNodeStream(params);\n }\n return isValidFetchUrl(params.url) ? new PDFFetchStream(params) : new PDFNetworkStream(params);\n };\n networkStream = createPDFNetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream\n });\n }\n return workerIdPromise.then(workerId => {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const messageHandler = new MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val.href;\n }\n try {\n return new URL(val, window.location).href;\n } catch {\n if (isNodeJS && typeof val === \"string\") {\n return val;\n }\n }\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n return new Uint8Array(val);\n }\n throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nfunction isRefProxy(ref) {\n return typeof ref === \"object\" && Number.isInteger(ref?.num) && ref.num >= 0 && Number.isInteger(ref?.gen) && ref.gen >= 0;\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n constructor() {\n this._capability = Promise.withResolvers();\n this._transport = null;\n this._worker = null;\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n this.destroyed = false;\n this.onPassword = null;\n this.onProgress = null;\n }\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n this.destroyed = true;\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\nclass PDFDataRangeTransport {\n constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = Promise.withResolvers();\n }\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n transportReady() {\n this._readyCapability.resolve();\n }\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {}\n}\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getOptionalContentConfig(renderingIntent);\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n destroy() {\n return this.loadingTask.destroy();\n }\n cachedPageNumber(ref) {\n return this._transport.cachedPageNumber(ref);\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\nclass PDFPageProxy {\n #delayedCleanupTimeout = null;\n #pendingCleanup = false;\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this._maybeCleanupAfterRender = false;\n this._intentStates = new Map();\n this.destroyed = false;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\n }\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n isEditing = false\n }) {\n this._stats?.time(\"Overall\");\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing);\n const {\n renderingIntent,\n cacheKey\n } = intentArgs;\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n let intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(cacheKey, intentState);\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = Promise.withResolvers();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (this._maybeCleanupAfterRender || intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup(!intentPrint);\n if (error) {\n internalRenderTask.capability.reject(error);\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n if (globalThis.Stats?.enabled) {\n globalThis.Stats.add(this.pageNumber, this._stats);\n }\n }\n };\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvasContext,\n viewport,\n transform,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors\n });\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n throw new Error(\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" + \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n isEditing = false\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks.delete(opListTask);\n }\n }\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing, true);\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = Promise.withResolvers();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n }\n });\n }\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => XfaText.textContent(xfa));\n }\n const readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n resolve(textContent);\n return;\n }\n textContent.lang ??= value.lang;\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n lang: null\n };\n pump();\n });\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = true;\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n if (intentState.opListReadCapability) {\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup(false);\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n #tryCleanup(delayed = false) {\n this.#abortDelayedCleanup();\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n if (delayed) {\n this.#delayedCleanupTimeout = setTimeout(() => {\n this.#delayedCleanupTimeout = null;\n this.#tryCleanup(false);\n }, DELAYED_CLEANUP_TIMEOUT);\n return false;\n }\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n #abortDelayedCleanup() {\n if (this.#delayedCleanupTimeout) {\n clearTimeout(this.#delayedCleanupTimeout);\n this.#delayedCleanupTimeout = null;\n }\n }\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return;\n }\n this._stats?.timeEnd(\"Page Request\");\n intentState.displayReadyCapability?.resolve(transparency);\n }\n _renderPageChunk(operatorListChunk, intentState) {\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup(true);\n }\n }\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n modifiedIds\n }) {\n const {\n map,\n transfer\n } = annotationStorageSerializable;\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n modifiedIds\n }, transfer);\n const reader = readableStream.getReader();\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return;\n }\n this._renderPageChunk(value, intentState);\n pump();\n }, reason => {\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup(true);\n }\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n pump();\n }\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n delay += reason.extraDelay;\n }\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n }, delay);\n return;\n }\n }\n intentState.streamReader.cancel(new AbortException(reason.message)).catch(() => {});\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n this.cleanup();\n }\n get stats() {\n return this._stats;\n }\n}\nclass LoopbackPort {\n #listeners = new Set();\n #deferred = Promise.resolve();\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? {\n transfer\n } : null)\n };\n this.#deferred.then(() => {\n for (const listener of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n addEventListener(name, listener) {\n this.#listeners.add(listener);\n }\n removeEventListener(name, listener) {\n this.#listeners.delete(listener);\n }\n terminate() {\n this.#listeners.clear();\n }\n}\nclass PDFWorker {\n static #fakeWorkerId = 0;\n static #isWorkerDisabled = false;\n static #workerPorts;\n static {\n if (isNodeJS) {\n this.#isWorkerDisabled = true;\n GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n }\n this._isSameOrigin = (baseUrl, otherUrl) => {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false;\n }\n } catch {\n return false;\n }\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n this._createCDNWrapper = url => {\n const wrapper = `await import(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper], {\n type: \"text/javascript\"\n }));\n };\n }\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel()\n } = {}) {\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n this._readyCapability = Promise.withResolvers();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n if (port) {\n if (PDFWorker.#workerPorts?.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n (PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n get promise() {\n if (isNodeJS) {\n return Promise.all([NodePackages.promise, this._readyCapability.promise]);\n }\n return this._readyCapability.promise;\n }\n #resolve() {\n this._readyCapability.resolve();\n this._messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }\n get port() {\n return this._port;\n }\n get messageHandler() {\n return this._messageHandler;\n }\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {});\n this.#resolve();\n }\n _initialize() {\n if (PDFWorker.#isWorkerDisabled || PDFWorker.#mainThreadWorkerMessageHandler) {\n this._setupFakeWorker();\n return;\n }\n let {\n workerSrc\n } = PDFWorker;\n try {\n if (!PDFWorker._isSameOrigin(window.location.href, workerSrc)) {\n workerSrc = PDFWorker._createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n const worker = new Worker(workerSrc, {\n type: \"module\"\n });\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n ac.abort();\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this._setupFakeWorker();\n }\n };\n const ac = new AbortController();\n worker.addEventListener(\"error\", () => {\n if (!this._webWorker) {\n terminateEarly();\n }\n }, {\n signal: ac.signal\n });\n messageHandler.on(\"test\", data => {\n ac.abort();\n if (this.destroyed || !data) {\n terminateEarly();\n return;\n }\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n this.#resolve();\n });\n messageHandler.on(\"ready\", data => {\n ac.abort();\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n try {\n sendTest();\n } catch {\n this._setupFakeWorker();\n }\n });\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n this._setupFakeWorker();\n }\n _setupFakeWorker() {\n if (!PDFWorker.#isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorker.#isWorkerDisabled = true;\n }\n PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n const id = `fake${PDFWorker.#fakeWorkerId++}`;\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n this._messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this.#resolve();\n }).catch(reason => {\n this._readyCapability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker.#workerPorts?.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n const cachedPort = this.#workerPorts?.get(params.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.fromPort - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get #mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n if (this.#mainThreadWorkerMessageHandler) {\n return this.#mainThreadWorkerMessageHandler;\n }\n const worker = await import( /*webpackIgnore: true*/this.workerSrc);\n return worker.WorkerMessageHandler;\n };\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nclass WorkerTransport {\n #methodPromises = new Map();\n #pageCache = new Map();\n #pagePromises = new Map();\n #pageRefCache = new Map();\n #passwordCapability = null;\n constructor(messageHandler, loadingTask, networkStream, params, factory) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this.loadingParams = params.loadingParams;\n this._params = params;\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n this.destroyed = false;\n this.destroyCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = Promise.withResolvers();\n this.setupMessageHandler();\n }\n #cacheSimpleMethod(name, data = null) {\n const cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, data);\n this.#methodPromises.set(name, promise);\n return promise;\n }\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isEditing = false, isOpList = false) {\n let renderingIntent = RenderingIntentFlag.DISPLAY;\n let annotationStorageSerializable = SerializableEmpty;\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n if (isEditing) {\n renderingIntent += RenderingIntentFlag.IS_EDITING;\n }\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n const {\n ids: modifiedIds,\n hash: modifiedIdsHash\n } = annotationStorage.modifiedIds;\n const cacheKeyBuf = [renderingIntent, annotationStorageSerializable.hash, modifiedIdsHash];\n return {\n renderingIntent,\n cacheKey: cacheKeyBuf.join(\"_\"),\n annotationStorageSerializable,\n modifiedIds\n };\n }\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n this.destroyed = true;\n this.destroyCapability = Promise.withResolvers();\n this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const waitOn = [];\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n this.#pageRefCache.clear();\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n TextLayer.cleanup();\n this._networkStream?.cancelAllRequests(new AbortException(\"Worker was terminated.\"));\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n sink.onPull = () => {\n this._fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", data => {\n const headersCapability = Promise.withResolvers();\n const fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength\n });\n }, headersCapability.reject);\n return headersCapability.promise;\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n if (!rangeReader) {\n sink.close();\n return;\n }\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n switch (ex.name) {\n case \"PasswordException\":\n reason = new PasswordException(ex.message, ex.code);\n break;\n case \"InvalidPDFException\":\n reason = new InvalidPDFException(ex.message);\n break;\n case \"MissingPDFException\":\n reason = new MissingPDFException(ex.message);\n break;\n case \"UnexpectedResponseException\":\n reason = new UnexpectedResponseException(ex.message, ex.status);\n break;\n case \"UnknownErrorException\":\n reason = new UnknownErrorException(ex.message, ex.details);\n break;\n default:\n unreachable(\"DocException - expected a valid Error.\");\n }\n loadingTask._capability.reject(reason);\n });\n messageHandler.on(\"PasswordRequest\", exception => {\n this.#passwordCapability = Promise.withResolvers();\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({\n password\n });\n }\n };\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this.#passwordCapability.reject(ex);\n }\n } else {\n this.#passwordCapability.reject(new PasswordException(exception.message, exception.code));\n }\n return this.#passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return null;\n }\n if (this.commonObjs.has(id)) {\n return null;\n }\n switch (type) {\n case \"Font\":\n const {\n disableFontFace,\n fontExtraProperties,\n pdfBug\n } = this._params;\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n const inspectFont = pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new FontFaceObject(exportedData, {\n disableFontFace,\n inspectFont\n });\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!fontExtraProperties && font.data) {\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"CopyLocalImage\":\n const {\n imageRef\n } = exportedData;\n assert(imageRef, \"The imageRef must be defined.\");\n for (const pageProxy of this.#pageCache.values()) {\n for (const [, data] of pageProxy.objs) {\n if (data?.ref !== imageRef) {\n continue;\n }\n if (!data.dataLen) {\n return null;\n }\n this.commonObjs.resolve(id, structuredClone(data));\n return data.dataLen;\n }\n }\n break;\n case \"FontPath\":\n case \"Image\":\n case \"Pattern\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n return null;\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n if (pageProxy._intentStates.size === 0) {\n imageData?.bitmap?.close();\n return;\n }\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n if (imageData?.dataLen > MAX_IMAGE_SIZE_TO_CACHE) {\n pageProxy._maybeCleanupAfterRender = true;\n }\n break;\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total\n });\n });\n messageHandler.on(\"FetchBuiltInCMap\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.cMapReaderFactory) {\n return Promise.reject(new Error(\"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"));\n }\n return this.cMapReaderFactory.fetch(data);\n });\n messageHandler.on(\"FetchStandardFontData\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.standardFontDataFactory) {\n return Promise.reject(new Error(\"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"));\n }\n return this.standardFontDataFactory.fetch(data);\n });\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n warn(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n const {\n map,\n transfer\n } = this.annotationStorage.serializable;\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this._fullReader?.filename ?? null\n }, transfer).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n if (pageInfo.refStr) {\n this.#pageRefCache.set(pageInfo.refStr, pageNumber);\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n getPageIndex(ref) {\n if (!isRefProxy(ref)) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n }\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex\n });\n }\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig(renderingIntent) {\n return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(data => new OptionalContentConfig(data, renderingIntent));\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const name = \"GetMetadata\",\n cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, null).then(results => ({\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null\n }));\n this.#methodPromises.set(name, promise);\n return promise;\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return;\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(true);\n TextLayer.cleanup();\n }\n cachedPageNumber(ref) {\n if (!isRefProxy(ref)) {\n return null;\n }\n const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n return this.#pageRefCache.get(refStr) ?? null;\n }\n}\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nclass PDFObjects {\n #objs = Object.create(null);\n #ensureObj(objId) {\n return this.#objs[objId] ||= {\n ...Promise.withResolvers(),\n data: INITIAL_DATA\n };\n }\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.promise.then(() => callback(obj.data));\n return null;\n }\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n has(objId) {\n const obj = this.#objs[objId];\n return !!obj && obj.data !== INITIAL_DATA;\n }\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.resolve();\n }\n clear() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n data?.bitmap?.close();\n }\n this.#objs = Object.create(null);\n }\n *[Symbol.iterator]() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n if (data === INITIAL_DATA) {\n continue;\n }\n yield [objId, data];\n }\n }\n}\nclass RenderTask {\n #internalRenderTask = null;\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n this.onContinue = null;\n }\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(null, extraDelay);\n }\n get separateAnnots() {\n const {\n separateAnnots\n } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const {\n annotationCanvasMap\n } = this.#internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n}\nclass InternalRenderTask {\n #rAF = null;\n static #canvasInUse = new WeakSet();\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = Promise.withResolvers();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n canvasContext,\n viewport,\n transform,\n background\n } = this.params;\n this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n if (this.#rAF) {\n window.cancelAnimationFrame(this.#rAF);\n this.#rAF = null;\n }\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback(error || new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay));\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.stepper?.updateOperatorList(this.operatorList);\n if (this.running) {\n return;\n }\n this._continue();\n }\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n this.#rAF = window.requestAnimationFrame(() => {\n this.#rAF = null;\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback();\n }\n }\n }\n}\nconst version = \"4.6.82\";\nconst build = \"9b541910f\";\n\n;// CONCATENATED MODULE: ./src/shared/scripting_utils.js\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/xfa_layer.js\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n } else if (option.attributes.hasOwnProperty(\"selected\")) {\n delete option.attributes.selected;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value\n });\n });\n break;\n }\n }\n static setAttributes({\n html,\n element,\n storage = null,\n intent,\n linkService\n }) {\n const {\n attributes\n } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n break;\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n case \"style\":\n Object.assign(html.style, value);\n break;\n case \"textContent\":\n html.textContent = value;\n break;\n default:\n if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n html.setAttribute(key, value);\n }\n }\n }\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService\n });\n }\n const isNotForRichText = intent !== \"richText\";\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n if (isNotForRichText) {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n const textDivs = [];\n if (root.children.length === 0) {\n if (root.value) {\n const node = document.createTextNode(root.value);\n rootHtml.append(node);\n if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n textDivs.push(node);\n }\n }\n return {\n textDivs\n };\n }\n const stack = [[root, -1, rootHtml]];\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n const {\n name\n } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name);\n html.append(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService\n });\n }\n if (child.children?.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (isNotForRichText && XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n return {\n textDivs\n };\n }\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/annotation_layer.js\n\n\n\n\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n}\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\nclass AnnotationElement {\n #updates = null;\n #hasBorder = false;\n #popupElement = null;\n constructor(parameters, {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false\n } = {}) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({\n titleObj,\n contentsObj,\n richText\n }) {\n return !!(titleObj?.str || contentsObj?.str || richText?.str);\n }\n get _isEditable() {\n return this.data.isEditable;\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data);\n }\n updateEdited(params) {\n if (!this.container) {\n return;\n }\n this.#updates ||= {\n rect: this.data.rect.slice(0)\n };\n const {\n rect\n } = params;\n if (rect) {\n this.#setRectEdited(rect);\n }\n this.#popupElement?.popup.updateEdited(params);\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n this.#setRectEdited(this.#updates.rect);\n this.#popupElement?.popup.resetEdited();\n this.#updates = null;\n }\n #setRectEdited(rect) {\n const {\n container: {\n style\n },\n data: {\n rect: currentRect,\n rotation\n },\n parent: {\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n }\n } = this;\n currentRect?.splice(0, 4, ...rect);\n const {\n width,\n height\n } = getRectDims(rect);\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n if (rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation);\n }\n }\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: {\n page,\n viewport\n }\n } = this;\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement)) {\n container.tabIndex = DEFAULT_TAB_INDEX;\n }\n const {\n style\n } = container;\n style.zIndex = this.parent.zIndex++;\n if (data.popupRef) {\n container.setAttribute(\"aria-haspopup\", \"dialog\");\n }\n if (data.alternativeText) {\n container.title = data.alternativeText;\n }\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const {\n rotation\n } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n const {\n width,\n height\n } = getRectDims(data.rect);\n if (!ignoreBorder && data.borderStyle.width > 0) {\n style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;\n style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`;\n style.borderRadius = radius;\n }\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n style.borderStyle = \"solid\";\n break;\n case AnnotationBorderStyleType.DASHED:\n style.borderStyle = \"dashed\";\n break;\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n case AnnotationBorderStyleType.UNDERLINE:\n style.borderBottomStyle = \"solid\";\n break;\n default:\n break;\n }\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n style.borderColor = Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n } else {\n style.borderWidth = 0;\n }\n }\n const rect = Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n const {\n rotation\n } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n return container;\n }\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const {\n pageWidth,\n pageHeight\n } = this.parent.viewport.rawDims;\n const {\n width,\n height\n } = getRectDims(this.data.rect);\n let elementWidth, elementHeight;\n if (angle % 180 === 0) {\n elementWidth = 100 * width / pageWidth;\n elementHeight = 100 * height / pageHeight;\n } else {\n elementWidth = 100 * height / pageWidth;\n elementHeight = 100 * width / pageHeight;\n }\n container.style.width = `${elementWidth}%`;\n container.style.height = `${elementHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)\n });\n };\n return shadow(this, \"_commonActions\", {\n display: event => {\n const {\n display\n } = event.detail;\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print\n });\n },\n hidden: event => {\n const {\n hidden\n } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({\n preventScroll: false\n }), 0);\n },\n userName: event => {\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle\n });\n }\n });\n }\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail\n },\n target: element\n };\n action(eventProxy);\n delete storedData[actionName];\n }\n }\n }\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const {\n quadPoints\n } = this.data;\n if (!quadPoints) {\n return;\n }\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x => Math.fround(x));\n if (quadPoints.length === 8) {\n const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n return;\n }\n }\n const {\n style\n } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const {\n borderColor,\n borderWidth\n } = style;\n style.borderWidth = 0;\n svgBuffer = [\"url('data:image/svg+xml;utf8,\", `')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n _createPopup() {\n const {\n container,\n data\n } = this;\n container.setAttribute(\"aria-haspopup\", \"dialog\");\n const popup = this.#popupElement = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation\n },\n parent: this.parent,\n elements: [this]\n });\n this.parent.div.append(popup.render());\n }\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(name, skipId = null) {\n const fields = [];\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n }\n return fields;\n }\n for (const domElement of document.getElementsByName(name)) {\n const {\n exportValue\n } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: {\n id: editId\n }\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId\n });\n });\n }\n}\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n render() {\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachment, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n isBound = true;\n } else {\n if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.container.append(link);\n }\n return this.container;\n }\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === \"\") {\n this.#setInternalLink();\n }\n }\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n this.#setInternalLink();\n }\n #bindAttachment(link, attachment, dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n if (attachment.description) {\n link.title = attachment.description;\n }\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(attachment.content, attachment.filename, dest);\n return false;\n };\n this.#setInternalLink();\n }\n #bindSetOCGState(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n this.#setInternalLink();\n }\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name\n }\n });\n return false;\n };\n }\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n if (!this._fieldObjects) {\n warn(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n link.onclick = () => {\n otherClickAction?.();\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const {\n id\n } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\":\n {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"combobox\":\n case \"listbox\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n default:\n continue;\n }\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n warn(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n if (this.enableScripting) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n return false;\n };\n }\n}\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\"data-l10n-args\", JSON.stringify({\n type: this.data.name\n }));\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(image);\n return this.container;\n }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n return this.container;\n }\n showElementAndHideCanvas(element) {\n if (this.data.hasOwnCanvas) {\n if (element.previousSibling?.nodeName === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n _getKeyModifier(event) {\n return util_FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event)\n }\n });\n });\n } else {\n element.addEventListener(baseName, event => {\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n } else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n if (!valueGetter) {\n return;\n }\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event)\n }\n });\n });\n }\n }\n _setEventListeners(element, elementData, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData ||= {\n focused: false\n };\n }\n this._setEventListener(element, elementData, baseName, eventName, getter);\n if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : Util.makeHexColor(color[0], color[1], color[2]);\n }\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const {\n fontColor\n } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || annotation_layer_DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / LINE_FACTOR));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n computedFontSize = Math.min(fontSize, roundToOneDecimal(height / LINE_FACTOR));\n }\n style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let element = null;\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false\n };\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n this._setRequired(element, this.data.required);\n if (maxLen) {\n element.maxLength = maxLen;\n }\n element.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n elementData.formattedValue = null;\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n let blurListener = event => {\n const {\n formattedValue\n } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n event.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const {\n target\n } = event;\n if (elementData.userValue) {\n target.value = elementData.userValue;\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n if (!this.data.actions?.Focus) {\n elementData.focused = true;\n }\n });\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.showElementAndHideCanvas(jsEvent.target);\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n storage.setValue(id, {\n formattedValue\n });\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const {\n charLimit\n } = event.detail;\n const {\n target\n } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, {\n value\n });\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd\n }\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const {\n value\n } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n if (!this.data.actions?.Blur) {\n elementData.focused = false;\n }\n const {\n value\n } = event.target;\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n _blurListener(event);\n });\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const {\n data,\n target\n } = event;\n const {\n value,\n selectionStart,\n selectionEnd\n } = target;\n let selStart = selectionStart,\n selEnd = selectionEnd;\n switch (event.inputType) {\n case \"deleteWordBackward\":\n {\n const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\":\n {\n const match = value.substring(selectionStart).match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd\n }\n });\n });\n }\n this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n }\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: !!parameters.data.hasOwnCanvas\n });\n }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, {\n value: event.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value\n });\n }\n if (value) {\n for (const radio of this._getElementsByName(data.fieldName, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n }\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n render() {\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n return container;\n }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const {\n options,\n multiple\n } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n };\n let selectedValues = getValue(false);\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => ({\n displayValue: option.textContent,\n exportValue: option.value\n }));\n };\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(options, option => option.selected);\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, {\n value: null,\n items: []\n });\n selectedValues = getValue(false);\n },\n insert(event) {\n const {\n index,\n displayValue,\n exportValue\n } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n items(event) {\n const {\n items\n } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const {\n displayValue,\n exportValue\n } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(true);\n const change = getValue(false);\n storage.setValue(id, {\n value: exportValue\n });\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n change,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(true)\n });\n });\n }\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {}\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n this.container.append(selectElement);\n return this.container;\n }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const {\n data,\n elements\n } = parameters;\n super(parameters, {\n isRenderable: AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n this.popup = null;\n }\n render() {\n this.container.classList.add(\"popupAnnotation\");\n const popup = this.popup = new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open\n });\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\"));\n return this.container;\n }\n}\nclass PopupElement {\n #boundKeyDown = this.#keyDown.bind(this);\n #boundHide = this.#hide.bind(this);\n #boundShow = this.#show.bind(this);\n #boundToggle = this.#toggle.bind(this);\n #color = null;\n #container = null;\n #contentsObj = null;\n #dateObj = null;\n #elements = null;\n #parent = null;\n #parentRect = null;\n #pinned = false;\n #popup = null;\n #position = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #updates = null;\n #wasVisible = false;\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle);\n element.addEventListener(\"mouseenter\", this.#boundShow);\n element.addEventListener(\"mouseleave\", this.#boundHide);\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n }\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n }\n render() {\n if (this.#popup) {\n return;\n }\n const popup = this.#popup = document.createElement(\"div\");\n popup.className = \"popup\";\n if (this.#color) {\n const baseColor = popup.style.outlineColor = Util.makeHexColor(...this.#color);\n if (CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")) {\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n } else {\n const BACKGROUND_ENLIGHT = 0.7;\n popup.style.backgroundColor = Util.makeHexColor(...this.#color.map(c => Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)));\n }\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n const title = document.createElement(\"h1\");\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n popup.append(header);\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.classList.add(\"popupDate\");\n modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-time-string\");\n modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n dateObj: this.#dateObj.valueOf()\n }));\n header.append(modificationDate);\n }\n const html = this.#html;\n if (html) {\n XfaLayer.render({\n xfaHtml: html,\n intent: \"richText\",\n div: popup\n });\n popup.lastChild.classList.add(\"richText\", \"popupContent\");\n } else {\n const contents = this._formatContents(this.#contentsObj);\n popup.append(contents);\n }\n this.#container.append(popup);\n }\n get #html() {\n const richText = this.#richText;\n const contentsObj = this.#contentsObj;\n if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n return this.#richText.html || null;\n }\n return null;\n }\n get #fontSize() {\n return this.#html?.attributes?.style?.fontSize || 0;\n }\n get #fontColor() {\n return this.#html?.attributes?.style?.color || null;\n }\n #makePopupContent(text) {\n const popupLines = [];\n const popupContent = {\n str: text,\n html: {\n name: \"div\",\n attributes: {\n dir: \"auto\"\n },\n children: [{\n name: \"p\",\n children: popupLines\n }]\n }\n };\n const lineAttributes = {\n style: {\n color: this.#fontColor,\n fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--scale-factor))` : \"\"\n }\n };\n for (const line of text.split(\"\\n\")) {\n popupLines.push({\n name: \"span\",\n value: line,\n attributes: lineAttributes\n });\n }\n return popupContent;\n }\n _formatContents({\n str,\n dir\n }) {\n const p = document.createElement(\"p\");\n p.classList.add(\"popupContent\");\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n return p;\n }\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n this.#toggle();\n }\n }\n updateEdited({\n rect,\n popupContent\n }) {\n this.#updates ||= {\n contentsObj: this.#contentsObj,\n richText: this.#richText\n };\n if (rect) {\n this.#position = null;\n }\n if (popupContent) {\n this.#richText = this.#makePopupContent(popupContent);\n this.#contentsObj = null;\n }\n this.#popup?.remove();\n this.#popup = null;\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n ({\n contentsObj: this.#contentsObj,\n richText: this.#richText\n } = this.#updates);\n this.#updates = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#position = null;\n }\n #setPosition() {\n if (this.#position !== null) {\n return;\n }\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.#parent;\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n const normalizedRect = Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n this.#position = [100 * (popupLeft - pageX) / pageWidth, 100 * (popupTop - pageY) / pageHeight];\n const {\n style\n } = this.#container;\n style.left = `${this.#position[0]}%`;\n style.top = `${this.#position[1]}%`;\n }\n #toggle() {\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n }\n }\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#setPosition();\n this.#container.hidden = false;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000;\n }\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n maybeShow() {\n if (!this.#wasVisible) {\n return;\n }\n if (!this.#popup) {\n this.#show();\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n get isVisible() {\n return this.#container.hidden === false;\n }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const content = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const line = this.#line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.append(line);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#line;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.#square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.append(square);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#square;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.#circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.append(circle);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n vertices,\n borderStyle,\n popupRef\n }\n } = this;\n if (!vertices) {\n return this.container;\n }\n const {\n width,\n height\n } = getRectDims(rect);\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n const x = vertices[i] - rect[0];\n const y = rect[3] - vertices[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\nclass InkAnnotationElement extends AnnotationElement {\n #polylines = [];\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = AnnotationEditorType.INK;\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n inkLists,\n borderStyle,\n popupRef\n }\n } = this;\n const {\n width,\n height\n } = getRectDims(rect);\n const svg = this.svgFactory.create(width, height, true);\n for (const inkList of inkLists) {\n let points = [];\n for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n const x = inkList[i] - rect[0];\n const y = rect[3] - inkList[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n svg.append(polyline);\n }\n this.container.append(svg);\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n return this.container;\n }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\n return this.container;\n }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\n return this.container;\n }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n return this.container;\n }\n}\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n file\n } = this.data;\n this.filename = file.filename;\n this.content = file.content;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n ...file\n });\n }\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n const {\n container,\n data\n } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n const {\n isMac\n } = util_FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n container.append(trigger);\n return container;\n }\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n #download() {\n this.downloadManager?.openOrDownloadData(this.content, this.filename);\n }\n}\nclass AnnotationLayer {\n #accessibilityManager = null;\n #annotationCanvasMap = null;\n #editableAnnotations = new Map();\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n annotationEditorUIManager,\n page,\n viewport\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n this._annotationEditorUIManager = annotationEditorUIManager;\n }\n hasEditableAnnotations() {\n return this.#editableAnnotations.size > 0;\n }\n #appendElement(element, id) {\n const contentElement = element.firstChild || element;\n contentElement.id = `${AnnotationPrefix}${id}`;\n this.div.append(element);\n this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false);\n }\n async render(params) {\n const {\n annotations\n } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n const popupToElements = new Map();\n const elementParams = {\n data: null,\n layer,\n linkService: params.linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: params.annotationStorage || new AnnotationStorage(),\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null\n };\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n const {\n width,\n height\n } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\n continue;\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n if (!isPopupAnnotation && data.popupRef) {\n const elements = popupToElements.get(data.popupRef);\n if (!elements) {\n popupToElements.set(data.popupRef, [element]);\n } else {\n elements.push(element);\n }\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n this.#appendElement(rendered, data.id);\n if (element._isEditable) {\n this.#editableAnnotations.set(element.data.id, element);\n this._annotationEditorUIManager?.renderAnnotationElement(element);\n }\n }\n this.#setAnnotationCanvasMap();\n }\n update({\n viewport\n }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, {\n rotation: viewport.rotation\n });\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n canvas.className = \"annotationContent\";\n const {\n firstChild\n } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else if (!firstChild.classList.contains(\"annotationContent\")) {\n firstChild.before(canvas);\n } else {\n firstChild.after(canvas);\n }\n }\n this.#annotationCanvasMap.clear();\n }\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/freetext.js\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n #color;\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #editModeAC = null;\n #fontSize;\n #initialData = null;\n static _freeTextDefaultContent = \"\";\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n const arrowChecker = self => self.isEmpty();\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n bubbles: true\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], proto.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._translateEmpty, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._translateEmpty, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._translateEmpty, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._translateEmpty, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n static _type = \"freetext\";\n static _editorType = AnnotationEditorType.FREETEXT;\n constructor(params) {\n super({\n ...params,\n name: \"freeTextEditor\"\n });\n this.#color = params.color || FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager, {\n strings: [\"pdfjs-free-text-default-content\"]\n });\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]];\n }\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: setFontsize.bind(this, fontSize),\n undo: setFontsize.bind(this, savedFontsize),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateColor(color) {\n const setColor = col => {\n this.#color = this.editorDiv.style.color = col;\n };\n const savedColor = this.#color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, true);\n }\n getInitialTranslation() {\n const scale = this.parentScale;\n return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(false);\n this.parent.updateToolbar(AnnotationEditorType.FREETEXT);\n super.enableEditMode();\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.#editModeAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#editModeAC);\n this.editorDiv.addEventListener(\"keydown\", this.editorDivKeydown.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n signal\n });\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(true);\n super.disableEditMode();\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this._isDraggable = true;\n this.#editModeAC?.abort();\n this.#editModeAC = null;\n this.div.focus({\n preventScroll: true\n });\n this.isEditing = false;\n this.parent.div.classList.add(\"freetextEditing\");\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n onceAdded() {\n if (this.width) {\n return;\n }\n this.enableEditMode();\n this.editorDiv.focus();\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freetextEditing\");\n }\n super.remove();\n }\n #extractText() {\n const buffer = [];\n this.editorDiv.normalize();\n for (const child of this.editorDiv.childNodes) {\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n return buffer.join(\"\\n\");\n }\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n const {\n currentLayer,\n div\n } = this;\n const savedDisplay = div.style.display;\n const savedVisibility = div.classList.contains(\"hidden\");\n div.classList.remove(\"hidden\");\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n div.classList.toggle(\"hidden\", savedVisibility);\n }\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = this.#content = this.#extractText().trimEnd();\n if (savedText === newText) {\n return;\n }\n const setText = text => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false\n });\n this.#setEditorDimensions();\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n dblclick(event) {\n this.enterInEditMode();\n }\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n event.preventDefault();\n }\n }\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n editorDivFocus(event) {\n this.isEditing = true;\n }\n editorDivBlur(event) {\n this.isEditing = false;\n }\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text\");\n this.enableEditing();\n AnnotationEditor._l10nPromise.get(\"pdfjs-free-text-default-content\").then(msg => this.editorDiv?.setAttribute(\"default-content\", msg));\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n bindEvents(this, this.div, [\"dblclick\", \"keydown\"]);\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n const {\n position\n } = this.#initialData;\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n } else {\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n }\n this.#setContent();\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n return this.div;\n }\n static #getNodeContent(node) {\n return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n }\n editorDivPaste(event) {\n const clipboardData = event.clipboardData || window.clipboardData;\n const {\n types\n } = clipboardData;\n if (types.length === 1 && types[0] === \"text/plain\") {\n return;\n }\n event.preventDefault();\n const paste = FreeTextEditor.#deserializeContent(clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n if (!paste) {\n return;\n }\n const selection = window.getSelection();\n if (!selection.rangeCount) {\n return;\n }\n this.editorDiv.normalize();\n selection.deleteFromDocument();\n const range = selection.getRangeAt(0);\n if (!paste.includes(\"\\n\")) {\n range.insertNode(document.createTextNode(paste));\n this.editorDiv.normalize();\n selection.collapseToStart();\n return;\n }\n const {\n startContainer,\n startOffset\n } = range;\n const bufferBefore = [];\n const bufferAfter = [];\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const parent = startContainer.parentElement;\n bufferAfter.push(startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n if (parent !== this.editorDiv) {\n let buffer = bufferBefore;\n for (const child of this.editorDiv.childNodes) {\n if (child === parent) {\n buffer = bufferAfter;\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n bufferBefore.push(startContainer.nodeValue.slice(0, startOffset).replaceAll(EOL_PATTERN, \"\"));\n } else if (startContainer === this.editorDiv) {\n let buffer = bufferBefore;\n let i = 0;\n for (const child of this.editorDiv.childNodes) {\n if (i++ === startOffset) {\n buffer = bufferAfter;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n this.#setContent();\n const newRange = new Range();\n let beforeLength = bufferBefore.reduce((acc, line) => acc + line.length, 0);\n for (const {\n firstChild\n } of this.editorDiv.childNodes) {\n if (firstChild.nodeType === Node.TEXT_NODE) {\n const length = firstChild.nodeValue.length;\n if (beforeLength <= length) {\n newRange.setStart(firstChild, beforeLength);\n newRange.setEnd(firstChild, beforeLength);\n break;\n }\n beforeLength -= length;\n }\n }\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n #setContent() {\n this.editorDiv.replaceChildren();\n if (!this.#content) {\n return;\n }\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n this.editorDiv.append(div);\n }\n }\n #serializeContent() {\n return this.#content.replaceAll(\"\\xa0\", \" \");\n }\n static #deserializeContent(content) {\n return content.replaceAll(\" \", \"\\xa0\");\n }\n get contentDiv() {\n return this.editorDiv;\n }\n static deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: {\n fontSize,\n fontColor\n },\n rect,\n rotation,\n id\n },\n textContent,\n textPosition,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n if (!textContent || textContent.length === 0) {\n return null;\n }\n initialData = data = {\n annotationType: AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false\n };\n }\n const editor = super.deserialize(data, parent, uiManager);\n editor.#fontSize = data.fontSize;\n editor.#color = Util.makeHexColor(...data.color);\n editor.#content = FreeTextEditor.#deserializeContent(data.value);\n editor.annotationElementId = data.id || null;\n editor.#initialData = initialData;\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return {\n pageIndex: this.pageIndex,\n id: this.annotationElementId,\n deleted: true\n };\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n const rect = this.getRect(padding, padding);\n const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color);\n const serialized = {\n annotationType: AnnotationEditorType.FREETEXT,\n color,\n fontSize: this.#fontSize,\n value: this.#serializeContent(),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n value,\n fontSize,\n color,\n pageIndex\n } = this.#initialData;\n return this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const content = super.renderAnnotationElement(annotation);\n if (this.deleted) {\n return content;\n }\n const {\n style\n } = content;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n content.replaceChildren();\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n content.append(div);\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n annotation.updateEdited({\n rect: this.getRect(padding, padding),\n popupContent: this.#content\n });\n return content;\n }\n resetAnnotationElement(annotation) {\n super.resetAnnotationElement(annotation);\n annotation.resetEdited();\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/outliner.js\n\nclass Outliner {\n #box;\n #verticalEdges = [];\n #intervals = [];\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n const NUMBER_OF_DIGITS = 4;\n const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n const left = [x1, y1, y2, true];\n const right = [x2, y1, y2, false];\n this.#verticalEdges.push(left, right);\n minX = Math.min(minX, x1);\n maxX = Math.max(maxX, x2);\n minY = Math.min(minY, y1);\n maxY = Math.max(maxY, y2);\n }\n const bboxWidth = maxX - minX + 2 * innerMargin;\n const bboxHeight = maxY - minY + 2 * innerMargin;\n const shiftedMinX = minX - innerMargin;\n const shiftedMinY = minY - innerMargin;\n const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n const lastPoint = [lastEdge[0], lastEdge[2]];\n for (const edge of this.#verticalEdges) {\n const [x, y1, y2] = edge;\n edge[0] = (x - shiftedMinX) / bboxWidth;\n edge[1] = (y1 - shiftedMinY) / bboxHeight;\n edge[2] = (y2 - shiftedMinY) / bboxHeight;\n }\n this.#box = {\n x: shiftedMinX,\n y: shiftedMinY,\n width: bboxWidth,\n height: bboxHeight,\n lastPoint\n };\n }\n getOutlines() {\n this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n const outlineVerticalEdges = [];\n for (const edge of this.#verticalEdges) {\n if (edge[3]) {\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n this.#insert(edge);\n } else {\n this.#remove(edge);\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n }\n }\n return this.#getOutlines(outlineVerticalEdges);\n }\n #getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = new Set();\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n for (let i = 0, ii = edges.length; i < ii; i += 2) {\n const edge1 = edges[i][2];\n const edge2 = edges[i + 1][2];\n edge1.push(edge2);\n edge2.push(edge1);\n allEdges.add(edge1);\n allEdges.add(edge2);\n }\n const outlines = [];\n let outline;\n while (allEdges.size > 0) {\n const edge = allEdges.values().next().value;\n let [x, y1, y2, edge1, edge2] = edge;\n allEdges.delete(edge);\n let lastPointX = x;\n let lastPointY = y1;\n outline = [x, y2];\n outlines.push(outline);\n while (true) {\n let e;\n if (allEdges.has(edge1)) {\n e = edge1;\n } else if (allEdges.has(edge2)) {\n e = edge2;\n } else {\n break;\n }\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n if (lastPointX !== x) {\n outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n lastPointX = x;\n }\n lastPointY = lastPointY === y1 ? y2 : y1;\n }\n outline.push(lastPointX, lastPointY);\n }\n return new HighlightOutline(outlines, this.#box);\n }\n #binarySearch(y) {\n const array = this.#intervals;\n let start = 0;\n let end = array.length - 1;\n while (start <= end) {\n const middle = start + end >> 1;\n const y1 = array[middle][0];\n if (y1 === y) {\n return middle;\n }\n if (y1 < y) {\n start = middle + 1;\n } else {\n end = middle - 1;\n }\n }\n return end + 1;\n }\n #insert([, y1, y2]) {\n const index = this.#binarySearch(y1);\n this.#intervals.splice(index, 0, [y1, y2]);\n }\n #remove([, y1, y2]) {\n const index = this.#binarySearch(y1);\n for (let i = index; i < this.#intervals.length; i++) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n for (let i = index - 1; i >= 0; i--) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n }\n #breakEdge(edge) {\n const [x, y1, y2] = edge;\n const results = [[x, y1, y2]];\n const index = this.#binarySearch(y2);\n for (let i = 0; i < index; i++) {\n const [start, end] = this.#intervals[i];\n for (let j = 0, jj = results.length; j < jj; j++) {\n const [, y3, y4] = results[j];\n if (end <= y3 || y4 <= start) {\n continue;\n }\n if (y3 >= start) {\n if (y4 > end) {\n results[j][1] = end;\n } else {\n if (jj === 1) {\n return [];\n }\n results.splice(j, 1);\n j--;\n jj--;\n }\n continue;\n }\n results[j][2] = start;\n if (y4 > end) {\n results.push([x, end, y4]);\n }\n }\n }\n return results;\n }\n}\nclass Outline {\n toSVGPath() {\n throw new Error(\"Abstract method `toSVGPath` must be implemented.\");\n }\n get box() {\n throw new Error(\"Abstract getter `box` must be implemented.\");\n }\n serialize(_bbox, _rotation) {\n throw new Error(\"Abstract method `serialize` must be implemented.\");\n }\n get free() {\n return this instanceof FreeHighlightOutline;\n }\n}\nclass HighlightOutline extends Outline {\n #box;\n #outlines;\n constructor(outlines, box) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n }\n toSVGPath() {\n const buffer = [];\n for (const polygon of this.#outlines) {\n let [prevX, prevY] = polygon;\n buffer.push(`M${prevX} ${prevY}`);\n for (let i = 2; i < polygon.length; i += 2) {\n const x = polygon[i];\n const y = polygon[i + 1];\n if (x === prevX) {\n buffer.push(`V${y}`);\n prevY = y;\n } else if (y === prevY) {\n buffer.push(`H${x}`);\n prevX = x;\n }\n }\n buffer.push(\"Z\");\n }\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], _rotation) {\n const outlines = [];\n const width = trX - blX;\n const height = trY - blY;\n for (const outline of this.#outlines) {\n const points = new Array(outline.length);\n for (let i = 0; i < outline.length; i += 2) {\n points[i] = blX + outline[i] * width;\n points[i + 1] = trY - outline[i + 1] * height;\n }\n outlines.push(points);\n }\n return outlines;\n }\n get box() {\n return this.#box;\n }\n}\nclass FreeOutliner {\n #box;\n #bottom = [];\n #innerMargin;\n #isLTR;\n #top = [];\n #last = new Float64Array(18);\n #lastX;\n #lastY;\n #min;\n #min_dist;\n #scaleFactor;\n #thickness;\n #points = [];\n static #MIN_DIST = 8;\n static #MIN_DIFF = 2;\n static #MIN = FreeOutliner.#MIN_DIST + FreeOutliner.#MIN_DIFF;\n constructor({\n x,\n y\n }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n this.#box = box;\n this.#thickness = thickness * scaleFactor;\n this.#isLTR = isLTR;\n this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n this.#innerMargin = innerMargin;\n this.#min_dist = FreeOutliner.#MIN_DIST * scaleFactor;\n this.#min = FreeOutliner.#MIN * scaleFactor;\n this.#scaleFactor = scaleFactor;\n this.#points.push(x, y);\n }\n get free() {\n return true;\n }\n isEmpty() {\n return isNaN(this.#last[8]);\n }\n #getLastCoords() {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n }\n add({\n x,\n y\n }) {\n this.#lastX = x;\n this.#lastY = y;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(diffX, diffY);\n if (d < this.#min) {\n return false;\n }\n const diffD = d - this.#min_dist;\n const K = diffD / d;\n const shiftX = K * diffX;\n const shiftY = K * diffY;\n let x0 = x1;\n let y0 = y1;\n x1 = x2;\n y1 = y2;\n x2 += shiftX;\n y2 += shiftY;\n this.#points?.push(x, y);\n const nX = -shiftY / diffD;\n const nY = shiftX / diffD;\n const thX = nX * this.#thickness;\n const thY = nY * this.#thickness;\n this.#last.set(this.#last.subarray(2, 8), 0);\n this.#last.set([x2 + thX, y2 + thY], 4);\n this.#last.set(this.#last.subarray(14, 18), 12);\n this.#last.set([x2 - thX, y2 - thY], 16);\n if (isNaN(this.#last[6])) {\n if (this.#top.length === 0) {\n this.#last.set([x1 + thX, y1 + thY], 2);\n this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n this.#last.set([x1 - thX, y1 - thY], 14);\n this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n return !this.isEmpty();\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n if (angle < Math.PI / 2) {\n [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n return true;\n }\n [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n return true;\n }\n toSVGPath() {\n if (this.isEmpty()) {\n return \"\";\n }\n const top = this.#top;\n const bottom = this.#bottom;\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n if (isNaN(this.#last[6]) && !this.isEmpty()) {\n return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n }\n const buffer = [];\n buffer.push(`M${top[4]} ${top[5]}`);\n for (let i = 6; i < top.length; i += 6) {\n if (isNaN(top[i])) {\n buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n } else {\n buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n }\n }\n buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n if (isNaN(bottom[i])) {\n buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n } else {\n buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n }\n }\n buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n return buffer.join(\" \");\n }\n getOutlines() {\n const top = this.#top;\n const bottom = this.#bottom;\n const last = this.#last;\n const lastTop = last.subarray(4, 6);\n const lastBottom = last.subarray(16, 18);\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const points = new Float64Array((this.#points?.length ?? 0) + 2);\n for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n points[i] = (this.#points[i] - layerX) / layerWidth;\n points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n }\n points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n if (isNaN(last[6]) && !this.isEmpty()) {\n const outline = new Float64Array(36);\n outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n return new FreeHighlightOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n const outline = new Float64Array(this.#top.length + 24 + this.#bottom.length);\n let N = top.length;\n for (let i = 0; i < N; i += 2) {\n if (isNaN(top[i])) {\n outline[i] = outline[i + 1] = NaN;\n continue;\n }\n outline[i] = top[i];\n outline[i + 1] = top[i + 1];\n }\n outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], N);\n N += 24;\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n for (let j = 0; j < 6; j += 2) {\n if (isNaN(bottom[i + j])) {\n outline[N] = outline[N + 1] = NaN;\n N += 2;\n continue;\n }\n outline[N] = bottom[i + j];\n outline[N + 1] = bottom[i + j + 1];\n N += 2;\n }\n }\n outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], N);\n return new FreeHighlightOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n}\nclass FreeHighlightOutline extends Outline {\n #box;\n #bbox = null;\n #innerMargin;\n #isLTR;\n #points;\n #scaleFactor;\n #outline;\n constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n super();\n this.#outline = outline;\n this.#points = points;\n this.#box = box;\n this.#scaleFactor = scaleFactor;\n this.#innerMargin = innerMargin;\n this.#isLTR = isLTR;\n this.#computeMinMax(isLTR);\n const {\n x,\n y,\n width,\n height\n } = this.#bbox;\n for (let i = 0, ii = outline.length; i < ii; i += 2) {\n outline[i] = (outline[i] - x) / width;\n outline[i + 1] = (outline[i + 1] - y) / height;\n }\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = (points[i] - x) / width;\n points[i + 1] = (points[i + 1] - y) / height;\n }\n }\n toSVGPath() {\n const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n if (isNaN(this.#outline[i])) {\n buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n continue;\n }\n buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n }\n buffer.push(\"Z\");\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], rotation) {\n const width = trX - blX;\n const height = trY - blY;\n let outline;\n let points;\n switch (rotation) {\n case 0:\n outline = this.#rescale(this.#outline, blX, trY, width, -height);\n points = this.#rescale(this.#points, blX, trY, width, -height);\n break;\n case 90:\n outline = this.#rescaleAndSwap(this.#outline, blX, blY, width, height);\n points = this.#rescaleAndSwap(this.#points, blX, blY, width, height);\n break;\n case 180:\n outline = this.#rescale(this.#outline, trX, blY, -width, height);\n points = this.#rescale(this.#points, trX, blY, -width, height);\n break;\n case 270:\n outline = this.#rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n points = this.#rescaleAndSwap(this.#points, trX, trY, -width, -height);\n break;\n }\n return {\n outline: Array.from(outline),\n points: [Array.from(points)]\n };\n }\n #rescale(src, tx, ty, sx, sy) {\n const dest = new Float64Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i] * sx;\n dest[i + 1] = ty + src[i + 1] * sy;\n }\n return dest;\n }\n #rescaleAndSwap(src, tx, ty, sx, sy) {\n const dest = new Float64Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i + 1] * sx;\n dest[i + 1] = ty + src[i] * sy;\n }\n return dest;\n }\n #computeMinMax(isLTR) {\n const outline = this.#outline;\n let lastX = outline[4];\n let lastY = outline[5];\n let minX = lastX;\n let minY = lastY;\n let maxX = lastX;\n let maxY = lastY;\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n if (isNaN(outline[i])) {\n minX = Math.min(minX, outline[i + 4]);\n minY = Math.min(minY, outline[i + 5]);\n maxX = Math.max(maxX, outline[i + 4]);\n maxY = Math.max(maxY, outline[i + 5]);\n if (lastPointY < outline[i + 5]) {\n lastPointX = outline[i + 4];\n lastPointY = outline[i + 5];\n } else if (lastPointY === outline[i + 5]) {\n lastPointX = ltrCallback(lastPointX, outline[i + 4]);\n }\n } else {\n const bbox = Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6));\n minX = Math.min(minX, bbox[0]);\n minY = Math.min(minY, bbox[1]);\n maxX = Math.max(maxX, bbox[2]);\n maxY = Math.max(maxY, bbox[3]);\n if (lastPointY < bbox[3]) {\n lastPointX = bbox[2];\n lastPointY = bbox[3];\n } else if (lastPointY === bbox[3]) {\n lastPointX = ltrCallback(lastPointX, bbox[2]);\n }\n }\n lastX = outline[i + 4];\n lastY = outline[i + 5];\n }\n const x = minX - this.#innerMargin,\n y = minY - this.#innerMargin,\n width = maxX - minX + 2 * this.#innerMargin,\n height = maxY - minY + 2 * this.#innerMargin;\n this.#bbox = {\n x,\n y,\n width,\n height,\n lastPoint: [lastPointX, lastPointY]\n };\n }\n get box() {\n return this.#bbox;\n }\n getNewOutline(thickness, innerMargin) {\n const {\n x,\n y,\n width,\n height\n } = this.#bbox;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const sx = width * layerWidth;\n const sy = height * layerHeight;\n const tx = x * layerWidth + layerX;\n const ty = y * layerHeight + layerY;\n const outliner = new FreeOutliner({\n x: this.#points[0] * sx + tx,\n y: this.#points[1] * sy + ty\n }, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n for (let i = 2; i < this.#points.length; i += 2) {\n outliner.add({\n x: this.#points[i] * sx + tx,\n y: this.#points[i + 1] * sy + ty\n });\n }\n return outliner.getOutlines();\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/color_picker.js\n\n\n\nclass ColorPicker {\n #boundKeyDown = this.#keyDown.bind(this);\n #boundPointerDown = this.#pointerDown.bind(this);\n #button = null;\n #buttonSwatch = null;\n #defaultColor;\n #dropdown = null;\n #dropdownWasFromKeyboard = false;\n #isMainColorPicker = false;\n #editor = null;\n #eventBus;\n #uiManager = null;\n #type;\n static get _keyboardManager() {\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"Escape\", \"mac+Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd]]));\n }\n constructor({\n editor = null,\n uiManager = null\n }) {\n if (editor) {\n this.#isMainColorPicker = false;\n this.#type = AnnotationEditorParamsType.HIGHLIGHT_COLOR;\n this.#editor = editor;\n } else {\n this.#isMainColorPicker = true;\n this.#type = AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR;\n }\n this.#uiManager = editor?._uiManager || uiManager;\n this.#eventBus = this.#uiManager._eventBus;\n this.#defaultColor = editor?.color || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n }\n renderButton() {\n const button = this.#button = document.createElement(\"button\");\n button.className = \"colorPicker\";\n button.tabIndex = \"0\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n button.setAttribute(\"aria-haspopup\", true);\n const signal = this.#uiManager._signal;\n button.addEventListener(\"click\", this.#openDropdown.bind(this), {\n signal\n });\n button.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n const swatch = this.#buttonSwatch = document.createElement(\"span\");\n swatch.className = \"swatch\";\n swatch.setAttribute(\"aria-hidden\", true);\n swatch.style.backgroundColor = this.#defaultColor;\n button.append(swatch);\n return button;\n }\n renderMainDropdown() {\n const dropdown = this.#dropdown = this.#getDropdownRoot();\n dropdown.setAttribute(\"aria-orientation\", \"horizontal\");\n dropdown.setAttribute(\"aria-labelledby\", \"highlightColorPickerLabel\");\n return dropdown;\n }\n #getDropdownRoot() {\n const div = document.createElement(\"div\");\n const signal = this.#uiManager._signal;\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.className = \"dropdown\";\n div.role = \"listbox\";\n div.setAttribute(\"aria-multiselectable\", false);\n div.setAttribute(\"aria-orientation\", \"vertical\");\n div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n for (const [name, color] of this.#uiManager.highlightColors) {\n const button = document.createElement(\"button\");\n button.tabIndex = \"0\";\n button.role = \"option\";\n button.setAttribute(\"data-color\", color);\n button.title = name;\n button.setAttribute(\"data-l10n-id\", `pdfjs-editor-colorpicker-${name}`);\n const swatch = document.createElement(\"span\");\n button.append(swatch);\n swatch.className = \"swatch\";\n swatch.style.backgroundColor = color;\n button.setAttribute(\"aria-selected\", color === this.#defaultColor);\n button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n signal\n });\n div.append(button);\n }\n div.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n return div;\n }\n #colorSelect(color, event) {\n event.stopPropagation();\n this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n source: this,\n type: this.#type,\n value: color\n });\n }\n _colorSelectFromKeyboard(event) {\n if (event.target === this.#button) {\n this.#openDropdown(event);\n return;\n }\n const color = event.target.getAttribute(\"data-color\");\n if (!color) {\n return;\n }\n this.#colorSelect(color, event);\n }\n _moveToNext(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n if (event.target === this.#button) {\n this.#dropdown.firstChild?.focus();\n return;\n }\n event.target.nextSibling?.focus();\n }\n _moveToPrevious(event) {\n if (event.target === this.#dropdown?.firstChild || event.target === this.#button) {\n if (this.#isDropdownVisible) {\n this._hideDropdownFromKeyboard();\n }\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n }\n event.target.previousSibling?.focus();\n }\n _moveToBeginning(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.firstChild?.focus();\n }\n _moveToEnd(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.lastChild?.focus();\n }\n #keyDown(event) {\n ColorPicker._keyboardManager.exec(this, event);\n }\n #openDropdown(event) {\n if (this.#isDropdownVisible) {\n this.hideDropdown();\n return;\n }\n this.#dropdownWasFromKeyboard = event.detail === 0;\n window.addEventListener(\"pointerdown\", this.#boundPointerDown, {\n signal: this.#uiManager._signal\n });\n if (this.#dropdown) {\n this.#dropdown.classList.remove(\"hidden\");\n return;\n }\n const root = this.#dropdown = this.#getDropdownRoot();\n this.#button.append(root);\n }\n #pointerDown(event) {\n if (this.#dropdown?.contains(event.target)) {\n return;\n }\n this.hideDropdown();\n }\n hideDropdown() {\n this.#dropdown?.classList.add(\"hidden\");\n window.removeEventListener(\"pointerdown\", this.#boundPointerDown);\n }\n get #isDropdownVisible() {\n return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n }\n _hideDropdownFromKeyboard() {\n if (this.#isMainColorPicker) {\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#editor?.unselect();\n return;\n }\n this.hideDropdown();\n this.#button.focus({\n preventScroll: true,\n focusVisible: this.#dropdownWasFromKeyboard\n });\n }\n updateColor(color) {\n if (this.#buttonSwatch) {\n this.#buttonSwatch.style.backgroundColor = color;\n }\n if (!this.#dropdown) {\n return;\n }\n const i = this.#uiManager.highlightColors.values();\n for (const child of this.#dropdown.children) {\n child.setAttribute(\"aria-selected\", i.next().value === color);\n }\n }\n destroy() {\n this.#button?.remove();\n this.#button = null;\n this.#buttonSwatch = null;\n this.#dropdown?.remove();\n this.#dropdown = null;\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/highlight.js\n\n\n\n\n\n\nclass HighlightEditor extends AnnotationEditor {\n #anchorNode = null;\n #anchorOffset = 0;\n #boxes;\n #clipPathId = null;\n #colorPicker = null;\n #focusOutlines = null;\n #focusNode = null;\n #focusOffset = 0;\n #highlightDiv = null;\n #highlightOutlines = null;\n #id = null;\n #isFreeHighlight = false;\n #lastPoint = null;\n #opacity;\n #outlineId = null;\n #text = \"\";\n #thickness;\n #methodOfCreation = \"\";\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 12;\n static _l10nPromise;\n static _type = \"highlight\";\n static _editorType = AnnotationEditorType.HIGHLIGHT;\n static _freeHighlightId = -1;\n static _freeHighlight = null;\n static _freeHighlightClipId = \"\";\n static get _keyboardManager() {\n const proto = HighlightEditor.prototype;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, {\n args: [0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, {\n args: [1]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, {\n args: [2]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, {\n args: [3]\n }]]));\n }\n constructor(params) {\n super({\n ...params,\n name: \"highlightEditor\"\n });\n this.color = params.color || HighlightEditor._defaultColor;\n this.#thickness = params.thickness || HighlightEditor._defaultThickness;\n this.#opacity = params.opacity || HighlightEditor._defaultOpacity;\n this.#boxes = params.boxes || null;\n this.#methodOfCreation = params.methodOfCreation || \"\";\n this.#text = params.text || \"\";\n this._isDraggable = false;\n if (params.highlightId > -1) {\n this.#isFreeHighlight = true;\n this.#createFreeOutlines(params);\n this.#addToDrawLayer();\n } else {\n this.#anchorNode = params.anchorNode;\n this.#anchorOffset = params.anchorOffset;\n this.#focusNode = params.focusNode;\n this.#focusOffset = params.focusOffset;\n this.#createOutlines();\n this.#addToDrawLayer();\n this.rotate(this.rotation);\n }\n }\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color),\n thickness: this.#thickness,\n methodOfCreation: this.#methodOfCreation\n };\n }\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color)\n };\n }\n static computeTelemetryFinalData(data) {\n return {\n numberOfColors: data.get(\"color\").size\n };\n }\n #createOutlines() {\n const outliner = new Outliner(this.#boxes, 0.001);\n this.#highlightOutlines = outliner.getOutlines();\n ({\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height\n } = this.#highlightOutlines.box);\n const outlinerForOutline = new Outliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === \"ltr\");\n this.#focusOutlines = outlinerForOutline.getOutlines();\n const {\n lastPoint\n } = this.#focusOutlines.box;\n this.#lastPoint = [(lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height];\n }\n #createFreeOutlines({\n highlightOutlines,\n highlightId,\n clipPathId\n }) {\n this.#highlightOutlines = highlightOutlines;\n const extraThickness = 1.5;\n this.#focusOutlines = highlightOutlines.getNewOutline(this.#thickness / 2 + extraThickness, 0.0025);\n if (highlightId >= 0) {\n this.#id = highlightId;\n this.#clipPathId = clipPathId;\n this.parent.drawLayer.finalizeLine(highlightId, highlightOutlines);\n this.#outlineId = this.parent.drawLayer.highlightOutline(this.#focusOutlines);\n } else if (this.parent) {\n const angle = this.parent.viewport.rotation;\n this.parent.drawLayer.updateLine(this.#id, highlightOutlines);\n this.parent.drawLayer.updateBox(this.#id, HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360));\n this.parent.drawLayer.updateLine(this.#outlineId, this.#focusOutlines);\n this.parent.drawLayer.updateBox(this.#outlineId, HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle));\n }\n const {\n x,\n y,\n width,\n height\n } = highlightOutlines.box;\n switch (this.rotation) {\n case 0:\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n break;\n case 90:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = y;\n this.y = 1 - x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n case 180:\n this.x = 1 - x;\n this.y = 1 - y;\n this.width = width;\n this.height = height;\n break;\n case 270:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = 1 - y;\n this.y = x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n }\n const {\n lastPoint\n } = this.#focusOutlines.box;\n this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n HighlightEditor._defaultColor ||= uiManager.highlightColors?.values().next().value || \"#fff066\";\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n HighlightEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n HighlightEditor._defaultThickness = value;\n break;\n }\n }\n translateInPage(x, y) {}\n get toolbarPosition() {\n return this.#lastPoint;\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n this.#updateThickness(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR, HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, HighlightEditor._defaultThickness]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, this.color || HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, this.#thickness || HighlightEditor._defaultThickness], [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight]];\n }\n #updateColor(color) {\n const setColor = col => {\n this.color = col;\n this.parent?.drawLayer.changeColor(this.#id, col);\n this.#colorPicker?.updateColor(col);\n };\n const savedColor = this.color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"color_changed\",\n color: this._uiManager.highlightColorNames.get(color)\n }, true);\n }\n #updateThickness(thickness) {\n const savedThickness = this.#thickness;\n const setThickness = th => {\n this.#thickness = th;\n this.#changeThickness(th);\n };\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"thickness_changed\",\n thickness\n }, true);\n }\n async addEditToolbar() {\n const toolbar = await super.addEditToolbar();\n if (!toolbar) {\n return null;\n }\n if (this._uiManager.highlightColors) {\n this.#colorPicker = new ColorPicker({\n editor: this\n });\n toolbar.addColorPicker(this.#colorPicker);\n }\n return toolbar;\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n fixAndSetPosition() {\n return super.fixAndSetPosition(this.#getRotation());\n }\n getBaseTranslation() {\n return [0, 0];\n }\n getRect(tx, ty) {\n return super.getRect(tx, ty, this.#getRotation());\n }\n onceAdded() {\n this.parent.addUndoableEditor(this);\n this.div.focus();\n }\n remove() {\n this.#cleanDrawLayer();\n this._reportTelemetry({\n action: \"deleted\"\n });\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this.#cleanDrawLayer();\n } else if (parent) {\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n this.show(this._isVisible);\n if (mustBeSelected) {\n this.select();\n }\n }\n #changeThickness(thickness) {\n if (!this.#isFreeHighlight) {\n return;\n }\n this.#createFreeOutlines({\n highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2)\n });\n this.fixAndSetPosition();\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n }\n #cleanDrawLayer() {\n if (this.#id === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this.#id);\n this.#id = null;\n this.parent.drawLayer.remove(this.#outlineId);\n this.#outlineId = null;\n }\n #addToDrawLayer(parent = this.parent) {\n if (this.#id !== null) {\n return;\n }\n ({\n id: this.#id,\n clipPathId: this.#clipPathId\n } = parent.drawLayer.highlight(this.#highlightOutlines, this.color, this.#opacity));\n this.#outlineId = parent.drawLayer.highlightOutline(this.#focusOutlines);\n if (this.#highlightDiv) {\n this.#highlightDiv.style.clipPath = this.#clipPathId;\n }\n }\n static #rotateBbox({\n x,\n y,\n width,\n height\n }, angle) {\n switch (angle) {\n case 90:\n return {\n x: 1 - y - height,\n y: x,\n width: height,\n height: width\n };\n case 180:\n return {\n x: 1 - x - width,\n y: 1 - y - height,\n width,\n height\n };\n case 270:\n return {\n x: y,\n y: 1 - x - width,\n width: height,\n height: width\n };\n }\n return {\n x,\n y,\n width,\n height\n };\n }\n rotate(angle) {\n const {\n drawLayer\n } = this.parent;\n let box;\n if (this.#isFreeHighlight) {\n angle = (angle - this.rotation + 360) % 360;\n box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n } else {\n box = HighlightEditor.#rotateBbox(this, angle);\n }\n drawLayer.rotate(this.#id, angle);\n drawLayer.rotate(this.#outlineId, angle);\n drawLayer.updateBox(this.#id, box);\n drawLayer.updateBox(this.#outlineId, HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle));\n }\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n if (this.#text) {\n div.setAttribute(\"aria-label\", this.#text);\n div.setAttribute(\"role\", \"mark\");\n }\n if (this.#isFreeHighlight) {\n div.classList.add(\"free\");\n } else {\n this.div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n signal: this._uiManager._signal\n });\n }\n const highlightDiv = this.#highlightDiv = document.createElement(\"div\");\n div.append(highlightDiv);\n highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n highlightDiv.className = \"internal\";\n highlightDiv.style.clipPath = this.#clipPathId;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n this.enableEditing();\n return div;\n }\n pointerover() {\n this.parent.drawLayer.addClass(this.#outlineId, \"hovered\");\n }\n pointerleave() {\n this.parent.drawLayer.removeClass(this.#outlineId, \"hovered\");\n }\n #keydown(event) {\n HighlightEditor._keyboardManager.exec(this, event);\n }\n _moveCaret(direction) {\n this.parent.unselect(this);\n switch (direction) {\n case 0:\n case 2:\n this.#setCaret(true);\n break;\n case 1:\n case 3:\n this.#setCaret(false);\n break;\n }\n }\n #setCaret(start) {\n if (!this.#anchorNode) {\n return;\n }\n const selection = window.getSelection();\n if (start) {\n selection.setPosition(this.#anchorNode, this.#anchorOffset);\n } else {\n selection.setPosition(this.#focusNode, this.#focusOffset);\n }\n }\n select() {\n super.select();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.removeClass(this.#outlineId, \"hovered\");\n this.parent?.drawLayer.addClass(this.#outlineId, \"selected\");\n }\n unselect() {\n super.unselect();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.removeClass(this.#outlineId, \"selected\");\n if (!this.#isFreeHighlight) {\n this.#setCaret(false);\n }\n }\n get _mustFixPosition() {\n return !this.#isFreeHighlight;\n }\n show(visible = this._isVisible) {\n super.show(visible);\n if (this.parent) {\n this.parent.drawLayer.show(this.#id, visible);\n this.parent.drawLayer.show(this.#outlineId, visible);\n }\n }\n #getRotation() {\n return this.#isFreeHighlight ? this.rotation : 0;\n }\n #serializeBoxes() {\n if (this.#isFreeHighlight) {\n return null;\n }\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const boxes = this.#boxes;\n const quadPoints = new Float32Array(boxes.length * 8);\n let i = 0;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const sx = x * pageWidth + pageX;\n const sy = (1 - y - height) * pageHeight + pageY;\n quadPoints[i] = quadPoints[i + 4] = sx;\n quadPoints[i + 1] = quadPoints[i + 3] = sy;\n quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n quadPoints[i + 5] = quadPoints[i + 7] = sy + height * pageHeight;\n i += 8;\n }\n return quadPoints;\n }\n #serializeOutlines(rect) {\n return this.#highlightOutlines.serialize(rect, this.#getRotation());\n }\n static startHighlighting(parent, isLTR, {\n target: textLayer,\n x,\n y\n }) {\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n const ac = new AbortController();\n const signal = parent.combinedSignal(ac);\n const pointerDown = e => {\n e.preventDefault();\n e.stopPropagation();\n };\n const pointerUpCallback = e => {\n ac.abort();\n this.#endHighlight(parent, e);\n };\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerdown\", pointerDown, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n textLayer.addEventListener(\"pointermove\", this.#highlightMove.bind(this, parent), {\n signal\n });\n this._freeHighlight = new FreeOutliner({\n x,\n y\n }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness / 2, isLTR, 0.001);\n ({\n id: this._freeHighlightId,\n clipPathId: this._freeHighlightClipId\n } = parent.drawLayer.highlight(this._freeHighlight, this._defaultColor, this._defaultOpacity, true));\n }\n static #highlightMove(parent, event) {\n if (this._freeHighlight.add(event)) {\n parent.drawLayer.updatePath(this._freeHighlightId, this._freeHighlight);\n }\n }\n static #endHighlight(parent, event) {\n if (!this._freeHighlight.isEmpty()) {\n parent.createAndAddNewEditor(event, false, {\n highlightId: this._freeHighlightId,\n highlightOutlines: this._freeHighlight.getOutlines(),\n clipPathId: this._freeHighlightClipId,\n methodOfCreation: \"main_toolbar\"\n });\n } else {\n parent.drawLayer.removeFreeHighlight(this._freeHighlightId);\n }\n this._freeHighlightId = -1;\n this._freeHighlight = null;\n this._freeHighlightClipId = \"\";\n }\n static deserialize(data, parent, uiManager) {\n const editor = super.deserialize(data, parent, uiManager);\n const {\n rect: [blX, blY, trX, trY],\n color,\n quadPoints\n } = data;\n editor.color = Util.makeHexColor(...color);\n editor.#opacity = data.opacity;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n editor.width = (trX - blX) / pageWidth;\n editor.height = (trY - blY) / pageHeight;\n const boxes = editor.#boxes = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n boxes.push({\n x: (quadPoints[4] - trX) / pageWidth,\n y: (trY - (1 - quadPoints[i + 5])) / pageHeight,\n width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n height: (quadPoints[i + 5] - quadPoints[i + 1]) / pageHeight\n });\n }\n editor.#createOutlines();\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty() || isForCopying) {\n return null;\n }\n const rect = this.getRect(0, 0);\n const color = AnnotationEditor._colorManager.convert(this.color);\n return {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color,\n opacity: this.#opacity,\n thickness: this.#thickness,\n quadPoints: this.#serializeBoxes(),\n outlines: this.#serializeOutlines(rect),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.#getRotation(),\n structTreeParentId: this._structTreeParentId\n };\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/ink.js\n\n\n\n\n\nclass InkEditor extends AnnotationEditor {\n #baseHeight = 0;\n #baseWidth = 0;\n #canvasContextMenuTimeoutId = null;\n #currentPath2D = new Path2D();\n #disableEditing = false;\n #drawingAC = null;\n #hasSomethingToDraw = false;\n #isCanvasInitialized = false;\n #observer = null;\n #pointerdownAC = null;\n #realWidth = 0;\n #realHeight = 0;\n #requestFrameCallback = null;\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 1;\n static _type = \"ink\";\n static _editorType = AnnotationEditorType.INK;\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this.color = params.color || null;\n this.thickness = params.thickness || null;\n this.opacity = params.opacity || null;\n this.paths = [];\n this.bezierPath2D = [];\n this.allRawPaths = [];\n this.currentPath = [];\n this.scaleFactor = 1;\n this.translationX = this.translationY = 0;\n this.x = 0;\n this.y = 0;\n this._willKeepAspectRatio = true;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.INK_THICKNESS:\n InkEditor._defaultThickness = value;\n break;\n case AnnotationEditorParamsType.INK_COLOR:\n InkEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.INK_OPACITY:\n InkEditor._defaultOpacity = value / 100;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.INK_THICKNESS:\n this.#updateThickness(value);\n break;\n case AnnotationEditorParamsType.INK_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.INK_OPACITY:\n this.#updateOpacity(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || AnnotationEditor._defaultLineColor], [AnnotationEditorParamsType.INK_OPACITY, Math.round(InkEditor._defaultOpacity * 100)]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || AnnotationEditor._defaultLineColor], [AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity))]];\n }\n #updateThickness(thickness) {\n const setThickness = th => {\n this.thickness = th;\n this.#fitToContent();\n };\n const savedThickness = this.thickness;\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateColor(color) {\n const setColor = col => {\n this.color = col;\n this.#redraw();\n };\n const savedColor = this.color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateOpacity(opacity) {\n const setOpacity = op => {\n this.opacity = op;\n this.#redraw();\n };\n opacity /= 100;\n const savedOpacity = this.opacity;\n this.addCommands({\n cmd: setOpacity.bind(this, opacity),\n undo: setOpacity.bind(this, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_OPACITY,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n this.#setCanvasDims();\n }\n this.#fitToContent();\n }\n remove() {\n if (this.canvas === null) {\n return;\n }\n if (!this.isEmpty()) {\n this.commit();\n }\n this.canvas.width = this.canvas.height = 0;\n this.canvas.remove();\n this.canvas = null;\n if (this.#canvasContextMenuTimeoutId) {\n clearTimeout(this.#canvasContextMenuTimeoutId);\n this.#canvasContextMenuTimeoutId = null;\n }\n this.#observer?.disconnect();\n this.#observer = null;\n super.remove();\n }\n setParent(parent) {\n if (!this.parent && parent) {\n this._uiManager.removeShouldRescale(this);\n } else if (this.parent && parent === null) {\n this._uiManager.addShouldRescale(this);\n }\n super.setParent(parent);\n }\n onScaleChanging() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const width = this.width * parentWidth;\n const height = this.height * parentHeight;\n this.setDimensions(width, height);\n }\n enableEditMode() {\n if (this.#disableEditing || this.canvas === null) {\n return;\n }\n super.enableEditMode();\n this._isDraggable = false;\n this.#addPointerdownListener();\n }\n disableEditMode() {\n if (!this.isInEditMode() || this.canvas === null) {\n return;\n }\n super.disableEditMode();\n this._isDraggable = !this.isEmpty();\n this.div.classList.remove(\"editing\");\n this.#removePointerdownListener();\n }\n onceAdded() {\n this._isDraggable = !this.isEmpty();\n }\n isEmpty() {\n return this.paths.length === 0 || this.paths.length === 1 && this.paths[0].length === 0;\n }\n #getInitialBBox() {\n const {\n parentRotation,\n parentDimensions: [width, height]\n } = this;\n switch (parentRotation) {\n case 90:\n return [0, height, height, width];\n case 180:\n return [width, height, width, height];\n case 270:\n return [width, 0, height, width];\n default:\n return [0, 0, width, height];\n }\n }\n #setStroke() {\n const {\n ctx,\n color,\n opacity,\n thickness,\n parentScale,\n scaleFactor\n } = this;\n ctx.lineWidth = thickness * parentScale / scaleFactor;\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n ctx.miterLimit = 10;\n ctx.strokeStyle = `${color}${opacityToHex(opacity)}`;\n }\n #startDrawing(x, y) {\n this.canvas.addEventListener(\"contextmenu\", noContextMenu, {\n signal: this._uiManager._signal\n });\n this.#removePointerdownListener();\n this.#drawingAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#drawingAC);\n this.canvas.addEventListener(\"pointerleave\", this.canvasPointerleave.bind(this), {\n signal\n });\n this.canvas.addEventListener(\"pointermove\", this.canvasPointermove.bind(this), {\n signal\n });\n this.canvas.addEventListener(\"pointerup\", this.canvasPointerup.bind(this), {\n signal\n });\n this.isEditing = true;\n if (!this.#isCanvasInitialized) {\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.thickness ||= InkEditor._defaultThickness;\n this.color ||= InkEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.opacity ??= InkEditor._defaultOpacity;\n }\n this.currentPath.push([x, y]);\n this.#hasSomethingToDraw = false;\n this.#setStroke();\n this.#requestFrameCallback = () => {\n this.#drawPoints();\n if (this.#requestFrameCallback) {\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n };\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n #draw(x, y) {\n const [lastX, lastY] = this.currentPath.at(-1);\n if (this.currentPath.length > 1 && x === lastX && y === lastY) {\n return;\n }\n const currentPath = this.currentPath;\n let path2D = this.#currentPath2D;\n currentPath.push([x, y]);\n this.#hasSomethingToDraw = true;\n if (currentPath.length <= 2) {\n path2D.moveTo(...currentPath[0]);\n path2D.lineTo(x, y);\n return;\n }\n if (currentPath.length === 3) {\n this.#currentPath2D = path2D = new Path2D();\n path2D.moveTo(...currentPath[0]);\n }\n this.#makeBezierCurve(path2D, ...currentPath.at(-3), ...currentPath.at(-2), x, y);\n }\n #endPath() {\n if (this.currentPath.length === 0) {\n return;\n }\n const lastPoint = this.currentPath.at(-1);\n this.#currentPath2D.lineTo(...lastPoint);\n }\n #stopDrawing(x, y) {\n this.#requestFrameCallback = null;\n x = Math.min(Math.max(x, 0), this.canvas.width);\n y = Math.min(Math.max(y, 0), this.canvas.height);\n this.#draw(x, y);\n this.#endPath();\n let bezier;\n if (this.currentPath.length !== 1) {\n bezier = this.#generateBezierPoints();\n } else {\n const xy = [x, y];\n bezier = [[xy, xy.slice(), xy.slice(), xy]];\n }\n const path2D = this.#currentPath2D;\n const currentPath = this.currentPath;\n this.currentPath = [];\n this.#currentPath2D = new Path2D();\n const cmd = () => {\n this.allRawPaths.push(currentPath);\n this.paths.push(bezier);\n this.bezierPath2D.push(path2D);\n this._uiManager.rebuild(this);\n };\n const undo = () => {\n this.allRawPaths.pop();\n this.paths.pop();\n this.bezierPath2D.pop();\n if (this.paths.length === 0) {\n this.remove();\n } else {\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n this.#fitToContent();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n #drawPoints() {\n if (!this.#hasSomethingToDraw) {\n return;\n }\n this.#hasSomethingToDraw = false;\n const thickness = Math.ceil(this.thickness * this.parentScale);\n const lastPoints = this.currentPath.slice(-3);\n const x = lastPoints.map(xy => xy[0]);\n const y = lastPoints.map(xy => xy[1]);\n const xMin = Math.min(...x) - thickness;\n const xMax = Math.max(...x) + thickness;\n const yMin = Math.min(...y) - thickness;\n const yMax = Math.max(...y) + thickness;\n const {\n ctx\n } = this;\n ctx.save();\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n ctx.stroke(this.#currentPath2D);\n ctx.restore();\n }\n #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) {\n const prevX = (x0 + x1) / 2;\n const prevY = (y0 + y1) / 2;\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n path2D.bezierCurveTo(prevX + 2 * (x1 - prevX) / 3, prevY + 2 * (y1 - prevY) / 3, x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3, x3, y3);\n }\n #generateBezierPoints() {\n const path = this.currentPath;\n if (path.length <= 2) {\n return [[path[0], path[0], path.at(-1), path.at(-1)]];\n }\n const bezierPoints = [];\n let i;\n let [x0, y0] = path[0];\n for (i = 1; i < path.length - 2; i++) {\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];\n const control2 = [x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3];\n bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]);\n [x0, y0] = [x3, y3];\n }\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];\n const control2 = [x2 + 2 * (x1 - x2) / 3, y2 + 2 * (y1 - y2) / 3];\n bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]);\n return bezierPoints;\n }\n #redraw() {\n if (this.isEmpty()) {\n this.#updateTransform();\n return;\n }\n this.#setStroke();\n const {\n canvas,\n ctx\n } = this;\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n this.#updateTransform();\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n }\n commit() {\n if (this.#disableEditing) {\n return;\n }\n super.commit();\n this.isEditing = false;\n this.disableEditMode();\n this.setInForeground();\n this.#disableEditing = true;\n this.div.classList.add(\"disabled\");\n this.#fitToContent(true);\n this.select();\n this.parent.addInkEditorIfNeeded(true);\n this.moveInDOM();\n this.div.focus({\n preventScroll: true\n });\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n this.enableEditMode();\n }\n #addPointerdownListener() {\n if (this.#pointerdownAC) {\n return;\n }\n this.#pointerdownAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#pointerdownAC);\n this.canvas.addEventListener(\"pointerdown\", this.canvasPointerdown.bind(this), {\n signal\n });\n }\n #removePointerdownListener() {\n this.pointerdownAC?.abort();\n this.pointerdownAC = null;\n }\n canvasPointerdown(event) {\n if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {\n return;\n }\n this.setInForeground();\n event.preventDefault();\n if (!this.div.contains(document.activeElement)) {\n this.div.focus({\n preventScroll: true\n });\n }\n this.#startDrawing(event.offsetX, event.offsetY);\n }\n canvasPointermove(event) {\n event.preventDefault();\n this.#draw(event.offsetX, event.offsetY);\n }\n canvasPointerup(event) {\n event.preventDefault();\n this.#endDrawing(event);\n }\n canvasPointerleave(event) {\n this.#endDrawing(event);\n }\n #endDrawing(event) {\n this.#drawingAC?.abort();\n this.#drawingAC = null;\n this.#addPointerdownListener();\n if (this.#canvasContextMenuTimeoutId) {\n clearTimeout(this.#canvasContextMenuTimeoutId);\n }\n this.#canvasContextMenuTimeoutId = setTimeout(() => {\n this.#canvasContextMenuTimeoutId = null;\n this.canvas.removeEventListener(\"contextmenu\", noContextMenu);\n }, 10);\n this.#stopDrawing(event.offsetX, event.offsetY);\n this.addToAnnotationStorage();\n this.setInBackground();\n }\n #createCanvas() {\n this.canvas = document.createElement(\"canvas\");\n this.canvas.width = this.canvas.height = 0;\n this.canvas.className = \"inkEditorCanvas\";\n this.canvas.setAttribute(\"data-l10n-id\", \"pdfjs-ink-canvas\");\n this.div.append(this.canvas);\n this.ctx = this.canvas.getContext(\"2d\");\n }\n #createObserver() {\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n this._uiManager._signal.addEventListener(\"abort\", () => {\n this.#observer?.disconnect();\n this.#observer = null;\n }, {\n once: true\n });\n }\n get isResizable() {\n return !this.isEmpty() && this.#disableEditing;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.setAttribute(\"data-l10n-id\", \"pdfjs-ink\");\n const [x, y, w, h] = this.#getInitialBBox();\n this.setAt(x, y, 0, 0);\n this.setDims(w, h);\n this.#createCanvas();\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAspectRatio(this.width * parentWidth, this.height * parentHeight);\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n this.#redraw();\n this.div.classList.add(\"disabled\");\n } else {\n this.div.classList.add(\"editing\");\n this.enableEditMode();\n }\n this.#createObserver();\n return this.div;\n }\n #setCanvasDims() {\n if (!this.#isCanvasInitialized) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.canvas.width = Math.ceil(this.width * parentWidth);\n this.canvas.height = Math.ceil(this.height * parentHeight);\n this.#updateTransform();\n }\n setDimensions(width, height) {\n const roundedWidth = Math.round(width);\n const roundedHeight = Math.round(height);\n if (this.#realWidth === roundedWidth && this.#realHeight === roundedHeight) {\n return;\n }\n this.#realWidth = roundedWidth;\n this.#realHeight = roundedHeight;\n this.canvas.style.visibility = \"hidden\";\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.fixAndSetPosition();\n if (this.#disableEditing) {\n this.#setScaleFactor(width, height);\n }\n this.#setCanvasDims();\n this.#redraw();\n this.canvas.style.visibility = \"visible\";\n this.fixDims();\n }\n #setScaleFactor(width, height) {\n const padding = this.#getPadding();\n const scaleFactorW = (width - padding) / this.#baseWidth;\n const scaleFactorH = (height - padding) / this.#baseHeight;\n this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);\n }\n #updateTransform() {\n const padding = this.#getPadding() / 2;\n this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + padding, this.translationY * this.scaleFactor + padding);\n }\n static #buildPath2D(bezier) {\n const path2D = new Path2D();\n for (let i = 0, ii = bezier.length; i < ii; i++) {\n const [first, control1, control2, second] = bezier[i];\n if (i === 0) {\n path2D.moveTo(...first);\n }\n path2D.bezierCurveTo(control1[0], control1[1], control2[0], control2[1], second[0], second[1]);\n }\n return path2D;\n }\n static #toPDFCoordinates(points, rect, rotation) {\n const [blX, blY, trX, trY] = rect;\n switch (rotation) {\n case 0:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] += blX;\n points[i + 1] = trY - points[i + 1];\n }\n break;\n case 90:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = points[i + 1] + blX;\n points[i + 1] = x + blY;\n }\n break;\n case 180:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = trX - points[i];\n points[i + 1] += blY;\n }\n break;\n case 270:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = trX - points[i + 1];\n points[i + 1] = trY - x;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return points;\n }\n static #fromPDFCoordinates(points, rect, rotation) {\n const [blX, blY, trX, trY] = rect;\n switch (rotation) {\n case 0:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] -= blX;\n points[i + 1] = trY - points[i + 1];\n }\n break;\n case 90:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = points[i + 1] - blY;\n points[i + 1] = x - blX;\n }\n break;\n case 180:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = trX - points[i];\n points[i + 1] -= blY;\n }\n break;\n case 270:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = trY - points[i + 1];\n points[i + 1] = trX - x;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return points;\n }\n #serializePaths(s, tx, ty, rect) {\n const paths = [];\n const padding = this.thickness / 2;\n const shiftX = s * tx + padding;\n const shiftY = s * ty + padding;\n for (const bezier of this.paths) {\n const buffer = [];\n const points = [];\n for (let j = 0, jj = bezier.length; j < jj; j++) {\n const [first, control1, control2, second] = bezier[j];\n if (first[0] === second[0] && first[1] === second[1] && jj === 1) {\n const p0 = s * first[0] + shiftX;\n const p1 = s * first[1] + shiftY;\n buffer.push(p0, p1);\n points.push(p0, p1);\n break;\n }\n const p10 = s * first[0] + shiftX;\n const p11 = s * first[1] + shiftY;\n const p20 = s * control1[0] + shiftX;\n const p21 = s * control1[1] + shiftY;\n const p30 = s * control2[0] + shiftX;\n const p31 = s * control2[1] + shiftY;\n const p40 = s * second[0] + shiftX;\n const p41 = s * second[1] + shiftY;\n if (j === 0) {\n buffer.push(p10, p11);\n points.push(p10, p11);\n }\n buffer.push(p20, p21, p30, p31, p40, p41);\n points.push(p20, p21);\n if (j === jj - 1) {\n points.push(p40, p41);\n }\n }\n paths.push({\n bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation),\n points: InkEditor.#toPDFCoordinates(points, rect, this.rotation)\n });\n }\n return paths;\n }\n #getBbox() {\n let xMin = Infinity;\n let xMax = -Infinity;\n let yMin = Infinity;\n let yMax = -Infinity;\n for (const path of this.paths) {\n for (const [first, control1, control2, second] of path) {\n const bbox = Util.bezierBoundingBox(...first, ...control1, ...control2, ...second);\n xMin = Math.min(xMin, bbox[0]);\n yMin = Math.min(yMin, bbox[1]);\n xMax = Math.max(xMax, bbox[2]);\n yMax = Math.max(yMax, bbox[3]);\n }\n }\n return [xMin, yMin, xMax, yMax];\n }\n #getPadding() {\n return this.#disableEditing ? Math.ceil(this.thickness * this.parentScale) : 0;\n }\n #fitToContent(firstTime = false) {\n if (this.isEmpty()) {\n return;\n }\n if (!this.#disableEditing) {\n this.#redraw();\n return;\n }\n const bbox = this.#getBbox();\n const padding = this.#getPadding();\n this.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n this.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);\n const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.setAspectRatio(width, height);\n const prevTranslationX = this.translationX;\n const prevTranslationY = this.translationY;\n this.translationX = -bbox[0];\n this.translationY = -bbox[1];\n this.#setCanvasDims();\n this.#redraw();\n this.#realWidth = width;\n this.#realHeight = height;\n this.setDims(width, height);\n const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0;\n this.translate(prevTranslationX - this.translationX - unscaledPadding, prevTranslationY - this.translationY - unscaledPadding);\n }\n static deserialize(data, parent, uiManager) {\n if (data instanceof InkAnnotationElement) {\n return null;\n }\n const editor = super.deserialize(data, parent, uiManager);\n editor.thickness = data.thickness;\n editor.color = Util.makeHexColor(...data.color);\n editor.opacity = data.opacity;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const width = editor.width * pageWidth;\n const height = editor.height * pageHeight;\n const scaleFactor = editor.parentScale;\n const padding = data.thickness / 2;\n editor.#disableEditing = true;\n editor.#realWidth = Math.round(width);\n editor.#realHeight = Math.round(height);\n const {\n paths,\n rect,\n rotation\n } = data;\n for (let {\n bezier\n } of paths) {\n bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation);\n const path = [];\n editor.paths.push(path);\n let p0 = scaleFactor * (bezier[0] - padding);\n let p1 = scaleFactor * (bezier[1] - padding);\n for (let i = 2, ii = bezier.length; i < ii; i += 6) {\n const p10 = scaleFactor * (bezier[i] - padding);\n const p11 = scaleFactor * (bezier[i + 1] - padding);\n const p20 = scaleFactor * (bezier[i + 2] - padding);\n const p21 = scaleFactor * (bezier[i + 3] - padding);\n const p30 = scaleFactor * (bezier[i + 4] - padding);\n const p31 = scaleFactor * (bezier[i + 5] - padding);\n path.push([[p0, p1], [p10, p11], [p20, p21], [p30, p31]]);\n p0 = p30;\n p1 = p31;\n }\n const path2D = this.#buildPath2D(path);\n editor.bezierPath2D.push(path2D);\n }\n const bbox = editor.#getBbox();\n editor.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n editor.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n editor.#setScaleFactor(width, height);\n return editor;\n }\n serialize() {\n if (this.isEmpty()) {\n return null;\n }\n const rect = this.getRect(0, 0);\n const color = AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n return {\n annotationType: AnnotationEditorType.INK,\n color,\n thickness: this.thickness,\n opacity: this.opacity,\n paths: this.#serializePaths(this.scaleFactor / this.parentScale, this.translationX, this.translationY, rect),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/stamp.js\n\n\n\n\nclass StampEditor extends AnnotationEditor {\n #bitmap = null;\n #bitmapId = null;\n #bitmapPromise = null;\n #bitmapUrl = null;\n #bitmapFile = null;\n #bitmapFileName = \"\";\n #canvas = null;\n #observer = null;\n #resizeTimeoutId = null;\n #isSvg = false;\n #hasBeenAddedInUndoStack = false;\n static _type = \"stamp\";\n static _editorType = AnnotationEditorType.STAMP;\n constructor(params) {\n super({\n ...params,\n name: \"stampEditor\"\n });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static get supportedTypes() {\n const types = [\"apng\", \"avif\", \"bmp\", \"gif\", \"jpeg\", \"png\", \"svg+xml\", \"webp\", \"x-icon\"];\n return shadow(this, \"supportedTypes\", types.map(type => `image/${type}`));\n }\n static get supportedTypesStr() {\n return shadow(this, \"supportedTypesStr\", this.supportedTypes.join(\",\"));\n }\n static isHandlingMimeForPasting(mime) {\n return this.supportedTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor(AnnotationEditorType.STAMP, {\n bitmapFile: item.getAsFile()\n });\n }\n altTextFinish() {\n if (this._uiManager.useNewAltTextFlow) {\n this.div.hidden = false;\n }\n super.altTextFinish();\n }\n get telemetryFinalData() {\n return {\n type: \"stamp\",\n hasAltText: !!this.altTextData?.altText\n };\n }\n static computeTelemetryFinalData(data) {\n const hasAltTextStats = data.get(\"hasAltText\");\n return {\n hasAltText: hasAltTextStats.get(true) ?? 0,\n hasNoAltText: hasAltTextStats.get(false) ?? 0\n };\n }\n #getBitmapFetched(data, fromId = false) {\n if (!data) {\n this.remove();\n return;\n }\n this.#bitmap = data.bitmap;\n if (!fromId) {\n this.#bitmapId = data.id;\n this.#isSvg = data.isSvg;\n }\n if (data.file) {\n this.#bitmapFileName = data.file.name;\n }\n this.#createCanvas();\n }\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (!this.#canvas) {\n return;\n }\n if (this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._editToolbar.hide();\n this._uiManager.editAltText(this, true);\n return;\n }\n if (!this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._reportTelemetry({\n action: \"pdfjs.image.image_added\",\n data: {\n alt_text_modal: false,\n alt_text_type: \"empty\"\n }\n });\n try {\n this.mlGuessAltText();\n } catch {}\n }\n this.div.focus();\n }\n async mlGuessAltText(imageData = null, updateAltTextData = true) {\n if (this.hasAltTextData()) {\n return null;\n }\n const {\n mlManager\n } = this._uiManager;\n if (!mlManager) {\n throw new Error(\"No ML.\");\n }\n if (!(await mlManager.isEnabledFor(\"altText\"))) {\n throw new Error(\"ML isn't enabled for alt text.\");\n }\n const {\n data,\n width,\n height\n } = imageData || this.copyCanvas(null, true).imageData;\n const response = await mlManager.guess({\n name: \"altText\",\n request: {\n data,\n width,\n height,\n channels: data.length / (width * height)\n }\n });\n if (!response) {\n throw new Error(\"No response from the AI service.\");\n }\n if (response.error) {\n throw new Error(\"Error from the AI service.\");\n }\n if (response.cancel) {\n return null;\n }\n if (!response.output) {\n throw new Error(\"No valid response from the AI service.\");\n }\n const altText = response.output;\n await this.setGuessedAltText(altText);\n if (updateAltTextData && !this.hasAltTextData()) {\n this.altTextData = {\n alt: altText,\n decorative: false\n };\n }\n return altText;\n }\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapUrl) {\n const url = this.#bitmapUrl;\n this.#bitmapUrl = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapFile) {\n const file = this.#bitmapFile;\n this.#bitmapFile = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = StampEditor.supportedTypesStr;\n const signal = this._uiManager._signal;\n this.#bitmapPromise = new Promise(resolve => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n this._reportTelemetry({\n action: \"pdfjs.image.image_selected\",\n data: {\n alt_text_modal: this._uiManager.useNewAltTextFlow\n }\n });\n this.#getBitmapFetched(data);\n }\n resolve();\n }, {\n signal\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n }, {\n signal\n });\n }).finally(() => this.#getBitmapDone());\n input.click();\n }\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n this.#observer?.disconnect();\n this.#observer = null;\n if (this.#resizeTimeoutId) {\n clearTimeout(this.#resizeTimeoutId);\n this.#resizeTimeoutId = null;\n }\n }\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (this.#bitmapId && this.#canvas === null) {\n this.#getBitmap();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n onceAdded() {\n this._isDraggable = true;\n this.div.focus();\n }\n isEmpty() {\n return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId);\n }\n get isResizable() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n this.addAltTextButton();\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n }\n return this.div;\n }\n #createCanvas() {\n const {\n div\n } = this;\n let {\n width,\n height\n } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n width *= factor;\n height *= factor;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(width * parentWidth / pageWidth, height * parentHeight / pageHeight);\n this._uiManager.enableWaiting(false);\n const canvas = this.#canvas = document.createElement(\"canvas\");\n div.append(canvas);\n if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow) {\n div.hidden = false;\n }\n this.#drawBitmap(width, height);\n this.#createObserver();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n this._reportTelemetry({\n action: \"inserted_image\"\n });\n if (this.#bitmapFileName) {\n canvas.setAttribute(\"aria-label\", this.#bitmapFileName);\n }\n }\n copyCanvas(maxDimension, createImageData = false) {\n if (!maxDimension) {\n maxDimension = 224;\n }\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n const canvas = document.createElement(\"canvas\");\n let bitmap = this.#bitmap;\n let width = bitmapWidth,\n height = bitmapHeight;\n if (bitmapWidth > maxDimension || bitmapHeight > maxDimension) {\n const ratio = Math.min(maxDimension / bitmapWidth, maxDimension / bitmapHeight);\n width = Math.floor(bitmapWidth * ratio);\n height = Math.floor(bitmapHeight * ratio);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(width, height);\n }\n }\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n let white = \"white\",\n black = \"#cfcfd8\";\n if (this._uiManager.hcmFilter !== \"none\") {\n black = \"black\";\n } else if (window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches) {\n white = \"#8f8f9d\";\n black = \"#42414d\";\n }\n const boxDim = 15;\n const pattern = new OffscreenCanvas(boxDim * 2, boxDim * 2);\n const patternCtx = pattern.getContext(\"2d\");\n patternCtx.fillStyle = white;\n patternCtx.fillRect(0, 0, boxDim * 2, boxDim * 2);\n patternCtx.fillStyle = black;\n patternCtx.fillRect(0, 0, boxDim, boxDim);\n patternCtx.fillRect(boxDim, boxDim, boxDim, boxDim);\n ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n ctx.fillRect(0, 0, width, height);\n if (createImageData) {\n const offscreen = new OffscreenCanvas(width, height);\n const offscreenCtx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n offscreenCtx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, width, height);\n const data = offscreenCtx.getImageData(0, 0, width, height).data;\n ctx.drawImage(offscreen, 0, 0);\n return {\n canvas,\n imageData: {\n width,\n height,\n data\n }\n };\n }\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, width, height);\n return {\n canvas,\n imageData: null\n };\n }\n #setDimensions(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.setDims(width, height);\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap(width, height);\n }, TIME_TO_WAIT);\n }\n #scaleBitmap(width, height) {\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n if (newWidth > 2 * width) {\n newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap = offscreen.transferToImageBitmap();\n }\n return bitmap;\n }\n #drawBitmap(width, height) {\n width = Math.ceil(width);\n height = Math.ceil(height);\n const canvas = this.#canvas;\n if (!canvas || canvas.width === width && canvas.height === height) {\n return;\n }\n canvas.width = width;\n canvas.height = height;\n const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(width, height);\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, width, height);\n }\n getImageForAltText() {\n return this.#canvas;\n }\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n const canvas = document.createElement(\"canvas\");\n ({\n width: canvas.width,\n height: canvas.height\n } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n return canvas.toDataURL();\n }\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n const width = Math.round(this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS);\n const height = Math.round(this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS);\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n return offscreen.transferToImageBitmap();\n }\n return structuredClone(this.#bitmap);\n }\n #createObserver() {\n if (!this._uiManager._signal) {\n return;\n }\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.#setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n this._uiManager._signal.addEventListener(\"abort\", () => {\n this.#observer?.disconnect();\n this.#observer = null;\n }, {\n once: true\n });\n }\n static deserialize(data, parent, uiManager) {\n if (data instanceof StampAnnotationElement) {\n return null;\n }\n const editor = super.deserialize(data, parent, uiManager);\n const {\n rect,\n bitmapUrl,\n bitmapId,\n isSvg,\n accessibilityData\n } = data;\n if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n return editor;\n }\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\n const serialized = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId: this.#bitmapId,\n pageIndex: this.pageIndex,\n rect: this.getRect(0, 0),\n rotation: this.rotation,\n isSvg: this.#isSvg,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.serializeAltText(true);\n return serialized;\n }\n const {\n decorative,\n altText\n } = this.serializeAltText(false);\n if (!decorative && altText) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: altText\n };\n }\n if (context === null) {\n return serialized;\n }\n context.stamps ||= new Map();\n const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n if (!context.stamps.has(this.#bitmapId)) {\n context.stamps.set(this.#bitmapId, {\n area,\n serialized\n });\n serialized.bitmap = this.#serializeBitmap(false);\n } else if (this.#isSvg) {\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(false);\n }\n }\n return serialized;\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/annotation_editor_layer.js\n\n\n\n\n\n\n\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #annotationLayer = null;\n #clickAC = null;\n #editorFocusTimeoutId = null;\n #editors = new Map();\n #hadPointerDown = false;\n #isCleaningUp = false;\n #isDisabling = false;\n #textLayer = null;\n #textSelectionAC = null;\n #uiManager;\n static _initialized = false;\n static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor].map(type => [type._editorType, type]));\n constructor({\n uiManager,\n pageIndex,\n div,\n accessibilityManager,\n annotationLayer,\n drawLayer,\n textLayer,\n viewport,\n l10n\n }) {\n const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n for (const editorType of editorTypes) {\n editorType.initialize(l10n, uiManager);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n this.#uiManager = uiManager;\n this.pageIndex = pageIndex;\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationLayer = annotationLayer;\n this.viewport = viewport;\n this.#textLayer = textLayer;\n this.drawLayer = drawLayer;\n this.#uiManager.addLayer(this);\n }\n get isEmpty() {\n return this.#editors.size === 0;\n }\n get isInvisible() {\n return this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE;\n }\n updateToolbar(mode) {\n this.#uiManager.updateToolbar(mode);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n switch (mode) {\n case AnnotationEditorType.NONE:\n this.disableTextSelection();\n this.togglePointerEvents(false);\n this.toggleAnnotationLayerPointerEvents(true);\n this.disableClick();\n return;\n case AnnotationEditorType.INK:\n this.addInkEditorIfNeeded(false);\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.disableClick();\n break;\n case AnnotationEditorType.HIGHLIGHT:\n this.enableTextSelection();\n this.togglePointerEvents(false);\n this.disableClick();\n break;\n default:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n }\n this.toggleAnnotationLayerPointerEvents(false);\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n }\n this.div.hidden = false;\n }\n hasTextLayer(textLayer) {\n return textLayer === this.#textLayer?.div;\n }\n addInkEditorIfNeeded(isCommitting) {\n if (this.#uiManager.getMode() !== AnnotationEditorType.INK) {\n return;\n }\n if (!isCommitting) {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.setInBackground();\n return;\n }\n }\n }\n const editor = this.createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n }, false);\n editor.setInBackground();\n }\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n toggleDrawing(enabled = false) {\n this.div.classList.toggle(\"drawing\", !enabled);\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n toggleAnnotationLayerPointerEvents(enabled = false) {\n this.#annotationLayer?.div.classList.toggle(\"disabled\", !enabled);\n }\n enable() {\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n const annotationElementIds = new Set();\n for (const editor of this.#editors.values()) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n this.#uiManager.removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n if (!this.#annotationLayer) {\n return;\n }\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n }\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n const changedAnnotations = new Map();\n const resetAnnotations = new Map();\n for (const editor of this.#editors.values()) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\n continue;\n }\n if (editor.serialize() !== null) {\n changedAnnotations.set(editor.annotationElementId, editor);\n continue;\n } else {\n resetAnnotations.set(editor.annotationElementId, editor);\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n if (this.#annotationLayer) {\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const {\n id\n } = editable.data;\n if (this.#uiManager.isDeletedAnnotationElement(id)) {\n continue;\n }\n let editor = resetAnnotations.get(id);\n if (editor) {\n editor.resetAnnotationElement(editable);\n editor.show(false);\n editable.show();\n continue;\n }\n editor = changedAnnotations.get(id);\n if (editor) {\n this.#uiManager.addChangedExistingAnnotation(editor);\n editor.renderAnnotationElement(editable);\n editor.show(false);\n }\n editable.show();\n }\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.remove(`${editorType._type}Editing`);\n }\n this.disableTextSelection();\n this.toggleAnnotationLayerPointerEvents(true);\n this.#isDisabling = false;\n }\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n this.#uiManager.setActiveEditor(editor);\n }\n enableTextSelection() {\n this.div.tabIndex = -1;\n if (this.#textLayer?.div && !this.#textSelectionAC) {\n this.#textSelectionAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", this.#textLayerPointerDown.bind(this), {\n signal\n });\n this.#textLayer.div.classList.add(\"highlighting\");\n }\n }\n disableTextSelection() {\n this.div.tabIndex = 0;\n if (this.#textLayer?.div && this.#textSelectionAC) {\n this.#textSelectionAC.abort();\n this.#textSelectionAC = null;\n this.#textLayer.div.classList.remove(\"highlighting\");\n }\n }\n #textLayerPointerDown(event) {\n this.#uiManager.unselectAll();\n const {\n target\n } = event;\n if (target === this.#textLayer.div || target.classList.contains(\"endOfContent\") && this.#textLayer.div.contains(target)) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#uiManager.showAllEditors(\"highlight\", true, true);\n this.#textLayer.div.classList.add(\"free\");\n this.toggleDrawing();\n HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", event);\n this.#textLayer.div.addEventListener(\"pointerup\", () => {\n this.#textLayer.div.classList.remove(\"free\");\n this.toggleDrawing(true);\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n event.preventDefault();\n }\n }\n enableClick() {\n if (this.#clickAC) {\n return;\n }\n this.#clickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#clickAC);\n this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n signal\n });\n this.div.addEventListener(\"pointerup\", this.pointerup.bind(this), {\n signal\n });\n }\n disableClick() {\n this.#clickAC?.abort();\n this.#clickAC = null;\n }\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const {\n annotationElementId\n } = editor;\n if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n remove(editor) {\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n if (!this.#isCleaningUp) {\n this.addInkEditorIfNeeded(false);\n }\n }\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n if (editor.parent && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n add(editor) {\n if (editor.parent === this && editor.isAttachedToDOM) {\n return;\n }\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n editor.fixAndSetPosition();\n editor.onceAdded();\n this.#uiManager.addToAnnotationStorage(editor);\n editor._reportTelemetry(editor.telemetryInitialData);\n }\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n const {\n activeElement\n } = document;\n if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n editor._focusEventsAllowed = false;\n this.#editorFocusTimeoutId = setTimeout(() => {\n this.#editorFocusTimeoutId = null;\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\"focusin\", () => {\n editor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.parent ||= this;\n editor.rebuild();\n editor.show();\n } else {\n this.add(editor);\n }\n }\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n getNextId() {\n return this.#uiManager.getId();\n }\n get #currentEditorType() {\n return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n }\n combinedSignal(ac) {\n return this.#uiManager.combinedSignal(ac);\n }\n #createNewEditor(params) {\n const editorType = this.#currentEditorType;\n return editorType ? new editorType.prototype.constructor(params) : null;\n }\n canCreateNewEmptyEditor() {\n return this.#currentEditorType?.canCreateNewEmptyEditor();\n }\n pasteEditor(mode, params) {\n this.#uiManager.updateToolbar(mode);\n this.#uiManager.updateMode(mode);\n const {\n offsetX,\n offsetY\n } = this.#getCenterPoint();\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: offsetX,\n y: offsetY,\n uiManager: this.#uiManager,\n isCentered: true,\n ...params\n });\n if (editor) {\n this.add(editor);\n }\n }\n deserialize(data) {\n return AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager) || null;\n }\n createAndAddNewEditor(event, isCentered, data = {}) {\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager,\n isCentered,\n ...data\n });\n if (editor) {\n this.add(editor);\n }\n return editor;\n }\n #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.div.getBoundingClientRect();\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n return {\n offsetX,\n offsetY\n };\n }\n addNewEditor() {\n this.createAndAddNewEditor(this.#getCenterPoint(), true);\n }\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n isSelected(editor) {\n return this.#uiManager.isSelected(editor);\n }\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n pointerup(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!this.#hadPointerDown) {\n return;\n }\n this.#hadPointerDown = false;\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n if (this.#uiManager.getMode() === AnnotationEditorType.STAMP) {\n this.#uiManager.unselectAll();\n return;\n }\n this.createAndAddNewEditor(event, false);\n }\n pointerdown(event) {\n if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n this.enableTextSelection();\n }\n if (this.#hadPointerDown) {\n this.#hadPointerDown = false;\n return;\n }\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n this.#hadPointerDown = true;\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n destroy() {\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n if (this.#editorFocusTimeoutId) {\n clearTimeout(this.#editorFocusTimeoutId);\n this.#editorFocusTimeoutId = null;\n }\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n #cleanup() {\n this.#isCleaningUp = true;\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n this.#isCleaningUp = false;\n }\n render({\n viewport\n }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n editor.rebuild();\n }\n this.updateMode();\n }\n update({\n viewport\n }) {\n this.#uiManager.commitOrRemove();\n this.#cleanup();\n const oldRotation = this.viewport.rotation;\n const rotation = viewport.rotation;\n this.viewport = viewport;\n setLayerDimensions(this.div, {\n rotation\n });\n if (oldRotation !== rotation) {\n for (const editor of this.#editors.values()) {\n editor.rotate(rotation);\n }\n }\n this.addInkEditorIfNeeded(false);\n }\n get pageDimensions() {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n get scale() {\n return this.#uiManager.viewParameters.realScale;\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/draw_layer.js\n\n\nclass DrawLayer {\n #parent = null;\n #id = 0;\n #mapping = new Map();\n #toUpdate = new Map();\n constructor({\n pageIndex\n }) {\n this.pageIndex = pageIndex;\n }\n setParent(parent) {\n if (!this.#parent) {\n this.#parent = parent;\n return;\n }\n if (this.#parent !== parent) {\n if (this.#mapping.size > 0) {\n for (const root of this.#mapping.values()) {\n root.remove();\n parent.append(root);\n }\n }\n this.#parent = parent;\n }\n }\n static get _svgFactory() {\n return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n }\n static #setBox(element, {\n x = 0,\n y = 0,\n width = 1,\n height = 1\n } = {}) {\n const {\n style\n } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n style.width = `${100 * width}%`;\n style.height = `${100 * height}%`;\n }\n #createSVG(box) {\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n this.#parent.append(svg);\n svg.setAttribute(\"aria-hidden\", true);\n DrawLayer.#setBox(svg, box);\n return svg;\n }\n #createClipPath(defs, pathId) {\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n defs.append(clipPath);\n const clipPathId = `clip_${pathId}`;\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n clipPath.append(clipPathUse);\n clipPathUse.setAttribute(\"href\", `#${pathId}`);\n clipPathUse.classList.add(\"clip\");\n return clipPathId;\n }\n highlight(outlines, color, opacity, isPathUpdatable = false) {\n const id = this.#id++;\n const root = this.#createSVG(outlines.box);\n root.classList.add(\"highlight\");\n if (outlines.free) {\n root.classList.add(\"free\");\n }\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"d\", outlines.toSVGPath());\n if (isPathUpdatable) {\n this.#toUpdate.set(id, path);\n }\n const clipPathId = this.#createClipPath(defs, pathId);\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n root.setAttribute(\"fill\", color);\n root.setAttribute(\"fill-opacity\", opacity);\n use.setAttribute(\"href\", `#${pathId}`);\n this.#mapping.set(id, root);\n return {\n id,\n clipPathId: `url(#${clipPathId})`\n };\n }\n highlightOutline(outlines) {\n const id = this.#id++;\n const root = this.#createSVG(outlines.box);\n root.classList.add(\"highlightOutline\");\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"d\", outlines.toSVGPath());\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n let maskId;\n if (outlines.free) {\n root.classList.add(\"free\");\n const mask = DrawLayer._svgFactory.createElement(\"mask\");\n defs.append(mask);\n maskId = `mask_p${this.pageIndex}_${id}`;\n mask.setAttribute(\"id\", maskId);\n mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n const rect = DrawLayer._svgFactory.createElement(\"rect\");\n mask.append(rect);\n rect.setAttribute(\"width\", \"1\");\n rect.setAttribute(\"height\", \"1\");\n rect.setAttribute(\"fill\", \"white\");\n const use = DrawLayer._svgFactory.createElement(\"use\");\n mask.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n use.setAttribute(\"stroke\", \"none\");\n use.setAttribute(\"fill\", \"black\");\n use.setAttribute(\"fill-rule\", \"nonzero\");\n use.classList.add(\"mask\");\n }\n const use1 = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use1);\n use1.setAttribute(\"href\", `#${pathId}`);\n if (maskId) {\n use1.setAttribute(\"mask\", `url(#${maskId})`);\n }\n const use2 = use1.cloneNode();\n root.append(use2);\n use1.classList.add(\"mainOutline\");\n use2.classList.add(\"secondaryOutline\");\n this.#mapping.set(id, root);\n return id;\n }\n finalizeLine(id, line) {\n const path = this.#toUpdate.get(id);\n this.#toUpdate.delete(id);\n this.updateBox(id, line.box);\n path.setAttribute(\"d\", line.toSVGPath());\n }\n updateLine(id, line) {\n const root = this.#mapping.get(id);\n const defs = root.firstChild;\n const path = defs.firstChild;\n path.setAttribute(\"d\", line.toSVGPath());\n }\n removeFreeHighlight(id) {\n this.remove(id);\n this.#toUpdate.delete(id);\n }\n updatePath(id, line) {\n this.#toUpdate.get(id).setAttribute(\"d\", line.toSVGPath());\n }\n updateBox(id, box) {\n DrawLayer.#setBox(this.#mapping.get(id), box);\n }\n show(id, visible) {\n this.#mapping.get(id).classList.toggle(\"hidden\", !visible);\n }\n rotate(id, angle) {\n this.#mapping.get(id).setAttribute(\"data-main-rotation\", angle);\n }\n changeColor(id, color) {\n this.#mapping.get(id).setAttribute(\"fill\", color);\n }\n changeOpacity(id, opacity) {\n this.#mapping.get(id).setAttribute(\"fill-opacity\", opacity);\n }\n addClass(id, className) {\n this.#mapping.get(id).classList.add(className);\n }\n removeClass(id, className) {\n this.#mapping.get(id).classList.remove(className);\n }\n remove(id) {\n if (this.#parent === null) {\n return;\n }\n this.#mapping.get(id).remove();\n this.#mapping.delete(id);\n }\n destroy() {\n this.#parent = null;\n for (const root of this.#mapping.values()) {\n root.remove();\n }\n this.#mapping.clear();\n }\n}\n\n;// CONCATENATED MODULE: ./src/pdf.js\n\n\n\n\n\n\n\n\n\n\n\n\nconst pdfjsVersion = \"4.6.82\";\nconst pdfjsBuild = \"9b541910f\";\n\nvar __webpack_exports__AbortException = __webpack_exports__.AbortException;\nvar __webpack_exports__AnnotationEditorLayer = __webpack_exports__.AnnotationEditorLayer;\nvar __webpack_exports__AnnotationEditorParamsType = __webpack_exports__.AnnotationEditorParamsType;\nvar __webpack_exports__AnnotationEditorType = __webpack_exports__.AnnotationEditorType;\nvar __webpack_exports__AnnotationEditorUIManager = __webpack_exports__.AnnotationEditorUIManager;\nvar __webpack_exports__AnnotationLayer = __webpack_exports__.AnnotationLayer;\nvar __webpack_exports__AnnotationMode = __webpack_exports__.AnnotationMode;\nvar __webpack_exports__CMapCompressionType = __webpack_exports__.CMapCompressionType;\nvar __webpack_exports__ColorPicker = __webpack_exports__.ColorPicker;\nvar __webpack_exports__DOMSVGFactory = __webpack_exports__.DOMSVGFactory;\nvar __webpack_exports__DrawLayer = __webpack_exports__.DrawLayer;\nvar __webpack_exports__FeatureTest = __webpack_exports__.FeatureTest;\nvar __webpack_exports__GlobalWorkerOptions = __webpack_exports__.GlobalWorkerOptions;\nvar __webpack_exports__ImageKind = __webpack_exports__.ImageKind;\nvar __webpack_exports__InvalidPDFException = __webpack_exports__.InvalidPDFException;\nvar __webpack_exports__MissingPDFException = __webpack_exports__.MissingPDFException;\nvar __webpack_exports__OPS = __webpack_exports__.OPS;\nvar __webpack_exports__PDFDataRangeTransport = __webpack_exports__.PDFDataRangeTransport;\nvar __webpack_exports__PDFDateString = __webpack_exports__.PDFDateString;\nvar __webpack_exports__PDFWorker = __webpack_exports__.PDFWorker;\nvar __webpack_exports__PasswordResponses = __webpack_exports__.PasswordResponses;\nvar __webpack_exports__PermissionFlag = __webpack_exports__.PermissionFlag;\nvar __webpack_exports__PixelsPerInch = __webpack_exports__.PixelsPerInch;\nvar __webpack_exports__RenderingCancelledException = __webpack_exports__.RenderingCancelledException;\nvar __webpack_exports__TextLayer = __webpack_exports__.TextLayer;\nvar __webpack_exports__UnexpectedResponseException = __webpack_exports__.UnexpectedResponseException;\nvar __webpack_exports__Util = __webpack_exports__.Util;\nvar __webpack_exports__VerbosityLevel = __webpack_exports__.VerbosityLevel;\nvar __webpack_exports__XfaLayer = __webpack_exports__.XfaLayer;\nvar __webpack_exports__build = __webpack_exports__.build;\nvar __webpack_exports__createValidAbsoluteUrl = __webpack_exports__.createValidAbsoluteUrl;\nvar __webpack_exports__fetchData = __webpack_exports__.fetchData;\nvar __webpack_exports__getDocument = __webpack_exports__.getDocument;\nvar __webpack_exports__getFilenameFromUrl = __webpack_exports__.getFilenameFromUrl;\nvar __webpack_exports__getPdfFilenameFromUrl = __webpack_exports__.getPdfFilenameFromUrl;\nvar __webpack_exports__getXfaPageViewport = __webpack_exports__.getXfaPageViewport;\nvar __webpack_exports__isDataScheme = __webpack_exports__.isDataScheme;\nvar __webpack_exports__isPdfFile = __webpack_exports__.isPdfFile;\nvar __webpack_exports__noContextMenu = __webpack_exports__.noContextMenu;\nvar __webpack_exports__normalizeUnicode = __webpack_exports__.normalizeUnicode;\nvar __webpack_exports__setLayerDimensions = __webpack_exports__.setLayerDimensions;\nvar __webpack_exports__shadow = __webpack_exports__.shadow;\nvar __webpack_exports__version = __webpack_exports__.version;\nexport { __webpack_exports__AbortException as AbortException, __webpack_exports__AnnotationEditorLayer as AnnotationEditorLayer, __webpack_exports__AnnotationEditorParamsType as AnnotationEditorParamsType, __webpack_exports__AnnotationEditorType as AnnotationEditorType, __webpack_exports__AnnotationEditorUIManager as AnnotationEditorUIManager, __webpack_exports__AnnotationLayer as AnnotationLayer, __webpack_exports__AnnotationMode as AnnotationMode, __webpack_exports__CMapCompressionType as CMapCompressionType, __webpack_exports__ColorPicker as ColorPicker, __webpack_exports__DOMSVGFactory as DOMSVGFactory, __webpack_exports__DrawLayer as DrawLayer, __webpack_exports__FeatureTest as FeatureTest, __webpack_exports__GlobalWorkerOptions as GlobalWorkerOptions, __webpack_exports__ImageKind as ImageKind, __webpack_exports__InvalidPDFException as InvalidPDFException, __webpack_exports__MissingPDFException as MissingPDFException, __webpack_exports__OPS as OPS, __webpack_exports__PDFDataRangeTransport as PDFDataRangeTransport, __webpack_exports__PDFDateString as PDFDateString, __webpack_exports__PDFWorker as PDFWorker, __webpack_exports__PasswordResponses as PasswordResponses, __webpack_exports__PermissionFlag as PermissionFlag, __webpack_exports__PixelsPerInch as PixelsPerInch, __webpack_exports__RenderingCancelledException as RenderingCancelledException, __webpack_exports__TextLayer as TextLayer, __webpack_exports__UnexpectedResponseException as UnexpectedResponseException, __webpack_exports__Util as Util, __webpack_exports__VerbosityLevel as VerbosityLevel, __webpack_exports__XfaLayer as XfaLayer, __webpack_exports__build as build, __webpack_exports__createValidAbsoluteUrl as createValidAbsoluteUrl, __webpack_exports__fetchData as fetchData, __webpack_exports__getDocument as getDocument, __webpack_exports__getFilenameFromUrl as getFilenameFromUrl, __webpack_exports__getPdfFilenameFromUrl as getPdfFilenameFromUrl, __webpack_exports__getXfaPageViewport as getXfaPageViewport, __webpack_exports__isDataScheme as isDataScheme, __webpack_exports__isPdfFile as isPdfFile, __webpack_exports__noContextMenu as noContextMenu, __webpack_exports__normalizeUnicode as normalizeUnicode, __webpack_exports__setLayerDimensions as setLayerDimensions, __webpack_exports__shadow as shadow, __webpack_exports__version as version };\n\n//# sourceMappingURL=pdf.mjs.map","/*!\n * Signature Pad v5.0.3 | https://github.com/szimek/signature_pad\n * (c) 2024 Szymon Nowak | Released under the MIT license\n */\n\nclass Point {\n constructor(x, y, pressure, time) {\n if (isNaN(x) || isNaN(y)) {\n throw new Error(`Point is invalid: (${x}, ${y})`);\n }\n this.x = +x;\n this.y = +y;\n this.pressure = pressure || 0;\n this.time = time || Date.now();\n }\n distanceTo(start) {\n return Math.sqrt(Math.pow(this.x - start.x, 2) + Math.pow(this.y - start.y, 2));\n }\n equals(other) {\n return (this.x === other.x &&\n this.y === other.y &&\n this.pressure === other.pressure &&\n this.time === other.time);\n }\n velocityFrom(start) {\n return this.time !== start.time\n ? this.distanceTo(start) / (this.time - start.time)\n : 0;\n }\n}\n\nclass Bezier {\n static fromPoints(points, widths) {\n const c2 = this.calculateControlPoints(points[0], points[1], points[2]).c2;\n const c3 = this.calculateControlPoints(points[1], points[2], points[3]).c1;\n return new Bezier(points[1], c2, c3, points[2], widths.start, widths.end);\n }\n static calculateControlPoints(s1, s2, s3) {\n const dx1 = s1.x - s2.x;\n const dy1 = s1.y - s2.y;\n const dx2 = s2.x - s3.x;\n const dy2 = s2.y - s3.y;\n const m1 = { x: (s1.x + s2.x) / 2.0, y: (s1.y + s2.y) / 2.0 };\n const m2 = { x: (s2.x + s3.x) / 2.0, y: (s2.y + s3.y) / 2.0 };\n const l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n const l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);\n const dxm = m1.x - m2.x;\n const dym = m1.y - m2.y;\n const k = l1 + l2 == 0 ? 0 : l2 / (l1 + l2);\n const cm = { x: m2.x + dxm * k, y: m2.y + dym * k };\n const tx = s2.x - cm.x;\n const ty = s2.y - cm.y;\n return {\n c1: new Point(m1.x + tx, m1.y + ty),\n c2: new Point(m2.x + tx, m2.y + ty),\n };\n }\n constructor(startPoint, control2, control1, endPoint, startWidth, endWidth) {\n this.startPoint = startPoint;\n this.control2 = control2;\n this.control1 = control1;\n this.endPoint = endPoint;\n this.startWidth = startWidth;\n this.endWidth = endWidth;\n }\n length() {\n const steps = 10;\n let length = 0;\n let px;\n let py;\n for (let i = 0; i <= steps; i += 1) {\n const t = i / steps;\n const cx = this.point(t, this.startPoint.x, this.control1.x, this.control2.x, this.endPoint.x);\n const cy = this.point(t, this.startPoint.y, this.control1.y, this.control2.y, this.endPoint.y);\n if (i > 0) {\n const xdiff = cx - px;\n const ydiff = cy - py;\n length += Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n }\n px = cx;\n py = cy;\n }\n return length;\n }\n point(t, start, c1, c2, end) {\n return (start * (1.0 - t) * (1.0 - t) * (1.0 - t))\n + (3.0 * c1 * (1.0 - t) * (1.0 - t) * t)\n + (3.0 * c2 * (1.0 - t) * t * t)\n + (end * t * t * t);\n }\n}\n\nclass SignatureEventTarget {\n constructor() {\n try {\n this._et = new EventTarget();\n }\n catch (error) {\n this._et = document;\n }\n }\n addEventListener(type, listener, options) {\n this._et.addEventListener(type, listener, options);\n }\n dispatchEvent(event) {\n return this._et.dispatchEvent(event);\n }\n removeEventListener(type, callback, options) {\n this._et.removeEventListener(type, callback, options);\n }\n}\n\nfunction throttle(fn, wait = 250) {\n let previous = 0;\n let timeout = null;\n let result;\n let storedContext;\n let storedArgs;\n const later = () => {\n previous = Date.now();\n timeout = null;\n result = fn.apply(storedContext, storedArgs);\n if (!timeout) {\n storedContext = null;\n storedArgs = [];\n }\n };\n return function wrapper(...args) {\n const now = Date.now();\n const remaining = wait - (now - previous);\n storedContext = this;\n storedArgs = args;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = fn.apply(storedContext, storedArgs);\n if (!timeout) {\n storedContext = null;\n storedArgs = [];\n }\n }\n else if (!timeout) {\n timeout = window.setTimeout(later, remaining);\n }\n return result;\n };\n}\n\nclass SignaturePad extends SignatureEventTarget {\n constructor(canvas, options = {}) {\n var _a, _b, _c;\n super();\n this.canvas = canvas;\n this._drawingStroke = false;\n this._isEmpty = true;\n this._lastPoints = [];\n this._data = [];\n this._lastVelocity = 0;\n this._lastWidth = 0;\n this._handleMouseDown = (event) => {\n if (!this._isLeftButtonPressed(event, true) || this._drawingStroke) {\n return;\n }\n this._strokeBegin(this._pointerEventToSignatureEvent(event));\n };\n this._handleMouseMove = (event) => {\n if (!this._isLeftButtonPressed(event, true) || !this._drawingStroke) {\n this._strokeEnd(this._pointerEventToSignatureEvent(event), false);\n return;\n }\n this._strokeMoveUpdate(this._pointerEventToSignatureEvent(event));\n };\n this._handleMouseUp = (event) => {\n if (this._isLeftButtonPressed(event)) {\n return;\n }\n this._strokeEnd(this._pointerEventToSignatureEvent(event));\n };\n this._handleTouchStart = (event) => {\n if (event.targetTouches.length !== 1 || this._drawingStroke) {\n return;\n }\n if (event.cancelable) {\n event.preventDefault();\n }\n this._strokeBegin(this._touchEventToSignatureEvent(event));\n };\n this._handleTouchMove = (event) => {\n if (event.targetTouches.length !== 1) {\n return;\n }\n if (event.cancelable) {\n event.preventDefault();\n }\n if (!this._drawingStroke) {\n this._strokeEnd(this._touchEventToSignatureEvent(event), false);\n return;\n }\n this._strokeMoveUpdate(this._touchEventToSignatureEvent(event));\n };\n this._handleTouchEnd = (event) => {\n if (event.targetTouches.length !== 0) {\n return;\n }\n if (event.cancelable) {\n event.preventDefault();\n }\n this.canvas.removeEventListener('touchmove', this._handleTouchMove);\n this._strokeEnd(this._touchEventToSignatureEvent(event));\n };\n this._handlePointerDown = (event) => {\n if (!this._isLeftButtonPressed(event) || this._drawingStroke) {\n return;\n }\n event.preventDefault();\n this._strokeBegin(this._pointerEventToSignatureEvent(event));\n };\n this._handlePointerMove = (event) => {\n if (!this._isLeftButtonPressed(event, true) || !this._drawingStroke) {\n this._strokeEnd(this._pointerEventToSignatureEvent(event), false);\n return;\n }\n event.preventDefault();\n this._strokeMoveUpdate(this._pointerEventToSignatureEvent(event));\n };\n this._handlePointerUp = (event) => {\n if (this._isLeftButtonPressed(event)) {\n return;\n }\n event.preventDefault();\n this._strokeEnd(this._pointerEventToSignatureEvent(event));\n };\n this.velocityFilterWeight = options.velocityFilterWeight || 0.7;\n this.minWidth = options.minWidth || 0.5;\n this.maxWidth = options.maxWidth || 2.5;\n this.throttle = (_a = options.throttle) !== null && _a !== void 0 ? _a : 16;\n this.minDistance = (_b = options.minDistance) !== null && _b !== void 0 ? _b : 5;\n this.dotSize = options.dotSize || 0;\n this.penColor = options.penColor || 'black';\n this.backgroundColor = options.backgroundColor || 'rgba(0,0,0,0)';\n this.compositeOperation = options.compositeOperation || 'source-over';\n this.canvasContextOptions = (_c = options.canvasContextOptions) !== null && _c !== void 0 ? _c : {};\n this._strokeMoveUpdate = this.throttle\n ? throttle(SignaturePad.prototype._strokeUpdate, this.throttle)\n : SignaturePad.prototype._strokeUpdate;\n this._ctx = canvas.getContext('2d', this.canvasContextOptions);\n this.clear();\n this.on();\n }\n clear() {\n const { _ctx: ctx, canvas } = this;\n ctx.fillStyle = this.backgroundColor;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n this._data = [];\n this._reset(this._getPointGroupOptions());\n this._isEmpty = true;\n }\n fromDataURL(dataUrl, options = {}) {\n return new Promise((resolve, reject) => {\n const image = new Image();\n const ratio = options.ratio || window.devicePixelRatio || 1;\n const width = options.width || this.canvas.width / ratio;\n const height = options.height || this.canvas.height / ratio;\n const xOffset = options.xOffset || 0;\n const yOffset = options.yOffset || 0;\n this._reset(this._getPointGroupOptions());\n image.onload = () => {\n this._ctx.drawImage(image, xOffset, yOffset, width, height);\n resolve();\n };\n image.onerror = (error) => {\n reject(error);\n };\n image.crossOrigin = 'anonymous';\n image.src = dataUrl;\n this._isEmpty = false;\n });\n }\n toDataURL(type = 'image/png', encoderOptions) {\n switch (type) {\n case 'image/svg+xml':\n if (typeof encoderOptions !== 'object') {\n encoderOptions = undefined;\n }\n return `data:image/svg+xml;base64,${btoa(this.toSVG(encoderOptions))}`;\n default:\n if (typeof encoderOptions !== 'number') {\n encoderOptions = undefined;\n }\n return this.canvas.toDataURL(type, encoderOptions);\n }\n }\n on() {\n this.canvas.style.touchAction = 'none';\n this.canvas.style.msTouchAction = 'none';\n this.canvas.style.userSelect = 'none';\n const isIOS = /Macintosh/.test(navigator.userAgent) && 'ontouchstart' in document;\n if (window.PointerEvent && !isIOS) {\n this._handlePointerEvents();\n }\n else {\n this._handleMouseEvents();\n if ('ontouchstart' in window) {\n this._handleTouchEvents();\n }\n }\n }\n off() {\n this.canvas.style.touchAction = 'auto';\n this.canvas.style.msTouchAction = 'auto';\n this.canvas.style.userSelect = 'auto';\n this.canvas.removeEventListener('pointerdown', this._handlePointerDown);\n this.canvas.removeEventListener('mousedown', this._handleMouseDown);\n this.canvas.removeEventListener('touchstart', this._handleTouchStart);\n this._removeMoveUpEventListeners();\n }\n _getListenerFunctions() {\n var _a;\n const canvasWindow = window.document === this.canvas.ownerDocument\n ? window\n : (_a = this.canvas.ownerDocument.defaultView) !== null && _a !== void 0 ? _a : this.canvas.ownerDocument;\n return {\n addEventListener: canvasWindow.addEventListener.bind(canvasWindow),\n removeEventListener: canvasWindow.removeEventListener.bind(canvasWindow),\n };\n }\n _removeMoveUpEventListeners() {\n const { removeEventListener } = this._getListenerFunctions();\n removeEventListener('pointermove', this._handlePointerMove);\n removeEventListener('pointerup', this._handlePointerUp);\n removeEventListener('mousemove', this._handleMouseMove);\n removeEventListener('mouseup', this._handleMouseUp);\n removeEventListener('touchmove', this._handleTouchMove);\n removeEventListener('touchend', this._handleTouchEnd);\n }\n isEmpty() {\n return this._isEmpty;\n }\n fromData(pointGroups, { clear = true } = {}) {\n if (clear) {\n this.clear();\n }\n this._fromData(pointGroups, this._drawCurve.bind(this), this._drawDot.bind(this));\n this._data = this._data.concat(pointGroups);\n }\n toData() {\n return this._data;\n }\n _isLeftButtonPressed(event, only) {\n if (only) {\n return event.buttons === 1;\n }\n return (event.buttons & 1) === 1;\n }\n _pointerEventToSignatureEvent(event) {\n return {\n event: event,\n type: event.type,\n x: event.clientX,\n y: event.clientY,\n pressure: 'pressure' in event ? event.pressure : 0,\n };\n }\n _touchEventToSignatureEvent(event) {\n const touch = event.changedTouches[0];\n return {\n event: event,\n type: event.type,\n x: touch.clientX,\n y: touch.clientY,\n pressure: touch.force,\n };\n }\n _getPointGroupOptions(group) {\n return {\n penColor: group && 'penColor' in group ? group.penColor : this.penColor,\n dotSize: group && 'dotSize' in group ? group.dotSize : this.dotSize,\n minWidth: group && 'minWidth' in group ? group.minWidth : this.minWidth,\n maxWidth: group && 'maxWidth' in group ? group.maxWidth : this.maxWidth,\n velocityFilterWeight: group && 'velocityFilterWeight' in group\n ? group.velocityFilterWeight\n : this.velocityFilterWeight,\n compositeOperation: group && 'compositeOperation' in group\n ? group.compositeOperation\n : this.compositeOperation,\n };\n }\n _strokeBegin(event) {\n const cancelled = !this.dispatchEvent(new CustomEvent('beginStroke', { detail: event, cancelable: true }));\n if (cancelled) {\n return;\n }\n const { addEventListener } = this._getListenerFunctions();\n switch (event.event.type) {\n case 'mousedown':\n addEventListener('mousemove', this._handleMouseMove);\n addEventListener('mouseup', this._handleMouseUp);\n break;\n case 'touchstart':\n addEventListener('touchmove', this._handleTouchMove);\n addEventListener('touchend', this._handleTouchEnd);\n break;\n case 'pointerdown':\n addEventListener('pointermove', this._handlePointerMove);\n addEventListener('pointerup', this._handlePointerUp);\n break;\n }\n this._drawingStroke = true;\n const pointGroupOptions = this._getPointGroupOptions();\n const newPointGroup = Object.assign(Object.assign({}, pointGroupOptions), { points: [] });\n this._data.push(newPointGroup);\n this._reset(pointGroupOptions);\n this._strokeUpdate(event);\n }\n _strokeUpdate(event) {\n if (!this._drawingStroke) {\n return;\n }\n if (this._data.length === 0) {\n this._strokeBegin(event);\n return;\n }\n this.dispatchEvent(new CustomEvent('beforeUpdateStroke', { detail: event }));\n const point = this._createPoint(event.x, event.y, event.pressure);\n const lastPointGroup = this._data[this._data.length - 1];\n const lastPoints = lastPointGroup.points;\n const lastPoint = lastPoints.length > 0 && lastPoints[lastPoints.length - 1];\n const isLastPointTooClose = lastPoint\n ? point.distanceTo(lastPoint) <= this.minDistance\n : false;\n const pointGroupOptions = this._getPointGroupOptions(lastPointGroup);\n if (!lastPoint || !(lastPoint && isLastPointTooClose)) {\n const curve = this._addPoint(point, pointGroupOptions);\n if (!lastPoint) {\n this._drawDot(point, pointGroupOptions);\n }\n else if (curve) {\n this._drawCurve(curve, pointGroupOptions);\n }\n lastPoints.push({\n time: point.time,\n x: point.x,\n y: point.y,\n pressure: point.pressure,\n });\n }\n this.dispatchEvent(new CustomEvent('afterUpdateStroke', { detail: event }));\n }\n _strokeEnd(event, shouldUpdate = true) {\n this._removeMoveUpEventListeners();\n if (!this._drawingStroke) {\n return;\n }\n if (shouldUpdate) {\n this._strokeUpdate(event);\n }\n this._drawingStroke = false;\n this.dispatchEvent(new CustomEvent('endStroke', { detail: event }));\n }\n _handlePointerEvents() {\n this._drawingStroke = false;\n this.canvas.addEventListener('pointerdown', this._handlePointerDown);\n }\n _handleMouseEvents() {\n this._drawingStroke = false;\n this.canvas.addEventListener('mousedown', this._handleMouseDown);\n }\n _handleTouchEvents() {\n this.canvas.addEventListener('touchstart', this._handleTouchStart);\n }\n _reset(options) {\n this._lastPoints = [];\n this._lastVelocity = 0;\n this._lastWidth = (options.minWidth + options.maxWidth) / 2;\n this._ctx.fillStyle = options.penColor;\n this._ctx.globalCompositeOperation = options.compositeOperation;\n }\n _createPoint(x, y, pressure) {\n const rect = this.canvas.getBoundingClientRect();\n return new Point(x - rect.left, y - rect.top, pressure, new Date().getTime());\n }\n _addPoint(point, options) {\n const { _lastPoints } = this;\n _lastPoints.push(point);\n if (_lastPoints.length > 2) {\n if (_lastPoints.length === 3) {\n _lastPoints.unshift(_lastPoints[0]);\n }\n const widths = this._calculateCurveWidths(_lastPoints[1], _lastPoints[2], options);\n const curve = Bezier.fromPoints(_lastPoints, widths);\n _lastPoints.shift();\n return curve;\n }\n return null;\n }\n _calculateCurveWidths(startPoint, endPoint, options) {\n const velocity = options.velocityFilterWeight * endPoint.velocityFrom(startPoint) +\n (1 - options.velocityFilterWeight) * this._lastVelocity;\n const newWidth = this._strokeWidth(velocity, options);\n const widths = {\n end: newWidth,\n start: this._lastWidth,\n };\n this._lastVelocity = velocity;\n this._lastWidth = newWidth;\n return widths;\n }\n _strokeWidth(velocity, options) {\n return Math.max(options.maxWidth / (velocity + 1), options.minWidth);\n }\n _drawCurveSegment(x, y, width) {\n const ctx = this._ctx;\n ctx.moveTo(x, y);\n ctx.arc(x, y, width, 0, 2 * Math.PI, false);\n this._isEmpty = false;\n }\n _drawCurve(curve, options) {\n const ctx = this._ctx;\n const widthDelta = curve.endWidth - curve.startWidth;\n const drawSteps = Math.ceil(curve.length()) * 2;\n ctx.beginPath();\n ctx.fillStyle = options.penColor;\n for (let i = 0; i < drawSteps; i += 1) {\n const t = i / drawSteps;\n const tt = t * t;\n const ttt = tt * t;\n const u = 1 - t;\n const uu = u * u;\n const uuu = uu * u;\n let x = uuu * curve.startPoint.x;\n x += 3 * uu * t * curve.control1.x;\n x += 3 * u * tt * curve.control2.x;\n x += ttt * curve.endPoint.x;\n let y = uuu * curve.startPoint.y;\n y += 3 * uu * t * curve.control1.y;\n y += 3 * u * tt * curve.control2.y;\n y += ttt * curve.endPoint.y;\n const width = Math.min(curve.startWidth + ttt * widthDelta, options.maxWidth);\n this._drawCurveSegment(x, y, width);\n }\n ctx.closePath();\n ctx.fill();\n }\n _drawDot(point, options) {\n const ctx = this._ctx;\n const width = options.dotSize > 0\n ? options.dotSize\n : (options.minWidth + options.maxWidth) / 2;\n ctx.beginPath();\n this._drawCurveSegment(point.x, point.y, width);\n ctx.closePath();\n ctx.fillStyle = options.penColor;\n ctx.fill();\n }\n _fromData(pointGroups, drawCurve, drawDot) {\n for (const group of pointGroups) {\n const { points } = group;\n const pointGroupOptions = this._getPointGroupOptions(group);\n if (points.length > 1) {\n for (let j = 0; j < points.length; j += 1) {\n const basicPoint = points[j];\n const point = new Point(basicPoint.x, basicPoint.y, basicPoint.pressure, basicPoint.time);\n if (j === 0) {\n this._reset(pointGroupOptions);\n }\n const curve = this._addPoint(point, pointGroupOptions);\n if (curve) {\n drawCurve(curve, pointGroupOptions);\n }\n }\n }\n else {\n this._reset(pointGroupOptions);\n drawDot(points[0], pointGroupOptions);\n }\n }\n }\n toSVG({ includeBackgroundColor = false } = {}) {\n const pointGroups = this._data;\n const ratio = Math.max(window.devicePixelRatio || 1, 1);\n const minX = 0;\n const minY = 0;\n const maxX = this.canvas.width / ratio;\n const maxY = this.canvas.height / ratio;\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n svg.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n svg.setAttribute('viewBox', `${minX} ${minY} ${maxX} ${maxY}`);\n svg.setAttribute('width', maxX.toString());\n svg.setAttribute('height', maxY.toString());\n if (includeBackgroundColor && this.backgroundColor) {\n const rect = document.createElement('rect');\n rect.setAttribute('width', '100%');\n rect.setAttribute('height', '100%');\n rect.setAttribute('fill', this.backgroundColor);\n svg.appendChild(rect);\n }\n this._fromData(pointGroups, (curve, { penColor }) => {\n const path = document.createElement('path');\n if (!isNaN(curve.control1.x) &&\n !isNaN(curve.control1.y) &&\n !isNaN(curve.control2.x) &&\n !isNaN(curve.control2.y)) {\n const attr = `M ${curve.startPoint.x.toFixed(3)},${curve.startPoint.y.toFixed(3)} ` +\n `C ${curve.control1.x.toFixed(3)},${curve.control1.y.toFixed(3)} ` +\n `${curve.control2.x.toFixed(3)},${curve.control2.y.toFixed(3)} ` +\n `${curve.endPoint.x.toFixed(3)},${curve.endPoint.y.toFixed(3)}`;\n path.setAttribute('d', attr);\n path.setAttribute('stroke-width', (curve.endWidth * 2.25).toFixed(3));\n path.setAttribute('stroke', penColor);\n path.setAttribute('fill', 'none');\n path.setAttribute('stroke-linecap', 'round');\n svg.appendChild(path);\n }\n }, (point, { penColor, dotSize, minWidth, maxWidth }) => {\n const circle = document.createElement('circle');\n const size = dotSize > 0 ? dotSize : (minWidth + maxWidth) / 2;\n circle.setAttribute('r', size.toString());\n circle.setAttribute('cx', point.x.toString());\n circle.setAttribute('cy', point.y.toString());\n circle.setAttribute('fill', penColor);\n svg.appendChild(circle);\n });\n return svg.outerHTML;\n }\n}\n\nexport { SignaturePad as default };\n//# sourceMappingURL=signature_pad.js.map\n"],"file":"assets/signature_pad-4bBbEk8S.js"}