啊鑫
2025-07-17 eaa506e57403d1b8502f16ca5dd6e82c347724d0
1
{"version":3,"file":"pdf.image_decoders.mjs","mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAoBA,MAAMA,QAAQ,GAEZ,OAAOC,OAAO,KAAK,QAAQ,IAC3BA,OAAO,GAAG,EAAE,KAAK,kBAAkB,IACnC,CAACA,OAAO,CAACC,QAAQ,CAACC,EAAE,IACpB,EAAEF,OAAO,CAACC,QAAQ,CAACE,QAAQ,IAAIH,OAAO,CAACI,IAAI,IAAIJ,OAAO,CAACI,IAAI,KAAK,SAAS,CAAC;AAE5E,MAAMC,oBAAoB,GAAG,iDAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAIvD,MAAMC,WAAW,GAAG,IAAI;AACxB,MAAMC,mBAAmB,GAAG,IAAI;AAChC,MAAMC,eAAe,GAAGD,mBAAmB,GAAGD,WAAW;AAgBzD,MAAMG,mBAAmB,GAAG;EAC1BC,GAAG,EAAE,IAAI;EACTC,OAAO,EAAE,IAAI;EACbC,KAAK,EAAE,IAAI;EACXC,IAAI,EAAE,IAAI;EACVC,iBAAiB,EAAE,IAAI;EACvBC,mBAAmB,EAAE,IAAI;EACzBC,mBAAmB,EAAE,IAAI;EACzBC,UAAU,EAAE,IAAI;EAChBC,MAAM,EAAE;AACV,CAAC;AAED,MAAMC,cAAc,GAAG;EACrBC,OAAO,EAAE,CAAC;EACVC,MAAM,EAAE,CAAC;EACTC,YAAY,EAAE,CAAC;EACfC,cAAc,EAAE;AAClB,CAAC;AAED,MAAMC,2BAAsB,GAAG,wBAAwB;AAEvD,MAAMC,oBAAoB,GAAG;EAC3BL,OAAO,EAAE,CAAC,CAAC;EACXM,IAAI,EAAE,CAAC;EACPC,QAAQ,EAAE,CAAC;EACXC,SAAS,EAAE,CAAC;EACZC,KAAK,EAAE,EAAE;EACTC,GAAG,EAAE,EAAE;EACPC,SAAS,EAAE;AACb,CAAC;AAED,MAAMC,0BAA0B,GAAG;EACjCC,MAAM,EAAE,CAAC;EACTC,MAAM,EAAE,CAAC;EACTC,aAAa,EAAE,EAAE;EACjBC,cAAc,EAAE,EAAE;EAClBC,gBAAgB,EAAE,EAAE;EACpBC,SAAS,EAAE,EAAE;EACbC,aAAa,EAAE,EAAE;EACjBC,WAAW,EAAE,EAAE;EACfC,eAAe,EAAE,EAAE;EACnBC,uBAAuB,EAAE,EAAE;EAC3BC,mBAAmB,EAAE,EAAE;EACvBC,cAAc,EAAE,EAAE;EAClBC,kBAAkB,EAAE,EAAE;EACtBC,SAAS,EAAE;AACb,CAAC;AAGD,MAAMC,cAAc,GAAG;EACrBnC,KAAK,EAAE,IAAI;EACXoC,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE,IAAI;EACVC,kBAAkB,EAAE,IAAI;EACxBC,sBAAsB,EAAE,KAAK;EAC7BC,sBAAsB,EAAE,KAAK;EAC7BC,QAAQ,EAAE,KAAK;EACfC,kBAAkB,EAAE;AACtB,CAAC;AAED,MAAMC,iBAAiB,GAAG;EACxBC,IAAI,EAAE,CAAC;EACPC,MAAM,EAAE,CAAC;EACTC,WAAW,EAAE,CAAC;EACdC,SAAS,EAAE,CAAC;EACZC,gBAAgB,EAAE,CAAC;EACnBC,kBAAkB,EAAE,CAAC;EACrBC,uBAAuB,EAAE,CAAC;EAC1BC,WAAW,EAAE,CAAC;EACdC,gBAAgB,EAAE,CAAC;EACnBC,gBAAgB,EAAE;AACpB,CAAC;AAED,MAAMC,cAAS,GAAG;EAChBC,cAAc,EAAE,CAAC;EACjBC,SAAS,EAAE,CAAC;EACZC,UAAU,EAAE;AACd,CAAC;AAED,MAAMC,cAAc,GAAG;EACrBC,IAAI,EAAE,CAAC;EACPC,IAAI,EAAE,CAAC;EACP7C,QAAQ,EAAE,CAAC;EACX8C,IAAI,EAAE,CAAC;EACPC,MAAM,EAAE,CAAC;EACTC,MAAM,EAAE,CAAC;EACTC,OAAO,EAAE,CAAC;EACVC,QAAQ,EAAE,CAAC;EACXjD,SAAS,EAAE,CAAC;EACZkD,SAAS,EAAE,EAAE;EACbC,QAAQ,EAAE,EAAE;EACZC,SAAS,EAAE,EAAE;EACbnD,KAAK,EAAE,EAAE;EACToD,KAAK,EAAE,EAAE;EACTnD,GAAG,EAAE,EAAE;EACPoD,KAAK,EAAE,EAAE;EACTC,cAAc,EAAE,EAAE;EAClBC,KAAK,EAAE,EAAE;EACTC,KAAK,EAAE,EAAE;EACTC,MAAM,EAAE,EAAE;EACVC,MAAM,EAAE,EAAE;EACVC,WAAW,EAAE,EAAE;EACfC,OAAO,EAAE,EAAE;EACXC,SAAS,EAAE,EAAE;EACbC,MAAM,EAAE,EAAE;EACVC,MAAM,EAAE;AACV,CAAC;AAED,MAAMC,mBAAmB,GAAG;EAC1BC,KAAK,EAAE,OAAO;EACdC,KAAK,EAAE;AACT,CAAC;AAED,MAAMC,cAAc,GAAG;EACrBrC,SAAS,EAAE,IAAI;EACfsC,MAAM,EAAE,IAAI;EACZrF,KAAK,EAAE,IAAI;EACXsF,MAAM,EAAE,IAAI;EACZC,QAAQ,EAAE,IAAI;EACdC,MAAM,EAAE,IAAI;EACZC,QAAQ,EAAE,IAAI;EACdC,MAAM,EAAE,IAAI;EACZC,YAAY,EAAE,KAAK;EACnBC,cAAc,EAAE;AAClB,CAAC;AAED,MAAMC,mBAAmB,GAAG;EAC1BJ,QAAQ,EAAE,SAAS;EACnBK,QAAQ,EAAE,SAAS;EACnBC,QAAQ,EAAE,SAAS;EACnBC,SAAS,EAAE,SAAS;EACpBC,QAAQ,EAAE,SAAS;EACnBC,aAAa,EAAE,SAAS;EACxBC,KAAK,EAAE,SAAS;EAChBC,UAAU,EAAE,SAAS;EACrBC,KAAK,EAAE,SAAS;EAChBC,IAAI,EAAE,SAAS;EACfC,IAAI,EAAE,SAAS;EACfC,UAAU,EAAE,SAAS;EACrBC,WAAW,EAAE,SAAS;EACtBC,eAAe,EAAE,SAAS;EAC1BC,WAAW,EAAE,SAAS;EACtBC,IAAI,EAAE,SAAS;EACfC,QAAQ,EAAE,SAAS;EACnBC,cAAc,EAAE,SAAS;EACzBC,iBAAiB,EAAE;AACrB,CAAC;AAED,MAAMC,yBAAyB,GAAG;EAChCC,KAAK,EAAE,CAAC;EACRC,MAAM,EAAE,CAAC;EACTC,OAAO,EAAE,CAAC;EACVC,KAAK,EAAE,CAAC;EACRlD,SAAS,EAAE;AACb,CAAC;AAED,MAAMmD,yBAAyB,GAAG;EAChCC,CAAC,EAAE,aAAa;EAChBC,CAAC,EAAE,YAAY;EACfC,CAAC,EAAE,YAAY;EACfC,CAAC,EAAE,UAAU;EACbC,EAAE,EAAE,OAAO;EACXC,EAAE,EAAE,MAAM;EACVC,EAAE,EAAE,UAAU;EACdC,EAAE,EAAE,WAAW;EACfC,EAAE,EAAE,aAAa;EACjBC,EAAE,EAAE,eAAe;EACnBC,CAAC,EAAE,WAAW;EACdC,CAAC,EAAE,QAAQ;EACXC,CAAC,EAAE,UAAU;EACbC,CAAC,EAAE;AACL,CAAC;AAED,MAAMC,uBAAuB,GAAG;EAC9BC,EAAE,EAAE,WAAW;EACfC,EAAE,EAAE,UAAU;EACdC,EAAE,EAAE,SAAS;EACbC,EAAE,EAAE,WAAW;EACfC,EAAE,EAAE;AACN,CAAC;AAED,MAAMC,mBAAmB,GAAG;EAC1BC,CAAC,EAAE,UAAU;EACbR,CAAC,EAAE;AACL,CAAC;AAED,MAAMS,cAAc,GAAG;EACrBC,MAAM,EAAE,CAAC;EACTC,QAAQ,EAAE,CAAC;EACXC,KAAK,EAAE;AACT,CAAC;AAGD,MAAMC,GAAG,GAAG;EAKVC,UAAU,EAAE,CAAC;EACbC,YAAY,EAAE,CAAC;EACfC,UAAU,EAAE,CAAC;EACbC,WAAW,EAAE,CAAC;EACdC,aAAa,EAAE,CAAC;EAChBC,OAAO,EAAE,CAAC;EACVC,kBAAkB,EAAE,CAAC;EACrBC,WAAW,EAAE,CAAC;EACdC,SAAS,EAAE,CAAC;EACZC,IAAI,EAAE,EAAE;EACRC,OAAO,EAAE,EAAE;EACXC,SAAS,EAAE,EAAE;EACbC,MAAM,EAAE,EAAE;EACVC,MAAM,EAAE,EAAE;EACVC,OAAO,EAAE,EAAE;EACXC,QAAQ,EAAE,EAAE;EACZC,QAAQ,EAAE,EAAE;EACZC,SAAS,EAAE,EAAE;EACbC,SAAS,EAAE,EAAE;EACbC,MAAM,EAAE,EAAE;EACVC,WAAW,EAAE,EAAE;EACfC,IAAI,EAAE,EAAE;EACRC,MAAM,EAAE,EAAE;EACVC,UAAU,EAAE,EAAE;EACdC,YAAY,EAAE,EAAE;EAChBC,eAAe,EAAE,EAAE;EACnBC,iBAAiB,EAAE,EAAE;EACrBC,OAAO,EAAE,EAAE;EACXC,IAAI,EAAE,EAAE;EACRC,MAAM,EAAE,EAAE;EACVC,SAAS,EAAE,EAAE;EACbC,OAAO,EAAE,EAAE;EACXC,cAAc,EAAE,EAAE;EAClBC,cAAc,EAAE,EAAE;EAClBC,SAAS,EAAE,EAAE;EACbC,UAAU,EAAE,EAAE;EACdC,OAAO,EAAE,EAAE;EACXC,oBAAoB,EAAE,EAAE;EACxBC,WAAW,EAAE,EAAE;EACfC,QAAQ,EAAE,EAAE;EACZC,kBAAkB,EAAE,EAAE;EACtBC,aAAa,EAAE,EAAE;EACjBC,QAAQ,EAAE,EAAE;EACZC,QAAQ,EAAE,EAAE;EACZC,cAAc,EAAE,EAAE;EAClBC,gBAAgB,EAAE,EAAE;EACpBC,0BAA0B,EAAE,EAAE;EAC9BC,YAAY,EAAE,EAAE;EAChBC,qBAAqB,EAAE,EAAE;EACzBC,mBAAmB,EAAE,EAAE;EACvBC,iBAAiB,EAAE,EAAE;EACrBC,cAAc,EAAE,EAAE;EAClBC,eAAe,EAAE,EAAE;EACnBC,YAAY,EAAE,EAAE;EAChBC,aAAa,EAAE,EAAE;EACjBC,aAAa,EAAE,EAAE;EACjBC,WAAW,EAAE,EAAE;EACfC,iBAAiB,EAAE,EAAE;EACrBC,eAAe,EAAE,EAAE;EACnBC,kBAAkB,EAAE,EAAE;EACtBC,gBAAgB,EAAE,EAAE;EACpBC,WAAW,EAAE,EAAE;EACfC,gBAAgB,EAAE,EAAE;EACpBC,cAAc,EAAE,EAAE;EAClBC,cAAc,EAAE,EAAE;EAClBC,YAAY,EAAE,EAAE;EAChBC,SAAS,EAAE,EAAE;EACbC,cAAc,EAAE,EAAE;EAClBC,kBAAkB,EAAE,EAAE;EACtBC,uBAAuB,EAAE,EAAE;EAC3BC,gBAAgB,EAAE,EAAE;EACpBC,WAAW,EAAE,EAAE;EACfC,SAAS,EAAE,EAAE;EACbC,qBAAqB,EAAE,EAAE;EACzBC,mBAAmB,EAAE,EAAE;EACvBC,UAAU,EAAE,EAAE;EACdC,QAAQ,EAAE,EAAE;EAGZC,eAAe,EAAE,EAAE;EACnBC,aAAa,EAAE,EAAE;EAEjBC,qBAAqB,EAAE,EAAE;EACzBC,0BAA0B,EAAE,EAAE;EAC9BC,iBAAiB,EAAE,EAAE;EACrBC,uBAAuB,EAAE,EAAE;EAC3BC,4BAA4B,EAAE,EAAE;EAChCC,uBAAuB,EAAE,EAAE;EAC3BC,2BAA2B,EAAE,EAAE;EAC/BC,wBAAwB,EAAE,EAAE;EAC5BC,aAAa,EAAE,EAAE;EACjBC,oBAAoB,EAAE,EAAE;EACxBC,kBAAkB,EAAE,EAAE;EACtBC,WAAW,EAAE;AACf,CAAC;AAID,MAAMC,OAAO,GAAG;EACd/E,MAAM,EAAE,CAAC;EACTC,MAAM,EAAE,CAAC;EACTC,OAAO,EAAE,CAAC;EACVG,SAAS,EAAE;AACb,CAAC;AAED,MAAM2E,iBAAiB,GAAG;EACxBC,aAAa,EAAE,CAAC;EAChBC,kBAAkB,EAAE;AACtB,CAAC;AAED,IAAIC,SAAS,GAAGpG,cAAc,CAACE,QAAQ;AAEvC,SAASmG,iBAAiBA,CAACC,KAAK,EAAE;EAChC,IAAIC,MAAM,CAACC,SAAS,CAACF,KAAK,CAAC,EAAE;IAC3BF,SAAS,GAAGE,KAAK;EACnB;AACF;AAEA,SAASG,iBAAiBA,CAAA,EAAG;EAC3B,OAAOL,SAAS;AAClB;AAKA,SAASM,IAAIA,CAACC,GAAG,EAAE;EACjB,IAAIP,SAAS,IAAIpG,cAAc,CAACG,KAAK,EAAE;IAErCyG,OAAO,CAACC,GAAG,CAAC,SAASF,GAAG,EAAE,CAAC;EAC7B;AACF;AAGA,SAASG,SAAIA,CAACH,GAAG,EAAE;EACjB,IAAIP,SAAS,IAAIpG,cAAc,CAACE,QAAQ,EAAE;IAExC0G,OAAO,CAACC,GAAG,CAAC,YAAYF,GAAG,EAAE,CAAC;EAChC;AACF;AAEA,SAASI,WAAWA,CAACJ,GAAG,EAAE;EACxB,MAAM,IAAIK,KAAK,CAACL,GAAG,CAAC;AACtB;AAEA,SAASM,WAAMA,CAACC,IAAI,EAAEP,GAAG,EAAE;EACzB,IAAI,CAACO,IAAI,EAAE;IACTH,WAAW,CAACJ,GAAG,CAAC;EAClB;AACF;AAGA,SAASQ,gBAAgBA,CAACC,GAAG,EAAE;EAC7B,QAAQA,GAAG,EAAEC,QAAQ;IACnB,KAAK,OAAO;IACZ,KAAK,QAAQ;IACb,KAAK,MAAM;IACX,KAAK,SAAS;IACd,KAAK,MAAM;MACT,OAAO,IAAI;IACb;MACE,OAAO,KAAK;EAChB;AACF;AAUA,SAASC,sBAAsBA,CAACF,GAAG,EAAEG,OAAO,GAAG,IAAI,EAAEC,OAAO,GAAG,IAAI,EAAE;EACnE,IAAI,CAACJ,GAAG,EAAE;IACR,OAAO,IAAI;EACb;EACA,IAAII,OAAO,IAAI,OAAOJ,GAAG,KAAK,QAAQ,EAAE;IAEtC,IAAII,OAAO,CAACC,kBAAkB,IAAIL,GAAG,CAACM,UAAU,CAAC,MAAM,CAAC,EAAE;MACxD,MAAMC,IAAI,GAAGP,GAAG,CAACQ,KAAK,CAAC,KAAK,CAAC;MAG7B,IAAID,IAAI,EAAEE,MAAM,IAAI,CAAC,EAAE;QACrBT,GAAG,GAAG,UAAUA,GAAG,EAAE;MACvB;IACF;IAIA,IAAII,OAAO,CAACM,kBAAkB,EAAE;MAC9B,IAAI;QACFV,GAAG,GAAGW,kBAAkB,CAACX,GAAG,CAAC;MAC/B,CAAC,CAAC,MAAM,CAAC;IACX;EACF;EAEA,MAAMY,WAAW,GAAGT,OAAO,GAAGU,GAAG,CAACC,KAAK,CAACd,GAAG,EAAEG,OAAO,CAAC,GAAGU,GAAG,CAACC,KAAK,CAACd,GAAG,CAAC;EACtE,OAAOD,gBAAgB,CAACa,WAAW,CAAC,GAAGA,WAAW,GAAG,IAAI;AAC3D;AAUA,SAASG,aAAaA,CAACf,GAAG,EAAEgB,IAAI,EAAEC,QAAQ,GAAG,KAAK,EAAE;EAClD,MAAMC,GAAG,GAAGL,GAAG,CAACC,KAAK,CAACd,GAAG,CAAC;EAC1B,IAAIkB,GAAG,EAAE;IACPA,GAAG,CAACF,IAAI,GAAGA,IAAI;IACf,OAAOE,GAAG,CAACC,IAAI;EACjB;EAGA,IAAIF,QAAQ,IAAIf,sBAAsB,CAACF,GAAG,EAAE,oBAAoB,CAAC,EAAE;IACjE,OAAOA,GAAG,CAACoB,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAGJ,IAAI,GAAG,IAAIA,IAAI,EAAE,GAAG,EAAE,EAAE;EAC3D;EACA,OAAO,EAAE;AACX;AAEA,SAASK,MAAMA,CAACC,GAAG,EAAEC,IAAI,EAAEC,KAAK,EAAEC,eAAe,GAAG,KAAK,EAAE;EAOzDC,MAAM,CAACC,cAAc,CAACL,GAAG,EAAEC,IAAI,EAAE;IAC/BC,KAAK;IACLI,UAAU,EAAE,CAACH,eAAe;IAC5BI,YAAY,EAAE,IAAI;IAClBC,QAAQ,EAAE;EACZ,CAAC,CAAC;EACF,OAAON,KAAK;AACd;AAKA,MAAMO,aAAa,GAAI,SAASC,oBAAoBA,CAAA,EAAG;EAErD,SAASD,aAAaA,CAACE,OAAO,EAAEC,IAAI,EAAE;IAOpC,IAAI,CAACD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,IAAI,GAAGA,IAAI;EAClB;EACAH,aAAa,CAACI,SAAS,GAAG,IAAIvC,KAAK,CAAC,CAAC;EACrCmC,aAAa,CAACK,WAAW,GAAGL,aAAa;EAEzC,OAAOA,aAAa;AACtB,CAAC,CAAE,CAAC;AAEJ,MAAMM,iBAAiB,SAASN,aAAa,CAAC;EAC5CK,WAAWA,CAAC7C,GAAG,EAAE+C,IAAI,EAAE;IACrB,KAAK,CAAC/C,GAAG,EAAE,mBAAmB,CAAC;IAC/B,IAAI,CAAC+C,IAAI,GAAGA,IAAI;EAClB;AACF;AAEA,MAAMC,qBAAqB,SAASR,aAAa,CAAC;EAChDK,WAAWA,CAAC7C,GAAG,EAAEiD,OAAO,EAAE;IACxB,KAAK,CAACjD,GAAG,EAAE,uBAAuB,CAAC;IACnC,IAAI,CAACiD,OAAO,GAAGA,OAAO;EACxB;AACF;AAEA,MAAMC,mBAAmB,SAASV,aAAa,CAAC;EAC9CK,WAAWA,CAAC7C,GAAG,EAAE;IACf,KAAK,CAACA,GAAG,EAAE,qBAAqB,CAAC;EACnC;AACF;AAEA,MAAMmD,iBAAiB,SAASX,aAAa,CAAC;EAC5CK,WAAWA,CAAC7C,GAAG,EAAEoD,MAAM,EAAEC,OAAO,EAAE;IAChC,KAAK,CAACrD,GAAG,EAAE,mBAAmB,CAAC;IAC/B,IAAI,CAACoD,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,OAAO,GAAGA,OAAO;EACxB;AACF;AAKA,MAAMC,WAAW,SAASd,aAAa,CAAC;EACtCK,WAAWA,CAAC7C,GAAG,EAAE;IACf,KAAK,CAACA,GAAG,EAAE,aAAa,CAAC;EAC3B;AACF;AAKA,MAAMuD,cAAc,SAASf,aAAa,CAAC;EACzCK,WAAWA,CAAC7C,GAAG,EAAE;IACf,KAAK,CAACA,GAAG,EAAE,gBAAgB,CAAC;EAC9B;AACF;AAEA,SAASwD,aAAaA,CAACC,KAAK,EAAE;EAC5B,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,EAAEvC,MAAM,KAAKwC,SAAS,EAAE;IAC5DtD,WAAW,CAAC,oCAAoC,CAAC;EACnD;EACA,MAAMc,MAAM,GAAGuC,KAAK,CAACvC,MAAM;EAC3B,MAAMyC,kBAAkB,GAAG,IAAI;EAC/B,IAAIzC,MAAM,GAAGyC,kBAAkB,EAAE;IAC/B,OAAOC,MAAM,CAACC,YAAY,CAACC,KAAK,CAAC,IAAI,EAAEL,KAAK,CAAC;EAC/C;EACA,MAAMM,MAAM,GAAG,EAAE;EACjB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG9C,MAAM,EAAE8C,CAAC,IAAIL,kBAAkB,EAAE;IACnD,MAAMM,QAAQ,GAAGC,IAAI,CAACC,GAAG,CAACH,CAAC,GAAGL,kBAAkB,EAAEzC,MAAM,CAAC;IACzD,MAAMkD,KAAK,GAAGX,KAAK,CAACY,QAAQ,CAACL,CAAC,EAAEC,QAAQ,CAAC;IACzCF,MAAM,CAACO,IAAI,CAACV,MAAM,CAACC,YAAY,CAACC,KAAK,CAAC,IAAI,EAAEM,KAAK,CAAC,CAAC;EACrD;EACA,OAAOL,MAAM,CAACQ,IAAI,CAAC,EAAE,CAAC;AACxB;AAEA,SAASC,aAAaA,CAACC,GAAG,EAAE;EAC1B,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;IAC3BrE,WAAW,CAAC,oCAAoC,CAAC;EACnD;EACA,MAAMc,MAAM,GAAGuD,GAAG,CAACvD,MAAM;EACzB,MAAMuC,KAAK,GAAG,IAAIiB,UAAU,CAACxD,MAAM,CAAC;EACpC,KAAK,IAAI8C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG9C,MAAM,EAAE,EAAE8C,CAAC,EAAE;IAC/BP,KAAK,CAACO,CAAC,CAAC,GAAGS,GAAG,CAACE,UAAU,CAACX,CAAC,CAAC,GAAG,IAAI;EACrC;EACA,OAAOP,KAAK;AACd;AAEA,SAASmB,QAAQA,CAAC3C,KAAK,EAAE;EAOvB,OAAO2B,MAAM,CAACC,YAAY,CACvB5B,KAAK,IAAI,EAAE,GAAI,IAAI,EACnBA,KAAK,IAAI,EAAE,GAAI,IAAI,EACnBA,KAAK,IAAI,CAAC,GAAI,IAAI,EACnBA,KAAK,GAAG,IACV,CAAC;AACH;AAEA,SAAS4C,eAAUA,CAAC9C,GAAG,EAAE;EACvB,OAAOI,MAAM,CAAC2C,IAAI,CAAC/C,GAAG,CAAC,CAACb,MAAM;AAChC;AAGA,SAAS6D,cAAcA,CAAA,EAAG;EACxB,MAAMC,OAAO,GAAG,IAAIN,UAAU,CAAC,CAAC,CAAC;EACjCM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;EACd,MAAMC,MAAM,GAAG,IAAIC,WAAW,CAACF,OAAO,CAACG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;EACpD,OAAOF,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AACxB;AAGA,SAASG,eAAeA,CAAA,EAAG;EACzB,IAAI;IACF,IAAIC,QAAQ,CAAC,EAAE,CAAC;IAChB,OAAO,IAAI;EACb,CAAC,CAAC,MAAM;IACN,OAAO,KAAK;EACd;AACF;AAEA,MAAMC,gBAAW,CAAC;EAChB,WAAWP,cAAcA,CAAA,EAAG;IAC1B,OAAOjD,MAAM,CAAC,IAAI,EAAE,gBAAgB,EAAEiD,cAAc,CAAC,CAAC,CAAC;EACzD;EAEA,WAAWK,eAAeA,CAAA,EAAG;IAC3B,OAAOtD,MAAM,CAAC,IAAI,EAAE,iBAAiB,EAAEsD,eAAe,CAAC,CAAC,CAAC;EAC3D;EAEA,WAAWG,0BAA0BA,CAAA,EAAG;IACtC,OAAOzD,MAAM,CACX,IAAI,EACJ,4BAA4B,EAC5B,OAAO0D,eAAe,KAAK,WAC7B,CAAC;EACH;EAEA,WAAWC,uBAAuBA,CAAA,EAAG;IACnC,OAAO3D,MAAM,CACX,IAAI,EACJ,yBAAyB,EACzB,OAAO4D,YAAY,KAAK,WAC1B,CAAC;EACH;EAEA,WAAWC,QAAQA,CAAA,EAAG;IACpB,IAEG,OAAOC,SAAS,KAAK,WAAW,IAC/B,OAAOA,SAAS,EAAED,QAAQ,KAAK,QAAQ,IACvC,OAAOC,SAAS,EAAEC,SAAS,KAAK,QAAQ,EAC1C;MACA,MAAM;QAAEF,QAAQ;QAAEE;MAAU,CAAC,GAAGD,SAAS;MAEzC,OAAO9D,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE;QAC9BgE,SAAS,EAAED,SAAS,CAACE,QAAQ,CAAC,SAAS,CAAC;QACxCC,OAAO,EAAEL,QAAQ,CAACI,QAAQ,CAAC,OAAO,CAAC;QACnCE,KAAK,EAAEN,QAAQ,CAACI,QAAQ,CAAC,KAAK,CAAC;QAC/BG,SAAS,EAAEP,QAAQ,CAACI,QAAQ,CAAC,KAAK,CAAC;QACnCI,SAAS,EAEPN,SAAS,CAACE,QAAQ,CAAC,SAAS;MAChC,CAAC,CAAC;IACJ;IACA,OAAOjE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE;MAC9BgE,SAAS,EAAE,KAAK;MAChBE,OAAO,EAAE,KAAK;MACdC,KAAK,EAAE,KAAK;MACZC,SAAS,EAAE,KAAK;MAChBC,SAAS,EAAE;IACb,CAAC,CAAC;EACJ;EAEA,WAAWC,mBAAmBA,CAAA,EAAG;IAC/B,OAAOtE,MAAM,CACX,IAAI,EACJ,qBAAqB,EACrBuE,UAAU,CAACC,GAAG,EAAEC,QAAQ,GAAG,0BAA0B,CACvD,CAAC;EACH;AACF;AAEA,MAAMC,eAAU,GAAGC,KAAK,CAACC,IAAI,CAACD,KAAK,CAAC,GAAG,CAAC,CAAC3B,IAAI,CAAC,CAAC,EAAE6B,CAAC,IAChDA,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAChC,CAAC;AAED,MAAMC,SAAI,CAAC;EACT,OAAOC,YAAYA,CAACC,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAE;IAC3B,OAAO,IAAIV,eAAU,CAACQ,CAAC,CAAC,GAAGR,eAAU,CAACS,CAAC,CAAC,GAAGT,eAAU,CAACU,CAAC,CAAC,EAAE;EAC5D;EAKA,OAAOC,WAAWA,CAAC9M,SAAS,EAAE+M,MAAM,EAAE;IACpC,IAAIC,IAAI;IACR,IAAIhN,SAAS,CAAC,CAAC,CAAC,EAAE;MAChB,IAAIA,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;QACpBgN,IAAI,GAAGD,MAAM,CAAC,CAAC,CAAC;QAChBA,MAAM,CAAC,CAAC,CAAC,GAAGA,MAAM,CAAC,CAAC,CAAC;QACrBA,MAAM,CAAC,CAAC,CAAC,GAAGC,IAAI;MAClB;MACAD,MAAM,CAAC,CAAC,CAAC,IAAI/M,SAAS,CAAC,CAAC,CAAC;MACzB+M,MAAM,CAAC,CAAC,CAAC,IAAI/M,SAAS,CAAC,CAAC,CAAC;MAEzB,IAAIA,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;QACpBgN,IAAI,GAAGD,MAAM,CAAC,CAAC,CAAC;QAChBA,MAAM,CAAC,CAAC,CAAC,GAAGA,MAAM,CAAC,CAAC,CAAC;QACrBA,MAAM,CAAC,CAAC,CAAC,GAAGC,IAAI;MAClB;MACAD,MAAM,CAAC,CAAC,CAAC,IAAI/M,SAAS,CAAC,CAAC,CAAC;MACzB+M,MAAM,CAAC,CAAC,CAAC,IAAI/M,SAAS,CAAC,CAAC,CAAC;IAC3B,CAAC,MAAM;MACLgN,IAAI,GAAGD,MAAM,CAAC,CAAC,CAAC;MAChBA,MAAM,CAAC,CAAC,CAAC,GAAGA,MAAM,CAAC,CAAC,CAAC;MACrBA,MAAM,CAAC,CAAC,CAAC,GAAGC,IAAI;MAChBA,IAAI,GAAGD,MAAM,CAAC,CAAC,CAAC;MAChBA,MAAM,CAAC,CAAC,CAAC,GAAGA,MAAM,CAAC,CAAC,CAAC;MACrBA,MAAM,CAAC,CAAC,CAAC,GAAGC,IAAI;MAEhB,IAAIhN,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;QACpBgN,IAAI,GAAGD,MAAM,CAAC,CAAC,CAAC;QAChBA,MAAM,CAAC,CAAC,CAAC,GAAGA,MAAM,CAAC,CAAC,CAAC;QACrBA,MAAM,CAAC,CAAC,CAAC,GAAGC,IAAI;MAClB;MACAD,MAAM,CAAC,CAAC,CAAC,IAAI/M,SAAS,CAAC,CAAC,CAAC;MACzB+M,MAAM,CAAC,CAAC,CAAC,IAAI/M,SAAS,CAAC,CAAC,CAAC;MAEzB,IAAIA,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;QACpBgN,IAAI,GAAGD,MAAM,CAAC,CAAC,CAAC;QAChBA,MAAM,CAAC,CAAC,CAAC,GAAGA,MAAM,CAAC,CAAC,CAAC;QACrBA,MAAM,CAAC,CAAC,CAAC,GAAGC,IAAI;MAClB;MACAD,MAAM,CAAC,CAAC,CAAC,IAAI/M,SAAS,CAAC,CAAC,CAAC;MACzB+M,MAAM,CAAC,CAAC,CAAC,IAAI/M,SAAS,CAAC,CAAC,CAAC;IAC3B;IACA+M,MAAM,CAAC,CAAC,CAAC,IAAI/M,SAAS,CAAC,CAAC,CAAC;IACzB+M,MAAM,CAAC,CAAC,CAAC,IAAI/M,SAAS,CAAC,CAAC,CAAC;IACzB+M,MAAM,CAAC,CAAC,CAAC,IAAI/M,SAAS,CAAC,CAAC,CAAC;IACzB+M,MAAM,CAAC,CAAC,CAAC,IAAI/M,SAAS,CAAC,CAAC,CAAC;EAC3B;EAGA,OAAOA,SAASA,CAACiN,EAAE,EAAEC,EAAE,EAAE;IACvB,OAAO,CACLD,EAAE,CAAC,CAAC,CAAC,GAAGC,EAAE,CAAC,CAAC,CAAC,GAAGD,EAAE,CAAC,CAAC,CAAC,GAAGC,EAAE,CAAC,CAAC,CAAC,EAC7BD,EAAE,CAAC,CAAC,CAAC,GAAGC,EAAE,CAAC,CAAC,CAAC,GAAGD,EAAE,CAAC,CAAC,CAAC,GAAGC,EAAE,CAAC,CAAC,CAAC,EAC7BD,EAAE,CAAC,CAAC,CAAC,GAAGC,EAAE,CAAC,CAAC,CAAC,GAAGD,EAAE,CAAC,CAAC,CAAC,GAAGC,EAAE,CAAC,CAAC,CAAC,EAC7BD,EAAE,CAAC,CAAC,CAAC,GAAGC,EAAE,CAAC,CAAC,CAAC,GAAGD,EAAE,CAAC,CAAC,CAAC,GAAGC,EAAE,CAAC,CAAC,CAAC,EAC7BD,EAAE,CAAC,CAAC,CAAC,GAAGC,EAAE,CAAC,CAAC,CAAC,GAAGD,EAAE,CAAC,CAAC,CAAC,GAAGC,EAAE,CAAC,CAAC,CAAC,GAAGD,EAAE,CAAC,CAAC,CAAC,EACrCA,EAAE,CAAC,CAAC,CAAC,GAAGC,EAAE,CAAC,CAAC,CAAC,GAAGD,EAAE,CAAC,CAAC,CAAC,GAAGC,EAAE,CAAC,CAAC,CAAC,GAAGD,EAAE,CAAC,CAAC,CAAC,CACtC;EACH;EAGA,OAAOE,cAAcA,CAACC,CAAC,EAAEC,CAAC,EAAEC,GAAG,GAAG,CAAC,EAAE;IACnC,MAAMC,EAAE,GAAGH,CAAC,CAACE,GAAG,CAAC;IACjB,MAAME,EAAE,GAAGJ,CAAC,CAACE,GAAG,GAAG,CAAC,CAAC;IACrBF,CAAC,CAACE,GAAG,CAAC,GAAGC,EAAE,GAAGF,CAAC,CAAC,CAAC,CAAC,GAAGG,EAAE,GAAGH,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;IACrCD,CAAC,CAACE,GAAG,GAAG,CAAC,CAAC,GAAGC,EAAE,GAAGF,CAAC,CAAC,CAAC,CAAC,GAAGG,EAAE,GAAGH,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;EAC3C;EAEA,OAAOI,sBAAsBA,CAACL,CAAC,EAAEpN,SAAS,EAAEsN,GAAG,GAAG,CAAC,EAAE;IACnD,MAAMI,EAAE,GAAG1N,SAAS,CAAC,CAAC,CAAC;IACvB,MAAMiN,EAAE,GAAGjN,SAAS,CAAC,CAAC,CAAC;IACvB,MAAMkN,EAAE,GAAGlN,SAAS,CAAC,CAAC,CAAC;IACvB,MAAM2N,EAAE,GAAG3N,SAAS,CAAC,CAAC,CAAC;IACvB,MAAM4N,EAAE,GAAG5N,SAAS,CAAC,CAAC,CAAC;IACvB,MAAM6N,EAAE,GAAG7N,SAAS,CAAC,CAAC,CAAC;IACvB,KAAK,IAAI2J,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,CAAC,EAAE;MAC7B,MAAMmE,EAAE,GAAGV,CAAC,CAACE,GAAG,GAAG3D,CAAC,CAAC;MACrB,MAAMoE,GAAG,GAAGX,CAAC,CAACE,GAAG,GAAG3D,CAAC,GAAG,CAAC,CAAC;MAC1ByD,CAAC,CAACE,GAAG,GAAG3D,CAAC,CAAC,GAAGmE,EAAE,GAAGJ,EAAE,GAAGK,GAAG,GAAGb,EAAE,GAAGU,EAAE;MACpCR,CAAC,CAACE,GAAG,GAAG3D,CAAC,GAAG,CAAC,CAAC,GAAGmE,EAAE,GAAGb,EAAE,GAAGc,GAAG,GAAGJ,EAAE,GAAGE,EAAE;IAC1C;EACF;EAEA,OAAOG,qBAAqBA,CAACZ,CAAC,EAAEC,CAAC,EAAE;IACjC,MAAME,EAAE,GAAGH,CAAC,CAAC,CAAC,CAAC;IACf,MAAMI,EAAE,GAAGJ,CAAC,CAAC,CAAC,CAAC;IACf,MAAMa,CAAC,GAAGZ,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;IACnCD,CAAC,CAAC,CAAC,CAAC,GAAG,CAACG,EAAE,GAAGF,CAAC,CAAC,CAAC,CAAC,GAAGG,EAAE,GAAGH,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,IAAIY,CAAC;IAC9Db,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAACG,EAAE,GAAGF,CAAC,CAAC,CAAC,CAAC,GAAGG,EAAE,GAAGH,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,IAAIY,CAAC;EACjE;EAIA,OAAOC,uBAAuBA,CAACC,IAAI,EAAEnO,SAAS,EAAEoO,MAAM,EAAE;IACtD,MAAMV,EAAE,GAAG1N,SAAS,CAAC,CAAC,CAAC;IACvB,MAAMiN,EAAE,GAAGjN,SAAS,CAAC,CAAC,CAAC;IACvB,MAAMkN,EAAE,GAAGlN,SAAS,CAAC,CAAC,CAAC;IACvB,MAAM2N,EAAE,GAAG3N,SAAS,CAAC,CAAC,CAAC;IACvB,MAAM4N,EAAE,GAAG5N,SAAS,CAAC,CAAC,CAAC;IACvB,MAAM6N,EAAE,GAAG7N,SAAS,CAAC,CAAC,CAAC;IACvB,MAAMqO,EAAE,GAAGF,IAAI,CAAC,CAAC,CAAC;IAClB,MAAMG,EAAE,GAAGH,IAAI,CAAC,CAAC,CAAC;IAClB,MAAMI,EAAE,GAAGJ,IAAI,CAAC,CAAC,CAAC;IAClB,MAAMK,EAAE,GAAGL,IAAI,CAAC,CAAC,CAAC;IAElB,IAAIM,EAAE,GAAGf,EAAE,GAAGW,EAAE,GAAGT,EAAE;IACrB,IAAIc,EAAE,GAAGD,EAAE;IACX,IAAIE,EAAE,GAAGjB,EAAE,GAAGa,EAAE,GAAGX,EAAE;IACrB,IAAIgB,EAAE,GAAGD,EAAE;IACX,IAAIE,EAAE,GAAGlB,EAAE,GAAGW,EAAE,GAAGT,EAAE;IACrB,IAAIiB,EAAE,GAAGD,EAAE;IACX,IAAIE,EAAE,GAAGpB,EAAE,GAAGa,EAAE,GAAGX,EAAE;IACrB,IAAImB,EAAE,GAAGD,EAAE;IAEX,IAAI9B,EAAE,KAAK,CAAC,IAAIC,EAAE,KAAK,CAAC,EAAE;MAExB,MAAM+B,IAAI,GAAGhC,EAAE,GAAGoB,EAAE;MACpB,MAAMa,IAAI,GAAGjC,EAAE,GAAGsB,EAAE;MACpB,MAAMY,IAAI,GAAGjC,EAAE,GAAGoB,EAAE;MACpB,MAAMc,IAAI,GAAGlC,EAAE,GAAGsB,EAAE;MACpBC,EAAE,IAAIU,IAAI;MACVP,EAAE,IAAIO,IAAI;MACVR,EAAE,IAAIS,IAAI;MACVV,EAAE,IAAIU,IAAI;MACVP,EAAE,IAAII,IAAI;MACVD,EAAE,IAAIC,IAAI;MACVF,EAAE,IAAIG,IAAI;MACVJ,EAAE,IAAII,IAAI;IACZ;IAEAd,MAAM,CAAC,CAAC,CAAC,GAAGvE,IAAI,CAACC,GAAG,CAACsE,MAAM,CAAC,CAAC,CAAC,EAAEK,EAAE,EAAEE,EAAE,EAAED,EAAE,EAAEE,EAAE,CAAC;IAC/CR,MAAM,CAAC,CAAC,CAAC,GAAGvE,IAAI,CAACC,GAAG,CAACsE,MAAM,CAAC,CAAC,CAAC,EAAES,EAAE,EAAEE,EAAE,EAAED,EAAE,EAAEE,EAAE,CAAC;IAC/CZ,MAAM,CAAC,CAAC,CAAC,GAAGvE,IAAI,CAACwF,GAAG,CAACjB,MAAM,CAAC,CAAC,CAAC,EAAEK,EAAE,EAAEE,EAAE,EAAED,EAAE,EAAEE,EAAE,CAAC;IAC/CR,MAAM,CAAC,CAAC,CAAC,GAAGvE,IAAI,CAACwF,GAAG,CAACjB,MAAM,CAAC,CAAC,CAAC,EAAES,EAAE,EAAEE,EAAE,EAAED,EAAE,EAAEE,EAAE,CAAC;EACjD;EAEA,OAAOM,gBAAgBA,CAACjC,CAAC,EAAE;IACzB,MAAMY,CAAC,GAAGZ,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,CACLA,CAAC,CAAC,CAAC,CAAC,GAAGY,CAAC,EACR,CAACZ,CAAC,CAAC,CAAC,CAAC,GAAGY,CAAC,EACT,CAACZ,CAAC,CAAC,CAAC,CAAC,GAAGY,CAAC,EACTZ,CAAC,CAAC,CAAC,CAAC,GAAGY,CAAC,EACR,CAACZ,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,IAAIY,CAAC,EAC/B,CAACZ,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,IAAIY,CAAC,CAChC;EACH;EAKA,OAAOsB,6BAA6BA,CAACC,MAAM,EAAEpB,MAAM,EAAE;IACnD,MAAMV,EAAE,GAAG8B,MAAM,CAAC,CAAC,CAAC;IACpB,MAAMvC,EAAE,GAAGuC,MAAM,CAAC,CAAC,CAAC;IACpB,MAAMtC,EAAE,GAAGsC,MAAM,CAAC,CAAC,CAAC;IACpB,MAAM7B,EAAE,GAAG6B,MAAM,CAAC,CAAC,CAAC;IAEpB,MAAMC,CAAC,GAAG/B,EAAE,IAAI,CAAC,GAAGT,EAAE,IAAI,CAAC;IAC3B,MAAMJ,CAAC,GAAGa,EAAE,GAAGR,EAAE,GAAGD,EAAE,GAAGU,EAAE;IAC3B,MAAM+B,CAAC,GAAGxC,EAAE,IAAI,CAAC,GAAGS,EAAE,IAAI,CAAC;IAG3B,MAAMgC,KAAK,GAAG,CAACF,CAAC,GAAGC,CAAC,IAAI,CAAC;IACzB,MAAME,MAAM,GAAG/F,IAAI,CAACgG,IAAI,CAACF,KAAK,IAAI,CAAC,IAAIF,CAAC,GAAGC,CAAC,GAAG7C,CAAC,IAAI,CAAC,CAAC,CAAC;IACvDuB,MAAM,CAAC,CAAC,CAAC,GAAGvE,IAAI,CAACgG,IAAI,CAACF,KAAK,GAAGC,MAAM,IAAI,CAAC,CAAC;IAC1CxB,MAAM,CAAC,CAAC,CAAC,GAAGvE,IAAI,CAACgG,IAAI,CAACF,KAAK,GAAGC,MAAM,IAAI,CAAC,CAAC;EAC5C;EAMA,OAAOE,aAAaA,CAAC3B,IAAI,EAAE;IACzB,MAAMxB,CAAC,GAAGwB,IAAI,CAAC4B,KAAK,CAAC,CAAC,CAAC;IACvB,IAAI5B,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC,EAAE;MACrBxB,CAAC,CAAC,CAAC,CAAC,GAAGwB,IAAI,CAAC,CAAC,CAAC;MACdxB,CAAC,CAAC,CAAC,CAAC,GAAGwB,IAAI,CAAC,CAAC,CAAC;IAChB;IACA,IAAIA,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC,EAAE;MACrBxB,CAAC,CAAC,CAAC,CAAC,GAAGwB,IAAI,CAAC,CAAC,CAAC;MACdxB,CAAC,CAAC,CAAC,CAAC,GAAGwB,IAAI,CAAC,CAAC,CAAC;IAChB;IACA,OAAOxB,CAAC;EACV;EAKA,OAAOqD,SAASA,CAACC,KAAK,EAAEC,KAAK,EAAE;IAC7B,MAAMC,IAAI,GAAGtG,IAAI,CAACwF,GAAG,CACnBxF,IAAI,CAACC,GAAG,CAACmG,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC,EAC5BpG,IAAI,CAACC,GAAG,CAACoG,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAC7B,CAAC;IACD,MAAME,KAAK,GAAGvG,IAAI,CAACC,GAAG,CACpBD,IAAI,CAACwF,GAAG,CAACY,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC,EAC5BpG,IAAI,CAACwF,GAAG,CAACa,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAC7B,CAAC;IACD,IAAIC,IAAI,GAAGC,KAAK,EAAE;MAChB,OAAO,IAAI;IACb;IACA,MAAMC,IAAI,GAAGxG,IAAI,CAACwF,GAAG,CACnBxF,IAAI,CAACC,GAAG,CAACmG,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC,EAC5BpG,IAAI,CAACC,GAAG,CAACoG,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAC7B,CAAC;IACD,MAAMI,KAAK,GAAGzG,IAAI,CAACC,GAAG,CACpBD,IAAI,CAACwF,GAAG,CAACY,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC,EAC5BpG,IAAI,CAACwF,GAAG,CAACa,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAC7B,CAAC;IACD,IAAIG,IAAI,GAAGC,KAAK,EAAE;MAChB,OAAO,IAAI;IACb;IAEA,OAAO,CAACH,IAAI,EAAEE,IAAI,EAAED,KAAK,EAAEE,KAAK,CAAC;EACnC;EAEA,OAAOC,gBAAgBA,CAACC,CAAC,EAAEC,CAAC,EAAE1D,MAAM,EAAE;IACpCA,MAAM,CAAC,CAAC,CAAC,GAAGlD,IAAI,CAACC,GAAG,CAACiD,MAAM,CAAC,CAAC,CAAC,EAAEyD,CAAC,CAAC;IAClCzD,MAAM,CAAC,CAAC,CAAC,GAAGlD,IAAI,CAACC,GAAG,CAACiD,MAAM,CAAC,CAAC,CAAC,EAAE0D,CAAC,CAAC;IAClC1D,MAAM,CAAC,CAAC,CAAC,GAAGlD,IAAI,CAACwF,GAAG,CAACtC,MAAM,CAAC,CAAC,CAAC,EAAEyD,CAAC,CAAC;IAClCzD,MAAM,CAAC,CAAC,CAAC,GAAGlD,IAAI,CAACwF,GAAG,CAACtC,MAAM,CAAC,CAAC,CAAC,EAAE0D,CAAC,CAAC;EACpC;EAEA,OAAOC,eAAeA,CAACC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE/D,MAAM,EAAE;IAC7CA,MAAM,CAAC,CAAC,CAAC,GAAGlD,IAAI,CAACC,GAAG,CAACiD,MAAM,CAAC,CAAC,CAAC,EAAE4D,EAAE,EAAEE,EAAE,CAAC;IACvC9D,MAAM,CAAC,CAAC,CAAC,GAAGlD,IAAI,CAACC,GAAG,CAACiD,MAAM,CAAC,CAAC,CAAC,EAAE6D,EAAE,EAAEE,EAAE,CAAC;IACvC/D,MAAM,CAAC,CAAC,CAAC,GAAGlD,IAAI,CAACwF,GAAG,CAACtC,MAAM,CAAC,CAAC,CAAC,EAAE4D,EAAE,EAAEE,EAAE,CAAC;IACvC9D,MAAM,CAAC,CAAC,CAAC,GAAGlD,IAAI,CAACwF,GAAG,CAACtC,MAAM,CAAC,CAAC,CAAC,EAAE6D,EAAE,EAAEE,EAAE,CAAC;EACzC;EAEA,OAAO,CAACC,kBAAkBC,CAACL,EAAE,EAAEE,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEN,EAAE,EAAEE,EAAE,EAAEK,EAAE,EAAEC,EAAE,EAAEC,CAAC,EAAEtE,MAAM,EAAE;IACpE,IAAIsE,CAAC,IAAI,CAAC,IAAIA,CAAC,IAAI,CAAC,EAAE;MACpB;IACF;IACA,MAAMC,EAAE,GAAG,CAAC,GAAGD,CAAC;IAChB,MAAME,EAAE,GAAGF,CAAC,GAAGA,CAAC;IAChB,MAAMG,GAAG,GAAGD,EAAE,GAAGF,CAAC;IAClB,MAAMb,CAAC,GAAGc,EAAE,IAAIA,EAAE,IAAIA,EAAE,GAAGX,EAAE,GAAG,CAAC,GAAGU,CAAC,GAAGR,EAAE,CAAC,GAAG,CAAC,GAAGU,EAAE,GAAGN,EAAE,CAAC,GAAGO,GAAG,GAAGN,EAAE;IACrE,MAAMT,CAAC,GAAGa,EAAE,IAAIA,EAAE,IAAIA,EAAE,GAAGV,EAAE,GAAG,CAAC,GAAGS,CAAC,GAAGP,EAAE,CAAC,GAAG,CAAC,GAAGS,EAAE,GAAGJ,EAAE,CAAC,GAAGK,GAAG,GAAGJ,EAAE;IACrErE,MAAM,CAAC,CAAC,CAAC,GAAGlD,IAAI,CAACC,GAAG,CAACiD,MAAM,CAAC,CAAC,CAAC,EAAEyD,CAAC,CAAC;IAClCzD,MAAM,CAAC,CAAC,CAAC,GAAGlD,IAAI,CAACC,GAAG,CAACiD,MAAM,CAAC,CAAC,CAAC,EAAE0D,CAAC,CAAC;IAClC1D,MAAM,CAAC,CAAC,CAAC,GAAGlD,IAAI,CAACwF,GAAG,CAACtC,MAAM,CAAC,CAAC,CAAC,EAAEyD,CAAC,CAAC;IAClCzD,MAAM,CAAC,CAAC,CAAC,GAAGlD,IAAI,CAACwF,GAAG,CAACtC,MAAM,CAAC,CAAC,CAAC,EAAE0D,CAAC,CAAC;EACpC;EAEA,OAAO,CAACgB,WAAWC,CAACf,EAAE,EAAEE,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEN,EAAE,EAAEE,EAAE,EAAEK,EAAE,EAAEC,EAAE,EAAE3B,CAAC,EAAE5C,CAAC,EAAE6C,CAAC,EAAE3C,MAAM,EAAE;IACnE,IAAIlD,IAAI,CAAC8H,GAAG,CAAClC,CAAC,CAAC,GAAG,KAAK,EAAE;MACvB,IAAI5F,IAAI,CAAC8H,GAAG,CAAC9E,CAAC,CAAC,IAAI,KAAK,EAAE;QACxB,IAAI,CAAC,CAACkE,kBAAkB,CACtBJ,EAAE,EACFE,EAAE,EACFI,EAAE,EACFC,EAAE,EACFN,EAAE,EACFE,EAAE,EACFK,EAAE,EACFC,EAAE,EACF,CAAC1B,CAAC,GAAG7C,CAAC,EACNE,MACF,CAAC;MACH;MACA;IACF;IAEA,MAAM6E,KAAK,GAAG/E,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG6C,CAAC,GAAGD,CAAC;IAChC,IAAImC,KAAK,GAAG,CAAC,EAAE;MACb;IACF;IACA,MAAMC,SAAS,GAAGhI,IAAI,CAACgG,IAAI,CAAC+B,KAAK,CAAC;IAClC,MAAMlD,EAAE,GAAG,CAAC,GAAGe,CAAC;IAChB,IAAI,CAAC,CAACsB,kBAAkB,CACtBJ,EAAE,EACFE,EAAE,EACFI,EAAE,EACFC,EAAE,EACFN,EAAE,EACFE,EAAE,EACFK,EAAE,EACFC,EAAE,EACF,CAAC,CAACvE,CAAC,GAAGgF,SAAS,IAAInD,EAAE,EACrB3B,MACF,CAAC;IACD,IAAI,CAAC,CAACgE,kBAAkB,CACtBJ,EAAE,EACFE,EAAE,EACFI,EAAE,EACFC,EAAE,EACFN,EAAE,EACFE,EAAE,EACFK,EAAE,EACFC,EAAE,EACF,CAAC,CAACvE,CAAC,GAAGgF,SAAS,IAAInD,EAAE,EACrB3B,MACF,CAAC;EACH;EAGA,OAAO+E,iBAAiBA,CAACnB,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEG,EAAE,EAAEE,EAAE,EAAED,EAAE,EAAEE,EAAE,EAAErE,MAAM,EAAE;IAC/DA,MAAM,CAAC,CAAC,CAAC,GAAGlD,IAAI,CAACC,GAAG,CAACiD,MAAM,CAAC,CAAC,CAAC,EAAE4D,EAAE,EAAEO,EAAE,CAAC;IACvCnE,MAAM,CAAC,CAAC,CAAC,GAAGlD,IAAI,CAACC,GAAG,CAACiD,MAAM,CAAC,CAAC,CAAC,EAAE6D,EAAE,EAAEQ,EAAE,CAAC;IACvCrE,MAAM,CAAC,CAAC,CAAC,GAAGlD,IAAI,CAACwF,GAAG,CAACtC,MAAM,CAAC,CAAC,CAAC,EAAE4D,EAAE,EAAEO,EAAE,CAAC;IACvCnE,MAAM,CAAC,CAAC,CAAC,GAAGlD,IAAI,CAACwF,GAAG,CAACtC,MAAM,CAAC,CAAC,CAAC,EAAE6D,EAAE,EAAEQ,EAAE,CAAC;IAEvC,IAAI,CAAC,CAACK,WAAW,CACfd,EAAE,EACFE,EAAE,EACFI,EAAE,EACFC,EAAE,EACFN,EAAE,EACFE,EAAE,EACFK,EAAE,EACFC,EAAE,EACF,CAAC,IAAI,CAACT,EAAE,GAAG,CAAC,IAAIE,EAAE,GAAGI,EAAE,CAAC,GAAGC,EAAE,CAAC,EAC9B,CAAC,IAAIP,EAAE,GAAG,CAAC,GAAGE,EAAE,GAAGI,EAAE,CAAC,EACtB,CAAC,IAAIJ,EAAE,GAAGF,EAAE,CAAC,EACb5D,MACF,CAAC;IACD,IAAI,CAAC,CAAC0E,WAAW,CACfd,EAAE,EACFE,EAAE,EACFI,EAAE,EACFC,EAAE,EACFN,EAAE,EACFE,EAAE,EACFK,EAAE,EACFC,EAAE,EACF,CAAC,IAAI,CAACR,EAAE,GAAG,CAAC,IAAIE,EAAE,GAAGK,EAAE,CAAC,GAAGC,EAAE,CAAC,EAC9B,CAAC,IAAIR,EAAE,GAAG,CAAC,GAAGE,EAAE,GAAGK,EAAE,CAAC,EACtB,CAAC,IAAIL,EAAE,GAAGF,EAAE,CAAC,EACb7D,MACF,CAAC;EACH;AACF;AAEA,MAAMgF,uBAAuB,GAAG,iDAC9B,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAC7E,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC7E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAC7E,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EA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EC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,CAClD;AAWD,MAAMC,iBAAiB,CAAC;EAEtBzc,WAAWA,CAACoV,IAAI,EAAElB,KAAK,EAAEN,GAAG,EAAE;IAC5B,IAAI,CAACwB,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACsH,EAAE,GAAGxI,KAAK;IACf,IAAI,CAACyI,OAAO,GAAG/I,GAAG;IAElB,IAAI,CAACgJ,KAAK,GAAGxH,IAAI,CAAClB,KAAK,CAAC;IACxB,IAAI,CAAC2I,IAAI,GAAG,CAAC;IAEb,IAAI,CAACC,MAAM,CAAC,CAAC;IAEb,IAAI,CAACF,KAAK,GAAK,IAAI,CAACA,KAAK,IAAI,CAAC,GAAI,MAAM,GAAM,IAAI,CAACC,IAAI,IAAI,CAAC,GAAI,IAAK;IACrE,IAAI,CAACA,IAAI,GAAI,IAAI,CAACA,IAAI,IAAI,CAAC,GAAI,MAAM;IACrC,IAAI,CAACE,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC9V,CAAC,GAAG,MAAM;EACjB;EAGA6V,MAAMA,CAAA,EAAG;IACP,MAAM1H,IAAI,GAAG,IAAI,CAACA,IAAI;IACtB,IAAIsH,EAAE,GAAG,IAAI,CAACA,EAAE;IAEhB,IAAItH,IAAI,CAACsH,EAAE,CAAC,KAAK,IAAI,EAAE;MACrB,IAAItH,IAAI,CAACsH,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE;QACvB,IAAI,CAACG,IAAI,IAAI,MAAM;QACnB,IAAI,CAACE,EAAE,GAAG,CAAC;MACb,CAAC,MAAM;QACLL,EAAE,EAAE;QACJ,IAAI,CAACG,IAAI,IAAIzH,IAAI,CAACsH,EAAE,CAAC,IAAI,CAAC;QAC1B,IAAI,CAACK,EAAE,GAAG,CAAC;QACX,IAAI,CAACL,EAAE,GAAGA,EAAE;MACd;IACF,CAAC,MAAM;MACLA,EAAE,EAAE;MACJ,IAAI,CAACG,IAAI,IAAIH,EAAE,GAAG,IAAI,CAACC,OAAO,GAAGvH,IAAI,CAACsH,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM;MACvD,IAAI,CAACK,EAAE,GAAG,CAAC;MACX,IAAI,CAACL,EAAE,GAAGA,EAAE;IACd;IACA,IAAI,IAAI,CAACG,IAAI,GAAG,MAAM,EAAE;MACtB,IAAI,CAACD,KAAK,IAAI,IAAI,CAACC,IAAI,IAAI,EAAE;MAC7B,IAAI,CAACA,IAAI,IAAI,MAAM;IACrB;EACF;EAGAG,OAAOA,CAACC,QAAQ,EAAEnY,GAAG,EAAE;IAGrB,IAAIoY,QAAQ,GAAGD,QAAQ,CAACnY,GAAG,CAAC,IAAI,CAAC;MAC/BqY,MAAM,GAAGF,QAAQ,CAACnY,GAAG,CAAC,GAAG,CAAC;IAC5B,MAAMsY,UAAU,GAAGhB,OAAO,CAACc,QAAQ,CAAC;IACpC,MAAMG,KAAK,GAAGD,UAAU,CAACf,EAAE;IAC3B,IAAI5W,CAAC;IACL,IAAIwB,CAAC,GAAG,IAAI,CAACA,CAAC,GAAGoW,KAAK;IAEtB,IAAI,IAAI,CAACT,KAAK,GAAGS,KAAK,EAAE;MAEtB,IAAIpW,CAAC,GAAGoW,KAAK,EAAE;QACbpW,CAAC,GAAGoW,KAAK;QACT5X,CAAC,GAAG0X,MAAM;QACVD,QAAQ,GAAGE,UAAU,CAACd,IAAI;MAC5B,CAAC,MAAM;QACLrV,CAAC,GAAGoW,KAAK;QACT5X,CAAC,GAAG,CAAC,GAAG0X,MAAM;QACd,IAAIC,UAAU,CAACZ,UAAU,KAAK,CAAC,EAAE;UAC/BW,MAAM,GAAG1X,CAAC;QACZ;QACAyX,QAAQ,GAAGE,UAAU,CAACb,IAAI;MAC5B;IACF,CAAC,MAAM;MACL,IAAI,CAACK,KAAK,IAAIS,KAAK;MACnB,IAAI,CAACpW,CAAC,GAAG,MAAM,MAAM,CAAC,EAAE;QACtB,IAAI,CAACA,CAAC,GAAGA,CAAC;QACV,OAAOkW,MAAM;MACf;MAEA,IAAIlW,CAAC,GAAGoW,KAAK,EAAE;QACb5X,CAAC,GAAG,CAAC,GAAG0X,MAAM;QACd,IAAIC,UAAU,CAACZ,UAAU,KAAK,CAAC,EAAE;UAC/BW,MAAM,GAAG1X,CAAC;QACZ;QACAyX,QAAQ,GAAGE,UAAU,CAACb,IAAI;MAC5B,CAAC,MAAM;QACL9W,CAAC,GAAG0X,MAAM;QACVD,QAAQ,GAAGE,UAAU,CAACd,IAAI;MAC5B;IACF;IAEA,GAAG;MACD,IAAI,IAAI,CAACS,EAAE,KAAK,CAAC,EAAE;QACjB,IAAI,CAACD,MAAM,CAAC,CAAC;MACf;MAEA7V,CAAC,KAAK,CAAC;MACP,IAAI,CAAC2V,KAAK,GAAK,IAAI,CAACA,KAAK,IAAI,CAAC,GAAI,MAAM,GAAM,IAAI,CAACC,IAAI,IAAI,EAAE,GAAI,CAAE;MACnE,IAAI,CAACA,IAAI,GAAI,IAAI,CAACA,IAAI,IAAI,CAAC,GAAI,MAAM;MACrC,IAAI,CAACE,EAAE,EAAE;IACX,CAAC,QAAQ,CAAC9V,CAAC,GAAG,MAAM,MAAM,CAAC;IAC3B,IAAI,CAACA,CAAC,GAAGA,CAAC;IAEVgW,QAAQ,CAACnY,GAAG,CAAC,GAAIoY,QAAQ,IAAI,CAAC,GAAIC,MAAM;IACxC,OAAO1X,CAAC;EACV;AACF;;;AC9JsD;AAQtD,MAAM6X,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAMC,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAMC,UAAU,GAAG,CAAC;AACpB,MAAMC,WAAW,GAAG,CAAC;AACrB,MAAMC,WAAW,GAAG,CAAC;AACrB,MAAMC,YAAY,GAAG,CAAC;AACtB,MAAMC,YAAY,GAAG,CAAC;AACtB,MAAMC,YAAY,GAAG,CAAC;AACtB,MAAMC,YAAY,GAAG,CAAC;AACtB,MAAMC,YAAY,GAAG,CAAC;AACtB,MAAMC,YAAY,GAAG,CAAC;AAGtB,MAAMC,WAAW,GAAG,CAClB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAClB,CAAC,CAAC,EAAED,YAAY,CAAC,EACjB,CAAC,CAAC,EAAED,YAAY,CAAC,EACjB,CAAC,CAAC,EAAED,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAED,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEL,UAAU,CAAC,EAAE,CAAC,CAAC,EAAEA,UAAU,CAAC,EAChC,CAAC,CAAC,EAAEA,UAAU,CAAC,EAAE,CAAC,CAAC,EAAEA,UAAU,CAAC,EAChC,CAAC,CAAC,EAAEA,UAAU,CAAC,EAAE,CAAC,CAAC,EAAEA,UAAU,CAAC,EAChC,CAAC,CAAC,EAAEA,UAAU,CAAC,EAAE,CAAC,CAAC,EAAEA,UAAU,CAAC,EAChC,CAAC,CAAC,EAAEC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEG,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAED,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAED,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAA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,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACd,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAC1C,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAC1C,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAC/B;AAGD,MAAMC,WAAW,GAAG,CAClB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAClB,CAAC,EAAE,EAAEd,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAEA,QAAQ,CAAC,EAC9B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACtC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACtC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACtC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACtC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACtC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACtC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACtC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAC9C,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAC9C,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAC9C,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EACpB,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EACpB,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EACpB,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CACvC;AAGD,MAAMe,WAAW,GAAG,CAClB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CACnC;AAGD,MAAMC,WAAW,GAAG,CAClB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACtC,CAAC,CAAC,EAAE,CAAC,CAAC,EACN,CAAC,CAAC,EAAE,CAAC,CAAC,EACN,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAC/B;AAMD,MAAMC,eAAe,CAAC;EACpBve,WAAWA,CAACwe,MAAM,EAAExgB,OAAO,GAAG,CAAC,CAAC,EAAE;IAChC,IAAI,OAAOwgB,MAAM,EAAEC,IAAI,KAAK,UAAU,EAAE;MACtC,MAAM,IAAIjhB,KAAK,CAAC,+CAA+C,CAAC;IAClE;IACA,IAAI,CAACghB,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACE,GAAG,GAAG,KAAK;IAEhB,IAAI,CAACjV,QAAQ,GAAGzL,OAAO,CAACpI,CAAC,IAAI,CAAC;IAC9B,IAAI,CAAC+oB,MAAM,GAAG3gB,OAAO,CAAC4gB,SAAS,IAAI,KAAK;IACxC,IAAI,CAACC,SAAS,GAAG7gB,OAAO,CAAC8gB,gBAAgB,IAAI,KAAK;IAClD,IAAI,CAACC,OAAO,GAAG/gB,OAAO,CAACghB,OAAO,IAAI,IAAI;IACtC,IAAI,CAACC,IAAI,GAAGjhB,OAAO,CAACkhB,IAAI,IAAI,CAAC;IAC7B,IAAI,CAACC,OAAO,GAAGnhB,OAAO,CAACohB,UAAU,IAAI,IAAI;IACzC,IAAI,CAACC,KAAK,GAAGrhB,OAAO,CAACshB,QAAQ,IAAI,KAAK;IAEtC,IAAI,CAACC,UAAU,GAAG,IAAIld,WAAW,CAAC,IAAI,CAAC0c,OAAO,GAAG,CAAC,CAAC;IACnD,IAAI,CAACS,OAAO,GAAG,IAAInd,WAAW,CAAC,IAAI,CAAC0c,OAAO,GAAG,CAAC,CAAC;IAEhD,IAAI,CAACQ,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAACR,OAAO;IACjC,IAAI,CAACU,SAAS,GAAG,CAAC;IAElB,IAAI,CAACC,GAAG,GAAG,CAAC;IACZ,IAAI,CAACC,UAAU,GAAG,IAAI,CAAClW,QAAQ,GAAG,CAAC;IACnC,IAAI,CAACmW,SAAS,GAAG,CAAC;IAClB,IAAI,CAACC,QAAQ,GAAG,CAAC;IACjB,IAAI,CAACC,UAAU,GAAG,CAAC;IACnB,IAAI,CAACC,QAAQ,GAAG,KAAK;IAErB,IAAIC,KAAK;IACT,OAAO,CAACA,KAAK,GAAG,IAAI,CAACC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;MACzC,IAAI,CAACC,QAAQ,CAAC,CAAC,CAAC;IAClB;IACA,IAAIF,KAAK,KAAK,CAAC,EAAE;MACf,IAAI,CAACE,QAAQ,CAAC,EAAE,CAAC;IACnB;IACA,IAAI,IAAI,CAACzW,QAAQ,GAAG,CAAC,EAAE;MACrB,IAAI,CAACkW,UAAU,GAAG,CAAC,IAAI,CAACM,SAAS,CAAC,CAAC,CAAC;MACpC,IAAI,CAACC,QAAQ,CAAC,CAAC,CAAC;IAClB;EACF;EAEAC,YAAYA,CAAA,EAAG;IACb,IAAI,IAAI,CAACzB,GAAG,EAAE;MACZ,OAAO,CAAC,CAAC;IACX;IACA,MAAMc,OAAO,GAAG,IAAI,CAACA,OAAO;IAC5B,MAAMD,UAAU,GAAG,IAAI,CAACA,UAAU;IAClC,MAAMR,OAAO,GAAG,IAAI,CAACA,OAAO;IAE5B,IAAIqB,MAAM,EAAEC,WAAW,EAAEC,IAAI,EAAEnf,CAAC;IAEhC,IAAI,IAAI,CAAC2e,UAAU,KAAK,CAAC,EAAE;MACzB,IAAI,IAAI,CAACC,QAAQ,EAAE;QACjB,IAAI,CAACrB,GAAG,GAAG,IAAI;MACjB;MACA,IAAI,IAAI,CAACA,GAAG,EAAE;QACZ,OAAO,CAAC,CAAC;MACX;MACA,IAAI,CAAC6B,GAAG,GAAG,KAAK;MAEhB,IAAIP,KAAK,EAAEQ,KAAK,EAAEC,KAAK;MACvB,IAAI,IAAI,CAACd,UAAU,EAAE;QACnB,KAAKxe,CAAC,GAAG,CAAC,EAAEoe,UAAU,CAACpe,CAAC,CAAC,GAAG4d,OAAO,EAAE,EAAE5d,CAAC,EAAE;UACxCqe,OAAO,CAACre,CAAC,CAAC,GAAGoe,UAAU,CAACpe,CAAC,CAAC;QAC5B;QACAqe,OAAO,CAACre,CAAC,EAAE,CAAC,GAAG4d,OAAO;QACtBS,OAAO,CAACre,CAAC,CAAC,GAAG4d,OAAO;QACpBQ,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;QACjB,IAAI,CAACE,SAAS,GAAG,CAAC;QAClBW,MAAM,GAAG,CAAC;QACVC,WAAW,GAAG,CAAC;QAEf,OAAOd,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,GAAGV,OAAO,EAAE;UAC3CiB,KAAK,GAAG,IAAI,CAACU,cAAc,CAAC,CAAC;UAC7B,QAAQV,KAAK;YACX,KAAKxC,UAAU;cACb,IAAI,CAACmD,UAAU,CAACnB,OAAO,CAACY,MAAM,GAAG,CAAC,CAAC,EAAEC,WAAW,CAAC;cACjD,IAAIb,OAAO,CAACY,MAAM,GAAG,CAAC,CAAC,GAAGrB,OAAO,EAAE;gBACjCqB,MAAM,IAAI,CAAC;cACb;cACA;YACF,KAAK3C,WAAW;cACduC,KAAK,GAAGQ,KAAK,GAAG,CAAC;cACjB,IAAIH,WAAW,EAAE;gBACf,GAAG;kBACDL,KAAK,IAAIS,KAAK,GAAG,IAAI,CAACG,aAAa,CAAC,CAAC;gBACvC,CAAC,QAAQH,KAAK,IAAI,EAAE;gBACpB,GAAG;kBACDD,KAAK,IAAIC,KAAK,GAAG,IAAI,CAACI,aAAa,CAAC,CAAC;gBACvC,CAAC,QAAQJ,KAAK,IAAI,EAAE;cACtB,CAAC,MAAM;gBACL,GAAG;kBACDT,KAAK,IAAIS,KAAK,GAAG,IAAI,CAACI,aAAa,CAAC,CAAC;gBACvC,CAAC,QAAQJ,KAAK,IAAI,EAAE;gBACpB,GAAG;kBACDD,KAAK,IAAIC,KAAK,GAAG,IAAI,CAACG,aAAa,CAAC,CAAC;gBACvC,CAAC,QAAQH,KAAK,IAAI,EAAE;cACtB;cACA,IAAI,CAACE,UAAU,CAACpB,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,GAAGO,KAAK,EAAEK,WAAW,CAAC;cAChE,IAAId,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,GAAGV,OAAO,EAAE;gBACxC,IAAI,CAAC4B,UAAU,CACbpB,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,GAAGe,KAAK,EAClCH,WAAW,GAAG,CAChB,CAAC;cACH;cACA,OACEb,OAAO,CAACY,MAAM,CAAC,IAAIb,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,IAC7CD,OAAO,CAACY,MAAM,CAAC,GAAGrB,OAAO,EACzB;gBACAqB,MAAM,IAAI,CAAC;cACb;cACA;YACF,KAAKrC,YAAY;cACf,IAAI,CAAC4C,UAAU,CAACnB,OAAO,CAACY,MAAM,CAAC,GAAG,CAAC,EAAEC,WAAW,CAAC;cACjDA,WAAW,IAAI,CAAC;cAChB,IAAId,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,GAAGV,OAAO,EAAE;gBACxC,EAAEqB,MAAM;gBACR,OACEZ,OAAO,CAACY,MAAM,CAAC,IAAIb,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,IAC7CD,OAAO,CAACY,MAAM,CAAC,GAAGrB,OAAO,EACzB;kBACAqB,MAAM,IAAI,CAAC;gBACb;cACF;cACA;YACF,KAAKvC,YAAY;cACf,IAAI,CAAC8C,UAAU,CAACnB,OAAO,CAACY,MAAM,CAAC,GAAG,CAAC,EAAEC,WAAW,CAAC;cACjDA,WAAW,IAAI,CAAC;cAChB,IAAId,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,GAAGV,OAAO,EAAE;gBACxC,EAAEqB,MAAM;gBACR,OACEZ,OAAO,CAACY,MAAM,CAAC,IAAIb,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,IAC7CD,OAAO,CAACY,MAAM,CAAC,GAAGrB,OAAO,EACzB;kBACAqB,MAAM,IAAI,CAAC;gBACb;cACF;cACA;YACF,KAAKzC,YAAY;cACf,IAAI,CAACgD,UAAU,CAACnB,OAAO,CAACY,MAAM,CAAC,GAAG,CAAC,EAAEC,WAAW,CAAC;cACjDA,WAAW,IAAI,CAAC;cAChB,IAAId,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,GAAGV,OAAO,EAAE;gBACxC,EAAEqB,MAAM;gBACR,OACEZ,OAAO,CAACY,MAAM,CAAC,IAAIb,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,IAC7CD,OAAO,CAACY,MAAM,CAAC,GAAGrB,OAAO,EACzB;kBACAqB,MAAM,IAAI,CAAC;gBACb;cACF;cACA;YACF,KAAK1C,WAAW;cACd,IAAI,CAACiD,UAAU,CAACnB,OAAO,CAACY,MAAM,CAAC,EAAEC,WAAW,CAAC;cAC7CA,WAAW,IAAI,CAAC;cAChB,IAAId,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,GAAGV,OAAO,EAAE;gBACxC,EAAEqB,MAAM;gBACR,OACEZ,OAAO,CAACY,MAAM,CAAC,IAAIb,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,IAC7CD,OAAO,CAACY,MAAM,CAAC,GAAGrB,OAAO,EACzB;kBACAqB,MAAM,IAAI,CAAC;gBACb;cACF;cACA;YACF,KAAKpC,YAAY;cACf,IAAI,CAAC8C,aAAa,CAACtB,OAAO,CAACY,MAAM,CAAC,GAAG,CAAC,EAAEC,WAAW,CAAC;cACpDA,WAAW,IAAI,CAAC;cAChB,IAAId,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,GAAGV,OAAO,EAAE;gBACxC,IAAIqB,MAAM,GAAG,CAAC,EAAE;kBACd,EAAEA,MAAM;gBACV,CAAC,MAAM;kBACL,EAAEA,MAAM;gBACV;gBACA,OACEZ,OAAO,CAACY,MAAM,CAAC,IAAIb,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,IAC7CD,OAAO,CAACY,MAAM,CAAC,GAAGrB,OAAO,EACzB;kBACAqB,MAAM,IAAI,CAAC;gBACb;cACF;cACA;YACF,KAAKtC,YAAY;cACf,IAAI,CAACgD,aAAa,CAACtB,OAAO,CAACY,MAAM,CAAC,GAAG,CAAC,EAAEC,WAAW,CAAC;cACpDA,WAAW,IAAI,CAAC;cAChB,IAAId,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,GAAGV,OAAO,EAAE;gBACxC,IAAIqB,MAAM,GAAG,CAAC,EAAE;kBACd,EAAEA,MAAM;gBACV,CAAC,MAAM;kBACL,EAAEA,MAAM;gBACV;gBACA,OACEZ,OAAO,CAACY,MAAM,CAAC,IAAIb,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,IAC7CD,OAAO,CAACY,MAAM,CAAC,GAAGrB,OAAO,EACzB;kBACAqB,MAAM,IAAI,CAAC;gBACb;cACF;cACA;YACF,KAAKxC,YAAY;cACf,IAAI,CAACkD,aAAa,CAACtB,OAAO,CAACY,MAAM,CAAC,GAAG,CAAC,EAAEC,WAAW,CAAC;cACpDA,WAAW,IAAI,CAAC;cAChB,IAAId,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,GAAGV,OAAO,EAAE;gBACxC,IAAIqB,MAAM,GAAG,CAAC,EAAE;kBACd,EAAEA,MAAM;gBACV,CAAC,MAAM;kBACL,EAAEA,MAAM;gBACV;gBACA,OACEZ,OAAO,CAACY,MAAM,CAAC,IAAIb,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,IAC7CD,OAAO,CAACY,MAAM,CAAC,GAAGrB,OAAO,EACzB;kBACAqB,MAAM,IAAI,CAAC;gBACb;cACF;cACA;YACF,KAAK7C,QAAQ;cACX,IAAI,CAACoD,UAAU,CAAC5B,OAAO,EAAE,CAAC,CAAC;cAC3B,IAAI,CAACL,GAAG,GAAG,IAAI;cACf;YACF;cACExhB,IAAI,CAAC,aAAa,CAAC;cACnB,IAAI,CAACyjB,UAAU,CAAC5B,OAAO,EAAE,CAAC,CAAC;cAC3B,IAAI,CAACwB,GAAG,GAAG,IAAI;UACnB;QACF;MACF,CAAC,MAAM;QACLhB,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;QACjB,IAAI,CAACE,SAAS,GAAG,CAAC;QAClBY,WAAW,GAAG,CAAC;QACf,OAAOd,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,GAAGV,OAAO,EAAE;UAC3CiB,KAAK,GAAG,CAAC;UACT,IAAIK,WAAW,EAAE;YACf,GAAG;cACDL,KAAK,IAAIS,KAAK,GAAG,IAAI,CAACG,aAAa,CAAC,CAAC;YACvC,CAAC,QAAQH,KAAK,IAAI,EAAE;UACtB,CAAC,MAAM;YACL,GAAG;cACDT,KAAK,IAAIS,KAAK,GAAG,IAAI,CAACI,aAAa,CAAC,CAAC;YACvC,CAAC,QAAQJ,KAAK,IAAI,EAAE;UACtB;UACA,IAAI,CAACE,UAAU,CAACpB,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,GAAGO,KAAK,EAAEK,WAAW,CAAC;UAChEA,WAAW,IAAI,CAAC;QAClB;MACF;MAEA,IAAIU,MAAM,GAAG,KAAK;MAElB,IAAI,IAAI,CAAClC,SAAS,EAAE;QAClB,IAAI,CAACe,SAAS,IAAI,CAAC,CAAC;MACtB;MAEA,IAAI,CAAC,IAAI,CAACT,OAAO,IAAI,IAAI,CAACO,GAAG,KAAK,IAAI,CAACT,IAAI,GAAG,CAAC,EAAE;QAC/C,IAAI,CAACc,QAAQ,GAAG,IAAI;MACtB,CAAC,MAAM;QACLC,KAAK,GAAG,IAAI,CAACC,SAAS,CAAC,EAAE,CAAC;QAC1B,IAAI,IAAI,CAACtB,MAAM,EAAE;UACf,OAAOqB,KAAK,KAAKzC,QAAQ,IAAIyC,KAAK,KAAK,CAAC,EAAE;YACxC,IAAI,CAACE,QAAQ,CAAC,CAAC,CAAC;YAChBF,KAAK,GAAG,IAAI,CAACC,SAAS,CAAC,EAAE,CAAC;UAC5B;QACF,CAAC,MAAM;UACL,OAAOD,KAAK,KAAK,CAAC,EAAE;YAClB,IAAI,CAACE,QAAQ,CAAC,CAAC,CAAC;YAChBF,KAAK,GAAG,IAAI,CAACC,SAAS,CAAC,EAAE,CAAC;UAC5B;QACF;QACA,IAAID,KAAK,KAAK,CAAC,EAAE;UACf,IAAI,CAACE,QAAQ,CAAC,EAAE,CAAC;UACjBa,MAAM,GAAG,IAAI;QACf,CAAC,MAAM,IAAIf,KAAK,KAAKzC,QAAQ,EAAE;UAC7B,IAAI,CAACmB,GAAG,GAAG,IAAI;QACjB;MACF;MAEA,IAAI,CAAC,IAAI,CAACA,GAAG,IAAI,IAAI,CAACjV,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAACsW,QAAQ,EAAE;QACpD,IAAI,CAACJ,UAAU,GAAG,CAAC,IAAI,CAACM,SAAS,CAAC,CAAC,CAAC;QACpC,IAAI,CAACC,QAAQ,CAAC,CAAC,CAAC;MAClB;MAEA,IAAI,IAAI,CAACf,OAAO,IAAI4B,MAAM,IAAI,IAAI,CAAClC,SAAS,EAAE;QAC5CmB,KAAK,GAAG,IAAI,CAACC,SAAS,CAAC,EAAE,CAAC;QAC1B,IAAID,KAAK,KAAK,CAAC,EAAE;UACf,IAAI,CAACE,QAAQ,CAAC,EAAE,CAAC;UACjB,IAAI,IAAI,CAACzW,QAAQ,GAAG,CAAC,EAAE;YACrB,IAAI,CAACwW,SAAS,CAAC,CAAC,CAAC;YACjB,IAAI,CAACC,QAAQ,CAAC,CAAC,CAAC;UAClB;UACA,IAAI,IAAI,CAACzW,QAAQ,IAAI,CAAC,EAAE;YACtB,KAAKtI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAE,EAAEA,CAAC,EAAE;cACtB6e,KAAK,GAAG,IAAI,CAACC,SAAS,CAAC,EAAE,CAAC;cAC1B,IAAID,KAAK,KAAK,CAAC,EAAE;gBACf9iB,IAAI,CAAC,gBAAgB,GAAG8iB,KAAK,CAAC;cAChC;cACA,IAAI,CAACE,QAAQ,CAAC,EAAE,CAAC;cACjB,IAAI,IAAI,CAACzW,QAAQ,GAAG,CAAC,EAAE;gBACrB,IAAI,CAACwW,SAAS,CAAC,CAAC,CAAC;gBACjB,IAAI,CAACC,QAAQ,CAAC,CAAC,CAAC;cAClB;YACF;UACF;UACA,IAAI,CAACxB,GAAG,GAAG,IAAI;QACjB;MACF,CAAC,MAAM,IAAI,IAAI,CAAC6B,GAAG,IAAI,IAAI,CAAC5B,MAAM,EAAE;QAClC,OAAO,IAAI,EAAE;UACXqB,KAAK,GAAG,IAAI,CAACC,SAAS,CAAC,EAAE,CAAC;UAC1B,IAAID,KAAK,KAAKzC,QAAQ,EAAE;YACtB,IAAI,CAACmB,GAAG,GAAG,IAAI;YACf,OAAO,CAAC,CAAC;UACX;UACA,IAAIsB,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE;YACpB;UACF;UACA,IAAI,CAACE,QAAQ,CAAC,CAAC,CAAC;QAClB;QACA,IAAI,CAACA,QAAQ,CAAC,EAAE,CAAC;QACjB,IAAI,IAAI,CAACzW,QAAQ,GAAG,CAAC,EAAE;UACrB,IAAI,CAACyW,QAAQ,CAAC,CAAC,CAAC;UAChB,IAAI,CAACP,UAAU,GAAG,EAAEK,KAAK,GAAG,CAAC,CAAC;QAChC;MACF;MAEA,IAAI,CAACF,UAAU,GACbP,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GACbA,UAAU,CAAE,IAAI,CAACE,SAAS,GAAG,CAAC,CAAE,GAChCF,UAAU,CAAE,IAAI,CAACE,SAAS,GAAG,CAAC,CAAE;MACtC,IAAI,CAACC,GAAG,EAAE;IACZ;IAEA,IAAIxY,CAAC;IACL,IAAI,IAAI,CAAC4Y,UAAU,IAAI,CAAC,EAAE;MACxB5Y,CAAC,GAAG,IAAI,CAACuY,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI;MACjC,IAAI,CAACK,UAAU,IAAI,CAAC;MACpB,IAAI,IAAI,CAACA,UAAU,KAAK,CAAC,IAAIP,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,GAAGV,OAAO,EAAE;QACjE,IAAI,CAACU,SAAS,EAAE;QAChB,IAAI,CAACK,UAAU,GACbP,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,GAAGF,UAAU,CAAC,IAAI,CAACE,SAAS,GAAG,CAAC,CAAC;MAC/D;IACF,CAAC,MAAM;MACLa,IAAI,GAAG,CAAC;MACRpZ,CAAC,GAAG,CAAC;MACL,GAAG;QACD,IAAI,OAAO,IAAI,CAAC4Y,UAAU,KAAK,QAAQ,EAAE;UACvC,MAAM,IAAIrf,WAAW,CACnB,8DACF,CAAC;QACH;QAEA,IAAI,IAAI,CAACqf,UAAU,GAAGQ,IAAI,EAAE;UAC1BpZ,CAAC,KAAKoZ,IAAI;UACV,IAAI,EAAE,IAAI,CAACb,SAAS,GAAG,CAAC,CAAC,EAAE;YACzBvY,CAAC,IAAI,IAAI,IAAK,CAAC,GAAGoZ,IAAK;UACzB;UACA,IAAI,CAACR,UAAU,IAAIQ,IAAI;UACvBA,IAAI,GAAG,CAAC;QACV,CAAC,MAAM;UACLpZ,CAAC,KAAK,IAAI,CAAC4Y,UAAU;UACrB,IAAI,EAAE,IAAI,CAACL,SAAS,GAAG,CAAC,CAAC,EAAE;YACzBvY,CAAC,IAAI,IAAI,IAAK,CAAC,GAAG,IAAI,CAAC4Y,UAAW;UACpC;UACAQ,IAAI,IAAI,IAAI,CAACR,UAAU;UACvB,IAAI,CAACA,UAAU,GAAG,CAAC;UACnB,IAAIP,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,GAAGV,OAAO,EAAE;YACxC,IAAI,CAACU,SAAS,EAAE;YAChB,IAAI,CAACK,UAAU,GACbP,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,GAAGF,UAAU,CAAC,IAAI,CAACE,SAAS,GAAG,CAAC,CAAC;UAC/D,CAAC,MAAM,IAAIa,IAAI,GAAG,CAAC,EAAE;YACnBpZ,CAAC,KAAKoZ,IAAI;YACVA,IAAI,GAAG,CAAC;UACV;QACF;MACF,CAAC,QAAQA,IAAI;IACf;IACA,IAAI,IAAI,CAACjB,KAAK,EAAE;MACdnY,CAAC,IAAI,IAAI;IACX;IACA,OAAOA,CAAC;EACV;EAKAyZ,UAAUA,CAACxa,EAAE,EAAEka,WAAW,EAAE;IAC1B,MAAMd,UAAU,GAAG,IAAI,CAACA,UAAU;IAClC,IAAIE,SAAS,GAAG,IAAI,CAACA,SAAS;IAE9B,IAAItZ,EAAE,GAAGoZ,UAAU,CAACE,SAAS,CAAC,EAAE;MAC9B,IAAItZ,EAAE,GAAG,IAAI,CAAC4Y,OAAO,EAAE;QACrB7hB,IAAI,CAAC,qBAAqB,CAAC;QAC3B,IAAI,CAACqjB,GAAG,GAAG,IAAI;QACfpa,EAAE,GAAG,IAAI,CAAC4Y,OAAO;MACnB;MACA,IAAKU,SAAS,GAAG,CAAC,GAAIY,WAAW,EAAE;QACjC,EAAEZ,SAAS;MACb;MAEAF,UAAU,CAACE,SAAS,CAAC,GAAGtZ,EAAE;IAC5B;IACA,IAAI,CAACsZ,SAAS,GAAGA,SAAS;EAC5B;EAKAqB,aAAaA,CAAC3a,EAAE,EAAEka,WAAW,EAAE;IAC7B,MAAMd,UAAU,GAAG,IAAI,CAACA,UAAU;IAClC,IAAIE,SAAS,GAAG,IAAI,CAACA,SAAS;IAE9B,IAAItZ,EAAE,GAAGoZ,UAAU,CAACE,SAAS,CAAC,EAAE;MAC9B,IAAItZ,EAAE,GAAG,IAAI,CAAC4Y,OAAO,EAAE;QACrB7hB,IAAI,CAAC,qBAAqB,CAAC;QAC3B,IAAI,CAACqjB,GAAG,GAAG,IAAI;QACfpa,EAAE,GAAG,IAAI,CAAC4Y,OAAO;MACnB;MACA,IAAKU,SAAS,GAAG,CAAC,GAAIY,WAAW,EAAE;QACjC,EAAEZ,SAAS;MACb;MAEAF,UAAU,CAACE,SAAS,CAAC,GAAGtZ,EAAE;IAC5B,CAAC,MAAM,IAAIA,EAAE,GAAGoZ,UAAU,CAACE,SAAS,CAAC,EAAE;MACrC,IAAItZ,EAAE,GAAG,CAAC,EAAE;QACVjJ,IAAI,CAAC,cAAc,CAAC;QACpB,IAAI,CAACqjB,GAAG,GAAG,IAAI;QACfpa,EAAE,GAAG,CAAC;MACR;MACA,OAAOsZ,SAAS,GAAG,CAAC,IAAItZ,EAAE,GAAGoZ,UAAU,CAACE,SAAS,GAAG,CAAC,CAAC,EAAE;QACtD,EAAEA,SAAS;MACb;MACAF,UAAU,CAACE,SAAS,CAAC,GAAGtZ,EAAE;IAC5B;IAEA,IAAI,CAACsZ,SAAS,GAAGA,SAAS;EAC5B;EAWAuB,cAAcA,CAAC9M,KAAK,EAAEN,GAAG,EAAEqN,KAAK,EAAEC,KAAK,EAAE;IACvC,MAAMC,UAAU,GAAGD,KAAK,IAAI,CAAC;IAC7B,KAAK,IAAI/f,CAAC,GAAG+S,KAAK,EAAE/S,CAAC,IAAIyS,GAAG,EAAE,EAAEzS,CAAC,EAAE;MACjC,IAAIjB,IAAI,GAAG,IAAI,CAAC+f,SAAS,CAAC9e,CAAC,CAAC;MAC5B,IAAIjB,IAAI,KAAKqd,QAAQ,EAAE;QACrB,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC;MACzB;MACA,IAAIpc,CAAC,GAAGyS,GAAG,EAAE;QACX1T,IAAI,KAAK0T,GAAG,GAAGzS,CAAC;MAClB;MACA,IAAI,CAACggB,UAAU,IAAIjhB,IAAI,IAAIihB,UAAU,EAAE;QACrC,MAAMvc,CAAC,GAAGqc,KAAK,CAAC/gB,IAAI,GAAGihB,UAAU,CAAC;QAClC,IAAIvc,CAAC,CAAC,CAAC,CAAC,KAAKzD,CAAC,EAAE;UACd,IAAI,CAAC+e,QAAQ,CAAC/e,CAAC,CAAC;UAChB,OAAO,CAAC,IAAI,EAAEyD,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;QAC3B;MACF;IACF;IACA,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC;EAC1B;EAKA8b,cAAcA,CAAA,EAAG;IACf,IAAIxgB,IAAI,GAAG,CAAC;IACZ,IAAI0E,CAAC;IACL,IAAI,IAAI,CAACua,OAAO,EAAE;MAChBjf,IAAI,GAAG,IAAI,CAAC+f,SAAS,CAAC,CAAC,CAAC;MACxBrb,CAAC,GAAGqZ,WAAW,CAAC/d,IAAI,CAAC;MACrB,IAAI0E,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE;QACd,IAAI,CAACsb,QAAQ,CAACtb,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,OAAOA,CAAC,CAAC,CAAC,CAAC;MACb;IACF,CAAC,MAAM;MACL,MAAMoR,MAAM,GAAG,IAAI,CAACgL,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE/C,WAAW,CAAC;MACrD,IAAIjI,MAAM,CAAC,CAAC,CAAC,IAAIA,MAAM,CAAC,CAAC,CAAC,EAAE;QAC1B,OAAOA,MAAM,CAAC,CAAC,CAAC;MAClB;IACF;IACA9Y,IAAI,CAAC,kBAAkB,CAAC;IACxB,OAAOqgB,QAAQ;EACjB;EAKAsD,aAAaA,CAAA,EAAG;IACd,IAAI3gB,IAAI,GAAG,CAAC;IACZ,IAAI0E,CAAC;IACL,IAAI,IAAI,CAACua,OAAO,EAAE;MAChBjf,IAAI,GAAG,IAAI,CAAC+f,SAAS,CAAC,EAAE,CAAC;MACzB,IAAI/f,IAAI,KAAKqd,QAAQ,EAAE;QACrB,OAAO,CAAC;MACV;MAEA3Y,CAAC,GAAG1E,IAAI,IAAI,CAAC,KAAK,CAAC,GAAGge,WAAW,CAAChe,IAAI,CAAC,GAAGie,WAAW,CAACje,IAAI,IAAI,CAAC,CAAC;MAEhE,IAAI0E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;QACZ,IAAI,CAACsb,QAAQ,CAACtb,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,OAAOA,CAAC,CAAC,CAAC,CAAC;MACb;IACF,CAAC,MAAM;MACL,IAAIoR,MAAM,GAAG,IAAI,CAACgL,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE7C,WAAW,CAAC;MACnD,IAAInI,MAAM,CAAC,CAAC,CAAC,EAAE;QACb,OAAOA,MAAM,CAAC,CAAC,CAAC;MAClB;MAEAA,MAAM,GAAG,IAAI,CAACgL,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE9C,WAAW,CAAC;MACjD,IAAIlI,MAAM,CAAC,CAAC,CAAC,EAAE;QACb,OAAOA,MAAM,CAAC,CAAC,CAAC;MAClB;IACF;IACA9Y,IAAI,CAAC,gBAAgB,CAAC;IACtB,IAAI,CAACgjB,QAAQ,CAAC,CAAC,CAAC;IAChB,OAAO,CAAC;EACV;EAKAU,aAAaA,CAAA,EAAG;IACd,IAAI1gB,IAAI,EAAE0E,CAAC;IACX,IAAI,IAAI,CAACua,OAAO,EAAE;MAChBjf,IAAI,GAAG,IAAI,CAAC+f,SAAS,CAAC,EAAE,CAAC;MACzB,IAAI/f,IAAI,KAAKqd,QAAQ,EAAE;QACrB,OAAO,CAAC;MACV;MACA,IAAIrd,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;QACnB0E,CAAC,GAAGwZ,WAAW,CAACle,IAAI,CAAC;MACvB,CAAC,MAAM,IAAIA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAIA,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;QAC7C0E,CAAC,GAAGyZ,WAAW,CAAC,CAACne,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;MACnC,CAAC,MAAM;QACL0E,CAAC,GAAG0Z,WAAW,CAACpe,IAAI,IAAI,CAAC,CAAC;MAC5B;MAEA,IAAI0E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;QACZ,IAAI,CAACsb,QAAQ,CAACtb,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,OAAOA,CAAC,CAAC,CAAC,CAAC;MACb;IACF,CAAC,MAAM;MACL,IAAIoR,MAAM,GAAG,IAAI,CAACgL,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE1C,WAAW,CAAC;MACnD,IAAItI,MAAM,CAAC,CAAC,CAAC,EAAE;QACb,OAAOA,MAAM,CAAC,CAAC,CAAC;MAClB;MAEAA,MAAM,GAAG,IAAI,CAACgL,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE3C,WAAW,EAAE,EAAE,CAAC;MACpD,IAAIrI,MAAM,CAAC,CAAC,CAAC,EAAE;QACb,OAAOA,MAAM,CAAC,CAAC,CAAC;MAClB;MAEAA,MAAM,GAAG,IAAI,CAACgL,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE5C,WAAW,CAAC;MACjD,IAAIpI,MAAM,CAAC,CAAC,CAAC,EAAE;QACb,OAAOA,MAAM,CAAC,CAAC,CAAC;MAClB;IACF;IACA9Y,IAAI,CAAC,gBAAgB,CAAC;IACtB,IAAI,CAACgjB,QAAQ,CAAC,CAAC,CAAC;IAChB,OAAO,CAAC;EACV;EAKAD,SAASA,CAACnc,CAAC,EAAE;IACX,IAAIoD,CAAC;IACL,OAAO,IAAI,CAAC0Y,SAAS,GAAG9b,CAAC,EAAE;MACzB,IAAI,CAACoD,CAAC,GAAG,IAAI,CAACsX,MAAM,CAACC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;QACnC,IAAI,IAAI,CAACmB,SAAS,KAAK,CAAC,EAAE;UACxB,OAAOrC,QAAQ;QACjB;QACA,OAAQ,IAAI,CAACsC,QAAQ,IAAK/b,CAAC,GAAG,IAAI,CAAC8b,SAAU,GAAK,MAAM,IAAK,EAAE,GAAG9b,CAAG;MACvE;MACA,IAAI,CAAC+b,QAAQ,GAAI,IAAI,CAACA,QAAQ,IAAI,CAAC,GAAI3Y,CAAC;MACxC,IAAI,CAAC0Y,SAAS,IAAI,CAAC;IACrB;IACA,OAAQ,IAAI,CAACC,QAAQ,IAAK,IAAI,CAACD,SAAS,GAAG9b,CAAE,GAAK,MAAM,IAAK,EAAE,GAAGA,CAAG;EACvE;EAKAoc,QAAQA,CAACpc,CAAC,EAAE;IACV,IAAI,CAAC,IAAI,CAAC8b,SAAS,IAAI9b,CAAC,IAAI,CAAC,EAAE;MAC7B,IAAI,CAAC8b,SAAS,GAAG,CAAC;IACpB;EACF;AACF;;;ACjhC0D;AAQjC;AACmC;AACf;AAE7C,MAAMwB,UAAU,SAASzhB,aAAa,CAAC;EACrCK,WAAWA,CAAC7C,GAAG,EAAE;IACf,KAAK,CAACA,GAAG,EAAE,YAAY,CAAC;EAC1B;AACF;AAGA,MAAMkkB,YAAY,CAAC;EACjBC,WAAWA,CAACC,EAAE,EAAE;IACd,IAAIA,EAAE,IAAI,IAAI,EAAE;MACd,OAAO,IAAI,CAACA,EAAE,CAAC;IACjB;IACA,OAAQ,IAAI,CAACA,EAAE,CAAC,GAAG,IAAIC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;EAC3C;AACF;AAEA,MAAMC,eAAe,CAAC;EACpBzhB,WAAWA,CAACoV,IAAI,EAAElB,KAAK,EAAEN,GAAG,EAAE;IAC5B,IAAI,CAACwB,IAAI,GAAGA,IAAI;IAChB,IAAI,CAAClB,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACN,GAAG,GAAGA,GAAG;EAChB;EAEA,IAAIlK,OAAOA,CAAA,EAAG;IACZ,MAAMA,OAAO,GAAG,IAAI+S,iBAAiB,CAAC,IAAI,CAACrH,IAAI,EAAE,IAAI,CAAClB,KAAK,EAAE,IAAI,CAACN,GAAG,CAAC;IACtE,OAAO3U,MAAM,CAAC,IAAI,EAAE,SAAS,EAAEyK,OAAO,CAAC;EACzC;EAEA,IAAIgY,YAAYA,CAAA,EAAG;IACjB,MAAMC,KAAK,GAAG,IAAIN,YAAY,CAAC,CAAC;IAChC,OAAOpiB,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE0iB,KAAK,CAAC;EAC5C;AACF;AAIA,SAASC,aAAaA,CAACF,YAAY,EAAEG,SAAS,EAAEnY,OAAO,EAAE;EACvD,MAAMuT,QAAQ,GAAGyE,YAAY,CAACJ,WAAW,CAACO,SAAS,CAAC;EACpD,IAAIC,IAAI,GAAG,CAAC;EAEZ,SAASC,QAAQA,CAAC1jB,MAAM,EAAE;IACxB,IAAI0O,CAAC,GAAG,CAAC;IACT,KAAK,IAAI5L,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG9C,MAAM,EAAE8C,CAAC,EAAE,EAAE;MAC/B,MAAM6gB,GAAG,GAAGtY,OAAO,CAACsT,OAAO,CAACC,QAAQ,EAAE6E,IAAI,CAAC;MAC3CA,IAAI,GAAGA,IAAI,GAAG,GAAG,GAAIA,IAAI,IAAI,CAAC,GAAIE,GAAG,GAAI,CAAEF,IAAI,IAAI,CAAC,GAAIE,GAAG,IAAI,GAAG,GAAI,GAAG;MACzEjV,CAAC,GAAIA,CAAC,IAAI,CAAC,GAAIiV,GAAG;IACpB;IACA,OAAOjV,CAAC,KAAK,CAAC;EAChB;EAEA,MAAMkV,IAAI,GAAGF,QAAQ,CAAC,CAAC,CAAC;EAGxB,MAAM3iB,KAAK,GAAG2iB,QAAQ,CAAC,CAAC,CAAC,GACRA,QAAQ,CAAC,CAAC,CAAC,GACTA,QAAQ,CAAC,CAAC,CAAC,GACTA,QAAQ,CAAC,CAAC,CAAC,GACTA,QAAQ,CAAC,CAAC,CAAC,GACTA,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,GACtBA,QAAQ,CAAC,EAAE,CAAC,GAAG,GAAG,GACpBA,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAClBA,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAClBA,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GACjBA,QAAQ,CAAC,CAAC,CAAC;EAEzB,IAAIG,WAAW;EACf,IAAID,IAAI,KAAK,CAAC,EAAE;IACdC,WAAW,GAAG9iB,KAAK;EACrB,CAAC,MAAM,IAAIA,KAAK,GAAG,CAAC,EAAE;IACpB8iB,WAAW,GAAG,CAAC9iB,KAAK;EACtB;EAEA,IAAI8iB,WAAW,IAAI5N,UAAU,IAAI4N,WAAW,IAAI7N,UAAU,EAAE;IAC1D,OAAO6N,WAAW;EACpB;EACA,OAAO,IAAI;AACb;AAGA,SAASC,UAAUA,CAACT,YAAY,EAAEhY,OAAO,EAAE0Y,UAAU,EAAE;EACrD,MAAMnF,QAAQ,GAAGyE,YAAY,CAACJ,WAAW,CAAC,MAAM,CAAC;EAEjD,IAAIQ,IAAI,GAAG,CAAC;EACZ,KAAK,IAAI3gB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGihB,UAAU,EAAEjhB,CAAC,EAAE,EAAE;IACnC,MAAM6gB,GAAG,GAAGtY,OAAO,CAACsT,OAAO,CAACC,QAAQ,EAAE6E,IAAI,CAAC;IAC3CA,IAAI,GAAIA,IAAI,IAAI,CAAC,GAAIE,GAAG;EAC1B;EACA,IAAII,UAAU,GAAG,EAAE,EAAE;IACnB,OAAON,IAAI,GAAI,CAAC,CAAC,IAAIM,UAAU,IAAI,CAAE;EACvC;EACA,OAAON,IAAI,GAAG,UAAU;AAC1B;AAGA,MAAMO,YAAY,GAAG,CACnB,kBAAkB,EAClB,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,wBAAwB,EACxB,IAAI,EACJ,qBAAqB,EACrB,6BAA6B,EAC7B,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,mBAAmB,EACnB,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,4BAA4B,EAC5B,IAAI,EACJ,yBAAyB,EACzB,iCAAiC,EACjC,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,2BAA2B,EAC3B,IAAI,EACJ,wBAAwB,EACxB,gCAAgC,EAChC,qCAAqC,EACrC,IAAI,EACJ,kCAAkC,EAClC,0CAA0C,EAC1C,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,WAAW,EACX,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,WAAW,CACZ;AAED,MAAMC,eAAe,GAAG,CACtB,CACE;EAAEta,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EAChB;EAAED,CAAC,EAAE,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EAChB;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EAChB;EAAED,CAAC,EAAE,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE;AAAE,CAAC,CAChB,EACD,CACE;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EAChB;EAAED,CAAC,EAAE,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EAChB;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EAChB;EAAED,CAAC,EAAE,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE;AAAE,CAAC,CAChB,EACD,CACE;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EAChB;EAAED,CAAC,EAAE,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EAChB;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EAChB;EAAED,CAAC,EAAE,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE;AAAE,CAAC,CAChB,EACD,CACE;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EAChB;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EAChB;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EAChB;EAAED,CAAC,EAAE,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC;EAAEC,CAAC,EAAE,CAAC;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE;AAAE,CAAC,EACf;EAAED,CAAC,EAAE,CAAC,CAAC;EAAEC,CAAC,EAAE;AAAE,CAAC,CAChB,CACF;AAED,MAAMsa,mBAAmB,GAAG,CAC1B;EACEC,MAAM,EAAE,CACN;IAAExa,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;EAAE,CAAC,EACf;IAAED,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;EAAE,CAAC,EACf;IAAED,CAAC,EAAE,CAAC,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC,CAChB;EACDwa,SAAS,EAAE,CACT;IAAEza,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;EAAE,CAAC,EACf;IAAED,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;EAAE,CAAC,EACf;IAAED,CAAC,EAAE,CAAC,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC,EACf;IAAED,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC,EACd;IAAED,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC,EACd;IAAED,CAAC,EAAE,CAAC,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC,EACf;IAAED,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC,EACd;IAAED,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC;AAElB,CAAC,EACD;EACEua,MAAM,EAAE,CACN;IAAExa,CAAC,EAAE,CAAC,CAAC;IAAEC,CAAC,EAAE,CAAC;EAAE,CAAC,EAChB;IAAED,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;EAAE,CAAC,EACf;IAAED,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;EAAE,CAAC,EACf;IAAED,CAAC,EAAE,CAAC,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC,CAChB;EACDwa,SAAS,EAAE,CACT;IAAEza,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;EAAE,CAAC,EACf;IAAED,CAAC,EAAE,CAAC,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC,EACf;IAAED,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC,EACd;IAAED,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC,EACd;IAAED,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC,EACd;IAAED,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC;AAElB,CAAC,CACF;AAGD,MAAMya,cAAc,GAAG,CACrB,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,CACP;AAED,MAAMC,wBAAwB,GAAG,CAC/B,MAAM,EACN,MAAM,CACP;AAED,SAASC,qBAAqBA,CAAC3G,KAAK,EAAEC,MAAM,EAAE2G,eAAe,EAAE;EAC7D,MAAMnZ,OAAO,GAAGmZ,eAAe,CAACnZ,OAAO;EACvC,MAAMuT,QAAQ,GAAG4F,eAAe,CAACnB,YAAY,CAACJ,WAAW,CAAC,IAAI,CAAC;EAC/D,MAAMwB,MAAM,GAAG,EAAE;EACjB,IAAIC,YAAY,EAAE5hB,CAAC,EAAE6hB,CAAC,EAAEC,KAAK,EAAEvD,GAAG,EAAEwD,IAAI,EAAEC,IAAI;EAK9C,MAAMC,cAAc,GAAG,MAAM;EAE7B,KAAKjiB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+a,MAAM,EAAE/a,CAAC,EAAE,EAAE;IAC3Bue,GAAG,GAAGoD,MAAM,CAAC3hB,CAAC,CAAC,GAAG,IAAIU,UAAU,CAACoa,KAAK,CAAC;IACvCiH,IAAI,GAAG/hB,CAAC,GAAG,CAAC,GAAGue,GAAG,GAAGoD,MAAM,CAAC3hB,CAAC,GAAG,CAAC,CAAC;IAClCgiB,IAAI,GAAGhiB,CAAC,GAAG,CAAC,GAAGue,GAAG,GAAGoD,MAAM,CAAC3hB,CAAC,GAAG,CAAC,CAAC;IAIlC4hB,YAAY,GACTI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,GACbA,IAAI,CAAC,CAAC,CAAC,IAAI,EAAG,GACdA,IAAI,CAAC,CAAC,CAAC,IAAI,EAAG,GACdD,IAAI,CAAC,CAAC,CAAC,IAAI,CAAE,GACbA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAE,GACbA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAE,GACbA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAE;IAEhB,KAAKF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG/G,KAAK,EAAE+G,CAAC,EAAE,EAAE;MAC1BtD,GAAG,CAACsD,CAAC,CAAC,GAAGC,KAAK,GAAGvZ,OAAO,CAACsT,OAAO,CAACC,QAAQ,EAAE8F,YAAY,CAAC;MAIxDA,YAAY,GACT,CAACA,YAAY,GAAGK,cAAc,KAAK,CAAC,IACpCJ,CAAC,GAAG,CAAC,GAAG/G,KAAK,GAAGkH,IAAI,CAACH,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IACtCA,CAAC,GAAG,CAAC,GAAG/G,KAAK,GAAGiH,IAAI,CAACF,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GACtCC,KAAK;IACT;EACF;EAEA,OAAOH,MAAM;AACf;AAGA,SAASO,YAAYA,CACnBC,GAAG,EACHrH,KAAK,EACLC,MAAM,EACNqH,aAAa,EACbC,UAAU,EACV1P,IAAI,EACJ2P,EAAE,EACFZ,eAAe,EACf;EACA,IAAIS,GAAG,EAAE;IACP,MAAMI,KAAK,GAAG,IAAIC,MAAM,CACtBd,eAAe,CAACzN,IAAI,EACpByN,eAAe,CAAC3O,KAAK,EACrB2O,eAAe,CAACjP,GAClB,CAAC;IACD,OAAOgQ,eAAe,CAACF,KAAK,EAAEzH,KAAK,EAAEC,MAAM,EAAE,KAAK,CAAC;EACrD;EAGA,IACEqH,aAAa,KAAK,CAAC,IACnB,CAACzP,IAAI,IACL,CAAC0P,UAAU,IACXC,EAAE,CAACplB,MAAM,KAAK,CAAC,IACfolB,EAAE,CAAC,CAAC,CAAC,CAACzb,CAAC,KAAK,CAAC,IACbyb,EAAE,CAAC,CAAC,CAAC,CAACxb,CAAC,KAAK,CAAC,CAAC,IACdwb,EAAE,CAAC,CAAC,CAAC,CAACzb,CAAC,KAAK,CAAC,CAAC,IACdyb,EAAE,CAAC,CAAC,CAAC,CAACxb,CAAC,KAAK,CAAC,CAAC,IACdwb,EAAE,CAAC,CAAC,CAAC,CAACzb,CAAC,KAAK,CAAC,IACbyb,EAAE,CAAC,CAAC,CAAC,CAACxb,CAAC,KAAK,CAAC,CAAC,IACdwb,EAAE,CAAC,CAAC,CAAC,CAACzb,CAAC,KAAK,CAAC,CAAC,IACdyb,EAAE,CAAC,CAAC,CAAC,CAACxb,CAAC,KAAK,CAAC,CAAC,EACd;IACA,OAAO2a,qBAAqB,CAAC3G,KAAK,EAAEC,MAAM,EAAE2G,eAAe,CAAC;EAC9D;EAEA,MAAMgB,OAAO,GAAG,CAAC,CAAC/P,IAAI;EACtB,MAAMgQ,QAAQ,GAAGxB,eAAe,CAACiB,aAAa,CAAC,CAACQ,MAAM,CAACN,EAAE,CAAC;EAK1DK,QAAQ,CAACE,IAAI,CAAC,CAAC/c,CAAC,EAAE5C,CAAC,KAAK4C,CAAC,CAACgB,CAAC,GAAG5D,CAAC,CAAC4D,CAAC,IAAIhB,CAAC,CAACe,CAAC,GAAG3D,CAAC,CAAC2D,CAAC,CAAC;EAE/C,MAAMic,cAAc,GAAGH,QAAQ,CAACzlB,MAAM;EACtC,MAAM6lB,SAAS,GAAG,IAAI1C,SAAS,CAACyC,cAAc,CAAC;EAC/C,MAAME,SAAS,GAAG,IAAI3C,SAAS,CAACyC,cAAc,CAAC;EAC/C,MAAMG,uBAAuB,GAAG,EAAE;EAClC,IAAIC,SAAS,GAAG,CAAC;IACfC,IAAI,GAAG,CAAC;IACRC,IAAI,GAAG,CAAC;IACRC,IAAI,GAAG,CAAC;EACV,IAAItd,CAAC,EAAEud,CAAC;EAER,KAAKA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGR,cAAc,EAAEQ,CAAC,EAAE,EAAE;IACnCP,SAAS,CAACO,CAAC,CAAC,GAAGX,QAAQ,CAACW,CAAC,CAAC,CAACzc,CAAC;IAC5Bmc,SAAS,CAACM,CAAC,CAAC,GAAGX,QAAQ,CAACW,CAAC,CAAC,CAACxc,CAAC;IAC5Bqc,IAAI,GAAGjjB,IAAI,CAACC,GAAG,CAACgjB,IAAI,EAAER,QAAQ,CAACW,CAAC,CAAC,CAACzc,CAAC,CAAC;IACpCuc,IAAI,GAAGljB,IAAI,CAACwF,GAAG,CAAC0d,IAAI,EAAET,QAAQ,CAACW,CAAC,CAAC,CAACzc,CAAC,CAAC;IACpCwc,IAAI,GAAGnjB,IAAI,CAACC,GAAG,CAACkjB,IAAI,EAAEV,QAAQ,CAACW,CAAC,CAAC,CAACxc,CAAC,CAAC;IAIpC,IACEwc,CAAC,GAAGR,cAAc,GAAG,CAAC,IACtBH,QAAQ,CAACW,CAAC,CAAC,CAACxc,CAAC,KAAK6b,QAAQ,CAACW,CAAC,GAAG,CAAC,CAAC,CAACxc,CAAC,IACnC6b,QAAQ,CAACW,CAAC,CAAC,CAACzc,CAAC,KAAK8b,QAAQ,CAACW,CAAC,GAAG,CAAC,CAAC,CAACzc,CAAC,GAAG,CAAC,EACvC;MACAqc,SAAS,IAAI,CAAC,IAAKJ,cAAc,GAAG,CAAC,GAAGQ,CAAE;IAC5C,CAAC,MAAM;MACLL,uBAAuB,CAAC3iB,IAAI,CAACgjB,CAAC,CAAC;IACjC;EACF;EACA,MAAMC,qBAAqB,GAAGN,uBAAuB,CAAC/lB,MAAM;EAE5D,MAAMsmB,iBAAiB,GAAG,IAAInD,SAAS,CAACkD,qBAAqB,CAAC;EAC9D,MAAME,iBAAiB,GAAG,IAAIpD,SAAS,CAACkD,qBAAqB,CAAC;EAC9D,MAAMG,mBAAmB,GAAG,IAAIC,WAAW,CAACJ,qBAAqB,CAAC;EAClE,KAAKxd,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwd,qBAAqB,EAAExd,CAAC,EAAE,EAAE;IAC1Cud,CAAC,GAAGL,uBAAuB,CAACld,CAAC,CAAC;IAC9Byd,iBAAiB,CAACzd,CAAC,CAAC,GAAG4c,QAAQ,CAACW,CAAC,CAAC,CAACzc,CAAC;IACpC4c,iBAAiB,CAAC1d,CAAC,CAAC,GAAG4c,QAAQ,CAACW,CAAC,CAAC,CAACxc,CAAC;IACpC4c,mBAAmB,CAAC3d,CAAC,CAAC,GAAG,CAAC,IAAK+c,cAAc,GAAG,CAAC,GAAGQ,CAAE;EACxD;EAGA,MAAMM,QAAQ,GAAG,CAACT,IAAI;EACtB,MAAMU,OAAO,GAAG,CAACR,IAAI;EACrB,MAAMS,SAAS,GAAGhJ,KAAK,GAAGsI,IAAI;EAE9B,MAAMW,kBAAkB,GAAGxC,cAAc,CAACa,aAAa,CAAC;EACxD,IAAI7D,GAAG,GAAG,IAAI7d,UAAU,CAACoa,KAAK,CAAC;EAC/B,MAAM6G,MAAM,GAAG,EAAE;EAEjB,MAAMpZ,OAAO,GAAGmZ,eAAe,CAACnZ,OAAO;EACvC,MAAMuT,QAAQ,GAAG4F,eAAe,CAACnB,YAAY,CAACJ,WAAW,CAAC,IAAI,CAAC;EAE/D,IAAI6D,GAAG,GAAG,CAAC;IACTnC,CAAC;IACDoC,EAAE;IACFC,EAAE;IACFtC,YAAY,GAAG,CAAC;IAChBf,GAAG;IACHsD,KAAK;EACP,KAAK,IAAInkB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+a,MAAM,EAAE/a,CAAC,EAAE,EAAE;IAC/B,IAAIqiB,UAAU,EAAE;MACd,MAAM+B,IAAI,GAAG7b,OAAO,CAACsT,OAAO,CAACC,QAAQ,EAAEiI,kBAAkB,CAAC;MAC1DC,GAAG,IAAII,IAAI;MACX,IAAIJ,GAAG,EAAE;QACPrC,MAAM,CAACrhB,IAAI,CAACie,GAAG,CAAC;QAChB;MACF;IACF;IACAA,GAAG,GAAG,IAAI7d,UAAU,CAAC6d,GAAG,CAAC;IACzBoD,MAAM,CAACrhB,IAAI,CAACie,GAAG,CAAC;IAChB,KAAKsD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG/G,KAAK,EAAE+G,CAAC,EAAE,EAAE;MAC1B,IAAIa,OAAO,IAAI/P,IAAI,CAAC3S,CAAC,CAAC,CAAC6hB,CAAC,CAAC,EAAE;QACzBtD,GAAG,CAACsD,CAAC,CAAC,GAAG,CAAC;QACV;MACF;MAGA,IAAIA,CAAC,IAAI+B,QAAQ,IAAI/B,CAAC,GAAGiC,SAAS,IAAI9jB,CAAC,IAAI6jB,OAAO,EAAE;QAGlDjC,YAAY,GAAIA,YAAY,IAAI,CAAC,GAAIsB,SAAS;QAC9C,KAAKI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGC,qBAAqB,EAAED,CAAC,EAAE,EAAE;UAC1CW,EAAE,GAAGjkB,CAAC,GAAGyjB,iBAAiB,CAACH,CAAC,CAAC;UAC7BY,EAAE,GAAGrC,CAAC,GAAG2B,iBAAiB,CAACF,CAAC,CAAC;UAC7BzC,GAAG,GAAGc,MAAM,CAACsC,EAAE,CAAC,CAACC,EAAE,CAAC;UACpB,IAAIrD,GAAG,EAAE;YACPA,GAAG,GAAG6C,mBAAmB,CAACJ,CAAC,CAAC;YAC5B1B,YAAY,IAAIf,GAAG;UACrB;QACF;MACF,CAAC,MAAM;QAELe,YAAY,GAAG,CAAC;QAChBuC,KAAK,GAAGrB,cAAc,GAAG,CAAC;QAC1B,KAAKQ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGR,cAAc,EAAEQ,CAAC,EAAE,EAAEa,KAAK,EAAE,EAAE;UAC5CD,EAAE,GAAGrC,CAAC,GAAGkB,SAAS,CAACO,CAAC,CAAC;UACrB,IAAIY,EAAE,IAAI,CAAC,IAAIA,EAAE,GAAGpJ,KAAK,EAAE;YACzBmJ,EAAE,GAAGjkB,CAAC,GAAGgjB,SAAS,CAACM,CAAC,CAAC;YACrB,IAAIW,EAAE,IAAI,CAAC,EAAE;cACXpD,GAAG,GAAGc,MAAM,CAACsC,EAAE,CAAC,CAACC,EAAE,CAAC;cACpB,IAAIrD,GAAG,EAAE;gBACPe,YAAY,IAAIf,GAAG,IAAIsD,KAAK;cAC9B;YACF;UACF;QACF;MACF;MACA,MAAMrC,KAAK,GAAGvZ,OAAO,CAACsT,OAAO,CAACC,QAAQ,EAAE8F,YAAY,CAAC;MACrDrD,GAAG,CAACsD,CAAC,CAAC,GAAGC,KAAK;IAChB;EACF;EACA,OAAOH,MAAM;AACf;AAGA,SAAS0C,gBAAgBA,CACvBvJ,KAAK,EACLC,MAAM,EACNqH,aAAa,EACbkC,eAAe,EACfC,OAAO,EACPC,OAAO,EACPnC,UAAU,EACVC,EAAE,EACFZ,eAAe,EACf;EACA,IAAI+C,cAAc,GAAGrD,mBAAmB,CAACgB,aAAa,CAAC,CAACf,MAAM;EAC9D,IAAIe,aAAa,KAAK,CAAC,EAAE;IACvBqC,cAAc,GAAGA,cAAc,CAAC7B,MAAM,CAAC,CAACN,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EACjD;EACA,MAAMoC,oBAAoB,GAAGD,cAAc,CAACvnB,MAAM;EAClD,MAAMynB,eAAe,GAAG,IAAIC,UAAU,CAACF,oBAAoB,CAAC;EAC5D,MAAMG,eAAe,GAAG,IAAID,UAAU,CAACF,oBAAoB,CAAC;EAC5D,IAAIpB,CAAC;EACL,KAAKA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoB,oBAAoB,EAAEpB,CAAC,EAAE,EAAE;IACzCqB,eAAe,CAACrB,CAAC,CAAC,GAAGmB,cAAc,CAACnB,CAAC,CAAC,CAACzc,CAAC;IACxCge,eAAe,CAACvB,CAAC,CAAC,GAAGmB,cAAc,CAACnB,CAAC,CAAC,CAACxc,CAAC;EAC1C;EAEA,IAAIge,iBAAiB,GAAG1D,mBAAmB,CAACgB,aAAa,CAAC,CAACd,SAAS;EACpE,IAAIc,aAAa,KAAK,CAAC,EAAE;IACvB0C,iBAAiB,GAAGA,iBAAiB,CAAClC,MAAM,CAAC,CAACN,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EACvD;EACA,MAAMyC,uBAAuB,GAAGD,iBAAiB,CAAC5nB,MAAM;EACxD,MAAM8nB,kBAAkB,GAAG,IAAIJ,UAAU,CAACG,uBAAuB,CAAC;EAClE,MAAME,kBAAkB,GAAG,IAAIL,UAAU,CAACG,uBAAuB,CAAC;EAClE,KAAKzB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyB,uBAAuB,EAAEzB,CAAC,EAAE,EAAE;IAC5C0B,kBAAkB,CAAC1B,CAAC,CAAC,GAAGwB,iBAAiB,CAACxB,CAAC,CAAC,CAACzc,CAAC;IAC9Coe,kBAAkB,CAAC3B,CAAC,CAAC,GAAGwB,iBAAiB,CAACxB,CAAC,CAAC,CAACxc,CAAC;EAChD;EACA,MAAMoe,cAAc,GAAGZ,eAAe,CAAC,CAAC,CAAC,CAACpnB,MAAM;EAChD,MAAMioB,eAAe,GAAGb,eAAe,CAACpnB,MAAM;EAE9C,MAAM6mB,kBAAkB,GAAGvC,wBAAwB,CAACY,aAAa,CAAC;EAClE,MAAMT,MAAM,GAAG,EAAE;EAEjB,MAAMpZ,OAAO,GAAGmZ,eAAe,CAACnZ,OAAO;EACvC,MAAMuT,QAAQ,GAAG4F,eAAe,CAACnB,YAAY,CAACJ,WAAW,CAAC,IAAI,CAAC;EAE/D,IAAI6D,GAAG,GAAG,CAAC;EACX,KAAK,IAAIhkB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+a,MAAM,EAAE/a,CAAC,EAAE,EAAE;IAC/B,IAAIqiB,UAAU,EAAE;MACd,MAAM+B,IAAI,GAAG7b,OAAO,CAACsT,OAAO,CAACC,QAAQ,EAAEiI,kBAAkB,CAAC;MAC1DC,GAAG,IAAII,IAAI;MACX,IAAIJ,GAAG,EAAE;QACP,MAAM,IAAI/D,UAAU,CAAC,6BAA6B,CAAC;MACrD;IACF;IACA,MAAM1B,GAAG,GAAG,IAAI7d,UAAU,CAACoa,KAAK,CAAC;IACjC6G,MAAM,CAACrhB,IAAI,CAACie,GAAG,CAAC;IAChB,KAAK,IAAIsD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG/G,KAAK,EAAE+G,CAAC,EAAE,EAAE;MAC9B,IAAIoC,EAAE,EAAEC,EAAE;MACV,IAAItC,YAAY,GAAG,CAAC;MACpB,KAAK0B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoB,oBAAoB,EAAEpB,CAAC,EAAE,EAAE;QACzCW,EAAE,GAAGjkB,CAAC,GAAG6kB,eAAe,CAACvB,CAAC,CAAC;QAC3BY,EAAE,GAAGrC,CAAC,GAAG8C,eAAe,CAACrB,CAAC,CAAC;QAC3B,IAAIW,EAAE,GAAG,CAAC,IAAIC,EAAE,GAAG,CAAC,IAAIA,EAAE,IAAIpJ,KAAK,EAAE;UACnC8G,YAAY,KAAK,CAAC;QACpB,CAAC,MAAM;UACLA,YAAY,GAAIA,YAAY,IAAI,CAAC,GAAID,MAAM,CAACsC,EAAE,CAAC,CAACC,EAAE,CAAC;QACrD;MACF;MACA,KAAKZ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyB,uBAAuB,EAAEzB,CAAC,EAAE,EAAE;QAC5CW,EAAE,GAAGjkB,CAAC,GAAGilB,kBAAkB,CAAC3B,CAAC,CAAC,GAAGkB,OAAO;QACxCN,EAAE,GAAGrC,CAAC,GAAGmD,kBAAkB,CAAC1B,CAAC,CAAC,GAAGiB,OAAO;QACxC,IAAIN,EAAE,GAAG,CAAC,IAAIA,EAAE,IAAIkB,eAAe,IAAIjB,EAAE,GAAG,CAAC,IAAIA,EAAE,IAAIgB,cAAc,EAAE;UACrEtD,YAAY,KAAK,CAAC;QACpB,CAAC,MAAM;UACLA,YAAY,GAAIA,YAAY,IAAI,CAAC,GAAI0C,eAAe,CAACL,EAAE,CAAC,CAACC,EAAE,CAAC;QAC9D;MACF;MACA,MAAMpC,KAAK,GAAGvZ,OAAO,CAACsT,OAAO,CAACC,QAAQ,EAAE8F,YAAY,CAAC;MACrDrD,GAAG,CAACsD,CAAC,CAAC,GAAGC,KAAK;IAChB;EACF;EAEA,OAAOH,MAAM;AACf;AAGA,SAASyD,sBAAsBA,CAC7BC,OAAO,EACPC,UAAU,EACVC,OAAO,EACPC,kBAAkB,EAClBC,uBAAuB,EACvBC,aAAa,EACbtD,aAAa,EACbE,EAAE,EACFqD,uBAAuB,EACvBC,YAAY,EACZlE,eAAe,EACfmE,YAAY,EACZ;EACA,IAAIR,OAAO,IAAIC,UAAU,EAAE;IACzB,MAAM,IAAIrF,UAAU,CAAC,iDAAiD,CAAC;EACzE;EAEA,MAAM6F,UAAU,GAAG,EAAE;EACrB,IAAIC,aAAa,GAAG,CAAC;EACrB,IAAIC,gBAAgB,GAAG3Q,IAAI,CAACkQ,OAAO,CAACroB,MAAM,GAAGsoB,kBAAkB,CAAC;EAEhE,MAAMjd,OAAO,GAAGmZ,eAAe,CAACnZ,OAAO;EACvC,MAAMgY,YAAY,GAAGmB,eAAe,CAACnB,YAAY;EACjD,IAAI0F,OAAO,EAAEC,YAAY;EACzB,IAAIb,OAAO,EAAE;IACXY,OAAO,GAAGE,gBAAgB,CAAC,CAAC,CAAC;IAC7BD,YAAY,GAAG,EAAE;IACjBF,gBAAgB,GAAG9lB,IAAI,CAACwF,GAAG,CAACsgB,gBAAgB,EAAE,CAAC,CAAC;EAClD;EAEA,OAAOF,UAAU,CAAC5oB,MAAM,GAAGsoB,kBAAkB,EAAE;IAC7C,MAAMY,WAAW,GAAGf,OAAO,GACvBK,aAAa,CAACW,gBAAgB,CAAC1d,MAAM,CAACkd,YAAY,CAAC,GACnDpF,aAAa,CAACF,YAAY,EAAE,MAAM,EAAEhY,OAAO,CAAC;IAChDwd,aAAa,IAAIK,WAAW;IAC5B,IAAIE,YAAY,GAAG,CAAC;MAClBC,UAAU,GAAG,CAAC;IAChB,MAAMC,WAAW,GAAGnB,OAAO,GAAGa,YAAY,CAAChpB,MAAM,GAAG,CAAC;IACrD,OAAO,IAAI,EAAE;MACX,MAAMupB,UAAU,GAAGpB,OAAO,GACtBK,aAAa,CAACgB,eAAe,CAAC/d,MAAM,CAACkd,YAAY,CAAC,GAClDpF,aAAa,CAACF,YAAY,EAAE,MAAM,EAAEhY,OAAO,CAAC;MAChD,IAAIke,UAAU,KAAK,IAAI,EAAE;QACvB;MACF;MACAH,YAAY,IAAIG,UAAU;MAC1BF,UAAU,IAAID,YAAY;MAC1B,IAAI3E,MAAM;MACV,IAAI2D,UAAU,EAAE;QAEd,MAAMqB,iBAAiB,GAAGlG,aAAa,CAACF,YAAY,EAAE,MAAM,EAAEhY,OAAO,CAAC;QACtE,IAAIoe,iBAAiB,GAAG,CAAC,EAAE;UACzBhF,MAAM,GAAGiF,gBAAgB,CACvBvB,OAAO,EACPC,UAAU,EACVgB,YAAY,EACZP,aAAa,EACb,CAAC,EACDY,iBAAiB,EACjB,CAAC,EACDpB,OAAO,CAAC3C,MAAM,CAACkD,UAAU,CAAC,EAC1BE,gBAAgB,EAChB,CAAC,EACD,CAAC,EACD,CAAC,EACD,CAAC,EACDN,aAAa,EACbC,uBAAuB,EACvBC,YAAY,EACZlE,eAAe,EACf,CAAC,EACDmE,YACF,CAAC;QACH,CAAC,MAAM;UACL,MAAMgB,QAAQ,GAAG7F,UAAU,CAACT,YAAY,EAAEhY,OAAO,EAAEyd,gBAAgB,CAAC;UACpE,MAAMc,GAAG,GAAGrG,aAAa,CAACF,YAAY,EAAE,OAAO,EAAEhY,OAAO,CAAC;UACzD,MAAMwe,GAAG,GAAGtG,aAAa,CAACF,YAAY,EAAE,OAAO,EAAEhY,OAAO,CAAC;UACzD,MAAMye,MAAM,GACVH,QAAQ,GAAGtB,OAAO,CAACroB,MAAM,GACrBqoB,OAAO,CAACsB,QAAQ,CAAC,GACjBf,UAAU,CAACe,QAAQ,GAAGtB,OAAO,CAACroB,MAAM,CAAC;UAC3CykB,MAAM,GAAG0C,gBAAgB,CACvBiC,YAAY,EACZP,aAAa,EACbJ,uBAAuB,EACvBqB,MAAM,EACNF,GAAG,EACHC,GAAG,EACH,KAAK,EACLnB,YAAY,EACZlE,eACF,CAAC;QACH;QACAoE,UAAU,CAACxlB,IAAI,CAACqhB,MAAM,CAAC;MACzB,CAAC,MAAM,IAAI0D,OAAO,EAAE;QAGlBa,YAAY,CAAC5lB,IAAI,CAACgmB,YAAY,CAAC;MACjC,CAAC,MAAM;QAEL3E,MAAM,GAAGO,YAAY,CACnB,KAAK,EACLoE,YAAY,EACZP,aAAa,EACb3D,aAAa,EACb,KAAK,EACL,IAAI,EACJE,EAAE,EACFZ,eACF,CAAC;QACDoE,UAAU,CAACxlB,IAAI,CAACqhB,MAAM,CAAC;MACzB;IACF;IACA,IAAI0D,OAAO,IAAI,CAACC,UAAU,EAAE;MAE1B,MAAM2B,UAAU,GAAGvB,aAAa,CAACwB,eAAe,CAACve,MAAM,CAACkd,YAAY,CAAC;MACrEA,YAAY,CAACnI,SAAS,CAAC,CAAC;MACxB,IAAIyJ,gBAAgB;MACpB,IAAIF,UAAU,KAAK,CAAC,EAAE;QAEpBE,gBAAgB,GAAGC,sBAAsB,CACvCvB,YAAY,EACZU,UAAU,EACVR,aACF,CAAC;MACH,CAAC,MAAM;QAEL,MAAMsB,WAAW,GAAGxB,YAAY,CAACpT,GAAG;QACpC,MAAM6U,SAAS,GAAGzB,YAAY,CAAC0B,QAAQ,GAAGN,UAAU;QACpDpB,YAAY,CAACpT,GAAG,GAAG6U,SAAS;QAC5BH,gBAAgB,GAAG1E,eAAe,CAChCoD,YAAY,EACZU,UAAU,EACVR,aAAa,EACb,KACF,CAAC;QACDF,YAAY,CAACpT,GAAG,GAAG4U,WAAW;QAC9BxB,YAAY,CAAC0B,QAAQ,GAAGD,SAAS;MACnC;MACA,MAAME,sBAAsB,GAAGtB,YAAY,CAAChpB,MAAM;MAClD,IAAIspB,WAAW,KAAKgB,sBAAsB,GAAG,CAAC,EAAE;QAE9C1B,UAAU,CAACxlB,IAAI,CAAC6mB,gBAAgB,CAAC;MACnC,CAAC,MAAM;QAEL,IAAInnB,CAAC;UACH8G,CAAC;UACD2gB,IAAI,GAAG,CAAC;UACRC,IAAI;UACJC,WAAW;UACXC,YAAY;QACd,KAAK5nB,CAAC,GAAGwmB,WAAW,EAAExmB,CAAC,GAAGwnB,sBAAsB,EAAExnB,CAAC,EAAE,EAAE;UACrD2nB,WAAW,GAAGzB,YAAY,CAAClmB,CAAC,CAAC;UAC7B0nB,IAAI,GAAGD,IAAI,GAAGE,WAAW;UACzBC,YAAY,GAAG,EAAE;UACjB,KAAK9gB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGif,aAAa,EAAEjf,CAAC,EAAE,EAAE;YAClC8gB,YAAY,CAACtnB,IAAI,CAAC6mB,gBAAgB,CAACrgB,CAAC,CAAC,CAACzG,QAAQ,CAAConB,IAAI,EAAEC,IAAI,CAAC,CAAC;UAC7D;UACA5B,UAAU,CAACxlB,IAAI,CAACsnB,YAAY,CAAC;UAC7BH,IAAI,GAAGC,IAAI;QACb;MACF;IACF;EACF;EAGA,MAAMG,eAAe,GAAG,EAAE;IACxBC,KAAK,GAAG,EAAE;EACZ,IAAIC,WAAW,GAAG,KAAK;IACrB/nB,CAAC;IACD8I,EAAE;EACJ,MAAMkf,kBAAkB,GAAGzC,OAAO,CAACroB,MAAM,GAAGsoB,kBAAkB;EAC9D,OAAOsC,KAAK,CAAC5qB,MAAM,GAAG8qB,kBAAkB,EAAE;IACxC,IAAIC,SAAS,GAAG5C,OAAO,GACnBY,OAAO,CAACtd,MAAM,CAACkd,YAAY,CAAC,GAC5BpF,aAAa,CAACF,YAAY,EAAE,MAAM,EAAEhY,OAAO,CAAC;IAChD,OAAO0f,SAAS,EAAE,EAAE;MAClBH,KAAK,CAACxnB,IAAI,CAACynB,WAAW,CAAC;IACzB;IACAA,WAAW,GAAG,CAACA,WAAW;EAC5B;EACA,KAAK/nB,CAAC,GAAG,CAAC,EAAE8I,EAAE,GAAGyc,OAAO,CAACroB,MAAM,EAAE8C,CAAC,GAAG8I,EAAE,EAAE9I,CAAC,EAAE,EAAE;IAC5C,IAAI8nB,KAAK,CAAC9nB,CAAC,CAAC,EAAE;MACZ6nB,eAAe,CAACvnB,IAAI,CAACilB,OAAO,CAACvlB,CAAC,CAAC,CAAC;IAClC;EACF;EACA,KAAK,IAAI6hB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2D,kBAAkB,EAAExlB,CAAC,EAAE,EAAE6hB,CAAC,EAAE,EAAE;IAChD,IAAIiG,KAAK,CAAC9nB,CAAC,CAAC,EAAE;MACZ6nB,eAAe,CAACvnB,IAAI,CAACwlB,UAAU,CAACjE,CAAC,CAAC,CAAC;IACrC;EACF;EACA,OAAOgG,eAAe;AACxB;AAEA,SAASjB,gBAAgBA,CACvBvB,OAAO,EACPC,UAAU,EACVxK,KAAK,EACLC,MAAM,EACNmN,iBAAiB,EACjBC,uBAAuB,EACvBC,SAAS,EACTC,YAAY,EACZrC,gBAAgB,EAChBsC,UAAU,EACVC,QAAQ,EACRC,eAAe,EACfC,mBAAmB,EACnB/C,aAAa,EACbC,uBAAuB,EACvBC,YAAY,EACZlE,eAAe,EACfgH,YAAY,EACZ7C,YAAY,EACZ;EACA,IAAIR,OAAO,IAAIC,UAAU,EAAE;IACzB,MAAM,IAAIrF,UAAU,CAAC,0CAA0C,CAAC;EAClE;EAGA,MAAM0B,MAAM,GAAG,EAAE;EACjB,IAAI3hB,CAAC,EAAEue,GAAG;EACV,KAAKve,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+a,MAAM,EAAE/a,CAAC,EAAE,EAAE;IAC3Bue,GAAG,GAAG,IAAI7d,UAAU,CAACoa,KAAK,CAAC;IAC3B,IAAIoN,iBAAiB,EAAE;MACrB3J,GAAG,CAACxnB,IAAI,CAACmxB,iBAAiB,CAAC;IAC7B;IACAvG,MAAM,CAACrhB,IAAI,CAACie,GAAG,CAAC;EAClB;EAEA,MAAMhW,OAAO,GAAGmZ,eAAe,CAACnZ,OAAO;EACvC,MAAMgY,YAAY,GAAGmB,eAAe,CAACnB,YAAY;EAEjD,IAAIoI,MAAM,GAAGtD,OAAO,GAChB,CAACK,aAAa,CAACkD,WAAW,CAACjgB,MAAM,CAACkd,YAAY,CAAC,GAC/C,CAACpF,aAAa,CAACF,YAAY,EAAE,MAAM,EAAEhY,OAAO,CAAC;EACjD,IAAIsgB,MAAM,GAAG,CAAC;EACd7oB,CAAC,GAAG,CAAC;EACL,OAAOA,CAAC,GAAGmoB,uBAAuB,EAAE;IAClC,MAAMW,MAAM,GAAGzD,OAAO,GAClBK,aAAa,CAACkD,WAAW,CAACjgB,MAAM,CAACkd,YAAY,CAAC,GAC9CpF,aAAa,CAACF,YAAY,EAAE,MAAM,EAAEhY,OAAO,CAAC;IAChDogB,MAAM,IAAIG,MAAM;IAEhB,MAAMC,WAAW,GAAG1D,OAAO,GACvBK,aAAa,CAACsD,WAAW,CAACrgB,MAAM,CAACkd,YAAY,CAAC,GAC9CpF,aAAa,CAACF,YAAY,EAAE,MAAM,EAAEhY,OAAO,CAAC;IAChDsgB,MAAM,IAAIE,WAAW;IACrB,IAAIE,QAAQ,GAAGJ,MAAM;IACrB,GAAG;MACD,IAAIK,QAAQ,GAAG,CAAC;MAChB,IAAId,SAAS,GAAG,CAAC,EAAE;QACjBc,QAAQ,GAAG7D,OAAO,GACdQ,YAAY,CAACjF,QAAQ,CAAC8H,YAAY,CAAC,GACnCjI,aAAa,CAACF,YAAY,EAAE,MAAM,EAAEhY,OAAO,CAAC;MAClD;MACA,MAAMb,CAAC,GAAG0gB,SAAS,GAAGO,MAAM,GAAGO,QAAQ;MACvC,MAAMrC,QAAQ,GAAGxB,OAAO,GACpBK,aAAa,CAACyD,aAAa,CAACxgB,MAAM,CAACkd,YAAY,CAAC,GAChD7E,UAAU,CAACT,YAAY,EAAEhY,OAAO,EAAEyd,gBAAgB,CAAC;MACvD,MAAMoD,eAAe,GACnB9D,UAAU,KACTD,OAAO,GACJQ,YAAY,CAAChK,OAAO,CAAC,CAAC,GACtB4E,aAAa,CAACF,YAAY,EAAE,MAAM,EAAEhY,OAAO,CAAC,CAAC;MACnD,IAAIqf,YAAY,GAAGS,YAAY,CAACxB,QAAQ,CAAC;MACzC,IAAIwC,WAAW,GAAGzB,YAAY,CAAC,CAAC,CAAC,CAAC1qB,MAAM;MACxC,IAAIosB,YAAY,GAAG1B,YAAY,CAAC1qB,MAAM;MACtC,IAAIksB,eAAe,EAAE;QACnB,MAAMG,GAAG,GAAG9I,aAAa,CAACF,YAAY,EAAE,OAAO,EAAEhY,OAAO,CAAC;QACzD,MAAMihB,GAAG,GAAG/I,aAAa,CAACF,YAAY,EAAE,OAAO,EAAEhY,OAAO,CAAC;QACzD,MAAMue,GAAG,GAAGrG,aAAa,CAACF,YAAY,EAAE,OAAO,EAAEhY,OAAO,CAAC;QACzD,MAAMwe,GAAG,GAAGtG,aAAa,CAACF,YAAY,EAAE,OAAO,EAAEhY,OAAO,CAAC;QACzD8gB,WAAW,IAAIE,GAAG;QAClBD,YAAY,IAAIE,GAAG;QACnB5B,YAAY,GAAGvD,gBAAgB,CAC7BgF,WAAW,EACXC,YAAY,EACZ3D,uBAAuB,EACvBiC,YAAY,EACZ,CAAC2B,GAAG,IAAI,CAAC,IAAIzC,GAAG,EAChB,CAAC0C,GAAG,IAAI,CAAC,IAAIzC,GAAG,EAChB,KAAK,EACLnB,YAAY,EACZlE,eACF,CAAC;MACH;MAEA,IAAI+H,SAAS,GAAG,CAAC;MACjB,IAAI,CAACnB,UAAU,EAAE;QACf,IAAIE,eAAe,GAAG,CAAC,EAAE;UACvBS,QAAQ,IAAII,WAAW,GAAG,CAAC;QAC7B,CAAC,MAAM;UACLI,SAAS,GAAGJ,WAAW,GAAG,CAAC;QAC7B;MACF,CAAC,MAAM,IAAI,EAAEb,eAAe,GAAG,CAAC,CAAC,EAAE;QACjCS,QAAQ,IAAIK,YAAY,GAAG,CAAC;MAC9B,CAAC,MAAM;QACLG,SAAS,GAAGH,YAAY,GAAG,CAAC;MAC9B;MAEA,MAAMI,OAAO,GAAGhiB,CAAC,IAAI8gB,eAAe,GAAG,CAAC,GAAG,CAAC,GAAGc,YAAY,GAAG,CAAC,CAAC;MAChE,MAAMK,OAAO,GAAGV,QAAQ,IAAIT,eAAe,GAAG,CAAC,GAAGa,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;MACtE,IAAIO,EAAE,EAAEC,EAAE,EAAEC,SAAS;MACrB,IAAIxB,UAAU,EAAE;QAEd,KAAKsB,EAAE,GAAG,CAAC,EAAEA,EAAE,GAAGN,YAAY,EAAEM,EAAE,EAAE,EAAE;UACpCrL,GAAG,GAAGoD,MAAM,CAACgI,OAAO,GAAGC,EAAE,CAAC;UAC1B,IAAI,CAACrL,GAAG,EAAE;YACR;UACF;UACAuL,SAAS,GAAGlC,YAAY,CAACgC,EAAE,CAAC;UAG5B,MAAMG,QAAQ,GAAG7pB,IAAI,CAACC,GAAG,CAAC2a,KAAK,GAAG4O,OAAO,EAAEL,WAAW,CAAC;UACvD,QAAQZ,mBAAmB;YACzB,KAAK,CAAC;cACJ,KAAKoB,EAAE,GAAG,CAAC,EAAEA,EAAE,GAAGE,QAAQ,EAAEF,EAAE,EAAE,EAAE;gBAChCtL,GAAG,CAACmL,OAAO,GAAGG,EAAE,CAAC,IAAIC,SAAS,CAACD,EAAE,CAAC;cACpC;cACA;YACF,KAAK,CAAC;cACJ,KAAKA,EAAE,GAAG,CAAC,EAAEA,EAAE,GAAGE,QAAQ,EAAEF,EAAE,EAAE,EAAE;gBAChCtL,GAAG,CAACmL,OAAO,GAAGG,EAAE,CAAC,IAAIC,SAAS,CAACD,EAAE,CAAC;cACpC;cACA;YACF;cACE,MAAM,IAAI5J,UAAU,CAClB,YAAYwI,mBAAmB,mBACjC,CAAC;UACL;QACF;MACF,CAAC,MAAM;QACL,KAAKoB,EAAE,GAAG,CAAC,EAAEA,EAAE,GAAGP,YAAY,EAAEO,EAAE,EAAE,EAAE;UACpCtL,GAAG,GAAGoD,MAAM,CAAC+H,OAAO,GAAGG,EAAE,CAAC;UAC1B,IAAI,CAACtL,GAAG,EAAE;YACR;UACF;UACAuL,SAAS,GAAGlC,YAAY,CAACiC,EAAE,CAAC;UAC5B,QAAQpB,mBAAmB;YACzB,KAAK,CAAC;cACJ,KAAKmB,EAAE,GAAG,CAAC,EAAEA,EAAE,GAAGP,WAAW,EAAEO,EAAE,EAAE,EAAE;gBACnCrL,GAAG,CAACoL,OAAO,GAAGC,EAAE,CAAC,IAAIE,SAAS,CAACF,EAAE,CAAC;cACpC;cACA;YACF,KAAK,CAAC;cACJ,KAAKA,EAAE,GAAG,CAAC,EAAEA,EAAE,GAAGP,WAAW,EAAEO,EAAE,EAAE,EAAE;gBACnCrL,GAAG,CAACoL,OAAO,GAAGC,EAAE,CAAC,IAAIE,SAAS,CAACF,EAAE,CAAC;cACpC;cACA;YACF;cACE,MAAM,IAAI3J,UAAU,CAClB,YAAYwI,mBAAmB,mBACjC,CAAC;UACL;QACF;MACF;MACAzoB,CAAC,EAAE;MACH,MAAMgqB,MAAM,GAAG3E,OAAO,GAClBK,aAAa,CAACuE,WAAW,CAACthB,MAAM,CAACkd,YAAY,CAAC,GAC9CpF,aAAa,CAACF,YAAY,EAAE,MAAM,EAAEhY,OAAO,CAAC;MAChD,IAAIyhB,MAAM,KAAK,IAAI,EAAE;QACnB;MACF;MACAf,QAAQ,IAAIQ,SAAS,GAAGO,MAAM,GAAGzB,QAAQ;IAC3C,CAAC,QAAQ,IAAI;EACf;EACA,OAAO5G,MAAM;AACf;AAEA,SAASuI,uBAAuBA,CAC9B/H,GAAG,EACHgI,YAAY,EACZC,aAAa,EACbC,eAAe,EACf1H,QAAQ,EACRjB,eAAe,EACf;EACA,MAAMY,EAAE,GAAG,EAAE;EACb,IAAI,CAACH,GAAG,EAAE;IACRG,EAAE,CAAChiB,IAAI,CAAC;MACNuG,CAAC,EAAE,CAACsjB,YAAY;MAChBrjB,CAAC,EAAE;IACL,CAAC,CAAC;IACF,IAAI6b,QAAQ,KAAK,CAAC,EAAE;MAClBL,EAAE,CAAChiB,IAAI,CACL;QACEuG,CAAC,EAAE,CAAC,CAAC;QACLC,CAAC,EAAE,CAAC;MACN,CAAC,EACD;QACED,CAAC,EAAE,CAAC;QACJC,CAAC,EAAE,CAAC;MACN,CAAC,EACD;QACED,CAAC,EAAE,CAAC,CAAC;QACLC,CAAC,EAAE,CAAC;MACN,CACF,CAAC;IACH;EACF;EACA,MAAMwjB,eAAe,GAAG,CAACD,eAAe,GAAG,CAAC,IAAIF,YAAY;EAC5D,MAAMhD,gBAAgB,GAAGjF,YAAY,CACnCC,GAAG,EACHmI,eAAe,EACfF,aAAa,EACbzH,QAAQ,EACR,KAAK,EACL,IAAI,EACJL,EAAE,EACFZ,eACF,CAAC;EAED,MAAM6I,QAAQ,GAAG,EAAE;EACnB,KAAK,IAAIvqB,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIqqB,eAAe,EAAErqB,CAAC,EAAE,EAAE;IACzC,MAAMwqB,aAAa,GAAG,EAAE;IACxB,MAAM/C,IAAI,GAAG0C,YAAY,GAAGnqB,CAAC;IAC7B,MAAM0nB,IAAI,GAAGD,IAAI,GAAG0C,YAAY;IAChC,KAAK,IAAIrjB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGsjB,aAAa,EAAEtjB,CAAC,EAAE,EAAE;MACtC0jB,aAAa,CAAClqB,IAAI,CAAC6mB,gBAAgB,CAACrgB,CAAC,CAAC,CAACzG,QAAQ,CAAConB,IAAI,EAAEC,IAAI,CAAC,CAAC;IAC9D;IACA6C,QAAQ,CAACjqB,IAAI,CAACkqB,aAAa,CAAC;EAC9B;EACA,OAAOD,QAAQ;AACjB;AAEA,SAASE,oBAAoBA,CAC3BtI,GAAG,EACHoI,QAAQ,EACR5H,QAAQ,EACR+H,WAAW,EACXC,YAAY,EACZzC,iBAAiB,EACjB0C,UAAU,EACVnC,mBAAmB,EACnBoC,SAAS,EACTC,UAAU,EACVC,WAAW,EACXC,WAAW,EACXC,WAAW,EACXC,WAAW,EACXxJ,eAAe,EACf;EACA,MAAM/O,IAAI,GAAG,IAAI;EACjB,IAAIiY,UAAU,EAAE;IACd,MAAM,IAAI3K,UAAU,CAAC,uBAAuB,CAAC;EAC/C;EACA,IAAIwI,mBAAmB,KAAK,CAAC,EAAE;IAC7B,MAAM,IAAIxI,UAAU,CAClB,aAAawI,mBAAmB,uCAClC,CAAC;EACH;EAGA,MAAM0C,YAAY,GAAG,EAAE;EACvB,IAAInrB,CAAC,EAAE6hB,CAAC,EAAEtD,GAAG;EACb,KAAKve,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2qB,YAAY,EAAE3qB,CAAC,EAAE,EAAE;IACjCue,GAAG,GAAG,IAAI7d,UAAU,CAACgqB,WAAW,CAAC;IACjC,IAAIxC,iBAAiB,EAAE;MACrB3J,GAAG,CAACxnB,IAAI,CAACmxB,iBAAiB,CAAC;IAC7B;IACAiD,YAAY,CAAC7qB,IAAI,CAACie,GAAG,CAAC;EACxB;EAEA,MAAM6M,gBAAgB,GAAGb,QAAQ,CAACrtB,MAAM;EACxC,MAAMmuB,QAAQ,GAAGd,QAAQ,CAAC,CAAC,CAAC;EAC5B,MAAMJ,YAAY,GAAGkB,QAAQ,CAAC,CAAC,CAAC,CAACnuB,MAAM;IACrCktB,aAAa,GAAGiB,QAAQ,CAACnuB,MAAM;EACjC,MAAMouB,YAAY,GAAGjW,IAAI,CAAC+V,gBAAgB,CAAC;EAC3C,MAAM9I,EAAE,GAAG,EAAE;EACb,IAAI,CAACH,GAAG,EAAE;IACRG,EAAE,CAAChiB,IAAI,CAAC;MACNuG,CAAC,EAAE8b,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;MACxB7b,CAAC,EAAE,CAAC;IACN,CAAC,CAAC;IACF,IAAI6b,QAAQ,KAAK,CAAC,EAAE;MAClBL,EAAE,CAAChiB,IAAI,CACL;QACEuG,CAAC,EAAE,CAAC,CAAC;QACLC,CAAC,EAAE,CAAC;MACN,CAAC,EACD;QACED,CAAC,EAAE,CAAC;QACJC,CAAC,EAAE,CAAC;MACN,CAAC,EACD;QACED,CAAC,EAAE,CAAC,CAAC;QACLC,CAAC,EAAE,CAAC;MACN,CACF,CAAC;IACH;EACF;EAEA,MAAMykB,kBAAkB,GAAG,EAAE;EAC7B,IAAIC,QAAQ,EAAE7J,MAAM;EACpB,IAAIQ,GAAG,EAAE;IAGPqJ,QAAQ,GAAG,IAAIhJ,MAAM,CACnBd,eAAe,CAACzN,IAAI,EACpByN,eAAe,CAAC3O,KAAK,EACrB2O,eAAe,CAACjP,GAClB,CAAC;EACH;EACA,KAAKzS,CAAC,GAAGsrB,YAAY,GAAG,CAAC,EAAEtrB,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;IACtC,IAAImiB,GAAG,EAAE;MACPR,MAAM,GAAGc,eAAe,CAAC+I,QAAQ,EAAEX,SAAS,EAAEC,UAAU,EAAE,IAAI,CAAC;IACjE,CAAC,MAAM;MACLnJ,MAAM,GAAGO,YAAY,CACnB,KAAK,EACL2I,SAAS,EACTC,UAAU,EACVnI,QAAQ,EACR,KAAK,EACLhQ,IAAI,EACJ2P,EAAE,EACFZ,eACF,CAAC;IACH;IACA6J,kBAAkB,CAACvrB,CAAC,CAAC,GAAG2hB,MAAM;EAChC;EAEA,IAAI8J,EAAE,EAAEC,EAAE,EAAE7K,GAAG,EAAE8K,YAAY,EAAEnB,aAAa,EAAE3jB,CAAC,EAAEC,CAAC,EAAE8kB,UAAU,EAAEC,SAAS;EACzE,KAAKJ,EAAE,GAAG,CAAC,EAAEA,EAAE,GAAGX,UAAU,EAAEW,EAAE,EAAE,EAAE;IAClC,KAAKC,EAAE,GAAG,CAAC,EAAEA,EAAE,GAAGb,SAAS,EAAEa,EAAE,EAAE,EAAE;MACjC7K,GAAG,GAAG,CAAC;MACP8K,YAAY,GAAG,CAAC;MAChB,KAAK9J,CAAC,GAAGyJ,YAAY,GAAG,CAAC,EAAEzJ,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;QACtChB,GAAG,IAAI0K,kBAAkB,CAAC1J,CAAC,CAAC,CAAC4J,EAAE,CAAC,CAACC,EAAE,CAAC;QACpCC,YAAY,IAAI9K,GAAG,IAAIgB,CAAC;MAC1B;MACA2I,aAAa,GAAGD,QAAQ,CAACoB,YAAY,CAAC;MACtC9kB,CAAC,GAAIkkB,WAAW,GAAGU,EAAE,GAAGP,WAAW,GAAGQ,EAAE,GAAGT,WAAW,IAAK,CAAC;MAC5DnkB,CAAC,GAAIkkB,WAAW,GAAGS,EAAE,GAAGR,WAAW,GAAGS,EAAE,GAAGR,WAAW,IAAK,CAAC;MAE5D,IACErkB,CAAC,IAAI,CAAC,IACNA,CAAC,GAAGsjB,YAAY,IAAIO,WAAW,IAC/B5jB,CAAC,IAAI,CAAC,IACNA,CAAC,GAAGsjB,aAAa,IAAIO,YAAY,EACjC;QACA,KAAK3qB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoqB,aAAa,EAAEpqB,CAAC,EAAE,EAAE;UAClC6rB,SAAS,GAAGV,YAAY,CAACrkB,CAAC,GAAG9G,CAAC,CAAC;UAC/B4rB,UAAU,GAAGpB,aAAa,CAACxqB,CAAC,CAAC;UAC7B,KAAK6hB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGsI,YAAY,EAAEtI,CAAC,EAAE,EAAE;YACjCgK,SAAS,CAAChlB,CAAC,GAAGgb,CAAC,CAAC,IAAI+J,UAAU,CAAC/J,CAAC,CAAC;UACnC;QACF;MACF,CAAC,MAAM;QACL,IAAIiK,OAAO,EAAEC,OAAO;QACpB,KAAK/rB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoqB,aAAa,EAAEpqB,CAAC,EAAE,EAAE;UAClC+rB,OAAO,GAAGjlB,CAAC,GAAG9G,CAAC;UACf,IAAI+rB,OAAO,GAAG,CAAC,IAAIA,OAAO,IAAIpB,YAAY,EAAE;YAC1C;UACF;UACAkB,SAAS,GAAGV,YAAY,CAACY,OAAO,CAAC;UACjCH,UAAU,GAAGpB,aAAa,CAACxqB,CAAC,CAAC;UAC7B,KAAK6hB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGsI,YAAY,EAAEtI,CAAC,EAAE,EAAE;YACjCiK,OAAO,GAAGjlB,CAAC,GAAGgb,CAAC;YACf,IAAIiK,OAAO,IAAI,CAAC,IAAIA,OAAO,GAAGpB,WAAW,EAAE;cACzCmB,SAAS,CAACC,OAAO,CAAC,IAAIF,UAAU,CAAC/J,CAAC,CAAC;YACrC;UACF;QACF;MACF;IACF;EACF;EACA,OAAOsJ,YAAY;AACrB;AAEA,SAASa,iBAAiBA,CAAC/X,IAAI,EAAElB,KAAK,EAAE;EACtC,MAAMkZ,aAAa,GAAG,CAAC,CAAC;EACxBA,aAAa,CAACjX,MAAM,GAAGW,UAAU,CAAC1B,IAAI,EAAElB,KAAK,CAAC;EAC9C,MAAM+U,KAAK,GAAG7T,IAAI,CAAClB,KAAK,GAAG,CAAC,CAAC;EAC7B,MAAMmZ,WAAW,GAAGpE,KAAK,GAAG,IAAI;EAChC,IAAI,CAAC5G,YAAY,CAACgL,WAAW,CAAC,EAAE;IAC9B,MAAM,IAAIjM,UAAU,CAAC,wBAAwB,GAAGiM,WAAW,CAAC;EAC9D;EACAD,aAAa,CAAChgC,IAAI,GAAGigC,WAAW;EAChCD,aAAa,CAACE,QAAQ,GAAGjL,YAAY,CAACgL,WAAW,CAAC;EAClDD,aAAa,CAACG,iBAAiB,GAAG,CAAC,EAAEtE,KAAK,GAAG,IAAI,CAAC;EAElD,MAAMuE,wBAAwB,GAAG,CAAC,EAAEvE,KAAK,GAAG,IAAI,CAAC;EACjD,MAAMwE,aAAa,GAAGrY,IAAI,CAAClB,KAAK,GAAG,CAAC,CAAC;EACrC,IAAIwZ,eAAe,GAAID,aAAa,IAAI,CAAC,GAAI,CAAC;EAC9C,MAAME,UAAU,GAAG,CAACF,aAAa,GAAG,EAAE,CAAC;EACvC,IAAI/E,QAAQ,GAAGxU,KAAK,GAAG,CAAC;EACxB,IAAIuZ,aAAa,KAAK,CAAC,EAAE;IACvBC,eAAe,GAAG5W,UAAU,CAAC1B,IAAI,EAAEsT,QAAQ,GAAG,CAAC,CAAC,GAAG,UAAU;IAC7DA,QAAQ,IAAI,CAAC;IACb,IAAI9nB,KAAK,GAAI8sB,eAAe,GAAG,CAAC,IAAK,CAAC;IACtCC,UAAU,CAAC,CAAC,CAAC,GAAGvY,IAAI,CAACsT,QAAQ,EAAE,CAAC;IAChC,OAAO,EAAE9nB,KAAK,GAAG,CAAC,EAAE;MAClB+sB,UAAU,CAAClsB,IAAI,CAAC2T,IAAI,CAACsT,QAAQ,EAAE,CAAC,CAAC;IACnC;EACF,CAAC,MAAM,IAAI+E,aAAa,KAAK,CAAC,IAAIA,aAAa,KAAK,CAAC,EAAE;IACrD,MAAM,IAAIrM,UAAU,CAAC,2BAA2B,CAAC;EACnD;EAEAgM,aAAa,CAACO,UAAU,GAAGA,UAAU;EAErC,IAAIC,2BAA2B,GAAG,CAAC;EACnC,IAAIR,aAAa,CAACjX,MAAM,IAAI,GAAG,EAAE;IAC/ByX,2BAA2B,GAAG,CAAC;EACjC,CAAC,MAAM,IAAIR,aAAa,CAACjX,MAAM,IAAI,KAAK,EAAE;IACxCyX,2BAA2B,GAAG,CAAC;EACjC;EACA,MAAMC,UAAU,GAAG,EAAE;EACrB,IAAI1sB,CAAC,EAAE8I,EAAE;EACT,KAAK9I,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGusB,eAAe,EAAEvsB,CAAC,EAAE,EAAE;IACpC,IAAIgV,MAAM;IACV,IAAIyX,2BAA2B,KAAK,CAAC,EAAE;MACrCzX,MAAM,GAAGf,IAAI,CAACsT,QAAQ,CAAC;IACzB,CAAC,MAAM,IAAIkF,2BAA2B,KAAK,CAAC,EAAE;MAC5CzX,MAAM,GAAGU,UAAU,CAACzB,IAAI,EAAEsT,QAAQ,CAAC;IACrC,CAAC,MAAM;MACLvS,MAAM,GAAGW,UAAU,CAAC1B,IAAI,EAAEsT,QAAQ,CAAC;IACrC;IACAmF,UAAU,CAACpsB,IAAI,CAAC0U,MAAM,CAAC;IACvBuS,QAAQ,IAAIkF,2BAA2B;EACzC;EACAR,aAAa,CAACS,UAAU,GAAGA,UAAU;EACrC,IAAI,CAACL,wBAAwB,EAAE;IAC7BJ,aAAa,CAACU,eAAe,GAAG1Y,IAAI,CAACsT,QAAQ,EAAE,CAAC;EAClD,CAAC,MAAM;IACL0E,aAAa,CAACU,eAAe,GAAGhX,UAAU,CAAC1B,IAAI,EAAEsT,QAAQ,CAAC;IAC1DA,QAAQ,IAAI,CAAC;EACf;EACA0E,aAAa,CAAC/uB,MAAM,GAAGyY,UAAU,CAAC1B,IAAI,EAAEsT,QAAQ,CAAC;EACjDA,QAAQ,IAAI,CAAC;EAEb,IAAI0E,aAAa,CAAC/uB,MAAM,KAAK,UAAU,EAAE;IAEvC,IAAIgvB,WAAW,KAAK,EAAE,EAAE;MAEtB,MAAMU,iBAAiB,GAAGC,4BAA4B,CAAC5Y,IAAI,EAAEsT,QAAQ,CAAC;MACtE,MAAMuF,yBAAyB,GAC7B7Y,IAAI,CAACsT,QAAQ,GAAGwF,mCAAmC,CAAC;MACtD,MAAMC,gBAAgB,GAAG,CAAC,EAAEF,yBAAyB,GAAG,CAAC,CAAC;MAE1D,MAAMG,mBAAmB,GAAG,CAAC;MAC7B,MAAMC,aAAa,GAAG,IAAIxsB,UAAU,CAACusB,mBAAmB,CAAC;MACzD,IAAI,CAACD,gBAAgB,EAAE;QACrBE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;QACvBA,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;MACzB;MACAA,aAAa,CAAC,CAAC,CAAC,GAAIN,iBAAiB,CAAC7R,MAAM,KAAK,EAAE,GAAI,IAAI;MAC3DmS,aAAa,CAAC,CAAC,CAAC,GAAIN,iBAAiB,CAAC7R,MAAM,IAAI,EAAE,GAAI,IAAI;MAC1DmS,aAAa,CAAC,CAAC,CAAC,GAAIN,iBAAiB,CAAC7R,MAAM,IAAI,CAAC,GAAI,IAAI;MACzDmS,aAAa,CAAC,CAAC,CAAC,GAAGN,iBAAiB,CAAC7R,MAAM,GAAG,IAAI;MAClD,KAAK/a,CAAC,GAAGunB,QAAQ,EAAEze,EAAE,GAAGmL,IAAI,CAAC/W,MAAM,EAAE8C,CAAC,GAAG8I,EAAE,EAAE9I,CAAC,EAAE,EAAE;QAChD,IAAI6hB,CAAC,GAAG,CAAC;QACT,OAAOA,CAAC,GAAGoL,mBAAmB,IAAIC,aAAa,CAACrL,CAAC,CAAC,KAAK5N,IAAI,CAACjU,CAAC,GAAG6hB,CAAC,CAAC,EAAE;UAClEA,CAAC,EAAE;QACL;QACA,IAAIA,CAAC,KAAKoL,mBAAmB,EAAE;UAC7BhB,aAAa,CAAC/uB,MAAM,GAAG8C,CAAC,GAAGitB,mBAAmB;UAC9C;QACF;MACF;MACA,IAAIhB,aAAa,CAAC/uB,MAAM,KAAK,UAAU,EAAE;QACvC,MAAM,IAAI+iB,UAAU,CAAC,2BAA2B,CAAC;MACnD;IACF,CAAC,MAAM;MACL,MAAM,IAAIA,UAAU,CAAC,gCAAgC,CAAC;IACxD;EACF;EACAgM,aAAa,CAACkB,SAAS,GAAG5F,QAAQ;EAClC,OAAO0E,aAAa;AACtB;AAEA,SAASmB,YAAYA,CAACC,MAAM,EAAEpZ,IAAI,EAAElB,KAAK,EAAEN,GAAG,EAAE;EAC9C,MAAM6a,QAAQ,GAAG,EAAE;EACnB,IAAI/F,QAAQ,GAAGxU,KAAK;EACpB,OAAOwU,QAAQ,GAAG9U,GAAG,EAAE;IACrB,MAAMwZ,aAAa,GAAGD,iBAAiB,CAAC/X,IAAI,EAAEsT,QAAQ,CAAC;IACvDA,QAAQ,GAAG0E,aAAa,CAACkB,SAAS;IAClC,MAAMI,OAAO,GAAG;MACdF,MAAM,EAAEpB,aAAa;MACrBhY;IACF,CAAC;IACD,IAAI,CAACoZ,MAAM,CAACG,YAAY,EAAE;MACxBD,OAAO,CAACxa,KAAK,GAAGwU,QAAQ;MACxBA,QAAQ,IAAI0E,aAAa,CAAC/uB,MAAM;MAChCqwB,OAAO,CAAC9a,GAAG,GAAG8U,QAAQ;IACxB;IACA+F,QAAQ,CAAChtB,IAAI,CAACitB,OAAO,CAAC;IACtB,IAAItB,aAAa,CAAChgC,IAAI,KAAK,EAAE,EAAE;MAC7B;IACF;EACF;EACA,IAAIohC,MAAM,CAACG,YAAY,EAAE;IACvB,KAAK,IAAIxtB,CAAC,GAAG,CAAC,EAAE8I,EAAE,GAAGwkB,QAAQ,CAACpwB,MAAM,EAAE8C,CAAC,GAAG8I,EAAE,EAAE9I,CAAC,EAAE,EAAE;MACjDstB,QAAQ,CAACttB,CAAC,CAAC,CAAC+S,KAAK,GAAGwU,QAAQ;MAC5BA,QAAQ,IAAI+F,QAAQ,CAACttB,CAAC,CAAC,CAACqtB,MAAM,CAACnwB,MAAM;MACrCowB,QAAQ,CAACttB,CAAC,CAAC,CAACyS,GAAG,GAAG8U,QAAQ;IAC5B;EACF;EACA,OAAO+F,QAAQ;AACjB;AAGA,SAAST,4BAA4BA,CAAC5Y,IAAI,EAAElB,KAAK,EAAE;EACjD,OAAO;IACL+H,KAAK,EAAEnF,UAAU,CAAC1B,IAAI,EAAElB,KAAK,CAAC;IAC9BgI,MAAM,EAAEpF,UAAU,CAAC1B,IAAI,EAAElB,KAAK,GAAG,CAAC,CAAC;IACnClM,CAAC,EAAE8O,UAAU,CAAC1B,IAAI,EAAElB,KAAK,GAAG,CAAC,CAAC;IAC9BjM,CAAC,EAAE6O,UAAU,CAAC1B,IAAI,EAAElB,KAAK,GAAG,EAAE,CAAC;IAC/B0V,mBAAmB,EAAExU,IAAI,CAAClB,KAAK,GAAG,EAAE,CAAC,GAAG;EAC1C,CAAC;AACH;AACA,MAAMga,mCAAmC,GAAG,EAAE;AAE9C,SAASU,cAAcA,CAACF,OAAO,EAAEG,OAAO,EAAE;EACxC,MAAML,MAAM,GAAGE,OAAO,CAACF,MAAM;EAE7B,MAAMpZ,IAAI,GAAGsZ,OAAO,CAACtZ,IAAI;IACvBxB,GAAG,GAAG8a,OAAO,CAAC9a,GAAG;EACnB,IAAI8U,QAAQ,GAAGgG,OAAO,CAACxa,KAAK;EAC5B,IAAIxH,IAAI,EAAE+W,EAAE,EAAEtiB,CAAC,EAAE2tB,QAAQ;EACzB,QAAQN,MAAM,CAACphC,IAAI;IACjB,KAAK,CAAC;MAEJ,MAAM2hC,UAAU,GAAG,CAAC,CAAC;MACrB,MAAMC,eAAe,GAAGnY,UAAU,CAACzB,IAAI,EAAEsT,QAAQ,CAAC;MAClDqG,UAAU,CAACvI,OAAO,GAAG,CAAC,EAAEwI,eAAe,GAAG,CAAC,CAAC;MAC5CD,UAAU,CAACtI,UAAU,GAAG,CAAC,EAAEuI,eAAe,GAAG,CAAC,CAAC;MAC/CD,UAAU,CAACE,iBAAiB,GAAID,eAAe,IAAI,CAAC,GAAI,CAAC;MACzDD,UAAU,CAACG,iBAAiB,GAAIF,eAAe,IAAI,CAAC,GAAI,CAAC;MACzDD,UAAU,CAACI,kBAAkB,GAAIH,eAAe,IAAI,CAAC,GAAI,CAAC;MAC1DD,UAAU,CAACK,4BAA4B,GAAIJ,eAAe,IAAI,CAAC,GAAI,CAAC;MACpED,UAAU,CAACM,uBAAuB,GAAG,CAAC,EAAEL,eAAe,GAAG,GAAG,CAAC;MAC9DD,UAAU,CAACO,2BAA2B,GAAG,CAAC,EAAEN,eAAe,GAAG,GAAG,CAAC;MAClED,UAAU,CAACjL,QAAQ,GAAIkL,eAAe,IAAI,EAAE,GAAI,CAAC;MACjDD,UAAU,CAACQ,kBAAkB,GAAIP,eAAe,IAAI,EAAE,GAAI,CAAC;MAC3DtG,QAAQ,IAAI,CAAC;MACb,IAAI,CAACqG,UAAU,CAACvI,OAAO,EAAE;QACvBsI,QAAQ,GAAGC,UAAU,CAACjL,QAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;QAC5CL,EAAE,GAAG,EAAE;QACP,KAAKtiB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2tB,QAAQ,EAAE3tB,CAAC,EAAE,EAAE;UAC7BsiB,EAAE,CAAChiB,IAAI,CAAC;YACNuG,CAAC,EAAE0O,QAAQ,CAACtB,IAAI,EAAEsT,QAAQ,CAAC;YAC3BzgB,CAAC,EAAEyO,QAAQ,CAACtB,IAAI,EAAEsT,QAAQ,GAAG,CAAC;UAChC,CAAC,CAAC;UACFA,QAAQ,IAAI,CAAC;QACf;QACAqG,UAAU,CAACtL,EAAE,GAAGA,EAAE;MACpB;MACA,IAAIsL,UAAU,CAACtI,UAAU,IAAI,CAACsI,UAAU,CAACQ,kBAAkB,EAAE;QAC3D9L,EAAE,GAAG,EAAE;QACP,KAAKtiB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;UACtBsiB,EAAE,CAAChiB,IAAI,CAAC;YACNuG,CAAC,EAAE0O,QAAQ,CAACtB,IAAI,EAAEsT,QAAQ,CAAC;YAC3BzgB,CAAC,EAAEyO,QAAQ,CAACtB,IAAI,EAAEsT,QAAQ,GAAG,CAAC;UAChC,CAAC,CAAC;UACFA,QAAQ,IAAI,CAAC;QACf;QACAqG,UAAU,CAAChI,YAAY,GAAGtD,EAAE;MAC9B;MACAsL,UAAU,CAACnI,uBAAuB,GAAG9P,UAAU,CAAC1B,IAAI,EAAEsT,QAAQ,CAAC;MAC/DA,QAAQ,IAAI,CAAC;MACbqG,UAAU,CAACpI,kBAAkB,GAAG7P,UAAU,CAAC1B,IAAI,EAAEsT,QAAQ,CAAC;MAC1DA,QAAQ,IAAI,CAAC;MACbhc,IAAI,GAAG,CACLqiB,UAAU,EACVP,MAAM,CAACrY,MAAM,EACbqY,MAAM,CAACX,UAAU,EACjBzY,IAAI,EACJsT,QAAQ,EACR9U,GAAG,CACJ;MACD;IACF,KAAK,CAAC;IACN,KAAK,CAAC;MACJ,MAAM4b,UAAU,GAAG,CAAC,CAAC;MACrBA,UAAU,CAACtyB,IAAI,GAAG8wB,4BAA4B,CAAC5Y,IAAI,EAAEsT,QAAQ,CAAC;MAC9DA,QAAQ,IAAIwF,mCAAmC;MAC/C,MAAMuB,sBAAsB,GAAG5Y,UAAU,CAACzB,IAAI,EAAEsT,QAAQ,CAAC;MACzDA,QAAQ,IAAI,CAAC;MACb8G,UAAU,CAAChJ,OAAO,GAAG,CAAC,EAAEiJ,sBAAsB,GAAG,CAAC,CAAC;MACnDD,UAAU,CAAC/I,UAAU,GAAG,CAAC,EAAEgJ,sBAAsB,GAAG,CAAC,CAAC;MACtDD,UAAU,CAAC3F,YAAY,GAAI4F,sBAAsB,IAAI,CAAC,GAAI,CAAC;MAC3DD,UAAU,CAACjG,SAAS,GAAG,CAAC,IAAIiG,UAAU,CAAC3F,YAAY;MACnD2F,UAAU,CAAC7F,eAAe,GAAI8F,sBAAsB,IAAI,CAAC,GAAI,CAAC;MAC9DD,UAAU,CAAC/F,UAAU,GAAG,CAAC,EAAEgG,sBAAsB,GAAG,EAAE,CAAC;MACvDD,UAAU,CAAC5F,mBAAmB,GAAI6F,sBAAsB,IAAI,CAAC,GAAI,CAAC;MAClED,UAAU,CAACnG,iBAAiB,GAAIoG,sBAAsB,IAAI,CAAC,GAAI,CAAC;MAChED,UAAU,CAAC9F,QAAQ,GAAI+F,sBAAsB,IAAI,EAAE,IAAK,EAAE;MAC1DD,UAAU,CAACD,kBAAkB,GAAIE,sBAAsB,IAAI,EAAE,GAAI,CAAC;MAClE,IAAID,UAAU,CAAChJ,OAAO,EAAE;QACtB,MAAMkJ,sBAAsB,GAAG7Y,UAAU,CAACzB,IAAI,EAAEsT,QAAQ,CAAC;QACzDA,QAAQ,IAAI,CAAC;QACb8G,UAAU,CAACG,SAAS,GAAGD,sBAAsB,GAAG,CAAC;QACjDF,UAAU,CAACI,SAAS,GAAIF,sBAAsB,IAAI,CAAC,GAAI,CAAC;QACxDF,UAAU,CAACK,SAAS,GAAIH,sBAAsB,IAAI,CAAC,GAAI,CAAC;QACxDF,UAAU,CAACM,mBAAmB,GAAIJ,sBAAsB,IAAI,CAAC,GAAI,CAAC;QAClEF,UAAU,CAACO,mBAAmB,GAAIL,sBAAsB,IAAI,CAAC,GAAI,CAAC;QAClEF,UAAU,CAACQ,mBAAmB,GAAIN,sBAAsB,IAAI,EAAE,GAAI,CAAC;QACnEF,UAAU,CAACS,mBAAmB,GAAIP,sBAAsB,IAAI,EAAE,GAAI,CAAC;QACnEF,UAAU,CAACU,6BAA6B,GAAG,CAAC,EAC1CR,sBAAsB,GAAG,MAAM,CAChC;MACH;MACA,IAAIF,UAAU,CAAC/I,UAAU,IAAI,CAAC+I,UAAU,CAACD,kBAAkB,EAAE;QAC3D9L,EAAE,GAAG,EAAE;QACP,KAAKtiB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;UACtBsiB,EAAE,CAAChiB,IAAI,CAAC;YACNuG,CAAC,EAAE0O,QAAQ,CAACtB,IAAI,EAAEsT,QAAQ,CAAC;YAC3BzgB,CAAC,EAAEyO,QAAQ,CAACtB,IAAI,EAAEsT,QAAQ,GAAG,CAAC;UAChC,CAAC,CAAC;UACFA,QAAQ,IAAI,CAAC;QACf;QACA8G,UAAU,CAACzI,YAAY,GAAGtD,EAAE;MAC9B;MACA+L,UAAU,CAAClG,uBAAuB,GAAGxS,UAAU,CAAC1B,IAAI,EAAEsT,QAAQ,CAAC;MAC/DA,QAAQ,IAAI,CAAC;MACbhc,IAAI,GAAG,CAAC8iB,UAAU,EAAEhB,MAAM,CAACX,UAAU,EAAEzY,IAAI,EAAEsT,QAAQ,EAAE9U,GAAG,CAAC;MAC3D;IACF,KAAK,EAAE;MAEL,MAAMuc,iBAAiB,GAAG,CAAC,CAAC;MAC5B,MAAMC,sBAAsB,GAAGhb,IAAI,CAACsT,QAAQ,EAAE,CAAC;MAC/CyH,iBAAiB,CAAC7M,GAAG,GAAG,CAAC,EAAE8M,sBAAsB,GAAG,CAAC,CAAC;MACtDD,iBAAiB,CAACrM,QAAQ,GAAIsM,sBAAsB,IAAI,CAAC,GAAI,CAAC;MAC9DD,iBAAiB,CAAC7E,YAAY,GAAGlW,IAAI,CAACsT,QAAQ,EAAE,CAAC;MACjDyH,iBAAiB,CAAC5E,aAAa,GAAGnW,IAAI,CAACsT,QAAQ,EAAE,CAAC;MAClDyH,iBAAiB,CAAC3E,eAAe,GAAG1U,UAAU,CAAC1B,IAAI,EAAEsT,QAAQ,CAAC;MAC9DA,QAAQ,IAAI,CAAC;MACbhc,IAAI,GAAG,CAACyjB,iBAAiB,EAAE3B,MAAM,CAACrY,MAAM,EAAEf,IAAI,EAAEsT,QAAQ,EAAE9U,GAAG,CAAC;MAC9D;IACF,KAAK,EAAE;IACP,KAAK,EAAE;MAEL,MAAMyc,cAAc,GAAG,CAAC,CAAC;MACzBA,cAAc,CAACnzB,IAAI,GAAG8wB,4BAA4B,CAAC5Y,IAAI,EAAEsT,QAAQ,CAAC;MAClEA,QAAQ,IAAIwF,mCAAmC;MAC/C,MAAMoC,mBAAmB,GAAGlb,IAAI,CAACsT,QAAQ,EAAE,CAAC;MAC5C2H,cAAc,CAAC/M,GAAG,GAAG,CAAC,EAAEgN,mBAAmB,GAAG,CAAC,CAAC;MAChDD,cAAc,CAACvM,QAAQ,GAAIwM,mBAAmB,IAAI,CAAC,GAAI,CAAC;MACxDD,cAAc,CAACtE,UAAU,GAAG,CAAC,EAAEuE,mBAAmB,GAAG,CAAC,CAAC;MACvDD,cAAc,CAACzG,mBAAmB,GAAI0G,mBAAmB,IAAI,CAAC,GAAI,CAAC;MACnED,cAAc,CAAChH,iBAAiB,GAAIiH,mBAAmB,IAAI,CAAC,GAAI,CAAC;MACjED,cAAc,CAACrE,SAAS,GAAGlV,UAAU,CAAC1B,IAAI,EAAEsT,QAAQ,CAAC;MACrDA,QAAQ,IAAI,CAAC;MACb2H,cAAc,CAACpE,UAAU,GAAGnV,UAAU,CAAC1B,IAAI,EAAEsT,QAAQ,CAAC;MACtDA,QAAQ,IAAI,CAAC;MACb2H,cAAc,CAACnE,WAAW,GAAGpV,UAAU,CAAC1B,IAAI,EAAEsT,QAAQ,CAAC,GAAG,UAAU;MACpEA,QAAQ,IAAI,CAAC;MACb2H,cAAc,CAAClE,WAAW,GAAGrV,UAAU,CAAC1B,IAAI,EAAEsT,QAAQ,CAAC,GAAG,UAAU;MACpEA,QAAQ,IAAI,CAAC;MACb2H,cAAc,CAACjE,WAAW,GAAGvV,UAAU,CAACzB,IAAI,EAAEsT,QAAQ,CAAC;MACvDA,QAAQ,IAAI,CAAC;MACb2H,cAAc,CAAChE,WAAW,GAAGxV,UAAU,CAACzB,IAAI,EAAEsT,QAAQ,CAAC;MACvDA,QAAQ,IAAI,CAAC;MACbhc,IAAI,GAAG,CAAC2jB,cAAc,EAAE7B,MAAM,CAACX,UAAU,EAAEzY,IAAI,EAAEsT,QAAQ,EAAE9U,GAAG,CAAC;MAC/D;IACF,KAAK,EAAE;IACP,KAAK,EAAE;MACL,MAAM2c,aAAa,GAAG,CAAC,CAAC;MACxBA,aAAa,CAACrzB,IAAI,GAAG8wB,4BAA4B,CAAC5Y,IAAI,EAAEsT,QAAQ,CAAC;MACjEA,QAAQ,IAAIwF,mCAAmC;MAC/C,MAAMD,yBAAyB,GAAG7Y,IAAI,CAACsT,QAAQ,EAAE,CAAC;MAClD6H,aAAa,CAACjN,GAAG,GAAG,CAAC,EAAE2K,yBAAyB,GAAG,CAAC,CAAC;MACrDsC,aAAa,CAACzM,QAAQ,GAAImK,yBAAyB,IAAI,CAAC,GAAI,CAAC;MAC7DsC,aAAa,CAAC/M,UAAU,GAAG,CAAC,EAAEyK,yBAAyB,GAAG,CAAC,CAAC;MAC5D,IAAI,CAACsC,aAAa,CAACjN,GAAG,EAAE;QACtBwL,QAAQ,GAAGyB,aAAa,CAACzM,QAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;QAC/CL,EAAE,GAAG,EAAE;QACP,KAAKtiB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2tB,QAAQ,EAAE3tB,CAAC,EAAE,EAAE;UAC7BsiB,EAAE,CAAChiB,IAAI,CAAC;YACNuG,CAAC,EAAE0O,QAAQ,CAACtB,IAAI,EAAEsT,QAAQ,CAAC;YAC3BzgB,CAAC,EAAEyO,QAAQ,CAACtB,IAAI,EAAEsT,QAAQ,GAAG,CAAC;UAChC,CAAC,CAAC;UACFA,QAAQ,IAAI,CAAC;QACf;QACA6H,aAAa,CAAC9M,EAAE,GAAGA,EAAE;MACvB;MACA/W,IAAI,GAAG,CAAC6jB,aAAa,EAAEnb,IAAI,EAAEsT,QAAQ,EAAE9U,GAAG,CAAC;MAC3C;IACF,KAAK,EAAE;MACL,MAAM4c,QAAQ,GAAG;QACfvU,KAAK,EAAEnF,UAAU,CAAC1B,IAAI,EAAEsT,QAAQ,CAAC;QACjCxM,MAAM,EAAEpF,UAAU,CAAC1B,IAAI,EAAEsT,QAAQ,GAAG,CAAC,CAAC;QACtC+H,WAAW,EAAE3Z,UAAU,CAAC1B,IAAI,EAAEsT,QAAQ,GAAG,CAAC,CAAC;QAC3CgI,WAAW,EAAE5Z,UAAU,CAAC1B,IAAI,EAAEsT,QAAQ,GAAG,EAAE;MAC7C,CAAC;MACD,IAAI8H,QAAQ,CAACtU,MAAM,KAAK,UAAU,EAAE;QAClC,OAAOsU,QAAQ,CAACtU,MAAM;MACxB;MACA,MAAMyU,gBAAgB,GAAGvb,IAAI,CAACsT,QAAQ,GAAG,EAAE,CAAC;MAC5C7R,UAAU,CAACzB,IAAI,EAAEsT,QAAQ,GAAG,EAAE,CAAC;MAC/B8H,QAAQ,CAACI,QAAQ,GAAG,CAAC,EAAED,gBAAgB,GAAG,CAAC,CAAC;MAC5CH,QAAQ,CAAC/J,UAAU,GAAG,CAAC,EAAEkK,gBAAgB,GAAG,CAAC,CAAC;MAC9CH,QAAQ,CAACnH,iBAAiB,GAAIsH,gBAAgB,IAAI,CAAC,GAAI,CAAC;MACxDH,QAAQ,CAAC5G,mBAAmB,GAAI+G,gBAAgB,IAAI,CAAC,GAAI,CAAC;MAC1DH,QAAQ,CAACK,cAAc,GAAG,CAAC,EAAEF,gBAAgB,GAAG,EAAE,CAAC;MACnDH,QAAQ,CAACM,2BAA2B,GAAG,CAAC,EAAEH,gBAAgB,GAAG,EAAE,CAAC;MAChEjkB,IAAI,GAAG,CAAC8jB,QAAQ,CAAC;MACjB;IACF,KAAK,EAAE;MACL;IACF,KAAK,EAAE;MACL;IACF,KAAK,EAAE;MACL;IACF,KAAK,EAAE;MACL9jB,IAAI,GAAG,CAAC8hB,MAAM,CAACrY,MAAM,EAAEf,IAAI,EAAEsT,QAAQ,EAAE9U,GAAG,CAAC;MAC3C;IACF,KAAK,EAAE;MAEL;IACF;MACE,MAAM,IAAIwN,UAAU,CAClB,gBAAgBoN,MAAM,CAAClB,QAAQ,IAAIkB,MAAM,CAACphC,IAAI,sBAChD,CAAC;EACL;EACA,MAAM2jC,YAAY,GAAG,IAAI,GAAGvC,MAAM,CAAClB,QAAQ;EAC3C,IAAIyD,YAAY,IAAIlC,OAAO,EAAE;IAE3BA,OAAO,CAACkC,YAAY,CAAC,CAAC9vB,KAAK,CAAC4tB,OAAO,EAAEniB,IAAI,CAAC;EAC5C;AACF;AAEA,SAASskB,eAAeA,CAACvC,QAAQ,EAAEI,OAAO,EAAE;EAC1C,KAAK,IAAI1tB,CAAC,GAAG,CAAC,EAAE8I,EAAE,GAAGwkB,QAAQ,CAACpwB,MAAM,EAAE8C,CAAC,GAAG8I,EAAE,EAAE9I,CAAC,EAAE,EAAE;IACjDytB,cAAc,CAACH,QAAQ,CAACttB,CAAC,CAAC,EAAE0tB,OAAO,CAAC;EACtC;AACF;AAEA,SAASoC,gBAAgBA,CAACC,MAAM,EAAE;EAChC,MAAMrC,OAAO,GAAG,IAAIsC,oBAAoB,CAAC,CAAC;EAC1C,KAAK,IAAIhwB,CAAC,GAAG,CAAC,EAAE8I,EAAE,GAAGinB,MAAM,CAAC7yB,MAAM,EAAE8C,CAAC,GAAG8I,EAAE,EAAE9I,CAAC,EAAE,EAAE;IAC/C,MAAMI,KAAK,GAAG2vB,MAAM,CAAC/vB,CAAC,CAAC;IACvB,MAAMstB,QAAQ,GAAGF,YAAY,CAAC,CAAC,CAAC,EAAEhtB,KAAK,CAAC6T,IAAI,EAAE7T,KAAK,CAAC2S,KAAK,EAAE3S,KAAK,CAACqS,GAAG,CAAC;IACrEod,eAAe,CAACvC,QAAQ,EAAEI,OAAO,CAAC;EACpC;EACA,OAAOA,OAAO,CAACvsB,MAAM;AACvB;AAEA,SAAS8uB,UAAUA,CAAChc,IAAI,EAAE;EAIxB,MAAMxB,GAAG,GAAGwB,IAAI,CAAC/W,MAAM;EACvB,IAAIqqB,QAAQ,GAAG,CAAC;EAEhB,IACEtT,IAAI,CAACsT,QAAQ,CAAC,KAAK,IAAI,IACvBtT,IAAI,CAACsT,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI,IAC3BtT,IAAI,CAACsT,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI,IAC3BtT,IAAI,CAACsT,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI,IAC3BtT,IAAI,CAACsT,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI,IAC3BtT,IAAI,CAACsT,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI,IAC3BtT,IAAI,CAACsT,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI,IAC3BtT,IAAI,CAACsT,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI,EAC3B;IACA,MAAM,IAAItH,UAAU,CAAC,8BAA8B,CAAC;EACtD;EAEA,MAAMoN,MAAM,GAAGlvB,MAAM,CAAC+O,MAAM,CAAC,IAAI,CAAC;EAClCqa,QAAQ,IAAI,CAAC;EACb,MAAMO,KAAK,GAAG7T,IAAI,CAACsT,QAAQ,EAAE,CAAC;EAC9B8F,MAAM,CAACG,YAAY,GAAG,EAAE1F,KAAK,GAAG,CAAC,CAAC;EAClC,IAAI,EAAEA,KAAK,GAAG,CAAC,CAAC,EAAE;IAChBuF,MAAM,CAAC6C,aAAa,GAAGva,UAAU,CAAC1B,IAAI,EAAEsT,QAAQ,CAAC;IACjDA,QAAQ,IAAI,CAAC;EACf;EAEA,MAAM+F,QAAQ,GAAGF,YAAY,CAACC,MAAM,EAAEpZ,IAAI,EAAEsT,QAAQ,EAAE9U,GAAG,CAAC;EAC1D,MAAMib,OAAO,GAAG,IAAIsC,oBAAoB,CAAC,CAAC;EAC1CH,eAAe,CAACvC,QAAQ,EAAEI,OAAO,CAAC;EAElC,MAAM;IAAE5S,KAAK;IAAEC;EAAO,CAAC,GAAG2S,OAAO,CAACyC,eAAe;EACjD,MAAMC,SAAS,GAAG1C,OAAO,CAACvsB,MAAM;EAChC,MAAMkvB,OAAO,GAAG,IAAIC,iBAAiB,CAACxV,KAAK,GAAGC,MAAM,CAAC;EACrD,IAAIwV,CAAC,GAAG,CAAC;IACPjN,CAAC,GAAG,CAAC;EACP,KAAK,IAAItjB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+a,MAAM,EAAE/a,CAAC,EAAE,EAAE;IAC/B,IAAIwwB,IAAI,GAAG,CAAC;MACVrvB,MAAM;IACR,KAAK,IAAI0gB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG/G,KAAK,EAAE+G,CAAC,EAAE,EAAE;MAC9B,IAAI,CAAC2O,IAAI,EAAE;QACTA,IAAI,GAAG,GAAG;QACVrvB,MAAM,GAAGivB,SAAS,CAAC9M,CAAC,EAAE,CAAC;MACzB;MACA+M,OAAO,CAACE,CAAC,EAAE,CAAC,GAAGpvB,MAAM,GAAGqvB,IAAI,GAAG,CAAC,GAAG,GAAG;MACtCA,IAAI,KAAK,CAAC;IACZ;EACF;EAEA,OAAO;IAAEH,OAAO;IAAEvV,KAAK;IAAEC;EAAO,CAAC;AACnC;AAEA,MAAMiV,oBAAoB,CAAC;EACzBS,iBAAiBA,CAAC10B,IAAI,EAAE;IACtB,IAAI,CAACo0B,eAAe,GAAGp0B,IAAI;IAC3B,MAAM20B,OAAO,GAAI30B,IAAI,CAAC+e,KAAK,GAAG,CAAC,IAAK,CAAC;IACrC,MAAM3Z,MAAM,GAAG,IAAImvB,iBAAiB,CAACI,OAAO,GAAG30B,IAAI,CAACgf,MAAM,CAAC;IAG3D,IAAIhf,IAAI,CAACmsB,iBAAiB,EAAE;MAC1B/mB,MAAM,CAACpK,IAAI,CAAC,IAAI,CAAC;IACnB;IACA,IAAI,CAACoK,MAAM,GAAGA,MAAM;EACtB;EAEAwvB,UAAUA,CAACC,UAAU,EAAEjP,MAAM,EAAE;IAC7B,MAAM0N,QAAQ,GAAG,IAAI,CAACc,eAAe;IACrC,MAAMrV,KAAK,GAAG8V,UAAU,CAAC9V,KAAK;MAC5BC,MAAM,GAAG6V,UAAU,CAAC7V,MAAM;IAC5B,MAAM2V,OAAO,GAAIrB,QAAQ,CAACvU,KAAK,GAAG,CAAC,IAAK,CAAC;IACzC,MAAM2N,mBAAmB,GAAG4G,QAAQ,CAACM,2BAA2B,GAC5DiB,UAAU,CAACnI,mBAAmB,GAC9B4G,QAAQ,CAAC5G,mBAAmB;IAChC,MAAMtnB,MAAM,GAAG,IAAI,CAACA,MAAM;IAC1B,MAAM0vB,KAAK,GAAG,GAAG,KAAKD,UAAU,CAAC/pB,CAAC,GAAG,CAAC,CAAC;IACvC,IAAIiqB,OAAO,GAAGF,UAAU,CAAC9pB,CAAC,GAAG4pB,OAAO,IAAIE,UAAU,CAAC/pB,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI7G,CAAC,EAAE6hB,CAAC,EAAE2O,IAAI,EAAEhb,MAAM;IACtB,QAAQiT,mBAAmB;MACzB,KAAK,CAAC;QACJ,KAAKzoB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+a,MAAM,EAAE/a,CAAC,EAAE,EAAE;UAC3BwwB,IAAI,GAAGK,KAAK;UACZrb,MAAM,GAAGsb,OAAO;UAChB,KAAKjP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG/G,KAAK,EAAE+G,CAAC,EAAE,EAAE;YAC1B,IAAIF,MAAM,CAAC3hB,CAAC,CAAC,CAAC6hB,CAAC,CAAC,EAAE;cAChB1gB,MAAM,CAACqU,MAAM,CAAC,IAAIgb,IAAI;YACxB;YACAA,IAAI,KAAK,CAAC;YACV,IAAI,CAACA,IAAI,EAAE;cACTA,IAAI,GAAG,GAAG;cACVhb,MAAM,EAAE;YACV;UACF;UACAsb,OAAO,IAAIJ,OAAO;QACpB;QACA;MACF,KAAK,CAAC;QACJ,KAAK1wB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+a,MAAM,EAAE/a,CAAC,EAAE,EAAE;UAC3BwwB,IAAI,GAAGK,KAAK;UACZrb,MAAM,GAAGsb,OAAO;UAChB,KAAKjP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG/G,KAAK,EAAE+G,CAAC,EAAE,EAAE;YAC1B,IAAIF,MAAM,CAAC3hB,CAAC,CAAC,CAAC6hB,CAAC,CAAC,EAAE;cAChB1gB,MAAM,CAACqU,MAAM,CAAC,IAAIgb,IAAI;YACxB;YACAA,IAAI,KAAK,CAAC;YACV,IAAI,CAACA,IAAI,EAAE;cACTA,IAAI,GAAG,GAAG;cACVhb,MAAM,EAAE;YACV;UACF;UACAsb,OAAO,IAAIJ,OAAO;QACpB;QACA;MACF;QACE,MAAM,IAAIzQ,UAAU,CAClB,YAAYwI,mBAAmB,mBACjC,CAAC;IACL;EACF;EAEAsI,wBAAwBA,CAACC,MAAM,EAAE/c,IAAI,EAAElB,KAAK,EAAEN,GAAG,EAAE;IACjD,MAAMme,UAAU,GAAGI,MAAM,CAACj1B,IAAI;IAC9B,MAAM2lB,eAAe,GAAG,IAAIpB,eAAe,CAACrM,IAAI,EAAElB,KAAK,EAAEN,GAAG,CAAC;IAC7D,MAAMkP,MAAM,GAAGO,YAAY,CACzB8O,MAAM,CAAC7O,GAAG,EACVyO,UAAU,CAAC9V,KAAK,EAChB8V,UAAU,CAAC7V,MAAM,EACjBiW,MAAM,CAACrO,QAAQ,EACfqO,MAAM,CAAC3O,UAAU,EACjB,IAAI,EACJ2O,MAAM,CAAC1O,EAAE,EACTZ,eACF,CAAC;IACD,IAAI,CAACiP,UAAU,CAACC,UAAU,EAAEjP,MAAM,CAAC;EACrC;EAEAsP,gCAAgCA,CAAA,EAAG;IACjC,IAAI,CAACF,wBAAwB,CAAC,GAAGG,SAAS,CAAC;EAC7C;EAEAC,kBAAkBA,CAChBvD,UAAU,EACVwD,cAAc,EACdC,gBAAgB,EAChBpd,IAAI,EACJlB,KAAK,EACLN,GAAG,EACH;IACA,IAAIiT,aAAa,EAAEG,YAAY;IAC/B,IAAI+H,UAAU,CAACvI,OAAO,EAAE;MACtBK,aAAa,GAAG4L,gCAAgC,CAC9C1D,UAAU,EACVyD,gBAAgB,EAChB,IAAI,CAACE,YACP,CAAC;MACD1L,YAAY,GAAG,IAAIrD,MAAM,CAACvO,IAAI,EAAElB,KAAK,EAAEN,GAAG,CAAC;IAC7C;IAGA,IAAI8S,OAAO,GAAG,IAAI,CAACA,OAAO;IAC1B,IAAI,CAACA,OAAO,EAAE;MACZ,IAAI,CAACA,OAAO,GAAGA,OAAO,GAAG,CAAC,CAAC;IAC7B;IAEA,MAAM8C,YAAY,GAAG,EAAE;IACvB,KAAK,MAAMmJ,eAAe,IAAIH,gBAAgB,EAAE;MAC9C,MAAMI,eAAe,GAAGlM,OAAO,CAACiM,eAAe,CAAC;MAGhD,IAAIC,eAAe,EAAE;QACnBpJ,YAAY,CAAC/nB,IAAI,CAAC,GAAGmxB,eAAe,CAAC;MACvC;IACF;IAEA,MAAM/P,eAAe,GAAG,IAAIpB,eAAe,CAACrM,IAAI,EAAElB,KAAK,EAAEN,GAAG,CAAC;IAC7D8S,OAAO,CAAC6L,cAAc,CAAC,GAAGhM,sBAAsB,CAC9CwI,UAAU,CAACvI,OAAO,EAClBuI,UAAU,CAACtI,UAAU,EACrB+C,YAAY,EACZuF,UAAU,CAACpI,kBAAkB,EAC7BoI,UAAU,CAACnI,uBAAuB,EAClCC,aAAa,EACbkI,UAAU,CAACjL,QAAQ,EACnBiL,UAAU,CAACtL,EAAE,EACbsL,UAAU,CAACQ,kBAAkB,EAC7BR,UAAU,CAAChI,YAAY,EACvBlE,eAAe,EACfmE,YACF,CAAC;EACH;EAEA6L,qBAAqBA,CAACV,MAAM,EAAEK,gBAAgB,EAAEpd,IAAI,EAAElB,KAAK,EAAEN,GAAG,EAAE;IAChE,MAAMme,UAAU,GAAGI,MAAM,CAACj1B,IAAI;IAC9B,IAAI2pB,aAAa,EAAEG,YAAY;IAG/B,MAAMN,OAAO,GAAG,IAAI,CAACA,OAAO;IAC5B,MAAM8C,YAAY,GAAG,EAAE;IACvB,KAAK,MAAMmJ,eAAe,IAAIH,gBAAgB,EAAE;MAC9C,MAAMI,eAAe,GAAGlM,OAAO,CAACiM,eAAe,CAAC;MAGhD,IAAIC,eAAe,EAAE;QACnBpJ,YAAY,CAAC/nB,IAAI,CAAC,GAAGmxB,eAAe,CAAC;MACvC;IACF;IACA,MAAMzL,gBAAgB,GAAG3Q,IAAI,CAACgT,YAAY,CAACnrB,MAAM,CAAC;IAClD,IAAI8zB,MAAM,CAAC3L,OAAO,EAAE;MAClBQ,YAAY,GAAG,IAAIrD,MAAM,CAACvO,IAAI,EAAElB,KAAK,EAAEN,GAAG,CAAC;MAC3CiT,aAAa,GAAGiM,0BAA0B,CACxCX,MAAM,EACNK,gBAAgB,EAChB,IAAI,CAACE,YAAY,EACjBlJ,YAAY,CAACnrB,MAAM,EACnB2oB,YACF,CAAC;IACH;IAEA,MAAMnE,eAAe,GAAG,IAAIpB,eAAe,CAACrM,IAAI,EAAElB,KAAK,EAAEN,GAAG,CAAC;IAC7D,MAAMkP,MAAM,GAAGiF,gBAAgB,CAC7BoK,MAAM,CAAC3L,OAAO,EACd2L,MAAM,CAAC1L,UAAU,EACjBsL,UAAU,CAAC9V,KAAK,EAChB8V,UAAU,CAAC7V,MAAM,EACjBiW,MAAM,CAAC9I,iBAAiB,EACxB8I,MAAM,CAAC7I,uBAAuB,EAC9B6I,MAAM,CAAC5I,SAAS,EAChBC,YAAY,EACZrC,gBAAgB,EAChBgL,MAAM,CAAC1I,UAAU,EACjB0I,MAAM,CAACzI,QAAQ,EACfyI,MAAM,CAACxI,eAAe,EACtBwI,MAAM,CAACvI,mBAAmB,EAC1B/C,aAAa,EACbsL,MAAM,CAAC5C,kBAAkB,EACzB4C,MAAM,CAACpL,YAAY,EACnBlE,eAAe,EACfsP,MAAM,CAACtI,YAAY,EACnB7C,YACF,CAAC;IACD,IAAI,CAAC8K,UAAU,CAACC,UAAU,EAAEjP,MAAM,CAAC;EACrC;EAEAiQ,6BAA6BA,CAAA,EAAG;IAC9B,IAAI,CAACF,qBAAqB,CAAC,GAAGR,SAAS,CAAC;EAC1C;EAEAW,mBAAmBA,CAACjE,UAAU,EAAEwD,cAAc,EAAEnd,IAAI,EAAElB,KAAK,EAAEN,GAAG,EAAE;IAChE,IAAI8X,QAAQ,GAAG,IAAI,CAACA,QAAQ;IAC5B,IAAI,CAACA,QAAQ,EAAE;MACb,IAAI,CAACA,QAAQ,GAAGA,QAAQ,GAAG,CAAC,CAAC;IAC/B;IACA,MAAM7I,eAAe,GAAG,IAAIpB,eAAe,CAACrM,IAAI,EAAElB,KAAK,EAAEN,GAAG,CAAC;IAC7D8X,QAAQ,CAAC6G,cAAc,CAAC,GAAGlH,uBAAuB,CAChD0D,UAAU,CAACzL,GAAG,EACdyL,UAAU,CAACzD,YAAY,EACvByD,UAAU,CAACxD,aAAa,EACxBwD,UAAU,CAACvD,eAAe,EAC1BuD,UAAU,CAACjL,QAAQ,EACnBjB,eACF,CAAC;EACH;EAEAoQ,yBAAyBA,CAACd,MAAM,EAAEK,gBAAgB,EAAEpd,IAAI,EAAElB,KAAK,EAAEN,GAAG,EAAE;IAEpE,MAAM8X,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAAC8G,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACnD,MAAMT,UAAU,GAAGI,MAAM,CAACj1B,IAAI;IAC9B,MAAM2lB,eAAe,GAAG,IAAIpB,eAAe,CAACrM,IAAI,EAAElB,KAAK,EAAEN,GAAG,CAAC;IAC7D,MAAMkP,MAAM,GAAG8I,oBAAoB,CACjCuG,MAAM,CAAC7O,GAAG,EACVoI,QAAQ,EACRyG,MAAM,CAACrO,QAAQ,EACfiO,UAAU,CAAC9V,KAAK,EAChB8V,UAAU,CAAC7V,MAAM,EACjBiW,MAAM,CAAC9I,iBAAiB,EACxB8I,MAAM,CAACpG,UAAU,EACjBoG,MAAM,CAACvI,mBAAmB,EAC1BuI,MAAM,CAACnG,SAAS,EAChBmG,MAAM,CAAClG,UAAU,EACjBkG,MAAM,CAACjG,WAAW,EAClBiG,MAAM,CAAChG,WAAW,EAClBgG,MAAM,CAAC/F,WAAW,EAClB+F,MAAM,CAAC9F,WAAW,EAClBxJ,eACF,CAAC;IACD,IAAI,CAACiP,UAAU,CAACC,UAAU,EAAEjP,MAAM,CAAC;EACrC;EAEAoQ,iCAAiCA,CAAA,EAAG;IAClC,IAAI,CAACD,yBAAyB,CAAC,GAAGZ,SAAS,CAAC;EAC9C;EAEAc,QAAQA,CAACZ,cAAc,EAAEnd,IAAI,EAAElB,KAAK,EAAEN,GAAG,EAAE;IACzC,IAAI8e,YAAY,GAAG,IAAI,CAACA,YAAY;IACpC,IAAI,CAACA,YAAY,EAAE;MACjB,IAAI,CAACA,YAAY,GAAGA,YAAY,GAAG,CAAC,CAAC;IACvC;IACAA,YAAY,CAACH,cAAc,CAAC,GAAGa,mBAAmB,CAAChe,IAAI,EAAElB,KAAK,EAAEN,GAAG,CAAC;EACtE;AACF;AAEA,MAAMyf,WAAW,CAAC;EAChBrzB,WAAWA,CAACszB,QAAQ,EAAE;IACpB,IAAIA,QAAQ,CAACj1B,MAAM,KAAK,CAAC,EAAE;MAEzB,IAAI,CAACk1B,KAAK,GAAG,IAAI;MACjB,IAAI,CAACC,QAAQ,GAAG,CAAC;MACjB,IAAI,CAACC,YAAY,GAAGH,QAAQ,CAAC,CAAC,CAAC;MAC/B,IAAI,CAACI,WAAW,GAAG,CAAC;MACpB,IAAI,CAACC,UAAU,GAAGL,QAAQ,CAAC,CAAC,CAAC;MAC7B,IAAI,CAACM,YAAY,GAAG,KAAK;IAC3B,CAAC,MAAM;MAGL,IAAI,CAACL,KAAK,GAAG,KAAK;MAClB,IAAI,CAACC,QAAQ,GAAGF,QAAQ,CAAC,CAAC,CAAC;MAC3B,IAAI,CAACG,YAAY,GAAGH,QAAQ,CAAC,CAAC,CAAC;MAC/B,IAAI,CAACI,WAAW,GAAGJ,QAAQ,CAAC,CAAC,CAAC;MAC9B,IAAI,CAACK,UAAU,GAAGL,QAAQ,CAAC,CAAC,CAAC;MAC7B,IAAI,CAACM,YAAY,GAAGN,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO;IAC7C;EACF;AACF;AAEA,MAAMO,eAAe,CAAC;EACpB7zB,WAAWA,CAAC8zB,IAAI,EAAE;IAChB,IAAI,CAACC,QAAQ,GAAG,EAAE;IAClB,IAAID,IAAI,EAAE;MAER,IAAI,CAACE,MAAM,GAAG,IAAI;MAClB,IAAI,CAACN,WAAW,GAAGI,IAAI,CAACJ,WAAW;MACnC,IAAI,CAACF,QAAQ,GAAGM,IAAI,CAACN,QAAQ;MAC7B,IAAI,CAACI,YAAY,GAAGE,IAAI,CAACF,YAAY;MACrC,IAAI,CAACL,KAAK,GAAGO,IAAI,CAACP,KAAK;IACzB,CAAC,MAAM;MAEL,IAAI,CAACS,MAAM,GAAG,KAAK;IACrB;EACF;EAEAC,SAASA,CAACH,IAAI,EAAExO,KAAK,EAAE;IACrB,MAAMtD,GAAG,GAAI8R,IAAI,CAACH,UAAU,IAAIrO,KAAK,GAAI,CAAC;IAC1C,IAAIA,KAAK,IAAI,CAAC,EAAE;MAEd,IAAI,CAACyO,QAAQ,CAAC/R,GAAG,CAAC,GAAG,IAAI6R,eAAe,CAACC,IAAI,CAAC;IAChD,CAAC,MAAM;MAEL,IAAII,IAAI,GAAG,IAAI,CAACH,QAAQ,CAAC/R,GAAG,CAAC;MAC7B,IAAI,CAACkS,IAAI,EAAE;QACT,IAAI,CAACH,QAAQ,CAAC/R,GAAG,CAAC,GAAGkS,IAAI,GAAG,IAAIL,eAAe,CAAC,IAAI,CAAC;MACvD;MACAK,IAAI,CAACD,SAAS,CAACH,IAAI,EAAExO,KAAK,GAAG,CAAC,CAAC;IACjC;EACF;EAEA6O,UAAUA,CAACC,MAAM,EAAE;IACjB,IAAI,IAAI,CAACJ,MAAM,EAAE;MACf,IAAI,IAAI,CAACT,KAAK,EAAE;QACd,OAAO,IAAI;MACb;MACA,MAAMc,QAAQ,GAAGD,MAAM,CAACrS,QAAQ,CAAC,IAAI,CAAC2R,WAAW,CAAC;MAClD,OAAO,IAAI,CAACF,QAAQ,IAAI,IAAI,CAACI,YAAY,GAAG,CAACS,QAAQ,GAAGA,QAAQ,CAAC;IACnE;IACA,MAAMH,IAAI,GAAG,IAAI,CAACH,QAAQ,CAACK,MAAM,CAACpX,OAAO,CAAC,CAAC,CAAC;IAC5C,IAAI,CAACkX,IAAI,EAAE;MACT,MAAM,IAAI9S,UAAU,CAAC,sBAAsB,CAAC;IAC9C;IACA,OAAO8S,IAAI,CAACC,UAAU,CAACC,MAAM,CAAC;EAChC;AACF;AAEA,MAAME,YAAY,CAAC;EACjBt0B,WAAWA,CAACu0B,KAAK,EAAEC,eAAe,EAAE;IAClC,IAAI,CAACA,eAAe,EAAE;MACpB,IAAI,CAACC,iBAAiB,CAACF,KAAK,CAAC;IAC/B;IAEA,IAAI,CAACG,QAAQ,GAAG,IAAIb,eAAe,CAAC,IAAI,CAAC;IACzC,KAAK,IAAI1yB,CAAC,GAAG,CAAC,EAAE8I,EAAE,GAAGsqB,KAAK,CAACl2B,MAAM,EAAE8C,CAAC,GAAG8I,EAAE,EAAE9I,CAAC,EAAE,EAAE;MAC9C,MAAM2yB,IAAI,GAAGS,KAAK,CAACpzB,CAAC,CAAC;MACrB,IAAI2yB,IAAI,CAACL,YAAY,GAAG,CAAC,EAAE;QACzB,IAAI,CAACiB,QAAQ,CAACT,SAAS,CAACH,IAAI,EAAEA,IAAI,CAACL,YAAY,GAAG,CAAC,CAAC;MACtD;IACF;EACF;EAEA3pB,MAAMA,CAACsqB,MAAM,EAAE;IACb,OAAO,IAAI,CAACM,QAAQ,CAACP,UAAU,CAACC,MAAM,CAAC;EACzC;EAEAK,iBAAiBA,CAACF,KAAK,EAAE;IAEvB,MAAMI,WAAW,GAAGJ,KAAK,CAACl2B,MAAM;IAChC,IAAIu2B,eAAe,GAAG,CAAC;IACvB,KAAK,IAAIzzB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwzB,WAAW,EAAExzB,CAAC,EAAE,EAAE;MACpCyzB,eAAe,GAAGvzB,IAAI,CAACwF,GAAG,CAAC+tB,eAAe,EAAEL,KAAK,CAACpzB,CAAC,CAAC,CAACsyB,YAAY,CAAC;IACpE;IAEA,MAAMoB,SAAS,GAAG,IAAIxyB,WAAW,CAACuyB,eAAe,GAAG,CAAC,CAAC;IACtD,KAAK,IAAIzzB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwzB,WAAW,EAAExzB,CAAC,EAAE,EAAE;MACpC0zB,SAAS,CAACN,KAAK,CAACpzB,CAAC,CAAC,CAACsyB,YAAY,CAAC,EAAE;IACpC;IACA,IAAIqB,aAAa,GAAG,CAAC;MACnBC,SAAS,GAAG,CAAC;MACbC,WAAW;MACXC,WAAW;MACXnB,IAAI;IACNe,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;IAEhB,OAAOC,aAAa,IAAIF,eAAe,EAAE;MACvCG,SAAS,GAAIA,SAAS,GAAGF,SAAS,CAACC,aAAa,GAAG,CAAC,CAAC,IAAK,CAAC;MAC3DE,WAAW,GAAGD,SAAS;MACvBE,WAAW,GAAG,CAAC;MACf,OAAOA,WAAW,GAAGN,WAAW,EAAE;QAChCb,IAAI,GAAGS,KAAK,CAACU,WAAW,CAAC;QACzB,IAAInB,IAAI,CAACL,YAAY,KAAKqB,aAAa,EAAE;UACvChB,IAAI,CAACH,UAAU,GAAGqB,WAAW;UAC7BA,WAAW,EAAE;QACf;QACAC,WAAW,EAAE;MACf;MACAH,aAAa,EAAE;IACjB;EACF;AACF;AAEA,SAAS1B,mBAAmBA,CAAChe,IAAI,EAAElB,KAAK,EAAEN,GAAG,EAAE;EAG7C,MAAMqV,KAAK,GAAG7T,IAAI,CAAClB,KAAK,CAAC;EACzB,MAAMghB,WAAW,GAAGpe,UAAU,CAAC1B,IAAI,EAAElB,KAAK,GAAG,CAAC,CAAC,GAAG,UAAU;EAC5D,MAAMihB,YAAY,GAAGre,UAAU,CAAC1B,IAAI,EAAElB,KAAK,GAAG,CAAC,CAAC,GAAG,UAAU;EAC7D,MAAMkgB,MAAM,GAAG,IAAIzQ,MAAM,CAACvO,IAAI,EAAElB,KAAK,GAAG,CAAC,EAAEN,GAAG,CAAC;EAE/C,MAAMwhB,cAAc,GAAG,CAAEnM,KAAK,IAAI,CAAC,GAAI,CAAC,IAAI,CAAC;EAC7C,MAAMoM,aAAa,GAAG,CAAEpM,KAAK,IAAI,CAAC,GAAI,CAAC,IAAI,CAAC;EAC5C,MAAMsL,KAAK,GAAG,EAAE;EAChB,IAAId,YAAY;IACdC,WAAW;IACX4B,eAAe,GAAGJ,WAAW;EAG/B,GAAG;IACDzB,YAAY,GAAGW,MAAM,CAACrS,QAAQ,CAACqT,cAAc,CAAC;IAC9C1B,WAAW,GAAGU,MAAM,CAACrS,QAAQ,CAACsT,aAAa,CAAC;IAC5Cd,KAAK,CAAC9yB,IAAI,CACR,IAAI4xB,WAAW,CAAC,CAACiC,eAAe,EAAE7B,YAAY,EAAEC,WAAW,EAAE,CAAC,CAAC,CACjE,CAAC;IACD4B,eAAe,IAAI,CAAC,IAAI5B,WAAW;EACrC,CAAC,QAAQ4B,eAAe,GAAGH,YAAY;EAGvC1B,YAAY,GAAGW,MAAM,CAACrS,QAAQ,CAACqT,cAAc,CAAC;EAC9Cb,KAAK,CAAC9yB,IAAI,CAAC,IAAI4xB,WAAW,CAAC,CAAC6B,WAAW,GAAG,CAAC,EAAEzB,YAAY,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;EAG5EA,YAAY,GAAGW,MAAM,CAACrS,QAAQ,CAACqT,cAAc,CAAC;EAC9Cb,KAAK,CAAC9yB,IAAI,CAAC,IAAI4xB,WAAW,CAAC,CAAC8B,YAAY,EAAE1B,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;EAEhE,IAAIxK,KAAK,GAAG,CAAC,EAAE;IAEbwK,YAAY,GAAGW,MAAM,CAACrS,QAAQ,CAACqT,cAAc,CAAC;IAC9Cb,KAAK,CAAC9yB,IAAI,CAAC,IAAI4xB,WAAW,CAAC,CAACI,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;EAChD;EAEA,OAAO,IAAIa,YAAY,CAACC,KAAK,EAAE,KAAK,CAAC;AACvC;AAEA,MAAMgB,mBAAmB,GAAG,CAAC,CAAC;AAE9B,SAASjO,gBAAgBA,CAACnR,MAAM,EAAE;EAEhC,IAAI8K,KAAK,GAAGsU,mBAAmB,CAACpf,MAAM,CAAC;EACvC,IAAI8K,KAAK,EAAE;IACT,OAAOA,KAAK;EACd;EACA,IAAIsT,KAAK;EACT,QAAQpe,MAAM;IACZ,KAAK,CAAC;MACJoe,KAAK,GAAG,CACN,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACf,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EACjB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CACpB;MACD;IACF,KAAK,CAAC;MACJA,KAAK,GAAG,CACN,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EACjB,CAAC,CAAC,EAAE,IAAI,CAAC,CACV;MACD;IACF,KAAK,CAAC;MACJA,KAAK,GAAG,CACN,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,EAC5B,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EACjB,CAAC,CAAC,EAAE,IAAI,CAAC,CACV;MACD;IACF,KAAK,CAAC;MACJA,KAAK,GAAG,CACN,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAClB;MACD;IACF,KAAK,CAAC;MACJA,KAAK,GAAG,CACN,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,EAC5B,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAClB;MACD;IACF,KAAK,CAAC;MACJA,KAAK,GAAG,CACN,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EACpB,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACjB,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACjB,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAClB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACjB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAChB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAChB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAChB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAChB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,EAC7B,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CACpB;MACD;IACF,KAAK,CAAC;MACJA,KAAK,GAAG,CACN,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACjB,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACjB,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAClB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACjB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAChB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAChB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAChB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAChB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,EAC7B,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CACpB;MACD;IACF,KAAK,CAAC;MACJA,KAAK,GAAG,CACN,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACjB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EACjB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EACjB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACf,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACf,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACjB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACjB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACjB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAClB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,EAC5B,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EACpB,CAAC,CAAC,EAAE,GAAG,CAAC,CACT;MACD;IACF,KAAK,CAAC;MACJA,KAAK,GAAG,CACN,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACjB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAClB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACjB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EACjB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACf,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACf,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACf,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACjB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACjB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACjB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACjB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EACnB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,EAC5B,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EACpB,CAAC,CAAC,EAAE,GAAG,CAAC,CACT;MACD;IACF,KAAK,EAAE;MACLA,KAAK,GAAG,CACN,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACjB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACjB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACjB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACjB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACjB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACjB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EACnB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EACnB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,EAC3B,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EACnB,CAAC,CAAC,EAAE,GAAG,CAAC,CACT;MACD;IACF,KAAK,EAAE;MACLA,KAAK,GAAG,CACN,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACf,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CACnB;MACD;IACF,KAAK,EAAE;MACLA,KAAK,GAAG,CACN,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACf,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAClB;MACD;IACF,KAAK,EAAE;MACLA,KAAK,GAAG,CACN,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CACnB;MACD;IACF,KAAK,EAAE;MACLA,KAAK,GAAG,CACN,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACf,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CACf;MACD;IACF,KAAK,EAAE;MACLA,KAAK,GAAG,CACN,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACjB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAChB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACf,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EACf,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,EAC3B,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAClB;MACD;IACF;MACE,MAAM,IAAInT,UAAU,CAAC,oBAAoBjL,MAAM,iBAAiB,CAAC;EACrE;EAEA,KAAK,IAAIhV,CAAC,GAAG,CAAC,EAAE8I,EAAE,GAAGsqB,KAAK,CAACl2B,MAAM,EAAE8C,CAAC,GAAG8I,EAAE,EAAE9I,CAAC,EAAE,EAAE;IAC9CozB,KAAK,CAACpzB,CAAC,CAAC,GAAG,IAAIkyB,WAAW,CAACkB,KAAK,CAACpzB,CAAC,CAAC,CAAC;EACtC;EACA8f,KAAK,GAAG,IAAIqT,YAAY,CAACC,KAAK,EAAE,IAAI,CAAC;EACrCgB,mBAAmB,CAACpf,MAAM,CAAC,GAAG8K,KAAK;EACnC,OAAOA,KAAK;AACd;AAEA,MAAM0C,MAAM,CAAC;EACX3jB,WAAWA,CAACoV,IAAI,EAAElB,KAAK,EAAEN,GAAG,EAAE;IAC5B,IAAI,CAACwB,IAAI,GAAGA,IAAI;IAChB,IAAI,CAAClB,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACN,GAAG,GAAGA,GAAG;IACd,IAAI,CAAC8U,QAAQ,GAAGxU,KAAK;IACrB,IAAI,CAACoR,KAAK,GAAG,CAAC,CAAC;IACf,IAAI,CAACkQ,WAAW,GAAG,CAAC;EACtB;EAEAxY,OAAOA,CAAA,EAAG;IACR,IAAI,IAAI,CAACsI,KAAK,GAAG,CAAC,EAAE;MAClB,IAAI,IAAI,CAACoD,QAAQ,IAAI,IAAI,CAAC9U,GAAG,EAAE;QAC7B,MAAM,IAAIwN,UAAU,CAAC,+BAA+B,CAAC;MACvD;MACA,IAAI,CAACoU,WAAW,GAAG,IAAI,CAACpgB,IAAI,CAAC,IAAI,CAACsT,QAAQ,EAAE,CAAC;MAC7C,IAAI,CAACpD,KAAK,GAAG,CAAC;IAChB;IACA,MAAMtD,GAAG,GAAI,IAAI,CAACwT,WAAW,IAAI,IAAI,CAAClQ,KAAK,GAAI,CAAC;IAChD,IAAI,CAACA,KAAK,EAAE;IACZ,OAAOtD,GAAG;EACZ;EAEAD,QAAQA,CAAC0T,OAAO,EAAE;IAChB,IAAIzf,MAAM,GAAG,CAAC;MACZ7U,CAAC;IACH,KAAKA,CAAC,GAAGs0B,OAAO,GAAG,CAAC,EAAEt0B,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MACjC6U,MAAM,IAAI,IAAI,CAACgH,OAAO,CAAC,CAAC,IAAI7b,CAAC;IAC/B;IACA,OAAO6U,MAAM;EACf;EAEA6I,SAASA,CAAA,EAAG;IACV,IAAI,CAACyG,KAAK,GAAG,CAAC,CAAC;EACjB;EAEA7G,IAAIA,CAAA,EAAG;IACL,IAAI,IAAI,CAACiK,QAAQ,IAAI,IAAI,CAAC9U,GAAG,EAAE;MAC7B,OAAO,CAAC,CAAC;IACX;IACA,OAAO,IAAI,CAACwB,IAAI,CAAC,IAAI,CAACsT,QAAQ,EAAE,CAAC;EACnC;AACF;AAEA,SAASgN,qBAAqBA,CAACC,KAAK,EAAE9H,UAAU,EAAE6E,YAAY,EAAE;EAG9D,IAAIkD,YAAY,GAAG,CAAC;EACpB,KAAK,IAAIz0B,CAAC,GAAG,CAAC,EAAE8I,EAAE,GAAG4jB,UAAU,CAACxvB,MAAM,EAAE8C,CAAC,GAAG8I,EAAE,EAAE9I,CAAC,EAAE,EAAE;IACnD,MAAM8f,KAAK,GAAGyR,YAAY,CAAC7E,UAAU,CAAC1sB,CAAC,CAAC,CAAC;IACzC,IAAI8f,KAAK,EAAE;MACT,IAAI0U,KAAK,KAAKC,YAAY,EAAE;QAC1B,OAAO3U,KAAK;MACd;MACA2U,YAAY,EAAE;IAChB;EACF;EACA,MAAM,IAAIxU,UAAU,CAAC,iCAAiC,CAAC;AACzD;AAEA,SAAS0R,0BAA0BA,CACjCtD,UAAU,EACV3B,UAAU,EACV6E,YAAY,EACZmD,eAAe,EACfzB,MAAM,EACN;EAIA,MAAM0B,KAAK,GAAG,EAAE;EAChB,KAAK,IAAI30B,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,EAAE,EAAEA,CAAC,EAAE,EAAE;IAC5B,MAAMihB,UAAU,GAAGgS,MAAM,CAACrS,QAAQ,CAAC,CAAC,CAAC;IACrC+T,KAAK,CAACr0B,IAAI,CAAC,IAAI4xB,WAAW,CAAC,CAAClyB,CAAC,EAAEihB,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EACpD;EAEA,MAAM2T,aAAa,GAAG,IAAIzB,YAAY,CAACwB,KAAK,EAAE,KAAK,CAAC;EAIpDA,KAAK,CAACz3B,MAAM,GAAG,CAAC;EAChB,KAAK,IAAI8C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG00B,eAAe,GAAI;IACrC,MAAMzT,UAAU,GAAG2T,aAAa,CAACjsB,MAAM,CAACsqB,MAAM,CAAC;IAC/C,IAAIhS,UAAU,IAAI,EAAE,EAAE;MACpB,IAAI4T,cAAc,EAAEC,eAAe,EAAEjT,CAAC;MACtC,QAAQZ,UAAU;QAChB,KAAK,EAAE;UACL,IAAIjhB,CAAC,KAAK,CAAC,EAAE;YACX,MAAM,IAAIigB,UAAU,CAAC,sCAAsC,CAAC;UAC9D;UACA6U,eAAe,GAAG7B,MAAM,CAACrS,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;UACxCiU,cAAc,GAAGF,KAAK,CAAC30B,CAAC,GAAG,CAAC,CAAC,CAACsyB,YAAY;UAC1C;QACF,KAAK,EAAE;UACLwC,eAAe,GAAG7B,MAAM,CAACrS,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;UACxCiU,cAAc,GAAG,CAAC;UAClB;QACF,KAAK,EAAE;UACLC,eAAe,GAAG7B,MAAM,CAACrS,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE;UACzCiU,cAAc,GAAG,CAAC;UAClB;QACF;UACE,MAAM,IAAI5U,UAAU,CAAC,wCAAwC,CAAC;MAClE;MACA,KAAK4B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiT,eAAe,EAAEjT,CAAC,EAAE,EAAE;QACpC8S,KAAK,CAACr0B,IAAI,CAAC,IAAI4xB,WAAW,CAAC,CAAClyB,CAAC,EAAE60B,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACtD70B,CAAC,EAAE;MACL;IACF,CAAC,MAAM;MACL20B,KAAK,CAACr0B,IAAI,CAAC,IAAI4xB,WAAW,CAAC,CAAClyB,CAAC,EAAEihB,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;MAClDjhB,CAAC,EAAE;IACL;EACF;EACAizB,MAAM,CAACvV,SAAS,CAAC,CAAC;EAClB,MAAMyL,aAAa,GAAG,IAAIgK,YAAY,CAACwB,KAAK,EAAE,KAAK,CAAC;EAIpD,IAAII,WAAW,GAAG,CAAC;IACjB/L,WAAW;IACXiB,WAAW;IACXrB,WAAW;EAEb,QAAQyF,UAAU,CAACG,SAAS;IAC1B,KAAK,CAAC;IACN,KAAK,CAAC;MACJxF,WAAW,GAAG7C,gBAAgB,CAACkI,UAAU,CAACG,SAAS,GAAG,CAAC,CAAC;MACxD;IACF,KAAK,CAAC;MACJxF,WAAW,GAAGuL,qBAAqB,CACjCQ,WAAW,EACXrI,UAAU,EACV6E,YACF,CAAC;MACDwD,WAAW,EAAE;MACb;IACF;MACE,MAAM,IAAI9U,UAAU,CAAC,6BAA6B,CAAC;EACvD;EAEA,QAAQoO,UAAU,CAACI,SAAS;IAC1B,KAAK,CAAC;IACN,KAAK,CAAC;IACN,KAAK,CAAC;MACJxE,WAAW,GAAG9D,gBAAgB,CAACkI,UAAU,CAACI,SAAS,GAAG,CAAC,CAAC;MACxD;IACF,KAAK,CAAC;MACJxE,WAAW,GAAGsK,qBAAqB,CACjCQ,WAAW,EACXrI,UAAU,EACV6E,YACF,CAAC;MACDwD,WAAW,EAAE;MACb;IACF;MACE,MAAM,IAAI9U,UAAU,CAAC,6BAA6B,CAAC;EACvD;EAEA,QAAQoO,UAAU,CAACK,SAAS;IAC1B,KAAK,CAAC;IACN,KAAK,CAAC;IACN,KAAK,CAAC;MACJ9F,WAAW,GAAGzC,gBAAgB,CAACkI,UAAU,CAACK,SAAS,GAAG,EAAE,CAAC;MACzD;IACF,KAAK,CAAC;MACJ9F,WAAW,GAAG2L,qBAAqB,CACjCQ,WAAW,EACXrI,UAAU,EACV6E,YACF,CAAC;MACDwD,WAAW,EAAE;MACb;IACF;MACE,MAAM,IAAI9U,UAAU,CAAC,6BAA6B,CAAC;EACvD;EAEA,IAAIoO,UAAU,CAAC/I,UAAU,EAAE;IAEzB,MAAM,IAAIrF,UAAU,CAAC,0CAA0C,CAAC;EAClE;EAEA,OAAO;IACLkJ,aAAa;IACbH,WAAW;IACXiB,WAAW;IACXrB;EACF,CAAC;AACH;AAEA,SAAS0I,gCAAgCA,CACvC1D,UAAU,EACVlB,UAAU,EACV6E,YAAY,EACZ;EAGA,IAAIwD,WAAW,GAAG,CAAC;IACjB1O,gBAAgB;IAChBK,eAAe;EACjB,QAAQkH,UAAU,CAACE,iBAAiB;IAClC,KAAK,CAAC;IACN,KAAK,CAAC;MACJzH,gBAAgB,GAAGF,gBAAgB,CAACyH,UAAU,CAACE,iBAAiB,GAAG,CAAC,CAAC;MACrE;IACF,KAAK,CAAC;MACJzH,gBAAgB,GAAGkO,qBAAqB,CACtCQ,WAAW,EACXrI,UAAU,EACV6E,YACF,CAAC;MACDwD,WAAW,EAAE;MACb;IACF;MACE,MAAM,IAAI9U,UAAU,CAAC,6BAA6B,CAAC;EACvD;EAEA,QAAQ2N,UAAU,CAACG,iBAAiB;IAClC,KAAK,CAAC;IACN,KAAK,CAAC;MACJrH,eAAe,GAAGP,gBAAgB,CAACyH,UAAU,CAACG,iBAAiB,GAAG,CAAC,CAAC;MACpE;IACF,KAAK,CAAC;MACJrH,eAAe,GAAG6N,qBAAqB,CACrCQ,WAAW,EACXrI,UAAU,EACV6E,YACF,CAAC;MACDwD,WAAW,EAAE;MACb;IACF;MACE,MAAM,IAAI9U,UAAU,CAAC,6BAA6B,CAAC;EACvD;EAEA,IAAIiH,eAAe,EAAE8N,uBAAuB;EAC5C,IAAIpH,UAAU,CAACI,kBAAkB,EAAE;IACjC9G,eAAe,GAAGqN,qBAAqB,CACrCQ,WAAW,EACXrI,UAAU,EACV6E,YACF,CAAC;IACDwD,WAAW,EAAE;EACf,CAAC,MAAM;IACL7N,eAAe,GAAGf,gBAAgB,CAAC,CAAC,CAAC;EACvC;EAEA,IAAIyH,UAAU,CAACK,4BAA4B,EAAE;IAC3C+G,uBAAuB,GAAGT,qBAAqB,CAC7CQ,WAAW,EACXrI,UAAU,EACV6E,YACF,CAAC;EACH,CAAC,MAAM;IACLyD,uBAAuB,GAAG7O,gBAAgB,CAAC,CAAC,CAAC;EAC/C;EAEA,OAAO;IACLE,gBAAgB;IAChBK,eAAe;IACfQ,eAAe;IACf8N;EACF,CAAC;AACH;AAEA,SAAS5N,sBAAsBA,CAAC6L,MAAM,EAAEnY,KAAK,EAAEC,MAAM,EAAE;EACrD,MAAM4G,MAAM,GAAG,EAAE;EACjB,KAAK,IAAI7a,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiU,MAAM,EAAEjU,CAAC,EAAE,EAAE;IAC/B,MAAMyX,GAAG,GAAG,IAAI7d,UAAU,CAACoa,KAAK,CAAC;IACjC6G,MAAM,CAACrhB,IAAI,CAACie,GAAG,CAAC;IAChB,KAAK,IAAI1X,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiU,KAAK,EAAEjU,CAAC,EAAE,EAAE;MAC9B0X,GAAG,CAAC1X,CAAC,CAAC,GAAGosB,MAAM,CAACpX,OAAO,CAAC,CAAC;IAC3B;IACAoX,MAAM,CAACvV,SAAS,CAAC,CAAC;EACpB;EACA,OAAOiE,MAAM;AACf;AAEA,SAASc,eAAeA,CAACF,KAAK,EAAEzH,KAAK,EAAEC,MAAM,EAAEka,UAAU,EAAE;EAGzD,MAAMC,MAAM,GAAG;IACbzgC,CAAC,EAAE,CAAC,CAAC;IACLopB,OAAO,EAAE/C,KAAK;IACdiD,IAAI,EAAEhD,MAAM;IACZoD,QAAQ,EAAE,IAAI;IACdF,UAAU,EAAEgX;EACd,CAAC;EACD,MAAM1sB,OAAO,GAAG,IAAI6U,eAAe,CAACmF,KAAK,EAAE2S,MAAM,CAAC;EAClD,MAAMvT,MAAM,GAAG,EAAE;EACjB,IAAI0S,WAAW;IACb9W,GAAG,GAAG,KAAK;EAEb,KAAK,IAAIzW,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiU,MAAM,EAAEjU,CAAC,EAAE,EAAE;IAC/B,MAAMyX,GAAG,GAAG,IAAI7d,UAAU,CAACoa,KAAK,CAAC;IACjC6G,MAAM,CAACrhB,IAAI,CAACie,GAAG,CAAC;IAChB,IAAI4F,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAItd,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiU,KAAK,EAAEjU,CAAC,EAAE,EAAE;MAC9B,IAAIsd,KAAK,GAAG,CAAC,EAAE;QACbkQ,WAAW,GAAG9rB,OAAO,CAACyW,YAAY,CAAC,CAAC;QACpC,IAAIqV,WAAW,KAAK,CAAC,CAAC,EAAE;UAEtBA,WAAW,GAAG,CAAC;UACf9W,GAAG,GAAG,IAAI;QACZ;QACA4G,KAAK,GAAG,CAAC;MACX;MACA5F,GAAG,CAAC1X,CAAC,CAAC,GAAIwtB,WAAW,IAAIlQ,KAAK,GAAI,CAAC;MACnCA,KAAK,EAAE;IACT;EACF;EAEA,IAAI8Q,UAAU,IAAI,CAAC1X,GAAG,EAAE;IAEtB,MAAM4X,eAAe,GAAG,CAAC;IACzB,KAAK,IAAIn1B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGm1B,eAAe,EAAEn1B,CAAC,EAAE,EAAE;MACxC,IAAIuI,OAAO,CAACyW,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;QACjC;MACF;IACF;EACF;EAEA,OAAO2C,MAAM;AACf;AAEA,MAAMyT,UAAU,CAAC;EACfC,WAAWA,CAACtF,MAAM,EAAE;IAClB,OAAOD,gBAAgB,CAACC,MAAM,CAAC;EACjC;EAEAxyB,KAAKA,CAAC0W,IAAI,EAAE;IAIV,MAAM;MAAEoc,OAAO;MAAEvV,KAAK;MAAEC;IAAO,CAAC,GAAGkV,UAAU,CAAChc,IAAI,CAAC;IACnD,IAAI,CAAC6G,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,OAAOsV,OAAO;EAChB;AACF;;;ACvgF2B;AACmB;AAY9C,SAASiF,cAAcA,CAACC,GAAG,EAAEpqB,IAAI,EAAEqqB,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,OAAO,EAAE;EAC1D,MAAMC,UAAU,GAAG,CAAC;EACpBD,OAAO,GAAGA,OAAO,KAAK,CAAC,GAAG,CAAC,GAAGA,OAAO;EACrC,MAAME,MAAM,GAAGN,EAAE,GAAGE,EAAE;EACtB,MAAMK,MAAM,GAAGN,EAAE,GAAGE,EAAE;EACtB,IAAIK,QAAQ,GAAG,CAAC;IACdC,QAAQ;EACV,MAAMC,OAAO,GAAG,IAAIvS,WAAW,CAAC+R,EAAE,CAAC;EACnC,MAAMS,UAAU,GAAGX,EAAE,GAAGK,UAAU;EAElC,KAAK,IAAI71B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG01B,EAAE,EAAE11B,CAAC,EAAE,EAAE;IAC3Bk2B,OAAO,CAACl2B,CAAC,CAAC,GAAGE,IAAI,CAACk2B,KAAK,CAACp2B,CAAC,GAAG81B,MAAM,CAAC,GAAGD,UAAU;EAClD;EACA,KAAK,IAAI71B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG21B,EAAE,EAAE31B,CAAC,EAAE,EAAE;IAC3B,MAAMq2B,EAAE,GAAGn2B,IAAI,CAACk2B,KAAK,CAACp2B,CAAC,GAAG+1B,MAAM,CAAC,GAAGI,UAAU;IAC9C,KAAK,IAAItU,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6T,EAAE,EAAE7T,CAAC,EAAE,EAAE;MAC3BoU,QAAQ,GAAGI,EAAE,GAAGH,OAAO,CAACrU,CAAC,CAAC;MAC1B1W,IAAI,CAAC6qB,QAAQ,EAAE,CAAC,GAAGT,GAAG,CAACU,QAAQ,EAAE,CAAC;MAClC9qB,IAAI,CAAC6qB,QAAQ,EAAE,CAAC,GAAGT,GAAG,CAACU,QAAQ,EAAE,CAAC;MAClC9qB,IAAI,CAAC6qB,QAAQ,EAAE,CAAC,GAAGT,GAAG,CAACU,QAAQ,EAAE,CAAC;MAClCD,QAAQ,IAAIJ,OAAO;IACrB;EACF;AACF;AAEA,SAASU,eAAeA,CAACf,GAAG,EAAEpqB,IAAI,EAAEqqB,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,OAAO,EAAE;EAC3D,MAAME,MAAM,GAAGN,EAAE,GAAGE,EAAE;EACtB,MAAMK,MAAM,GAAGN,EAAE,GAAGE,EAAE;EACtB,IAAIK,QAAQ,GAAG,CAAC;EAChB,MAAME,OAAO,GAAG,IAAIvS,WAAW,CAAC+R,EAAE,CAAC;EAEnC,IAAIE,OAAO,KAAK,CAAC,EAAE;IACjB,KAAK,IAAI51B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG01B,EAAE,EAAE11B,CAAC,EAAE,EAAE;MAC3Bk2B,OAAO,CAACl2B,CAAC,CAAC,GAAGE,IAAI,CAACk2B,KAAK,CAACp2B,CAAC,GAAG81B,MAAM,CAAC;IACrC;IACA,MAAMS,KAAK,GAAG,IAAIr1B,WAAW,CAACq0B,GAAG,CAACp0B,MAAM,CAAC;IACzC,MAAMq1B,MAAM,GAAG,IAAIt1B,WAAW,CAACiK,IAAI,CAAChK,MAAM,CAAC;IAC3C,MAAMs1B,OAAO,GAAGn1B,gBAAW,CAACP,cAAc,GAAG,UAAU,GAAG,UAAU;IACpE,KAAK,IAAIf,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG21B,EAAE,EAAE31B,CAAC,EAAE,EAAE;MAC3B,MAAM6K,GAAG,GAAG0rB,KAAK,CAACl2B,QAAQ,CAACH,IAAI,CAACk2B,KAAK,CAACp2B,CAAC,GAAG+1B,MAAM,CAAC,GAAGP,EAAE,CAAC;MACvD,KAAK,IAAI3T,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6T,EAAE,EAAE7T,CAAC,EAAE,EAAE;QAC3B2U,MAAM,CAACR,QAAQ,EAAE,CAAC,IAAInrB,GAAG,CAACqrB,OAAO,CAACrU,CAAC,CAAC,CAAC,GAAG4U,OAAO;MACjD;IACF;EACF,CAAC,MAAM;IACL,MAAMZ,UAAU,GAAG,CAAC;IACpB,MAAMM,UAAU,GAAGX,EAAE,GAAGK,UAAU;IAClC,KAAK,IAAI71B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG01B,EAAE,EAAE11B,CAAC,EAAE,EAAE;MAC3Bk2B,OAAO,CAACl2B,CAAC,CAAC,GAAGE,IAAI,CAACk2B,KAAK,CAACp2B,CAAC,GAAG81B,MAAM,CAAC,GAAGD,UAAU;IAClD;IACA,KAAK,IAAI71B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG21B,EAAE,EAAE31B,CAAC,EAAE,EAAE;MAC3B,MAAM6K,GAAG,GAAG0qB,GAAG,CAACl1B,QAAQ,CAACH,IAAI,CAACk2B,KAAK,CAACp2B,CAAC,GAAG+1B,MAAM,CAAC,GAAGI,UAAU,CAAC;MAC7D,KAAK,IAAItU,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6T,EAAE,EAAE7T,CAAC,EAAE,EAAE;QAC3B,MAAMoU,QAAQ,GAAGC,OAAO,CAACrU,CAAC,CAAC;QAC3B1W,IAAI,CAAC6qB,QAAQ,EAAE,CAAC,GAAGnrB,GAAG,CAACorB,QAAQ,CAAC;QAChC9qB,IAAI,CAAC6qB,QAAQ,EAAE,CAAC,GAAGnrB,GAAG,CAACorB,QAAQ,GAAG,CAAC,CAAC;QACpC9qB,IAAI,CAAC6qB,QAAQ,EAAE,CAAC,GAAGnrB,GAAG,CAACorB,QAAQ,GAAG,CAAC,CAAC;MACtC;IACF;EACF;AACF;AAEA,SAASS,aAAaA,CAACnB,GAAG,EAAEpqB,IAAI,EAAEyqB,OAAO,EAAE;EACzC,IAAIA,OAAO,KAAK,CAAC,EAAE;IACjB,MAAMW,KAAK,GAAG,IAAIr1B,WAAW,CAACq0B,GAAG,CAACp0B,MAAM,CAAC;IACzC,MAAMq1B,MAAM,GAAG,IAAIt1B,WAAW,CAACiK,IAAI,CAAChK,MAAM,CAAC;IAC3C,MAAMs1B,OAAO,GAAGn1B,gBAAW,CAACP,cAAc,GAAG,UAAU,GAAG,UAAU;IACpE,KAAK,IAAIf,CAAC,GAAG,CAAC,EAAE8I,EAAE,GAAGytB,KAAK,CAACr5B,MAAM,EAAE8C,CAAC,GAAG8I,EAAE,EAAE9I,CAAC,EAAE,EAAE;MAC9Cw2B,MAAM,CAACx2B,CAAC,CAAC,IAAIu2B,KAAK,CAACv2B,CAAC,CAAC,GAAGy2B,OAAO;IACjC;EACF,CAAC,MAAM;IACL,IAAI5U,CAAC,GAAG,CAAC;IACT,KAAK,IAAI7hB,CAAC,GAAG,CAAC,EAAE8I,EAAE,GAAGysB,GAAG,CAACr4B,MAAM,EAAE8C,CAAC,GAAG8I,EAAE,EAAE9I,CAAC,IAAI,CAAC,EAAE;MAC/CmL,IAAI,CAAC0W,CAAC,EAAE,CAAC,GAAG0T,GAAG,CAACv1B,CAAC,CAAC;MAClBmL,IAAI,CAAC0W,CAAC,EAAE,CAAC,GAAG0T,GAAG,CAACv1B,CAAC,GAAG,CAAC,CAAC;MACtBmL,IAAI,CAAC0W,CAAC,EAAE,CAAC,GAAG0T,GAAG,CAACv1B,CAAC,GAAG,CAAC,CAAC;IACxB;EACF;AACF;AAEA,MAAM22B,UAAU,CAAC;EACf93B,WAAWA,CAACF,IAAI,EAAEi4B,QAAQ,EAAE;IAO1B,IAAI,CAACj4B,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACi4B,QAAQ,GAAGA,QAAQ;EAC1B;EAOAC,MAAMA,CAACtB,GAAG,EAAEuB,SAAS,EAAE;IACrB,MAAMC,GAAG,GAAG,IAAIzG,iBAAiB,CAAC,CAAC,CAAC;IACpC,IAAI,CAAC0G,UAAU,CAACzB,GAAG,EAAEuB,SAAS,EAAEC,GAAG,EAAE,CAAC,CAAC;IACvC,OAAOA,GAAG;EACZ;EAMAC,UAAUA,CAACzB,GAAG,EAAEuB,SAAS,EAAE3rB,IAAI,EAAE8rB,UAAU,EAAE;IAC3C76B,WAAW,CAAC,uCAAuC,CAAC;EACtD;EAWA86B,YAAYA,CAAC3B,GAAG,EAAEuB,SAAS,EAAEK,KAAK,EAAEhsB,IAAI,EAAE8rB,UAAU,EAAE9X,IAAI,EAAEyW,OAAO,EAAE;IACnEx5B,WAAW,CAAC,yCAAyC,CAAC;EACxD;EAOAg7B,eAAeA,CAACC,WAAW,EAAEzB,OAAO,EAAE;IACpCx5B,WAAW,CAAC,4CAA4C,CAAC;EAC3D;EAKAk7B,aAAaA,CAACnY,IAAI,EAAE;IAClB,OAAO,KAAK;EACd;EAKAoY,eAAeA,CAACC,SAAS,EAAEC,GAAG,EAAE;IAC9B,OAAOd,UAAU,CAACY,eAAe,CAACC,SAAS,EAAE,IAAI,CAACZ,QAAQ,CAAC;EAC7D;EAOAc,OAAOA,CACLvsB,IAAI,EACJwsB,aAAa,EACbC,cAAc,EACd9c,KAAK,EACLC,MAAM,EACN8c,YAAY,EACZJ,GAAG,EACHK,KAAK,EACLlC,OAAO,EACP;IAOA,MAAMuB,KAAK,GAAGQ,aAAa,GAAGC,cAAc;IAC5C,IAAIG,MAAM,GAAG,IAAI;IACjB,MAAMC,kBAAkB,GAAG,CAAC,IAAIP,GAAG;IACnC,MAAMQ,aAAa,GAAGL,cAAc,KAAK7c,MAAM,IAAI4c,aAAa,KAAK7c,KAAK;IAE1E,IAAI,IAAI,CAACwc,aAAa,CAACG,GAAG,CAAC,EAAE;MAC3BM,MAAM,GAAGD,KAAK;IAChB,CAAC,MAAM,IACL,IAAI,CAAClB,QAAQ,KAAK,CAAC,IACnBO,KAAK,GAAGa,kBAAkB,IAC1B,IAAI,CAACr5B,IAAI,KAAK,YAAY,IAC1B,IAAI,CAACA,IAAI,KAAK,WAAW,EACzB;MAUA,MAAMu5B,SAAS,GACbT,GAAG,IAAI,CAAC,GACJ,IAAI/2B,UAAU,CAACs3B,kBAAkB,CAAC,GAClC,IAAIrU,WAAW,CAACqU,kBAAkB,CAAC;MACzC,KAAK,IAAIh4B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGg4B,kBAAkB,EAAEh4B,CAAC,EAAE,EAAE;QAC3Ck4B,SAAS,CAACl4B,CAAC,CAAC,GAAGA,CAAC;MAClB;MACA,MAAMm4B,QAAQ,GAAG,IAAI7H,iBAAiB,CAAC0H,kBAAkB,GAAG,CAAC,CAAC;MAC9D,IAAI,CAACd,YAAY,CACfgB,SAAS,EACT,CAAC,EACDF,kBAAkB,EAClBG,QAAQ,EACR,CAAC,EACDV,GAAG,EACa,CAClB,CAAC;MAED,IAAI,CAACQ,aAAa,EAAE;QAElB,IAAIG,OAAO,GAAG,CAAC;QACf,KAAK,IAAIp4B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGm3B,KAAK,EAAE,EAAEn3B,CAAC,EAAE;UAC9B,MAAM4O,GAAG,GAAGkpB,KAAK,CAAC93B,CAAC,CAAC,GAAG,CAAC;UACxBmL,IAAI,CAACitB,OAAO,EAAE,CAAC,GAAGD,QAAQ,CAACvpB,GAAG,CAAC;UAC/BzD,IAAI,CAACitB,OAAO,EAAE,CAAC,GAAGD,QAAQ,CAACvpB,GAAG,GAAG,CAAC,CAAC;UACnCzD,IAAI,CAACitB,OAAO,EAAE,CAAC,GAAGD,QAAQ,CAACvpB,GAAG,GAAG,CAAC,CAAC;UACnCwpB,OAAO,IAAIxC,OAAO;QACpB;MACF,CAAC,MAAM;QACLmC,MAAM,GAAG,IAAIr3B,UAAU,CAACy2B,KAAK,GAAG,CAAC,CAAC;QAClC,IAAIkB,MAAM,GAAG,CAAC;QACd,KAAK,IAAIr4B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGm3B,KAAK,EAAE,EAAEn3B,CAAC,EAAE;UAC9B,MAAM4O,GAAG,GAAGkpB,KAAK,CAAC93B,CAAC,CAAC,GAAG,CAAC;UACxB+3B,MAAM,CAACM,MAAM,EAAE,CAAC,GAAGF,QAAQ,CAACvpB,GAAG,CAAC;UAChCmpB,MAAM,CAACM,MAAM,EAAE,CAAC,GAAGF,QAAQ,CAACvpB,GAAG,GAAG,CAAC,CAAC;UACpCmpB,MAAM,CAACM,MAAM,EAAE,CAAC,GAAGF,QAAQ,CAACvpB,GAAG,GAAG,CAAC,CAAC;QACtC;MACF;IACF,CAAC,MAAM,IAAI,CAACqpB,aAAa,EAAE;MAEzB,IAAI,CAACf,YAAY,CAACY,KAAK,EAAE,CAAC,EAAEhd,KAAK,GAAG+c,YAAY,EAAE1sB,IAAI,EAAE,CAAC,EAAEssB,GAAG,EAAE7B,OAAO,CAAC;IAC1E,CAAC,MAAM;MACLmC,MAAM,GAAG,IAAIzH,iBAAiB,CAAC6G,KAAK,GAAG,CAAC,CAAC;MACzC,IAAI,CAACD,YAAY,CAACY,KAAK,EAAE,CAAC,EAAEX,KAAK,EAAEY,MAAM,EAAE,CAAC,EAAEN,GAAG,EAAkB,CAAC,CAAC;IACvE;IAEA,IAAIM,MAAM,EAAE;MACV,IAAIE,aAAa,EAAE;QACjB3C,cAAc,CACZyC,MAAM,EACN5sB,IAAI,EACJwsB,aAAa,EACbC,cAAc,EACd9c,KAAK,EACLC,MAAM,EACN6a,OACF,CAAC;MACH,CAAC,MAAM;QACL,IAAIwC,OAAO,GAAG,CAAC;UACbC,MAAM,GAAG,CAAC;QACZ,KAAK,IAAIr4B,CAAC,GAAG,CAAC,EAAE8I,EAAE,GAAGgS,KAAK,GAAG+c,YAAY,EAAE73B,CAAC,GAAG8I,EAAE,EAAE9I,CAAC,EAAE,EAAE;UACtDmL,IAAI,CAACitB,OAAO,EAAE,CAAC,GAAGL,MAAM,CAACM,MAAM,EAAE,CAAC;UAClCltB,IAAI,CAACitB,OAAO,EAAE,CAAC,GAAGL,MAAM,CAACM,MAAM,EAAE,CAAC;UAClCltB,IAAI,CAACitB,OAAO,EAAE,CAAC,GAAGL,MAAM,CAACM,MAAM,EAAE,CAAC;UAClCD,OAAO,IAAIxC,OAAO;QACpB;MACF;IACF;EACF;EAOA,IAAI0C,kBAAkBA,CAAA,EAAG;IACvB,OAAOx6B,MAAM,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,CAAC;EACjD;EAWA,OAAOy5B,eAAeA,CAAC5uB,MAAM,EAAEiuB,QAAQ,EAAE;IACvC,IAAI,CAACn0B,KAAK,CAAC2I,OAAO,CAACzC,MAAM,CAAC,EAAE;MAC1B,OAAO,IAAI;IACb;IACA,IAAIiuB,QAAQ,GAAG,CAAC,KAAKjuB,MAAM,CAACzL,MAAM,EAAE;MAClCf,SAAI,CAAC,0CAA0C,CAAC;MAChD,OAAO,IAAI;IACb;IACA,KAAK,IAAI6D,CAAC,GAAG,CAAC,EAAE8I,EAAE,GAAGH,MAAM,CAACzL,MAAM,EAAE8C,CAAC,GAAG8I,EAAE,EAAE9I,CAAC,IAAI,CAAC,EAAE;MAClD,IAAI2I,MAAM,CAAC3I,CAAC,CAAC,KAAK,CAAC,IAAI2I,MAAM,CAAC3I,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;QAC1C,OAAO,KAAK;MACd;IACF;IACA,OAAO,IAAI;EACb;AACF;AAUA,MAAMu4B,WAAW,SAAS5B,UAAU,CAAC;EACnC93B,WAAWA,CAAC+3B,QAAQ,EAAE4B,IAAI,EAAEC,MAAM,EAAE;IAClC,KAAK,CAAC,WAAW,EAAE7B,QAAQ,CAAC;IAC5B,IAAI,CAAC4B,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,MAAM,GAAG,IAAIC,YAAY,CAACH,IAAI,CAAC5B,QAAQ,CAAC;EAC/C;EAEAI,UAAUA,CAACzB,GAAG,EAAEuB,SAAS,EAAE3rB,IAAI,EAAE8rB,UAAU,EAAE;IAO3C,MAAMyB,MAAM,GAAG,IAAI,CAACA,MAAM;IAC1B,IAAI,CAACD,MAAM,CAAClD,GAAG,EAAEuB,SAAS,EAAE4B,MAAM,EAAE,CAAC,CAAC;IACtC,IAAI,CAACF,IAAI,CAACxB,UAAU,CAAC0B,MAAM,EAAE,CAAC,EAAEvtB,IAAI,EAAE8rB,UAAU,CAAC;EACnD;EAEAC,YAAYA,CAAC3B,GAAG,EAAEuB,SAAS,EAAEK,KAAK,EAAEhsB,IAAI,EAAE8rB,UAAU,EAAE9X,IAAI,EAAEyW,OAAO,EAAE;IAOnE,MAAM6C,MAAM,GAAG,IAAI,CAACA,MAAM;IAC1B,MAAMD,IAAI,GAAG,IAAI,CAACA,IAAI;IACtB,MAAMI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,IAAIzZ,IAAI,IAAI,CAAC,CAAC;IACnC,MAAM0Z,YAAY,GAAGL,IAAI,CAAC5B,QAAQ;IAClC,MAAM0B,kBAAkB,GAAGE,IAAI,CAACF,kBAAkB;IAClD,MAAMhB,aAAa,GACjB,CAACkB,IAAI,CAAClB,aAAa,CAAC,CAAC,CAAC,IAAI,CAACgB,kBAAkB,KAAK1C,OAAO,KAAK,CAAC;IACjE,IAAIjyB,GAAG,GAAG2zB,aAAa,GAAGL,UAAU,GAAG,CAAC;IACxC,MAAM6B,OAAO,GAAGxB,aAAa,GACzBnsB,IAAI,GACJ,IAAImlB,iBAAiB,CAACuI,YAAY,GAAG1B,KAAK,CAAC;IAC/C,MAAMP,QAAQ,GAAG,IAAI,CAACA,QAAQ;IAE9B,MAAMmC,MAAM,GAAG,IAAIJ,YAAY,CAAC/B,QAAQ,CAAC;IACzC,MAAMoC,MAAM,GAAG,IAAIL,YAAY,CAACE,YAAY,CAAC;IAC7C,IAAI74B,CAAC,EAAE6hB,CAAC;IAER,KAAK7hB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGm3B,KAAK,EAAEn3B,CAAC,EAAE,EAAE;MAC1B,KAAK6hB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+U,QAAQ,EAAE/U,CAAC,EAAE,EAAE;QAC7BkX,MAAM,CAAClX,CAAC,CAAC,GAAG0T,GAAG,CAACuB,SAAS,EAAE,CAAC,GAAG8B,KAAK;MACtC;MACAH,MAAM,CAACM,MAAM,EAAE,CAAC,EAAEC,MAAM,EAAE,CAAC,CAAC;MAC5B,IAAIV,kBAAkB,EAAE;QACtB,KAAKzW,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgX,YAAY,EAAEhX,CAAC,EAAE,EAAE;UACjCiX,OAAO,CAACn1B,GAAG,EAAE,CAAC,GAAGq1B,MAAM,CAACnX,CAAC,CAAC,GAAG,GAAG;QAClC;MACF,CAAC,MAAM;QACL2W,IAAI,CAACxB,UAAU,CAACgC,MAAM,EAAE,CAAC,EAAEF,OAAO,EAAEn1B,GAAG,CAAC;QACxCA,GAAG,IAAIk1B,YAAY;MACrB;IACF;IAEA,IAAI,CAACvB,aAAa,EAAE;MAClBkB,IAAI,CAACtB,YAAY,CAAC4B,OAAO,EAAE,CAAC,EAAE3B,KAAK,EAAEhsB,IAAI,EAAE8rB,UAAU,EAAE,CAAC,EAAErB,OAAO,CAAC;IACpE;EACF;EAEAwB,eAAeA,CAACC,WAAW,EAAEzB,OAAO,EAAE;IACpC,OAAO,IAAI,CAAC4C,IAAI,CAACpB,eAAe,CAC7BC,WAAW,GAAG,IAAI,CAACmB,IAAI,CAAC5B,QAAQ,GAAI,IAAI,CAACA,QAAQ,EAClDhB,OACF,CAAC;EACH;AACF;AAEA,MAAMqD,SAAS,SAAStC,UAAU,CAAC;EACjC93B,WAAWA,CAACq6B,MAAM,EAAE;IAClB,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC;IACtB,IAAI,CAACV,IAAI,GAAGU,MAAM;EACpB;EAEA3B,eAAeA,CAACC,SAAS,EAAEC,GAAG,EAAE;IAC9Br7B,WAAW,CAAC,2CAA2C,CAAC;EAC1D;AACF;AAKA,MAAM+8B,SAAS,SAASxC,UAAU,CAAC;EACjC93B,WAAWA,CAAC25B,IAAI,EAAEY,OAAO,EAAE3lB,MAAM,EAAE;IACjC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IACnB,IAAI,CAAC+kB,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACY,OAAO,GAAGA,OAAO;IAEtB,MAAMl8B,MAAM,GAAGs7B,IAAI,CAAC5B,QAAQ,IAAIwC,OAAO,GAAG,CAAC,CAAC;IAC5C,IAAI,CAAC3lB,MAAM,GAAG,IAAI/S,UAAU,CAACxD,MAAM,CAAC;IAEpC,IAAIuW,MAAM,YAAYnC,sBAAU,EAAE;MAChC,MAAM7R,KAAK,GAAGgU,MAAM,CAAC/B,QAAQ,CAACxU,MAAM,CAAC;MACrC,IAAI,CAACuW,MAAM,CAACzE,GAAG,CAACvP,KAAK,CAAC;IACxB,CAAC,MAAM,IAAI,OAAOgU,MAAM,KAAK,QAAQ,EAAE;MACrC,KAAK,IAAIzT,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG9C,MAAM,EAAE,EAAE8C,CAAC,EAAE;QAC/B,IAAI,CAACyT,MAAM,CAACzT,CAAC,CAAC,GAAGyT,MAAM,CAAC9S,UAAU,CAACX,CAAC,CAAC,GAAG,IAAI;MAC9C;IACF,CAAC,MAAM;MACL,MAAM,IAAIV,WAAW,CAAC,0CAA0CmU,MAAM,EAAE,CAAC;IAC3E;EACF;EAEAujB,UAAUA,CAACzB,GAAG,EAAEuB,SAAS,EAAE3rB,IAAI,EAAE8rB,UAAU,EAAE;IAO3C,MAAM;MAAEuB,IAAI;MAAEY,OAAO;MAAE3lB;IAAO,CAAC,GAAG,IAAI;IACtC,MAAMV,KAAK,GACTpH,SAAS,CAACzL,IAAI,CAAC8Z,KAAK,CAACub,GAAG,CAACuB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAEsC,OAAO,CAAC,GAAGZ,IAAI,CAAC5B,QAAQ;IACnE4B,IAAI,CAACtB,YAAY,CAACzjB,MAAM,EAAEV,KAAK,EAAE,CAAC,EAAE5H,IAAI,EAAE8rB,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;EAC7D;EAEAC,YAAYA,CAAC3B,GAAG,EAAEuB,SAAS,EAAEK,KAAK,EAAEhsB,IAAI,EAAE8rB,UAAU,EAAE9X,IAAI,EAAEyW,OAAO,EAAE;IAOnE,MAAM;MAAE4C,IAAI;MAAEY,OAAO;MAAE3lB;IAAO,CAAC,GAAG,IAAI;IACtC,MAAM;MAAEmjB;IAAS,CAAC,GAAG4B,IAAI;IACzB,MAAMa,WAAW,GAAGb,IAAI,CAACpB,eAAe,CAACR,QAAQ,EAAEhB,OAAO,CAAC;IAE3D,KAAK,IAAI51B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGm3B,KAAK,EAAE,EAAEn3B,CAAC,EAAE;MAC9B,MAAMs5B,SAAS,GACb3tB,SAAS,CAACzL,IAAI,CAAC8Z,KAAK,CAACub,GAAG,CAACuB,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAEsC,OAAO,CAAC,GAAGxC,QAAQ;MAChE4B,IAAI,CAACtB,YAAY,CAACzjB,MAAM,EAAE6lB,SAAS,EAAE,CAAC,EAAEnuB,IAAI,EAAE8rB,UAAU,EAAE,CAAC,EAAErB,OAAO,CAAC;MACrEqB,UAAU,IAAIoC,WAAW;IAC3B;EACF;EAEAjC,eAAeA,CAACC,WAAW,EAAEzB,OAAO,EAAE;IACpC,OAAO,IAAI,CAAC4C,IAAI,CAACpB,eAAe,CAACC,WAAW,GAAG,IAAI,CAACmB,IAAI,CAAC5B,QAAQ,EAAEhB,OAAO,CAAC;EAC7E;EAEA2B,eAAeA,CAACC,SAAS,EAAEC,GAAG,EAAE;IAC9B,IAAI,CAACh1B,KAAK,CAAC2I,OAAO,CAACosB,SAAS,CAAC,EAAE;MAC7B,OAAO,IAAI;IACb;IACA,IAAIA,SAAS,CAACt6B,MAAM,KAAK,CAAC,EAAE;MAC1Bf,SAAI,CAAC,kCAAkC,CAAC;MACxC,OAAO,IAAI;IACb;IACA,IAAI,CAACP,MAAM,CAACC,SAAS,CAAC47B,GAAG,CAAC,IAAIA,GAAG,GAAG,CAAC,EAAE;MACrCt7B,SAAI,CAAC,mCAAmC,CAAC;MACzC,OAAO,IAAI;IACb;IACA,OAAOq7B,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAIA,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAIC,GAAG,IAAI,CAAC;EAC9D;AACF;AAKA,MAAM8B,YAAY,SAAS5C,UAAU,CAAC;EACpC93B,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;EACxB;EAEAm4B,UAAUA,CAACzB,GAAG,EAAEuB,SAAS,EAAE3rB,IAAI,EAAE8rB,UAAU,EAAE;IAO3C,MAAMlxB,CAAC,GAAGwvB,GAAG,CAACuB,SAAS,CAAC,GAAG,GAAG;IAC9B3rB,IAAI,CAAC8rB,UAAU,CAAC,GAAG9rB,IAAI,CAAC8rB,UAAU,GAAG,CAAC,CAAC,GAAG9rB,IAAI,CAAC8rB,UAAU,GAAG,CAAC,CAAC,GAAGlxB,CAAC;EACpE;EAEAmxB,YAAYA,CAAC3B,GAAG,EAAEuB,SAAS,EAAEK,KAAK,EAAEhsB,IAAI,EAAE8rB,UAAU,EAAE9X,IAAI,EAAEyW,OAAO,EAAE;IAOnE,MAAMgD,KAAK,GAAG,GAAG,IAAI,CAAC,CAAC,IAAIzZ,IAAI,IAAI,CAAC,CAAC;IACrC,IAAI0C,CAAC,GAAGiV,SAAS;MACfvG,CAAC,GAAG0G,UAAU;IAChB,KAAK,IAAIj3B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGm3B,KAAK,EAAE,EAAEn3B,CAAC,EAAE;MAC9B,MAAM+F,CAAC,GAAG6yB,KAAK,GAAGrD,GAAG,CAAC1T,CAAC,EAAE,CAAC;MAC1B1W,IAAI,CAAColB,CAAC,EAAE,CAAC,GAAGxqB,CAAC;MACboF,IAAI,CAAColB,CAAC,EAAE,CAAC,GAAGxqB,CAAC;MACboF,IAAI,CAAColB,CAAC,EAAE,CAAC,GAAGxqB,CAAC;MACbwqB,CAAC,IAAIqF,OAAO;IACd;EACF;EAEAwB,eAAeA,CAACC,WAAW,EAAEzB,OAAO,EAAE;IACpC,OAAOyB,WAAW,IAAI,CAAC,GAAGzB,OAAO,CAAC;EACpC;AACF;AAKA,MAAM4D,WAAW,SAAS7C,UAAU,CAAC;EACnC93B,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;EACvB;EAEAm4B,UAAUA,CAACzB,GAAG,EAAEuB,SAAS,EAAE3rB,IAAI,EAAE8rB,UAAU,EAAE;IAO3C9rB,IAAI,CAAC8rB,UAAU,CAAC,GAAG1B,GAAG,CAACuB,SAAS,CAAC,GAAG,GAAG;IACvC3rB,IAAI,CAAC8rB,UAAU,GAAG,CAAC,CAAC,GAAG1B,GAAG,CAACuB,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG;IAC/C3rB,IAAI,CAAC8rB,UAAU,GAAG,CAAC,CAAC,GAAG1B,GAAG,CAACuB,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG;EACjD;EAEAI,YAAYA,CAAC3B,GAAG,EAAEuB,SAAS,EAAEK,KAAK,EAAEhsB,IAAI,EAAE8rB,UAAU,EAAE9X,IAAI,EAAEyW,OAAO,EAAE;IAOnE,IAAIzW,IAAI,KAAK,CAAC,IAAIyW,OAAO,KAAK,CAAC,EAAE;MAC/BzqB,IAAI,CAAC6D,GAAG,CAACumB,GAAG,CAACl1B,QAAQ,CAACy2B,SAAS,EAAEA,SAAS,GAAGK,KAAK,GAAG,CAAC,CAAC,EAAEF,UAAU,CAAC;MACpE;IACF;IACA,MAAM2B,KAAK,GAAG,GAAG,IAAI,CAAC,CAAC,IAAIzZ,IAAI,IAAI,CAAC,CAAC;IACrC,IAAI0C,CAAC,GAAGiV,SAAS;MACfvG,CAAC,GAAG0G,UAAU;IAChB,KAAK,IAAIj3B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGm3B,KAAK,EAAE,EAAEn3B,CAAC,EAAE;MAC9BmL,IAAI,CAAColB,CAAC,EAAE,CAAC,GAAGqI,KAAK,GAAGrD,GAAG,CAAC1T,CAAC,EAAE,CAAC;MAC5B1W,IAAI,CAAColB,CAAC,EAAE,CAAC,GAAGqI,KAAK,GAAGrD,GAAG,CAAC1T,CAAC,EAAE,CAAC;MAC5B1W,IAAI,CAAColB,CAAC,EAAE,CAAC,GAAGqI,KAAK,GAAGrD,GAAG,CAAC1T,CAAC,EAAE,CAAC;MAC5B0O,CAAC,IAAIqF,OAAO;IACd;EACF;EAEAwB,eAAeA,CAACC,WAAW,EAAEzB,OAAO,EAAE;IACpC,OAASyB,WAAW,IAAI,CAAC,GAAGzB,OAAO,CAAC,GAAI,CAAC,GAAI,CAAC;EAChD;EAEA0B,aAAaA,CAACnY,IAAI,EAAE;IAClB,OAAOA,IAAI,KAAK,CAAC;EACnB;AACF;AAKA,MAAMsa,YAAY,SAAS9C,UAAU,CAAC;EACpC93B,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;EACxB;EAEAu4B,eAAeA,CAACC,WAAW,EAAEqC,QAAQ,EAAE;IACrC,OAAOrC,WAAW,GAAG,CAAC;EACxB;EAEAC,aAAaA,CAACnY,IAAI,EAAE;IAClB,OAAOA,IAAI,KAAK,CAAC;EACnB;EAEAuY,OAAOA,CACLvsB,IAAI,EACJwsB,aAAa,EACbC,cAAc,EACd9c,KAAK,EACLC,MAAM,EACN8c,YAAY,EACZJ,GAAG,EACHK,KAAK,EACLlC,OAAO,EACP;IAOA,IAAIgC,cAAc,KAAK7c,MAAM,IAAI4c,aAAa,KAAK7c,KAAK,EAAE;MACxDwb,eAAe,CACbwB,KAAK,EACL3sB,IAAI,EACJwsB,aAAa,EACbC,cAAc,EACd9c,KAAK,EACLC,MAAM,EACN6a,OACF,CAAC;IACH,CAAC,MAAM;MACLc,aAAa,CAACoB,KAAK,EAAE3sB,IAAI,EAAEyqB,OAAO,CAAC;IACrC;EACF;AACF;AAKA,MAAM+D,YAAY,SAAShD,UAAU,CAAC;EACpC93B,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;EACxB;EAQA,CAAC+6B,KAAKC,CAACtE,GAAG,EAAEuB,SAAS,EAAEgD,QAAQ,EAAE3uB,IAAI,EAAE8rB,UAAU,EAAE;IACjD,MAAMlxB,CAAC,GAAGwvB,GAAG,CAACuB,SAAS,CAAC,GAAGgD,QAAQ;IACnC,MAAMp2B,CAAC,GAAG6xB,GAAG,CAACuB,SAAS,GAAG,CAAC,CAAC,GAAGgD,QAAQ;IACvC,MAAMhzB,CAAC,GAAGyuB,GAAG,CAACuB,SAAS,GAAG,CAAC,CAAC,GAAGgD,QAAQ;IACvC,MAAMxW,CAAC,GAAGiS,GAAG,CAACuB,SAAS,GAAG,CAAC,CAAC,GAAGgD,QAAQ;IAEvC3uB,IAAI,CAAC8rB,UAAU,CAAC,GACd,GAAG,GACHlxB,CAAC,IACE,CAAC,iBAAiB,GAAGA,CAAC,GACrB,iBAAiB,GAAGrC,CAAC,GACrB,iBAAiB,GAAGoD,CAAC,GACrB,kBAAkB,GAAGwc,CAAC,GACtB,CAAC,iBAAiB,CAAC,GACvB5f,CAAC,IACE,kBAAkB,GAAGA,CAAC,GACrB,kBAAkB,GAAGoD,CAAC,GACtB,CAAC,kBAAkB,GAAGwc,CAAC,GACvB,iBAAiB,CAAC,GACtBxc,CAAC,IACE,CAAC,kBAAkB,GAAGA,CAAC,GAAG,kBAAkB,GAAGwc,CAAC,GAAG,gBAAgB,CAAC,GACvEA,CAAC,IAAI,CAAC,iBAAiB,GAAGA,CAAC,GAAG,kBAAkB,CAAC;IAEnDnY,IAAI,CAAC8rB,UAAU,GAAG,CAAC,CAAC,GAClB,GAAG,GACHlxB,CAAC,IACE,iBAAiB,GAAGA,CAAC,GACpB,kBAAkB,GAAGrC,CAAC,GACtB,iBAAiB,GAAGoD,CAAC,GACrB,kBAAkB,GAAGwc,CAAC,GACtB,CAAC,gBAAgB,CAAC,GACtB5f,CAAC,IACE,CAAC,kBAAkB,GAAGA,CAAC,GACtB,kBAAkB,GAAGoD,CAAC,GACtB,kBAAkB,GAAGwc,CAAC,GACtB,iBAAiB,CAAC,GACtBxc,CAAC,IAAI,iBAAiB,GAAGA,CAAC,GAAG,eAAe,GAAGwc,CAAC,GAAG,iBAAiB,CAAC,GACrEA,CAAC,IAAI,CAAC,kBAAkB,GAAGA,CAAC,GAAG,kBAAkB,CAAC;IAEpDnY,IAAI,CAAC8rB,UAAU,GAAG,CAAC,CAAC,GAClB,GAAG,GACHlxB,CAAC,IACE,kBAAkB,GAAGA,CAAC,GACrB,iBAAiB,GAAGrC,CAAC,GACrB,iBAAiB,GAAGoD,CAAC,GACrB,mBAAmB,GAAGwc,CAAC,GACvB,CAAC,kBAAkB,CAAC,GACxB5f,CAAC,IACE,iBAAiB,GAAGA,CAAC,GACpB,iBAAiB,GAAGoD,CAAC,GACrB,kBAAkB,GAAGwc,CAAC,GACtB,kBAAkB,CAAC,GACvBxc,CAAC,IACE,mBAAmB,GAAGA,CAAC,GACtB,kBAAkB,GAAGwc,CAAC,GACtB,CAAC,kBAAkB,CAAC,GACxBA,CAAC,IAAI,CAAC,iBAAiB,GAAGA,CAAC,GAAG,kBAAkB,CAAC;EACrD;EAEA0T,UAAUA,CAACzB,GAAG,EAAEuB,SAAS,EAAE3rB,IAAI,EAAE8rB,UAAU,EAAE;IAO3C,IAAI,CAAC,CAAC2C,KAAK,CAACrE,GAAG,EAAEuB,SAAS,EAAE,CAAC,EAAE3rB,IAAI,EAAE8rB,UAAU,CAAC;EAClD;EAEAC,YAAYA,CAAC3B,GAAG,EAAEuB,SAAS,EAAEK,KAAK,EAAEhsB,IAAI,EAAE8rB,UAAU,EAAE9X,IAAI,EAAEyW,OAAO,EAAE;IAOnE,MAAMgD,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,IAAIzZ,IAAI,IAAI,CAAC,CAAC;IACnC,KAAK,IAAInf,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGm3B,KAAK,EAAEn3B,CAAC,EAAE,EAAE;MAC9B,IAAI,CAAC,CAAC45B,KAAK,CAACrE,GAAG,EAAEuB,SAAS,EAAE8B,KAAK,EAAEztB,IAAI,EAAE8rB,UAAU,CAAC;MACpDH,SAAS,IAAI,CAAC;MACdG,UAAU,IAAI,CAAC,GAAGrB,OAAO;IAC3B;EACF;EAEAwB,eAAeA,CAACC,WAAW,EAAEzB,OAAO,EAAE;IACpC,OAASyB,WAAW,GAAG,CAAC,IAAK,CAAC,GAAGzB,OAAO,CAAC,GAAI,CAAC;EAChD;AACF;AAOA,MAAMmE,SAAS,SAASpD,UAAU,CAAC;EACjC93B,WAAWA,CAACm7B,UAAU,EAAEC,UAAU,EAAEC,KAAK,EAAE;IACzC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAEnB,IAAI,CAACF,UAAU,EAAE;MACf,MAAM,IAAI16B,WAAW,CACnB,uDACF,CAAC;IACH;IAEA,CAAC,IAAI,CAAC66B,EAAE,EAAE,IAAI,CAACC,EAAE,EAAE,IAAI,CAACC,EAAE,CAAC,GAAGL,UAAU;IACxC,CAAC,IAAI,CAACM,EAAE,EAAE,IAAI,CAACC,EAAE,EAAE,IAAI,CAACC,EAAE,CAAC,GAAGP,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACrD,IAAI,CAACQ,CAAC,GAAGP,KAAK,IAAI,CAAC;IAGnB,IAAI,IAAI,CAACC,EAAE,GAAG,CAAC,IAAI,IAAI,CAACE,EAAE,GAAG,CAAC,IAAI,IAAI,CAACD,EAAE,KAAK,CAAC,EAAE;MAC/C,MAAM,IAAI96B,WAAW,CACnB,qCAAqC,IAAI,CAACX,IAAI,yBAChD,CAAC;IACH;IAEA,IAAI,IAAI,CAAC27B,EAAE,GAAG,CAAC,IAAI,IAAI,CAACC,EAAE,GAAG,CAAC,IAAI,IAAI,CAACC,EAAE,GAAG,CAAC,EAAE;MAC7Cz+B,IAAI,CAAC,0BAA0B,IAAI,CAAC4C,IAAI,4BAA4B,CAAC;MACrE,IAAI,CAAC27B,EAAE,GAAG,IAAI,CAACC,EAAE,GAAG,IAAI,CAACC,EAAE,GAAG,CAAC;IACjC;IAEA,IAAI,IAAI,CAACF,EAAE,KAAK,CAAC,IAAI,IAAI,CAACC,EAAE,KAAK,CAAC,IAAI,IAAI,CAACC,EAAE,KAAK,CAAC,EAAE;MACnDr+B,SAAI,CACF,GAAG,IAAI,CAACwC,IAAI,qBAAqB,IAAI,CAAC27B,EAAE,SAAS,IAAI,CAACC,EAAE,IAAI,GAC1D,OAAO,IAAI,CAACC,EAAE,sCAClB,CAAC;IACH;IAEA,IAAI,IAAI,CAACC,CAAC,GAAG,CAAC,EAAE;MACd1+B,IAAI,CACF,kBAAkB,IAAI,CAAC0+B,CAAC,QAAQ,IAAI,CAAC97B,IAAI,4BAC3C,CAAC;MACD,IAAI,CAAC87B,CAAC,GAAG,CAAC;IACZ;EACF;EAEA,CAACb,KAAKC,CAACtE,GAAG,EAAEuB,SAAS,EAAE3rB,IAAI,EAAE8rB,UAAU,EAAE2B,KAAK,EAAE;IAG9C,MAAM8B,CAAC,GAAGnF,GAAG,CAACuB,SAAS,CAAC,GAAG8B,KAAK;IAChC,MAAM+B,EAAE,GAAGD,CAAC,IAAI,IAAI,CAACD,CAAC;IAItB,MAAMG,CAAC,GAAG,IAAI,CAACR,EAAE,GAAGO,EAAE;IAGtB,MAAME,GAAG,GAAG36B,IAAI,CAACwF,GAAG,CAAC,KAAK,GAAGk1B,CAAC,IAAI,kBAAkB,GAAG,IAAI,EAAE,CAAC,CAAC;IAC/DzvB,IAAI,CAAC8rB,UAAU,CAAC,GAAG4D,GAAG;IACtB1vB,IAAI,CAAC8rB,UAAU,GAAG,CAAC,CAAC,GAAG4D,GAAG;IAC1B1vB,IAAI,CAAC8rB,UAAU,GAAG,CAAC,CAAC,GAAG4D,GAAG;EAC5B;EAEA7D,UAAUA,CAACzB,GAAG,EAAEuB,SAAS,EAAE3rB,IAAI,EAAE8rB,UAAU,EAAE;IAO3C,IAAI,CAAC,CAAC2C,KAAK,CAACrE,GAAG,EAAEuB,SAAS,EAAE3rB,IAAI,EAAE8rB,UAAU,EAAE,CAAC,CAAC;EAClD;EAEAC,YAAYA,CAAC3B,GAAG,EAAEuB,SAAS,EAAEK,KAAK,EAAEhsB,IAAI,EAAE8rB,UAAU,EAAE9X,IAAI,EAAEyW,OAAO,EAAE;IAOnE,MAAMgD,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,IAAIzZ,IAAI,IAAI,CAAC,CAAC;IAEnC,KAAK,IAAInf,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGm3B,KAAK,EAAE,EAAEn3B,CAAC,EAAE;MAC9B,IAAI,CAAC,CAAC45B,KAAK,CAACrE,GAAG,EAAEuB,SAAS,EAAE3rB,IAAI,EAAE8rB,UAAU,EAAE2B,KAAK,CAAC;MACpD9B,SAAS,IAAI,CAAC;MACdG,UAAU,IAAI,CAAC,GAAGrB,OAAO;IAC3B;EACF;EAEAwB,eAAeA,CAACC,WAAW,EAAEzB,OAAO,EAAE;IACpC,OAAOyB,WAAW,IAAI,CAAC,GAAGzB,OAAO,CAAC;EACpC;AACF;AAOA,MAAMkF,QAAQ,SAASnE,UAAU,CAAC;EAIhC,OAAO,CAACoE,qBAAqB,GAAG,IAAIpC,YAAY,CAAC,CAC/C,MAAM,EAAE,MAAM,EAAE,CAAC,MAAM,EACvB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EACvB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;EAG3B,OAAO,CAACqC,6BAA6B,GAAG,IAAIrC,YAAY,CAAC,CACvD,SAAS,EAAE,CAAC,SAAS,EAAE,SAAS,EAChC,SAAS,EAAE,SAAS,EAAE,SAAS,EAC/B,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;EAIpC,OAAO,CAACsC,0BAA0B,GAAG,IAAItC,YAAY,CAAC,CACpD,SAAS,EAAE,CAAC,SAAS,EAAE,CAAC,SAAS,EACjC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAChC,SAAS,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;EAEpC,OAAO,CAACuC,sBAAsB,GAAG,IAAIvC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAE5D,OAAO,CAACwC,mBAAmB,GAAG,IAAIxC,YAAY,CAAC,CAAC,CAAC;EAEjD,OAAO,CAACyC,kBAAkB,GAAG,IAAIzC,YAAY,CAAC,CAAC,CAAC;EAEhD,OAAO,CAAC0C,kBAAkB,GAAG,IAAI1C,YAAY,CAAC,CAAC,CAAC;EAEhD,OAAO,CAAC2C,iBAAiB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG;EAEvDz8B,WAAWA,CAACm7B,UAAU,EAAEC,UAAU,EAAEC,KAAK,EAAEr0B,MAAM,EAAE;IACjD,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAElB,IAAI,CAACm0B,UAAU,EAAE;MACf,MAAM,IAAI16B,WAAW,CACnB,sDACF,CAAC;IACH;IAEA,MAAM,CAAC66B,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC,GAAI,IAAI,CAACL,UAAU,GAAGA,UAAW;IACnD,MAAM,CAACM,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC,GAAI,IAAI,CAACP,UAAU,GAAGA,UAAU,IAAI,IAAItB,YAAY,CAAC,CAAC,CAAE;IAE1E,CAAC,IAAI,CAAC4C,EAAE,EAAE,IAAI,CAACC,EAAE,EAAE,IAAI,CAACC,EAAE,CAAC,GAAGvB,KAAK,IAAI,IAAIvB,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAClE,CACE,IAAI,CAAC+C,GAAG,EACR,IAAI,CAACC,GAAG,EACR,IAAI,CAACC,GAAG,EACR,IAAI,CAACC,GAAG,EACR,IAAI,CAACC,GAAG,EACR,IAAI,CAACC,GAAG,EACR,IAAI,CAACC,GAAG,EACR,IAAI,CAACC,GAAG,EACR,IAAI,CAACC,GAAG,CACT,GAAGr2B,MAAM,IAAI,IAAI8yB,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAG3D,IAAIwB,EAAE,GAAG,CAAC,IAAIE,EAAE,GAAG,CAAC,IAAID,EAAE,KAAK,CAAC,EAAE;MAChC,MAAM,IAAI96B,WAAW,CACnB,qCAAqC,IAAI,CAACX,IAAI,yBAChD,CAAC;IACH;IAEA,IAAI27B,EAAE,GAAG,CAAC,IAAIC,EAAE,GAAG,CAAC,IAAIC,EAAE,GAAG,CAAC,EAAE;MAC9Bz+B,IAAI,CACF,0BAA0B,IAAI,CAAC4C,IAAI,KAAK27B,EAAE,KAAKC,EAAE,KAAKC,EAAE,KAAK,GAC3D,0BACJ,CAAC;MACD,IAAI,CAACP,UAAU,GAAG,IAAItB,YAAY,CAAC,CAAC,CAAC;IACvC;IAEA,IAAI,IAAI,CAAC4C,EAAE,GAAG,CAAC,IAAI,IAAI,CAACC,EAAE,GAAG,CAAC,IAAI,IAAI,CAACC,EAAE,GAAG,CAAC,EAAE;MAC7C1/B,IAAI,CACF,kBAAkB,IAAI,CAACw/B,EAAE,KAAK,IAAI,CAACC,EAAE,KAAK,IAAI,CAACC,EAAE,QAAQ,GACvD,GAAG,IAAI,CAAC98B,IAAI,4BAChB,CAAC;MACD,IAAI,CAAC48B,EAAE,GAAG,IAAI,CAACC,EAAE,GAAG,IAAI,CAACC,EAAE,GAAG,CAAC;IACjC;EACF;EAEA,CAACU,aAAaC,CAACt2B,CAAC,EAAE5C,CAAC,EAAE2R,MAAM,EAAE;IAC3BA,MAAM,CAAC,CAAC,CAAC,GAAG/O,CAAC,CAAC,CAAC,CAAC,GAAG5C,CAAC,CAAC,CAAC,CAAC,GAAG4C,CAAC,CAAC,CAAC,CAAC,GAAG5C,CAAC,CAAC,CAAC,CAAC,GAAG4C,CAAC,CAAC,CAAC,CAAC,GAAG5C,CAAC,CAAC,CAAC,CAAC;IACnD2R,MAAM,CAAC,CAAC,CAAC,GAAG/O,CAAC,CAAC,CAAC,CAAC,GAAG5C,CAAC,CAAC,CAAC,CAAC,GAAG4C,CAAC,CAAC,CAAC,CAAC,GAAG5C,CAAC,CAAC,CAAC,CAAC,GAAG4C,CAAC,CAAC,CAAC,CAAC,GAAG5C,CAAC,CAAC,CAAC,CAAC;IACnD2R,MAAM,CAAC,CAAC,CAAC,GAAG/O,CAAC,CAAC,CAAC,CAAC,GAAG5C,CAAC,CAAC,CAAC,CAAC,GAAG4C,CAAC,CAAC,CAAC,CAAC,GAAG5C,CAAC,CAAC,CAAC,CAAC,GAAG4C,CAAC,CAAC,CAAC,CAAC,GAAG5C,CAAC,CAAC,CAAC,CAAC;EACrD;EAEA,CAACm5B,MAAMC,CAACC,gBAAgB,EAAEC,GAAG,EAAE3nB,MAAM,EAAE;IACrCA,MAAM,CAAC,CAAC,CAAC,GAAI2nB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAID,gBAAgB,CAAC,CAAC,CAAC;IAC9C1nB,MAAM,CAAC,CAAC,CAAC,GAAI2nB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAID,gBAAgB,CAAC,CAAC,CAAC;IAC9C1nB,MAAM,CAAC,CAAC,CAAC,GAAI2nB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAID,gBAAgB,CAAC,CAAC,CAAC;EAChD;EAEA,CAACE,KAAKC,CAACH,gBAAgB,EAAEC,GAAG,EAAE3nB,MAAM,EAAE;IACpC,MAAM8nB,IAAI,GAAG,OAAO;IACpB,MAAMC,IAAI,GAAG,CAAC;IACd,MAAMC,IAAI,GAAG,OAAO;IAEpBhoB,MAAM,CAAC,CAAC,CAAC,GAAI2nB,GAAG,CAAC,CAAC,CAAC,GAAGG,IAAI,GAAIJ,gBAAgB,CAAC,CAAC,CAAC;IACjD1nB,MAAM,CAAC,CAAC,CAAC,GAAI2nB,GAAG,CAAC,CAAC,CAAC,GAAGI,IAAI,GAAIL,gBAAgB,CAAC,CAAC,CAAC;IACjD1nB,MAAM,CAAC,CAAC,CAAC,GAAI2nB,GAAG,CAAC,CAAC,CAAC,GAAGK,IAAI,GAAIN,gBAAgB,CAAC,CAAC,CAAC;EACnD;EAEA,CAACO,oBAAoBC,CAACC,KAAK,EAAE;IAE3B,IAAIA,KAAK,IAAI,SAAS,EAAE;MACtB,OAAOrxB,SAAS,CAAC,KAAK,GAAGqxB,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACvC;IAOA,IAAIA,KAAK,IAAI,UAAU,EAAE;MACvB,OAAO,CAAC;IACV;IACA,OAAOrxB,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,IAAIqxB,KAAK,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;EAClE;EAEA,CAACC,OAAOC,CAACtC,CAAC,EAAE;IACV,IAAIA,CAAC,GAAG,CAAC,EAAE;MACT,OAAO,CAAC,IAAI,CAAC,CAACqC,OAAO,CAAC,CAACrC,CAAC,CAAC;IAC3B;IACA,IAAIA,CAAC,GAAG,GAAG,EAAE;MACX,OAAO,CAAC,CAACA,CAAC,GAAG,EAAE,IAAI,GAAG,KAAK,CAAC;IAC9B;IACA,OAAOA,CAAC,GAAGE,QAAQ,CAAC,CAACQ,iBAAiB;EACxC;EAEA,CAAC6B,oBAAoBC,CAACC,gBAAgB,EAAEC,QAAQ,EAAEzoB,MAAM,EAAE;IAGxD,IACEwoB,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,IACzBA,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,IACzBA,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,EACzB;MACAxoB,MAAM,CAAC,CAAC,CAAC,GAAGyoB,QAAQ,CAAC,CAAC,CAAC;MACvBzoB,MAAM,CAAC,CAAC,CAAC,GAAGyoB,QAAQ,CAAC,CAAC,CAAC;MACvBzoB,MAAM,CAAC,CAAC,CAAC,GAAGyoB,QAAQ,CAAC,CAAC,CAAC;MACvB;IACF;IAMA,MAAMC,WAAW,GAAG,IAAI,CAAC,CAACN,OAAO,CAAC,CAAC,CAAC;IAEpC,MAAMO,KAAK,GAAGD,WAAW;IACzB,MAAME,KAAK,GAAG,IAAI,CAAC,CAACR,OAAO,CAACI,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAEhD,MAAMK,KAAK,GAAGH,WAAW;IACzB,MAAMI,KAAK,GAAG,IAAI,CAAC,CAACV,OAAO,CAACI,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAEhD,MAAMO,KAAK,GAAGL,WAAW;IACzB,MAAMM,KAAK,GAAG,IAAI,CAAC,CAACZ,OAAO,CAACI,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAEhD,MAAMS,OAAO,GAAG,CAAC,CAAC,GAAGN,KAAK,KAAK,CAAC,GAAGC,KAAK,CAAC;IACzC,MAAMM,QAAQ,GAAG,CAAC,GAAGD,OAAO;IAE5B,MAAME,OAAO,GAAG,CAAC,CAAC,GAAGN,KAAK,KAAK,CAAC,GAAGC,KAAK,CAAC;IACzC,MAAMM,QAAQ,GAAG,CAAC,GAAGD,OAAO;IAE5B,MAAME,OAAO,GAAG,CAAC,CAAC,GAAGN,KAAK,KAAK,CAAC,GAAGC,KAAK,CAAC;IACzC,MAAMM,QAAQ,GAAG,CAAC,GAAGD,OAAO;IAE5BrpB,MAAM,CAAC,CAAC,CAAC,GAAGyoB,QAAQ,CAAC,CAAC,CAAC,GAAGQ,OAAO,GAAGC,QAAQ;IAC5ClpB,MAAM,CAAC,CAAC,CAAC,GAAGyoB,QAAQ,CAAC,CAAC,CAAC,GAAGU,OAAO,GAAGC,QAAQ;IAC5CppB,MAAM,CAAC,CAAC,CAAC,GAAGyoB,QAAQ,CAAC,CAAC,CAAC,GAAGY,OAAO,GAAGC,QAAQ;EAC9C;EAEA,CAACC,yBAAyBC,CAAC9B,gBAAgB,EAAE+B,MAAM,EAAEzpB,MAAM,EAAE;IAG3D,IAAI0nB,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAIA,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;MAC1D1nB,MAAM,CAAC,CAAC,CAAC,GAAGypB,MAAM,CAAC,CAAC,CAAC;MACrBzpB,MAAM,CAAC,CAAC,CAAC,GAAGypB,MAAM,CAAC,CAAC,CAAC;MACrBzpB,MAAM,CAAC,CAAC,CAAC,GAAGypB,MAAM,CAAC,CAAC,CAAC;MACrB;IACF;IAEA,MAAM9B,GAAG,GAAG3nB,MAAM;IAClB,IAAI,CAAC,CAACsnB,aAAa,CAACrB,QAAQ,CAAC,CAACC,qBAAqB,EAAEuD,MAAM,EAAE9B,GAAG,CAAC;IAEjE,MAAM+B,QAAQ,GAAGzD,QAAQ,CAAC,CAACK,mBAAmB;IAC9C,IAAI,CAAC,CAACkB,MAAM,CAACE,gBAAgB,EAAEC,GAAG,EAAE+B,QAAQ,CAAC;IAE7C,IAAI,CAAC,CAACpC,aAAa,CACjBrB,QAAQ,CAAC,CAACE,6BAA6B,EACvCuD,QAAQ,EACR1pB,MACF,CAAC;EACH;EAEA,CAAC2pB,wBAAwBC,CAAClC,gBAAgB,EAAE+B,MAAM,EAAEzpB,MAAM,EAAE;IAC1D,MAAM2nB,GAAG,GAAG3nB,MAAM;IAClB,IAAI,CAAC,CAACsnB,aAAa,CAACrB,QAAQ,CAAC,CAACC,qBAAqB,EAAEuD,MAAM,EAAE9B,GAAG,CAAC;IAEjE,MAAMkC,OAAO,GAAG5D,QAAQ,CAAC,CAACK,mBAAmB;IAC7C,IAAI,CAAC,CAACsB,KAAK,CAACF,gBAAgB,EAAEC,GAAG,EAAEkC,OAAO,CAAC;IAE3C,IAAI,CAAC,CAACvC,aAAa,CACjBrB,QAAQ,CAAC,CAACE,6BAA6B,EACvC0D,OAAO,EACP7pB,MACF,CAAC;EACH;EAEA,CAAC+kB,KAAKC,CAACtE,GAAG,EAAEuB,SAAS,EAAE3rB,IAAI,EAAE8rB,UAAU,EAAE2B,KAAK,EAAE;IAG9C,MAAM8B,CAAC,GAAG/uB,SAAS,CAAC4pB,GAAG,CAACuB,SAAS,CAAC,GAAG8B,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACjD,MAAM+F,CAAC,GAAGhzB,SAAS,CAAC4pB,GAAG,CAACuB,SAAS,GAAG,CAAC,CAAC,GAAG8B,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACrD,MAAMhkC,CAAC,GAAG+W,SAAS,CAAC4pB,GAAG,CAACuB,SAAS,GAAG,CAAC,CAAC,GAAG8B,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAKrD,MAAMgG,GAAG,GAAGlE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAGA,CAAC,IAAI,IAAI,CAACa,EAAE;IACtC,MAAMsD,GAAG,GAAGF,CAAC,KAAK,CAAC,GAAG,CAAC,GAAGA,CAAC,IAAI,IAAI,CAACnD,EAAE;IACtC,MAAMsD,GAAG,GAAGlqC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAGA,CAAC,IAAI,IAAI,CAAC6mC,EAAE;IAItC,MAAMznC,CAAC,GAAG,IAAI,CAAC0nC,GAAG,GAAGkD,GAAG,GAAG,IAAI,CAAC/C,GAAG,GAAGgD,GAAG,GAAG,IAAI,CAAC7C,GAAG,GAAG8C,GAAG;IAC1D,MAAMC,CAAC,GAAG,IAAI,CAACpD,GAAG,GAAGiD,GAAG,GAAG,IAAI,CAAC9C,GAAG,GAAG+C,GAAG,GAAG,IAAI,CAAC5C,GAAG,GAAG6C,GAAG;IAC1D,MAAME,CAAC,GAAG,IAAI,CAACpD,GAAG,GAAGgD,GAAG,GAAG,IAAI,CAAC7C,GAAG,GAAG8C,GAAG,GAAG,IAAI,CAAC3C,GAAG,GAAG4C,GAAG;IAK1D,MAAMG,GAAG,GAAGnE,QAAQ,CAAC,CAACM,kBAAkB;IACxC6D,GAAG,CAAC,CAAC,CAAC,GAAGjrC,CAAC;IACVirC,GAAG,CAAC,CAAC,CAAC,GAAGF,CAAC;IACVE,GAAG,CAAC,CAAC,CAAC,GAAGD,CAAC;IACV,MAAM1B,QAAQ,GAAGxC,QAAQ,CAAC,CAACO,kBAAkB;IAE7C,IAAI,CAAC,CAAC+C,yBAAyB,CAAC,IAAI,CAACpE,UAAU,EAAEiF,GAAG,EAAE3B,QAAQ,CAAC;IAE/D,MAAM4B,SAAS,GAAGpE,QAAQ,CAAC,CAACM,kBAAkB;IAC9C,IAAI,CAAC,CAAC+B,oBAAoB,CAAC,IAAI,CAAClD,UAAU,EAAEqD,QAAQ,EAAE4B,SAAS,CAAC;IAEhE,MAAMC,OAAO,GAAGrE,QAAQ,CAAC,CAACO,kBAAkB;IAC5C,IAAI,CAAC,CAACmD,wBAAwB,CAC5B1D,QAAQ,CAAC,CAACI,sBAAsB,EAChCgE,SAAS,EACTC,OACF,CAAC;IAED,MAAMC,IAAI,GAAGtE,QAAQ,CAAC,CAACM,kBAAkB;IACzC,IAAI,CAAC,CAACe,aAAa,CAACrB,QAAQ,CAAC,CAACG,0BAA0B,EAAEkE,OAAO,EAAEC,IAAI,CAAC;IAGxEj0B,IAAI,CAAC8rB,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC6F,oBAAoB,CAACsC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;IAC5Dj0B,IAAI,CAAC8rB,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC6F,oBAAoB,CAACsC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;IAChEj0B,IAAI,CAAC8rB,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC6F,oBAAoB,CAACsC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;EAClE;EAEApI,UAAUA,CAACzB,GAAG,EAAEuB,SAAS,EAAE3rB,IAAI,EAAE8rB,UAAU,EAAE;IAO3C,IAAI,CAAC,CAAC2C,KAAK,CAACrE,GAAG,EAAEuB,SAAS,EAAE3rB,IAAI,EAAE8rB,UAAU,EAAE,CAAC,CAAC;EAClD;EAEAC,YAAYA,CAAC3B,GAAG,EAAEuB,SAAS,EAAEK,KAAK,EAAEhsB,IAAI,EAAE8rB,UAAU,EAAE9X,IAAI,EAAEyW,OAAO,EAAE;IAOnE,MAAMgD,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,IAAIzZ,IAAI,IAAI,CAAC,CAAC;IAEnC,KAAK,IAAInf,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGm3B,KAAK,EAAE,EAAEn3B,CAAC,EAAE;MAC9B,IAAI,CAAC,CAAC45B,KAAK,CAACrE,GAAG,EAAEuB,SAAS,EAAE3rB,IAAI,EAAE8rB,UAAU,EAAE2B,KAAK,CAAC;MACpD9B,SAAS,IAAI,CAAC;MACdG,UAAU,IAAI,CAAC,GAAGrB,OAAO;IAC3B;EACF;EAEAwB,eAAeA,CAACC,WAAW,EAAEzB,OAAO,EAAE;IACpC,OAASyB,WAAW,IAAI,CAAC,GAAGzB,OAAO,CAAC,GAAI,CAAC,GAAI,CAAC;EAChD;AACF;AAOA,MAAMyJ,KAAK,SAAS1I,UAAU,CAAC;EAC7B93B,WAAWA,CAACm7B,UAAU,EAAEC,UAAU,EAAEqF,KAAK,EAAE;IACzC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAEf,IAAI,CAACtF,UAAU,EAAE;MACf,MAAM,IAAI16B,WAAW,CACnB,mDACF,CAAC;IACH;IAEA,CAAC,IAAI,CAAC66B,EAAE,EAAE,IAAI,CAACC,EAAE,EAAE,IAAI,CAACC,EAAE,CAAC,GAAGL,UAAU;IACxC,CAAC,IAAI,CAACuF,IAAI,EAAE,IAAI,CAACC,IAAI,EAAE,IAAI,CAACC,IAAI,EAAE,IAAI,CAACC,IAAI,CAAC,GAAGJ,KAAK,IAAI,CACtD,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CACrB;IAID,CAAC,IAAI,CAAChF,EAAE,EAAE,IAAI,CAACC,EAAE,EAAE,IAAI,CAACC,EAAE,CAAC,GAAGP,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAGrD,IAAI,IAAI,CAACE,EAAE,GAAG,CAAC,IAAI,IAAI,CAACE,EAAE,GAAG,CAAC,IAAI,IAAI,CAACD,EAAE,KAAK,CAAC,EAAE;MAC/C,MAAM,IAAI96B,WAAW,CACnB,sDACF,CAAC;IACH;IAEA,IAAI,IAAI,CAACg7B,EAAE,GAAG,CAAC,IAAI,IAAI,CAACC,EAAE,GAAG,CAAC,IAAI,IAAI,CAACC,EAAE,GAAG,CAAC,EAAE;MAC7Cz+B,IAAI,CAAC,6CAA6C,CAAC;MACnD,IAAI,CAACu+B,EAAE,GAAG,IAAI,CAACC,EAAE,GAAG,IAAI,CAACC,EAAE,GAAG,CAAC;IACjC;IAEA,IAAI,IAAI,CAAC+E,IAAI,GAAG,IAAI,CAACC,IAAI,IAAI,IAAI,CAACC,IAAI,GAAG,IAAI,CAACC,IAAI,EAAE;MAClD3jC,IAAI,CAAC,yCAAyC,CAAC;MAC/C,IAAI,CAACwjC,IAAI,GAAG,CAAC,GAAG;MAChB,IAAI,CAACC,IAAI,GAAG,GAAG;MACf,IAAI,CAACC,IAAI,GAAG,CAAC,GAAG;MAChB,IAAI,CAACC,IAAI,GAAG,GAAG;IACjB;EACF;EAGA,CAACC,IAAIC,CAAC/4B,CAAC,EAAE;IACP,OAAOA,CAAC,IAAI,CAAC,GAAG,EAAE,GAAGA,CAAC,IAAI,CAAC,GAAI,GAAG,GAAG,GAAG,IAAKA,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;EAC1D;EAEA,CAAC8B,MAAMk3B,CAAC5hC,KAAK,EAAE6hC,KAAK,EAAEC,IAAI,EAAEC,KAAK,EAAE;IACjC,OAAOD,IAAI,GAAI9hC,KAAK,IAAI+hC,KAAK,GAAGD,IAAI,CAAC,GAAID,KAAK;EAChD;EAGA,CAAClG,KAAKC,CAACtE,GAAG,EAAEuB,SAAS,EAAEmJ,MAAM,EAAE90B,IAAI,EAAE8rB,UAAU,EAAE;IAO/C,IAAIiJ,EAAE,GAAG3K,GAAG,CAACuB,SAAS,CAAC;IACvB,IAAIqJ,EAAE,GAAG5K,GAAG,CAACuB,SAAS,GAAG,CAAC,CAAC;IAC3B,IAAIsJ,EAAE,GAAG7K,GAAG,CAACuB,SAAS,GAAG,CAAC,CAAC;IAC3B,IAAImJ,MAAM,KAAK,KAAK,EAAE;MACpBC,EAAE,GAAG,IAAI,CAAC,CAACv3B,MAAM,CAACu3B,EAAE,EAAED,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC;MACrCE,EAAE,GAAG,IAAI,CAAC,CAACx3B,MAAM,CAACw3B,EAAE,EAAEF,MAAM,EAAE,IAAI,CAACV,IAAI,EAAE,IAAI,CAACC,IAAI,CAAC;MACnDY,EAAE,GAAG,IAAI,CAAC,CAACz3B,MAAM,CAACy3B,EAAE,EAAEH,MAAM,EAAE,IAAI,CAACR,IAAI,EAAE,IAAI,CAACC,IAAI,CAAC;IACrD;IAGA,IAAIS,EAAE,GAAG,IAAI,CAACX,IAAI,EAAE;MAClBW,EAAE,GAAG,IAAI,CAACX,IAAI;IAChB,CAAC,MAAM,IAAIW,EAAE,GAAG,IAAI,CAACZ,IAAI,EAAE;MACzBY,EAAE,GAAG,IAAI,CAACZ,IAAI;IAChB;IACA,IAAIa,EAAE,GAAG,IAAI,CAACV,IAAI,EAAE;MAClBU,EAAE,GAAG,IAAI,CAACV,IAAI;IAChB,CAAC,MAAM,IAAIU,EAAE,GAAG,IAAI,CAACX,IAAI,EAAE;MACzBW,EAAE,GAAG,IAAI,CAACX,IAAI;IAChB;IAGA,MAAMY,CAAC,GAAG,CAACH,EAAE,GAAG,EAAE,IAAI,GAAG;IACzB,MAAMtF,CAAC,GAAGyF,CAAC,GAAGF,EAAE,GAAG,GAAG;IACtB,MAAMG,CAAC,GAAGD,CAAC,GAAGD,EAAE,GAAG,GAAG;IAEtB,MAAMpsC,CAAC,GAAG,IAAI,CAACmmC,EAAE,GAAG,IAAI,CAAC,CAACwF,IAAI,CAAC/E,CAAC,CAAC;IACjC,MAAMmE,CAAC,GAAG,IAAI,CAAC3E,EAAE,GAAG,IAAI,CAAC,CAACuF,IAAI,CAACU,CAAC,CAAC;IACjC,MAAMrB,CAAC,GAAG,IAAI,CAAC3E,EAAE,GAAG,IAAI,CAAC,CAACsF,IAAI,CAACW,CAAC,CAAC;IAEjC,IAAIt9B,CAAC,EAAEC,CAAC,EAAEC,CAAC;IAGX,IAAI,IAAI,CAACm3B,EAAE,GAAG,CAAC,EAAE;MAEfr3B,CAAC,GAAGhP,CAAC,GAAG,MAAM,GAAG+qC,CAAC,GAAG,CAAC,KAAK,GAAGC,CAAC,GAAG,CAAC,MAAM;MACzC/7B,CAAC,GAAGjP,CAAC,GAAG,CAAC,MAAM,GAAG+qC,CAAC,GAAG,KAAK,GAAGC,CAAC,GAAG,MAAM;MACxC97B,CAAC,GAAGlP,CAAC,GAAG,KAAK,GAAG+qC,CAAC,GAAG,CAAC,KAAK,GAAGC,CAAC,GAAG,MAAM;IACzC,CAAC,MAAM;MAELh8B,CAAC,GAAGhP,CAAC,GAAG,MAAM,GAAG+qC,CAAC,GAAG,CAAC,MAAM,GAAGC,CAAC,GAAG,CAAC,MAAM;MAC1C/7B,CAAC,GAAGjP,CAAC,GAAG,CAAC,MAAM,GAAG+qC,CAAC,GAAG,MAAM,GAAGC,CAAC,GAAG,MAAM;MACzC97B,CAAC,GAAGlP,CAAC,GAAG,MAAM,GAAG+qC,CAAC,GAAG,CAAC,KAAK,GAAGC,CAAC,GAAG,KAAK;IACzC;IAEA7zB,IAAI,CAAC8rB,UAAU,CAAC,GAAG/2B,IAAI,CAACgG,IAAI,CAAClD,CAAC,CAAC,GAAG,GAAG;IACrCmI,IAAI,CAAC8rB,UAAU,GAAG,CAAC,CAAC,GAAG/2B,IAAI,CAACgG,IAAI,CAACjD,CAAC,CAAC,GAAG,GAAG;IACzCkI,IAAI,CAAC8rB,UAAU,GAAG,CAAC,CAAC,GAAG/2B,IAAI,CAACgG,IAAI,CAAChD,CAAC,CAAC,GAAG,GAAG;EAC3C;EAEA8zB,UAAUA,CAACzB,GAAG,EAAEuB,SAAS,EAAE3rB,IAAI,EAAE8rB,UAAU,EAAE;IAO3C,IAAI,CAAC,CAAC2C,KAAK,CAACrE,GAAG,EAAEuB,SAAS,EAAE,KAAK,EAAE3rB,IAAI,EAAE8rB,UAAU,CAAC;EACtD;EAEAC,YAAYA,CAAC3B,GAAG,EAAEuB,SAAS,EAAEK,KAAK,EAAEhsB,IAAI,EAAE8rB,UAAU,EAAE9X,IAAI,EAAEyW,OAAO,EAAE;IAOnE,MAAMqK,MAAM,GAAG,CAAC,CAAC,IAAI9gB,IAAI,IAAI,CAAC;IAC9B,KAAK,IAAInf,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGm3B,KAAK,EAAEn3B,CAAC,EAAE,EAAE;MAC9B,IAAI,CAAC,CAAC45B,KAAK,CAACrE,GAAG,EAAEuB,SAAS,EAAEmJ,MAAM,EAAE90B,IAAI,EAAE8rB,UAAU,CAAC;MACrDH,SAAS,IAAI,CAAC;MACdG,UAAU,IAAI,CAAC,GAAGrB,OAAO;IAC3B;EACF;EAEAwB,eAAeA,CAACC,WAAW,EAAEzB,OAAO,EAAE;IACpC,OAASyB,WAAW,IAAI,CAAC,GAAGzB,OAAO,CAAC,GAAI,CAAC,GAAI,CAAC;EAChD;EAEA2B,eAAeA,CAACC,SAAS,EAAEC,GAAG,EAAE;IAG9B,OAAO,IAAI;EACb;EAEA,IAAIa,kBAAkBA,CAAA,EAAG;IACvB,OAAOx6B,MAAM,CAAC,IAAI,EAAE,oBAAoB,EAAE,KAAK,CAAC;EAClD;AACF;;;ACvvCA,MAAMyiC,IAAI,CAAC;EACT,OAAOC,OAAO,GAAG,IAAI;EAErB,OAAOC,aAAa,GAAG,KAAK;EAE5B,OAAOC,WAAW,GAAG,IAAI;AAC3B;AAEA,SAASC,WAAWA,CAACC,GAAG,EAAE7qB,GAAG,EAAE;EAI7B,MAAM;IAAEyqB,OAAO;IAAEC,aAAa;IAAEC;EAAY,CAAC,GAAGH,IAAI;EACpD,MAAM1rB,MAAM,GAAG,IAAInU,UAAU,CAAC8/B,OAAO,CAACK,MAAM,CAAC1/B,MAAM,EAAEy/B,GAAG,EAAE7qB,GAAG,CAAC;EAC9D,IAAIlB,MAAM,CAAC3X,MAAM,KAAKwjC,WAAW,CAACxjC,MAAM,EAAE;IACxCwjC,WAAW,CAAC1xB,GAAG,CAAC6F,MAAM,CAAC;IACvB;EACF;EACA,IAAI4rB,aAAa,EAAE;IACjB,KAAK,IAAIzgC,CAAC,GAAG,CAAC,EAAE6hB,CAAC,GAAG,CAAC,EAAE/Y,EAAE,GAAG+L,MAAM,CAAC3X,MAAM,EAAE8C,CAAC,GAAG8I,EAAE,EAAE9I,CAAC,IAAI,CAAC,EAAE6hB,CAAC,IAAI,CAAC,EAAE;MACjE6e,WAAW,CAAC7e,CAAC,CAAC,GAAGhN,MAAM,CAAC7U,CAAC,CAAC;MAC1B0gC,WAAW,CAAC7e,CAAC,GAAG,CAAC,CAAC,GAAGhN,MAAM,CAAC7U,CAAC,GAAG,CAAC,CAAC;MAClC0gC,WAAW,CAAC7e,CAAC,GAAG,CAAC,CAAC,GAAGhN,MAAM,CAAC7U,CAAC,GAAG,CAAC,CAAC;MAClC0gC,WAAW,CAAC7e,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG;IAC1B;EACF,CAAC,MAAM;IACL,KAAK,IAAI7hB,CAAC,GAAG,CAAC,EAAE6hB,CAAC,GAAG,CAAC,EAAE/Y,EAAE,GAAG+L,MAAM,CAAC3X,MAAM,EAAE8C,CAAC,GAAG8I,EAAE,EAAE9I,CAAC,IAAI,CAAC,EAAE6hB,CAAC,IAAI,CAAC,EAAE;MACjE6e,WAAW,CAAC7e,CAAC,CAAC,GAAGhN,MAAM,CAAC7U,CAAC,CAAC;MAC1B0gC,WAAW,CAAC7e,CAAC,GAAG,CAAC,CAAC,GAAGhN,MAAM,CAAC7U,CAAC,GAAG,CAAC,CAAC;MAClC0gC,WAAW,CAAC7e,CAAC,GAAG,CAAC,CAAC,GAAGhN,MAAM,CAAC7U,CAAC,GAAG,CAAC,CAAC;IACpC;EACF;AACF;AAEA,SAAS8gC,QAAQA,CAACF,GAAG,EAAE;EACrBL,IAAI,CAACG,WAAW,CAAC1xB,GAAG,CAAC,IAAItO,UAAU,CAAC6/B,IAAI,CAACC,OAAO,CAACK,MAAM,CAAC1/B,MAAM,EAAEy/B,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1E;;;AClDwD;AAExD,IAAIG,IAAI;AAER,MAAMC,iBAAiB,GAAI,OAAOx4B,WAAW,KAAK,WAAW,GAAG,IAAIA,WAAW,CAAC,OAAO,EAAE;EAAEy4B,SAAS,EAAE,IAAI;EAAEx4B,KAAK,EAAE;AAAK,CAAC,CAAC,GAAG;EAAEE,MAAM,EAAEA,CAAA,KAAM;IAAE,MAAMtM,KAAK,CAAC,2BAA2B,CAAC;EAAC;AAAE,CAAG;AAE7L,IAAI,OAAOmM,WAAW,KAAK,WAAW,EAAE;EAAEw4B,iBAAiB,CAACr4B,MAAM,CAAC,CAAC;AAAE;AAAC;AAEvE,IAAIu4B,uBAAuB,GAAG,IAAI;AAElC,SAASC,oBAAoBA,CAAA,EAAG;EAC5B,IAAID,uBAAuB,KAAK,IAAI,IAAIA,uBAAuB,CAACltB,UAAU,KAAK,CAAC,EAAE;IAC9EktB,uBAAuB,GAAG,IAAIxgC,UAAU,CAACqgC,IAAI,CAACF,MAAM,CAAC1/B,MAAM,CAAC;EAChE;EACA,OAAO+/B,uBAAuB;AAClC;AAEA,SAASE,kBAAkBA,CAACR,GAAG,EAAE7qB,GAAG,EAAE;EAClC6qB,GAAG,GAAGA,GAAG,KAAK,CAAC;EACf,OAAOI,iBAAiB,CAACr4B,MAAM,CAACw4B,oBAAoB,CAAC,CAAC,CAAC9gC,QAAQ,CAACugC,GAAG,EAAEA,GAAG,GAAG7qB,GAAG,CAAC,CAAC;AACpF;AAEA,IAAIsrB,eAAe,GAAG,CAAC;AAEvB,SAASC,iBAAiBA,CAAC51B,GAAG,EAAE61B,MAAM,EAAE;EACpC,MAAMX,GAAG,GAAGW,MAAM,CAAC71B,GAAG,CAACxO,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;EAC3CikC,oBAAoB,CAAC,CAAC,CAACnyB,GAAG,CAACtD,GAAG,EAAEk1B,GAAG,GAAG,CAAC,CAAC;EACxCS,eAAe,GAAG31B,GAAG,CAACxO,MAAM;EAC5B,OAAO0jC,GAAG;AACd;AAQO,SAASY,kBAAkBA,CAACC,WAAW,EAAElM,GAAG,EAAE;EACjD,MAAMmM,IAAI,GAAGJ,iBAAiB,CAAC/L,GAAG,EAAEwL,IAAI,CAACY,iBAAiB,CAAC;EAC3D,MAAMC,IAAI,GAAGP,eAAe;EAC5BN,IAAI,CAACS,kBAAkB,CAACC,WAAW,EAAEC,IAAI,EAAEE,IAAI,CAAC;AACpD;AASO,SAASC,gBAAgBA,CAACJ,WAAW,EAAElM,GAAG,EAAE;EAC/CwL,IAAI,CAACc,gBAAgB,CAACJ,WAAW,EAAElM,GAAG,CAAC;AAC3C;AAWO,SAASuM,kBAAkBA,CAACL,WAAW,EAAEM,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAE;EAC9DlB,IAAI,CAACe,kBAAkB,CAACL,WAAW,EAAEM,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;AAC1D;AAYO,SAASC,iBAAiBA,CAACT,WAAW,EAAEM,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEE,IAAI,EAAE;EACnEpB,IAAI,CAACmB,iBAAiB,CAACT,WAAW,EAAEM,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEE,IAAI,CAAC;AAC/D;AAWO,SAASC,4BAA4BA,CAACC,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAE;EAC/D,MAAMb,IAAI,GAAGJ,iBAAiB,CAACe,GAAG,EAAEtB,IAAI,CAACY,iBAAiB,CAAC;EAC3D,MAAMC,IAAI,GAAGP,eAAe;EAC5B,MAAMmB,GAAG,GAAGzB,IAAI,CAACqB,4BAA4B,CAACV,IAAI,EAAEE,IAAI,EAAEU,OAAO,EAAEC,MAAM,CAAC;EAC1E,OAAOC,GAAG,KAAK,CAAC;AACpB;AAQO,SAASC,qBAAqBA,CAAChB,WAAW,EAAE;EAC/CV,IAAI,CAAC0B,qBAAqB,CAAChB,WAAW,CAAC;AAC3C;AAKO,MAAMiB,QAAQ,GAAGvkC,MAAM,CAACwkC,MAAM,CAAC;EAClCC,IAAI,EAAE,CAAC;EAAE,GAAG,EAAE,MAAM;EACpBC,KAAK,EAAE,CAAC;EAAE,GAAG,EAAE,OAAO;EACtBC,KAAK,EAAE,CAAC;EAAE,GAAG,EAAE,OAAO;EACtBC,KAAK,EAAE,CAAC;EAAE,GAAG,EAAE,OAAO;EACtBC,MAAM,EAAE,CAAC;EAAE,GAAG,EAAE,QAAQ;EACxBC,IAAI,EAAE,CAAC;EAAE,GAAG,EAAE;AAClB,CAAC,CAAC;AAIK,MAAMC,MAAM,GAAG/kC,MAAM,CAACwkC,MAAM,CAAC;EAChCQ,UAAU,EAAE,CAAC;EAAE,GAAG,EAAE,YAAY;EAChCC,oBAAoB,EAAE,CAAC;EAAE,GAAG,EAAE,sBAAsB;EACpDC,UAAU,EAAE,CAAC;EAAE,GAAG,EAAE,YAAY;EAChCC,oBAAoB,EAAE,CAAC;EAAE,GAAG,EAAE;AAClC,CAAC,CAAC;AAEF,eAAeC,UAAUA,CAACC,MAAM,EAAEC,OAAO,EAAE;EACvC,IAAI,OAAOC,QAAQ,KAAK,UAAU,IAAIF,MAAM,YAAYE,QAAQ,EAAE;IAC9D,IAAI,OAAOC,WAAW,CAACC,oBAAoB,KAAK,UAAU,EAAE;MACxD,IAAI;QACA,OAAO,MAAMD,WAAW,CAACC,oBAAoB,CAACJ,MAAM,EAAEC,OAAO,CAAC;MAElE,CAAC,CAAC,OAAOI,CAAC,EAAE;QACR,IAAIL,MAAM,CAACM,OAAO,CAACr5B,GAAG,CAAC,cAAc,CAAC,IAAI,kBAAkB,EAAE;UAC1DxO,OAAO,CAACE,IAAI,CAAC,mMAAmM,EAAE0nC,CAAC,CAAC;QAExN,CAAC,MAAM;UACH,MAAMA,CAAC;QACX;MACJ;IACJ;IAEA,MAAMpkC,KAAK,GAAG,MAAM+jC,MAAM,CAACjvB,WAAW,CAAC,CAAC;IACxC,OAAO,MAAMovB,WAAW,CAACI,WAAW,CAACtkC,KAAK,EAAEgkC,OAAO,CAAC;EAExD,CAAC,MAAM;IACH,MAAMO,QAAQ,GAAG,MAAML,WAAW,CAACI,WAAW,CAACP,MAAM,EAAEC,OAAO,CAAC;IAE/D,IAAIO,QAAQ,YAAYL,WAAW,CAACM,QAAQ,EAAE;MAC1C,OAAO;QAAED,QAAQ;QAAER;MAAO,CAAC;IAE/B,CAAC,MAAM;MACH,OAAOQ,QAAQ;IACnB;EACJ;AACJ;AAEA,SAASE,iBAAiBA,CAAA,EAAG;EACzB,MAAMT,OAAO,GAAG,CAAC,CAAC;EAClBA,OAAO,CAACU,GAAG,GAAG,CAAC,CAAC;EAChBV,OAAO,CAACU,GAAG,CAACC,iCAAiC,GAAG,UAASC,IAAI,EAAEC,IAAI,EAAE;IACjE3D,WAAW,CAAC0D,IAAI,KAAK,CAAC,EAAEC,IAAI,KAAK,CAAC,CAAC;EACvC,CAAC;EACDb,OAAO,CAACU,GAAG,CAACI,8BAA8B,GAAG,UAASF,IAAI,EAAE;IACxDvD,QAAQ,CAACuD,IAAI,KAAK,CAAC,CAAC;EACxB,CAAC;EACDZ,OAAO,CAACU,GAAG,CAACK,+BAA+B,GAAG,YAAW;IACrD,MAAM1kB,KAAK,GAAGihB,IAAI,CAAC0D,mBAAmB;IACtC,MAAMjvB,MAAM,GAAGsK,KAAK,CAAC4kB,IAAI,CAAC,CAAC,CAAC;IAC5B5kB,KAAK,CAAC9Q,GAAG,CAAC,CAAC,EAAEtP,SAAS,CAAC;IACvBogB,KAAK,CAAC9Q,GAAG,CAACwG,MAAM,GAAG,CAAC,EAAE9V,SAAS,CAAC;IAChCogB,KAAK,CAAC9Q,GAAG,CAACwG,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC;IAC3BsK,KAAK,CAAC9Q,GAAG,CAACwG,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC;IAC3BsK,KAAK,CAAC9Q,GAAG,CAACwG,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC;EAEhC,CAAC;EACDiuB,OAAO,CAACU,GAAG,CAACQ,gBAAgB,GAAG,UAASN,IAAI,EAAEC,IAAI,EAAE;IAChD,MAAM,IAAIjoC,KAAK,CAAC+kC,kBAAkB,CAACiD,IAAI,EAAEC,IAAI,CAAC,CAAC;EACnD,CAAC;EAED,OAAOb,OAAO;AAClB;AAEA,SAASmB,iBAAiBA,CAACnB,OAAO,EAAE5C,MAAM,EAAE,CAE5C;AAEA,SAASgE,mBAAmBA,CAACb,QAAQ,EAAER,MAAM,EAAE;EAC3CzC,IAAI,GAAGiD,QAAQ,CAACc,OAAO;EACvBC,UAAU,CAACC,sBAAsB,GAAGxB,MAAM;EAC1CtC,uBAAuB,GAAG,IAAI;EAG9BH,IAAI,CAACkE,gBAAgB,CAAC,CAAC;EACvB,OAAOlE,IAAI;AACf;AAEA,SAASmE,QAAQA,CAAC1B,MAAM,EAAE;EACtB,IAAIzC,IAAI,KAAKrhC,SAAS,EAAE,OAAOqhC,IAAI;EAGnC,IAAI,OAAOyC,MAAM,KAAK,WAAW,EAAE;IAC/B,IAAIrlC,MAAM,CAACgnC,cAAc,CAAC3B,MAAM,CAAC,KAAKrlC,MAAM,CAACS,SAAS,EAAE;MACpD,CAAC;QAAC4kC;MAAM,CAAC,GAAGA,MAAM;IACtB,CAAC,MAAM;MACHvnC,OAAO,CAACE,IAAI,CAAC,4EAA4E,CAAC;IAC9F;EACJ;EAEA,MAAMsnC,OAAO,GAAGS,iBAAiB,CAAC,CAAC;EAEnCU,iBAAiB,CAACnB,OAAO,CAAC;EAE1B,IAAI,EAAED,MAAM,YAAYG,WAAW,CAACyB,MAAM,CAAC,EAAE;IACzC5B,MAAM,GAAG,IAAIG,WAAW,CAACyB,MAAM,CAAC5B,MAAM,CAAC;EAC3C;EAEA,MAAMQ,QAAQ,GAAG,IAAIL,WAAW,CAACM,QAAQ,CAACT,MAAM,EAAEC,OAAO,CAAC;EAE1D,OAAOoB,mBAAmB,CAACb,QAAQ,EAAER,MAAM,CAAC;AAChD;AAEA,eAAeuB,UAAUA,CAACM,cAAc,EAAE;EACtC,IAAItE,IAAI,KAAKrhC,SAAS,EAAE,OAAOqhC,IAAI;EAGnC,IAAI,OAAOsE,cAAc,KAAK,WAAW,EAAE;IACvC,IAAIlnC,MAAM,CAACgnC,cAAc,CAACE,cAAc,CAAC,KAAKlnC,MAAM,CAACS,SAAS,EAAE;MAC5D,CAAC;QAACymC;MAAc,CAAC,GAAGA,cAAc;IACtC,CAAC,MAAM;MACHppC,OAAO,CAACE,IAAI,CAAC,2FAA2F,CAAC;IAC7G;EACJ;EAEA,IAAI,OAAOkpC,cAAc,KAAK,WAAW,EAAE;IACvCA,cAAc,GAAG,IAAI/nC,GAAG;IAAA;IAAA;IAAC,cAAc,EAAEgoC,MAAM,CAACC,IAAI,CAAC9oC,GAAG,CAAC;EAC7D;EACA,MAAMgnC,OAAO,GAAGS,iBAAiB,CAAC,CAAC;EAEnC,IAAI,OAAOmB,cAAc,KAAK,QAAQ,IAAK,OAAOG,OAAO,KAAK,UAAU,IAAIH,cAAc,YAAYG,OAAQ,IAAK,OAAOloC,GAAG,KAAK,UAAU,IAAI+nC,cAAc,YAAY/nC,GAAI,EAAE;IAC5K+nC,cAAc,GAAG92B,KAAK,CAAC82B,cAAc,CAAC;EAC1C;EAEAT,iBAAiB,CAACnB,OAAO,CAAC;EAE1B,MAAM;IAAEO,QAAQ;IAAER;EAAO,CAAC,GAAG,MAAMD,UAAU,CAAC,MAAM8B,cAAc,EAAE5B,OAAO,CAAC;EAE5E,OAAOoB,mBAAmB,CAACb,QAAQ,EAAER,MAAM,CAAC;AAChD;AAEoB;AACpB,2CAAeuB,gDAAAA,UAAU;;ACrOY;AACY;AACJ;AACY;AAEzD,SAASU,SAASA,CAAChpC,GAAG,EAAE;EAItB,MAAMipC,GAAG,GAAG,IAAIC,cAAc,CAAC,CAAC;EAChCD,GAAG,CAACE,IAAI,CAAC,KAAK,EAAEnpC,GAAG,EAAE,KAAK,CAAC;EAC3BipC,GAAG,CAACG,YAAY,GAAG,aAAa;EAChCH,GAAG,CAACI,IAAI,CAAC,IAAI,CAAC;EACd,OAAOJ,GAAG,CAACtxB,QAAQ;AACrB;AAEA,MAAM2xB,aAAa,SAASpP,UAAU,CAAC;EACrC,CAAC8K,WAAW;EAEZ,CAACuE,YAAY;EAEb,OAAO,CAACC,OAAO,GAAG,IAAI;EAEtB,OAAO,CAACC,OAAO,GAAG,IAAI;EAEtB,OAAO,CAACC,SAAS,GAAG,IAAIC,oBAAoB,CAAC3E,WAAW,IAAI;IAC1DgB,qBAAqB,CAAChB,WAAW,CAAC;EACpC,CAAC,CAAC;EAEF5iC,WAAWA,CAACwnC,UAAU,EAAE1nC,IAAI,EAAEi4B,QAAQ,EAAE;IACtC,IAAI,CAACmP,aAAa,CAACO,QAAQ,EAAE;MAC3B,MAAM,IAAIjqC,KAAK,CAAC,4BAA4B,CAAC;IAC/C;IAEA,KAAK,CAACsC,IAAI,EAAEi4B,QAAQ,CAAC;IAErB,IAAI2P,MAAM;IACV,QAAQ3P,QAAQ;MACd,KAAK,CAAC;QACJ2P,MAAM,GAAG7D,QAAQ,CAACK,KAAK;QACvB,IAAI,CAAC,CAACiD,YAAY,GAAG,CAACzQ,GAAG,EAAEuB,SAAS,KAClC+K,gBAAgB,CAAC,IAAI,CAAC,CAACJ,WAAW,EAAElM,GAAG,CAACuB,SAAS,CAAC,GAAG,GAAG,CAAC;QAC3D;MACF,KAAK,CAAC;QACJyP,MAAM,GAAG7D,QAAQ,CAACE,IAAI;QACtB,IAAI,CAAC,CAACoD,YAAY,GAAG,CAACzQ,GAAG,EAAEuB,SAAS,KAClCgL,kBAAkB,CAChB,IAAI,CAAC,CAACL,WAAW,EACjBlM,GAAG,CAACuB,SAAS,CAAC,GAAG,GAAG,EACpBvB,GAAG,CAACuB,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,EACxBvB,GAAG,CAACuB,SAAS,GAAG,CAAC,CAAC,GAAG,GACvB,CAAC;QACH;MACF,KAAK,CAAC;QACJyP,MAAM,GAAG7D,QAAQ,CAACO,IAAI;QACtB,IAAI,CAAC,CAAC+C,YAAY,GAAG,CAACzQ,GAAG,EAAEuB,SAAS,KAClCoL,iBAAiB,CACf,IAAI,CAAC,CAACT,WAAW,EACjBlM,GAAG,CAACuB,SAAS,CAAC,GAAG,GAAG,EACpBvB,GAAG,CAACuB,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,EACxBvB,GAAG,CAACuB,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,EACxBvB,GAAG,CAACuB,SAAS,GAAG,CAAC,CAAC,GAAG,GACvB,CAAC;QACH;MACF;QACE,MAAM,IAAIz6B,KAAK,CAAC,qCAAqCu6B,QAAQ,EAAE,CAAC;IACpE;IACA,IAAI,CAAC,CAAC6K,WAAW,GAAGW,4BAA4B,CAC9CiE,UAAU,EACVE,MAAM,EACNrD,MAAM,CAACC,UACT,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,CAAC1B,WAAW,EAAE;MACtB,MAAM,IAAIplC,KAAK,CAAC,kCAAkC,CAAC;IACrD;IACA0pC,aAAa,CAAC,CAACI,SAAS,CAACK,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC/E,WAAW,CAAC;EAC5D;EAEAzK,UAAUA,CAACzB,GAAG,EAAEuB,SAAS,EAAE3rB,IAAI,EAAE8rB,UAAU,EAAE;IAC3CsJ,IAAI,CAACG,WAAW,GAAGv1B,IAAI,CAAC9K,QAAQ,CAAC42B,UAAU,EAAEA,UAAU,GAAG,CAAC,CAAC;IAC5D,IAAI,CAAC,CAAC+O,YAAY,CAACzQ,GAAG,EAAEuB,SAAS,CAAC;IAClCyJ,IAAI,CAACG,WAAW,GAAG,IAAI;EACzB;EAEAxJ,YAAYA,CAAC3B,GAAG,EAAEuB,SAAS,EAAEK,KAAK,EAAEhsB,IAAI,EAAE8rB,UAAU,EAAE9X,IAAI,EAAEyW,OAAO,EAAE;IACnEL,GAAG,GAAGA,GAAG,CAACl1B,QAAQ,CAACy2B,SAAS,EAAEA,SAAS,GAAGK,KAAK,GAAG,IAAI,CAACP,QAAQ,CAAC;IAChE,IAAIzX,IAAI,KAAK,CAAC,EAAE;MACd,MAAMyZ,KAAK,GAAG,GAAG,IAAI,CAAC,CAAC,IAAIzZ,IAAI,IAAI,CAAC,CAAC;MACrC,KAAK,IAAInf,CAAC,GAAG,CAAC,EAAE8I,EAAE,GAAGysB,GAAG,CAACr4B,MAAM,EAAE8C,CAAC,GAAG8I,EAAE,EAAE9I,CAAC,EAAE,EAAE;QAC5Cu1B,GAAG,CAACv1B,CAAC,CAAC,IAAI44B,KAAK;MACjB;IACF;IACA2H,IAAI,CAACE,aAAa,GAAG7K,OAAO,IAAIzqB,IAAI,CAAChK,MAAM,KAAKo0B,GAAG,CAACp0B,MAAM;IAC1Do/B,IAAI,CAACG,WAAW,GAAGv1B,IAAI,CAAC9K,QAAQ,CAC9B42B,UAAU,EACVA,UAAU,GAAGE,KAAK,IAAI,CAAC,GAAGvB,OAAO,CACnC,CAAC;IACD4L,kBAAkB,CAAC,IAAI,CAAC,CAACC,WAAW,EAAElM,GAAG,CAAC;IAC1CgL,IAAI,CAACE,aAAa,GAAG,KAAK;IAC1BF,IAAI,CAACG,WAAW,GAAG,IAAI;EACzB;EAEAtJ,eAAeA,CAACC,WAAW,EAAEzB,OAAO,EAAE;IACpC,OAASyB,WAAW,GAAG,IAAI,CAACT,QAAQ,IAAK,CAAC,GAAGhB,OAAO,CAAC,GAAI,CAAC;EAC5D;EAEA,OAAO6Q,UAAUA,CAAC;IAAER,OAAO;IAAES,cAAc;IAAER;EAAQ,CAAC,EAAE;IACtD,IAAI,CAACQ,cAAc,EAAE;MACnB,IAAI,CAAC,CAACT,OAAO,GAAG,KAAK;MACrB;IACF;IACA,IAAI,CAAC,CAACA,OAAO,GAAGA,OAAO;IACvB,IAAI,CAAC,CAACC,OAAO,GAAGA,OAAO;EACzB;EAEA,WAAWI,QAAQA,CAAA,EAAG;IACpB,IAAIA,QAAQ,GAAG,KAAK;IACpB,IAAI,IAAI,CAAC,CAACL,OAAO,EAAE;MACjB,IAAI,IAAI,CAAC,CAACC,OAAO,EAAE;QACjB,IAAI;UACF,IAAI,CAAC1F,OAAO,GAAGD,IAAI,CAACC,OAAO,GAAG0E,QAAQ,CAAC;YACrC1B,MAAM,EAAEiC,SAAS,CAAC,GAAG,IAAI,CAAC,CAACS,OAAO,cAAc;UAClD,CAAC,CAAC;UACFI,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC9F,OAAO;QAC3B,CAAC,CAAC,OAAOqD,CAAC,EAAE;UACV1nC,SAAI,CAAC,0BAA0B0nC,CAAC,IAAI,CAAC;QACvC;MACF,CAAC,MAAM;QACL1nC,SAAI,CAAC,gEAAgE,CAAC;MACxE;IACF;IAEA,OAAO2B,MAAM,CAAC,IAAI,EAAE,UAAU,EAAEwoC,QAAQ,CAAC;EAC3C;AACF;AAEA,MAAMK,cAAc,SAASZ,aAAa,CAAC;EACzC,OAAO,CAACa,MAAM;EAEd/nC,WAAWA,CAAA,EAAG;IACZ,MAAMwnC,UAAU,GAAG,IAAI3lC,UAAU,CAC/B+kC,SAAS,CAAC,GAAGkB,cAAc,CAAC,CAACC,MAAM,6BAA6B,CAClE,CAAC;IACD,KAAK,CAACP,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;EACpC;EAEA,OAAOI,UAAUA,CAAC;IAAEG;EAAO,CAAC,EAAE;IAC5B,IAAI,CAAC,CAACA,MAAM,GAAGA,MAAM;EACvB;EAEA,WAAWN,QAAQA,CAAA,EAAG;IACpB,IAAIA,QAAQ,GAAG,KAAK;IACpB,IAAIP,aAAa,CAACO,QAAQ,EAAE;MAC1B,IAAI,IAAI,CAAC,CAACM,MAAM,EAAE;QAChBN,QAAQ,GAAG,IAAI;MACjB,CAAC,MAAM;QACLnqC,SAAI,CAAC,gEAAgE,CAAC;MACxE;IACF;IAEA,OAAO2B,MAAM,CAAC,IAAI,EAAE,UAAU,EAAEwoC,QAAQ,CAAC;EAC3C;AACF;;;ACjKyB;AAC2C;AAClB;AACuB;AAClB;AAEvD,MAAMO,eAAe,CAAC;EACpB,OAAOtpC,KAAKA,CAAC;IACXupC,EAAE;IACFn5B,IAAI;IACJo5B,SAAS,GAAG,IAAI;IAChBC,kBAAkB;IAClBC,qBAAqB;IACrBC,oBAAoB;IACpBC,gBAAgB,GAAG;EACrB,CAAC,EAAE;IASD,MAAMtqC,OAAO,GAAG;MACd8Q,IAAI;MACJo5B,SAAS;MACTC,kBAAkB;MAClBC,qBAAqB;MACrBC;IACF,CAAC;IACD,IAAIE,MAAM,EAAEC,KAAK,EAAEC,QAAQ;IAG3B,IAAIR,EAAE,YAAYx4B,cAAG,EAAE;MACrB+4B,KAAK,GAAGP,EAAE;MAEV,MAAMS,QAAQ,GACZN,qBAAqB,CAACO,QAAQ,CAACH,KAAK,CAAC,IACrCH,oBAAoB,CAACM,QAAQ,CAACH,KAAK,CAAC;MACtC,IAAIE,QAAQ,EAAE;QACZ,OAAOA,QAAQ;MACjB;MACAT,EAAE,GAAGn5B,IAAI,CAACY,KAAK,CAACu4B,EAAE,CAAC;IACrB;IACA,IAAIA,EAAE,YAAYx5B,IAAI,EAAE;MACtB85B,MAAM,GAAGN,EAAE,CAACnoC,IAAI;MAEhB,MAAM4oC,QAAQ,GAAGL,oBAAoB,CAACO,SAAS,CAACL,MAAM,CAAC;MACvD,IAAIG,QAAQ,EAAE;QACZ,OAAOA,QAAQ;MACjB;IACF;IAEA,IAAI;MACFD,QAAQ,GAAG,IAAI,CAAC,CAAC/pC,KAAK,CAACupC,EAAE,EAAEjqC,OAAO,CAAC;IACrC,CAAC,CAAC,OAAOgM,EAAE,EAAE;MACX,IAAIs+B,gBAAgB,IAAI,EAAEt+B,EAAE,YAAY6K,oBAAoB,CAAC,EAAE;QAC7D,OAAOnH,OAAO,CAACm7B,MAAM,CAAC7+B,EAAE,CAAC;MAC3B;MACA,MAAMA,EAAE;IACV;IAGA,IAAIu+B,MAAM,IAAIC,KAAK,EAAE;MACnBH,oBAAoB,CAACl4B,GAAG,CAACo4B,MAAM,EAAEC,KAAK,EAAEC,QAAQ,CAAC;MAEjD,IAAID,KAAK,EAAE;QACTJ,qBAAqB,CAACj4B,GAAG,CAAc,IAAI,EAAEq4B,KAAK,EAAEC,QAAQ,CAAC;MAC/D;IACF;IACA,OAAOH,gBAAgB,GAAG56B,OAAO,CAACG,OAAO,CAAC46B,QAAQ,CAAC,GAAGA,QAAQ;EAChE;EAMA,OAAO,CAACK,QAAQC,CAACd,EAAE,EAAEjqC,OAAO,EAAE;IAC5B,MAAM;MAAEoqC;IAAsB,CAAC,GAAGpqC,OAAO;IACzC,IAAIwqC,KAAK;IAGT,IAAIP,EAAE,YAAYx4B,cAAG,EAAE;MACrB+4B,KAAK,GAAGP,EAAE;MAEV,MAAMS,QAAQ,GAAGN,qBAAqB,CAACO,QAAQ,CAACH,KAAK,CAAC;MACtD,IAAIE,QAAQ,EAAE;QACZ,OAAOA,QAAQ;MACjB;IACF;IACA,MAAMD,QAAQ,GAAG,IAAI,CAAC,CAAC/pC,KAAK,CAACupC,EAAE,EAAEjqC,OAAO,CAAC;IAGzC,IAAIwqC,KAAK,EAAE;MACTJ,qBAAqB,CAACj4B,GAAG,CAAc,IAAI,EAAEq4B,KAAK,EAAEC,QAAQ,CAAC;IAC/D;IACA,OAAOA,QAAQ;EACjB;EAEA,OAAO,CAAC/pC,KAAKsqC,CAACf,EAAE,EAAEjqC,OAAO,EAAE;IACzB,MAAM;MAAE8Q,IAAI;MAAEo5B,SAAS;MAAEC,kBAAkB;MAAEC;IAAsB,CAAC,GAClEpqC,OAAO;IAETiqC,EAAE,GAAGn5B,IAAI,CAACm6B,UAAU,CAAChB,EAAE,CAAC;IACxB,IAAIA,EAAE,YAAYx5B,IAAI,EAAE;MACtB,QAAQw5B,EAAE,CAACnoC,IAAI;QACb,KAAK,GAAG;QACR,KAAK,YAAY;UACf,OAAO,IAAI,CAACopC,IAAI;QAClB,KAAK,KAAK;QACV,KAAK,WAAW;UACd,OAAO,IAAI,CAAChR,GAAG;QACjB,KAAK,YAAY;UACf,OAAO,IAAI,CAACiR,IAAI;QAClB,KAAK,MAAM;QACX,KAAK,YAAY;UACf,OAAO,IAAI,CAACC,IAAI;QAClB,KAAK,SAAS;UACZ,OAAO,IAAIhP,SAAS,CAAgB,IAAI,CAAC;QAC3C;UACE,IAAI8N,SAAS,YAAYr5B,eAAI,EAAE;YAC7B,MAAMw6B,WAAW,GAAGnB,SAAS,CAACt8B,GAAG,CAAC,YAAY,CAAC;YAC/C,IAAIy9B,WAAW,YAAYx6B,eAAI,EAAE;cAC/B,MAAMy6B,WAAW,GAAGD,WAAW,CAACz9B,GAAG,CAACq8B,EAAE,CAACnoC,IAAI,CAAC;cAC5C,IAAIwpC,WAAW,EAAE;gBACf,IAAIA,WAAW,YAAY76B,IAAI,EAAE;kBAC/B,OAAO,IAAI,CAAC,CAAC/P,KAAK,CAAC4qC,WAAW,EAAEtrC,OAAO,CAAC;gBAC1C;gBACAiqC,EAAE,GAAGqB,WAAW;gBAChB;cACF;YACF;UACF;UAEAhsC,SAAI,CAAC,4BAA4B2qC,EAAE,CAACnoC,IAAI,EAAE,CAAC;UAC3C,OAAO,IAAI,CAACopC,IAAI;MACpB;IACF;IACA,IAAItlC,KAAK,CAAC2I,OAAO,CAAC07B,EAAE,CAAC,EAAE;MACrB,MAAMsB,IAAI,GAAGz6B,IAAI,CAACm6B,UAAU,CAAChB,EAAE,CAAC,CAAC,CAAC,CAAC,CAACnoC,IAAI;MACxC,IAAIu2B,MAAM,EAAE0B,QAAQ,EAAEsC,MAAM,EAAEc,UAAU,EAAEC,UAAU,EAAEC,KAAK;MAE3D,QAAQkO,IAAI;QACV,KAAK,GAAG;QACR,KAAK,YAAY;UACf,OAAO,IAAI,CAACL,IAAI;QAClB,KAAK,KAAK;QACV,KAAK,WAAW;UACd,OAAO,IAAI,CAAChR,GAAG;QACjB,KAAK,MAAM;QACX,KAAK,YAAY;UACf,OAAO,IAAI,CAACkR,IAAI;QAClB,KAAK,SAAS;UACZ/S,MAAM,GAAGvnB,IAAI,CAACm6B,UAAU,CAAChB,EAAE,CAAC,CAAC,CAAC,CAAC;UAC/B9M,UAAU,GAAG9E,MAAM,CAACxmB,QAAQ,CAAC,YAAY,CAAC;UAC1CurB,UAAU,GAAG/E,MAAM,CAACxmB,QAAQ,CAAC,YAAY,CAAC;UAC1CwrB,KAAK,GAAGhF,MAAM,CAACzqB,GAAG,CAAC,OAAO,CAAC;UAC3B,OAAO,IAAIsvB,SAAS,CAACC,UAAU,EAAEC,UAAU,EAAEC,KAAK,CAAC;QACrD,KAAK,QAAQ;UACXhF,MAAM,GAAGvnB,IAAI,CAACm6B,UAAU,CAAChB,EAAE,CAAC,CAAC,CAAC,CAAC;UAC/B9M,UAAU,GAAG9E,MAAM,CAACxmB,QAAQ,CAAC,YAAY,CAAC;UAC1CurB,UAAU,GAAG/E,MAAM,CAACxmB,QAAQ,CAAC,YAAY,CAAC;UAC1CwrB,KAAK,GAAGhF,MAAM,CAACxmB,QAAQ,CAAC,OAAO,CAAC;UAChC,MAAM7I,MAAM,GAAGqvB,MAAM,CAACxmB,QAAQ,CAAC,QAAQ,CAAC;UACxC,OAAO,IAAIosB,QAAQ,CAACd,UAAU,EAAEC,UAAU,EAAEC,KAAK,EAAEr0B,MAAM,CAAC;QAC5D,KAAK,UAAU;UACb,MAAMwiC,KAAK,GAAGvB,EAAE,CAAC,CAAC,CAAC,YAAYx4B,cAAG;UAClC,IAAI+5B,KAAK,EAAE;YACT,MAAMd,QAAQ,GAAGN,qBAAqB,CAACO,QAAQ,CAACV,EAAE,CAAC,CAAC,CAAC,CAAC;YACtD,IAAIS,QAAQ,EAAE;cACZ,OAAOA,QAAQ;YACjB;UACF;UAEA,MAAMe,MAAM,GAAG36B,IAAI,CAACm6B,UAAU,CAAChB,EAAE,CAAC,CAAC,CAAC,CAAC;UACrC,MAAMp3B,IAAI,GAAG44B,MAAM,CAAC54B,IAAI;UACxBknB,QAAQ,GAAGlnB,IAAI,CAACjF,GAAG,CAAC,GAAG,CAAC;UAExB,IAAIs7B,aAAa,CAACO,QAAQ,EAAE;YAC1B,IAAI;cACF,MAAMiC,KAAK,GAAG,IAAIxC,aAAa,CAC7BuC,MAAM,CAAC52B,QAAQ,CAAC,CAAC,EACjB,UAAU,EACVklB,QACF,CAAC;cACD,IAAIyR,KAAK,EAAE;gBACTpB,qBAAqB,CAACj4B,GAAG,CAAc,IAAI,EAAE83B,EAAE,CAAC,CAAC,CAAC,EAAEyB,KAAK,CAAC;cAC5D;cACA,OAAOA,KAAK;YACd,CAAC,CAAC,OAAO1/B,EAAE,EAAE;cACX,IAAIA,EAAE,YAAY6K,oBAAoB,EAAE;gBACtC,MAAM7K,EAAE;cACV;cACA1M,SAAI,CAAC,yBAAyB2qC,EAAE,CAAC,CAAC,CAAC,OAAOj+B,EAAE,IAAI,CAAC;YACnD;UACF;UAEA,MAAM2/B,MAAM,GAAG94B,IAAI,CAACf,MAAM,CAAC,WAAW,CAAC;UACvC,IAAI65B,MAAM,EAAE;YACV,MAAMC,KAAK,GAAG,IAAI,CAAC,CAACd,QAAQ,CAACa,MAAM,EAAE3rC,OAAO,CAAC;YAG7C,IAAI4rC,KAAK,CAAC7R,QAAQ,KAAKA,QAAQ,EAAE;cAC/B,OAAO6R,KAAK;YACd;YACAtsC,SAAI,CAAC,4DAA4D,CAAC;UACpE;UACA,IAAIy6B,QAAQ,KAAK,CAAC,EAAE;YAClB,OAAO,IAAI,CAACmR,IAAI;UAClB,CAAC,MAAM,IAAInR,QAAQ,KAAK,CAAC,EAAE;YACzB,OAAO,IAAI,CAACG,GAAG;UACjB,CAAC,MAAM,IAAIH,QAAQ,KAAK,CAAC,EAAE;YACzB,OAAO,IAAI,CAACqR,IAAI;UAClB;UACA;QACF,KAAK,SAAS;UACZ/O,MAAM,GAAG4N,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI;UACtB,IAAI5N,MAAM,EAAE;YACVA,MAAM,GAAG,IAAI,CAAC,CAACyO,QAAQ,CAACzO,MAAM,EAAEr8B,OAAO,CAAC;UAC1C;UACA,OAAO,IAAIo8B,SAAS,CAACC,MAAM,CAAC;QAC9B,KAAK,GAAG;QACR,KAAK,SAAS;UACZA,MAAM,GAAG,IAAI,CAAC,CAACyO,QAAQ,CAACb,EAAE,CAAC,CAAC,CAAC,EAAEjqC,OAAO,CAAC;UACvC,MAAM6rC,KAAK,GAAG/8B,SAAS,CAACgC,IAAI,CAACm6B,UAAU,CAAChB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;UACvD,MAAMrzB,MAAM,GAAG9F,IAAI,CAACm6B,UAAU,CAAChB,EAAE,CAAC,CAAC,CAAC,CAAC;UACrC,OAAO,IAAI3N,SAAS,CAACD,MAAM,EAAEwP,KAAK,EAAEj1B,MAAM,CAAC;QAC7C,KAAK,YAAY;QACjB,KAAK,SAAS;UACZ,MAAM9U,IAAI,GAAGgP,IAAI,CAACm6B,UAAU,CAAChB,EAAE,CAAC,CAAC,CAAC,CAAC;UACnClQ,QAAQ,GAAGn0B,KAAK,CAAC2I,OAAO,CAACzM,IAAI,CAAC,GAAGA,IAAI,CAACzB,MAAM,GAAG,CAAC;UAChDg8B,MAAM,GAAG,IAAI,CAAC,CAACyO,QAAQ,CAACb,EAAE,CAAC,CAAC,CAAC,EAAEjqC,OAAO,CAAC;UACvC,MAAM47B,MAAM,GAAGuO,kBAAkB,CAAC95B,MAAM,CAAC45B,EAAE,CAAC,CAAC,CAAC,CAAC;UAC/C,OAAO,IAAIvO,WAAW,CAAC3B,QAAQ,EAAEsC,MAAM,EAAET,MAAM,CAAC;QAClD,KAAK,KAAK;UACRvD,MAAM,GAAGvnB,IAAI,CAACm6B,UAAU,CAAChB,EAAE,CAAC,CAAC,CAAC,CAAC;UAC/B9M,UAAU,GAAG9E,MAAM,CAACxmB,QAAQ,CAAC,YAAY,CAAC;UAC1CurB,UAAU,GAAG/E,MAAM,CAACxmB,QAAQ,CAAC,YAAY,CAAC;UAC1C,MAAM4wB,KAAK,GAAGpK,MAAM,CAACxmB,QAAQ,CAAC,OAAO,CAAC;UACtC,OAAO,IAAI2wB,KAAK,CAACrF,UAAU,EAAEC,UAAU,EAAEqF,KAAK,CAAC;QACjD;UAEEnjC,SAAI,CAAC,oCAAoCisC,IAAI,EAAE,CAAC;UAChD,OAAO,IAAI,CAACL,IAAI;MACpB;IACF;IAEA5rC,SAAI,CAAC,mCAAmC2qC,EAAE,EAAE,CAAC;IAC7C,OAAO,IAAI,CAACiB,IAAI;EAClB;EAEA,WAAWA,IAAIA,CAAA,EAAG;IAChB,OAAOjqC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAIy7B,YAAY,CAAC,CAAC,CAAC;EACjD;EAEA,WAAWxC,GAAGA,CAAA,EAAG;IACf,OAAOj5B,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI07B,WAAW,CAAC,CAAC,CAAC;EAC/C;EAEA,WAAWwO,IAAIA,CAAA,EAAG;IAChB,OAAOlqC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI27B,YAAY,CAAC,CAAC,CAAC;EACjD;EAEA,WAAWwO,IAAIA,CAAA,EAAG;IAChB,IAAItB,cAAc,CAACL,QAAQ,EAAE;MAC3B,IAAI;QACF,OAAOxoC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI6oC,cAAc,CAAC,CAAC,CAAC;MACnD,CAAC,CAAC,MAAM;QACNxqC,SAAI,CAAC,2BAA2B,CAAC;MACnC;IACF;IACA,OAAO2B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI67B,YAAY,CAAC,CAAC,CAAC;EACjD;AACF;;;AC7RmD;AAEnD,SAASgP,aAAaA,CAACzT,MAAM,EAAE;EAC7B,QAAQA,MAAM,CAAC0T,IAAI;IACjB,KAAK74C,SAAS,CAACC,cAAc;MAC3B,OAAO64C,0BAA0B,CAAC3T,MAAM,CAAC;IAC3C,KAAKnlC,SAAS,CAACE,SAAS;MACtB,OAAO64C,gBAAgB,CAAC5T,MAAM,CAAC;EACnC;EAEA,OAAO,IAAI;AACb;AAEA,SAAS2T,0BAA0BA,CAAC;EAClCtT,GAAG;EACHwT,MAAM,GAAG,CAAC;EACV59B,IAAI;EACJ2P,KAAK;EACLC,MAAM;EACNiuB,aAAa,GAAG,UAAU;EAC1BC,aAAa,GAAG;AAClB,CAAC,EAAE;EACD,MAAM/qB,KAAK,GAAG5c,WAAW,CAACP,cAAc,GAAG,UAAU,GAAG,UAAU;EAClE,MAAM,CAACmoC,WAAW,EAAEC,UAAU,CAAC,GAAGF,aAAa,GAC3C,CAACD,aAAa,EAAE9qB,KAAK,CAAC,GACtB,CAACA,KAAK,EAAE8qB,aAAa,CAAC;EAC1B,MAAMI,aAAa,GAAGtuB,KAAK,IAAI,CAAC;EAChC,MAAMuuB,cAAc,GAAGvuB,KAAK,GAAG,CAAC;EAChC,MAAMwuB,SAAS,GAAG/T,GAAG,CAACr4B,MAAM;EAC5BiO,IAAI,GAAG,IAAIjK,WAAW,CAACiK,IAAI,CAAChK,MAAM,CAAC;EACnC,IAAIi3B,OAAO,GAAG,CAAC;EAEf,KAAK,IAAIp4B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+a,MAAM,EAAE/a,CAAC,EAAE,EAAE;IAC/B,KAAK,MAAM0F,GAAG,GAAGqjC,MAAM,GAAGK,aAAa,EAAEL,MAAM,GAAGrjC,GAAG,EAAEqjC,MAAM,EAAE,EAAE;MAC/D,MAAMQ,IAAI,GAAGR,MAAM,GAAGO,SAAS,GAAG/T,GAAG,CAACwT,MAAM,CAAC,GAAG,GAAG;MACnD59B,IAAI,CAACitB,OAAO,EAAE,CAAC,GAAGmR,IAAI,GAAG,UAAU,GAAGJ,UAAU,GAAGD,WAAW;MAC9D/9B,IAAI,CAACitB,OAAO,EAAE,CAAC,GAAGmR,IAAI,GAAG,SAAS,GAAGJ,UAAU,GAAGD,WAAW;MAC7D/9B,IAAI,CAACitB,OAAO,EAAE,CAAC,GAAGmR,IAAI,GAAG,QAAQ,GAAGJ,UAAU,GAAGD,WAAW;MAC5D/9B,IAAI,CAACitB,OAAO,EAAE,CAAC,GAAGmR,IAAI,GAAG,OAAO,GAAGJ,UAAU,GAAGD,WAAW;MAC3D/9B,IAAI,CAACitB,OAAO,EAAE,CAAC,GAAGmR,IAAI,GAAG,MAAM,GAAGJ,UAAU,GAAGD,WAAW;MAC1D/9B,IAAI,CAACitB,OAAO,EAAE,CAAC,GAAGmR,IAAI,GAAG,KAAK,GAAGJ,UAAU,GAAGD,WAAW;MACzD/9B,IAAI,CAACitB,OAAO,EAAE,CAAC,GAAGmR,IAAI,GAAG,IAAI,GAAGJ,UAAU,GAAGD,WAAW;MACxD/9B,IAAI,CAACitB,OAAO,EAAE,CAAC,GAAGmR,IAAI,GAAG,GAAG,GAAGJ,UAAU,GAAGD,WAAW;IACzD;IACA,IAAIG,cAAc,KAAK,CAAC,EAAE;MACxB;IACF;IACA,MAAME,IAAI,GAAGR,MAAM,GAAGO,SAAS,GAAG/T,GAAG,CAACwT,MAAM,EAAE,CAAC,GAAG,GAAG;IACrD,KAAK,IAAIlnB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwnB,cAAc,EAAExnB,CAAC,EAAE,EAAE;MACvC1W,IAAI,CAACitB,OAAO,EAAE,CAAC,GAAGmR,IAAI,GAAI,CAAC,IAAK,CAAC,GAAG1nB,CAAG,GAAGsnB,UAAU,GAAGD,WAAW;IACpE;EACF;EACA,OAAO;IAAEH,MAAM;IAAE3Q;EAAQ,CAAC;AAC5B;AAEA,SAAS0Q,gBAAgBA,CAAC;EACxBvT,GAAG;EACHwT,MAAM,GAAG,CAAC;EACV59B,IAAI;EACJitB,OAAO,GAAG,CAAC;EACXtd,KAAK;EACLC;AACF,CAAC,EAAE;EACD,IAAI/a,CAAC,GAAG,CAAC;EACT,MAAM+V,GAAG,GAAG+E,KAAK,GAAGC,MAAM,GAAG,CAAC;EAC9B,MAAMyuB,KAAK,GAAGzzB,GAAG,IAAI,CAAC;EACtB,MAAMwgB,KAAK,GAAG,IAAIr1B,WAAW,CAACq0B,GAAG,CAACp0B,MAAM,EAAE4nC,MAAM,EAAES,KAAK,CAAC;EAExD,IAAIloC,WAAW,CAACP,cAAc,EAAE;IAG9B,OAAOf,CAAC,GAAGwpC,KAAK,GAAG,CAAC,EAAExpC,CAAC,IAAI,CAAC,EAAEo4B,OAAO,IAAI,CAAC,EAAE;MAC1C,MAAMqR,EAAE,GAAGlT,KAAK,CAACv2B,CAAC,CAAC;MACnB,MAAM4pB,EAAE,GAAG2M,KAAK,CAACv2B,CAAC,GAAG,CAAC,CAAC;MACvB,MAAM0pC,EAAE,GAAGnT,KAAK,CAACv2B,CAAC,GAAG,CAAC,CAAC;MAEvBmL,IAAI,CAACitB,OAAO,CAAC,GAAGqR,EAAE,GAAG,UAAU;MAC/Bt+B,IAAI,CAACitB,OAAO,GAAG,CAAC,CAAC,GAAIqR,EAAE,KAAK,EAAE,GAAK7f,EAAE,IAAI,CAAE,GAAG,UAAU;MACxDze,IAAI,CAACitB,OAAO,GAAG,CAAC,CAAC,GAAIxO,EAAE,KAAK,EAAE,GAAK8f,EAAE,IAAI,EAAG,GAAG,UAAU;MACzDv+B,IAAI,CAACitB,OAAO,GAAG,CAAC,CAAC,GAAIsR,EAAE,KAAK,CAAC,GAAI,UAAU;IAC7C;IAEA,KAAK,IAAI7nB,CAAC,GAAG7hB,CAAC,GAAG,CAAC,EAAE2pC,EAAE,GAAGZ,MAAM,GAAGhzB,GAAG,EAAE8L,CAAC,GAAG8nB,EAAE,EAAE9nB,CAAC,IAAI,CAAC,EAAE;MACrD1W,IAAI,CAACitB,OAAO,EAAE,CAAC,GACb7C,GAAG,CAAC1T,CAAC,CAAC,GAAI0T,GAAG,CAAC1T,CAAC,GAAG,CAAC,CAAC,IAAI,CAAE,GAAI0T,GAAG,CAAC1T,CAAC,GAAG,CAAC,CAAC,IAAI,EAAG,GAAG,UAAU;IAChE;EACF,CAAC,MAAM;IACL,OAAO7hB,CAAC,GAAGwpC,KAAK,GAAG,CAAC,EAAExpC,CAAC,IAAI,CAAC,EAAEo4B,OAAO,IAAI,CAAC,EAAE;MAC1C,MAAMqR,EAAE,GAAGlT,KAAK,CAACv2B,CAAC,CAAC;MACnB,MAAM4pB,EAAE,GAAG2M,KAAK,CAACv2B,CAAC,GAAG,CAAC,CAAC;MACvB,MAAM0pC,EAAE,GAAGnT,KAAK,CAACv2B,CAAC,GAAG,CAAC,CAAC;MAEvBmL,IAAI,CAACitB,OAAO,CAAC,GAAGqR,EAAE,GAAG,IAAI;MACzBt+B,IAAI,CAACitB,OAAO,GAAG,CAAC,CAAC,GAAIqR,EAAE,IAAI,EAAE,GAAK7f,EAAE,KAAK,CAAE,GAAG,IAAI;MAClDze,IAAI,CAACitB,OAAO,GAAG,CAAC,CAAC,GAAIxO,EAAE,IAAI,EAAE,GAAK8f,EAAE,KAAK,EAAG,GAAG,IAAI;MACnDv+B,IAAI,CAACitB,OAAO,GAAG,CAAC,CAAC,GAAIsR,EAAE,IAAI,CAAC,GAAI,IAAI;IACtC;IAEA,KAAK,IAAI7nB,CAAC,GAAG7hB,CAAC,GAAG,CAAC,EAAE2pC,EAAE,GAAGZ,MAAM,GAAGhzB,GAAG,EAAE8L,CAAC,GAAG8nB,EAAE,EAAE9nB,CAAC,IAAI,CAAC,EAAE;MACrD1W,IAAI,CAACitB,OAAO,EAAE,CAAC,GACZ7C,GAAG,CAAC1T,CAAC,CAAC,IAAI,EAAE,GAAK0T,GAAG,CAAC1T,CAAC,GAAG,CAAC,CAAC,IAAI,EAAG,GAAI0T,GAAG,CAAC1T,CAAC,GAAG,CAAC,CAAC,IAAI,CAAE,GAAG,IAAI;IAClE;EACF;EAEA,OAAO;IAAEknB,MAAM,EAAEA,MAAM,GAAGhzB,GAAG;IAAEqiB;EAAQ,CAAC;AAC1C;AAEA,SAASwR,UAAUA,CAACrU,GAAG,EAAEpqB,IAAI,EAAE;EAC7B,IAAI7J,gBAAW,CAACP,cAAc,EAAE;IAC9B,KAAK,IAAIf,CAAC,GAAG,CAAC,EAAE8I,EAAE,GAAGysB,GAAG,CAACr4B,MAAM,EAAE8C,CAAC,GAAG8I,EAAE,EAAE9I,CAAC,EAAE,EAAE;MAC5CmL,IAAI,CAACnL,CAAC,CAAC,GAAIu1B,GAAG,CAACv1B,CAAC,CAAC,GAAG,OAAO,GAAI,UAAU;IAC3C;EACF,CAAC,MAAM;IACL,KAAK,IAAIA,CAAC,GAAG,CAAC,EAAE8I,EAAE,GAAGysB,GAAG,CAACr4B,MAAM,EAAE8C,CAAC,GAAG8I,EAAE,EAAE9I,CAAC,EAAE,EAAE;MAC5CmL,IAAI,CAACnL,CAAC,CAAC,GAAIu1B,GAAG,CAACv1B,CAAC,CAAC,GAAG,SAAS,GAAI,UAAU;IAC7C;EACF;AACF;;;ACrHgE;AACR;AACT;AACO;AACT;AAE7C,MAAM6pC,SAAS,SAASrrC,aAAa,CAAC;EACpCK,WAAWA,CAAC7C,GAAG,EAAE;IACf,KAAK,CAACA,GAAG,EAAE,WAAW,CAAC;EACzB;AACF;AAEA,MAAM8tC,cAAc,SAAStrC,aAAa,CAAC;EACzCK,WAAWA,CAACH,OAAO,EAAEqrC,SAAS,EAAE;IAC9B,KAAK,CAACrrC,OAAO,EAAE,gBAAgB,CAAC;IAChC,IAAI,CAACqrC,SAAS,GAAGA,SAAS;EAC5B;AACF;AAEA,MAAMC,cAAc,SAASxrC,aAAa,CAAC;EACzCK,WAAWA,CAAC7C,GAAG,EAAE;IACf,KAAK,CAACA,GAAG,EAAE,gBAAgB,CAAC;EAC9B;AACF;AAgBA,MAAMiuC,SAAS,GAAG,IAAIvpC,UAAU,CAAC,CAC9B,CAAC,EACD,CAAC,EAAG,CAAC,EACN,EAAE,EAAG,CAAC,EAAG,CAAC,EACT,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACd,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACtB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAG,CAAC,EACzB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACtB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAClB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACd,EAAE,EAAE,EAAE,EAAE,EAAE,EACV,EAAE,EAAE,EAAE,EACN,EAAE,CACH,CAAC;AAEF,MAAMwpC,OAAO,GAAG,IAAI;AACpB,MAAMC,OAAO,GAAG,GAAG;AACnB,MAAMC,OAAO,GAAG,IAAI;AACpB,MAAMC,OAAO,GAAG,IAAI;AACpB,MAAMC,OAAO,GAAG,IAAI;AACpB,MAAMC,OAAO,GAAG,IAAI;AACpB,MAAMC,QAAQ,GAAG,IAAI;AACrB,MAAMC,UAAU,GAAG,IAAI;AAEvB,SAASC,iBAAiBA,CAACC,WAAW,EAAE57B,MAAM,EAAE;EAC9C,IAAIuU,CAAC,GAAG,CAAC;IACPtjB,CAAC;IACD6hB,CAAC;IACD3kB,MAAM,GAAG,EAAE;EACb,OAAOA,MAAM,GAAG,CAAC,IAAI,CAACytC,WAAW,CAACztC,MAAM,GAAG,CAAC,CAAC,EAAE;IAC7CA,MAAM,EAAE;EACV;EACA,MAAM6B,IAAI,GAAG,CAAC;IAAE6zB,QAAQ,EAAE,EAAE;IAAE4B,KAAK,EAAE;EAAE,CAAC,CAAC;EACzC,IAAI/wB,CAAC,GAAG1E,IAAI,CAAC,CAAC,CAAC;IACbwxB,CAAC;EACH,KAAKvwB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG9C,MAAM,EAAE8C,CAAC,EAAE,EAAE;IAC3B,KAAK6hB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG8oB,WAAW,CAAC3qC,CAAC,CAAC,EAAE6hB,CAAC,EAAE,EAAE;MACnCpe,CAAC,GAAG1E,IAAI,CAAC6rC,GAAG,CAAC,CAAC;MACdnnC,CAAC,CAACmvB,QAAQ,CAACnvB,CAAC,CAAC+wB,KAAK,CAAC,GAAGzlB,MAAM,CAACuU,CAAC,CAAC;MAC/B,OAAO7f,CAAC,CAAC+wB,KAAK,GAAG,CAAC,EAAE;QAClB/wB,CAAC,GAAG1E,IAAI,CAAC6rC,GAAG,CAAC,CAAC;MAChB;MACAnnC,CAAC,CAAC+wB,KAAK,EAAE;MACTz1B,IAAI,CAACuB,IAAI,CAACmD,CAAC,CAAC;MACZ,OAAO1E,IAAI,CAAC7B,MAAM,IAAI8C,CAAC,EAAE;QACvBjB,IAAI,CAACuB,IAAI,CAAEiwB,CAAC,GAAG;UAAEqC,QAAQ,EAAE,EAAE;UAAE4B,KAAK,EAAE;QAAE,CAAE,CAAC;QAC3C/wB,CAAC,CAACmvB,QAAQ,CAACnvB,CAAC,CAAC+wB,KAAK,CAAC,GAAGjE,CAAC,CAACqC,QAAQ;QAChCnvB,CAAC,GAAG8sB,CAAC;MACP;MACAjN,CAAC,EAAE;IACL;IACA,IAAItjB,CAAC,GAAG,CAAC,GAAG9C,MAAM,EAAE;MAElB6B,IAAI,CAACuB,IAAI,CAAEiwB,CAAC,GAAG;QAAEqC,QAAQ,EAAE,EAAE;QAAE4B,KAAK,EAAE;MAAE,CAAE,CAAC;MAC3C/wB,CAAC,CAACmvB,QAAQ,CAACnvB,CAAC,CAAC+wB,KAAK,CAAC,GAAGjE,CAAC,CAACqC,QAAQ;MAChCnvB,CAAC,GAAG8sB,CAAC;IACP;EACF;EACA,OAAOxxB,IAAI,CAAC,CAAC,CAAC,CAAC6zB,QAAQ;AACzB;AAEA,SAASiY,oBAAoBA,CAAC/zB,SAAS,EAAEyH,GAAG,EAAEusB,GAAG,EAAE;EACjD,OAAO,EAAE,IAAI,CAACh0B,SAAS,CAACi0B,aAAa,GAAG,CAAC,IAAIxsB,GAAG,GAAGusB,GAAG,CAAC;AACzD;AAEA,SAASE,UAAUA,CACjB/2B,IAAI,EACJuB,MAAM,EACNy1B,KAAK,EACLC,UAAU,EACVC,aAAa,EACbC,aAAa,EACbC,WAAW,EACXC,cAAc,EACdC,UAAU,EACVC,cAAc,GAAG,KAAK,EACtB;EACA,MAAMC,WAAW,GAAGR,KAAK,CAACQ,WAAW;EACrC,MAAMC,WAAW,GAAGT,KAAK,CAACS,WAAW;EAErC,MAAMC,WAAW,GAAGn2B,MAAM;EAC1B,IAAIo2B,QAAQ,GAAG,CAAC;IACdC,SAAS,GAAG,CAAC;EAEf,SAAShwB,OAAOA,CAAA,EAAG;IACjB,IAAIgwB,SAAS,GAAG,CAAC,EAAE;MACjBA,SAAS,EAAE;MACX,OAAQD,QAAQ,IAAIC,SAAS,GAAI,CAAC;IACpC;IACAD,QAAQ,GAAG33B,IAAI,CAACuB,MAAM,EAAE,CAAC;IACzB,IAAIo2B,QAAQ,KAAK,IAAI,EAAE;MACrB,MAAME,QAAQ,GAAG73B,IAAI,CAACuB,MAAM,EAAE,CAAC;MAC/B,IAAIs2B,QAAQ,EAAE;QACZ,IAAIA,QAAQ,KAAiB,IAAI,IAAIN,cAAc,EAAE;UACnDh2B,MAAM,IAAI,CAAC;UAEX,MAAMu0B,SAAS,GAAGr0B,UAAU,CAACzB,IAAI,EAAEuB,MAAM,CAAC;UAC1CA,MAAM,IAAI,CAAC;UACX,IAAIu0B,SAAS,GAAG,CAAC,IAAIA,SAAS,KAAKkB,KAAK,CAAClB,SAAS,EAAE;YAClD,MAAM,IAAID,cAAc,CACtB,mDAAmD,EACnDC,SACF,CAAC;UACH;QACF,CAAC,MAAM,IAAI+B,QAAQ,KAAiB,IAAI,EAAE;UACxC,IAAIN,cAAc,EAAE;YAElB,MAAMO,cAAc,GAAGC,QAAQ,IAAIf,KAAK,CAACgB,SAAS,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAMjE,IACEF,cAAc,GAAG,CAAC,IAClB7rC,IAAI,CAAC8Z,KAAK,CAACixB,KAAK,CAAClB,SAAS,GAAGgC,cAAc,CAAC,IAAI,CAAC,EACjD;cACA,MAAM,IAAIjC,cAAc,CACtB,qDAAqD,GACnD,oDAAoD,EACtDiC,cACF,CAAC;YACH;UACF;UACA,MAAM,IAAI/B,cAAc,CACtB,mDACF,CAAC;QACH;QACA,MAAM,IAAIH,SAAS,CACjB,qBAAqB,CAAE+B,QAAQ,IAAI,CAAC,GAAIE,QAAQ,EAAElpC,QAAQ,CAAC,EAAE,CAAC,EAChE,CAAC;MACH;IAEF;IACAipC,SAAS,GAAG,CAAC;IACb,OAAOD,QAAQ,KAAK,CAAC;EACvB;EAEA,SAASM,aAAaA,CAACC,IAAI,EAAE;IAC3B,IAAIpZ,IAAI,GAAGoZ,IAAI;IACf,OAAO,IAAI,EAAE;MACXpZ,IAAI,GAAGA,IAAI,CAAClX,OAAO,CAAC,CAAC,CAAC;MACtB,QAAQ,OAAOkX,IAAI;QACjB,KAAK,QAAQ;UACX,OAAOA,IAAI;QACb,KAAK,QAAQ;UACX;MACJ;MACA,MAAM,IAAI8W,SAAS,CAAC,0BAA0B,CAAC;IACjD;EACF;EAEA,SAASuC,OAAOA,CAAClvC,MAAM,EAAE;IACvB,IAAIyF,CAAC,GAAG,CAAC;IACT,OAAOzF,MAAM,GAAG,CAAC,EAAE;MACjByF,CAAC,GAAIA,CAAC,IAAI,CAAC,GAAIkZ,OAAO,CAAC,CAAC;MACxB3e,MAAM,EAAE;IACV;IACA,OAAOyF,CAAC;EACV;EAEA,SAAS0pC,gBAAgBA,CAACnvC,MAAM,EAAE;IAChC,IAAIA,MAAM,KAAK,CAAC,EAAE;MAChB,OAAO2e,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC;IACA,MAAMlZ,CAAC,GAAGypC,OAAO,CAAClvC,MAAM,CAAC;IACzB,IAAIyF,CAAC,IAAI,CAAC,IAAKzF,MAAM,GAAG,CAAE,EAAE;MAC1B,OAAOyF,CAAC;IACV;IACA,OAAOA,CAAC,IAAI,CAAC,CAAC,IAAIzF,MAAM,CAAC,GAAG,CAAC;EAC/B;EAEA,SAASovC,cAAcA,CAACx1B,SAAS,EAAEy1B,WAAW,EAAE;IAC9C,MAAM7kC,CAAC,GAAGwkC,aAAa,CAACp1B,SAAS,CAAC01B,cAAc,CAAC;IACjD,MAAMC,IAAI,GAAG/kC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG2kC,gBAAgB,CAAC3kC,CAAC,CAAC;IAC9CoP,SAAS,CAAC41B,SAAS,CAACH,WAAW,CAAC,GAAGz1B,SAAS,CAAC61B,IAAI,IAAIF,IAAI;IACzD,IAAInpB,CAAC,GAAG,CAAC;IACT,OAAOA,CAAC,GAAG,EAAE,EAAE;MACb,MAAMspB,EAAE,GAAGV,aAAa,CAACp1B,SAAS,CAAC+1B,cAAc,CAAC;MAClD,MAAMC,CAAC,GAAGF,EAAE,GAAG,EAAE;QACf5pC,CAAC,GAAG4pC,EAAE,IAAI,CAAC;MACb,IAAIE,CAAC,KAAK,CAAC,EAAE;QACX,IAAI9pC,CAAC,GAAG,EAAE,EAAE;UACV;QACF;QACAsgB,CAAC,IAAI,EAAE;QACP;MACF;MACAA,CAAC,IAAItgB,CAAC;MACN,MAAM+pC,CAAC,GAAG9C,SAAS,CAAC3mB,CAAC,CAAC;MACtBxM,SAAS,CAAC41B,SAAS,CAACH,WAAW,GAAGQ,CAAC,CAAC,GAAGV,gBAAgB,CAACS,CAAC,CAAC;MAC1DxpB,CAAC,EAAE;IACL;EACF;EAEA,SAAS0pB,aAAaA,CAACl2B,SAAS,EAAEy1B,WAAW,EAAE;IAC7C,MAAM7kC,CAAC,GAAGwkC,aAAa,CAACp1B,SAAS,CAAC01B,cAAc,CAAC;IACjD,MAAMC,IAAI,GAAG/kC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG2kC,gBAAgB,CAAC3kC,CAAC,CAAC,IAAI6jC,UAAU;IAC5Dz0B,SAAS,CAAC41B,SAAS,CAACH,WAAW,CAAC,GAAGz1B,SAAS,CAAC61B,IAAI,IAAIF,IAAI;EAC3D;EAEA,SAASQ,kBAAkBA,CAACn2B,SAAS,EAAEy1B,WAAW,EAAE;IAClDz1B,SAAS,CAAC41B,SAAS,CAACH,WAAW,CAAC,IAAI1wB,OAAO,CAAC,CAAC,IAAI0vB,UAAU;EAC7D;EAEA,IAAI2B,MAAM,GAAG,CAAC;EACd,SAASC,aAAaA,CAACr2B,SAAS,EAAEy1B,WAAW,EAAE;IAC7C,IAAIW,MAAM,GAAG,CAAC,EAAE;MACdA,MAAM,EAAE;MACR;IACF;IACA,IAAI5pB,CAAC,GAAG8nB,aAAa;IACrB,MAAMvH,CAAC,GAAGwH,WAAW;IACrB,OAAO/nB,CAAC,IAAIugB,CAAC,EAAE;MACb,MAAM+I,EAAE,GAAGV,aAAa,CAACp1B,SAAS,CAAC+1B,cAAc,CAAC;MAClD,MAAMC,CAAC,GAAGF,EAAE,GAAG,EAAE;QACf5pC,CAAC,GAAG4pC,EAAE,IAAI,CAAC;MACb,IAAIE,CAAC,KAAK,CAAC,EAAE;QACX,IAAI9pC,CAAC,GAAG,EAAE,EAAE;UACVkqC,MAAM,GAAGd,OAAO,CAACppC,CAAC,CAAC,IAAI,CAAC,IAAIA,CAAC,CAAC,GAAG,CAAC;UAClC;QACF;QACAsgB,CAAC,IAAI,EAAE;QACP;MACF;MACAA,CAAC,IAAItgB,CAAC;MACN,MAAM+pC,CAAC,GAAG9C,SAAS,CAAC3mB,CAAC,CAAC;MACtBxM,SAAS,CAAC41B,SAAS,CAACH,WAAW,GAAGQ,CAAC,CAAC,GAClCV,gBAAgB,CAACS,CAAC,CAAC,IAAI,CAAC,IAAIvB,UAAU,CAAC;MACzCjoB,CAAC,EAAE;IACL;EACF;EAEA,IAAI8pB,iBAAiB,GAAG,CAAC;IACvBC,qBAAqB;EACvB,SAASC,kBAAkBA,CAACx2B,SAAS,EAAEy1B,WAAW,EAAE;IAClD,IAAIjpB,CAAC,GAAG8nB,aAAa;IACrB,MAAMvH,CAAC,GAAGwH,WAAW;IACrB,IAAIroC,CAAC,GAAG,CAAC;IACT,IAAI8pC,CAAC;IACL,IAAIF,EAAE;IACN,OAAOtpB,CAAC,IAAIugB,CAAC,EAAE;MACb,MAAM0J,OAAO,GAAGhB,WAAW,GAAGtC,SAAS,CAAC3mB,CAAC,CAAC;MAC1C,MAAMxC,IAAI,GAAGhK,SAAS,CAAC41B,SAAS,CAACa,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;MACtD,QAAQH,iBAAiB;QACvB,KAAK,CAAC;UACJR,EAAE,GAAGV,aAAa,CAACp1B,SAAS,CAAC+1B,cAAc,CAAC;UAC5CC,CAAC,GAAGF,EAAE,GAAG,EAAE;UACX5pC,CAAC,GAAG4pC,EAAE,IAAI,CAAC;UACX,IAAIE,CAAC,KAAK,CAAC,EAAE;YACX,IAAI9pC,CAAC,GAAG,EAAE,EAAE;cACVkqC,MAAM,GAAGd,OAAO,CAACppC,CAAC,CAAC,IAAI,CAAC,IAAIA,CAAC,CAAC;cAC9BoqC,iBAAiB,GAAG,CAAC;YACvB,CAAC,MAAM;cACLpqC,CAAC,GAAG,EAAE;cACNoqC,iBAAiB,GAAG,CAAC;YACvB;UACF,CAAC,MAAM;YACL,IAAIN,CAAC,KAAK,CAAC,EAAE;cACX,MAAM,IAAIjD,SAAS,CAAC,sBAAsB,CAAC;YAC7C;YACAwD,qBAAqB,GAAGhB,gBAAgB,CAACS,CAAC,CAAC;YAC3CM,iBAAiB,GAAGpqC,CAAC,GAAG,CAAC,GAAG,CAAC;UAC/B;UACA;QACF,KAAK,CAAC;QACN,KAAK,CAAC;UACJ,IAAI8T,SAAS,CAAC41B,SAAS,CAACa,OAAO,CAAC,EAAE;YAChCz2B,SAAS,CAAC41B,SAAS,CAACa,OAAO,CAAC,IAAIzsB,IAAI,IAAIjF,OAAO,CAAC,CAAC,IAAI0vB,UAAU,CAAC;UAClE,CAAC,MAAM;YACLvoC,CAAC,EAAE;YACH,IAAIA,CAAC,KAAK,CAAC,EAAE;cACXoqC,iBAAiB,GAAGA,iBAAiB,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YACrD;UACF;UACA;QACF,KAAK,CAAC;UACJ,IAAIt2B,SAAS,CAAC41B,SAAS,CAACa,OAAO,CAAC,EAAE;YAChCz2B,SAAS,CAAC41B,SAAS,CAACa,OAAO,CAAC,IAAIzsB,IAAI,IAAIjF,OAAO,CAAC,CAAC,IAAI0vB,UAAU,CAAC;UAClE,CAAC,MAAM;YACLz0B,SAAS,CAAC41B,SAAS,CAACa,OAAO,CAAC,GAAGF,qBAAqB,IAAI9B,UAAU;YAClE6B,iBAAiB,GAAG,CAAC;UACvB;UACA;QACF,KAAK,CAAC;UACJ,IAAIt2B,SAAS,CAAC41B,SAAS,CAACa,OAAO,CAAC,EAAE;YAChCz2B,SAAS,CAAC41B,SAAS,CAACa,OAAO,CAAC,IAAIzsB,IAAI,IAAIjF,OAAO,CAAC,CAAC,IAAI0vB,UAAU,CAAC;UAClE;UACA;MACJ;MACAjoB,CAAC,EAAE;IACL;IACA,IAAI8pB,iBAAiB,KAAK,CAAC,EAAE;MAC3BF,MAAM,EAAE;MACR,IAAIA,MAAM,KAAK,CAAC,EAAE;QAChBE,iBAAiB,GAAG,CAAC;MACvB;IACF;EACF;EAEA,IAAIpB,QAAQ,GAAG,CAAC;EAChB,SAASwB,SAASA,CAAC12B,SAAS,EAAEnO,MAAM,EAAE8kC,GAAG,EAAElvB,GAAG,EAAEusB,GAAG,EAAE;IACnD,MAAM4C,MAAM,GAAID,GAAG,GAAGhC,WAAW,GAAI,CAAC;IACtC,MAAMkC,MAAM,GAAGF,GAAG,GAAGhC,WAAW;IAChCO,QAAQ,GAAG0B,MAAM,GAAG52B,SAAS,CAAClL,CAAC,GAAG2S,GAAG;IACrC,MAAMqvB,QAAQ,GAAGD,MAAM,GAAG72B,SAAS,CAAC+2B,CAAC,GAAG/C,GAAG;IAC3C,MAAMyB,WAAW,GAAG1B,oBAAoB,CAAC/zB,SAAS,EAAEk1B,QAAQ,EAAE4B,QAAQ,CAAC;IACvEjlC,MAAM,CAACmO,SAAS,EAAEy1B,WAAW,CAAC;EAChC;EAEA,SAASuB,WAAWA,CAACh3B,SAAS,EAAEnO,MAAM,EAAE8kC,GAAG,EAAE;IAC3CzB,QAAQ,GAAIyB,GAAG,GAAG32B,SAAS,CAACi0B,aAAa,GAAI,CAAC;IAC9C,MAAM6C,QAAQ,GAAGH,GAAG,GAAG32B,SAAS,CAACi0B,aAAa;IAC9C,MAAMwB,WAAW,GAAG1B,oBAAoB,CAAC/zB,SAAS,EAAEk1B,QAAQ,EAAE4B,QAAQ,CAAC;IACvEjlC,MAAM,CAACmO,SAAS,EAAEy1B,WAAW,CAAC;EAChC;EAEA,MAAMwB,gBAAgB,GAAG7C,UAAU,CAAChuC,MAAM;EAC1C,IAAI4Z,SAAS,EAAE9W,CAAC,EAAE6hB,CAAC,EAAEyB,CAAC,EAAE3gB,CAAC;EACzB,IAAIqrC,QAAQ;EACZ,IAAItC,WAAW,EAAE;IACf,IAAIN,aAAa,KAAK,CAAC,EAAE;MACvB4C,QAAQ,GAAG1C,cAAc,KAAK,CAAC,GAAG0B,aAAa,GAAGC,kBAAkB;IACtE,CAAC,MAAM;MACLe,QAAQ,GAAG1C,cAAc,KAAK,CAAC,GAAG6B,aAAa,GAAGG,kBAAkB;IACtE;EACF,CAAC,MAAM;IACLU,QAAQ,GAAG1B,cAAc;EAC3B;EAEA,IAAImB,GAAG,GAAG,CAAC;IACTQ,UAAU;EACZ,MAAMC,WAAW,GACfH,gBAAgB,KAAK,CAAC,GAClB7C,UAAU,CAAC,CAAC,CAAC,CAACH,aAAa,GAAGG,UAAU,CAAC,CAAC,CAAC,CAACiD,eAAe,GAC3D1C,WAAW,GAAGR,KAAK,CAACmD,aAAa;EAEvC,IAAIP,CAAC,EAAEjiC,CAAC;EACR,OAAO6hC,GAAG,IAAIS,WAAW,EAAE;IAEzB,MAAMG,SAAS,GAAGlD,aAAa,GAC3BjrC,IAAI,CAACC,GAAG,CAAC+tC,WAAW,GAAGT,GAAG,EAAEtC,aAAa,CAAC,GAC1C+C,WAAW;IAMf,IAAIG,SAAS,GAAG,CAAC,EAAE;MACjB,KAAKruC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+tC,gBAAgB,EAAE/tC,CAAC,EAAE,EAAE;QACrCkrC,UAAU,CAAClrC,CAAC,CAAC,CAAC2sC,IAAI,GAAG,CAAC;MACxB;MACAO,MAAM,GAAG,CAAC;MAEV,IAAIa,gBAAgB,KAAK,CAAC,EAAE;QAC1Bj3B,SAAS,GAAGo0B,UAAU,CAAC,CAAC,CAAC;QACzB,KAAKvoC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0rC,SAAS,EAAE1rC,CAAC,EAAE,EAAE;UAC9BmrC,WAAW,CAACh3B,SAAS,EAAEk3B,QAAQ,EAAEP,GAAG,CAAC;UACrCA,GAAG,EAAE;QACP;MACF,CAAC,MAAM;QACL,KAAK9qC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0rC,SAAS,EAAE1rC,CAAC,EAAE,EAAE;UAC9B,KAAK3C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+tC,gBAAgB,EAAE/tC,CAAC,EAAE,EAAE;YACrC8W,SAAS,GAAGo0B,UAAU,CAAClrC,CAAC,CAAC;YACzB6tC,CAAC,GAAG/2B,SAAS,CAAC+2B,CAAC;YACfjiC,CAAC,GAAGkL,SAAS,CAAClL,CAAC;YACf,KAAKiW,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGjW,CAAC,EAAEiW,CAAC,EAAE,EAAE;cACtB,KAAKyB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGuqB,CAAC,EAAEvqB,CAAC,EAAE,EAAE;gBACtBkqB,SAAS,CAAC12B,SAAS,EAAEk3B,QAAQ,EAAEP,GAAG,EAAE5rB,CAAC,EAAEyB,CAAC,CAAC;cAC3C;YACF;UACF;UACAmqB,GAAG,EAAE;QACP;MACF;IACF;IAGA5B,SAAS,GAAG,CAAC;IACboC,UAAU,GAAGK,kBAAkB,CAACr6B,IAAI,EAAEuB,MAAM,CAAC;IAC7C,IAAI,CAACy4B,UAAU,EAAE;MACf;IACF;IACA,IAAIA,UAAU,CAACM,OAAO,EAAE;MAGtB,MAAMC,UAAU,GAAGH,SAAS,GAAG,CAAC,GAAG,YAAY,GAAG,WAAW;MAC7DlyC,SAAI,CACF,gBAAgBqyC,UAAU,iCAAiCP,UAAU,CAACM,OAAO,EAC/E,CAAC;MACD/4B,MAAM,GAAGy4B,UAAU,CAACz4B,MAAM;IAC5B;IACA,IAAIy4B,UAAU,CAACQ,MAAM,IAAI,MAAM,IAAIR,UAAU,CAACQ,MAAM,IAAI,MAAM,EAAE;MAE9Dj5B,MAAM,IAAI,CAAC;IACb,CAAC,MAAM;MACL;IACF;EACF;EAEA,OAAOA,MAAM,GAAGm2B,WAAW;AAC7B;AAOA,SAAS+C,kBAAkBA,CAAC53B,SAAS,EAAE63B,iBAAiB,EAAElrC,CAAC,EAAE;EAC3D,MAAMmrC,EAAE,GAAG93B,SAAS,CAAC+3B,iBAAiB;IACpCnC,SAAS,GAAG51B,SAAS,CAAC41B,SAAS;EACjC,IAAIoC,EAAE,EAAE19B,EAAE,EAAEC,EAAE,EAAE09B,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE;EAClC,IAAIvrC,EAAE,EAAEC,EAAE,EAAE0G,EAAE,EAAE6kC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE;EAClC,IAAI9nC,CAAC;EAEL,IAAI,CAACknC,EAAE,EAAE;IACP,MAAM,IAAI/E,SAAS,CAAC,sCAAsC,CAAC;EAC7D;EAGA,KAAK,IAAItrB,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAG,EAAE,EAAEA,GAAG,IAAI,CAAC,EAAE;IAEpC3a,EAAE,GAAG8oC,SAAS,CAACiC,iBAAiB,GAAGpwB,GAAG,CAAC;IACvC1a,EAAE,GAAG6oC,SAAS,CAACiC,iBAAiB,GAAGpwB,GAAG,GAAG,CAAC,CAAC;IAC3ChU,EAAE,GAAGmiC,SAAS,CAACiC,iBAAiB,GAAGpwB,GAAG,GAAG,CAAC,CAAC;IAC3C6wB,EAAE,GAAG1C,SAAS,CAACiC,iBAAiB,GAAGpwB,GAAG,GAAG,CAAC,CAAC;IAC3C8wB,EAAE,GAAG3C,SAAS,CAACiC,iBAAiB,GAAGpwB,GAAG,GAAG,CAAC,CAAC;IAC3C+wB,EAAE,GAAG5C,SAAS,CAACiC,iBAAiB,GAAGpwB,GAAG,GAAG,CAAC,CAAC;IAC3CgxB,EAAE,GAAG7C,SAAS,CAACiC,iBAAiB,GAAGpwB,GAAG,GAAG,CAAC,CAAC;IAC3CixB,EAAE,GAAG9C,SAAS,CAACiC,iBAAiB,GAAGpwB,GAAG,GAAG,CAAC,CAAC;IAG3C3a,EAAE,IAAIgrC,EAAE,CAACrwB,GAAG,CAAC;IAGb,IAAI,CAAC1a,EAAE,GAAG0G,EAAE,GAAG6kC,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAGC,EAAE,MAAM,CAAC,EAAE;MAC5C9nC,CAAC,GAAI8iC,QAAQ,GAAG5mC,EAAE,GAAG,GAAG,IAAK,EAAE;MAC/BH,CAAC,CAAC8a,GAAG,CAAC,GAAG7W,CAAC;MACVjE,CAAC,CAAC8a,GAAG,GAAG,CAAC,CAAC,GAAG7W,CAAC;MACdjE,CAAC,CAAC8a,GAAG,GAAG,CAAC,CAAC,GAAG7W,CAAC;MACdjE,CAAC,CAAC8a,GAAG,GAAG,CAAC,CAAC,GAAG7W,CAAC;MACdjE,CAAC,CAAC8a,GAAG,GAAG,CAAC,CAAC,GAAG7W,CAAC;MACdjE,CAAC,CAAC8a,GAAG,GAAG,CAAC,CAAC,GAAG7W,CAAC;MACdjE,CAAC,CAAC8a,GAAG,GAAG,CAAC,CAAC,GAAG7W,CAAC;MACdjE,CAAC,CAAC8a,GAAG,GAAG,CAAC,CAAC,GAAG7W,CAAC;MACd;IACF;IAEA7D,EAAE,IAAI+qC,EAAE,CAACrwB,GAAG,GAAG,CAAC,CAAC;IACjBhU,EAAE,IAAIqkC,EAAE,CAACrwB,GAAG,GAAG,CAAC,CAAC;IACjB6wB,EAAE,IAAIR,EAAE,CAACrwB,GAAG,GAAG,CAAC,CAAC;IACjB8wB,EAAE,IAAIT,EAAE,CAACrwB,GAAG,GAAG,CAAC,CAAC;IACjB+wB,EAAE,IAAIV,EAAE,CAACrwB,GAAG,GAAG,CAAC,CAAC;IACjBgxB,EAAE,IAAIX,EAAE,CAACrwB,GAAG,GAAG,CAAC,CAAC;IACjBixB,EAAE,IAAIZ,EAAE,CAACrwB,GAAG,GAAG,CAAC,CAAC;IAGjBuwB,EAAE,GAAItE,QAAQ,GAAG5mC,EAAE,GAAG,GAAG,IAAK,CAAC;IAC/BwN,EAAE,GAAIo5B,QAAQ,GAAG6E,EAAE,GAAG,GAAG,IAAK,CAAC;IAC/Bh+B,EAAE,GAAG9G,EAAE;IACPwkC,EAAE,GAAGQ,EAAE;IACPP,EAAE,GAAIvE,UAAU,IAAI5mC,EAAE,GAAG2rC,EAAE,CAAC,GAAG,GAAG,IAAK,CAAC;IACxCL,EAAE,GAAI1E,UAAU,IAAI5mC,EAAE,GAAG2rC,EAAE,CAAC,GAAG,GAAG,IAAK,CAAC;IACxCP,EAAE,GAAGG,EAAE,IAAI,CAAC;IACZF,EAAE,GAAGI,EAAE,IAAI,CAAC;IAGZR,EAAE,GAAIA,EAAE,GAAG19B,EAAE,GAAG,CAAC,IAAK,CAAC;IACvBA,EAAE,GAAG09B,EAAE,GAAG19B,EAAE;IACZ1J,CAAC,GAAI2J,EAAE,GAAGk5B,OAAO,GAAGwE,EAAE,GAAGzE,OAAO,GAAG,GAAG,IAAK,CAAC;IAC5Cj5B,EAAE,GAAIA,EAAE,GAAGi5B,OAAO,GAAGyE,EAAE,GAAGxE,OAAO,GAAG,GAAG,IAAK,CAAC;IAC7CwE,EAAE,GAAGrnC,CAAC;IACNsnC,EAAE,GAAIA,EAAE,GAAGE,EAAE,GAAG,CAAC,IAAK,CAAC;IACvBA,EAAE,GAAGF,EAAE,GAAGE,EAAE;IACZC,EAAE,GAAIA,EAAE,GAAGF,EAAE,GAAG,CAAC,IAAK,CAAC;IACvBA,EAAE,GAAGE,EAAE,GAAGF,EAAE;IAGZH,EAAE,GAAIA,EAAE,GAAGC,EAAE,GAAG,CAAC,IAAK,CAAC;IACvBA,EAAE,GAAGD,EAAE,GAAGC,EAAE;IACZ39B,EAAE,GAAIA,EAAE,GAAGC,EAAE,GAAG,CAAC,IAAK,CAAC;IACvBA,EAAE,GAAGD,EAAE,GAAGC,EAAE;IACZ3J,CAAC,GAAIsnC,EAAE,GAAG3E,OAAO,GAAG8E,EAAE,GAAG/E,OAAO,GAAG,IAAI,IAAK,EAAE;IAC9C4E,EAAE,GAAIA,EAAE,GAAG5E,OAAO,GAAG+E,EAAE,GAAG9E,OAAO,GAAG,IAAI,IAAK,EAAE;IAC/C8E,EAAE,GAAGznC,CAAC;IACNA,CAAC,GAAIunC,EAAE,GAAG9E,OAAO,GAAG+E,EAAE,GAAGhF,OAAO,GAAG,IAAI,IAAK,EAAE;IAC9C+E,EAAE,GAAIA,EAAE,GAAG/E,OAAO,GAAGgF,EAAE,GAAG/E,OAAO,GAAG,IAAI,IAAK,EAAE;IAC/C+E,EAAE,GAAGxnC,CAAC;IAGNjE,CAAC,CAAC8a,GAAG,CAAC,GAAGuwB,EAAE,GAAGK,EAAE;IAChB1rC,CAAC,CAAC8a,GAAG,GAAG,CAAC,CAAC,GAAGuwB,EAAE,GAAGK,EAAE;IACpB1rC,CAAC,CAAC8a,GAAG,GAAG,CAAC,CAAC,GAAGnN,EAAE,GAAG89B,EAAE;IACpBzrC,CAAC,CAAC8a,GAAG,GAAG,CAAC,CAAC,GAAGnN,EAAE,GAAG89B,EAAE;IACpBzrC,CAAC,CAAC8a,GAAG,GAAG,CAAC,CAAC,GAAGlN,EAAE,GAAG49B,EAAE;IACpBxrC,CAAC,CAAC8a,GAAG,GAAG,CAAC,CAAC,GAAGlN,EAAE,GAAG49B,EAAE;IACpBxrC,CAAC,CAAC8a,GAAG,GAAG,CAAC,CAAC,GAAGwwB,EAAE,GAAGC,EAAE;IACpBvrC,CAAC,CAAC8a,GAAG,GAAG,CAAC,CAAC,GAAGwwB,EAAE,GAAGC,EAAE;EACtB;EAGA,KAAK,IAAIlE,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAG,CAAC,EAAE,EAAEA,GAAG,EAAE;IAChClnC,EAAE,GAAGH,CAAC,CAACqnC,GAAG,CAAC;IACXjnC,EAAE,GAAGJ,CAAC,CAACqnC,GAAG,GAAG,CAAC,CAAC;IACfvgC,EAAE,GAAG9G,CAAC,CAACqnC,GAAG,GAAG,EAAE,CAAC;IAChBsE,EAAE,GAAG3rC,CAAC,CAACqnC,GAAG,GAAG,EAAE,CAAC;IAChBuE,EAAE,GAAG5rC,CAAC,CAACqnC,GAAG,GAAG,EAAE,CAAC;IAChBwE,EAAE,GAAG7rC,CAAC,CAACqnC,GAAG,GAAG,EAAE,CAAC;IAChByE,EAAE,GAAG9rC,CAAC,CAACqnC,GAAG,GAAG,EAAE,CAAC;IAChB0E,EAAE,GAAG/rC,CAAC,CAACqnC,GAAG,GAAG,EAAE,CAAC;IAGhB,IAAI,CAACjnC,EAAE,GAAG0G,EAAE,GAAG6kC,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAGC,EAAE,MAAM,CAAC,EAAE;MAC5C9nC,CAAC,GAAI8iC,QAAQ,GAAG5mC,EAAE,GAAG,IAAI,IAAK,EAAE;MAEhC,IAAI8D,CAAC,GAAG,CAAC,IAAI,EAAE;QACbA,CAAC,GAAG,CAAC;MACP,CAAC,MAAM,IAAIA,CAAC,IAAI,IAAI,EAAE;QACpBA,CAAC,GAAG,GAAG;MACT,CAAC,MAAM;QACLA,CAAC,GAAIA,CAAC,GAAG,IAAI,IAAK,CAAC;MACrB;MACAglC,SAAS,CAACiC,iBAAiB,GAAG7D,GAAG,CAAC,GAAGpjC,CAAC;MACtCglC,SAAS,CAACiC,iBAAiB,GAAG7D,GAAG,GAAG,CAAC,CAAC,GAAGpjC,CAAC;MAC1CglC,SAAS,CAACiC,iBAAiB,GAAG7D,GAAG,GAAG,EAAE,CAAC,GAAGpjC,CAAC;MAC3CglC,SAAS,CAACiC,iBAAiB,GAAG7D,GAAG,GAAG,EAAE,CAAC,GAAGpjC,CAAC;MAC3CglC,SAAS,CAACiC,iBAAiB,GAAG7D,GAAG,GAAG,EAAE,CAAC,GAAGpjC,CAAC;MAC3CglC,SAAS,CAACiC,iBAAiB,GAAG7D,GAAG,GAAG,EAAE,CAAC,GAAGpjC,CAAC;MAC3CglC,SAAS,CAACiC,iBAAiB,GAAG7D,GAAG,GAAG,EAAE,CAAC,GAAGpjC,CAAC;MAC3CglC,SAAS,CAACiC,iBAAiB,GAAG7D,GAAG,GAAG,EAAE,CAAC,GAAGpjC,CAAC;MAC3C;IACF;IAGAonC,EAAE,GAAItE,QAAQ,GAAG5mC,EAAE,GAAG,IAAI,IAAK,EAAE;IACjCwN,EAAE,GAAIo5B,QAAQ,GAAG6E,EAAE,GAAG,IAAI,IAAK,EAAE;IACjCh+B,EAAE,GAAG9G,EAAE;IACPwkC,EAAE,GAAGQ,EAAE;IACPP,EAAE,GAAIvE,UAAU,IAAI5mC,EAAE,GAAG2rC,EAAE,CAAC,GAAG,IAAI,IAAK,EAAE;IAC1CL,EAAE,GAAI1E,UAAU,IAAI5mC,EAAE,GAAG2rC,EAAE,CAAC,GAAG,IAAI,IAAK,EAAE;IAC1CP,EAAE,GAAGG,EAAE;IACPF,EAAE,GAAGI,EAAE;IAKPR,EAAE,GAAG,CAAEA,EAAE,GAAG19B,EAAE,GAAG,CAAC,IAAK,CAAC,IAAI,IAAI;IAChCA,EAAE,GAAG09B,EAAE,GAAG19B,EAAE;IACZ1J,CAAC,GAAI2J,EAAE,GAAGk5B,OAAO,GAAGwE,EAAE,GAAGzE,OAAO,GAAG,IAAI,IAAK,EAAE;IAC9Cj5B,EAAE,GAAIA,EAAE,GAAGi5B,OAAO,GAAGyE,EAAE,GAAGxE,OAAO,GAAG,IAAI,IAAK,EAAE;IAC/CwE,EAAE,GAAGrnC,CAAC;IACNsnC,EAAE,GAAIA,EAAE,GAAGE,EAAE,GAAG,CAAC,IAAK,CAAC;IACvBA,EAAE,GAAGF,EAAE,GAAGE,EAAE;IACZC,EAAE,GAAIA,EAAE,GAAGF,EAAE,GAAG,CAAC,IAAK,CAAC;IACvBA,EAAE,GAAGE,EAAE,GAAGF,EAAE;IAGZH,EAAE,GAAIA,EAAE,GAAGC,EAAE,GAAG,CAAC,IAAK,CAAC;IACvBA,EAAE,GAAGD,EAAE,GAAGC,EAAE;IACZ39B,EAAE,GAAIA,EAAE,GAAGC,EAAE,GAAG,CAAC,IAAK,CAAC;IACvBA,EAAE,GAAGD,EAAE,GAAGC,EAAE;IACZ3J,CAAC,GAAIsnC,EAAE,GAAG3E,OAAO,GAAG8E,EAAE,GAAG/E,OAAO,GAAG,IAAI,IAAK,EAAE;IAC9C4E,EAAE,GAAIA,EAAE,GAAG5E,OAAO,GAAG+E,EAAE,GAAG9E,OAAO,GAAG,IAAI,IAAK,EAAE;IAC/C8E,EAAE,GAAGznC,CAAC;IACNA,CAAC,GAAIunC,EAAE,GAAG9E,OAAO,GAAG+E,EAAE,GAAGhF,OAAO,GAAG,IAAI,IAAK,EAAE;IAC9C+E,EAAE,GAAIA,EAAE,GAAG/E,OAAO,GAAGgF,EAAE,GAAG/E,OAAO,GAAG,IAAI,IAAK,EAAE;IAC/C+E,EAAE,GAAGxnC,CAAC;IAGN9D,EAAE,GAAGkrC,EAAE,GAAGK,EAAE;IACZK,EAAE,GAAGV,EAAE,GAAGK,EAAE;IACZtrC,EAAE,GAAGuN,EAAE,GAAG89B,EAAE;IACZK,EAAE,GAAGn+B,EAAE,GAAG89B,EAAE;IACZ3kC,EAAE,GAAG8G,EAAE,GAAG49B,EAAE;IACZK,EAAE,GAAGj+B,EAAE,GAAG49B,EAAE;IACZG,EAAE,GAAGL,EAAE,GAAGC,EAAE;IACZK,EAAE,GAAGN,EAAE,GAAGC,EAAE;IAGZ,IAAIprC,EAAE,GAAG,EAAE,EAAE;MACXA,EAAE,GAAG,CAAC;IACR,CAAC,MAAM,IAAIA,EAAE,IAAI,IAAI,EAAE;MACrBA,EAAE,GAAG,GAAG;IACV,CAAC,MAAM;MACLA,EAAE,KAAK,CAAC;IACV;IACA,IAAIC,EAAE,GAAG,EAAE,EAAE;MACXA,EAAE,GAAG,CAAC;IACR,CAAC,MAAM,IAAIA,EAAE,IAAI,IAAI,EAAE;MACrBA,EAAE,GAAG,GAAG;IACV,CAAC,MAAM;MACLA,EAAE,KAAK,CAAC;IACV;IACA,IAAI0G,EAAE,GAAG,EAAE,EAAE;MACXA,EAAE,GAAG,CAAC;IACR,CAAC,MAAM,IAAIA,EAAE,IAAI,IAAI,EAAE;MACrBA,EAAE,GAAG,GAAG;IACV,CAAC,MAAM;MACLA,EAAE,KAAK,CAAC;IACV;IACA,IAAI6kC,EAAE,GAAG,EAAE,EAAE;MACXA,EAAE,GAAG,CAAC;IACR,CAAC,MAAM,IAAIA,EAAE,IAAI,IAAI,EAAE;MACrBA,EAAE,GAAG,GAAG;IACV,CAAC,MAAM;MACLA,EAAE,KAAK,CAAC;IACV;IACA,IAAIC,EAAE,GAAG,EAAE,EAAE;MACXA,EAAE,GAAG,CAAC;IACR,CAAC,MAAM,IAAIA,EAAE,IAAI,IAAI,EAAE;MACrBA,EAAE,GAAG,GAAG;IACV,CAAC,MAAM;MACLA,EAAE,KAAK,CAAC;IACV;IACA,IAAIC,EAAE,GAAG,EAAE,EAAE;MACXA,EAAE,GAAG,CAAC;IACR,CAAC,MAAM,IAAIA,EAAE,IAAI,IAAI,EAAE;MACrBA,EAAE,GAAG,GAAG;IACV,CAAC,MAAM;MACLA,EAAE,KAAK,CAAC;IACV;IACA,IAAIC,EAAE,GAAG,EAAE,EAAE;MACXA,EAAE,GAAG,CAAC;IACR,CAAC,MAAM,IAAIA,EAAE,IAAI,IAAI,EAAE;MACrBA,EAAE,GAAG,GAAG;IACV,CAAC,MAAM;MACLA,EAAE,KAAK,CAAC;IACV;IACA,IAAIC,EAAE,GAAG,EAAE,EAAE;MACXA,EAAE,GAAG,CAAC;IACR,CAAC,MAAM,IAAIA,EAAE,IAAI,IAAI,EAAE;MACrBA,EAAE,GAAG,GAAG;IACV,CAAC,MAAM;MACLA,EAAE,KAAK,CAAC;IACV;IAGA9C,SAAS,CAACiC,iBAAiB,GAAG7D,GAAG,CAAC,GAAGlnC,EAAE;IACvC8oC,SAAS,CAACiC,iBAAiB,GAAG7D,GAAG,GAAG,CAAC,CAAC,GAAGjnC,EAAE;IAC3C6oC,SAAS,CAACiC,iBAAiB,GAAG7D,GAAG,GAAG,EAAE,CAAC,GAAGvgC,EAAE;IAC5CmiC,SAAS,CAACiC,iBAAiB,GAAG7D,GAAG,GAAG,EAAE,CAAC,GAAGsE,EAAE;IAC5C1C,SAAS,CAACiC,iBAAiB,GAAG7D,GAAG,GAAG,EAAE,CAAC,GAAGuE,EAAE;IAC5C3C,SAAS,CAACiC,iBAAiB,GAAG7D,GAAG,GAAG,EAAE,CAAC,GAAGwE,EAAE;IAC5C5C,SAAS,CAACiC,iBAAiB,GAAG7D,GAAG,GAAG,EAAE,CAAC,GAAGyE,EAAE;IAC5C7C,SAAS,CAACiC,iBAAiB,GAAG7D,GAAG,GAAG,EAAE,CAAC,GAAG0E,EAAE;EAC9C;AACF;AAEA,SAASC,kBAAkBA,CAACxE,KAAK,EAAEn0B,SAAS,EAAE;EAC5C,MAAMi0B,aAAa,GAAGj0B,SAAS,CAACi0B,aAAa;EAC7C,MAAMoD,eAAe,GAAGr3B,SAAS,CAACq3B,eAAe;EACjD,MAAMuB,iBAAiB,GAAG,IAAIC,UAAU,CAAC,EAAE,CAAC;EAE5C,KAAK,IAAI3D,QAAQ,GAAG,CAAC,EAAEA,QAAQ,GAAGmC,eAAe,EAAEnC,QAAQ,EAAE,EAAE;IAC7D,KAAK,IAAI4B,QAAQ,GAAG,CAAC,EAAEA,QAAQ,GAAG7C,aAAa,EAAE6C,QAAQ,EAAE,EAAE;MAC3D,MAAMp4B,MAAM,GAAGq1B,oBAAoB,CAAC/zB,SAAS,EAAEk1B,QAAQ,EAAE4B,QAAQ,CAAC;MAClEc,kBAAkB,CAAC53B,SAAS,EAAEtB,MAAM,EAAEk6B,iBAAiB,CAAC;IAC1D;EACF;EACA,OAAO54B,SAAS,CAAC41B,SAAS;AAC5B;AAEA,SAAS4B,kBAAkBA,CAACr6B,IAAI,EAAE27B,UAAU,EAAEC,QAAQ,GAAGD,UAAU,EAAE;EACnE,MAAME,MAAM,GAAG77B,IAAI,CAAC/W,MAAM,GAAG,CAAC;EAC9B,IAAI6yC,MAAM,GAAGF,QAAQ,GAAGD,UAAU,GAAGC,QAAQ,GAAGD,UAAU;EAE1D,IAAIA,UAAU,IAAIE,MAAM,EAAE;IACxB,OAAO,IAAI;EACb;EACA,MAAME,aAAa,GAAGt6B,UAAU,CAACzB,IAAI,EAAE27B,UAAU,CAAC;EAClD,IAAII,aAAa,IAAI,MAAM,IAAIA,aAAa,IAAI,MAAM,EAAE;IACtD,OAAO;MACLzB,OAAO,EAAE,IAAI;MACbE,MAAM,EAAEuB,aAAa;MACrBx6B,MAAM,EAAEo6B;IACV,CAAC;EACH;EACA,IAAIK,SAAS,GAAGv6B,UAAU,CAACzB,IAAI,EAAE87B,MAAM,CAAC;EACxC,OAAO,EAAEE,SAAS,IAAI,MAAM,IAAIA,SAAS,IAAI,MAAM,CAAC,EAAE;IACpD,IAAI,EAAEF,MAAM,IAAID,MAAM,EAAE;MACtB,OAAO,IAAI;IACb;IACAG,SAAS,GAAGv6B,UAAU,CAACzB,IAAI,EAAE87B,MAAM,CAAC;EACtC;EACA,OAAO;IACLxB,OAAO,EAAEyB,aAAa,CAACptC,QAAQ,CAAC,EAAE,CAAC;IACnC6rC,MAAM,EAAEwB,SAAS;IACjBz6B,MAAM,EAAEu6B;EACV,CAAC;AACH;AAEA,SAASG,iBAAiBA,CAACjF,KAAK,EAAE;EAChC,MAAMQ,WAAW,GAAGvrC,IAAI,CAACoV,IAAI,CAAC21B,KAAK,CAACkF,cAAc,GAAG,CAAC,GAAGlF,KAAK,CAACmF,IAAI,CAAC;EACpE,MAAMhC,aAAa,GAAGluC,IAAI,CAACoV,IAAI,CAAC21B,KAAK,CAAClB,SAAS,GAAG,CAAC,GAAGkB,KAAK,CAACoF,IAAI,CAAC;EACjE,KAAK,MAAMv5B,SAAS,IAAIm0B,KAAK,CAACC,UAAU,EAAE;IACxC,MAAMH,aAAa,GAAG7qC,IAAI,CAACoV,IAAI,CAC5BpV,IAAI,CAACoV,IAAI,CAAC21B,KAAK,CAACkF,cAAc,GAAG,CAAC,CAAC,GAAGr5B,SAAS,CAAC+2B,CAAC,GAAI5C,KAAK,CAACmF,IAC9D,CAAC;IACD,MAAMjC,eAAe,GAAGjuC,IAAI,CAACoV,IAAI,CAC9BpV,IAAI,CAACoV,IAAI,CAAC21B,KAAK,CAAClB,SAAS,GAAG,CAAC,CAAC,GAAGjzB,SAAS,CAAClL,CAAC,GAAIq/B,KAAK,CAACoF,IACzD,CAAC;IACD,MAAMC,mBAAmB,GAAG7E,WAAW,GAAG30B,SAAS,CAAC+2B,CAAC;IACrD,MAAM0C,qBAAqB,GAAGnC,aAAa,GAAGt3B,SAAS,CAAClL,CAAC;IAEzD,MAAM4kC,gBAAgB,GACpB,EAAE,GAAGD,qBAAqB,IAAID,mBAAmB,GAAG,CAAC,CAAC;IACxDx5B,SAAS,CAAC41B,SAAS,GAAG,IAAIiD,UAAU,CAACa,gBAAgB,CAAC;IACtD15B,SAAS,CAACi0B,aAAa,GAAGA,aAAa;IACvCj0B,SAAS,CAACq3B,eAAe,GAAGA,eAAe;EAC7C;EACAlD,KAAK,CAACQ,WAAW,GAAGA,WAAW;EAC/BR,KAAK,CAACmD,aAAa,GAAGA,aAAa;AACrC;AAEA,SAASqC,aAAaA,CAACx8B,IAAI,EAAEuB,MAAM,EAAE;EACnC,MAAMtY,MAAM,GAAGwY,UAAU,CAACzB,IAAI,EAAEuB,MAAM,CAAC;EACvCA,MAAM,IAAI,CAAC;EACX,IAAIk7B,SAAS,GAAGl7B,MAAM,GAAGtY,MAAM,GAAG,CAAC;EAEnC,MAAM+wC,UAAU,GAAGK,kBAAkB,CAACr6B,IAAI,EAAEy8B,SAAS,EAAEl7B,MAAM,CAAC;EAC9D,IAAIy4B,UAAU,EAAEM,OAAO,EAAE;IACvBpyC,SAAI,CACF,uDAAuD,GACrD8xC,UAAU,CAACM,OACf,CAAC;IACDmC,SAAS,GAAGzC,UAAU,CAACz4B,MAAM;EAC/B;EAEA,MAAMm7B,KAAK,GAAG18B,IAAI,CAAC5T,QAAQ,CAACmV,MAAM,EAAEk7B,SAAS,CAAC;EAC9C,OAAO;IACLE,OAAO,EAAED,KAAK;IACdE,SAAS,EAAEr7B,MAAM;IACjBs7B,SAAS,EAAEt7B,MAAM,GAAGm7B,KAAK,CAACzzC;EAC5B,CAAC;AACH;AAEA,SAAS6zC,QAAQA,CAAC98B,IAAI,EAAEuB,MAAM,EAAE;EAC9B,MAAMtY,MAAM,GAAGwY,UAAU,CAACzB,IAAI,EAAEuB,MAAM,CAAC;EACvCA,MAAM,IAAI,CAAC;EACX,MAAMk7B,SAAS,GAAGl7B,MAAM,GAAGtY,MAAM,GAAG,CAAC;EAErC,MAAM+wC,UAAU,GAAGK,kBAAkB,CAACr6B,IAAI,EAAEy8B,SAAS,EAAEl7B,MAAM,CAAC;EAC9D,IAAIy4B,UAAU,EAAEM,OAAO,EAAE;IACvB,OAAON,UAAU,CAACz4B,MAAM;EAC1B;EACA,OAAOk7B,SAAS;AAClB;AAEA,MAAMM,SAAS,CAAC;EACdnyC,WAAWA,CAAC;IAAEoyC,eAAe,GAAG,IAAI;IAAEC,cAAc,GAAG,CAAC;EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;IAChE,IAAI,CAACC,gBAAgB,GAAGF,eAAe;IACvC,IAAI,CAACG,eAAe,GAAGF,cAAc;EACvC;EAEA,OAAOG,kBAAkBA,CAACp9B,IAAI,EAAEi9B,cAAc,GAAG,CAAC,CAAC,EAAE;IACnD,IAAII,WAAW,GAAG,IAAI;IACtB,IAAI97B,MAAM,GAAG,CAAC;IACd,IAAI+7B,aAAa,GAAG,IAAI;IACxB,IAAItD,UAAU,GAAGv4B,UAAU,CAACzB,IAAI,EAAEuB,MAAM,CAAC;IACzCA,MAAM,IAAI,CAAC;IACX,IAAIy4B,UAAU,KAAkC,MAAM,EAAE;MACtD,MAAM,IAAIpE,SAAS,CAAC,eAAe,CAAC;IACtC;IACAoE,UAAU,GAAGv4B,UAAU,CAACzB,IAAI,EAAEuB,MAAM,CAAC;IACrCA,MAAM,IAAI,CAAC;IAEXg8B,UAAU,EAAE,OAAOvD,UAAU,KAAgC,MAAM,EAAE;MACnE,QAAQA,UAAU;QAChB,KAAK,MAAM;UAGT,MAAM;YAAE2C,OAAO;YAAEC,SAAS;YAAEC;UAAU,CAAC,GAAGL,aAAa,CAACx8B,IAAI,EAAEuB,MAAM,CAAC;UACrEA,MAAM,GAAGs7B,SAAS;UAGlB,IACEF,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IACnBA,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IACnBA,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IACnBA,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IACnBA,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAChBA,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAChB;YACA,IAAIU,WAAW,EAAE;cACf,MAAM,IAAIzH,SAAS,CAAC,8BAA8B,CAAC;YACrD;YAGAyH,WAAW,GAAG;cAAEG,SAAS,EAAEZ,SAAS,GAAG,CAAC;cAAEa,OAAO,EAAEZ;YAAU,CAAC;UAChE;UACA7C,UAAU,GAAGv4B,UAAU,CAACzB,IAAI,EAAEuB,MAAM,CAAC;UACrCA,MAAM,IAAI,CAAC;UACX;QACF,KAAK,MAAM;QACX,KAAK,MAAM;QACX,KAAK,MAAM;UAKT+7B,aAAa,GAAGt9B,IAAI,CAACuB,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;UAC9C,MAAMg8B,UAAU;QAClB,KAAK,MAAM;UACT,IAAIv9B,IAAI,CAACuB,MAAM,CAAC,KAAK,IAAI,EAAE;YAEzBA,MAAM,EAAE;UACV;UACA;MACJ;MACAA,MAAM,GAAGu7B,QAAQ,CAAC98B,IAAI,EAAEuB,MAAM,CAAC;MAC/By4B,UAAU,GAAGv4B,UAAU,CAACzB,IAAI,EAAEuB,MAAM,CAAC;MACrCA,MAAM,IAAI,CAAC;IACb;IACA,IAAI+7B,aAAa,KAAK,CAAC,EAAE;MACvB,OAAO,IAAI;IACb;IACA,IAAIA,aAAa,KAAK,CAAC,IAAIL,cAAc,KAAK,CAAC,EAAE;MAC/C,OAAO,IAAI;IACb;IACA,OAAOI,WAAW,IAAI,CAAC,CAAC;EAC1B;EAEA/zC,KAAKA,CAAC0W,IAAI,EAAE;IAAE09B,YAAY,GAAG;EAAK,CAAC,GAAG,CAAC,CAAC,EAAE;IACxC,IAAIn8B,MAAM,GAAG,CAAC;IACd,IAAIo8B,IAAI,GAAG,IAAI;IACf,IAAIC,KAAK,GAAG,IAAI;IAChB,IAAI5G,KAAK,EAAEE,aAAa;IACxB,IAAI2G,aAAa,GAAG,CAAC;IACrB,MAAMC,kBAAkB,GAAG,EAAE;IAC7B,MAAMC,eAAe,GAAG,EAAE;MACxBC,eAAe,GAAG,EAAE;IAEtB,IAAIhE,UAAU,GAAGv4B,UAAU,CAACzB,IAAI,EAAEuB,MAAM,CAAC;IACzCA,MAAM,IAAI,CAAC;IACX,IAAIy4B,UAAU,KAAkC,MAAM,EAAE;MACtD,MAAM,IAAIpE,SAAS,CAAC,eAAe,CAAC;IACtC;IACAoE,UAAU,GAAGv4B,UAAU,CAACzB,IAAI,EAAEuB,MAAM,CAAC;IACrCA,MAAM,IAAI,CAAC;IAEXg8B,UAAU,EAAE,OAAOvD,UAAU,KAAgC,MAAM,EAAE;MACnE,IAAIjuC,CAAC,EAAE6hB,CAAC,EAAEqwB,CAAC;MACX,QAAQjE,UAAU;QAChB,KAAK,MAAM;QACX,KAAK,MAAM;QACX,KAAK,MAAM;QACX,KAAK,MAAM;QACX,KAAK,MAAM;QACX,KAAK,MAAM;QACX,KAAK,MAAM;QACX,KAAK,MAAM;QACX,KAAK,MAAM;QACX,KAAK,MAAM;QACX,KAAK,MAAM;QACX,KAAK,MAAM;QACX,KAAK,MAAM;QACX,KAAK,MAAM;QACX,KAAK,MAAM;QACX,KAAK,MAAM;QACX,KAAK,MAAM;UACT,MAAM;YAAE2C,OAAO;YAAEE;UAAU,CAAC,GAAGL,aAAa,CAACx8B,IAAI,EAAEuB,MAAM,CAAC;UAC1DA,MAAM,GAAGs7B,SAAS;UAElB,IAAI7C,UAAU,KAAK,MAAM,EAAE;YAEzB,IACE2C,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IACnBA,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IACnBA,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IACnBA,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IACnBA,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAChB;cACAgB,IAAI,GAAG;gBACLO,OAAO,EAAE;kBAAEC,KAAK,EAAExB,OAAO,CAAC,CAAC,CAAC;kBAAEyB,KAAK,EAAEzB,OAAO,CAAC,CAAC;gBAAE,CAAC;gBACjD0B,YAAY,EAAE1B,OAAO,CAAC,CAAC,CAAC;gBACxB2B,QAAQ,EAAG3B,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAIA,OAAO,CAAC,CAAC,CAAC;gBACxC4B,QAAQ,EAAG5B,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,GAAIA,OAAO,CAAC,EAAE,CAAC;gBAC1C6B,UAAU,EAAE7B,OAAO,CAAC,EAAE,CAAC;gBACvB8B,WAAW,EAAE9B,OAAO,CAAC,EAAE,CAAC;gBACxB+B,SAAS,EAAE/B,OAAO,CAACvwC,QAAQ,CACzB,EAAE,EACF,EAAE,GAAG,CAAC,GAAGuwC,OAAO,CAAC,EAAE,CAAC,GAAGA,OAAO,CAAC,EAAE,CACnC;cACF,CAAC;YACH;UACF;UAEA,IAAI3C,UAAU,KAAK,MAAM,EAAE;YAEzB,IACE2C,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IACnBA,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IACnBA,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IACnBA,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IACnBA,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,EACnB;cACAiB,KAAK,GAAG;gBACNM,OAAO,EAAGvB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAIA,OAAO,CAAC,CAAC,CAAC;gBACvCgC,MAAM,EAAGhC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAIA,OAAO,CAAC,CAAC,CAAC;gBACtCiC,MAAM,EAAGjC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAIA,OAAO,CAAC,EAAE,CAAC;gBACvCkC,aAAa,EAAElC,OAAO,CAAC,EAAE;cAC3B,CAAC;YACH;UACF;UACA;QAEF,KAAK,MAAM;UACT,MAAMmC,wBAAwB,GAAGr9B,UAAU,CAACzB,IAAI,EAAEuB,MAAM,CAAC;UACzDA,MAAM,IAAI,CAAC;UACX,MAAMw9B,qBAAqB,GAAGD,wBAAwB,GAAGv9B,MAAM,GAAG,CAAC;UACnE,IAAIu3B,CAAC;UACL,OAAOv3B,MAAM,GAAGw9B,qBAAqB,EAAE;YACrC,MAAMC,qBAAqB,GAAGh/B,IAAI,CAACuB,MAAM,EAAE,CAAC;YAC5C,MAAM09B,SAAS,GAAG,IAAIvvB,WAAW,CAAC,EAAE,CAAC;YACrC,IAAIsvB,qBAAqB,IAAI,CAAC,KAAK,CAAC,EAAE;cAEpC,KAAKpxB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;gBACvBkrB,CAAC,GAAG9C,SAAS,CAACpoB,CAAC,CAAC;gBAChBqxB,SAAS,CAACnG,CAAC,CAAC,GAAG94B,IAAI,CAACuB,MAAM,EAAE,CAAC;cAC/B;YACF,CAAC,MAAM,IAAIy9B,qBAAqB,IAAI,CAAC,KAAK,CAAC,EAAE;cAE3C,KAAKpxB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;gBACvBkrB,CAAC,GAAG9C,SAAS,CAACpoB,CAAC,CAAC;gBAChBqxB,SAAS,CAACnG,CAAC,CAAC,GAAGr3B,UAAU,CAACzB,IAAI,EAAEuB,MAAM,CAAC;gBACvCA,MAAM,IAAI,CAAC;cACb;YACF,CAAC,MAAM;cACL,MAAM,IAAIq0B,SAAS,CAAC,0BAA0B,CAAC;YACjD;YACAkI,kBAAkB,CAACkB,qBAAqB,GAAG,EAAE,CAAC,GAAGC,SAAS;UAC5D;UACA;QAEF,KAAK,MAAM;QACX,KAAK,MAAM;QACX,KAAK,MAAM;UACT,IAAIjI,KAAK,EAAE;YACT,MAAM,IAAIpB,SAAS,CAAC,mCAAmC,CAAC;UAC1D;UACAr0B,MAAM,IAAI,CAAC;UAEXy1B,KAAK,GAAG,CAAC,CAAC;UACVA,KAAK,CAACkI,QAAQ,GAAGlF,UAAU,KAAK,MAAM;UACtChD,KAAK,CAACS,WAAW,GAAGuC,UAAU,KAAK,MAAM;UACzChD,KAAK,CAACgB,SAAS,GAAGh4B,IAAI,CAACuB,MAAM,EAAE,CAAC;UAChC,MAAM49B,YAAY,GAAG19B,UAAU,CAACzB,IAAI,EAAEuB,MAAM,CAAC;UAC7CA,MAAM,IAAI,CAAC;UACXy1B,KAAK,CAAClB,SAAS,GAAG4H,YAAY,IAAIyB,YAAY;UAC9CnI,KAAK,CAACkF,cAAc,GAAGz6B,UAAU,CAACzB,IAAI,EAAEuB,MAAM,CAAC;UAC/CA,MAAM,IAAI,CAAC;UACXy1B,KAAK,CAACC,UAAU,GAAG,EAAE;UACrBD,KAAK,CAACoI,YAAY,GAAG,CAAC,CAAC;UACvB,MAAMC,eAAe,GAAGr/B,IAAI,CAACuB,MAAM,EAAE,CAAC;UACtC,IAAI46B,IAAI,GAAG,CAAC;YACVC,IAAI,GAAG,CAAC;UACV,KAAKrwC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGszC,eAAe,EAAEtzC,CAAC,EAAE,EAAE;YACpC,MAAMuzC,WAAW,GAAGt/B,IAAI,CAACuB,MAAM,CAAC;YAChC,MAAMq4B,CAAC,GAAG55B,IAAI,CAACuB,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC;YAC/B,MAAM5J,CAAC,GAAGqI,IAAI,CAACuB,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE;YAC/B,IAAI46B,IAAI,GAAGvC,CAAC,EAAE;cACZuC,IAAI,GAAGvC,CAAC;YACV;YACA,IAAIwC,IAAI,GAAGzkC,CAAC,EAAE;cACZykC,IAAI,GAAGzkC,CAAC;YACV;YACA,MAAM4nC,GAAG,GAAGv/B,IAAI,CAACuB,MAAM,GAAG,CAAC,CAAC;YAC5B08B,CAAC,GAAGjH,KAAK,CAACC,UAAU,CAAC5qC,IAAI,CAAC;cACxButC,CAAC;cACDjiC,CAAC;cACD6nC,cAAc,EAAED,GAAG;cACnB3E,iBAAiB,EAAE;YACrB,CAAC,CAAC;YACF5D,KAAK,CAACoI,YAAY,CAACE,WAAW,CAAC,GAAGrB,CAAC,GAAG,CAAC;YACvC18B,MAAM,IAAI,CAAC;UACb;UACAy1B,KAAK,CAACmF,IAAI,GAAGA,IAAI;UACjBnF,KAAK,CAACoF,IAAI,GAAGA,IAAI;UACjBH,iBAAiB,CAACjF,KAAK,CAAC;UACxB;QAEF,KAAK,MAAM;UACT,MAAMyI,aAAa,GAAGh+B,UAAU,CAACzB,IAAI,EAAEuB,MAAM,CAAC;UAC9CA,MAAM,IAAI,CAAC;UACX,KAAKxV,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0zC,aAAa,GAAI;YAC/B,MAAMC,gBAAgB,GAAG1/B,IAAI,CAACuB,MAAM,EAAE,CAAC;YACvC,MAAMm1B,WAAW,GAAG,IAAIjqC,UAAU,CAAC,EAAE,CAAC;YACtC,IAAIkzC,aAAa,GAAG,CAAC;YACrB,KAAK/xB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAErM,MAAM,EAAE,EAAE;cACjCo+B,aAAa,IAAIjJ,WAAW,CAAC9oB,CAAC,CAAC,GAAG5N,IAAI,CAACuB,MAAM,CAAC;YAChD;YACA,MAAMq+B,aAAa,GAAG,IAAInzC,UAAU,CAACkzC,aAAa,CAAC;YACnD,KAAK/xB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+xB,aAAa,EAAE/xB,CAAC,EAAE,EAAErM,MAAM,EAAE,EAAE;cAC5Cq+B,aAAa,CAAChyB,CAAC,CAAC,GAAG5N,IAAI,CAACuB,MAAM,CAAC;YACjC;YACAxV,CAAC,IAAI,EAAE,GAAG4zC,aAAa;YAEvB,CAACD,gBAAgB,IAAI,CAAC,KAAK,CAAC,GAAG1B,eAAe,GAAGD,eAAe,EAC9D2B,gBAAgB,GAAG,EAAE,CACtB,GAAGjJ,iBAAiB,CAACC,WAAW,EAAEkJ,aAAa,CAAC;UACnD;UACA;QAEF,KAAK,MAAM;UACTr+B,MAAM,IAAI,CAAC;UAEX21B,aAAa,GAAGz1B,UAAU,CAACzB,IAAI,EAAEuB,MAAM,CAAC;UACxCA,MAAM,IAAI,CAAC;UACX;QAEF,KAAK,MAAM;UAKT,MAAMg2B,cAAc,GAAG,EAAEsG,aAAa,KAAK,CAAC,IAAI,CAACH,YAAY;UAE7Dn8B,MAAM,IAAI,CAAC;UAEX,MAAMs+B,cAAc,GAAG7/B,IAAI,CAACuB,MAAM,EAAE,CAAC;YACnC01B,UAAU,GAAG,EAAE;UACjB,KAAKlrC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG8zC,cAAc,EAAE9zC,CAAC,EAAE,EAAE;YACnC,MAAMw0B,KAAK,GAAGvgB,IAAI,CAACuB,MAAM,EAAE,CAAC;YAC5B,MAAMu+B,cAAc,GAAG9I,KAAK,CAACoI,YAAY,CAAC7e,KAAK,CAAC;YAChD,MAAM1d,SAAS,GAAGm0B,KAAK,CAACC,UAAU,CAAC6I,cAAc,CAAC;YAClDj9B,SAAS,CAAC0d,KAAK,GAAGA,KAAK;YACvB,MAAMwf,SAAS,GAAG//B,IAAI,CAACuB,MAAM,EAAE,CAAC;YAChCsB,SAAS,CAAC01B,cAAc,GAAGyF,eAAe,CAAC+B,SAAS,IAAI,CAAC,CAAC;YAC1Dl9B,SAAS,CAAC+1B,cAAc,GAAGmF,eAAe,CAACgC,SAAS,GAAG,EAAE,CAAC;YAC1D9I,UAAU,CAAC5qC,IAAI,CAACwW,SAAS,CAAC;UAC5B;UACA,MAAMs0B,aAAa,GAAGn3B,IAAI,CAACuB,MAAM,EAAE,CAAC;YAClC61B,WAAW,GAAGp3B,IAAI,CAACuB,MAAM,EAAE,CAAC;YAC5By+B,uBAAuB,GAAGhgC,IAAI,CAACuB,MAAM,EAAE,CAAC;UAC1C,IAAI;YACF,MAAM0+B,SAAS,GAAGlJ,UAAU,CAC1B/2B,IAAI,EACJuB,MAAM,EACNy1B,KAAK,EACLC,UAAU,EACVC,aAAa,EACbC,aAAa,EACbC,WAAW,EACX4I,uBAAuB,IAAI,CAAC,EAC5BA,uBAAuB,GAAG,EAAE,EAC5BzI,cACF,CAAC;YACDh2B,MAAM,IAAI0+B,SAAS;UACrB,CAAC,CAAC,OAAOrrC,EAAE,EAAE;YACX,IAAIA,EAAE,YAAYihC,cAAc,EAAE;cAChC3tC,SAAI,CAAC,GAAG0M,EAAE,CAACnK,OAAO,4CAA4C,CAAC;cAC/D,OAAO,IAAI,CAACnB,KAAK,CAAC0W,IAAI,EAAE;gBAAE09B,YAAY,EAAE9oC,EAAE,CAACkhC;cAAU,CAAC,CAAC;YACzD,CAAC,MAAM,IAAIlhC,EAAE,YAAYmhC,cAAc,EAAE;cACvC7tC,SAAI,CAAC,GAAG0M,EAAE,CAACnK,OAAO,0CAA0C,CAAC;cAC7D,MAAM8yC,UAAU;YAClB;YACA,MAAM3oC,EAAE;UACV;UACA;QAEF,KAAK,MAAM;UAET2M,MAAM,IAAI,CAAC;UACX;QAEF,KAAK,MAAM;UACT,IAAIvB,IAAI,CAACuB,MAAM,CAAC,KAAK,IAAI,EAAE;YAEzBA,MAAM,EAAE;UACV;UACA;QAEF;UAIE,MAAM2+B,cAAc,GAAG7F,kBAAkB,CACvCr6B,IAAI,EACeuB,MAAM,GAAG,CAAC,EACZA,MAAM,GAAG,CAC5B,CAAC;UACD,IAAI2+B,cAAc,EAAE5F,OAAO,EAAE;YAC3BpyC,SAAI,CACF,wDAAwD,GACtDg4C,cAAc,CAAC5F,OACnB,CAAC;YACD/4B,MAAM,GAAG2+B,cAAc,CAAC3+B,MAAM;YAC9B;UACF;UACA,IAAI,CAAC2+B,cAAc,IAAI3+B,MAAM,IAAIvB,IAAI,CAAC/W,MAAM,GAAG,CAAC,EAAE;YAChDf,SAAI,CACF,sDAAsD,GACpD,yCACJ,CAAC;YACD,MAAMq1C,UAAU;UAClB;UACA,MAAM,IAAI3H,SAAS,CACjB,oCAAoC,GAAGoE,UAAU,CAACrrC,QAAQ,CAAC,EAAE,CAC/D,CAAC;MACL;MACAqrC,UAAU,GAAGv4B,UAAU,CAACzB,IAAI,EAAEuB,MAAM,CAAC;MACrCA,MAAM,IAAI,CAAC;IACb;IAEA,IAAI,CAACy1B,KAAK,EAAE;MACV,MAAM,IAAIpB,SAAS,CAAC,wCAAwC,CAAC;IAC/D;IACA,IAAI,CAAC/uB,KAAK,GAAGmwB,KAAK,CAACkF,cAAc;IACjC,IAAI,CAACp1B,MAAM,GAAGkwB,KAAK,CAAClB,SAAS;IAC7B,IAAI,CAAC6H,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAAC3G,UAAU,GAAG,EAAE;IACpB,KAAK,MAAMp0B,SAAS,IAAIm0B,KAAK,CAACC,UAAU,EAAE;MAIxC,MAAM2D,iBAAiB,GAAGkD,kBAAkB,CAACj7B,SAAS,CAAC28B,cAAc,CAAC;MACtE,IAAI5E,iBAAiB,EAAE;QACrB/3B,SAAS,CAAC+3B,iBAAiB,GAAGA,iBAAiB;MACjD;MAEA,IAAI,CAAC3D,UAAU,CAAC5qC,IAAI,CAAC;QACnBk0B,KAAK,EAAE1d,SAAS,CAAC0d,KAAK;QACtB/vB,MAAM,EAAEgrC,kBAAkB,CAACxE,KAAK,EAAEn0B,SAAS,CAAC;QAC5Cs9B,MAAM,EAAEt9B,SAAS,CAAC+2B,CAAC,GAAG5C,KAAK,CAACmF,IAAI;QAChCiE,MAAM,EAAEv9B,SAAS,CAAClL,CAAC,GAAGq/B,KAAK,CAACoF,IAAI;QAChCtF,aAAa,EAAEj0B,SAAS,CAACi0B,aAAa;QACtCoD,eAAe,EAAEr3B,SAAS,CAACq3B;MAC7B,CAAC,CAAC;IACJ;IACA,IAAI,CAACoD,aAAa,GAAG,IAAI,CAACrG,UAAU,CAAChuC,MAAM;IAC3C,OAAOwC,SAAS;EAClB;EAEA40C,uBAAuBA,CAACx5B,KAAK,EAAEC,MAAM,EAAEw5B,WAAW,GAAG,KAAK,EAAE;IAC1D,MAAMH,MAAM,GAAG,IAAI,CAACt5B,KAAK,GAAGA,KAAK;MAC/Bu5B,MAAM,GAAG,IAAI,CAACt5B,MAAM,GAAGA,MAAM;IAE/B,IAAIjE,SAAS,EAAE09B,eAAe,EAAEC,eAAe,EAAEC,iBAAiB;IAClE,IAAI7tC,CAAC,EAAEC,CAAC,EAAE9G,CAAC,EAAE6hB,CAAC,EAAEyB,CAAC;IACjB,IAAIkR,KAAK;IACT,IAAIhf,MAAM,GAAG,CAAC;IACd,IAAI/Q,MAAM;IACV,MAAM8sC,aAAa,GAAG,IAAI,CAACrG,UAAU,CAAChuC,MAAM;IAC5C,MAAM6W,UAAU,GAAG+G,KAAK,GAAGC,MAAM,GAAGw2B,aAAa;IACjD,MAAMt9B,IAAI,GAAG,IAAIqc,iBAAiB,CAACvc,UAAU,CAAC;IAC9C,MAAM4gC,iBAAiB,GAAG,IAAIzzC,WAAW,CAAC4Z,KAAK,CAAC;IAChD,MAAM85B,QAAQ,GAAG,UAAU;IAC3B,IAAIC,mBAAmB;IAEvB,KAAK70C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGuxC,aAAa,EAAEvxC,CAAC,EAAE,EAAE;MAClC8W,SAAS,GAAG,IAAI,CAACo0B,UAAU,CAAClrC,CAAC,CAAC;MAC9Bw0C,eAAe,GAAG19B,SAAS,CAACs9B,MAAM,GAAGA,MAAM;MAC3CK,eAAe,GAAG39B,SAAS,CAACu9B,MAAM,GAAGA,MAAM;MAC3C7+B,MAAM,GAAGxV,CAAC;MACVyE,MAAM,GAAGqS,SAAS,CAACrS,MAAM;MACzBiwC,iBAAiB,GAAI59B,SAAS,CAACi0B,aAAa,GAAG,CAAC,IAAK,CAAC;MAGtD,IAAIyJ,eAAe,KAAKK,mBAAmB,EAAE;QAC3C,KAAKhuC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiU,KAAK,EAAEjU,CAAC,EAAE,EAAE;UAC1Bgb,CAAC,GAAG,CAAC,GAAIhb,CAAC,GAAG2tC,eAAgB;UAC7BG,iBAAiB,CAAC9tC,CAAC,CAAC,GAAI,CAACgb,CAAC,GAAG+yB,QAAQ,KAAK,CAAC,GAAK/yB,CAAC,GAAG,CAAE;QACxD;QACAgzB,mBAAmB,GAAGL,eAAe;MACvC;MAEA,KAAK1tC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiU,MAAM,EAAEjU,CAAC,EAAE,EAAE;QAC3B+a,CAAC,GAAG,CAAC,GAAI/a,CAAC,GAAG2tC,eAAgB;QAC7BjgB,KAAK,GAAIkgB,iBAAiB,IAAI7yB,CAAC,GAAG+yB,QAAQ,CAAC,GAAK,CAAC/yB,CAAC,GAAG,CAAC,KAAK,CAAE;QAC7D,KAAKhb,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiU,KAAK,EAAEjU,CAAC,EAAE,EAAE;UAC1BoN,IAAI,CAACuB,MAAM,CAAC,GAAG/Q,MAAM,CAAC+vB,KAAK,GAAGmgB,iBAAiB,CAAC9tC,CAAC,CAAC,CAAC;UACnD2O,MAAM,IAAI+7B,aAAa;QACzB;MACF;IACF;IAGA,IAAIl7C,SAAS,GAAG,IAAI,CAAC86C,gBAAgB;IAarC,IAAI,CAACoD,WAAW,IAAIhD,aAAa,KAAK,CAAC,IAAI,CAACl7C,SAAS,EAAE;MACrDA,SAAS,GAAG,IAAIuuB,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC1E;IAEA,IAAIvuB,SAAS,EAAE;MACb,KAAK2J,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+T,UAAU,GAAI;QAC5B,KAAK8N,CAAC,GAAG,CAAC,EAAEyB,CAAC,GAAG,CAAC,EAAEzB,CAAC,GAAG0vB,aAAa,EAAE1vB,CAAC,EAAE,EAAE7hB,CAAC,EAAE,EAAEsjB,CAAC,IAAI,CAAC,EAAE;UACtDrP,IAAI,CAACjU,CAAC,CAAC,GAAG,CAAEiU,IAAI,CAACjU,CAAC,CAAC,GAAG3J,SAAS,CAACitB,CAAC,CAAC,IAAK,CAAC,IAAIjtB,SAAS,CAACitB,CAAC,GAAG,CAAC,CAAC;QAC9D;MACF;IACF;IACA,OAAOrP,IAAI;EACb;EAEA,IAAI6gC,wBAAwBA,CAAA,EAAG;IAC7B,IAAI,IAAI,CAACjD,KAAK,EAAE;MAEd,OAAO,CAAC,CAAC,IAAI,CAACA,KAAK,CAACiB,aAAa;IACnC;IACA,IAAI,IAAI,CAACvB,aAAa,KAAK,CAAC,EAAE;MAC5B,IAAI,IAAI,CAACH,eAAe,KAAK,CAAC,EAAE;QAI9B,OAAO,KAAK;MACd,CAAC,MAAM,IACL,IAAI,CAAClG,UAAU,CAAC,CAAC,CAAC,CAAC1W,KAAK,KAAiB,IAAI,IAC7C,IAAI,CAAC0W,UAAU,CAAC,CAAC,CAAC,CAAC1W,KAAK,KAAiB,IAAI,IAC7C,IAAI,CAAC0W,UAAU,CAAC,CAAC,CAAC,CAAC1W,KAAK,KAAiB,IAAI,EAC7C;QAGA,OAAO,KAAK;MACd;MACA,OAAO,IAAI;IACb;IAEA,IAAI,IAAI,CAAC4c,eAAe,KAAK,CAAC,EAAE;MAI9B,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;EAEA2D,gBAAgBA,CAAC9gC,IAAI,EAAE;IACrB,IAAI8qB,CAAC,EAAEiW,EAAE,EAAEC,EAAE;IACb,KAAK,IAAIj1C,CAAC,GAAG,CAAC,EAAE9C,MAAM,GAAG+W,IAAI,CAAC/W,MAAM,EAAE8C,CAAC,GAAG9C,MAAM,EAAE8C,CAAC,IAAI,CAAC,EAAE;MACxD++B,CAAC,GAAG9qB,IAAI,CAACjU,CAAC,CAAC;MACXg1C,EAAE,GAAG/gC,IAAI,CAACjU,CAAC,GAAG,CAAC,CAAC;MAChBi1C,EAAE,GAAGhhC,IAAI,CAACjU,CAAC,GAAG,CAAC,CAAC;MAChBiU,IAAI,CAACjU,CAAC,CAAC,GAAG++B,CAAC,GAAG,OAAO,GAAG,KAAK,GAAGkW,EAAE;MAClChhC,IAAI,CAACjU,CAAC,GAAG,CAAC,CAAC,GAAG++B,CAAC,GAAG,OAAO,GAAG,KAAK,GAAGiW,EAAE,GAAG,KAAK,GAAGC,EAAE;MACnDhhC,IAAI,CAACjU,CAAC,GAAG,CAAC,CAAC,GAAG++B,CAAC,GAAG,OAAO,GAAG,KAAK,GAAGiW,EAAE;IACxC;IACA,OAAO/gC,IAAI;EACb;EAEAihC,iBAAiBA,CAACjhC,IAAI,EAAEkhC,GAAG,EAAE;IAC3B,KAAK,IAAIn1C,CAAC,GAAG,CAAC,EAAE6hB,CAAC,GAAG,CAAC,EAAE3kB,MAAM,GAAG+W,IAAI,CAAC/W,MAAM,EAAE8C,CAAC,GAAG9C,MAAM,EAAE8C,CAAC,IAAI,CAAC,EAAE6hB,CAAC,IAAI,CAAC,EAAE;MACvE,MAAMkd,CAAC,GAAG9qB,IAAI,CAACjU,CAAC,CAAC;MACjB,MAAMg1C,EAAE,GAAG/gC,IAAI,CAACjU,CAAC,GAAG,CAAC,CAAC;MACtB,MAAMi1C,EAAE,GAAGhhC,IAAI,CAACjU,CAAC,GAAG,CAAC,CAAC;MACtBm1C,GAAG,CAACtzB,CAAC,CAAC,GAAGkd,CAAC,GAAG,OAAO,GAAG,KAAK,GAAGkW,EAAE;MACjCE,GAAG,CAACtzB,CAAC,GAAG,CAAC,CAAC,GAAGkd,CAAC,GAAG,OAAO,GAAG,KAAK,GAAGiW,EAAE,GAAG,KAAK,GAAGC,EAAE;MAClDE,GAAG,CAACtzB,CAAC,GAAG,CAAC,CAAC,GAAGkd,CAAC,GAAG,OAAO,GAAG,KAAK,GAAGiW,EAAE;MACrCG,GAAG,CAACtzB,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG;IAClB;IACA,OAAOszB,GAAG;EACZ;EAEAC,iBAAiBA,CAACnhC,IAAI,EAAE;IACtB,IAAI,CAACohC,kBAAkB,CAACphC,IAAI,CAAC;IAC7B,OAAO,IAAI,CAACqhC,iBAAiB,CAACrhC,IAAI,CAAC;EACrC;EAEAshC,kBAAkBA,CAACthC,IAAI,EAAE;IACvB,IAAI,CAACohC,kBAAkB,CAACphC,IAAI,CAAC;IAC7B,OAAO,IAAI,CAACuhC,kBAAkB,CAACvhC,IAAI,CAAC;EACtC;EAEAohC,kBAAkBA,CAACphC,IAAI,EAAE;IACvB,IAAI8qB,CAAC,EAAEiW,EAAE,EAAEC,EAAE;IACb,KAAK,IAAIj1C,CAAC,GAAG,CAAC,EAAE9C,MAAM,GAAG+W,IAAI,CAAC/W,MAAM,EAAE8C,CAAC,GAAG9C,MAAM,EAAE8C,CAAC,IAAI,CAAC,EAAE;MACxD++B,CAAC,GAAG9qB,IAAI,CAACjU,CAAC,CAAC;MACXg1C,EAAE,GAAG/gC,IAAI,CAACjU,CAAC,GAAG,CAAC,CAAC;MAChBi1C,EAAE,GAAGhhC,IAAI,CAACjU,CAAC,GAAG,CAAC,CAAC;MAChBiU,IAAI,CAACjU,CAAC,CAAC,GAAG,OAAO,GAAG++B,CAAC,GAAG,KAAK,GAAGkW,EAAE;MAClChhC,IAAI,CAACjU,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG++B,CAAC,GAAG,KAAK,GAAGiW,EAAE,GAAG,KAAK,GAAGC,EAAE;MACnDhhC,IAAI,CAACjU,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG++B,CAAC,GAAG,KAAK,GAAGiW,EAAE;IAExC;IACA,OAAO/gC,IAAI;EACb;EAEAqhC,iBAAiBA,CAACrhC,IAAI,EAAE;IACtB,MAAMkjB,KAAK,GAAGljB,IAAI,CAAC/W,MAAM,GAAG,CAAC;IAC7B2pC,eAAe,CAACoB,IAAI,CAAC/Q,YAAY,CAACjjB,IAAI,EAAE,CAAC,EAAEkjB,KAAK,EAAEljB,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChE,OAAOA,IAAI,CAAC5T,QAAQ,CAAC,CAAC,EAAE82B,KAAK,GAAG,CAAC,CAAC;EACpC;EAEAqe,kBAAkBA,CAACvhC,IAAI,EAAE;IACvB4yB,eAAe,CAACoB,IAAI,CAAC/Q,YAAY,CAACjjB,IAAI,EAAE,CAAC,EAAEA,IAAI,CAAC/W,MAAM,GAAG,CAAC,EAAE+W,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAE1E,IAAI4yB,eAAe,CAACoB,IAAI,YAAYtO,YAAY,EAAE;MAEhD,KAAK,IAAI35B,CAAC,GAAG,CAAC,EAAE8I,EAAE,GAAGmL,IAAI,CAAC/W,MAAM,EAAE8C,CAAC,GAAG8I,EAAE,EAAE9I,CAAC,IAAI,CAAC,EAAE;QAChDiU,IAAI,CAACjU,CAAC,CAAC,GAAG,GAAG;MACf;IACF;IACA,OAAOiU,IAAI;EACb;EAEAwhC,OAAOA,CAAC;IACN36B,KAAK;IACLC,MAAM;IACN26B,SAAS,GAAG,KAAK;IACjBC,QAAQ,GAAG,KAAK;IAChBpB,WAAW,GAAG;EAChB,CAAC,EAAE;IAOD,IAAI,IAAI,CAAChD,aAAa,GAAG,CAAC,EAAE;MAC1B,MAAM,IAAI1H,SAAS,CAAC,wBAAwB,CAAC;IAC/C;IAEA,MAAM51B,IAAI,GAAG,IAAI,CAACqgC,uBAAuB,CAACx5B,KAAK,EAAEC,MAAM,EAAEw5B,WAAW,CAAC;IAErE,IAAI,IAAI,CAAChD,aAAa,KAAK,CAAC,KAAKmE,SAAS,IAAIC,QAAQ,CAAC,EAAE;MACvD,MAAM5/B,GAAG,GAAG9B,IAAI,CAAC/W,MAAM,IAAIw4C,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;MAC7C,MAAME,QAAQ,GAAG,IAAItlB,iBAAiB,CAACva,GAAG,CAAC;MAC3C,IAAIP,MAAM,GAAG,CAAC;MACd,IAAIkgC,SAAS,EAAE;QACb9L,UAAU,CAAC31B,IAAI,EAAE,IAAI/S,WAAW,CAAC00C,QAAQ,CAACz0C,MAAM,CAAC,CAAC;MACpD,CAAC,MAAM;QACL,KAAK,MAAM00C,SAAS,IAAI5hC,IAAI,EAAE;UAC5B2hC,QAAQ,CAACpgC,MAAM,EAAE,CAAC,GAAGqgC,SAAS;UAC9BD,QAAQ,CAACpgC,MAAM,EAAE,CAAC,GAAGqgC,SAAS;UAC9BD,QAAQ,CAACpgC,MAAM,EAAE,CAAC,GAAGqgC,SAAS;QAChC;MACF;MACA,OAAOD,QAAQ;IACjB,CAAC,MAAM,IAAI,IAAI,CAACrE,aAAa,KAAK,CAAC,IAAI,IAAI,CAACuD,wBAAwB,EAAE;MACpE,IAAIY,SAAS,EAAE;QACb,MAAME,QAAQ,GAAG,IAAItlB,iBAAiB,CAAErc,IAAI,CAAC/W,MAAM,GAAG,CAAC,GAAI,CAAC,CAAC;QAC7D,OAAO,IAAI,CAACg4C,iBAAiB,CAACjhC,IAAI,EAAE2hC,QAAQ,CAAC;MAC/C;MACA,OAAO,IAAI,CAACb,gBAAgB,CAAC9gC,IAAI,CAAC;IACpC,CAAC,MAAM,IAAI,IAAI,CAACs9B,aAAa,KAAK,CAAC,EAAE;MACnC,IAAI,IAAI,CAACuD,wBAAwB,EAAE;QACjC,IAAIY,SAAS,EAAE;UACb,OAAO,IAAI,CAACH,kBAAkB,CAACthC,IAAI,CAAC;QACtC;QACA,IAAI0hC,QAAQ,EAAE;UACZ,OAAO,IAAI,CAACP,iBAAiB,CAACnhC,IAAI,CAAC;QACrC;QACA,OAAO,IAAI,CAACohC,kBAAkB,CAACphC,IAAI,CAAC;MACtC,CAAC,MAAM,IAAIyhC,SAAS,EAAE;QACpB,OAAO,IAAI,CAACF,kBAAkB,CAACvhC,IAAI,CAAC;MACtC,CAAC,MAAM,IAAI0hC,QAAQ,EAAE;QACnB,OAAO,IAAI,CAACL,iBAAiB,CAACrhC,IAAI,CAAC;MACrC;IACF;IACA,OAAOA,IAAI;EACb;AACF;;;ACz4CA,IAAI6hC,QAAQ,GAAG,CAAC,MAAM;EACpB,IAAIC,WAAW,GAAGzQ,MAAM,CAACC,IAAI,CAAC9oC,GAAG;EAEjC,OACF,gBAAeu5C,SAAS,GAAG,CAAC,CAAC,EAAE;IAC7B,IAAIC,SAAS;IAEf,IAAI7Q,MAAM,GAAC4Q,SAAS;IAAC,IAAIE,mBAAmB,EAACC,kBAAkB;IAAC,IAAIC,YAAY,GAAC,IAAI7pC,OAAO,CAAC,CAACG,OAAO,EAACg7B,MAAM,KAAG;MAACwO,mBAAmB,GAACxpC,OAAO;MAACypC,kBAAkB,GAACzO,MAAM;IAAA,CAAC,CAAC;IAAC,IAAI2O,kBAAkB,GAAC,IAAI;IAAC,IAAIC,qBAAqB,GAAC,KAAK;IAAC,IAAIC,eAAe,GAACp4C,MAAM,CAACq4C,MAAM,CAAC,CAAC,CAAC,EAACpR,MAAM,CAAC;IAAC,IAAIqR,UAAU,GAAC,EAAE;IAAC,IAAIC,WAAW,GAAC,gBAAgB;IAAC,IAAIC,KAAK,GAACA,CAACv3C,MAAM,EAACw3C,OAAO,KAAG;MAAC,MAAMA,OAAO;IAAA,CAAC;IAAC,IAAIC,eAAe,GAAC,EAAE;IAAC,SAASC,UAAUA,CAACngC,IAAI,EAAC;MAAC,IAAGyuB,MAAM,CAAC,YAAY,CAAC,EAAC;QAAC,OAAOA,MAAM,CAAC,YAAY,CAAC,CAACzuB,IAAI,EAACkgC,eAAe,CAAC;MAAA;MAAC,OAAOA,eAAe,GAAClgC,IAAI;IAAA;IAAC,IAAIogC,SAAS,EAACC,UAAU;IAAC,IAAGX,kBAAkB,IAAEC,qBAAqB,EAAC;MAAC,IAAGA,qBAAqB,EAAC;QAACO,eAAe,GAACI,IAAI,CAACC,QAAQ,CAACt5C,IAAI;MAAA,CAAC,MAAK,IAAG,OAAOu5C,QAAQ,IAAE,WAAW,IAAEA,QAAQ,CAACC,aAAa,EAAC;QAACP,eAAe,GAACM,QAAQ,CAACC,aAAa,CAAC7hB,GAAG;MAAA;MAAC,IAAGwgB,WAAW,EAAC;QAACc,eAAe,GAACd,WAAW;MAAA;MAAC,IAAGc,eAAe,CAAC95C,UAAU,CAAC,OAAO,CAAC,EAAC;QAAC85C,eAAe,GAAC,EAAE;MAAA,CAAC,MAAI;QAACA,eAAe,GAACA,eAAe,CAACzwC,KAAK,CAAC,CAAC,EAACywC,eAAe,CAACQ,OAAO,CAAC,QAAQ,EAAC,EAAE,CAAC,CAACC,WAAW,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC;MAAA;MAAEP,SAAS,GAAC,MAAMt6C,GAAG,IAAE;QAAC,IAAI2X,QAAQ,GAAC,MAAM7F,KAAK,CAAC9R,GAAG,EAAC;UAAC86C,WAAW,EAAC;QAAa,CAAC,CAAC;QAAC,IAAGnjC,QAAQ,CAACC,EAAE,EAAC;UAAC,OAAOD,QAAQ,CAACG,WAAW,CAAC,CAAC;QAAA;QAAC,MAAM,IAAIlY,KAAK,CAAC+X,QAAQ,CAAChV,MAAM,GAAC,KAAK,GAACgV,QAAQ,CAAC3X,GAAG,CAAC;MAAA,CAAC;IAAC,CAAC,MAAI,CAAC;IAAC,IAAI04C,GAAG,GAAC/P,MAAM,CAAC,OAAO,CAAC,IAAEnpC,OAAO,CAACC,GAAG,CAACs7C,IAAI,CAACv7C,OAAO,CAAC;IAAC,IAAImjB,GAAG,GAACgmB,MAAM,CAAC,UAAU,CAAC,IAAEnpC,OAAO,CAACw7C,KAAK,CAACD,IAAI,CAACv7C,OAAO,CAAC;IAACkC,MAAM,CAACq4C,MAAM,CAACpR,MAAM,EAACmR,eAAe,CAAC;IAACA,eAAe,GAAC,IAAI;IAAC,IAAGnR,MAAM,CAAC,WAAW,CAAC,EAACqR,UAAU,GAACrR,MAAM,CAAC,WAAW,CAAC;IAAC,IAAGA,MAAM,CAAC,aAAa,CAAC,EAACsR,WAAW,GAACtR,MAAM,CAAC,aAAa,CAAC;IAAC,IAAIsS,UAAU,GAACtS,MAAM,CAAC,YAAY,CAAC;IAAC,IAAIuS,UAAU;IAAC,IAAIC,KAAK,GAAC,KAAK;IAAC,IAAIC,UAAU;IAAC,IAAIC,KAAK,EAACC,MAAM,EAACC,MAAM,EAACC,OAAO,EAACC,MAAM,EAACC,OAAO,EAACC,OAAO,EAACC,MAAM,EAACC,OAAO,EAACC,OAAO;IAAC,IAAIC,kBAAkB,GAAC,KAAK;IAAC,SAASC,iBAAiBA,CAAA,EAAE;MAAC,IAAIv1C,CAAC,GAACy0C,UAAU,CAACx2C,MAAM;MAACikC,MAAM,CAAC,OAAO,CAAC,GAAC0S,KAAK,GAAC,IAAIz3B,SAAS,CAACnd,CAAC,CAAC;MAACkiC,MAAM,CAAC,QAAQ,CAAC,GAAC4S,MAAM,GAAC,IAAIrI,UAAU,CAACzsC,CAAC,CAAC;MAACkiC,MAAM,CAAC,QAAQ,CAAC,GAAC2S,MAAM,GAAC,IAAIr3C,UAAU,CAACwC,CAAC,CAAC;MAACkiC,MAAM,CAAC,SAAS,CAAC,GAAC6S,OAAO,GAAC,IAAIt0B,WAAW,CAACzgB,CAAC,CAAC;MAACkiC,MAAM,CAAC,QAAQ,CAAC,GAAC8S,MAAM,GAAC,IAAItzB,UAAU,CAAC1hB,CAAC,CAAC;MAACkiC,MAAM,CAAC,SAAS,CAAC,GAAC+S,OAAO,GAAC,IAAIj3C,WAAW,CAACgC,CAAC,CAAC;MAACkiC,MAAM,CAAC,SAAS,CAAC,GAACgT,OAAO,GAAC,IAAIzf,YAAY,CAACz1B,CAAC,CAAC;MAACkiC,MAAM,CAAC,SAAS,CAAC,GAACmT,OAAO,GAAC,IAAIG,YAAY,CAACx1C,CAAC,CAAC;MAACkiC,MAAM,CAAC,QAAQ,CAAC,GAACiT,MAAM,GAAC,IAAIjiC,aAAa,CAAClT,CAAC,CAAC;MAACkiC,MAAM,CAAC,SAAS,CAAC,GAACkT,OAAO,GAAC,IAAIjiC,cAAc,CAACnT,CAAC,CAAC;IAAA;IAAC,SAASy1C,MAAMA,CAAA,EAAE;MAAC,IAAGvT,MAAM,CAAC,QAAQ,CAAC,EAAC;QAAC,IAAG,OAAOA,MAAM,CAAC,QAAQ,CAAC,IAAE,UAAU,EAACA,MAAM,CAAC,QAAQ,CAAC,GAAC,CAACA,MAAM,CAAC,QAAQ,CAAC,CAAC;QAAC,OAAMA,MAAM,CAAC,QAAQ,CAAC,CAACloC,MAAM,EAAC;UAAC07C,WAAW,CAACxT,MAAM,CAAC,QAAQ,CAAC,CAACjhB,KAAK,CAAC,CAAC,CAAC;QAAA;MAAC;MAAC00B,oBAAoB,CAACC,SAAS,CAAC;IAAA;IAAC,SAASC,WAAWA,CAAA,EAAE;MAACP,kBAAkB,GAAC,IAAI;MAACQ,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAAA;IAAC,SAASC,OAAOA,CAAA,EAAE;MAAC,IAAG7T,MAAM,CAAC,SAAS,CAAC,EAAC;QAAC,IAAG,OAAOA,MAAM,CAAC,SAAS,CAAC,IAAE,UAAU,EAACA,MAAM,CAAC,SAAS,CAAC,GAAC,CAACA,MAAM,CAAC,SAAS,CAAC,CAAC;QAAC,OAAMA,MAAM,CAAC,SAAS,CAAC,CAACloC,MAAM,EAAC;UAACg8C,YAAY,CAAC9T,MAAM,CAAC,SAAS,CAAC,CAACjhB,KAAK,CAAC,CAAC,CAAC;QAAA;MAAC;MAAC00B,oBAAoB,CAACM,UAAU,CAAC;IAAA;IAAC,IAAIC,eAAe,GAAC,CAAC;IAAC,IAAIC,qBAAqB,GAAC,IAAI;IAAC,SAASC,gBAAgBA,CAACl5B,EAAE,EAAC;MAACg5B,eAAe,EAAE;MAAChU,MAAM,CAAC,wBAAwB,CAAC,GAAGgU,eAAe,CAAC;IAAA;IAAC,SAASG,mBAAmBA,CAACn5B,EAAE,EAAC;MAACg5B,eAAe,EAAE;MAAChU,MAAM,CAAC,wBAAwB,CAAC,GAAGgU,eAAe,CAAC;MAAC,IAAGA,eAAe,IAAE,CAAC,EAAC;QAAC,IAAGC,qBAAqB,EAAC;UAAC,IAAIG,QAAQ,GAACH,qBAAqB;UAACA,qBAAqB,GAAC,IAAI;UAACG,QAAQ,CAAC,CAAC;QAAA;MAAC;IAAC;IAAC,SAASC,KAAKA,CAACC,IAAI,EAAC;MAACtU,MAAM,CAAC,SAAS,CAAC,GAAGsU,IAAI,CAAC;MAACA,IAAI,GAAC,UAAU,GAACA,IAAI,GAAC,GAAG;MAACt6B,GAAG,CAACs6B,IAAI,CAAC;MAAC9B,KAAK,GAAC,IAAI;MAAC8B,IAAI,IAAE,0CAA0C;MAAC,IAAI7V,CAAC,GAAC,IAAIF,WAAW,CAACgW,YAAY,CAACD,IAAI,CAAC;MAACvD,kBAAkB,CAACtS,CAAC,CAAC;MAAC,MAAMA,CAAC;IAAA;IAAC,IAAI+V,cAAc;IAAC,SAASC,cAAcA,CAAA,EAAE;MAAC,IAAGzU,MAAM,CAAC,YAAY,CAAC,EAAC;QAAC,OAAO0R,UAAU,CAAC,eAAe,CAAC;MAAA;MAAC,OAAO,IAAIx5C,GAAG;MAAA;MAAA;MAAC,eAAe,EAACgoC,MAAM,CAACC,IAAI,CAAC9oC,GAAG,CAAC,CAACmB,IAAI;IAAA;IAAC,SAASk8C,aAAaA,CAACC,IAAI,EAAC;MAAC,IAAGA,IAAI,IAAEH,cAAc,IAAElC,UAAU,EAAC;QAAC,OAAO,IAAIh3C,UAAU,CAACg3C,UAAU,CAAC;MAAA;MAAC,IAAGV,UAAU,EAAC;QAAC,OAAOA,UAAU,CAAC+C,IAAI,CAAC;MAAA;MAAC,MAAK,iDAAiD;IAAA;IAAC,eAAeC,aAAaA,CAACC,UAAU,EAAC;MAAC,IAAG,CAACvC,UAAU,EAAC;QAAC,IAAG;UAAC,IAAItjC,QAAQ,GAAC,MAAM2iC,SAAS,CAACkD,UAAU,CAAC;UAAC,OAAO,IAAIv5C,UAAU,CAAC0T,QAAQ,CAAC;QAAA,CAAC,OAAK,CAAC;MAAC;MAAC,OAAO0lC,aAAa,CAACG,UAAU,CAAC;IAAA;IAAC,eAAeC,sBAAsBA,CAACD,UAAU,EAACxW,OAAO,EAAC;MAAC,IAAG;QAAC,IAAI0W,MAAM,GAAC,MAAMH,aAAa,CAACC,UAAU,CAAC;QAAC,IAAIjW,QAAQ,GAAC,MAAML,WAAW,CAACI,WAAW,CAACoW,MAAM,EAAC1W,OAAO,CAAC;QAAC,OAAOO,QAAQ;MAAA,CAAC,QAAMoW,MAAM,EAAC;QAACh7B,GAAG,CAAC,0CAA0Cg7B,MAAM,EAAE,CAAC;QAACX,KAAK,CAACW,MAAM,CAAC;MAAA;IAAC;IAAC,eAAeC,gBAAgBA,CAACF,MAAM,EAACF,UAAU,EAACxW,OAAO,EAAC;MAAC,IAAG,CAAC0W,MAAM,IAAE,OAAOxW,WAAW,CAACC,oBAAoB,IAAE,UAAU,EAAC;QAAC,IAAG;UAAC,IAAIxvB,QAAQ,GAAC7F,KAAK,CAAC0rC,UAAU,EAAC;YAAC1C,WAAW,EAAC;UAAa,CAAC,CAAC;UAAC,IAAI+C,mBAAmB,GAAC,MAAM3W,WAAW,CAACC,oBAAoB,CAACxvB,QAAQ,EAACqvB,OAAO,CAAC;UAAC,OAAO6W,mBAAmB;QAAA,CAAC,QAAMF,MAAM,EAAC;UAACh7B,GAAG,CAAC,kCAAkCg7B,MAAM,EAAE,CAAC;UAACh7B,GAAG,CAAC,2CAA2C,CAAC;QAAA;MAAC;MAAC,OAAO86B,sBAAsB,CAACD,UAAU,EAACxW,OAAO,CAAC;IAAA;IAAC,SAAS8W,cAAcA,CAAA,EAAE;MAAC,OAAM;QAACz0C,CAAC,EAAC00C;MAAW,CAAC;IAAA;IAAC,eAAeC,UAAUA,CAAA,EAAE;MAAC,SAASC,eAAeA,CAAC1W,QAAQ,EAACR,MAAM,EAAC;QAACwV,WAAW,GAAChV,QAAQ,CAACc,OAAO;QAAC6S,UAAU,GAACqB,WAAW,CAAC,GAAG,CAAC;QAACP,iBAAiB,CAAC,CAAC;QAACc,mBAAmB,CAAC,kBAAkB,CAAC;QAAC,OAAOP,WAAW;MAAA;MAACM,gBAAgB,CAAC,kBAAkB,CAAC;MAAC,SAASqB,0BAA0BA,CAAC9lC,MAAM,EAAC;QAAC,OAAO6lC,eAAe,CAAC7lC,MAAM,CAAC,UAAU,CAAC,CAAC;MAAA;MAAC,IAAI9Y,IAAI,GAACw+C,cAAc,CAAC,CAAC;MAAC,IAAGnV,MAAM,CAAC,iBAAiB,CAAC,EAAC;QAAC,OAAO,IAAI74B,OAAO,CAAC,CAACG,OAAO,EAACg7B,MAAM,KAAG;UAACtC,MAAM,CAAC,iBAAiB,CAAC,CAACrpC,IAAI,EAAC,CAAC6+C,GAAG,EAACC,IAAI,KAAG;YAACH,eAAe,CAACE,GAAG,EAACC,IAAI,CAAC;YAACnuC,OAAO,CAACkuC,GAAG,CAAC9V,OAAO,CAAC;UAAA,CAAC,CAAC;QAAA,CAAC,CAAC;MAAA;MAAC8U,cAAc,KAAGC,cAAc,CAAC,CAAC;MAAC,IAAG;QAAC,IAAIhlC,MAAM,GAAC,MAAMwlC,gBAAgB,CAAC3C,UAAU,EAACkC,cAAc,EAAC79C,IAAI,CAAC;QAAC,IAAI+oC,OAAO,GAAC6V,0BAA0B,CAAC9lC,MAAM,CAAC;QAAC,OAAOiwB,OAAO;MAAA,CAAC,QAAMjB,CAAC,EAAC;QAACsS,kBAAkB,CAACtS,CAAC,CAAC;QAAC,OAAOt3B,OAAO,CAACm7B,MAAM,CAAC7D,CAAC,CAAC;MAAA;IAAC;IAAC,MAAMiX,UAAU;MAACn8C,IAAI,GAAC,YAAY;MAACE,WAAWA,CAACO,MAAM,EAAC;QAAC,IAAI,CAACV,OAAO,GAAC,gCAAgCU,MAAM,GAAG;QAAC,IAAI,CAACA,MAAM,GAACA,MAAM;MAAA;IAAC;IAAC,IAAIy5C,oBAAoB,GAACkC,SAAS,IAAE;MAAC,OAAMA,SAAS,CAAC79C,MAAM,GAAC,CAAC,EAAC;QAAC69C,SAAS,CAAC52B,KAAK,CAAC,CAAC,CAACihB,MAAM,CAAC;MAAA;IAAC,CAAC;IAAC,IAAI+T,UAAU,GAAC,EAAE;IAAC,IAAID,YAAY,GAAC8B,EAAE,IAAE7B,UAAU,CAAC8B,OAAO,CAACD,EAAE,CAAC;IAAC,IAAIlC,SAAS,GAAC,EAAE;IAAC,IAAIF,WAAW,GAACoC,EAAE,IAAElC,SAAS,CAACmC,OAAO,CAACD,EAAE,CAAC;IAAC,IAAIE,aAAa,GAAC9V,MAAM,CAAC,eAAe,CAAC,IAAE,IAAI;IAAC,IAAI+V,UAAU,GAACA,CAAA,KAAI1B,KAAK,CAAC,EAAE,CAAC;IAAC,IAAI2B,uBAAuB,GAAC,CAAC;IAAC,IAAIC,oCAAoC,GAACA,CAAA,KAAI;MAACH,aAAa,GAAC,KAAK;MAACE,uBAAuB,GAAC,CAAC;IAAA,CAAC;IAAC,IAAIE,MAAM,GAAC,CAAC,CAAC;IAAC,IAAIC,eAAe,GAAC1X,CAAC,IAAE;MAAC,IAAGA,CAAC,YAAYiX,UAAU,IAAEjX,CAAC,IAAE,QAAQ,EAAC;QAAC,OAAOgU,UAAU;MAAA;MAAClB,KAAK,CAAC,CAAC,EAAC9S,CAAC,CAAC;IAAA,CAAC;IAAC,IAAI2X,gBAAgB,GAACA,CAAA,KAAIN,aAAa,IAAEE,uBAAuB,GAAC,CAAC;IAAC,IAAIK,UAAU,GAAC18C,IAAI,IAAE;MAAC84C,UAAU,GAAC94C,IAAI;MAAC,IAAG,CAACy8C,gBAAgB,CAAC,CAAC,EAAC;QAACpW,MAAM,CAAC,QAAQ,CAAC,GAAGrmC,IAAI,CAAC;QAAC64C,KAAK,GAAC,IAAI;MAAA;MAACjB,KAAK,CAAC53C,IAAI,EAAC,IAAI+7C,UAAU,CAAC/7C,IAAI,CAAC,CAAC;IAAA,CAAC;IAAC,IAAI28C,MAAM,GAACA,CAACt8C,MAAM,EAACu8C,QAAQ,KAAG;MAAC9D,UAAU,GAACz4C,MAAM;MAACq8C,UAAU,CAACr8C,MAAM,CAAC;IAAA,CAAC;IAAC,IAAIw8C,KAAK,GAACF,MAAM;IAAC,IAAIG,SAAS,GAACA,CAAA,KAAI;MAAC,IAAG,CAACL,gBAAgB,CAAC,CAAC,EAAC;QAAC,IAAG;UAACI,KAAK,CAAC/D,UAAU,CAAC;QAAA,CAAC,QAAMhU,CAAC,EAAC;UAAC0X,eAAe,CAAC1X,CAAC,CAAC;QAAA;MAAC;IAAC,CAAC;IAAC,IAAIiY,gBAAgB,GAACC,IAAI,IAAE;MAAC,IAAGnE,KAAK,EAAC;QAAC;MAAM;MAAC,IAAG;QAACmE,IAAI,CAAC,CAAC;QAACF,SAAS,CAAC,CAAC;MAAA,CAAC,QAAMhY,CAAC,EAAC;QAAC0X,eAAe,CAAC1X,CAAC,CAAC;MAAA;IAAC,CAAC;IAAC,IAAImY,mBAAmB,GAACA,CAAA,KAAIC,WAAW,CAACC,GAAG,CAAC,CAAC;IAAC,IAAIC,cAAc,GAACA,CAACC,KAAK,EAACC,UAAU,KAAG;MAAC,IAAGf,MAAM,CAACc,KAAK,CAAC,EAAC;QAACE,YAAY,CAAChB,MAAM,CAACc,KAAK,CAAC,CAACh8B,EAAE,CAAC;QAAC,OAAOk7B,MAAM,CAACc,KAAK,CAAC;MAAA;MAAC,IAAG,CAACC,UAAU,EAAC,OAAO,CAAC;MAAC,IAAIj8B,EAAE,GAACm8B,UAAU,CAAC,MAAI;QAAC,OAAOjB,MAAM,CAACc,KAAK,CAAC;QAACN,gBAAgB,CAAC,MAAIU,oBAAoB,CAACJ,KAAK,EAACJ,mBAAmB,CAAC,CAAC,CAAC,CAAC;MAAA,CAAC,EAACK,UAAU,CAAC;MAACf,MAAM,CAACc,KAAK,CAAC,GAAC;QAACh8B,EAAE;QAACi8B;MAAU,CAAC;MAAC,OAAO,CAAC;IAAA,CAAC;IAAC,SAASI,cAAcA,CAACC,SAAS,EAACC,SAAS,EAAC;MAACD,SAAS,KAAG,CAAC;MAAC,MAAME,SAAS,GAACxX,MAAM,CAACwX,SAAS,GAAC,IAAItsB,iBAAiB,CAACqsB,SAAS,CAAC;MAAC,MAAME,KAAK,GAAC3E,MAAM,CAAC73C,QAAQ,CAACq8C,SAAS,EAACA,SAAS,GAACC,SAAS,CAAC;MAACC,SAAS,CAAC5tC,GAAG,CAAC6tC,KAAK,CAAC;IAAA;IAAC,SAASC,cAAcA,CAACC,SAAS,EAACL,SAAS,EAACM,SAAS,EAACL,SAAS,EAAC;MAACI,SAAS,KAAG,CAAC;MAACL,SAAS,KAAG,CAAC;MAACM,SAAS,KAAG,CAAC;MAAC,MAAMJ,SAAS,GAACxX,MAAM,CAACwX,SAAS,GAAC,IAAItsB,iBAAiB,CAACqsB,SAAS,GAAC,CAAC,CAAC;MAAC,MAAMM,KAAK,GAAC/E,MAAM,CAAC73C,QAAQ,CAAC08C,SAAS,EAACA,SAAS,GAACJ,SAAS,CAAC;MAAC,MAAME,KAAK,GAAC3E,MAAM,CAAC73C,QAAQ,CAACq8C,SAAS,EAACA,SAAS,GAACC,SAAS,CAAC;MAAC,MAAMO,KAAK,GAAChF,MAAM,CAAC73C,QAAQ,CAAC28C,SAAS,EAACA,SAAS,GAACL,SAAS,CAAC;MAAC,KAAI,IAAI38C,CAAC,GAAC,CAAC,EAACA,CAAC,GAAC28C,SAAS,EAAC38C,CAAC,EAAE,EAAC;QAAC48C,SAAS,CAAC,CAAC,GAAC58C,CAAC,CAAC,GAACi9C,KAAK,CAACj9C,CAAC,CAAC;QAAC48C,SAAS,CAAC,CAAC,GAAC58C,CAAC,GAAC,CAAC,CAAC,GAAC68C,KAAK,CAAC78C,CAAC,CAAC;QAAC48C,SAAS,CAAC,CAAC,GAAC58C,CAAC,GAAC,CAAC,CAAC,GAACk9C,KAAK,CAACl9C,CAAC,CAAC;MAAA;IAAC;IAAC,SAASm9C,cAAcA,CAACJ,SAAS,EAACL,SAAS,EAACM,SAAS,EAACI,SAAS,EAACT,SAAS,EAAC;MAACI,SAAS,KAAG,CAAC;MAACL,SAAS,KAAG,CAAC;MAACM,SAAS,KAAG,CAAC;MAACI,SAAS,KAAG,CAAC;MAAC,MAAMR,SAAS,GAACxX,MAAM,CAACwX,SAAS,GAAC,IAAItsB,iBAAiB,CAACqsB,SAAS,GAAC,CAAC,CAAC;MAAC,MAAMM,KAAK,GAAC/E,MAAM,CAAC73C,QAAQ,CAAC08C,SAAS,EAACA,SAAS,GAACJ,SAAS,CAAC;MAAC,MAAME,KAAK,GAAC3E,MAAM,CAAC73C,QAAQ,CAACq8C,SAAS,EAACA,SAAS,GAACC,SAAS,CAAC;MAAC,MAAMO,KAAK,GAAChF,MAAM,CAAC73C,QAAQ,CAAC28C,SAAS,EAACA,SAAS,GAACL,SAAS,CAAC;MAAC,MAAMU,KAAK,GAACnF,MAAM,CAAC73C,QAAQ,CAAC+8C,SAAS,EAACA,SAAS,GAACT,SAAS,CAAC;MAAC,KAAI,IAAI38C,CAAC,GAAC,CAAC,EAACA,CAAC,GAAC28C,SAAS,EAAC38C,CAAC,EAAE,EAAC;QAAC48C,SAAS,CAAC,CAAC,GAAC58C,CAAC,CAAC,GAACi9C,KAAK,CAACj9C,CAAC,CAAC;QAAC48C,SAAS,CAAC,CAAC,GAAC58C,CAAC,GAAC,CAAC,CAAC,GAAC68C,KAAK,CAAC78C,CAAC,CAAC;QAAC48C,SAAS,CAAC,CAAC,GAAC58C,CAAC,GAAC,CAAC,CAAC,GAACk9C,KAAK,CAACl9C,CAAC,CAAC;QAAC48C,SAAS,CAAC,CAAC,GAAC58C,CAAC,GAAC,CAAC,CAAC,GAACq9C,KAAK,CAACr9C,CAAC,CAAC;MAAA;IAAC;IAAC,IAAIs9C,UAAU,GAACA,CAAA,KAAI,UAAU;IAAC,IAAIC,WAAW,GAACA,CAACrvC,IAAI,EAACsvC,SAAS,KAAGt9C,IAAI,CAACoV,IAAI,CAACpH,IAAI,GAACsvC,SAAS,CAAC,GAACA,SAAS;IAAC,IAAIC,UAAU,GAACvvC,IAAI,IAAE;MAAC,IAAIhL,CAAC,GAACy0C,UAAU,CAACx2C,MAAM;MAAC,IAAIu8C,KAAK,GAAC,CAACxvC,IAAI,GAAChL,CAAC,CAAC8Q,UAAU,GAAC,KAAK,IAAE,KAAK,GAAC,CAAC;MAAC,IAAG;QAAC2jC,UAAU,CAACjT,IAAI,CAACgZ,KAAK,CAAC;QAACjF,iBAAiB,CAAC,CAAC;QAAC,OAAO,CAAC;MAAA,CAAC,QAAM5U,CAAC,EAAC,CAAC;IAAC,CAAC;IAAC,IAAI8Z,uBAAuB,GAACC,aAAa,IAAE;MAAC,IAAIC,OAAO,GAAC9F,MAAM,CAAC76C,MAAM;MAAC0gD,aAAa,MAAI,CAAC;MAAC,IAAIE,WAAW,GAACR,UAAU,CAAC,CAAC;MAAC,IAAGM,aAAa,GAACE,WAAW,EAAC;QAAC,OAAO,KAAK;MAAA;MAAC,KAAI,IAAIC,OAAO,GAAC,CAAC,EAACA,OAAO,IAAE,CAAC,EAACA,OAAO,IAAE,CAAC,EAAC;QAAC,IAAIC,iBAAiB,GAACH,OAAO,IAAE,CAAC,GAAC,EAAE,GAACE,OAAO,CAAC;QAACC,iBAAiB,GAAC99C,IAAI,CAACC,GAAG,CAAC69C,iBAAiB,EAACJ,aAAa,GAAC,SAAS,CAAC;QAAC,IAAIK,OAAO,GAAC/9C,IAAI,CAACC,GAAG,CAAC29C,WAAW,EAACP,WAAW,CAACr9C,IAAI,CAACwF,GAAG,CAACk4C,aAAa,EAACI,iBAAiB,CAAC,EAAC,KAAK,CAAC,CAAC;QAAC,IAAIE,WAAW,GAACT,UAAU,CAACQ,OAAO,CAAC;QAAC,IAAGC,WAAW,EAAC;UAAC,OAAO,IAAI;QAAA;MAAC;MAAC,OAAO,KAAK;IAAA,CAAC;IAAC,IAAIC,GAAG,GAAC,CAAC,CAAC;IAAC,IAAIC,iBAAiB,GAACA,CAAA,KAAI1H,WAAW,IAAE,gBAAgB;IAAC,IAAI2H,aAAa,GAACA,CAAA,KAAI;MAAC,IAAG,CAACA,aAAa,CAACC,OAAO,EAAC;QAAC,IAAIC,IAAI,GAAC,CAAC,OAAO38C,SAAS,IAAE,QAAQ,IAAEA,SAAS,CAAC48C,SAAS,IAAE58C,SAAS,CAAC48C,SAAS,CAAC,CAAC,CAAC,IAAE,GAAG,EAAEnH,OAAO,CAAC,GAAG,EAAC,GAAG,CAAC,GAAC,QAAQ;QAAC,IAAIoH,GAAG,GAAC;UAACC,IAAI,EAAC,UAAU;UAACC,OAAO,EAAC,UAAU;UAACC,IAAI,EAAC,GAAG;UAACC,GAAG,EAAC,GAAG;UAACC,IAAI,EAAC,gBAAgB;UAACC,IAAI,EAACR,IAAI;UAACj0C,CAAC,EAAC8zC,iBAAiB,CAAC;QAAC,CAAC;QAAC,KAAI,IAAIv3C,CAAC,IAAIs3C,GAAG,EAAC;UAAC,IAAGA,GAAG,CAACt3C,CAAC,CAAC,KAAGnH,SAAS,EAAC,OAAO++C,GAAG,CAAC53C,CAAC,CAAC,CAAC,KAAK43C,GAAG,CAAC53C,CAAC,CAAC,GAACs3C,GAAG,CAACt3C,CAAC,CAAC;QAAA;QAAC,IAAIy3C,OAAO,GAAC,EAAE;QAAC,KAAI,IAAIz3C,CAAC,IAAI43C,GAAG,EAAC;UAACH,OAAO,CAACh+C,IAAI,CAAC,GAAGuG,CAAC,IAAI43C,GAAG,CAAC53C,CAAC,CAAC,EAAE,CAAC;QAAA;QAACw3C,aAAa,CAACC,OAAO,GAACA,OAAO;MAAA;MAAC,OAAOD,aAAa,CAACC,OAAO;IAAA,CAAC;IAAC,IAAIU,aAAa,GAACA,CAACv+C,GAAG,EAACU,MAAM,KAAG;MAAC,KAAI,IAAInB,CAAC,GAAC,CAAC,EAACA,CAAC,GAACS,GAAG,CAACvD,MAAM,EAAC,EAAE8C,CAAC,EAAC;QAAC83C,KAAK,CAAC32C,MAAM,EAAE,CAAC,GAACV,GAAG,CAACE,UAAU,CAACX,CAAC,CAAC;MAAA;MAAC83C,KAAK,CAAC32C,MAAM,CAAC,GAAC,CAAC;IAAA,CAAC;IAAC,IAAI89C,YAAY,GAACA,CAACC,SAAS,EAACC,WAAW,KAAG;MAAC,IAAIC,OAAO,GAAC,CAAC;MAACf,aAAa,CAAC,CAAC,CAACgB,OAAO,CAAC,CAACC,MAAM,EAACt/C,CAAC,KAAG;QAAC,IAAI4gC,GAAG,GAACue,WAAW,GAACC,OAAO;QAACjH,OAAO,CAAC+G,SAAS,GAACl/C,CAAC,GAAC,CAAC,IAAE,CAAC,CAAC,GAAC4gC,GAAG;QAACoe,aAAa,CAACM,MAAM,EAAC1e,GAAG,CAAC;QAACwe,OAAO,IAAEE,MAAM,CAACpiD,MAAM,GAAC,CAAC;MAAA,CAAC,CAAC;MAAC,OAAO,CAAC;IAAA,CAAC;IAAC,IAAIqiD,kBAAkB,GAACA,CAACC,cAAc,EAACC,iBAAiB,KAAG;MAAC,IAAInB,OAAO,GAACD,aAAa,CAAC,CAAC;MAAClG,OAAO,CAACqH,cAAc,IAAE,CAAC,CAAC,GAAClB,OAAO,CAACphD,MAAM;MAAC,IAAIkiD,OAAO,GAAC,CAAC;MAACd,OAAO,CAACe,OAAO,CAACC,MAAM,IAAEF,OAAO,IAAEE,MAAM,CAACpiD,MAAM,GAAC,CAAC,CAAC;MAACi7C,OAAO,CAACsH,iBAAiB,IAAE,CAAC,CAAC,GAACL,OAAO;MAAC,OAAO,CAAC;IAAA,CAAC;IAAC,IAAIM,SAAS,GAACC,EAAE,IAAE,EAAE;IAAC,IAAIC,SAAS,GAAC,gBAAgB;IAAC,IAAIC,SAAS,GAAC,CAAC,gBAAgB;IAAC,IAAIC,kBAAkB,GAAC9zC,GAAG,IAAEA,GAAG,GAAC6zC,SAAS,IAAE7zC,GAAG,GAAC4zC,SAAS,GAACG,GAAG,GAACnkD,MAAM,CAACoQ,GAAG,CAAC;IAAC,SAASg0C,QAAQA,CAACL,EAAE,EAACnqC,MAAM,EAACyqC,MAAM,EAACnP,SAAS,EAAC;MAACt7B,MAAM,GAACsqC,kBAAkB,CAACtqC,MAAM,CAAC;MAAC,OAAO,EAAE;IAAA;IAAC,IAAI0qC,gBAAgB,GAAC,CAAC,IAAI,EAAC,EAAE,EAAC,EAAE,CAAC;IAAC,IAAIC,WAAW,GAAC,OAAO33C,WAAW,IAAE,WAAW,GAAC,IAAIA,WAAW,CAAD,CAAC,GAAC9I,SAAS;IAAC,IAAI0gD,iBAAiB,GAACA,CAACC,WAAW,EAACC,GAAG,GAAC,CAAC,EAACC,cAAc,GAACR,GAAG,KAAG;MAAC,IAAIS,MAAM,GAACF,GAAG,GAACC,cAAc;MAAC,IAAIE,MAAM,GAACH,GAAG;MAAC,OAAMD,WAAW,CAACI,MAAM,CAAC,IAAE,EAAEA,MAAM,IAAED,MAAM,CAAC,EAAC,EAAEC,MAAM;MAAC,IAAGA,MAAM,GAACH,GAAG,GAAC,EAAE,IAAED,WAAW,CAACl/C,MAAM,IAAEg/C,WAAW,EAAC;QAAC,OAAOA,WAAW,CAACx3C,MAAM,CAAC03C,WAAW,CAAChgD,QAAQ,CAACigD,GAAG,EAACG,MAAM,CAAC,CAAC;MAAA;MAAC,IAAIhgD,GAAG,GAAC,EAAE;MAAC,OAAM6/C,GAAG,GAACG,MAAM,EAAC;QAAC,IAAIC,EAAE,GAACL,WAAW,CAACC,GAAG,EAAE,CAAC;QAAC,IAAG,EAAEI,EAAE,GAAC,GAAG,CAAC,EAAC;UAACjgD,GAAG,IAAEb,MAAM,CAACC,YAAY,CAAC6gD,EAAE,CAAC;UAAC;QAAQ;QAAC,IAAIC,EAAE,GAACN,WAAW,CAACC,GAAG,EAAE,CAAC,GAAC,EAAE;QAAC,IAAG,CAACI,EAAE,GAAC,GAAG,KAAG,GAAG,EAAC;UAACjgD,GAAG,IAAEb,MAAM,CAACC,YAAY,CAAC,CAAC6gD,EAAE,GAAC,EAAE,KAAG,CAAC,GAACC,EAAE,CAAC;UAAC;QAAQ;QAAC,IAAIC,EAAE,GAACP,WAAW,CAACC,GAAG,EAAE,CAAC,GAAC,EAAE;QAAC,IAAG,CAACI,EAAE,GAAC,GAAG,KAAG,GAAG,EAAC;UAACA,EAAE,GAAC,CAACA,EAAE,GAAC,EAAE,KAAG,EAAE,GAACC,EAAE,IAAE,CAAC,GAACC,EAAE;QAAA,CAAC,MAAI;UAACF,EAAE,GAAC,CAACA,EAAE,GAAC,CAAC,KAAG,EAAE,GAACC,EAAE,IAAE,EAAE,GAACC,EAAE,IAAE,CAAC,GAACP,WAAW,CAACC,GAAG,EAAE,CAAC,GAAC,EAAE;QAAA;QAAC,IAAGI,EAAE,GAAC,KAAK,EAAC;UAACjgD,GAAG,IAAEb,MAAM,CAACC,YAAY,CAAC6gD,EAAE,CAAC;QAAA,CAAC,MAAI;UAAC,IAAI7qC,EAAE,GAAC6qC,EAAE,GAAC,KAAK;UAACjgD,GAAG,IAAEb,MAAM,CAACC,YAAY,CAAC,KAAK,GAACgW,EAAE,IAAE,EAAE,EAAC,KAAK,GAACA,EAAE,GAAC,IAAI,CAAC;QAAA;MAAC;MAAC,OAAOpV,GAAG;IAAA,CAAC;IAAC,IAAIogD,SAAS,GAACA,CAACvY,MAAM,EAACwY,IAAI,KAAG;MAAC,IAAI3/C,MAAM,GAAC++C,gBAAgB,CAAC5X,MAAM,CAAC;MAAC,IAAGwY,IAAI,KAAG,CAAC,IAAEA,IAAI,KAAG,EAAE,EAAC;QAAC,CAACxY,MAAM,KAAG,CAAC,GAAC6M,GAAG,GAAC/1B,GAAG,EAAEghC,iBAAiB,CAACj/C,MAAM,CAAC,CAAC;QAACA,MAAM,CAACjE,MAAM,GAAC,CAAC;MAAA,CAAC,MAAI;QAACiE,MAAM,CAACb,IAAI,CAACwgD,IAAI,CAAC;MAAA;IAAC,CAAC;IAAC,IAAIC,YAAY,GAACA,CAACngB,GAAG,EAAC2f,cAAc,KAAG3f,GAAG,GAACwf,iBAAiB,CAACrI,MAAM,EAACnX,GAAG,EAAC2f,cAAc,CAAC,GAAC,EAAE;IAAC,IAAIS,SAAS,GAACA,CAACrB,EAAE,EAACsB,GAAG,EAACC,MAAM,EAACC,IAAI,KAAG;MAAC,IAAIn1C,GAAG,GAAC,CAAC;MAAC,KAAI,IAAIhM,CAAC,GAAC,CAAC,EAACA,CAAC,GAACkhD,MAAM,EAAClhD,CAAC,EAAE,EAAC;QAAC,IAAI4gC,GAAG,GAACuX,OAAO,CAAC8I,GAAG,IAAE,CAAC,CAAC;QAAC,IAAIlrC,GAAG,GAACoiC,OAAO,CAAC8I,GAAG,GAAC,CAAC,IAAE,CAAC,CAAC;QAACA,GAAG,IAAE,CAAC;QAAC,KAAI,IAAIp/B,CAAC,GAAC,CAAC,EAACA,CAAC,GAAC9L,GAAG,EAAC8L,CAAC,EAAE,EAAC;UAACg/B,SAAS,CAAClB,EAAE,EAAC5H,MAAM,CAACnX,GAAG,GAAC/e,CAAC,CAAC,CAAC;QAAA;QAAC7V,GAAG,IAAE+J,GAAG;MAAA;MAACoiC,OAAO,CAACgJ,IAAI,IAAE,CAAC,CAAC,GAACn1C,GAAG;MAAC,OAAO,CAAC;IAAA,CAAC;IAAC,SAASo1C,aAAaA,CAAC1E,SAAS,EAACC,SAAS,EAAC;MAACD,SAAS,KAAG,CAAC;MAAC,MAAME,SAAS,GAACxX,MAAM,CAACwX,SAAS,GAAC,IAAItsB,iBAAiB,CAACqsB,SAAS,GAAC,CAAC,CAAC;MAAC,MAAME,KAAK,GAAC3E,MAAM,CAAC73C,QAAQ,CAACq8C,SAAS,EAACA,SAAS,GAACC,SAAS,CAAC;MAAC,KAAI,IAAI38C,CAAC,GAAC,CAAC,EAACA,CAAC,GAAC28C,SAAS,EAAC38C,CAAC,EAAE,EAAC;QAAC48C,SAAS,CAAC,CAAC,GAAC58C,CAAC,CAAC,GAAC48C,SAAS,CAAC,CAAC,GAAC58C,CAAC,GAAC,CAAC,CAAC,GAAC48C,SAAS,CAAC,CAAC,GAAC58C,CAAC,GAAC,CAAC,CAAC,GAAC68C,KAAK,CAAC78C,CAAC,CAAC;QAAC48C,SAAS,CAAC,CAAC,GAAC58C,CAAC,GAAC,CAAC,CAAC,GAAC,GAAG;MAAA;IAAC;IAAC,SAASqhD,cAAcA,CAAC3E,SAAS,EAACU,SAAS,EAACT,SAAS,EAAC;MAACD,SAAS,KAAG,CAAC;MAACU,SAAS,KAAG,CAAC;MAAC,MAAMR,SAAS,GAACxX,MAAM,CAACwX,SAAS,GAAC,IAAItsB,iBAAiB,CAACqsB,SAAS,GAAC,CAAC,CAAC;MAAC,MAAME,KAAK,GAAC3E,MAAM,CAAC73C,QAAQ,CAACq8C,SAAS,EAACA,SAAS,GAACC,SAAS,CAAC;MAAC,MAAMU,KAAK,GAACnF,MAAM,CAAC73C,QAAQ,CAAC+8C,SAAS,EAACA,SAAS,GAACT,SAAS,CAAC;MAAC,KAAI,IAAI38C,CAAC,GAAC,CAAC,EAACA,CAAC,GAAC28C,SAAS,EAAC38C,CAAC,EAAE,EAAC;QAAC48C,SAAS,CAAC,CAAC,GAAC58C,CAAC,CAAC,GAAC48C,SAAS,CAAC,CAAC,GAAC58C,CAAC,GAAC,CAAC,CAAC,GAAC48C,SAAS,CAAC,CAAC,GAAC58C,CAAC,GAAC,CAAC,CAAC,GAAC68C,KAAK,CAAC78C,CAAC,CAAC;QAAC48C,SAAS,CAAC,CAAC,GAAC58C,CAAC,GAAC,CAAC,CAAC,GAACq9C,KAAK,CAACr9C,CAAC,CAAC;MAAA;IAAC;IAAC,SAASshD,eAAeA,CAACC,WAAW,EAAC;MAAC,MAAM7iD,OAAO,GAACqiD,YAAY,CAACQ,WAAW,CAAC;MAAC,CAACnc,MAAM,CAACjpC,IAAI,IAAEF,OAAO,CAACE,IAAI,EAAE,aAAauC,OAAO,EAAE,CAAC;IAAA;IAAC,SAAS8iD,YAAYA,CAACzE,SAAS,EAACL,SAAS,EAACM,SAAS,EAACL,SAAS,EAAC;MAACI,SAAS,KAAG,CAAC;MAACL,SAAS,KAAG,CAAC;MAACM,SAAS,KAAG,CAAC;MAAC,MAAMJ,SAAS,GAACxX,MAAM,CAACwX,SAAS,GAAC,IAAItsB,iBAAiB,CAACqsB,SAAS,GAAC,CAAC,CAAC;MAAC,MAAMM,KAAK,GAAC/E,MAAM,CAAC73C,QAAQ,CAAC08C,SAAS,EAACA,SAAS,GAACJ,SAAS,CAAC;MAAC,MAAME,KAAK,GAAC3E,MAAM,CAAC73C,QAAQ,CAACq8C,SAAS,EAACA,SAAS,GAACC,SAAS,CAAC;MAAC,MAAMO,KAAK,GAAChF,MAAM,CAAC73C,QAAQ,CAAC28C,SAAS,EAACA,SAAS,GAACL,SAAS,CAAC;MAAC,KAAI,IAAI38C,CAAC,GAAC,CAAC,EAACA,CAAC,GAAC28C,SAAS,EAAC38C,CAAC,EAAE,EAAC;QAAC48C,SAAS,CAAC,CAAC,GAAC58C,CAAC,CAAC,GAACi9C,KAAK,CAACj9C,CAAC,CAAC;QAAC48C,SAAS,CAAC,CAAC,GAAC58C,CAAC,GAAC,CAAC,CAAC,GAAC68C,KAAK,CAAC78C,CAAC,CAAC;QAAC48C,SAAS,CAAC,CAAC,GAAC58C,CAAC,GAAC,CAAC,CAAC,GAACk9C,KAAK,CAACl9C,CAAC,CAAC;QAAC48C,SAAS,CAAC,CAAC,GAAC58C,CAAC,GAAC,CAAC,CAAC,GAAC,GAAG;MAAA;IAAC;IAAC,SAASyhD,kBAAkBA,CAACF,WAAW,EAAC;MAAC,MAAM7iD,OAAO,GAACqiD,YAAY,CAACQ,WAAW,CAAC;MAAC,IAAG,CAACnc,MAAM,CAACsc,aAAa,EAAC;QAACtc,MAAM,CAACsc,aAAa,GAAChjD,OAAO;MAAA,CAAC,MAAI;QAAC0mC,MAAM,CAACsc,aAAa,IAAE,IAAI,GAAChjD,OAAO;MAAA;IAAC;IAAC,IAAI87C,WAAW,GAAC;MAACtI,CAAC,EAACiJ,UAAU;MAAC73B,CAAC,EAAC+3B,oCAAoC;MAAC33C,CAAC,EAACy4C,cAAc;MAACl5C,CAAC,EAACw5C,cAAc;MAACkF,CAAC,EAAC7E,cAAc;MAACjZ,CAAC,EAACsZ,cAAc;MAACx6C,CAAC,EAACg7C,uBAAuB;MAACl6C,CAAC,EAACw7C,YAAY;MAAC1uB,CAAC,EAACgvB,kBAAkB;MAACr8C,CAAC,EAACw8C,SAAS;MAACkC,CAAC,EAAC5B,QAAQ;MAACj6C,CAAC,EAACi7C,SAAS;MAACh+C,CAAC,EAACo+C,aAAa;MAACphD,CAAC,EAACqhD,cAAc;MAAC/8C,CAAC,EAACg9C,eAAe;MAACz/B,CAAC,EAAC45B,UAAU;MAAC5N,CAAC,EAAC2T,YAAY;MAAC17C,CAAC,EAAC27C;IAAkB,CAAC;IAAC,IAAIzI,WAAW,GAAC,MAAMyB,UAAU,CAAC,CAAC;IAAC,IAAIoH,kBAAkB,GAAC7I,WAAW,CAAC,GAAG,CAAC;IAAC,IAAI8I,OAAO,GAAC1c,MAAM,CAAC,SAAS,CAAC,GAAC4T,WAAW,CAAC,GAAG,CAAC;IAAC,IAAI+I,KAAK,GAAC3c,MAAM,CAAC,OAAO,CAAC,GAAC4T,WAAW,CAAC,GAAG,CAAC;IAAC,IAAIgJ,WAAW,GAAC5c,MAAM,CAAC,aAAa,CAAC,GAAC4T,WAAW,CAAC,GAAG,CAAC;IAAC,IAAIwD,oBAAoB,GAACxD,WAAW,CAAC,GAAG,CAAC;IAAC,SAASiJ,GAAGA,CAAA,EAAE;MAAC,IAAG7I,eAAe,GAAC,CAAC,EAAC;QAACC,qBAAqB,GAAC4I,GAAG;QAAC;MAAM;MAACtJ,MAAM,CAAC,CAAC;MAAC,IAAGS,eAAe,GAAC,CAAC,EAAC;QAACC,qBAAqB,GAAC4I,GAAG;QAAC;MAAM;MAAC,SAASC,KAAKA,CAAA,EAAE;QAAC9c,MAAM,CAAC,WAAW,CAAC,GAAC,IAAI;QAAC,IAAGwS,KAAK,EAAC;QAAOmB,WAAW,CAAC,CAAC;QAAC7C,mBAAmB,CAAC9Q,MAAM,CAAC;QAACA,MAAM,CAAC,sBAAsB,CAAC,GAAG,CAAC;QAAC6T,OAAO,CAAC,CAAC;MAAA;MAAC,IAAG7T,MAAM,CAAC,WAAW,CAAC,EAAC;QAACA,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC;QAACmX,UAAU,CAAC,MAAI;UAACA,UAAU,CAAC,MAAInX,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC;UAAC8c,KAAK,CAAC,CAAC;QAAA,CAAC,EAAC,CAAC,CAAC;MAAA,CAAC,MAAI;QAACA,KAAK,CAAC,CAAC;MAAA;IAAC;IAAC,IAAG9c,MAAM,CAAC,SAAS,CAAC,EAAC;MAAC,IAAG,OAAOA,MAAM,CAAC,SAAS,CAAC,IAAE,UAAU,EAACA,MAAM,CAAC,SAAS,CAAC,GAAC,CAACA,MAAM,CAAC,SAAS,CAAC,CAAC;MAAC,OAAMA,MAAM,CAAC,SAAS,CAAC,CAACloC,MAAM,GAAC,CAAC,EAAC;QAACkoC,MAAM,CAAC,SAAS,CAAC,CAACwF,GAAG,CAAC,CAAC,CAAC,CAAC;MAAA;IAAC;IAACqX,GAAG,CAAC,CAAC;IAAChM,SAAS,GAACG,YAAY;IAG/ub,OAAOH,SAAS;EAClB,CAAC;AAED,CAAC,EAAE,CAAC;AACJ,+CAAeH,QAAQ;;ACAuB;AACI;AAElD,MAAMqM,MAAM,SAAS7wC,sBAAU,CAAC;EAC9BzS,WAAWA,CAAC0V,WAAW,EAAExB,KAAK,EAAE7V,MAAM,EAAEwS,IAAI,EAAE;IAC5C,KAAK,CAAC,CAAC;IAEP,IAAI,CAACjQ,KAAK,GACR8U,WAAW,YAAY7T,UAAU,GAC7B6T,WAAW,GACX,IAAI7T,UAAU,CAAC6T,WAAW,CAAC;IACjC,IAAI,CAACxB,KAAK,GAAGA,KAAK,IAAI,CAAC;IACvB,IAAI,CAACpP,GAAG,GAAG,IAAI,CAACoP,KAAK;IACrB,IAAI,CAACN,GAAG,GAAGM,KAAK,GAAG7V,MAAM,IAAI,IAAI,CAACuC,KAAK,CAACvC,MAAM;IAC9C,IAAI,CAACwS,IAAI,GAAGA,IAAI;EAClB;EAEA,IAAIxS,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACuV,GAAG,GAAG,IAAI,CAACM,KAAK;EAC9B;EAEA,IAAIxB,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACrU,MAAM,KAAK,CAAC;EAC1B;EAEAuU,OAAOA,CAAA,EAAG;IACR,IAAI,IAAI,CAAC9N,GAAG,IAAI,IAAI,CAAC8O,GAAG,EAAE;MACxB,OAAO,CAAC,CAAC;IACX;IACA,OAAO,IAAI,CAAChT,KAAK,CAAC,IAAI,CAACkE,GAAG,EAAE,CAAC;EAC/B;EAEA+N,QAAQA,CAACxU,MAAM,EAAE;IACf,MAAMuC,KAAK,GAAG,IAAI,CAACA,KAAK;IACxB,MAAMkE,GAAG,GAAG,IAAI,CAACA,GAAG;IACpB,MAAMy+C,MAAM,GAAG,IAAI,CAAC3vC,GAAG;IAEvB,IAAI,CAACvV,MAAM,EAAE;MACX,OAAOuC,KAAK,CAACY,QAAQ,CAACsD,GAAG,EAAEy+C,MAAM,CAAC;IACpC;IACA,IAAI3vC,GAAG,GAAG9O,GAAG,GAAGzG,MAAM;IACtB,IAAIuV,GAAG,GAAG2vC,MAAM,EAAE;MAChB3vC,GAAG,GAAG2vC,MAAM;IACd;IACA,IAAI,CAACz+C,GAAG,GAAG8O,GAAG;IACd,OAAOhT,KAAK,CAACY,QAAQ,CAACsD,GAAG,EAAE8O,GAAG,CAAC;EACjC;EAEAF,YAAYA,CAACC,KAAK,EAAEC,GAAG,EAAE;IACvB,IAAID,KAAK,GAAG,CAAC,EAAE;MACbA,KAAK,GAAG,CAAC;IACX;IACA,IAAIC,GAAG,GAAG,IAAI,CAACA,GAAG,EAAE;MAClBA,GAAG,GAAG,IAAI,CAACA,GAAG;IAChB;IACA,OAAO,IAAI,CAAChT,KAAK,CAACY,QAAQ,CAACmS,KAAK,EAAEC,GAAG,CAAC;EACxC;EAEAG,KAAKA,CAAA,EAAG;IACN,IAAI,CAACjP,GAAG,GAAG,IAAI,CAACoP,KAAK;EACvB;EAEAF,SAASA,CAAA,EAAG;IACV,IAAI,CAACE,KAAK,GAAG,IAAI,CAACpP,GAAG;EACvB;EAEAmP,aAAaA,CAACC,KAAK,EAAE7V,MAAM,EAAEwS,IAAI,GAAG,IAAI,EAAE;IACxC,OAAO,IAAIyyC,MAAM,CAAC,IAAI,CAAC1iD,KAAK,CAAC0B,MAAM,EAAE4R,KAAK,EAAE7V,MAAM,EAAEwS,IAAI,CAAC;EAC3D;AACF;AAEA,MAAM2yC,YAAY,SAASF,MAAM,CAAC;EAChCtjD,WAAWA,CAAC4B,GAAG,EAAE;IACf,KAAK,CAACD,aAAa,CAACC,GAAG,CAAC,CAAC;EAC3B;AACF;AAEA,MAAM6hD,UAAU,SAASH,MAAM,CAAC;EAC9BtjD,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,IAAI6B,UAAU,CAAC,CAAC,CAAC,CAAC;EAC1B;AACF;;;ACjFwD;AACN;AACS;AACtB;AAErC,MAAM6hD,QAAQ,SAAS/jD,aAAa,CAAC;EACnCK,WAAWA,CAAC7C,GAAG,EAAE;IACf,KAAK,CAACA,GAAG,EAAE,UAAU,CAAC;EACxB;AACF;AAEA,MAAMwmD,QAAQ,CAAC;EACb,OAAO,CAACrhD,MAAM,GAAG,IAAI;EAErB,OAAO,CAACshD,OAAO,GAAG,IAAI;EAEtB,OAAO,CAACC,aAAa,GAAG,IAAI;EAE5B,OAAO,CAACzc,OAAO,GAAG,IAAI;EAEtB,OAAO,CAACS,cAAc,GAAG,IAAI;EAE7B,OAAO,CAACR,OAAO,GAAG,IAAI;EAEtB,OAAOO,UAAUA,CAAC;IAAEgc,OAAO;IAAExc,OAAO;IAAES,cAAc;IAAER;EAAQ,CAAC,EAAE;IAC/D,IAAI,CAAC,CAACD,OAAO,GAAGA,OAAO;IACvB,IAAI,CAAC,CAACS,cAAc,GAAGA,cAAc;IACrC,IAAI,CAAC,CAACR,OAAO,GAAGA,OAAO;IAEvB,IAAI,CAACQ,cAAc,EAAE;MACnB,IAAI,CAAC,CAAC+b,OAAO,GAAGA,OAAO;IACzB;EACF;EAEA,aAAa,CAACE,WAAWC,CAACC,gBAAgB,EAAE;IAC1C,MAAMlsC,IAAI,GAGJ,GAAG,IAAI,CAAC,CAACuvB,OAAO,6BAA6B;IAEnD,IAAIlC,QAAQ,GAAG,IAAI;IACnB,IAAI;MACF,MAAM4W,GAAG,GAAG;MAAA;MAAA;MAEOjkC,IAAI,CAAE;MACzBqtB,QAAQ,GAAG4W,GAAG,CAACkI,OAAO,CAAC,CAAC;IAC1B,CAAC,CAAC,OAAOjf,CAAC,EAAE;MACV1nC,SAAI,CAAC,yBAAyB0nC,CAAC,EAAE,CAAC;IACpC;IACAgf,gBAAgB,CAAC7e,QAAQ,CAAC;EAC5B;EAEA,aAAa,CAAC+e,eAAeC,CAACH,gBAAgB,EAAEpf,OAAO,EAAEwf,eAAe,EAAE;IACxE,MAAMC,QAAQ,GAAG,eAAe;IAChC,IAAI;MACF,IAAI,CAAC,IAAI,CAAC,CAAC/hD,MAAM,EAAE;QACjB,IAAI,IAAI,CAAC,CAACulC,cAAc,EAAE;UACxB,IAAI,CAAC,CAACvlC,MAAM,GAAG,MAAMgT,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC+xB,OAAO,GAAGgd,QAAQ,EAAE,CAAC;QACrE,CAAC,MAAM;UACL,IAAI,CAAC,CAAC/hD,MAAM,GAAG,MAAM,IAAI,CAAC,CAACshD,OAAO,CAACU,eAAe,CAChD,iBAAiB,EACjB;YAAEl3D,IAAI,EAAE,aAAa;YAAEi3D;UAAS,CAClC,CAAC;QACH;MACF;MACA,MAAME,OAAO,GAAG,MAAMzf,WAAW,CAACI,WAAW,CAAC,IAAI,CAAC,CAAC5iC,MAAM,EAAEsiC,OAAO,CAAC;MACpE,OAAOwf,eAAe,CAACG,OAAO,CAACpf,QAAQ,CAAC;IAC1C,CAAC,CAAC,OAAOoW,MAAM,EAAE;MACfj+C,SAAI,CAAC,6BAA6Bi+C,MAAM,EAAE,CAAC;MAE3C,IAAI,CAAC,CAACuI,WAAW,CAACE,gBAAgB,CAAC;MACnC,OAAO,IAAI;IACb,CAAC,SAAS;MACR,IAAI,CAAC,CAACJ,OAAO,GAAG,IAAI;IACtB;EACF;EAEA,aAAa95C,MAAMA,CACjBlJ,KAAK,EACL;IAAE8xC,aAAa,GAAG,CAAC;IAAE8R,iBAAiB,GAAG,KAAK;IAAEC,WAAW,GAAG;EAAM,CAAC,GAAG,CAAC,CAAC,EAC1E;IACA,IAAI,CAAC,IAAI,CAAC,CAACZ,aAAa,EAAE;MACxB,MAAM;QAAEa,OAAO;QAAE72C;MAAQ,CAAC,GAAGH,OAAO,CAACi3C,aAAa,CAAC,CAAC;MACpD,MAAMC,QAAQ,GAAG,CAACF,OAAO,CAAC;MAC1B,IAAI,CAAC,IAAI,CAAC,CAACtd,OAAO,EAAE;QAClB,IAAI,CAAC,CAAC0c,WAAW,CAACj2C,OAAO,CAAC;MAC5B,CAAC,MAAM;QACL+2C,QAAQ,CAACnjD,IAAI,CACXw1C,QAAQ,CAAC;UACP35C,IAAI;UACJ4mD,eAAe,EAAE,IAAI,CAAC,CAACA,eAAe,CAACvL,IAAI,CAAC,IAAI,EAAE9qC,OAAO;QAC3D,CAAC,CACH,CAAC;MACH;MACA,IAAI,CAAC,CAACg2C,aAAa,GAAGn2C,OAAO,CAACm3C,IAAI,CAACD,QAAQ,CAAC;IAC9C;IACA,MAAMjgB,MAAM,GAAG,MAAM,IAAI,CAAC,CAACkf,aAAa;IAExC,IAAI,CAAClf,MAAM,EAAE;MACX,MAAM,IAAI+e,QAAQ,CAAC,+BAA+B,CAAC;IACrD;IACA,IAAI3hB,GAAG;IAEP,IAAI;MACF,MAAM1yB,IAAI,GAAGzO,KAAK,CAACvC,MAAM;MACzB0jC,GAAG,GAAG4C,MAAM,CAACse,OAAO,CAAC5zC,IAAI,CAAC;MAC1Bs1B,MAAM,CAACuU,MAAM,CAAC/oC,GAAG,CAACvP,KAAK,EAAEmhC,GAAG,CAAC;MAC7B,MAAM4B,GAAG,GAAGgB,MAAM,CAACwe,WAAW,CAC5BphB,GAAG,EACH1yB,IAAI,EACJqjC,aAAa,GAAG,CAAC,GAAGA,aAAa,GAAG,CAAC,EACrC,CAAC,CAAC8R,iBAAiB,EACnB,CAAC,CAACC,WACJ,CAAC;MACD,IAAI9gB,GAAG,EAAE;QACP,MAAM;UAAEkf;QAAc,CAAC,GAAGle,MAAM;QAChC,IAAIke,aAAa,EAAE;UACjB,OAAOle,MAAM,CAACke,aAAa;UAC3B,MAAM,IAAIa,QAAQ,CAACb,aAAa,CAAC;QACnC;QACA,MAAM,IAAIa,QAAQ,CAAC,eAAe,CAAC;MACrC;MACA,MAAM;QAAE3F;MAAU,CAAC,GAAGpZ,MAAM;MAC5BA,MAAM,CAACoZ,SAAS,GAAG,IAAI;MAEvB,OAAOA,SAAS;IAClB,CAAC,SAAS;MACR,IAAIhc,GAAG,EAAE;QACP4C,MAAM,CAACue,KAAK,CAACnhB,GAAG,CAAC;MACnB;IACF;EACF;EAEA,OAAO+iB,OAAOA,CAAA,EAAG;IACf,IAAI,CAAC,CAACjB,aAAa,GAAG,IAAI;EAC5B;EAEA,OAAOkB,oBAAoBA,CAACtb,MAAM,EAAE;IAEhC,IAAIA,MAAM,YAAYpyB,WAAW,IAAIA,WAAW,CAACC,MAAM,CAACmyB,MAAM,CAAC,EAAE;MAC/DA,MAAM,GAAG,IAAI6Z,MAAM,CAAC7Z,MAAM,CAAC;IAC7B,CAAC,MAAM;MACL,MAAM,IAAIia,QAAQ,CAAC,4CAA4C,CAAC;IAClE;IAIF,IAAIsB,OAAO,GAAGvb,MAAM,CAAC72B,OAAO,CAAC,CAAC;IAC9B,OAAOoyC,OAAO,IAAI,CAAC,EAAE;MACnB,MAAMC,OAAO,GAAGD,OAAO;MACvBA,OAAO,GAAGvb,MAAM,CAAC72B,OAAO,CAAC,CAAC;MAC1B,MAAM1S,IAAI,GAAI+kD,OAAO,IAAI,CAAC,GAAID,OAAO;MAErC,IAAI9kD,IAAI,KAAK,MAAM,EAAE;QACnBupC,MAAM,CAAC31B,IAAI,CAAC,CAAC,CAAC;QACd,MAAMoxC,IAAI,GAAGzb,MAAM,CAACh2B,QAAQ,CAAC,CAAC,KAAK,CAAC;QACpC,MAAM0xC,IAAI,GAAG1b,MAAM,CAACh2B,QAAQ,CAAC,CAAC,KAAK,CAAC;QACpC,MAAM2xC,KAAK,GAAG3b,MAAM,CAACh2B,QAAQ,CAAC,CAAC,KAAK,CAAC;QACrC,MAAM4xC,KAAK,GAAG5b,MAAM,CAACh2B,QAAQ,CAAC,CAAC,KAAK,CAAC;QACrCg2B,MAAM,CAAC31B,IAAI,CAAC,EAAE,CAAC;QACf,MAAMwxC,IAAI,GAAG7b,MAAM,CAACj2B,SAAS,CAAC,CAAC;QAC/B,OAAO;UACLyI,KAAK,EAAEipC,IAAI,GAAGE,KAAK;UACnBlpC,MAAM,EAAEipC,IAAI,GAAGE,KAAK;UAEpBE,gBAAgB,EAAE,CAAC;UACnB9Q,eAAe,EAAE6Q;QACnB,CAAC;MACH;IACF;IACA,MAAM,IAAI5B,QAAQ,CAAC,oCAAoC,CAAC;EAC1D;AACF;;;ACxK0B;AAC+B;AACJ;AACF;AAGnD,MAAM8B,YAAY,GACkB,SAAwC;AAE5E,MAAMC,UAAU,GACoB,WAAsC;AAE1EjiD,UAAU,CAACkiD,kBAAkB,GAAG;EAC9BzoD,iBAAiB;EACjBmkB,UAAU;EACVmV,UAAU;EACVyU,SAAS;EACTmH,SAAS;EACTuR,QAAQ;EACRC,QAAQ;EACR9mD,iBAAiB;EACjBrG,cAAcA,EAAAA,cAAAA;AAChB,CAAC","sources":["webpack://pdf.js/./src/shared/util.js","webpack://pdf.js/./src/core/primitives.js","webpack://pdf.js/./src/core/base_stream.js","webpack://pdf.js/./src/core/core_utils.js","webpack://pdf.js/./src/core/arithmetic_decoder.js","webpack://pdf.js/./src/core/ccitt.js","webpack://pdf.js/./src/core/jbig2.js","webpack://pdf.js/./src/core/colorspace.js","webpack://pdf.js/./external/qcms/qcms_utils.js","webpack://pdf.js/./external/qcms/qcms.js","webpack://pdf.js/./src/core/icc_colorspace.js","webpack://pdf.js/./src/core/colorspace_utils.js","webpack://pdf.js/./src/shared/image_utils.js","webpack://pdf.js/./src/core/jpg.js","webpack://pdf.js/./external/openjpeg/openjpeg.js","webpack://pdf.js/./src/core/stream.js","webpack://pdf.js/./src/core/jpx.js","webpack://pdf.js/./src/pdf.image_decoders.js"],"sourcesContent":["/* Copyright 2012 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/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n  (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n  typeof process === \"object\" &&\n  process + \"\" === \"[object process]\" &&\n  !process.versions.nw &&\n  !(process.versions.electron && process.type && process.type !== \"browser\");\n\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n// Represent the percentage of the height of a single-line field over\n// the font size. Acrobat seems to use this value.\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n *  - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n *    `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n *  - SAVE is used, on the worker-thread, when saving modified annotations.\n *  - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n *    annotations are rendered onto the canvas (i.e. by being included in the\n *    operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n *    and their `annotationMode`-option.\n *  - IS_EDITING is used when editing is active in the viewer.\n *  - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n *    `OperatorList`-constructor (on the worker-thread).\n */\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};\n\nconst AnnotationMode = {\n  DISABLE: 0,\n  ENABLE: 1,\n  ENABLE_FORMS: 2,\n  ENABLE_STORAGE: 3,\n};\n\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\n\nconst AnnotationEditorType = {\n  DISABLE: -1,\n  NONE: 0,\n  FREETEXT: 3,\n  HIGHLIGHT: 9,\n  STAMP: 13,\n  INK: 15,\n  SIGNATURE: 101,\n};\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  DRAW_STEP: 41,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\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};\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};\n\nconst ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3,\n};\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};\n\nconst AnnotationReplyType = {\n  GROUP: \"Group\",\n  REPLY: \"R\",\n};\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};\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};\n\nconst AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5,\n};\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};\n\nconst DocumentActionEventType = {\n  WC: \"WillClose\",\n  WS: \"WillSave\",\n  DS: \"DidSave\",\n  WP: \"WillPrint\",\n  DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n  O: \"PageOpen\",\n  C: \"PageClose\",\n};\n\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n  // Intentionally start from 1 so it is easy to spot bad operators that will be\n  // 0's.\n  // PLEASE NOTE: We purposely keep any removed operators commented out, since\n  //              re-numbering the list would risk breaking third-party users.\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  // beginAnnotations: 78,\n  // endAnnotations: 79,\n  beginAnnotation: 80,\n  endAnnotation: 81,\n  // paintJpegXObject: 82,\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  rawFillPath: 94,\n};\n\n// In order to have a switch statement that is fast (i.e. which use a jump\n// table), we need to have the OPS in a contiguous range.\nconst DrawOPS = {\n  moveTo: 0,\n  lineTo: 1,\n  curveTo: 2,\n  closePath: 3,\n};\n\nconst PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\n\nfunction getVerbosityLevel() {\n  return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    // eslint-disable-next-line no-console\n    console.log(`Info: ${msg}`);\n  }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    // eslint-disable-next-line no-console\n    console.log(`Warning: ${msg}`);\n  }\n}\n\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\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}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n  if (!url) {\n    return null;\n  }\n  if (options && typeof url === \"string\") {\n    // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n    if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n      const dots = url.match(/\\./g);\n      // Avoid accidentally matching a *relative* URL pointing to a file named\n      // e.g. \"www.pdf\" or similar.\n      if (dots?.length >= 2) {\n        url = `http://${url}`;\n      }\n    }\n\n    // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n    // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n    if (options.tryConvertEncoding) {\n      try {\n        url = stringToUTF8String(url);\n      } catch {}\n    }\n  }\n\n  const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n  return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n}\n\n/**\n * Remove, or replace, the hash property of the URL.\n *\n * @param {URL|string} url - The absolute, or relative, URL.\n * @param {string} hash - The hash property (use an empty string to remove it).\n * @param {boolean} [allowRel] - Allow relative URLs.\n * @returns {string} The resulting URL string.\n */\nfunction updateUrlHash(url, hash, allowRel = false) {\n  const res = URL.parse(url);\n  if (res) {\n    res.hash = hash;\n    return res.href;\n  }\n  // Support well-formed relative URLs, necessary for `web/app.js` in GENERIC\n  // builds, by optionally falling back to string parsing.\n  if (allowRel && createValidAbsoluteUrl(url, \"http://example.com\")) {\n    return url.split(\"#\", 1)[0] + `${hash ? `#${hash}` : \"\"}`;\n  }\n  return \"\";\n}\n\nfunction shadow(obj, prop, value, nonSerializable = false) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n    assert(\n      prop in obj,\n      `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n    );\n  }\n  Object.defineProperty(obj, prop, {\n    value,\n    enumerable: !nonSerializable,\n    configurable: true,\n    writable: false,\n  });\n  return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n  // eslint-disable-next-line no-shadow\n  function BaseException(message, name) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === BaseException\n    ) {\n      unreachable(\"Cannot initialize BaseException.\");\n    }\n    this.message = message;\n    this.name = name;\n  }\n  BaseException.prototype = new Error();\n  BaseException.constructor = BaseException;\n\n  return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n  constructor(msg, code) {\n    super(msg, \"PasswordException\");\n    this.code = code;\n  }\n}\n\nclass UnknownErrorException extends BaseException {\n  constructor(msg, details) {\n    super(msg, \"UnknownErrorException\");\n    this.details = details;\n  }\n}\n\nclass InvalidPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"InvalidPDFException\");\n  }\n}\n\nclass ResponseException extends BaseException {\n  constructor(msg, status, missing) {\n    super(msg, \"ResponseException\");\n    this.status = status;\n    this.missing = missing;\n  }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n  constructor(msg) {\n    super(msg, \"FormatError\");\n  }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n  constructor(msg) {\n    super(msg, \"AbortException\");\n  }\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}\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}\n\nfunction string32(value) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n    assert(\n      typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n      `string32: Unexpected input \"${value}\".`\n    );\n  }\n  return String.fromCharCode(\n    (value >> 24) & 0xff,\n    (value >> 16) & 0xff,\n    (value >> 8) & 0xff,\n    value & 0xff\n  );\n}\n\nfunction objectSize(obj) {\n  return Object.keys(obj).length;\n}\n\n// Checks the endianness of the platform.\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}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n  try {\n    new Function(\"\"); // eslint-disable-line no-new, no-new-func\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nclass FeatureTest {\n  static get isLittleEndian() {\n    return shadow(this, \"isLittleEndian\", isLittleEndian());\n  }\n\n  static get isEvalSupported() {\n    return shadow(this, \"isEvalSupported\", isEvalSupported());\n  }\n\n  static get isOffscreenCanvasSupported() {\n    return shadow(\n      this,\n      \"isOffscreenCanvasSupported\",\n      typeof OffscreenCanvas !== \"undefined\"\n    );\n  }\n\n  static get isImageDecoderSupported() {\n    return shadow(\n      this,\n      \"isImageDecoderSupported\",\n      typeof ImageDecoder !== \"undefined\"\n    );\n  }\n\n  static get platform() {\n    if (\n      (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n      (typeof navigator !== \"undefined\" &&\n        typeof navigator?.platform === \"string\" &&\n        typeof navigator?.userAgent === \"string\")\n    ) {\n      const { platform, userAgent } = navigator;\n\n      return shadow(this, \"platform\", {\n        isAndroid: userAgent.includes(\"Android\"),\n        isLinux: platform.includes(\"Linux\"),\n        isMac: platform.includes(\"Mac\"),\n        isWindows: platform.includes(\"Win\"),\n        isFirefox:\n          (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n          userAgent.includes(\"Firefox\"),\n      });\n    }\n    return shadow(this, \"platform\", {\n      isAndroid: false,\n      isLinux: false,\n      isMac: false,\n      isWindows: false,\n      isFirefox: false,\n    });\n  }\n\n  static get isCSSRoundSupported() {\n    return shadow(\n      this,\n      \"isCSSRoundSupported\",\n      globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\")\n    );\n  }\n}\n\nconst hexNumbers = Array.from(Array(256).keys(), n =>\n  n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n  static makeHexColor(r, g, b) {\n    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n  }\n\n  // Apply a scaling matrix to some min/max values.\n  // If a scaling factor is negative then min and max must be\n  // swapped.\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\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\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\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\n  // Concatenates two transformation matrices together and returns the result.\n  static transform(m1, m2) {\n    return [\n      m1[0] * m2[0] + m1[2] * m2[1],\n      m1[1] * m2[0] + m1[3] * m2[1],\n      m1[0] * m2[2] + m1[2] * m2[3],\n      m1[1] * m2[2] + m1[3] * m2[3],\n      m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n      m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n    ];\n  }\n\n  // For 2d affine transforms\n  static applyTransform(p, m, pos = 0) {\n    const p0 = p[pos];\n    const p1 = p[pos + 1];\n    p[pos] = p0 * m[0] + p1 * m[2] + m[4];\n    p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\n  }\n\n  static applyTransformToBezier(p, transform, pos = 0) {\n    const m0 = transform[0];\n    const m1 = transform[1];\n    const m2 = transform[2];\n    const m3 = transform[3];\n    const m4 = transform[4];\n    const m5 = transform[5];\n    for (let i = 0; i < 6; i += 2) {\n      const pI = p[pos + i];\n      const pI1 = p[pos + i + 1];\n      p[pos + i] = pI * m0 + pI1 * m2 + m4;\n      p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\n    }\n  }\n\n  static applyInverseTransform(p, m) {\n    const p0 = p[0];\n    const p1 = p[1];\n    const d = m[0] * m[3] - m[1] * m[2];\n    p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n  }\n\n  // Applies the transform to the rectangle and finds the minimum axially\n  // aligned bounding box.\n  static axialAlignedBoundingBox(rect, transform, output) {\n    const m0 = transform[0];\n    const m1 = transform[1];\n    const m2 = transform[2];\n    const m3 = transform[3];\n    const m4 = transform[4];\n    const m5 = transform[5];\n    const r0 = rect[0];\n    const r1 = rect[1];\n    const r2 = rect[2];\n    const r3 = rect[3];\n\n    let a0 = m0 * r0 + m4;\n    let a2 = a0;\n    let a1 = m0 * r2 + m4;\n    let a3 = a1;\n    let b0 = m3 * r1 + m5;\n    let b2 = b0;\n    let b1 = m3 * r3 + m5;\n    let b3 = b1;\n\n    if (m1 !== 0 || m2 !== 0) {\n      // Non-scaling matrix: shouldn't be frequent.\n      const m1r0 = m1 * r0;\n      const m1r2 = m1 * r2;\n      const m2r1 = m2 * r1;\n      const m2r3 = m2 * r3;\n      a0 += m2r1;\n      a3 += m2r1;\n      a1 += m2r3;\n      a2 += m2r3;\n      b0 += m1r0;\n      b3 += m1r0;\n      b1 += m1r2;\n      b2 += m1r2;\n    }\n\n    output[0] = Math.min(output[0], a0, a1, a2, a3);\n    output[1] = Math.min(output[1], b0, b1, b2, b3);\n    output[2] = Math.max(output[2], a0, a1, a2, a3);\n    output[3] = Math.max(output[3], b0, b1, b2, b3);\n  }\n\n  static inverseTransform(m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    return [\n      m[3] / d,\n      -m[1] / d,\n      -m[2] / d,\n      m[0] / d,\n      (m[2] * m[5] - m[4] * m[3]) / d,\n      (m[4] * m[1] - m[5] * m[0]) / d,\n    ];\n  }\n\n  // This calculation uses Singular Value Decomposition.\n  // The SVD can be represented with formula A = USV. We are interested in the\n  // matrix S here because it represents the scale values.\n  static singularValueDecompose2dScale(matrix, output) {\n    const m0 = matrix[0];\n    const m1 = matrix[1];\n    const m2 = matrix[2];\n    const m3 = matrix[3];\n    // Multiply matrix m with its transpose.\n    const a = m0 ** 2 + m1 ** 2;\n    const b = m0 * m2 + m1 * m3;\n    const c = m2 ** 2 + m3 ** 2;\n\n    // Solve the second degree polynomial to get roots.\n    const first = (a + c) / 2;\n    const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\n    output[0] = Math.sqrt(first + second || 1);\n    output[1] = Math.sqrt(first - second || 1);\n  }\n\n  // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n  // For coordinate systems whose origin lies in the bottom-left, this\n  // means normalization to (BL,TR) ordering. For systems with origin in the\n  // top-left, this means (TL,BR) ordering.\n  static normalizeRect(rect) {\n    const r = rect.slice(0); // clone rect\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\n  // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n  // intersection of rect1 and rect2. If no intersection, returns 'null'\n  // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n  static intersect(rect1, rect2) {\n    const xLow = Math.max(\n      Math.min(rect1[0], rect1[2]),\n      Math.min(rect2[0], rect2[2])\n    );\n    const xHigh = Math.min(\n      Math.max(rect1[0], rect1[2]),\n      Math.max(rect2[0], rect2[2])\n    );\n    if (xLow > xHigh) {\n      return null;\n    }\n    const yLow = Math.max(\n      Math.min(rect1[1], rect1[3]),\n      Math.min(rect2[1], rect2[3])\n    );\n    const yHigh = Math.min(\n      Math.max(rect1[1], rect1[3]),\n      Math.max(rect2[1], rect2[3])\n    );\n    if (yLow > yHigh) {\n      return null;\n    }\n\n    return [xLow, yLow, xHigh, yHigh];\n  }\n\n  static pointBoundingBox(x, y, minMax) {\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\n  static rectBoundingBox(x0, y0, x1, y1, minMax) {\n    minMax[0] = Math.min(minMax[0], x0, x1);\n    minMax[1] = Math.min(minMax[1], y0, y1);\n    minMax[2] = Math.max(minMax[2], x0, x1);\n    minMax[3] = Math.max(minMax[3], y0, y1);\n  }\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\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(\n          x0,\n          x1,\n          x2,\n          x3,\n          y0,\n          y1,\n          y2,\n          y3,\n          -c / b,\n          minMax\n        );\n      }\n      return;\n    }\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(\n      x0,\n      x1,\n      x2,\n      x3,\n      y0,\n      y1,\n      y2,\n      y3,\n      (-b + sqrtDelta) / a2,\n      minMax\n    );\n    this.#getExtremumOnCurve(\n      x0,\n      x1,\n      x2,\n      x3,\n      y0,\n      y1,\n      y2,\n      y3,\n      (-b - sqrtDelta) / a2,\n      minMax\n    );\n  }\n\n  // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n  static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, 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\n    this.#getExtremum(\n      x0,\n      x1,\n      x2,\n      x3,\n      y0,\n      y1,\n      y2,\n      y3,\n      3 * (-x0 + 3 * (x1 - x2) + x3),\n      6 * (x0 - 2 * x1 + x2),\n      3 * (x1 - x0),\n      minMax\n    );\n    this.#getExtremum(\n      x0,\n      x1,\n      x2,\n      x3,\n      y0,\n      y1,\n      y2,\n      y3,\n      3 * (-y0 + 3 * (y1 - y2) + y3),\n      6 * (y0 - 2 * y1 + y2),\n      3 * (y1 - y0),\n      minMax\n    );\n  }\n}\n\nconst PDFStringTranslateTable = [\n  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,\n  0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  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,\n  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,\n  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,\n  0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n  0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n  0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n  0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n  // See section 7.9.2.2 Text String Type.\n  // The string can contain some language codes bracketed with 0x0b,\n  // so we must remove them.\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\n    if (encoding) {\n      try {\n        const decoder = new TextDecoder(encoding, { fatal: true });\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  // ISO Latin 1\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      // eslint-disable-next-line no-empty\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}\n\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\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}\n\nfunction getModificationDate(date = new Date()) {\n  const buffer = [\n    date.getUTCFullYear().toString(),\n    (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n    date.getUTCDate().toString().padStart(2, \"0\"),\n    date.getUTCHours().toString().padStart(2, \"0\"),\n    date.getUTCMinutes().toString().padStart(2, \"0\"),\n    date.getUTCSeconds().toString().padStart(2, \"0\"),\n  ];\n\n  return buffer.join(\"\");\n}\n\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n  if (!NormalizeRegex) {\n    // In order to generate the following regex:\n    //  - create a PDF containing all the chars in the range 0000-FFFF with\n    //    a NFKC which is different of the char.\n    //  - copy and paste all those chars and get the ones where NFKC is\n    //    required.\n    // It appears that most the chars here contain some ligatures.\n    NormalizeRegex =\n      /([\\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) =>\n    p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2)\n  );\n}\n\nfunction getUuid() {\n  if (\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n    typeof crypto.randomUUID === \"function\"\n  ) {\n    return crypto.randomUUID();\n  }\n  const buf = new Uint8Array(32);\n  crypto.getRandomValues(buf);\n  return bytesToString(buf);\n}\n\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\n\nfunction _isValidExplicitDest(validRef, validName, dest) {\n  if (!Array.isArray(dest) || dest.length < 2) {\n    return false;\n  }\n  const [page, zoom, ...args] = dest;\n  if (!validRef(page) && !Number.isInteger(page)) {\n    return false;\n  }\n  if (!validName(zoom)) {\n    return false;\n  }\n  const argsLen = args.length;\n  let allowNull = true;\n  switch (zoom.name) {\n    case \"XYZ\":\n      if (argsLen < 2 || argsLen > 3) {\n        return false;\n      }\n      break;\n    case \"Fit\":\n    case \"FitB\":\n      return argsLen === 0;\n    case \"FitH\":\n    case \"FitBH\":\n    case \"FitV\":\n    case \"FitBV\":\n      if (argsLen > 1) {\n        return false;\n      }\n      break;\n    case \"FitR\":\n      if (argsLen !== 4) {\n        return false;\n      }\n      allowNull = false;\n      break;\n    default:\n      return false;\n  }\n  for (const arg of args) {\n    if (typeof arg === \"number\" || (allowNull && arg === null)) {\n      continue;\n    }\n    return false;\n  }\n  return true;\n}\n\n// TOOD: Replace all occurrences of this function with `Math.clamp` once\n//       https://github.com/tc39/proposal-math-clamp/ is generally available.\nfunction MathClamp(v, min, max) {\n  return Math.min(Math.max(v, min), max);\n}\n\n// TODO: Remove this once `Uint8Array.prototype.toHex` is generally available.\nfunction toHexUtil(arr) {\n  if (Uint8Array.prototype.toHex) {\n    return arr.toHex();\n  }\n  return Array.from(arr, num => hexNumbers[num]).join(\"\");\n}\n\n// TODO: Remove this once `Uint8Array.prototype.toBase64` is generally\n//       available.\nfunction toBase64Util(arr) {\n  if (Uint8Array.prototype.toBase64) {\n    return arr.toBase64();\n  }\n  return btoa(bytesToString(arr));\n}\n\n// TODO: Remove this once `Uint8Array.fromBase64` is generally available.\nfunction fromBase64Util(str) {\n  if (Uint8Array.fromBase64) {\n    return Uint8Array.fromBase64(str);\n  }\n  return stringToBytes(atob(str));\n}\n\n// TODO: Remove this once https://bugzilla.mozilla.org/show_bug.cgi?id=1928493\n//       is fixed.\nif (\n  (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"SKIP_BABEL\")) &&\n  typeof Promise.try !== \"function\"\n) {\n  Promise.try = function (fn, ...args) {\n    return new Promise(resolve => {\n      resolve(fn(...args));\n    });\n  };\n}\n\n// TODO: Remove this once the `javascript.options.experimental.math_sumprecise`\n//       preference is removed from Firefox.\nif (typeof Math.sumPrecise !== \"function\") {\n  // Note that this isn't a \"proper\" polyfill, but since we're only using it to\n  // replace `Array.prototype.reduce()` invocations it should be fine.\n  Math.sumPrecise = function (numbers) {\n    return numbers.reduce((a, b) => a + b, 0);\n  };\n}\n\nif (\n  typeof PDFJSDev !== \"undefined\" &&\n  !PDFJSDev.test(\"SKIP_BABEL\") &&\n  typeof AbortSignal.any !== \"function\"\n) {\n  AbortSignal.any = function (iterable) {\n    const ac = new AbortController();\n    const { signal } = ac;\n\n    // Return immediately if any of the signals are already aborted.\n    for (const s of iterable) {\n      if (s.aborted) {\n        ac.abort(s.reason);\n        return signal;\n      }\n    }\n    // Register \"abort\" listeners for all signals.\n    for (const s of iterable) {\n      s.addEventListener(\n        \"abort\",\n        () => {\n          ac.abort(s.reason);\n        },\n        { signal } // Automatically remove the listener.\n      );\n    }\n\n    return signal;\n  };\n}\n\nexport {\n  _isValidExplicitDest,\n  AbortException,\n  AnnotationActionEventType,\n  AnnotationBorderStyleType,\n  AnnotationEditorParamsType,\n  AnnotationEditorPrefix,\n  AnnotationEditorType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationMode,\n  AnnotationPrefix,\n  AnnotationReplyType,\n  AnnotationType,\n  assert,\n  BaseException,\n  BASELINE_FACTOR,\n  bytesToString,\n  createValidAbsoluteUrl,\n  DocumentActionEventType,\n  DrawOPS,\n  FeatureTest,\n  FONT_IDENTITY_MATRIX,\n  FormatError,\n  fromBase64Util,\n  getModificationDate,\n  getUuid,\n  getVerbosityLevel,\n  hexNumbers,\n  ImageKind,\n  info,\n  InvalidPDFException,\n  isArrayEqual,\n  isNodeJS,\n  LINE_DESCENT_FACTOR,\n  LINE_FACTOR,\n  MathClamp,\n  normalizeUnicode,\n  objectSize,\n  OPS,\n  PageActionEventType,\n  PasswordException,\n  PasswordResponses,\n  PermissionFlag,\n  RenderingIntentFlag,\n  ResponseException,\n  setVerbosityLevel,\n  shadow,\n  string32,\n  stringToBytes,\n  stringToPDFString,\n  stringToUTF8String,\n  TextRenderingMode,\n  toBase64Util,\n  toHexUtil,\n  UnknownErrorException,\n  unreachable,\n  updateUrlHash,\n  utf8StringToString,\n  Util,\n  VerbosityLevel,\n  warn,\n};\n","/* Copyright 2012 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\nimport { assert, shadow, unreachable } from \"../shared/util.js\";\n\nconst CIRCULAR_REF = Symbol(\"CIRCULAR_REF\");\nconst EOF = Symbol(\"EOF\");\n\nlet CmdCache = Object.create(null);\nlet NameCache = Object.create(null);\nlet RefCache = Object.create(null);\n\nfunction clearPrimitiveCaches() {\n  CmdCache = Object.create(null);\n  NameCache = Object.create(null);\n  RefCache = Object.create(null);\n}\n\nclass Name {\n  constructor(name) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      typeof name !== \"string\"\n    ) {\n      unreachable('Name: The \"name\" must be a string.');\n    }\n    this.name = name;\n  }\n\n  static get(name) {\n    // eslint-disable-next-line no-restricted-syntax\n    return (NameCache[name] ||= new Name(name));\n  }\n}\n\nclass Cmd {\n  constructor(cmd) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      typeof cmd !== \"string\"\n    ) {\n      unreachable('Cmd: The \"cmd\" must be a string.');\n    }\n    this.cmd = cmd;\n  }\n\n  static get(cmd) {\n    // eslint-disable-next-line no-restricted-syntax\n    return (CmdCache[cmd] ||= new Cmd(cmd));\n  }\n}\n\nconst nonSerializable = function nonSerializableClosure() {\n  return nonSerializable; // Creating closure on some variable.\n};\n\nclass Dict {\n  constructor(xref = null) {\n    // Map should only be used internally, use functions below to access.\n    this._map = new Map();\n    this.xref = xref;\n    this.objId = null;\n    this.suppressEncryption = false;\n    this.__nonSerializable__ = nonSerializable; // Disable cloning of the Dict.\n  }\n\n  assignXref(newXref) {\n    this.xref = newXref;\n  }\n\n  get size() {\n    return this._map.size;\n  }\n\n  // Automatically dereferences Ref objects.\n  get(key1, key2, key3) {\n    let value = this._map.get(key1);\n    if (value === undefined && key2 !== undefined) {\n      if (\n        (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n        key2.length < key1.length\n      ) {\n        unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n      }\n      value = this._map.get(key2);\n      if (value === undefined && key3 !== undefined) {\n        if (\n          (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n          key3.length < key2.length\n        ) {\n          unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n        }\n        value = this._map.get(key3);\n      }\n    }\n    if (value instanceof Ref && this.xref) {\n      return this.xref.fetch(value, this.suppressEncryption);\n    }\n    return value;\n  }\n\n  // Same as get(), but returns a promise and uses fetchIfRefAsync().\n  async getAsync(key1, key2, key3) {\n    let value = this._map.get(key1);\n    if (value === undefined && key2 !== undefined) {\n      if (\n        (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n        key2.length < key1.length\n      ) {\n        unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n      }\n      value = this._map.get(key2);\n      if (value === undefined && key3 !== undefined) {\n        if (\n          (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n          key3.length < key2.length\n        ) {\n          unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n        }\n        value = this._map.get(key3);\n      }\n    }\n    if (value instanceof Ref && this.xref) {\n      return this.xref.fetchAsync(value, this.suppressEncryption);\n    }\n    return value;\n  }\n\n  // Same as get(), but dereferences all elements if the result is an Array.\n  getArray(key1, key2, key3) {\n    let value = this._map.get(key1);\n    if (value === undefined && key2 !== undefined) {\n      if (\n        (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n        key2.length < key1.length\n      ) {\n        unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n      }\n      value = this._map.get(key2);\n      if (value === undefined && key3 !== undefined) {\n        if (\n          (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n          key3.length < key2.length\n        ) {\n          unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n        }\n        value = this._map.get(key3);\n      }\n    }\n    if (value instanceof Ref && this.xref) {\n      value = this.xref.fetch(value, this.suppressEncryption);\n    }\n\n    if (Array.isArray(value)) {\n      value = value.slice(); // Ensure that we don't modify the Dict data.\n      for (let i = 0, ii = value.length; i < ii; i++) {\n        if (value[i] instanceof Ref && this.xref) {\n          value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n        }\n      }\n    }\n    return value;\n  }\n\n  // No dereferencing.\n  getRaw(key) {\n    return this._map.get(key);\n  }\n\n  getKeys() {\n    return [...this._map.keys()];\n  }\n\n  // No dereferencing.\n  getRawValues() {\n    return [...this._map.values()];\n  }\n\n  set(key, value) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      if (typeof key !== \"string\") {\n        unreachable('Dict.set: The \"key\" must be a string.');\n      } else if (value === undefined) {\n        unreachable('Dict.set: The \"value\" cannot be undefined.');\n      }\n    }\n    this._map.set(key, value);\n  }\n\n  has(key) {\n    return this._map.has(key);\n  }\n\n  *[Symbol.iterator]() {\n    for (const [key, value] of this._map) {\n      yield [\n        key,\n        value instanceof Ref && this.xref\n          ? this.xref.fetch(value, this.suppressEncryption)\n          : value,\n      ];\n    }\n  }\n\n  static get empty() {\n    const emptyDict = new Dict(null);\n\n    emptyDict.set = (key, value) => {\n      unreachable(\"Should not call `set` on the empty dictionary.\");\n    };\n    return shadow(this, \"empty\", emptyDict);\n  }\n\n  static merge({ xref, dictArray, mergeSubDicts = false }) {\n    const mergedDict = new Dict(xref),\n      properties = new Map();\n\n    for (const dict of dictArray) {\n      if (!(dict instanceof Dict)) {\n        continue;\n      }\n      for (const [key, value] of dict._map) {\n        let property = properties.get(key);\n        if (property === undefined) {\n          property = [];\n          properties.set(key, property);\n        } else if (!mergeSubDicts || !(value instanceof Dict)) {\n          // Ignore additional entries, if either:\n          //  - This is a \"shallow\" merge, where only the first element matters.\n          //  - The value is *not* a `Dict`, since other types cannot be merged.\n          continue;\n        }\n        property.push(value);\n      }\n    }\n    for (const [name, values] of properties) {\n      if (values.length === 1 || !(values[0] instanceof Dict)) {\n        mergedDict._map.set(name, values[0]);\n        continue;\n      }\n      const subDict = new Dict(xref);\n\n      for (const dict of values) {\n        for (const [key, value] of dict._map) {\n          if (!subDict._map.has(key)) {\n            subDict._map.set(key, value);\n          }\n        }\n      }\n      if (subDict.size > 0) {\n        mergedDict._map.set(name, subDict);\n      }\n    }\n    properties.clear();\n\n    return mergedDict.size > 0 ? mergedDict : Dict.empty;\n  }\n\n  clone() {\n    const dict = new Dict(this.xref);\n    for (const key of this.getKeys()) {\n      dict.set(key, this.getRaw(key));\n    }\n    return dict;\n  }\n\n  delete(key) {\n    delete this._map[key];\n  }\n}\n\nclass Ref {\n  constructor(num, gen) {\n    this.num = num;\n    this.gen = gen;\n  }\n\n  toString() {\n    // This function is hot, so we make the string as compact as possible.\n    // |this.gen| is almost always zero, so we treat that case specially.\n    if (this.gen === 0) {\n      return `${this.num}R`;\n    }\n    return `${this.num}R${this.gen}`;\n  }\n\n  static fromString(str) {\n    const ref = RefCache[str];\n    if (ref) {\n      return ref;\n    }\n    const m = /^(\\d+)R(\\d*)$/.exec(str);\n    if (!m || m[1] === \"0\") {\n      return null;\n    }\n\n    // eslint-disable-next-line no-restricted-syntax\n    return (RefCache[str] = new Ref(\n      parseInt(m[1]),\n      !m[2] ? 0 : parseInt(m[2])\n    ));\n  }\n\n  static get(num, gen) {\n    const key = gen === 0 ? `${num}R` : `${num}R${gen}`;\n    // eslint-disable-next-line no-restricted-syntax\n    return (RefCache[key] ||= new Ref(num, gen));\n  }\n}\n\n// The reference is identified by number and generation.\n// This structure stores only one instance of the reference.\nclass RefSet {\n  constructor(parent = null) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      parent &&\n      !(parent instanceof RefSet)\n    ) {\n      unreachable('RefSet: Invalid \"parent\" value.');\n    }\n    this._set = new Set(parent?._set);\n  }\n\n  has(ref) {\n    return this._set.has(ref.toString());\n  }\n\n  put(ref) {\n    this._set.add(ref.toString());\n  }\n\n  remove(ref) {\n    this._set.delete(ref.toString());\n  }\n\n  [Symbol.iterator]() {\n    return this._set.values();\n  }\n\n  clear() {\n    this._set.clear();\n  }\n}\n\nclass RefSetCache {\n  constructor() {\n    this._map = new Map();\n  }\n\n  get size() {\n    return this._map.size;\n  }\n\n  get(ref) {\n    return this._map.get(ref.toString());\n  }\n\n  has(ref) {\n    return this._map.has(ref.toString());\n  }\n\n  put(ref, obj) {\n    this._map.set(ref.toString(), obj);\n  }\n\n  putAlias(ref, aliasRef) {\n    this._map.set(ref.toString(), this.get(aliasRef));\n  }\n\n  [Symbol.iterator]() {\n    return this._map.values();\n  }\n\n  clear() {\n    this._map.clear();\n  }\n\n  *values() {\n    yield* this._map.values();\n  }\n\n  *items() {\n    for (const [ref, value] of this._map) {\n      yield [Ref.fromString(ref), value];\n    }\n  }\n}\n\nfunction isName(v, name) {\n  return v instanceof Name && (name === undefined || v.name === name);\n}\n\nfunction isCmd(v, cmd) {\n  return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n  return (\n    v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type))\n  );\n}\n\nfunction isRefsEqual(v1, v2) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n    assert(\n      v1 instanceof Ref && v2 instanceof Ref,\n      \"isRefsEqual: Both parameters should be `Ref`s.\"\n    );\n  }\n  return v1.num === v2.num && v1.gen === v2.gen;\n}\n\nexport {\n  CIRCULAR_REF,\n  clearPrimitiveCaches,\n  Cmd,\n  Dict,\n  EOF,\n  isCmd,\n  isDict,\n  isName,\n  isRefsEqual,\n  Name,\n  Ref,\n  RefSet,\n  RefSetCache,\n};\n","/* Copyright 2021 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\nimport { bytesToString, shadow, unreachable } from \"../shared/util.js\";\n\nclass BaseStream {\n  constructor() {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === BaseStream\n    ) {\n      unreachable(\"Cannot initialize BaseStream.\");\n    }\n  }\n\n  // eslint-disable-next-line getter-return\n  get length() {\n    unreachable(\"Abstract getter `length` accessed\");\n  }\n\n  // eslint-disable-next-line getter-return\n  get isEmpty() {\n    unreachable(\"Abstract getter `isEmpty` accessed\");\n  }\n\n  get isDataLoaded() {\n    return shadow(this, \"isDataLoaded\", true);\n  }\n\n  getByte() {\n    unreachable(\"Abstract method `getByte` called\");\n  }\n\n  getBytes(length) {\n    unreachable(\"Abstract method `getBytes` called\");\n  }\n\n  /**\n   * NOTE: This method can only be used to get image-data that is guaranteed\n   *       to be fully loaded, since otherwise intermittent errors may occur;\n   *       note the `ObjectLoader` class.\n   */\n  async getImageData(length, decoderOptions) {\n    return this.getBytes(length, decoderOptions);\n  }\n\n  async asyncGetBytes() {\n    unreachable(\"Abstract method `asyncGetBytes` called\");\n  }\n\n  get isAsync() {\n    return false;\n  }\n\n  get isAsyncDecoder() {\n    return false;\n  }\n\n  get canAsyncDecodeImageFromBuffer() {\n    return false;\n  }\n\n  async getTransferableImage() {\n    return null;\n  }\n\n  peekByte() {\n    const peekedByte = this.getByte();\n    if (peekedByte !== -1) {\n      this.pos--;\n    }\n    return peekedByte;\n  }\n\n  peekBytes(length) {\n    const bytes = this.getBytes(length);\n    this.pos -= bytes.length;\n    return bytes;\n  }\n\n  getUint16() {\n    const b0 = this.getByte();\n    const b1 = this.getByte();\n    if (b0 === -1 || b1 === -1) {\n      return -1;\n    }\n    return (b0 << 8) + b1;\n  }\n\n  getInt32() {\n    const b0 = this.getByte();\n    const b1 = this.getByte();\n    const b2 = this.getByte();\n    const b3 = this.getByte();\n    return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n  }\n\n  getByteRange(begin, end) {\n    unreachable(\"Abstract method `getByteRange` called\");\n  }\n\n  getString(length) {\n    return bytesToString(this.getBytes(length));\n  }\n\n  skip(n) {\n    this.pos += n || 1;\n  }\n\n  reset() {\n    unreachable(\"Abstract method `reset` called\");\n  }\n\n  moveStart() {\n    unreachable(\"Abstract method `moveStart` called\");\n  }\n\n  makeSubStream(start, length, dict = null) {\n    unreachable(\"Abstract method `makeSubStream` called\");\n  }\n\n  /**\n   * @returns {Array | null}\n   */\n  getBaseStreams() {\n    return null;\n  }\n}\n\nexport { BaseStream };\n","/* Copyright 2019 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\nimport {\n  AnnotationEditorPrefix,\n  assert,\n  BaseException,\n  hexNumbers,\n  objectSize,\n  stringToPDFString,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { Dict, isName, Ref, RefSet } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\n\nconst PDF_VERSION_REGEXP = /^[1-9]\\.\\d$/;\nconst MAX_INT_32 = 2 ** 31 - 1;\nconst MIN_INT_32 = -(2 ** 31);\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\n\nconst RESOURCES_KEYS_OPERATOR_LIST = [\n  \"ColorSpace\",\n  \"ExtGState\",\n  \"Font\",\n  \"Pattern\",\n  \"Properties\",\n  \"Shading\",\n  \"XObject\",\n];\n\nconst RESOURCES_KEYS_TEXT_CONTENT = [\n  \"ExtGState\",\n  \"Font\",\n  \"Properties\",\n  \"XObject\",\n];\n\nfunction getLookupTableFactory(initializer) {\n  let lookup;\n  return function () {\n    if (initializer) {\n      lookup = Object.create(null);\n      initializer(lookup);\n      initializer = null;\n    }\n    return lookup;\n  };\n}\n\nclass MissingDataException extends BaseException {\n  constructor(begin, end) {\n    super(`Missing data [${begin}, ${end})`, \"MissingDataException\");\n    this.begin = begin;\n    this.end = end;\n  }\n}\n\nclass ParserEOFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"ParserEOFException\");\n  }\n}\n\nclass XRefEntryException extends BaseException {\n  constructor(msg) {\n    super(msg, \"XRefEntryException\");\n  }\n}\n\nclass XRefParseException extends BaseException {\n  constructor(msg) {\n    super(msg, \"XRefParseException\");\n  }\n}\n\n/**\n * Combines multiple ArrayBuffers into a single Uint8Array.\n * @param {Array<ArrayBuffer>} arr - An array of ArrayBuffers.\n * @returns {Uint8Array}\n */\nfunction arrayBuffersToBytes(arr) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n    for (const item of arr) {\n      assert(\n        item instanceof ArrayBuffer,\n        \"arrayBuffersToBytes - expected an ArrayBuffer.\"\n      );\n    }\n  }\n  const length = arr.length;\n  if (length === 0) {\n    return new Uint8Array(0);\n  }\n  if (length === 1) {\n    return new Uint8Array(arr[0]);\n  }\n  let dataLength = 0;\n  for (let i = 0; i < length; i++) {\n    dataLength += arr[i].byteLength;\n  }\n  const data = new Uint8Array(dataLength);\n  let pos = 0;\n  for (let i = 0; i < length; i++) {\n    const item = new Uint8Array(arr[i]);\n    data.set(item, pos);\n    pos += item.byteLength;\n  }\n  return data;\n}\n\nasync function fetchBinaryData(url) {\n  const response = await fetch(url);\n  if (!response.ok) {\n    throw new Error(\n      `Failed to fetch file \"${url}\" with \"${response.statusText}\".`\n    );\n  }\n  return new Uint8Array(await response.arrayBuffer());\n}\n\n/**\n * Get the value of an inheritable property.\n *\n * If the PDF specification explicitly lists a property in a dictionary as\n * inheritable, then the value of the property may be present in the dictionary\n * itself or in one or more parents of the dictionary.\n *\n * If the key is not found in the tree, `undefined` is returned. Otherwise,\n * the value for the key is returned or, if `stopWhenFound` is `false`, a list\n * of values is returned.\n *\n * @param {Dict} dict - Dictionary from where to start the traversal.\n * @param {string} key - The key of the property to find the value for.\n * @param {boolean} getArray - Whether or not the value should be fetched as an\n *   array. The default value is `false`.\n * @param {boolean} stopWhenFound - Whether or not to stop the traversal when\n *   the key is found. If set to `false`, we always walk up the entire parent\n *   chain, for example to be able to find `\\Resources` placed on multiple\n *   levels of the tree. The default value is `true`.\n */\nfunction getInheritableProperty({\n  dict,\n  key,\n  getArray = false,\n  stopWhenFound = true,\n}) {\n  let values;\n  const visited = new RefSet();\n\n  while (dict instanceof Dict && !(dict.objId && visited.has(dict.objId))) {\n    if (dict.objId) {\n      visited.put(dict.objId);\n    }\n    const value = getArray ? dict.getArray(key) : dict.get(key);\n    if (value !== undefined) {\n      if (stopWhenFound) {\n        return value;\n      }\n      (values ||= []).push(value);\n    }\n    dict = dict.get(\"Parent\");\n  }\n  return values;\n}\n\n/**\n * Get the parent dictionary to update when a property is set.\n *\n * @param {Dict} dict - Dictionary from where to start the traversal.\n * @param {Ref} ref - The reference to the dictionary.\n * @param {XRef} xref - The `XRef` instance.\n */\nfunction getParentToUpdate(dict, ref, xref) {\n  const visited = new RefSet();\n  const firstDict = dict;\n  const result = { dict: null, ref: null };\n\n  while (dict instanceof Dict && !visited.has(ref)) {\n    visited.put(ref);\n    if (dict.has(\"T\")) {\n      break;\n    }\n    ref = dict.getRaw(\"Parent\");\n    if (!(ref instanceof Ref)) {\n      return result;\n    }\n    dict = xref.fetch(ref);\n  }\n  if (dict instanceof Dict && dict !== firstDict) {\n    result.dict = dict;\n    result.ref = ref;\n  }\n  return result;\n}\n\n// prettier-ignore\nconst ROMAN_NUMBER_MAP = [\n  \"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\",\n  \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\",\n  \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"\n];\n\n/**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {number} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n *   to lower case letters. The default value is `false`.\n * @returns {string} The resulting Roman number.\n */\nfunction toRomanNumerals(number, lowerCase = false) {\n  assert(\n    Number.isInteger(number) && number > 0,\n    \"The number should be a positive integer.\"\n  );\n\n  const roman =\n    \"M\".repeat((number / 1000) | 0) +\n    ROMAN_NUMBER_MAP[((number % 1000) / 100) | 0] +\n    ROMAN_NUMBER_MAP[10 + (((number % 100) / 10) | 0)] +\n    ROMAN_NUMBER_MAP[20 + (number % 10)];\n  return lowerCase ? roman.toLowerCase() : roman;\n}\n\n// Calculate the base 2 logarithm of the number `x`. This differs from the\n// native function in the sense that it returns the ceiling value and that it\n// returns 0 instead of `Infinity`/`NaN` for `x` values smaller than/equal to 0.\nfunction log2(x) {\n  return x > 0 ? Math.ceil(Math.log2(x)) : 0;\n}\n\nfunction readInt8(data, offset) {\n  return (data[offset] << 24) >> 24;\n}\n\nfunction readInt16(data, offset) {\n  return ((data[offset] << 24) | (data[offset + 1] << 16)) >> 16;\n}\n\nfunction readUint16(data, offset) {\n  return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n  return (\n    ((data[offset] << 24) |\n      (data[offset + 1] << 16) |\n      (data[offset + 2] << 8) |\n      data[offset + 3]) >>>\n    0\n  );\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isWhiteSpace(ch) {\n  return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\n\n/**\n * Checks if something is an Array containing only boolean values,\n * and (optionally) checks its length.\n * @param {any} arr\n * @param {number | null} len\n * @returns {boolean}\n */\nfunction isBooleanArray(arr, len) {\n  return (\n    Array.isArray(arr) &&\n    (len === null || arr.length === len) &&\n    arr.every(x => typeof x === \"boolean\")\n  );\n}\n\n/**\n * Checks if something is an Array containing only numbers,\n * and (optionally) checks its length.\n * @param {any} arr\n * @param {number | null} len\n * @returns {boolean}\n */\nfunction isNumberArray(arr, len) {\n  if (Array.isArray(arr)) {\n    return (\n      (len === null || arr.length === len) &&\n      arr.every(x => typeof x === \"number\")\n    );\n  }\n\n  // This check allows us to have typed arrays but not the\n  // BigInt64Array/BigUint64Array types (their elements aren't \"number\").\n  return (\n    ArrayBuffer.isView(arr) &&\n    !(arr instanceof BigInt64Array || arr instanceof BigUint64Array) &&\n    (len === null || arr.length === len)\n  );\n}\n\n// Returns the matrix, or the fallback value if it's invalid.\nfunction lookupMatrix(arr, fallback) {\n  return isNumberArray(arr, 6) ? arr : fallback;\n}\n\n// Returns the rectangle, or the fallback value if it's invalid.\nfunction lookupRect(arr, fallback) {\n  return isNumberArray(arr, 4) ? arr : fallback;\n}\n\n// Returns the normalized rectangle, or the fallback value if it's invalid.\nfunction lookupNormalRect(arr, fallback) {\n  return isNumberArray(arr, 4) ? Util.normalizeRect(arr) : fallback;\n}\n\n/**\n * AcroForm field names use an array like notation to refer to\n * repeated XFA elements e.g. foo.bar[nnn].\n * see: XFA Spec Chapter 3 - Repeated Elements\n *\n * @param {string} path - XFA path name.\n * @returns {Array} - Array of Objects with the name and pos of\n * each part of the path.\n */\nfunction parseXFAPath(path) {\n  const positionPattern = /(.+)\\[(\\d+)\\]$/;\n  return path.split(\".\").map(component => {\n    const m = component.match(positionPattern);\n    if (m) {\n      return { name: m[1], pos: parseInt(m[2], 10) };\n    }\n    return { name: component, pos: 0 };\n  });\n}\n\nfunction escapePDFName(str) {\n  const buffer = [];\n  let start = 0;\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.charCodeAt(i);\n    // Whitespace or delimiters aren't regular chars, so escape them.\n    if (\n      char < 0x21 ||\n      char > 0x7e ||\n      char === 0x23 /* # */ ||\n      char === 0x28 /* ( */ ||\n      char === 0x29 /* ) */ ||\n      char === 0x3c /* < */ ||\n      char === 0x3e /* > */ ||\n      char === 0x5b /* [ */ ||\n      char === 0x5d /* ] */ ||\n      char === 0x7b /* { */ ||\n      char === 0x7d /* } */ ||\n      char === 0x2f /* / */ ||\n      char === 0x25 /* % */\n    ) {\n      if (start < i) {\n        buffer.push(str.substring(start, i));\n      }\n      buffer.push(`#${char.toString(16)}`);\n      start = i + 1;\n    }\n  }\n\n  if (buffer.length === 0) {\n    return str;\n  }\n\n  if (start < str.length) {\n    buffer.push(str.substring(start, str.length));\n  }\n\n  return buffer.join(\"\");\n}\n\n// Replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\" by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n// in order to write it in a PDF file.\nfunction escapeString(str) {\n  return str.replaceAll(/([()\\\\\\n\\r])/g, match => {\n    if (match === \"\\n\") {\n      return \"\\\\n\";\n    } else if (match === \"\\r\") {\n      return \"\\\\r\";\n    }\n    return `\\\\${match}`;\n  });\n}\n\nfunction _collectJS(entry, xref, list, parents) {\n  if (!entry) {\n    return;\n  }\n\n  let parent = null;\n  if (entry instanceof Ref) {\n    if (parents.has(entry)) {\n      // If we've already found entry then we've a cycle.\n      return;\n    }\n    parent = entry;\n    parents.put(parent);\n    entry = xref.fetch(entry);\n  }\n  if (Array.isArray(entry)) {\n    for (const element of entry) {\n      _collectJS(element, xref, list, parents);\n    }\n  } else if (entry instanceof Dict) {\n    if (isName(entry.get(\"S\"), \"JavaScript\")) {\n      const js = entry.get(\"JS\");\n      let code;\n      if (js instanceof BaseStream) {\n        code = js.getString();\n      } else if (typeof js === \"string\") {\n        code = js;\n      }\n      code &&= stringToPDFString(code).replaceAll(\"\\x00\", \"\");\n      if (code) {\n        list.push(code);\n      }\n    }\n    _collectJS(entry.getRaw(\"Next\"), xref, list, parents);\n  }\n\n  if (parent) {\n    parents.remove(parent);\n  }\n}\n\nfunction collectActions(xref, dict, eventType) {\n  const actions = Object.create(null);\n  const additionalActionsDicts = getInheritableProperty({\n    dict,\n    key: \"AA\",\n    stopWhenFound: false,\n  });\n  if (additionalActionsDicts) {\n    // additionalActionsDicts contains dicts from ancestors\n    // as they're found in the tree from bottom to top.\n    // So the dicts are visited in reverse order to guarantee\n    // that actions from elder ancestors will be overwritten\n    // by ones from younger ancestors.\n    for (let i = additionalActionsDicts.length - 1; i >= 0; i--) {\n      const additionalActions = additionalActionsDicts[i];\n      if (!(additionalActions instanceof Dict)) {\n        continue;\n      }\n      for (const key of additionalActions.getKeys()) {\n        const action = eventType[key];\n        if (!action) {\n          continue;\n        }\n        const actionDict = additionalActions.getRaw(key);\n        const parents = new RefSet();\n        const list = [];\n        _collectJS(actionDict, xref, list, parents);\n        if (list.length > 0) {\n          actions[action] = list;\n        }\n      }\n    }\n  }\n  // Collect the Action if any (we may have one on pushbutton).\n  if (dict.has(\"A\")) {\n    const actionDict = dict.get(\"A\");\n    const parents = new RefSet();\n    const list = [];\n    _collectJS(actionDict, xref, list, parents);\n    if (list.length > 0) {\n      actions.Action = list;\n    }\n  }\n  return objectSize(actions) > 0 ? actions : null;\n}\n\nconst XMLEntities = {\n  /* < */ 0x3c: \"&lt;\",\n  /* > */ 0x3e: \"&gt;\",\n  /* & */ 0x26: \"&amp;\",\n  /* \" */ 0x22: \"&quot;\",\n  /* ' */ 0x27: \"&apos;\",\n};\n\nfunction* codePointIter(str) {\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.codePointAt(i);\n    if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {\n      // char is represented by two u16\n      i++;\n    }\n    yield char;\n  }\n}\n\nfunction encodeToXmlString(str) {\n  const buffer = [];\n  let start = 0;\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.codePointAt(i);\n    if (0x20 <= char && char <= 0x7e) {\n      // ascii\n      const entity = XMLEntities[char];\n      if (entity) {\n        if (start < i) {\n          buffer.push(str.substring(start, i));\n        }\n        buffer.push(entity);\n        start = i + 1;\n      }\n    } else {\n      if (start < i) {\n        buffer.push(str.substring(start, i));\n      }\n      buffer.push(`&#x${char.toString(16).toUpperCase()};`);\n      if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {\n        // char is represented by two u16\n        i++;\n      }\n      start = i + 1;\n    }\n  }\n\n  if (buffer.length === 0) {\n    return str;\n  }\n  if (start < str.length) {\n    buffer.push(str.substring(start, str.length));\n  }\n  return buffer.join(\"\");\n}\n\nfunction validateFontName(fontFamily, mustWarn = false) {\n  // See https://developer.mozilla.org/en-US/docs/Web/CSS/string.\n  const m = /^(\"|').*(\"|')$/.exec(fontFamily);\n  if (m && m[1] === m[2]) {\n    const re = new RegExp(`[^\\\\\\\\]${m[1]}`);\n    if (re.test(fontFamily.slice(1, -1))) {\n      if (mustWarn) {\n        warn(`FontFamily contains unescaped ${m[1]}: ${fontFamily}.`);\n      }\n      return false;\n    }\n  } else {\n    // See https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident.\n    for (const ident of fontFamily.split(/[ \\t]+/)) {\n      if (/^(\\d|(-(\\d|-)))/.test(ident) || !/^[\\w-\\\\]+$/.test(ident)) {\n        if (mustWarn) {\n          warn(`FontFamily contains invalid <custom-ident>: ${fontFamily}.`);\n        }\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nfunction validateCSSFont(cssFontInfo) {\n  // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-style.\n  const DEFAULT_CSS_FONT_OBLIQUE = \"14\";\n  // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight.\n  const DEFAULT_CSS_FONT_WEIGHT = \"400\";\n  const CSS_FONT_WEIGHT_VALUES = new Set([\n    \"100\",\n    \"200\",\n    \"300\",\n    \"400\",\n    \"500\",\n    \"600\",\n    \"700\",\n    \"800\",\n    \"900\",\n    \"1000\",\n    \"normal\",\n    \"bold\",\n    \"bolder\",\n    \"lighter\",\n  ]);\n\n  const { fontFamily, fontWeight, italicAngle } = cssFontInfo;\n\n  if (!validateFontName(fontFamily, true)) {\n    return false;\n  }\n\n  const weight = fontWeight ? fontWeight.toString() : \"\";\n  cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight)\n    ? weight\n    : DEFAULT_CSS_FONT_WEIGHT;\n\n  const angle = parseFloat(italicAngle);\n  cssFontInfo.italicAngle =\n    isNaN(angle) || angle < -90 || angle > 90\n      ? DEFAULT_CSS_FONT_OBLIQUE\n      : italicAngle.toString();\n\n  return true;\n}\n\nfunction recoverJsURL(str) {\n  // Attempt to recover valid URLs from `JS` entries with certain\n  // white-listed formats:\n  //  - window.open('http://example.com')\n  //  - app.launchURL('http://example.com', true)\n  //  - xfa.host.gotoURL('http://example.com')\n  const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\", \"xfa.host.gotoURL\"];\n  const regex = new RegExp(\n    \"^\\\\s*(\" +\n      URL_OPEN_METHODS.join(\"|\").replaceAll(\".\", \"\\\\.\") +\n      \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\",\n    \"i\"\n  );\n\n  const jsUrl = regex.exec(str);\n  if (jsUrl?.[2]) {\n    return {\n      url: jsUrl[2],\n      newWindow: jsUrl[1] === \"app.launchURL\" && jsUrl[3] === \"true\",\n    };\n  }\n\n  return null;\n}\n\nfunction numberToString(value) {\n  if (Number.isInteger(value)) {\n    return value.toString();\n  }\n\n  const roundedValue = Math.round(value * 100);\n  if (roundedValue % 100 === 0) {\n    return (roundedValue / 100).toString();\n  }\n\n  if (roundedValue % 10 === 0) {\n    return value.toFixed(1);\n  }\n\n  return value.toFixed(2);\n}\n\nfunction getNewAnnotationsMap(annotationStorage) {\n  if (!annotationStorage) {\n    return null;\n  }\n  const newAnnotationsByPage = new Map();\n  // The concept of page in a XFA is very different, so\n  // editing is just not implemented.\n  for (const [key, value] of annotationStorage) {\n    if (!key.startsWith(AnnotationEditorPrefix)) {\n      continue;\n    }\n    let annotations = newAnnotationsByPage.get(value.pageIndex);\n    if (!annotations) {\n      annotations = [];\n      newAnnotationsByPage.set(value.pageIndex, annotations);\n    }\n    annotations.push(value);\n  }\n  return newAnnotationsByPage.size > 0 ? newAnnotationsByPage : null;\n}\n\nfunction stringToAsciiOrUTF16BE(str) {\n  return isAscii(str) ? str : stringToUTF16String(str, /* bigEndian = */ true);\n}\n\nfunction isAscii(str) {\n  return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16HexString(str) {\n  const buf = [];\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.charCodeAt(i);\n    buf.push(hexNumbers[(char >> 8) & 0xff], hexNumbers[char & 0xff]);\n  }\n  return buf.join(\"\");\n}\n\nfunction stringToUTF16String(str, bigEndian = false) {\n  const buf = [];\n  if (bigEndian) {\n    buf.push(\"\\xFE\\xFF\");\n  }\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.charCodeAt(i);\n    buf.push(\n      String.fromCharCode((char >> 8) & 0xff),\n      String.fromCharCode(char & 0xff)\n    );\n  }\n  return buf.join(\"\");\n}\n\nfunction getRotationMatrix(rotation, width, height) {\n  switch (rotation) {\n    case 90:\n      return [0, 1, -1, 0, width, 0];\n    case 180:\n      return [-1, 0, 0, -1, width, height];\n    case 270:\n      return [0, -1, 1, 0, 0, height];\n    default:\n      throw new Error(\"Invalid rotation\");\n  }\n}\n\n/**\n * Get the number of bytes to use to represent the given positive integer.\n * If n is zero, the function returns 0 which means that we don't need to waste\n * a byte to represent it.\n * @param {number} x - a positive integer.\n * @returns {number}\n */\nfunction getSizeInBytes(x) {\n  // n bits are required for numbers up to 2^n - 1.\n  // So for a number x, we need ceil(log2(1 + x)) bits.\n  return Math.ceil(Math.ceil(Math.log2(1 + x)) / 8);\n}\n\nexport {\n  arrayBuffersToBytes,\n  codePointIter,\n  collectActions,\n  encodeToXmlString,\n  escapePDFName,\n  escapeString,\n  fetchBinaryData,\n  getInheritableProperty,\n  getLookupTableFactory,\n  getNewAnnotationsMap,\n  getParentToUpdate,\n  getRotationMatrix,\n  getSizeInBytes,\n  IDENTITY_MATRIX,\n  isAscii,\n  isBooleanArray,\n  isNumberArray,\n  isWhiteSpace,\n  log2,\n  lookupMatrix,\n  lookupNormalRect,\n  lookupRect,\n  MAX_INT_32,\n  MIN_INT_32,\n  MissingDataException,\n  numberToString,\n  ParserEOFException,\n  parseXFAPath,\n  PDF_VERSION_REGEXP,\n  readInt16,\n  readInt8,\n  readUint16,\n  readUint32,\n  recoverJsURL,\n  RESOURCES_KEYS_OPERATOR_LIST,\n  RESOURCES_KEYS_TEXT_CONTENT,\n  stringToAsciiOrUTF16BE,\n  stringToUTF16HexString,\n  stringToUTF16String,\n  toRomanNumerals,\n  validateCSSFont,\n  validateFontName,\n  XRefEntryException,\n  XRefParseException,\n};\n","/* Copyright 2012 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\n// Table C-2\nconst QeTable = [\n  { qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1 },\n  { qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0 },\n  { qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0 },\n  { qe: 0x0ac1, nmps: 4, nlps: 12, switchFlag: 0 },\n  { qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0 },\n  { qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0 },\n  { qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1 },\n  { qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0 },\n  { qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0 },\n  { qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0 },\n  { qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0 },\n  { qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0 },\n  { qe: 0x1c01, nmps: 13, nlps: 20, switchFlag: 0 },\n  { qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0 },\n  { qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1 },\n  { qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0 },\n  { qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0 },\n  { qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0 },\n  { qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0 },\n  { qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0 },\n  { qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0 },\n  { qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0 },\n  { qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0 },\n  { qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0 },\n  { qe: 0x1c01, nmps: 25, nlps: 22, switchFlag: 0 },\n  { qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0 },\n  { qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0 },\n  { qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0 },\n  { qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0 },\n  { qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0 },\n  { qe: 0x0ac1, nmps: 31, nlps: 28, switchFlag: 0 },\n  { qe: 0x09c1, nmps: 32, nlps: 29, switchFlag: 0 },\n  { qe: 0x08a1, nmps: 33, nlps: 30, switchFlag: 0 },\n  { qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0 },\n  { qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0 },\n  { qe: 0x02a1, nmps: 36, nlps: 33, switchFlag: 0 },\n  { qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0 },\n  { qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0 },\n  { qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0 },\n  { qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0 },\n  { qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0 },\n  { qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0 },\n  { qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0 },\n  { qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0 },\n  { qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0 },\n  { qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0 },\n  { qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0 },\n];\n\n/**\n * This class implements the QM Coder decoding as defined in\n *   JPEG 2000 Part I Final Committee Draft Version 1.0\n *   Annex C.3 Arithmetic decoding procedure\n * available at http://www.jpeg.org/public/fcd15444-1.pdf\n *\n * The arithmetic decoder is used in conjunction with context models to decode\n * JPEG2000 and JBIG2 streams.\n */\nclass ArithmeticDecoder {\n  // C.3.5 Initialisation of the decoder (INITDEC)\n  constructor(data, start, end) {\n    this.data = data;\n    this.bp = start;\n    this.dataEnd = end;\n\n    this.chigh = data[start];\n    this.clow = 0;\n\n    this.byteIn();\n\n    this.chigh = ((this.chigh << 7) & 0xffff) | ((this.clow >> 9) & 0x7f);\n    this.clow = (this.clow << 7) & 0xffff;\n    this.ct -= 7;\n    this.a = 0x8000;\n  }\n\n  // C.3.4 Compressed data input (BYTEIN)\n  byteIn() {\n    const data = this.data;\n    let bp = this.bp;\n\n    if (data[bp] === 0xff) {\n      if (data[bp + 1] > 0x8f) {\n        this.clow += 0xff00;\n        this.ct = 8;\n      } else {\n        bp++;\n        this.clow += data[bp] << 9;\n        this.ct = 7;\n        this.bp = bp;\n      }\n    } else {\n      bp++;\n      this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00;\n      this.ct = 8;\n      this.bp = bp;\n    }\n    if (this.clow > 0xffff) {\n      this.chigh += this.clow >> 16;\n      this.clow &= 0xffff;\n    }\n  }\n\n  // C.3.2 Decoding a decision (DECODE)\n  readBit(contexts, pos) {\n    // Contexts are packed into 1 byte:\n    // highest 7 bits carry cx.index, lowest bit carries cx.mps\n    let cx_index = contexts[pos] >> 1,\n      cx_mps = contexts[pos] & 1;\n    const qeTableIcx = QeTable[cx_index];\n    const qeIcx = qeTableIcx.qe;\n    let d;\n    let a = this.a - qeIcx;\n\n    if (this.chigh < qeIcx) {\n      // exchangeLps\n      if (a < qeIcx) {\n        a = qeIcx;\n        d = cx_mps;\n        cx_index = qeTableIcx.nmps;\n      } else {\n        a = qeIcx;\n        d = 1 ^ cx_mps;\n        if (qeTableIcx.switchFlag === 1) {\n          cx_mps = d;\n        }\n        cx_index = qeTableIcx.nlps;\n      }\n    } else {\n      this.chigh -= qeIcx;\n      if ((a & 0x8000) !== 0) {\n        this.a = a;\n        return cx_mps;\n      }\n      // exchangeMps\n      if (a < qeIcx) {\n        d = 1 ^ cx_mps;\n        if (qeTableIcx.switchFlag === 1) {\n          cx_mps = d;\n        }\n        cx_index = qeTableIcx.nlps;\n      } else {\n        d = cx_mps;\n        cx_index = qeTableIcx.nmps;\n      }\n    }\n    // C.3.3 renormD;\n    do {\n      if (this.ct === 0) {\n        this.byteIn();\n      }\n\n      a <<= 1;\n      this.chigh = ((this.chigh << 1) & 0xffff) | ((this.clow >> 15) & 1);\n      this.clow = (this.clow << 1) & 0xffff;\n      this.ct--;\n    } while ((a & 0x8000) === 0);\n    this.a = a;\n\n    contexts[pos] = (cx_index << 1) | cx_mps;\n    return d;\n  }\n}\n\nexport { ArithmeticDecoder };\n","/* Copyright 2012 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/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The CCITT stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { FormatError, info } from \"../shared/util.js\";\n\n/**\n * @typedef {Object} CCITTFaxDecoderSource\n * @property {function} next - Method that return one byte of data for decoding,\n *   or -1 when EOF is reached.\n */\n\nconst ccittEOL = -2;\nconst ccittEOF = -1;\nconst twoDimPass = 0;\nconst twoDimHoriz = 1;\nconst twoDimVert0 = 2;\nconst twoDimVertR1 = 3;\nconst twoDimVertL1 = 4;\nconst twoDimVertR2 = 5;\nconst twoDimVertL2 = 6;\nconst twoDimVertR3 = 7;\nconst twoDimVertL3 = 8;\n\n// prettier-ignore\nconst twoDimTable = [\n  [-1, -1], [-1, -1],                   // 000000x\n  [7, twoDimVertL3],                    // 0000010\n  [7, twoDimVertR3],                    // 0000011\n  [6, twoDimVertL2], [6, twoDimVertL2], // 000010x\n  [6, twoDimVertR2], [6, twoDimVertR2], // 000011x\n  [4, twoDimPass], [4, twoDimPass],     // 0001xxx\n  [4, twoDimPass], [4, twoDimPass],\n  [4, twoDimPass], [4, twoDimPass],\n  [4, twoDimPass], [4, twoDimPass],\n  [3, twoDimHoriz], [3, twoDimHoriz],   // 001xxxx\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimVertL1], [3, twoDimVertL1], // 010xxxx\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertR1], [3, twoDimVertR1], // 011xxxx\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [1, twoDimVert0], [1, twoDimVert0],   // 1xxxxxx\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0]\n];\n\n// prettier-ignore\nconst whiteTable1 = [\n  [-1, -1],                               // 00000\n  [12, ccittEOL],                         // 00001\n  [-1, -1], [-1, -1],                     // 0001x\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 001xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 010xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 011xx\n  [11, 1792], [11, 1792],                 // 1000x\n  [12, 1984],                             // 10010\n  [12, 2048],                             // 10011\n  [12, 2112],                             // 10100\n  [12, 2176],                             // 10101\n  [12, 2240],                             // 10110\n  [12, 2304],                             // 10111\n  [11, 1856], [11, 1856],                 // 1100x\n  [11, 1920], [11, 1920],                 // 1101x\n  [12, 2368],                             // 11100\n  [12, 2432],                             // 11101\n  [12, 2496],                             // 11110\n  [12, 2560]                              // 11111\n];\n\n// prettier-ignore\nconst whiteTable2 = [\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],     // 0000000xx\n  [8, 29], [8, 29],                           // 00000010x\n  [8, 30], [8, 30],                           // 00000011x\n  [8, 45], [8, 45],                           // 00000100x\n  [8, 46], [8, 46],                           // 00000101x\n  [7, 22], [7, 22], [7, 22], [7, 22],         // 0000011xx\n  [7, 23], [7, 23], [7, 23], [7, 23],         // 0000100xx\n  [8, 47], [8, 47],                           // 00001010x\n  [8, 48], [8, 48],                           // 00001011x\n  [6, 13], [6, 13], [6, 13], [6, 13],         // 000011xxx\n  [6, 13], [6, 13], [6, 13], [6, 13],\n  [7, 20], [7, 20], [7, 20], [7, 20],         // 0001000xx\n  [8, 33], [8, 33],                           // 00010010x\n  [8, 34], [8, 34],                           // 00010011x\n  [8, 35], [8, 35],                           // 00010100x\n  [8, 36], [8, 36],                           // 00010101x\n  [8, 37], [8, 37],                           // 00010110x\n  [8, 38], [8, 38],                           // 00010111x\n  [7, 19], [7, 19], [7, 19], [7, 19],         // 0001100xx\n  [8, 31], [8, 31],                           // 00011010x\n  [8, 32], [8, 32],                           // 00011011x\n  [6, 1], [6, 1], [6, 1], [6, 1],             // 000111xxx\n  [6, 1], [6, 1], [6, 1], [6, 1],\n  [6, 12], [6, 12], [6, 12], [6, 12],         // 001000xxx\n  [6, 12], [6, 12], [6, 12], [6, 12],\n  [8, 53], [8, 53],                           // 00100100x\n  [8, 54], [8, 54],                           // 00100101x\n  [7, 26], [7, 26], [7, 26], [7, 26],         // 0010011xx\n  [8, 39], [8, 39],                           // 00101000x\n  [8, 40], [8, 40],                           // 00101001x\n  [8, 41], [8, 41],                           // 00101010x\n  [8, 42], [8, 42],                           // 00101011x\n  [8, 43], [8, 43],                           // 00101100x\n  [8, 44], [8, 44],                           // 00101101x\n  [7, 21], [7, 21], [7, 21], [7, 21],         // 0010111xx\n  [7, 28], [7, 28], [7, 28], [7, 28],         // 0011000xx\n  [8, 61], [8, 61],                           // 00110010x\n  [8, 62], [8, 62],                           // 00110011x\n  [8, 63], [8, 63],                           // 00110100x\n  [8, 0], [8, 0],                             // 00110101x\n  [8, 320], [8, 320],                         // 00110110x\n  [8, 384], [8, 384],                         // 00110111x\n  [5, 10], [5, 10], [5, 10], [5, 10],         // 00111xxxx\n  [5, 10], [5, 10], [5, 10], [5, 10],\n  [5, 10], [5, 10], [5, 10], [5, 10],\n  [5, 10], [5, 10], [5, 10], [5, 10],\n  [5, 11], [5, 11], [5, 11], [5, 11],         // 01000xxxx\n  [5, 11], [5, 11], [5, 11], [5, 11],\n  [5, 11], [5, 11], [5, 11], [5, 11],\n  [5, 11], [5, 11], [5, 11], [5, 11],\n  [7, 27], [7, 27], [7, 27], [7, 27],         // 0100100xx\n  [8, 59], [8, 59],                           // 01001010x\n  [8, 60], [8, 60],                           // 01001011x\n  [9, 1472],                                  // 010011000\n  [9, 1536],                                  // 010011001\n  [9, 1600],                                  // 010011010\n  [9, 1728],                                  // 010011011\n  [7, 18], [7, 18], [7, 18], [7, 18],         // 0100111xx\n  [7, 24], [7, 24], [7, 24], [7, 24],         // 0101000xx\n  [8, 49], [8, 49],                           // 01010010x\n  [8, 50], [8, 50],                           // 01010011x\n  [8, 51], [8, 51],                           // 01010100x\n  [8, 52], [8, 52],                           // 01010101x\n  [7, 25], [7, 25], [7, 25], [7, 25],         // 0101011xx\n  [8, 55], [8, 55],                           // 01011000x\n  [8, 56], [8, 56],                           // 01011001x\n  [8, 57], [8, 57],                           // 01011010x\n  [8, 58], [8, 58],                           // 01011011x\n  [6, 192], [6, 192], [6, 192], [6, 192],     // 010111xxx\n  [6, 192], [6, 192], [6, 192], [6, 192],\n  [6, 1664], [6, 1664], [6, 1664], [6, 1664], // 011000xxx\n  [6, 1664], [6, 1664], [6, 1664], [6, 1664],\n  [8, 448], [8, 448],                         // 01100100x\n  [8, 512], [8, 512],                         // 01100101x\n  [9, 704],                                   // 011001100\n  [9, 768],                                   // 011001101\n  [8, 640], [8, 640],                         // 01100111x\n  [8, 576], [8, 576],                         // 01101000x\n  [9, 832],                                   // 011010010\n  [9, 896],                                   // 011010011\n  [9, 960],                                   // 011010100\n  [9, 1024],                                  // 011010101\n  [9, 1088],                                  // 011010110\n  [9, 1152],                                  // 011010111\n  [9, 1216],                                  // 011011000\n  [9, 1280],                                  // 011011001\n  [9, 1344],                                  // 011011010\n  [9, 1408],                                  // 011011011\n  [7, 256], [7, 256], [7, 256], [7, 256],     // 0110111xx\n  [4, 2], [4, 2], [4, 2], [4, 2],             // 0111xxxxx\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 3], [4, 3], [4, 3], [4, 3],             // 1000xxxxx\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [5, 128], [5, 128], [5, 128], [5, 128],     // 10010xxxx\n  [5, 128], [5, 128], [5, 128], [5, 128],\n  [5, 128], [5, 128], [5, 128], [5, 128],\n  [5, 128], [5, 128], [5, 128], [5, 128],\n  [5, 8], [5, 8], [5, 8], [5, 8],             // 10011xxxx\n  [5, 8], [5, 8], [5, 8], [5, 8],\n  [5, 8], [5, 8], [5, 8], [5, 8],\n  [5, 8], [5, 8], [5, 8], [5, 8],\n  [5, 9], [5, 9], [5, 9], [5, 9],             // 10100xxxx\n  [5, 9], [5, 9], [5, 9], [5, 9],\n  [5, 9], [5, 9], [5, 9], [5, 9],\n  [5, 9], [5, 9], [5, 9], [5, 9],\n  [6, 16], [6, 16], [6, 16], [6, 16],         // 101010xxx\n  [6, 16], [6, 16], [6, 16], [6, 16],\n  [6, 17], [6, 17], [6, 17], [6, 17],         // 101011xxx\n  [6, 17], [6, 17], [6, 17], [6, 17],\n  [4, 4], [4, 4], [4, 4], [4, 4],             // 1011xxxxx\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 5], [4, 5], [4, 5], [4, 5],             // 1100xxxxx\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [6, 14], [6, 14], [6, 14], [6, 14],         // 110100xxx\n  [6, 14], [6, 14], [6, 14], [6, 14],\n  [6, 15], [6, 15], [6, 15], [6, 15],         // 110101xxx\n  [6, 15], [6, 15], [6, 15], [6, 15],\n  [5, 64], [5, 64], [5, 64], [5, 64],         // 11011xxxx\n  [5, 64], [5, 64], [5, 64], [5, 64],\n  [5, 64], [5, 64], [5, 64], [5, 64],\n  [5, 64], [5, 64], [5, 64], [5, 64],\n  [4, 6], [4, 6], [4, 6], [4, 6],             // 1110xxxxx\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 7], [4, 7], [4, 7], [4, 7],             // 1111xxxxx\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7]\n];\n\n// prettier-ignore\nconst blackTable1 = [\n  [-1, -1], [-1, -1],                             // 000000000000x\n  [12, ccittEOL], [12, ccittEOL],                 // 000000000001x\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000001xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000010xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000011xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000100xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000101xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000110xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000111xx\n  [11, 1792], [11, 1792], [11, 1792], [11, 1792], // 00000001000xx\n  [12, 1984], [12, 1984],                         // 000000010010x\n  [12, 2048], [12, 2048],                         // 000000010011x\n  [12, 2112], [12, 2112],                         // 000000010100x\n  [12, 2176], [12, 2176],                         // 000000010101x\n  [12, 2240], [12, 2240],                         // 000000010110x\n  [12, 2304], [12, 2304],                         // 000000010111x\n  [11, 1856], [11, 1856], [11, 1856], [11, 1856], // 00000001100xx\n  [11, 1920], [11, 1920], [11, 1920], [11, 1920], // 00000001101xx\n  [12, 2368], [12, 2368],                         // 000000011100x\n  [12, 2432], [12, 2432],                         // 000000011101x\n  [12, 2496], [12, 2496],                         // 000000011110x\n  [12, 2560], [12, 2560],                         // 000000011111x\n  [10, 18], [10, 18], [10, 18], [10, 18],         // 0000001000xxx\n  [10, 18], [10, 18], [10, 18], [10, 18],\n  [12, 52], [12, 52],                             // 000000100100x\n  [13, 640],                                      // 0000001001010\n  [13, 704],                                      // 0000001001011\n  [13, 768],                                      // 0000001001100\n  [13, 832],                                      // 0000001001101\n  [12, 55], [12, 55],                             // 000000100111x\n  [12, 56], [12, 56],                             // 000000101000x\n  [13, 1280],                                     // 0000001010010\n  [13, 1344],                                     // 0000001010011\n  [13, 1408],                                     // 0000001010100\n  [13, 1472],                                     // 0000001010101\n  [12, 59], [12, 59],                             // 000000101011x\n  [12, 60], [12, 60],                             // 000000101100x\n  [13, 1536],                                     // 0000001011010\n  [13, 1600],                                     // 0000001011011\n  [11, 24], [11, 24], [11, 24], [11, 24],         // 00000010111xx\n  [11, 25], [11, 25], [11, 25], [11, 25],         // 00000011000xx\n  [13, 1664],                                     // 0000001100100\n  [13, 1728],                                     // 0000001100101\n  [12, 320], [12, 320],                           // 000000110011x\n  [12, 384], [12, 384],                           // 000000110100x\n  [12, 448], [12, 448],                           // 000000110101x\n  [13, 512],                                      // 0000001101100\n  [13, 576],                                      // 0000001101101\n  [12, 53], [12, 53],                             // 000000110111x\n  [12, 54], [12, 54],                             // 000000111000x\n  [13, 896],                                      // 0000001110010\n  [13, 960],                                      // 0000001110011\n  [13, 1024],                                     // 0000001110100\n  [13, 1088],                                     // 0000001110101\n  [13, 1152],                                     // 0000001110110\n  [13, 1216],                                     // 0000001110111\n  [10, 64], [10, 64], [10, 64], [10, 64],         // 0000001111xxx\n  [10, 64], [10, 64], [10, 64], [10, 64]\n];\n\n// prettier-ignore\nconst blackTable2 = [\n  [8, 13], [8, 13], [8, 13], [8, 13],     // 00000100xxxx\n  [8, 13], [8, 13], [8, 13], [8, 13],\n  [8, 13], [8, 13], [8, 13], [8, 13],\n  [8, 13], [8, 13], [8, 13], [8, 13],\n  [11, 23], [11, 23],                     // 00000101000x\n  [12, 50],                               // 000001010010\n  [12, 51],                               // 000001010011\n  [12, 44],                               // 000001010100\n  [12, 45],                               // 000001010101\n  [12, 46],                               // 000001010110\n  [12, 47],                               // 000001010111\n  [12, 57],                               // 000001011000\n  [12, 58],                               // 000001011001\n  [12, 61],                               // 000001011010\n  [12, 256],                              // 000001011011\n  [10, 16], [10, 16], [10, 16], [10, 16], // 0000010111xx\n  [10, 17], [10, 17], [10, 17], [10, 17], // 0000011000xx\n  [12, 48],                               // 000001100100\n  [12, 49],                               // 000001100101\n  [12, 62],                               // 000001100110\n  [12, 63],                               // 000001100111\n  [12, 30],                               // 000001101000\n  [12, 31],                               // 000001101001\n  [12, 32],                               // 000001101010\n  [12, 33],                               // 000001101011\n  [12, 40],                               // 000001101100\n  [12, 41],                               // 000001101101\n  [11, 22], [11, 22],                     // 00000110111x\n  [8, 14], [8, 14], [8, 14], [8, 14],     // 00000111xxxx\n  [8, 14], [8, 14], [8, 14], [8, 14],\n  [8, 14], [8, 14], [8, 14], [8, 14],\n  [8, 14], [8, 14], [8, 14], [8, 14],\n  [7, 10], [7, 10], [7, 10], [7, 10],     // 0000100xxxxx\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 11], [7, 11], [7, 11], [7, 11],     // 0000101xxxxx\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [9, 15], [9, 15], [9, 15], [9, 15],     // 000011000xxx\n  [9, 15], [9, 15], [9, 15], [9, 15],\n  [12, 128],                              // 000011001000\n  [12, 192],                              // 000011001001\n  [12, 26],                               // 000011001010\n  [12, 27],                               // 000011001011\n  [12, 28],                               // 000011001100\n  [12, 29],                               // 000011001101\n  [11, 19], [11, 19],                     // 00001100111x\n  [11, 20], [11, 20],                     // 00001101000x\n  [12, 34],                               // 000011010010\n  [12, 35],                               // 000011010011\n  [12, 36],                               // 000011010100\n  [12, 37],                               // 000011010101\n  [12, 38],                               // 000011010110\n  [12, 39],                               // 000011010111\n  [11, 21], [11, 21],                     // 00001101100x\n  [12, 42],                               // 000011011010\n  [12, 43],                               // 000011011011\n  [10, 0], [10, 0], [10, 0], [10, 0],     // 0000110111xx\n  [7, 12], [7, 12], [7, 12], [7, 12],     // 0000111xxxxx\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12]\n];\n\n// prettier-ignore\nconst blackTable3 = [\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000xx\n  [6, 9],                                 // 000100\n  [6, 8],                                 // 000101\n  [5, 7], [5, 7],                         // 00011x\n  [4, 6], [4, 6], [4, 6], [4, 6],         // 0010xx\n  [4, 5], [4, 5], [4, 5], [4, 5],         // 0011xx\n  [3, 1], [3, 1], [3, 1], [3, 1],         // 010xxx\n  [3, 1], [3, 1], [3, 1], [3, 1],\n  [3, 4], [3, 4], [3, 4], [3, 4],         // 011xxx\n  [3, 4], [3, 4], [3, 4], [3, 4],\n  [2, 3], [2, 3], [2, 3], [2, 3],         // 10xxxx\n  [2, 3], [2, 3], [2, 3], [2, 3],\n  [2, 3], [2, 3], [2, 3], [2, 3],\n  [2, 3], [2, 3], [2, 3], [2, 3],\n  [2, 2], [2, 2], [2, 2], [2, 2],         // 11xxxx\n  [2, 2], [2, 2], [2, 2], [2, 2],\n  [2, 2], [2, 2], [2, 2], [2, 2],\n  [2, 2], [2, 2], [2, 2], [2, 2]\n];\n\n/**\n * @param {CCITTFaxDecoderSource} source - The data which should be decoded.\n * @param {Object} [options] - Decoding options.\n */\nclass CCITTFaxDecoder {\n  constructor(source, options = {}) {\n    if (typeof source?.next !== \"function\") {\n      throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n    }\n    this.source = source;\n    this.eof = false;\n\n    this.encoding = options.K || 0;\n    this.eoline = options.EndOfLine || false;\n    this.byteAlign = options.EncodedByteAlign || false;\n    this.columns = options.Columns || 1728;\n    this.rows = options.Rows || 0;\n    this.eoblock = options.EndOfBlock ?? true;\n    this.black = options.BlackIs1 || false;\n\n    this.codingLine = new Uint32Array(this.columns + 1);\n    this.refLine = new Uint32Array(this.columns + 2);\n\n    this.codingLine[0] = this.columns;\n    this.codingPos = 0;\n\n    this.row = 0;\n    this.nextLine2D = this.encoding < 0;\n    this.inputBits = 0;\n    this.inputBuf = 0;\n    this.outputBits = 0;\n    this.rowsDone = false;\n\n    let code1;\n    while ((code1 = this._lookBits(12)) === 0) {\n      this._eatBits(1);\n    }\n    if (code1 === 1) {\n      this._eatBits(12);\n    }\n    if (this.encoding > 0) {\n      this.nextLine2D = !this._lookBits(1);\n      this._eatBits(1);\n    }\n  }\n\n  readNextChar() {\n    if (this.eof) {\n      return -1;\n    }\n    const refLine = this.refLine;\n    const codingLine = this.codingLine;\n    const columns = this.columns;\n\n    let refPos, blackPixels, bits, i;\n\n    if (this.outputBits === 0) {\n      if (this.rowsDone) {\n        this.eof = true;\n      }\n      if (this.eof) {\n        return -1;\n      }\n      this.err = false;\n\n      let code1, code2, code3;\n      if (this.nextLine2D) {\n        for (i = 0; codingLine[i] < columns; ++i) {\n          refLine[i] = codingLine[i];\n        }\n        refLine[i++] = columns;\n        refLine[i] = columns;\n        codingLine[0] = 0;\n        this.codingPos = 0;\n        refPos = 0;\n        blackPixels = 0;\n\n        while (codingLine[this.codingPos] < columns) {\n          code1 = this._getTwoDimCode();\n          switch (code1) {\n            case twoDimPass:\n              this._addPixels(refLine[refPos + 1], blackPixels);\n              if (refLine[refPos + 1] < columns) {\n                refPos += 2;\n              }\n              break;\n            case twoDimHoriz:\n              code1 = code2 = 0;\n              if (blackPixels) {\n                do {\n                  code1 += code3 = this._getBlackCode();\n                } while (code3 >= 64);\n                do {\n                  code2 += code3 = this._getWhiteCode();\n                } while (code3 >= 64);\n              } else {\n                do {\n                  code1 += code3 = this._getWhiteCode();\n                } while (code3 >= 64);\n                do {\n                  code2 += code3 = this._getBlackCode();\n                } while (code3 >= 64);\n              }\n              this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n              if (codingLine[this.codingPos] < columns) {\n                this._addPixels(\n                  codingLine[this.codingPos] + code2,\n                  blackPixels ^ 1\n                );\n              }\n              while (\n                refLine[refPos] <= codingLine[this.codingPos] &&\n                refLine[refPos] < columns\n              ) {\n                refPos += 2;\n              }\n              break;\n            case twoDimVertR3:\n              this._addPixels(refLine[refPos] + 3, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                ++refPos;\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVertR2:\n              this._addPixels(refLine[refPos] + 2, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                ++refPos;\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVertR1:\n              this._addPixels(refLine[refPos] + 1, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                ++refPos;\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVert0:\n              this._addPixels(refLine[refPos], blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                ++refPos;\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVertL3:\n              this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                if (refPos > 0) {\n                  --refPos;\n                } else {\n                  ++refPos;\n                }\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVertL2:\n              this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                if (refPos > 0) {\n                  --refPos;\n                } else {\n                  ++refPos;\n                }\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVertL1:\n              this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                if (refPos > 0) {\n                  --refPos;\n                } else {\n                  ++refPos;\n                }\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case ccittEOF:\n              this._addPixels(columns, 0);\n              this.eof = true;\n              break;\n            default:\n              info(\"bad 2d code\");\n              this._addPixels(columns, 0);\n              this.err = true;\n          }\n        }\n      } else {\n        codingLine[0] = 0;\n        this.codingPos = 0;\n        blackPixels = 0;\n        while (codingLine[this.codingPos] < columns) {\n          code1 = 0;\n          if (blackPixels) {\n            do {\n              code1 += code3 = this._getBlackCode();\n            } while (code3 >= 64);\n          } else {\n            do {\n              code1 += code3 = this._getWhiteCode();\n            } while (code3 >= 64);\n          }\n          this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n          blackPixels ^= 1;\n        }\n      }\n\n      let gotEOL = false;\n\n      if (this.byteAlign) {\n        this.inputBits &= ~7;\n      }\n\n      if (!this.eoblock && this.row === this.rows - 1) {\n        this.rowsDone = true;\n      } else {\n        code1 = this._lookBits(12);\n        if (this.eoline) {\n          while (code1 !== ccittEOF && code1 !== 1) {\n            this._eatBits(1);\n            code1 = this._lookBits(12);\n          }\n        } else {\n          while (code1 === 0) {\n            this._eatBits(1);\n            code1 = this._lookBits(12);\n          }\n        }\n        if (code1 === 1) {\n          this._eatBits(12);\n          gotEOL = true;\n        } else if (code1 === ccittEOF) {\n          this.eof = true;\n        }\n      }\n\n      if (!this.eof && this.encoding > 0 && !this.rowsDone) {\n        this.nextLine2D = !this._lookBits(1);\n        this._eatBits(1);\n      }\n\n      if (this.eoblock && gotEOL && this.byteAlign) {\n        code1 = this._lookBits(12);\n        if (code1 === 1) {\n          this._eatBits(12);\n          if (this.encoding > 0) {\n            this._lookBits(1);\n            this._eatBits(1);\n          }\n          if (this.encoding >= 0) {\n            for (i = 0; i < 4; ++i) {\n              code1 = this._lookBits(12);\n              if (code1 !== 1) {\n                info(\"bad rtc code: \" + code1);\n              }\n              this._eatBits(12);\n              if (this.encoding > 0) {\n                this._lookBits(1);\n                this._eatBits(1);\n              }\n            }\n          }\n          this.eof = true;\n        }\n      } else if (this.err && this.eoline) {\n        while (true) {\n          code1 = this._lookBits(13);\n          if (code1 === ccittEOF) {\n            this.eof = true;\n            return -1;\n          }\n          if (code1 >> 1 === 1) {\n            break;\n          }\n          this._eatBits(1);\n        }\n        this._eatBits(12);\n        if (this.encoding > 0) {\n          this._eatBits(1);\n          this.nextLine2D = !(code1 & 1);\n        }\n      }\n\n      this.outputBits =\n        codingLine[0] > 0\n          ? codingLine[(this.codingPos = 0)]\n          : codingLine[(this.codingPos = 1)];\n      this.row++;\n    }\n\n    let c;\n    if (this.outputBits >= 8) {\n      c = this.codingPos & 1 ? 0 : 0xff;\n      this.outputBits -= 8;\n      if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {\n        this.codingPos++;\n        this.outputBits =\n          codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n      }\n    } else {\n      bits = 8;\n      c = 0;\n      do {\n        if (typeof this.outputBits !== \"number\") {\n          throw new FormatError(\n            'Invalid /CCITTFaxDecode data, \"outputBits\" must be a number.'\n          );\n        }\n\n        if (this.outputBits > bits) {\n          c <<= bits;\n          if (!(this.codingPos & 1)) {\n            c |= 0xff >> (8 - bits);\n          }\n          this.outputBits -= bits;\n          bits = 0;\n        } else {\n          c <<= this.outputBits;\n          if (!(this.codingPos & 1)) {\n            c |= 0xff >> (8 - this.outputBits);\n          }\n          bits -= this.outputBits;\n          this.outputBits = 0;\n          if (codingLine[this.codingPos] < columns) {\n            this.codingPos++;\n            this.outputBits =\n              codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n          } else if (bits > 0) {\n            c <<= bits;\n            bits = 0;\n          }\n        }\n      } while (bits);\n    }\n    if (this.black) {\n      c ^= 0xff;\n    }\n    return c;\n  }\n\n  /**\n   * @private\n   */\n  _addPixels(a1, blackPixels) {\n    const codingLine = this.codingLine;\n    let codingPos = this.codingPos;\n\n    if (a1 > codingLine[codingPos]) {\n      if (a1 > this.columns) {\n        info(\"row is wrong length\");\n        this.err = true;\n        a1 = this.columns;\n      }\n      if ((codingPos & 1) ^ blackPixels) {\n        ++codingPos;\n      }\n\n      codingLine[codingPos] = a1;\n    }\n    this.codingPos = codingPos;\n  }\n\n  /**\n   * @private\n   */\n  _addPixelsNeg(a1, blackPixels) {\n    const codingLine = this.codingLine;\n    let codingPos = this.codingPos;\n\n    if (a1 > codingLine[codingPos]) {\n      if (a1 > this.columns) {\n        info(\"row is wrong length\");\n        this.err = true;\n        a1 = this.columns;\n      }\n      if ((codingPos & 1) ^ blackPixels) {\n        ++codingPos;\n      }\n\n      codingLine[codingPos] = a1;\n    } else if (a1 < codingLine[codingPos]) {\n      if (a1 < 0) {\n        info(\"invalid code\");\n        this.err = true;\n        a1 = 0;\n      }\n      while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {\n        --codingPos;\n      }\n      codingLine[codingPos] = a1;\n    }\n\n    this.codingPos = codingPos;\n  }\n\n  /**\n   * This function returns the code found from the table.\n   * The start and end parameters set the boundaries for searching the table.\n   * The limit parameter is optional. Function returns an array with three\n   * values. The first array element indicates whether a valid code is being\n   * returned. The second array element is the actual code. The third array\n   * element indicates whether EOF was reached.\n   * @private\n   */\n  _findTableCode(start, end, table, limit) {\n    const limitValue = limit || 0;\n    for (let i = start; i <= end; ++i) {\n      let code = this._lookBits(i);\n      if (code === ccittEOF) {\n        return [true, 1, false];\n      }\n      if (i < end) {\n        code <<= end - i;\n      }\n      if (!limitValue || code >= limitValue) {\n        const p = table[code - limitValue];\n        if (p[0] === i) {\n          this._eatBits(i);\n          return [true, p[1], true];\n        }\n      }\n    }\n    return [false, 0, false];\n  }\n\n  /**\n   * @private\n   */\n  _getTwoDimCode() {\n    let code = 0;\n    let p;\n    if (this.eoblock) {\n      code = this._lookBits(7);\n      p = twoDimTable[code];\n      if (p?.[0] > 0) {\n        this._eatBits(p[0]);\n        return p[1];\n      }\n    } else {\n      const result = this._findTableCode(1, 7, twoDimTable);\n      if (result[0] && result[2]) {\n        return result[1];\n      }\n    }\n    info(\"Bad two dim code\");\n    return ccittEOF;\n  }\n\n  /**\n   * @private\n   */\n  _getWhiteCode() {\n    let code = 0;\n    let p;\n    if (this.eoblock) {\n      code = this._lookBits(12);\n      if (code === ccittEOF) {\n        return 1;\n      }\n\n      p = code >> 5 === 0 ? whiteTable1[code] : whiteTable2[code >> 3];\n\n      if (p[0] > 0) {\n        this._eatBits(p[0]);\n        return p[1];\n      }\n    } else {\n      let result = this._findTableCode(1, 9, whiteTable2);\n      if (result[0]) {\n        return result[1];\n      }\n\n      result = this._findTableCode(11, 12, whiteTable1);\n      if (result[0]) {\n        return result[1];\n      }\n    }\n    info(\"bad white code\");\n    this._eatBits(1);\n    return 1;\n  }\n\n  /**\n   * @private\n   */\n  _getBlackCode() {\n    let code, p;\n    if (this.eoblock) {\n      code = this._lookBits(13);\n      if (code === ccittEOF) {\n        return 1;\n      }\n      if (code >> 7 === 0) {\n        p = blackTable1[code];\n      } else if (code >> 9 === 0 && code >> 7 !== 0) {\n        p = blackTable2[(code >> 1) - 64];\n      } else {\n        p = blackTable3[code >> 7];\n      }\n\n      if (p[0] > 0) {\n        this._eatBits(p[0]);\n        return p[1];\n      }\n    } else {\n      let result = this._findTableCode(2, 6, blackTable3);\n      if (result[0]) {\n        return result[1];\n      }\n\n      result = this._findTableCode(7, 12, blackTable2, 64);\n      if (result[0]) {\n        return result[1];\n      }\n\n      result = this._findTableCode(10, 13, blackTable1);\n      if (result[0]) {\n        return result[1];\n      }\n    }\n    info(\"bad black code\");\n    this._eatBits(1);\n    return 1;\n  }\n\n  /**\n   * @private\n   */\n  _lookBits(n) {\n    let c;\n    while (this.inputBits < n) {\n      if ((c = this.source.next()) === -1) {\n        if (this.inputBits === 0) {\n          return ccittEOF;\n        }\n        return (this.inputBuf << (n - this.inputBits)) & (0xffff >> (16 - n));\n      }\n      this.inputBuf = (this.inputBuf << 8) | c;\n      this.inputBits += 8;\n    }\n    return (this.inputBuf >> (this.inputBits - n)) & (0xffff >> (16 - n));\n  }\n\n  /**\n   * @private\n   */\n  _eatBits(n) {\n    if ((this.inputBits -= n) < 0) {\n      this.inputBits = 0;\n    }\n  }\n}\n\nexport { CCITTFaxDecoder };\n","/* Copyright 2012 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\nimport { BaseException, shadow } from \"../shared/util.js\";\nimport {\n  log2,\n  MAX_INT_32,\n  MIN_INT_32,\n  readInt8,\n  readUint16,\n  readUint32,\n} from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\n\nclass Jbig2Error extends BaseException {\n  constructor(msg) {\n    super(msg, \"Jbig2Error\");\n  }\n}\n\n// Utility data structures\nclass ContextCache {\n  getContexts(id) {\n    if (id in this) {\n      return this[id];\n    }\n    return (this[id] = new Int8Array(1 << 16));\n  }\n}\n\nclass DecodingContext {\n  constructor(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n  }\n\n  get decoder() {\n    const decoder = new ArithmeticDecoder(this.data, this.start, this.end);\n    return shadow(this, \"decoder\", decoder);\n  }\n\n  get contextCache() {\n    const cache = new ContextCache();\n    return shadow(this, \"contextCache\", cache);\n  }\n}\n\n// Annex A. Arithmetic Integer Decoding Procedure\n// A.2 Procedure for decoding values\nfunction decodeInteger(contextCache, procedure, decoder) {\n  const contexts = contextCache.getContexts(procedure);\n  let prev = 1;\n\n  function readBits(length) {\n    let v = 0;\n    for (let i = 0; i < length; i++) {\n      const bit = decoder.readBit(contexts, prev);\n      prev = prev < 256 ? (prev << 1) | bit : (((prev << 1) | bit) & 511) | 256;\n      v = (v << 1) | bit;\n    }\n    return v >>> 0;\n  }\n\n  const sign = readBits(1);\n  // prettier-ignore\n  /* eslint-disable no-nested-ternary */\n  const value = readBits(1) ?\n                  (readBits(1) ?\n                    (readBits(1) ?\n                      (readBits(1) ?\n                        (readBits(1) ?\n                          (readBits(32) + 4436) :\n                        readBits(12) + 340) :\n                      readBits(8) + 84) :\n                    readBits(6) + 20) :\n                  readBits(4) + 4) :\n                readBits(2);\n  /* eslint-enable no-nested-ternary */\n  let signedValue;\n  if (sign === 0) {\n    signedValue = value;\n  } else if (value > 0) {\n    signedValue = -value;\n  }\n  // Ensure that the integer value doesn't underflow or overflow.\n  if (signedValue >= MIN_INT_32 && signedValue <= MAX_INT_32) {\n    return signedValue;\n  }\n  return null;\n}\n\n// A.3 The IAID decoding procedure\nfunction decodeIAID(contextCache, decoder, codeLength) {\n  const contexts = contextCache.getContexts(\"IAID\");\n\n  let prev = 1;\n  for (let i = 0; i < codeLength; i++) {\n    const bit = decoder.readBit(contexts, prev);\n    prev = (prev << 1) | bit;\n  }\n  if (codeLength < 31) {\n    return prev & ((1 << codeLength) - 1);\n  }\n  return prev & 0x7fffffff;\n}\n\n// 7.3 Segment types\nconst SegmentTypes = [\n  \"SymbolDictionary\",\n  null,\n  null,\n  null,\n  \"IntermediateTextRegion\",\n  null,\n  \"ImmediateTextRegion\",\n  \"ImmediateLosslessTextRegion\",\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  \"PatternDictionary\",\n  null,\n  null,\n  null,\n  \"IntermediateHalftoneRegion\",\n  null,\n  \"ImmediateHalftoneRegion\",\n  \"ImmediateLosslessHalftoneRegion\",\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  \"IntermediateGenericRegion\",\n  null,\n  \"ImmediateGenericRegion\",\n  \"ImmediateLosslessGenericRegion\",\n  \"IntermediateGenericRefinementRegion\",\n  null,\n  \"ImmediateGenericRefinementRegion\",\n  \"ImmediateLosslessGenericRefinementRegion\",\n  null,\n  null,\n  null,\n  null,\n  \"PageInformation\",\n  \"EndOfPage\",\n  \"EndOfStripe\",\n  \"EndOfFile\",\n  \"Profiles\",\n  \"Tables\",\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  \"Extension\",\n];\n\nconst CodingTemplates = [\n  [\n    { x: -1, y: -2 },\n    { x: 0, y: -2 },\n    { x: 1, y: -2 },\n    { x: -2, y: -1 },\n    { x: -1, y: -1 },\n    { x: 0, y: -1 },\n    { x: 1, y: -1 },\n    { x: 2, y: -1 },\n    { x: -4, y: 0 },\n    { x: -3, y: 0 },\n    { x: -2, y: 0 },\n    { x: -1, y: 0 },\n  ],\n  [\n    { x: -1, y: -2 },\n    { x: 0, y: -2 },\n    { x: 1, y: -2 },\n    { x: 2, y: -2 },\n    { x: -2, y: -1 },\n    { x: -1, y: -1 },\n    { x: 0, y: -1 },\n    { x: 1, y: -1 },\n    { x: 2, y: -1 },\n    { x: -3, y: 0 },\n    { x: -2, y: 0 },\n    { x: -1, y: 0 },\n  ],\n  [\n    { x: -1, y: -2 },\n    { x: 0, y: -2 },\n    { x: 1, y: -2 },\n    { x: -2, y: -1 },\n    { x: -1, y: -1 },\n    { x: 0, y: -1 },\n    { x: 1, y: -1 },\n    { x: -2, y: 0 },\n    { x: -1, y: 0 },\n  ],\n  [\n    { x: -3, y: -1 },\n    { x: -2, y: -1 },\n    { x: -1, y: -1 },\n    { x: 0, y: -1 },\n    { x: 1, y: -1 },\n    { x: -4, y: 0 },\n    { x: -3, y: 0 },\n    { x: -2, y: 0 },\n    { x: -1, y: 0 },\n  ],\n];\n\nconst RefinementTemplates = [\n  {\n    coding: [\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: -1, y: 0 },\n    ],\n    reference: [\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: -1, y: 0 },\n      { x: 0, y: 0 },\n      { x: 1, y: 0 },\n      { x: -1, y: 1 },\n      { x: 0, y: 1 },\n      { x: 1, y: 1 },\n    ],\n  },\n  {\n    coding: [\n      { x: -1, y: -1 },\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: -1, y: 0 },\n    ],\n    reference: [\n      { x: 0, y: -1 },\n      { x: -1, y: 0 },\n      { x: 0, y: 0 },\n      { x: 1, y: 0 },\n      { x: 0, y: 1 },\n      { x: 1, y: 1 },\n    ],\n  },\n];\n\n// See 6.2.5.7 Decoding the bitmap.\nconst ReusedContexts = [\n  0x9b25, // 10011 0110010 0101\n  0x0795, // 0011 110010 101\n  0x00e5, // 001 11001 01\n  0x0195, // 011001 0101\n];\n\nconst RefinementReusedContexts = [\n  0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference)\n  0x0008, // '0000' + '001000'\n];\n\nfunction decodeBitmapTemplate0(width, height, decodingContext) {\n  const decoder = decodingContext.decoder;\n  const contexts = decodingContext.contextCache.getContexts(\"GB\");\n  const bitmap = [];\n  let contextLabel, i, j, pixel, row, row1, row2;\n\n  // ...ooooo....\n  // ..ooooooo... Context template for current pixel (X)\n  // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)\n  const OLD_PIXEL_MASK = 0x7bf7; // 01111 0111111 0111\n\n  for (i = 0; i < height; i++) {\n    row = bitmap[i] = new Uint8Array(width);\n    row1 = i < 1 ? row : bitmap[i - 1];\n    row2 = i < 2 ? row : bitmap[i - 2];\n\n    // At the beginning of each row:\n    // Fill contextLabel with pixels that are above/right of (X)\n    contextLabel =\n      (row2[0] << 13) |\n      (row2[1] << 12) |\n      (row2[2] << 11) |\n      (row1[0] << 7) |\n      (row1[1] << 6) |\n      (row1[2] << 5) |\n      (row1[3] << 4);\n\n    for (j = 0; j < width; j++) {\n      row[j] = pixel = decoder.readBit(contexts, contextLabel);\n\n      // At each pixel: Clear contextLabel pixels that are shifted\n      // out of the context, then add new ones.\n      contextLabel =\n        ((contextLabel & OLD_PIXEL_MASK) << 1) |\n        (j + 3 < width ? row2[j + 3] << 11 : 0) |\n        (j + 4 < width ? row1[j + 4] << 4 : 0) |\n        pixel;\n    }\n  }\n\n  return bitmap;\n}\n\n// 6.2 Generic Region Decoding Procedure\nfunction decodeBitmap(\n  mmr,\n  width,\n  height,\n  templateIndex,\n  prediction,\n  skip,\n  at,\n  decodingContext\n) {\n  if (mmr) {\n    const input = new Reader(\n      decodingContext.data,\n      decodingContext.start,\n      decodingContext.end\n    );\n    return decodeMMRBitmap(input, width, height, false);\n  }\n\n  // Use optimized version for the most common case\n  if (\n    templateIndex === 0 &&\n    !skip &&\n    !prediction &&\n    at.length === 4 &&\n    at[0].x === 3 &&\n    at[0].y === -1 &&\n    at[1].x === -3 &&\n    at[1].y === -1 &&\n    at[2].x === 2 &&\n    at[2].y === -2 &&\n    at[3].x === -2 &&\n    at[3].y === -2\n  ) {\n    return decodeBitmapTemplate0(width, height, decodingContext);\n  }\n\n  const useskip = !!skip;\n  const template = CodingTemplates[templateIndex].concat(at);\n\n  // Sorting is non-standard, and it is not required. But sorting increases\n  // the number of template bits that can be reused from the previous\n  // contextLabel in the main loop.\n  template.sort((a, b) => a.y - b.y || a.x - b.x);\n\n  const templateLength = template.length;\n  const templateX = new Int8Array(templateLength);\n  const templateY = new Int8Array(templateLength);\n  const changingTemplateEntries = [];\n  let reuseMask = 0,\n    minX = 0,\n    maxX = 0,\n    minY = 0;\n  let c, k;\n\n  for (k = 0; k < templateLength; k++) {\n    templateX[k] = template[k].x;\n    templateY[k] = template[k].y;\n    minX = Math.min(minX, template[k].x);\n    maxX = Math.max(maxX, template[k].x);\n    minY = Math.min(minY, template[k].y);\n    // Check if the template pixel appears in two consecutive context labels,\n    // so it can be reused. Otherwise, we add it to the list of changing\n    // template entries.\n    if (\n      k < templateLength - 1 &&\n      template[k].y === template[k + 1].y &&\n      template[k].x === template[k + 1].x - 1\n    ) {\n      reuseMask |= 1 << (templateLength - 1 - k);\n    } else {\n      changingTemplateEntries.push(k);\n    }\n  }\n  const changingEntriesLength = changingTemplateEntries.length;\n\n  const changingTemplateX = new Int8Array(changingEntriesLength);\n  const changingTemplateY = new Int8Array(changingEntriesLength);\n  const changingTemplateBit = new Uint16Array(changingEntriesLength);\n  for (c = 0; c < changingEntriesLength; c++) {\n    k = changingTemplateEntries[c];\n    changingTemplateX[c] = template[k].x;\n    changingTemplateY[c] = template[k].y;\n    changingTemplateBit[c] = 1 << (templateLength - 1 - k);\n  }\n\n  // Get the safe bounding box edges from the width, height, minX, maxX, minY\n  const sbb_left = -minX;\n  const sbb_top = -minY;\n  const sbb_right = width - maxX;\n\n  const pseudoPixelContext = ReusedContexts[templateIndex];\n  let row = new Uint8Array(width);\n  const bitmap = [];\n\n  const decoder = decodingContext.decoder;\n  const contexts = decodingContext.contextCache.getContexts(\"GB\");\n\n  let ltp = 0,\n    j,\n    i0,\n    j0,\n    contextLabel = 0,\n    bit,\n    shift;\n  for (let i = 0; i < height; i++) {\n    if (prediction) {\n      const sltp = decoder.readBit(contexts, pseudoPixelContext);\n      ltp ^= sltp;\n      if (ltp) {\n        bitmap.push(row); // duplicate previous row\n        continue;\n      }\n    }\n    row = new Uint8Array(row);\n    bitmap.push(row);\n    for (j = 0; j < width; j++) {\n      if (useskip && skip[i][j]) {\n        row[j] = 0;\n        continue;\n      }\n      // Are we in the middle of a scanline, so we can reuse contextLabel\n      // bits?\n      if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\n        // If yes, we can just shift the bits that are reusable and only\n        // fetch the remaining ones.\n        contextLabel = (contextLabel << 1) & reuseMask;\n        for (k = 0; k < changingEntriesLength; k++) {\n          i0 = i + changingTemplateY[k];\n          j0 = j + changingTemplateX[k];\n          bit = bitmap[i0][j0];\n          if (bit) {\n            bit = changingTemplateBit[k];\n            contextLabel |= bit;\n          }\n        }\n      } else {\n        // compute the contextLabel from scratch\n        contextLabel = 0;\n        shift = templateLength - 1;\n        for (k = 0; k < templateLength; k++, shift--) {\n          j0 = j + templateX[k];\n          if (j0 >= 0 && j0 < width) {\n            i0 = i + templateY[k];\n            if (i0 >= 0) {\n              bit = bitmap[i0][j0];\n              if (bit) {\n                contextLabel |= bit << shift;\n              }\n            }\n          }\n        }\n      }\n      const pixel = decoder.readBit(contexts, contextLabel);\n      row[j] = pixel;\n    }\n  }\n  return bitmap;\n}\n\n// 6.3.2 Generic Refinement Region Decoding Procedure\nfunction decodeRefinement(\n  width,\n  height,\n  templateIndex,\n  referenceBitmap,\n  offsetX,\n  offsetY,\n  prediction,\n  at,\n  decodingContext\n) {\n  let codingTemplate = RefinementTemplates[templateIndex].coding;\n  if (templateIndex === 0) {\n    codingTemplate = codingTemplate.concat([at[0]]);\n  }\n  const codingTemplateLength = codingTemplate.length;\n  const codingTemplateX = new Int32Array(codingTemplateLength);\n  const codingTemplateY = new Int32Array(codingTemplateLength);\n  let k;\n  for (k = 0; k < codingTemplateLength; k++) {\n    codingTemplateX[k] = codingTemplate[k].x;\n    codingTemplateY[k] = codingTemplate[k].y;\n  }\n\n  let referenceTemplate = RefinementTemplates[templateIndex].reference;\n  if (templateIndex === 0) {\n    referenceTemplate = referenceTemplate.concat([at[1]]);\n  }\n  const referenceTemplateLength = referenceTemplate.length;\n  const referenceTemplateX = new Int32Array(referenceTemplateLength);\n  const referenceTemplateY = new Int32Array(referenceTemplateLength);\n  for (k = 0; k < referenceTemplateLength; k++) {\n    referenceTemplateX[k] = referenceTemplate[k].x;\n    referenceTemplateY[k] = referenceTemplate[k].y;\n  }\n  const referenceWidth = referenceBitmap[0].length;\n  const referenceHeight = referenceBitmap.length;\n\n  const pseudoPixelContext = RefinementReusedContexts[templateIndex];\n  const bitmap = [];\n\n  const decoder = decodingContext.decoder;\n  const contexts = decodingContext.contextCache.getContexts(\"GR\");\n\n  let ltp = 0;\n  for (let i = 0; i < height; i++) {\n    if (prediction) {\n      const sltp = decoder.readBit(contexts, pseudoPixelContext);\n      ltp ^= sltp;\n      if (ltp) {\n        throw new Jbig2Error(\"prediction is not supported\");\n      }\n    }\n    const row = new Uint8Array(width);\n    bitmap.push(row);\n    for (let j = 0; j < width; j++) {\n      let i0, j0;\n      let contextLabel = 0;\n      for (k = 0; k < codingTemplateLength; k++) {\n        i0 = i + codingTemplateY[k];\n        j0 = j + codingTemplateX[k];\n        if (i0 < 0 || j0 < 0 || j0 >= width) {\n          contextLabel <<= 1; // out of bound pixel\n        } else {\n          contextLabel = (contextLabel << 1) | bitmap[i0][j0];\n        }\n      }\n      for (k = 0; k < referenceTemplateLength; k++) {\n        i0 = i + referenceTemplateY[k] - offsetY;\n        j0 = j + referenceTemplateX[k] - offsetX;\n        if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) {\n          contextLabel <<= 1; // out of bound pixel\n        } else {\n          contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0];\n        }\n      }\n      const pixel = decoder.readBit(contexts, contextLabel);\n      row[j] = pixel;\n    }\n  }\n\n  return bitmap;\n}\n\n// 6.5.5 Decoding the symbol dictionary\nfunction decodeSymbolDictionary(\n  huffman,\n  refinement,\n  symbols,\n  numberOfNewSymbols,\n  numberOfExportedSymbols,\n  huffmanTables,\n  templateIndex,\n  at,\n  refinementTemplateIndex,\n  refinementAt,\n  decodingContext,\n  huffmanInput\n) {\n  if (huffman && refinement) {\n    throw new Jbig2Error(\"symbol refinement with Huffman is not supported\");\n  }\n\n  const newSymbols = [];\n  let currentHeight = 0;\n  let symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\n\n  const decoder = decodingContext.decoder;\n  const contextCache = decodingContext.contextCache;\n  let tableB1, symbolWidths;\n  if (huffman) {\n    tableB1 = getStandardTable(1); // standard table B.1\n    symbolWidths = [];\n    symbolCodeLength = Math.max(symbolCodeLength, 1); // 6.5.8.2.3\n  }\n\n  while (newSymbols.length < numberOfNewSymbols) {\n    const deltaHeight = huffman\n      ? huffmanTables.tableDeltaHeight.decode(huffmanInput)\n      : decodeInteger(contextCache, \"IADH\", decoder); // 6.5.6\n    currentHeight += deltaHeight;\n    let currentWidth = 0,\n      totalWidth = 0;\n    const firstSymbol = huffman ? symbolWidths.length : 0;\n    while (true) {\n      const deltaWidth = huffman\n        ? huffmanTables.tableDeltaWidth.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IADW\", decoder); // 6.5.7\n      if (deltaWidth === null) {\n        break; // OOB\n      }\n      currentWidth += deltaWidth;\n      totalWidth += currentWidth;\n      let bitmap;\n      if (refinement) {\n        // 6.5.8.2 Refinement/aggregate-coded symbol bitmap\n        const numberOfInstances = decodeInteger(contextCache, \"IAAI\", decoder);\n        if (numberOfInstances > 1) {\n          bitmap = decodeTextRegion(\n            huffman,\n            refinement,\n            currentWidth,\n            currentHeight,\n            0,\n            numberOfInstances,\n            1, // strip size\n            symbols.concat(newSymbols),\n            symbolCodeLength,\n            0, // transposed\n            0, // ds offset\n            1, // top left 7.4.3.1.1\n            0, // OR operator\n            huffmanTables,\n            refinementTemplateIndex,\n            refinementAt,\n            decodingContext,\n            0,\n            huffmanInput\n          );\n        } else {\n          const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n          const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n          const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n          const symbol =\n            symbolId < symbols.length\n              ? symbols[symbolId]\n              : newSymbols[symbolId - symbols.length];\n          bitmap = decodeRefinement(\n            currentWidth,\n            currentHeight,\n            refinementTemplateIndex,\n            symbol,\n            rdx,\n            rdy,\n            false,\n            refinementAt,\n            decodingContext\n          );\n        }\n        newSymbols.push(bitmap);\n      } else if (huffman) {\n        // Store only symbol width and decode a collective bitmap when the\n        // height class is done.\n        symbolWidths.push(currentWidth);\n      } else {\n        // 6.5.8.1 Direct-coded symbol bitmap\n        bitmap = decodeBitmap(\n          false,\n          currentWidth,\n          currentHeight,\n          templateIndex,\n          false,\n          null,\n          at,\n          decodingContext\n        );\n        newSymbols.push(bitmap);\n      }\n    }\n    if (huffman && !refinement) {\n      // 6.5.9 Height class collective bitmap\n      const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n      huffmanInput.byteAlign();\n      let collectiveBitmap;\n      if (bitmapSize === 0) {\n        // Uncompressed collective bitmap\n        collectiveBitmap = readUncompressedBitmap(\n          huffmanInput,\n          totalWidth,\n          currentHeight\n        );\n      } else {\n        // MMR collective bitmap\n        const originalEnd = huffmanInput.end;\n        const bitmapEnd = huffmanInput.position + bitmapSize;\n        huffmanInput.end = bitmapEnd;\n        collectiveBitmap = decodeMMRBitmap(\n          huffmanInput,\n          totalWidth,\n          currentHeight,\n          false\n        );\n        huffmanInput.end = originalEnd;\n        huffmanInput.position = bitmapEnd;\n      }\n      const numberOfSymbolsDecoded = symbolWidths.length;\n      if (firstSymbol === numberOfSymbolsDecoded - 1) {\n        // collectiveBitmap is a single symbol.\n        newSymbols.push(collectiveBitmap);\n      } else {\n        // Divide collectiveBitmap into symbols.\n        let i,\n          y,\n          xMin = 0,\n          xMax,\n          bitmapWidth,\n          symbolBitmap;\n        for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) {\n          bitmapWidth = symbolWidths[i];\n          xMax = xMin + bitmapWidth;\n          symbolBitmap = [];\n          for (y = 0; y < currentHeight; y++) {\n            symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n          }\n          newSymbols.push(symbolBitmap);\n          xMin = xMax;\n        }\n      }\n    }\n  }\n\n  // 6.5.10 Exported symbols\n  const exportedSymbols = [],\n    flags = [];\n  let currentFlag = false,\n    i,\n    ii;\n  const totalSymbolsLength = symbols.length + numberOfNewSymbols;\n  while (flags.length < totalSymbolsLength) {\n    let runLength = huffman\n      ? tableB1.decode(huffmanInput)\n      : decodeInteger(contextCache, \"IAEX\", decoder);\n    while (runLength--) {\n      flags.push(currentFlag);\n    }\n    currentFlag = !currentFlag;\n  }\n  for (i = 0, ii = symbols.length; i < ii; i++) {\n    if (flags[i]) {\n      exportedSymbols.push(symbols[i]);\n    }\n  }\n  for (let j = 0; j < numberOfNewSymbols; i++, j++) {\n    if (flags[i]) {\n      exportedSymbols.push(newSymbols[j]);\n    }\n  }\n  return exportedSymbols;\n}\n\nfunction decodeTextRegion(\n  huffman,\n  refinement,\n  width,\n  height,\n  defaultPixelValue,\n  numberOfSymbolInstances,\n  stripSize,\n  inputSymbols,\n  symbolCodeLength,\n  transposed,\n  dsOffset,\n  referenceCorner,\n  combinationOperator,\n  huffmanTables,\n  refinementTemplateIndex,\n  refinementAt,\n  decodingContext,\n  logStripSize,\n  huffmanInput\n) {\n  if (huffman && refinement) {\n    throw new Jbig2Error(\"refinement with Huffman is not supported\");\n  }\n\n  // Prepare bitmap\n  const bitmap = [];\n  let i, row;\n  for (i = 0; i < height; i++) {\n    row = new Uint8Array(width);\n    if (defaultPixelValue) {\n      row.fill(defaultPixelValue);\n    }\n    bitmap.push(row);\n  }\n\n  const decoder = decodingContext.decoder;\n  const contextCache = decodingContext.contextCache;\n\n  let stripT = huffman\n    ? -huffmanTables.tableDeltaT.decode(huffmanInput)\n    : -decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n  let firstS = 0;\n  i = 0;\n  while (i < numberOfSymbolInstances) {\n    const deltaT = huffman\n      ? huffmanTables.tableDeltaT.decode(huffmanInput)\n      : decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n    stripT += deltaT;\n\n    const deltaFirstS = huffman\n      ? huffmanTables.tableFirstS.decode(huffmanInput)\n      : decodeInteger(contextCache, \"IAFS\", decoder); // 6.4.7\n    firstS += deltaFirstS;\n    let currentS = firstS;\n    do {\n      let currentT = 0; // 6.4.9\n      if (stripSize > 1) {\n        currentT = huffman\n          ? huffmanInput.readBits(logStripSize)\n          : decodeInteger(contextCache, \"IAIT\", decoder);\n      }\n      const t = stripSize * stripT + currentT;\n      const symbolId = huffman\n        ? huffmanTables.symbolIDTable.decode(huffmanInput)\n        : decodeIAID(contextCache, decoder, symbolCodeLength);\n      const applyRefinement =\n        refinement &&\n        (huffman\n          ? huffmanInput.readBit()\n          : decodeInteger(contextCache, \"IARI\", decoder));\n      let symbolBitmap = inputSymbols[symbolId];\n      let symbolWidth = symbolBitmap[0].length;\n      let symbolHeight = symbolBitmap.length;\n      if (applyRefinement) {\n        const rdw = decodeInteger(contextCache, \"IARDW\", decoder); // 6.4.11.1\n        const rdh = decodeInteger(contextCache, \"IARDH\", decoder); // 6.4.11.2\n        const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n        const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n        symbolWidth += rdw;\n        symbolHeight += rdh;\n        symbolBitmap = decodeRefinement(\n          symbolWidth,\n          symbolHeight,\n          refinementTemplateIndex,\n          symbolBitmap,\n          (rdw >> 1) + rdx,\n          (rdh >> 1) + rdy,\n          false,\n          refinementAt,\n          decodingContext\n        );\n      }\n\n      let increment = 0;\n      if (!transposed) {\n        if (referenceCorner > 1) {\n          currentS += symbolWidth - 1;\n        } else {\n          increment = symbolWidth - 1;\n        }\n      } else if (!(referenceCorner & 1)) {\n        currentS += symbolHeight - 1;\n      } else {\n        increment = symbolHeight - 1;\n      }\n\n      const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\n      const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\n      let s2, t2, symbolRow;\n      if (transposed) {\n        // Place Symbol Bitmap from T1,S1\n        for (s2 = 0; s2 < symbolHeight; s2++) {\n          row = bitmap[offsetS + s2];\n          if (!row) {\n            continue;\n          }\n          symbolRow = symbolBitmap[s2];\n          // To ignore Parts of Symbol bitmap which goes\n          // outside bitmap region\n          const maxWidth = Math.min(width - offsetT, symbolWidth);\n          switch (combinationOperator) {\n            case 0: // OR\n              for (t2 = 0; t2 < maxWidth; t2++) {\n                row[offsetT + t2] |= symbolRow[t2];\n              }\n              break;\n            case 2: // XOR\n              for (t2 = 0; t2 < maxWidth; t2++) {\n                row[offsetT + t2] ^= symbolRow[t2];\n              }\n              break;\n            default:\n              throw new Jbig2Error(\n                `operator ${combinationOperator} is not supported`\n              );\n          }\n        }\n      } else {\n        for (t2 = 0; t2 < symbolHeight; t2++) {\n          row = bitmap[offsetT + t2];\n          if (!row) {\n            continue;\n          }\n          symbolRow = symbolBitmap[t2];\n          switch (combinationOperator) {\n            case 0: // OR\n              for (s2 = 0; s2 < symbolWidth; s2++) {\n                row[offsetS + s2] |= symbolRow[s2];\n              }\n              break;\n            case 2: // XOR\n              for (s2 = 0; s2 < symbolWidth; s2++) {\n                row[offsetS + s2] ^= symbolRow[s2];\n              }\n              break;\n            default:\n              throw new Jbig2Error(\n                `operator ${combinationOperator} is not supported`\n              );\n          }\n        }\n      }\n      i++;\n      const deltaS = huffman\n        ? huffmanTables.tableDeltaS.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IADS\", decoder); // 6.4.8\n      if (deltaS === null) {\n        break; // OOB\n      }\n      currentS += increment + deltaS + dsOffset;\n    } while (true);\n  }\n  return bitmap;\n}\n\nfunction decodePatternDictionary(\n  mmr,\n  patternWidth,\n  patternHeight,\n  maxPatternIndex,\n  template,\n  decodingContext\n) {\n  const at = [];\n  if (!mmr) {\n    at.push({\n      x: -patternWidth,\n      y: 0,\n    });\n    if (template === 0) {\n      at.push(\n        {\n          x: -3,\n          y: -1,\n        },\n        {\n          x: 2,\n          y: -2,\n        },\n        {\n          x: -2,\n          y: -2,\n        }\n      );\n    }\n  }\n  const collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n  const collectiveBitmap = decodeBitmap(\n    mmr,\n    collectiveWidth,\n    patternHeight,\n    template,\n    false,\n    null,\n    at,\n    decodingContext\n  );\n  // Divide collective bitmap into patterns.\n  const patterns = [];\n  for (let i = 0; i <= maxPatternIndex; i++) {\n    const patternBitmap = [];\n    const xMin = patternWidth * i;\n    const xMax = xMin + patternWidth;\n    for (let y = 0; y < patternHeight; y++) {\n      patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n    }\n    patterns.push(patternBitmap);\n  }\n  return patterns;\n}\n\nfunction decodeHalftoneRegion(\n  mmr,\n  patterns,\n  template,\n  regionWidth,\n  regionHeight,\n  defaultPixelValue,\n  enableSkip,\n  combinationOperator,\n  gridWidth,\n  gridHeight,\n  gridOffsetX,\n  gridOffsetY,\n  gridVectorX,\n  gridVectorY,\n  decodingContext\n) {\n  const skip = null;\n  if (enableSkip) {\n    throw new Jbig2Error(\"skip is not supported\");\n  }\n  if (combinationOperator !== 0) {\n    throw new Jbig2Error(\n      `operator \"${combinationOperator}\" is not supported in halftone region`\n    );\n  }\n\n  // Prepare bitmap.\n  const regionBitmap = [];\n  let i, j, row;\n  for (i = 0; i < regionHeight; i++) {\n    row = new Uint8Array(regionWidth);\n    if (defaultPixelValue) {\n      row.fill(defaultPixelValue);\n    }\n    regionBitmap.push(row);\n  }\n\n  const numberOfPatterns = patterns.length;\n  const pattern0 = patterns[0];\n  const patternWidth = pattern0[0].length,\n    patternHeight = pattern0.length;\n  const bitsPerValue = log2(numberOfPatterns);\n  const at = [];\n  if (!mmr) {\n    at.push({\n      x: template <= 1 ? 3 : 2,\n      y: -1,\n    });\n    if (template === 0) {\n      at.push(\n        {\n          x: -3,\n          y: -1,\n        },\n        {\n          x: 2,\n          y: -2,\n        },\n        {\n          x: -2,\n          y: -2,\n        }\n      );\n    }\n  }\n  // Annex C. Gray-scale Image Decoding Procedure.\n  const grayScaleBitPlanes = [];\n  let mmrInput, bitmap;\n  if (mmr) {\n    // MMR bit planes are in one continuous stream. Only EOFB codes indicate\n    // the end of each bitmap, so EOFBs must be decoded.\n    mmrInput = new Reader(\n      decodingContext.data,\n      decodingContext.start,\n      decodingContext.end\n    );\n  }\n  for (i = bitsPerValue - 1; i >= 0; i--) {\n    if (mmr) {\n      bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\n    } else {\n      bitmap = decodeBitmap(\n        false,\n        gridWidth,\n        gridHeight,\n        template,\n        false,\n        skip,\n        at,\n        decodingContext\n      );\n    }\n    grayScaleBitPlanes[i] = bitmap;\n  }\n  // 6.6.5.2 Rendering the patterns.\n  let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;\n  for (mg = 0; mg < gridHeight; mg++) {\n    for (ng = 0; ng < gridWidth; ng++) {\n      bit = 0;\n      patternIndex = 0;\n      for (j = bitsPerValue - 1; j >= 0; j--) {\n        bit ^= grayScaleBitPlanes[j][mg][ng]; // Gray decoding\n        patternIndex |= bit << j;\n      }\n      patternBitmap = patterns[patternIndex];\n      x = (gridOffsetX + mg * gridVectorY + ng * gridVectorX) >> 8;\n      y = (gridOffsetY + mg * gridVectorX - ng * gridVectorY) >> 8;\n      // Draw patternBitmap at (x, y).\n      if (\n        x >= 0 &&\n        x + patternWidth <= regionWidth &&\n        y >= 0 &&\n        y + patternHeight <= regionHeight\n      ) {\n        for (i = 0; i < patternHeight; i++) {\n          regionRow = regionBitmap[y + i];\n          patternRow = patternBitmap[i];\n          for (j = 0; j < patternWidth; j++) {\n            regionRow[x + j] |= patternRow[j];\n          }\n        }\n      } else {\n        let regionX, regionY;\n        for (i = 0; i < patternHeight; i++) {\n          regionY = y + i;\n          if (regionY < 0 || regionY >= regionHeight) {\n            continue;\n          }\n          regionRow = regionBitmap[regionY];\n          patternRow = patternBitmap[i];\n          for (j = 0; j < patternWidth; j++) {\n            regionX = x + j;\n            if (regionX >= 0 && regionX < regionWidth) {\n              regionRow[regionX] |= patternRow[j];\n            }\n          }\n        }\n      }\n    }\n  }\n  return regionBitmap;\n}\n\nfunction readSegmentHeader(data, start) {\n  const segmentHeader = {};\n  segmentHeader.number = readUint32(data, start);\n  const flags = data[start + 4];\n  const segmentType = flags & 0x3f;\n  if (!SegmentTypes[segmentType]) {\n    throw new Jbig2Error(\"invalid segment type: \" + segmentType);\n  }\n  segmentHeader.type = segmentType;\n  segmentHeader.typeName = SegmentTypes[segmentType];\n  segmentHeader.deferredNonRetain = !!(flags & 0x80);\n\n  const pageAssociationFieldSize = !!(flags & 0x40);\n  const referredFlags = data[start + 5];\n  let referredToCount = (referredFlags >> 5) & 7;\n  const retainBits = [referredFlags & 31];\n  let position = start + 6;\n  if (referredFlags === 7) {\n    referredToCount = readUint32(data, position - 1) & 0x1fffffff;\n    position += 3;\n    let bytes = (referredToCount + 7) >> 3;\n    retainBits[0] = data[position++];\n    while (--bytes > 0) {\n      retainBits.push(data[position++]);\n    }\n  } else if (referredFlags === 5 || referredFlags === 6) {\n    throw new Jbig2Error(\"invalid referred-to flags\");\n  }\n\n  segmentHeader.retainBits = retainBits;\n\n  let referredToSegmentNumberSize = 4;\n  if (segmentHeader.number <= 256) {\n    referredToSegmentNumberSize = 1;\n  } else if (segmentHeader.number <= 65536) {\n    referredToSegmentNumberSize = 2;\n  }\n  const referredTo = [];\n  let i, ii;\n  for (i = 0; i < referredToCount; i++) {\n    let number;\n    if (referredToSegmentNumberSize === 1) {\n      number = data[position];\n    } else if (referredToSegmentNumberSize === 2) {\n      number = readUint16(data, position);\n    } else {\n      number = readUint32(data, position);\n    }\n    referredTo.push(number);\n    position += referredToSegmentNumberSize;\n  }\n  segmentHeader.referredTo = referredTo;\n  if (!pageAssociationFieldSize) {\n    segmentHeader.pageAssociation = data[position++];\n  } else {\n    segmentHeader.pageAssociation = readUint32(data, position);\n    position += 4;\n  }\n  segmentHeader.length = readUint32(data, position);\n  position += 4;\n\n  if (segmentHeader.length === 0xffffffff) {\n    // 7.2.7 Segment data length, unknown segment length\n    if (segmentType === 38) {\n      // ImmediateGenericRegion\n      const genericRegionInfo = readRegionSegmentInformation(data, position);\n      const genericRegionSegmentFlags =\n        data[position + RegionSegmentInformationFieldLength];\n      const genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n      // searching for the segment end\n      const searchPatternLength = 6;\n      const searchPattern = new Uint8Array(searchPatternLength);\n      if (!genericRegionMmr) {\n        searchPattern[0] = 0xff;\n        searchPattern[1] = 0xac;\n      }\n      searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xff;\n      searchPattern[3] = (genericRegionInfo.height >> 16) & 0xff;\n      searchPattern[4] = (genericRegionInfo.height >> 8) & 0xff;\n      searchPattern[5] = genericRegionInfo.height & 0xff;\n      for (i = position, ii = data.length; i < ii; i++) {\n        let j = 0;\n        while (j < searchPatternLength && searchPattern[j] === data[i + j]) {\n          j++;\n        }\n        if (j === searchPatternLength) {\n          segmentHeader.length = i + searchPatternLength;\n          break;\n        }\n      }\n      if (segmentHeader.length === 0xffffffff) {\n        throw new Jbig2Error(\"segment end was not found\");\n      }\n    } else {\n      throw new Jbig2Error(\"invalid unknown segment length\");\n    }\n  }\n  segmentHeader.headerEnd = position;\n  return segmentHeader;\n}\n\nfunction readSegments(header, data, start, end) {\n  const segments = [];\n  let position = start;\n  while (position < end) {\n    const segmentHeader = readSegmentHeader(data, position);\n    position = segmentHeader.headerEnd;\n    const segment = {\n      header: segmentHeader,\n      data,\n    };\n    if (!header.randomAccess) {\n      segment.start = position;\n      position += segmentHeader.length;\n      segment.end = position;\n    }\n    segments.push(segment);\n    if (segmentHeader.type === 51) {\n      break; // end of file is found\n    }\n  }\n  if (header.randomAccess) {\n    for (let i = 0, ii = segments.length; i < ii; i++) {\n      segments[i].start = position;\n      position += segments[i].header.length;\n      segments[i].end = position;\n    }\n  }\n  return segments;\n}\n\n// 7.4.1 Region segment information field\nfunction readRegionSegmentInformation(data, start) {\n  return {\n    width: readUint32(data, start),\n    height: readUint32(data, start + 4),\n    x: readUint32(data, start + 8),\n    y: readUint32(data, start + 12),\n    combinationOperator: data[start + 16] & 7,\n  };\n}\nconst RegionSegmentInformationFieldLength = 17;\n\nfunction processSegment(segment, visitor) {\n  const header = segment.header;\n\n  const data = segment.data,\n    end = segment.end;\n  let position = segment.start;\n  let args, at, i, atLength;\n  switch (header.type) {\n    case 0: // SymbolDictionary\n      // 7.4.2 Symbol dictionary segment syntax\n      const dictionary = {};\n      const dictionaryFlags = readUint16(data, position); // 7.4.2.1.1\n      dictionary.huffman = !!(dictionaryFlags & 1);\n      dictionary.refinement = !!(dictionaryFlags & 2);\n      dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3;\n      dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3;\n      dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1;\n      dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1;\n      dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\n      dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\n      dictionary.template = (dictionaryFlags >> 10) & 3;\n      dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1;\n      position += 2;\n      if (!dictionary.huffman) {\n        atLength = dictionary.template === 0 ? 4 : 1;\n        at = [];\n        for (i = 0; i < atLength; i++) {\n          at.push({\n            x: readInt8(data, position),\n            y: readInt8(data, position + 1),\n          });\n          position += 2;\n        }\n        dictionary.at = at;\n      }\n      if (dictionary.refinement && !dictionary.refinementTemplate) {\n        at = [];\n        for (i = 0; i < 2; i++) {\n          at.push({\n            x: readInt8(data, position),\n            y: readInt8(data, position + 1),\n          });\n          position += 2;\n        }\n        dictionary.refinementAt = at;\n      }\n      dictionary.numberOfExportedSymbols = readUint32(data, position);\n      position += 4;\n      dictionary.numberOfNewSymbols = readUint32(data, position);\n      position += 4;\n      args = [\n        dictionary,\n        header.number,\n        header.referredTo,\n        data,\n        position,\n        end,\n      ];\n      break;\n    case 6: // ImmediateTextRegion\n    case 7: // ImmediateLosslessTextRegion\n      const textRegion = {};\n      textRegion.info = readRegionSegmentInformation(data, position);\n      position += RegionSegmentInformationFieldLength;\n      const textRegionSegmentFlags = readUint16(data, position);\n      position += 2;\n      textRegion.huffman = !!(textRegionSegmentFlags & 1);\n      textRegion.refinement = !!(textRegionSegmentFlags & 2);\n      textRegion.logStripSize = (textRegionSegmentFlags >> 2) & 3;\n      textRegion.stripSize = 1 << textRegion.logStripSize;\n      textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3;\n      textRegion.transposed = !!(textRegionSegmentFlags & 64);\n      textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3;\n      textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1;\n      textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27;\n      textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;\n      if (textRegion.huffman) {\n        const textRegionHuffmanFlags = readUint16(data, position);\n        position += 2;\n        textRegion.huffmanFS = textRegionHuffmanFlags & 3;\n        textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;\n        textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3;\n        textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3;\n        textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3;\n        textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3;\n        textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3;\n        textRegion.huffmanRefinementSizeSelector = !!(\n          textRegionHuffmanFlags & 0x4000\n        );\n      }\n      if (textRegion.refinement && !textRegion.refinementTemplate) {\n        at = [];\n        for (i = 0; i < 2; i++) {\n          at.push({\n            x: readInt8(data, position),\n            y: readInt8(data, position + 1),\n          });\n          position += 2;\n        }\n        textRegion.refinementAt = at;\n      }\n      textRegion.numberOfSymbolInstances = readUint32(data, position);\n      position += 4;\n      args = [textRegion, header.referredTo, data, position, end];\n      break;\n    case 16: // PatternDictionary\n      // 7.4.4. Pattern dictionary segment syntax\n      const patternDictionary = {};\n      const patternDictionaryFlags = data[position++];\n      patternDictionary.mmr = !!(patternDictionaryFlags & 1);\n      patternDictionary.template = (patternDictionaryFlags >> 1) & 3;\n      patternDictionary.patternWidth = data[position++];\n      patternDictionary.patternHeight = data[position++];\n      patternDictionary.maxPatternIndex = readUint32(data, position);\n      position += 4;\n      args = [patternDictionary, header.number, data, position, end];\n      break;\n    case 22: // ImmediateHalftoneRegion\n    case 23: // ImmediateLosslessHalftoneRegion\n      // 7.4.5 Halftone region segment syntax\n      const halftoneRegion = {};\n      halftoneRegion.info = readRegionSegmentInformation(data, position);\n      position += RegionSegmentInformationFieldLength;\n      const halftoneRegionFlags = data[position++];\n      halftoneRegion.mmr = !!(halftoneRegionFlags & 1);\n      halftoneRegion.template = (halftoneRegionFlags >> 1) & 3;\n      halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);\n      halftoneRegion.combinationOperator = (halftoneRegionFlags >> 4) & 7;\n      halftoneRegion.defaultPixelValue = (halftoneRegionFlags >> 7) & 1;\n      halftoneRegion.gridWidth = readUint32(data, position);\n      position += 4;\n      halftoneRegion.gridHeight = readUint32(data, position);\n      position += 4;\n      halftoneRegion.gridOffsetX = readUint32(data, position) & 0xffffffff;\n      position += 4;\n      halftoneRegion.gridOffsetY = readUint32(data, position) & 0xffffffff;\n      position += 4;\n      halftoneRegion.gridVectorX = readUint16(data, position);\n      position += 2;\n      halftoneRegion.gridVectorY = readUint16(data, position);\n      position += 2;\n      args = [halftoneRegion, header.referredTo, data, position, end];\n      break;\n    case 38: // ImmediateGenericRegion\n    case 39: // ImmediateLosslessGenericRegion\n      const genericRegion = {};\n      genericRegion.info = readRegionSegmentInformation(data, position);\n      position += RegionSegmentInformationFieldLength;\n      const genericRegionSegmentFlags = data[position++];\n      genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\n      genericRegion.template = (genericRegionSegmentFlags >> 1) & 3;\n      genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\n      if (!genericRegion.mmr) {\n        atLength = genericRegion.template === 0 ? 4 : 1;\n        at = [];\n        for (i = 0; i < atLength; i++) {\n          at.push({\n            x: readInt8(data, position),\n            y: readInt8(data, position + 1),\n          });\n          position += 2;\n        }\n        genericRegion.at = at;\n      }\n      args = [genericRegion, data, position, end];\n      break;\n    case 48: // PageInformation\n      const pageInfo = {\n        width: readUint32(data, position),\n        height: readUint32(data, position + 4),\n        resolutionX: readUint32(data, position + 8),\n        resolutionY: readUint32(data, position + 12),\n      };\n      if (pageInfo.height === 0xffffffff) {\n        delete pageInfo.height;\n      }\n      const pageSegmentFlags = data[position + 16];\n      readUint16(data, position + 17); // pageStripingInformation\n      pageInfo.lossless = !!(pageSegmentFlags & 1);\n      pageInfo.refinement = !!(pageSegmentFlags & 2);\n      pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1;\n      pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3;\n      pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\n      pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\n      args = [pageInfo];\n      break;\n    case 49: // EndOfPage\n      break;\n    case 50: // EndOfStripe\n      break;\n    case 51: // EndOfFile\n      break;\n    case 53: // Tables\n      args = [header.number, data, position, end];\n      break;\n    case 62: // 7.4.15 defines 2 extension types which\n      // are comments and can be ignored.\n      break;\n    default:\n      throw new Jbig2Error(\n        `segment type ${header.typeName}(${header.type}) is not implemented`\n      );\n  }\n  const callbackName = \"on\" + header.typeName;\n  if (callbackName in visitor) {\n    // eslint-disable-next-line prefer-spread\n    visitor[callbackName].apply(visitor, args);\n  }\n}\n\nfunction processSegments(segments, visitor) {\n  for (let i = 0, ii = segments.length; i < ii; i++) {\n    processSegment(segments[i], visitor);\n  }\n}\n\nfunction parseJbig2Chunks(chunks) {\n  const visitor = new SimpleSegmentVisitor();\n  for (let i = 0, ii = chunks.length; i < ii; i++) {\n    const chunk = chunks[i];\n    const segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n    processSegments(segments, visitor);\n  }\n  return visitor.buffer;\n}\n\nfunction parseJbig2(data) {\n  if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"IMAGE_DECODERS\")) {\n    throw new Error(\"Not implemented: parseJbig2\");\n  }\n  const end = data.length;\n  let position = 0;\n\n  if (\n    data[position] !== 0x97 ||\n    data[position + 1] !== 0x4a ||\n    data[position + 2] !== 0x42 ||\n    data[position + 3] !== 0x32 ||\n    data[position + 4] !== 0x0d ||\n    data[position + 5] !== 0x0a ||\n    data[position + 6] !== 0x1a ||\n    data[position + 7] !== 0x0a\n  ) {\n    throw new Jbig2Error(\"parseJbig2 - invalid header.\");\n  }\n\n  const header = Object.create(null);\n  position += 8;\n  const flags = data[position++];\n  header.randomAccess = !(flags & 1);\n  if (!(flags & 2)) {\n    header.numberOfPages = readUint32(data, position);\n    position += 4;\n  }\n\n  const segments = readSegments(header, data, position, end);\n  const visitor = new SimpleSegmentVisitor();\n  processSegments(segments, visitor);\n\n  const { width, height } = visitor.currentPageInfo;\n  const bitPacked = visitor.buffer;\n  const imgData = new Uint8ClampedArray(width * height);\n  let q = 0,\n    k = 0;\n  for (let i = 0; i < height; i++) {\n    let mask = 0,\n      buffer;\n    for (let j = 0; j < width; j++) {\n      if (!mask) {\n        mask = 128;\n        buffer = bitPacked[k++];\n      }\n      imgData[q++] = buffer & mask ? 0 : 255;\n      mask >>= 1;\n    }\n  }\n\n  return { imgData, width, height };\n}\n\nclass SimpleSegmentVisitor {\n  onPageInformation(info) {\n    this.currentPageInfo = info;\n    const rowSize = (info.width + 7) >> 3;\n    const buffer = new Uint8ClampedArray(rowSize * info.height);\n    // The contents of ArrayBuffers are initialized to 0.\n    // Fill the buffer with 0xFF only if info.defaultPixelValue is set\n    if (info.defaultPixelValue) {\n      buffer.fill(0xff);\n    }\n    this.buffer = buffer;\n  }\n\n  drawBitmap(regionInfo, bitmap) {\n    const pageInfo = this.currentPageInfo;\n    const width = regionInfo.width,\n      height = regionInfo.height;\n    const rowSize = (pageInfo.width + 7) >> 3;\n    const combinationOperator = pageInfo.combinationOperatorOverride\n      ? regionInfo.combinationOperator\n      : pageInfo.combinationOperator;\n    const buffer = this.buffer;\n    const mask0 = 128 >> (regionInfo.x & 7);\n    let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n    let i, j, mask, offset;\n    switch (combinationOperator) {\n      case 0: // OR\n        for (i = 0; i < height; i++) {\n          mask = mask0;\n          offset = offset0;\n          for (j = 0; j < width; j++) {\n            if (bitmap[i][j]) {\n              buffer[offset] |= mask;\n            }\n            mask >>= 1;\n            if (!mask) {\n              mask = 128;\n              offset++;\n            }\n          }\n          offset0 += rowSize;\n        }\n        break;\n      case 2: // XOR\n        for (i = 0; i < height; i++) {\n          mask = mask0;\n          offset = offset0;\n          for (j = 0; j < width; j++) {\n            if (bitmap[i][j]) {\n              buffer[offset] ^= mask;\n            }\n            mask >>= 1;\n            if (!mask) {\n              mask = 128;\n              offset++;\n            }\n          }\n          offset0 += rowSize;\n        }\n        break;\n      default:\n        throw new Jbig2Error(\n          `operator ${combinationOperator} is not supported`\n        );\n    }\n  }\n\n  onImmediateGenericRegion(region, data, start, end) {\n    const regionInfo = region.info;\n    const decodingContext = new DecodingContext(data, start, end);\n    const bitmap = decodeBitmap(\n      region.mmr,\n      regionInfo.width,\n      regionInfo.height,\n      region.template,\n      region.prediction,\n      null,\n      region.at,\n      decodingContext\n    );\n    this.drawBitmap(regionInfo, bitmap);\n  }\n\n  onImmediateLosslessGenericRegion() {\n    this.onImmediateGenericRegion(...arguments);\n  }\n\n  onSymbolDictionary(\n    dictionary,\n    currentSegment,\n    referredSegments,\n    data,\n    start,\n    end\n  ) {\n    let huffmanTables, huffmanInput;\n    if (dictionary.huffman) {\n      huffmanTables = getSymbolDictionaryHuffmanTables(\n        dictionary,\n        referredSegments,\n        this.customTables\n      );\n      huffmanInput = new Reader(data, start, end);\n    }\n\n    // Combines exported symbols from all referred segments\n    let symbols = this.symbols;\n    if (!symbols) {\n      this.symbols = symbols = {};\n    }\n\n    const inputSymbols = [];\n    for (const referredSegment of referredSegments) {\n      const referredSymbols = symbols[referredSegment];\n      // referredSymbols is undefined when we have a reference to a Tables\n      // segment instead of a SymbolDictionary.\n      if (referredSymbols) {\n        inputSymbols.push(...referredSymbols);\n      }\n    }\n\n    const decodingContext = new DecodingContext(data, start, end);\n    symbols[currentSegment] = decodeSymbolDictionary(\n      dictionary.huffman,\n      dictionary.refinement,\n      inputSymbols,\n      dictionary.numberOfNewSymbols,\n      dictionary.numberOfExportedSymbols,\n      huffmanTables,\n      dictionary.template,\n      dictionary.at,\n      dictionary.refinementTemplate,\n      dictionary.refinementAt,\n      decodingContext,\n      huffmanInput\n    );\n  }\n\n  onImmediateTextRegion(region, referredSegments, data, start, end) {\n    const regionInfo = region.info;\n    let huffmanTables, huffmanInput;\n\n    // Combines exported symbols from all referred segments\n    const symbols = this.symbols;\n    const inputSymbols = [];\n    for (const referredSegment of referredSegments) {\n      const referredSymbols = symbols[referredSegment];\n      // referredSymbols is undefined when we have a reference to a Tables\n      // segment instead of a SymbolDictionary.\n      if (referredSymbols) {\n        inputSymbols.push(...referredSymbols);\n      }\n    }\n    const symbolCodeLength = log2(inputSymbols.length);\n    if (region.huffman) {\n      huffmanInput = new Reader(data, start, end);\n      huffmanTables = getTextRegionHuffmanTables(\n        region,\n        referredSegments,\n        this.customTables,\n        inputSymbols.length,\n        huffmanInput\n      );\n    }\n\n    const decodingContext = new DecodingContext(data, start, end);\n    const bitmap = decodeTextRegion(\n      region.huffman,\n      region.refinement,\n      regionInfo.width,\n      regionInfo.height,\n      region.defaultPixelValue,\n      region.numberOfSymbolInstances,\n      region.stripSize,\n      inputSymbols,\n      symbolCodeLength,\n      region.transposed,\n      region.dsOffset,\n      region.referenceCorner,\n      region.combinationOperator,\n      huffmanTables,\n      region.refinementTemplate,\n      region.refinementAt,\n      decodingContext,\n      region.logStripSize,\n      huffmanInput\n    );\n    this.drawBitmap(regionInfo, bitmap);\n  }\n\n  onImmediateLosslessTextRegion() {\n    this.onImmediateTextRegion(...arguments);\n  }\n\n  onPatternDictionary(dictionary, currentSegment, data, start, end) {\n    let patterns = this.patterns;\n    if (!patterns) {\n      this.patterns = patterns = {};\n    }\n    const decodingContext = new DecodingContext(data, start, end);\n    patterns[currentSegment] = decodePatternDictionary(\n      dictionary.mmr,\n      dictionary.patternWidth,\n      dictionary.patternHeight,\n      dictionary.maxPatternIndex,\n      dictionary.template,\n      decodingContext\n    );\n  }\n\n  onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n    // HalftoneRegion refers to exactly one PatternDictionary.\n    const patterns = this.patterns[referredSegments[0]];\n    const regionInfo = region.info;\n    const decodingContext = new DecodingContext(data, start, end);\n    const bitmap = decodeHalftoneRegion(\n      region.mmr,\n      patterns,\n      region.template,\n      regionInfo.width,\n      regionInfo.height,\n      region.defaultPixelValue,\n      region.enableSkip,\n      region.combinationOperator,\n      region.gridWidth,\n      region.gridHeight,\n      region.gridOffsetX,\n      region.gridOffsetY,\n      region.gridVectorX,\n      region.gridVectorY,\n      decodingContext\n    );\n    this.drawBitmap(regionInfo, bitmap);\n  }\n\n  onImmediateLosslessHalftoneRegion() {\n    this.onImmediateHalftoneRegion(...arguments);\n  }\n\n  onTables(currentSegment, data, start, end) {\n    let customTables = this.customTables;\n    if (!customTables) {\n      this.customTables = customTables = {};\n    }\n    customTables[currentSegment] = decodeTablesSegment(data, start, end);\n  }\n}\n\nclass HuffmanLine {\n  constructor(lineData) {\n    if (lineData.length === 2) {\n      // OOB line.\n      this.isOOB = true;\n      this.rangeLow = 0;\n      this.prefixLength = lineData[0];\n      this.rangeLength = 0;\n      this.prefixCode = lineData[1];\n      this.isLowerRange = false;\n    } else {\n      // Normal, upper range or lower range line.\n      // Upper range lines are processed like normal lines.\n      this.isOOB = false;\n      this.rangeLow = lineData[0];\n      this.prefixLength = lineData[1];\n      this.rangeLength = lineData[2];\n      this.prefixCode = lineData[3];\n      this.isLowerRange = lineData[4] === \"lower\";\n    }\n  }\n}\n\nclass HuffmanTreeNode {\n  constructor(line) {\n    this.children = [];\n    if (line) {\n      // Leaf node\n      this.isLeaf = true;\n      this.rangeLength = line.rangeLength;\n      this.rangeLow = line.rangeLow;\n      this.isLowerRange = line.isLowerRange;\n      this.isOOB = line.isOOB;\n    } else {\n      // Intermediate or root node\n      this.isLeaf = false;\n    }\n  }\n\n  buildTree(line, shift) {\n    const bit = (line.prefixCode >> shift) & 1;\n    if (shift <= 0) {\n      // Create a leaf node.\n      this.children[bit] = new HuffmanTreeNode(line);\n    } else {\n      // Create an intermediate node and continue recursively.\n      let node = this.children[bit];\n      if (!node) {\n        this.children[bit] = node = new HuffmanTreeNode(null);\n      }\n      node.buildTree(line, shift - 1);\n    }\n  }\n\n  decodeNode(reader) {\n    if (this.isLeaf) {\n      if (this.isOOB) {\n        return null;\n      }\n      const htOffset = reader.readBits(this.rangeLength);\n      return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\n    }\n    const node = this.children[reader.readBit()];\n    if (!node) {\n      throw new Jbig2Error(\"invalid Huffman data\");\n    }\n    return node.decodeNode(reader);\n  }\n}\n\nclass HuffmanTable {\n  constructor(lines, prefixCodesDone) {\n    if (!prefixCodesDone) {\n      this.assignPrefixCodes(lines);\n    }\n    // Create Huffman tree.\n    this.rootNode = new HuffmanTreeNode(null);\n    for (let i = 0, ii = lines.length; i < ii; i++) {\n      const line = lines[i];\n      if (line.prefixLength > 0) {\n        this.rootNode.buildTree(line, line.prefixLength - 1);\n      }\n    }\n  }\n\n  decode(reader) {\n    return this.rootNode.decodeNode(reader);\n  }\n\n  assignPrefixCodes(lines) {\n    // Annex B.3 Assigning the prefix codes.\n    const linesLength = lines.length;\n    let prefixLengthMax = 0;\n    for (let i = 0; i < linesLength; i++) {\n      prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\n    }\n\n    const histogram = new Uint32Array(prefixLengthMax + 1);\n    for (let i = 0; i < linesLength; i++) {\n      histogram[lines[i].prefixLength]++;\n    }\n    let currentLength = 1,\n      firstCode = 0,\n      currentCode,\n      currentTemp,\n      line;\n    histogram[0] = 0;\n\n    while (currentLength <= prefixLengthMax) {\n      firstCode = (firstCode + histogram[currentLength - 1]) << 1;\n      currentCode = firstCode;\n      currentTemp = 0;\n      while (currentTemp < linesLength) {\n        line = lines[currentTemp];\n        if (line.prefixLength === currentLength) {\n          line.prefixCode = currentCode;\n          currentCode++;\n        }\n        currentTemp++;\n      }\n      currentLength++;\n    }\n  }\n}\n\nfunction decodeTablesSegment(data, start, end) {\n  // Decodes a Tables segment, i.e., a custom Huffman table.\n  // Annex B.2 Code table structure.\n  const flags = data[start];\n  const lowestValue = readUint32(data, start + 1) & 0xffffffff;\n  const highestValue = readUint32(data, start + 5) & 0xffffffff;\n  const reader = new Reader(data, start + 9, end);\n\n  const prefixSizeBits = ((flags >> 1) & 7) + 1;\n  const rangeSizeBits = ((flags >> 4) & 7) + 1;\n  const lines = [];\n  let prefixLength,\n    rangeLength,\n    currentRangeLow = lowestValue;\n\n  // Normal table lines\n  do {\n    prefixLength = reader.readBits(prefixSizeBits);\n    rangeLength = reader.readBits(rangeSizeBits);\n    lines.push(\n      new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])\n    );\n    currentRangeLow += 1 << rangeLength;\n  } while (currentRangeLow < highestValue);\n\n  // Lower range table line\n  prefixLength = reader.readBits(prefixSizeBits);\n  lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \"lower\"]));\n\n  // Upper range table line\n  prefixLength = reader.readBits(prefixSizeBits);\n  lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n\n  if (flags & 1) {\n    // Out-of-band table line\n    prefixLength = reader.readBits(prefixSizeBits);\n    lines.push(new HuffmanLine([prefixLength, 0]));\n  }\n\n  return new HuffmanTable(lines, false);\n}\n\nconst standardTablesCache = {};\n\nfunction getStandardTable(number) {\n  // Annex B.5 Standard Huffman tables.\n  let table = standardTablesCache[number];\n  if (table) {\n    return table;\n  }\n  let lines;\n  switch (number) {\n    case 1:\n      lines = [\n        [0, 1, 4, 0x0],\n        [16, 2, 8, 0x2],\n        [272, 3, 16, 0x6],\n        [65808, 3, 32, 0x7], // upper\n      ];\n      break;\n    case 2:\n      lines = [\n        [0, 1, 0, 0x0],\n        [1, 2, 0, 0x2],\n        [2, 3, 0, 0x6],\n        [3, 4, 3, 0xe],\n        [11, 5, 6, 0x1e],\n        [75, 6, 32, 0x3e], // upper\n        [6, 0x3f], // OOB\n      ];\n      break;\n    case 3:\n      lines = [\n        [-256, 8, 8, 0xfe],\n        [0, 1, 0, 0x0],\n        [1, 2, 0, 0x2],\n        [2, 3, 0, 0x6],\n        [3, 4, 3, 0xe],\n        [11, 5, 6, 0x1e],\n        [-257, 8, 32, 0xff, \"lower\"],\n        [75, 7, 32, 0x7e], // upper\n        [6, 0x3e], // OOB\n      ];\n      break;\n    case 4:\n      lines = [\n        [1, 1, 0, 0x0],\n        [2, 2, 0, 0x2],\n        [3, 3, 0, 0x6],\n        [4, 4, 3, 0xe],\n        [12, 5, 6, 0x1e],\n        [76, 5, 32, 0x1f], // upper\n      ];\n      break;\n    case 5:\n      lines = [\n        [-255, 7, 8, 0x7e],\n        [1, 1, 0, 0x0],\n        [2, 2, 0, 0x2],\n        [3, 3, 0, 0x6],\n        [4, 4, 3, 0xe],\n        [12, 5, 6, 0x1e],\n        [-256, 7, 32, 0x7f, \"lower\"],\n        [76, 6, 32, 0x3e], // upper\n      ];\n      break;\n    case 6:\n      lines = [\n        [-2048, 5, 10, 0x1c],\n        [-1024, 4, 9, 0x8],\n        [-512, 4, 8, 0x9],\n        [-256, 4, 7, 0xa],\n        [-128, 5, 6, 0x1d],\n        [-64, 5, 5, 0x1e],\n        [-32, 4, 5, 0xb],\n        [0, 2, 7, 0x0],\n        [128, 3, 7, 0x2],\n        [256, 3, 8, 0x3],\n        [512, 4, 9, 0xc],\n        [1024, 4, 10, 0xd],\n        [-2049, 6, 32, 0x3e, \"lower\"],\n        [2048, 6, 32, 0x3f], // upper\n      ];\n      break;\n    case 7:\n      lines = [\n        [-1024, 4, 9, 0x8],\n        [-512, 3, 8, 0x0],\n        [-256, 4, 7, 0x9],\n        [-128, 5, 6, 0x1a],\n        [-64, 5, 5, 0x1b],\n        [-32, 4, 5, 0xa],\n        [0, 4, 5, 0xb],\n        [32, 5, 5, 0x1c],\n        [64, 5, 6, 0x1d],\n        [128, 4, 7, 0xc],\n        [256, 3, 8, 0x1],\n        [512, 3, 9, 0x2],\n        [1024, 3, 10, 0x3],\n        [-1025, 5, 32, 0x1e, \"lower\"],\n        [2048, 5, 32, 0x1f], // upper\n      ];\n      break;\n    case 8:\n      lines = [\n        [-15, 8, 3, 0xfc],\n        [-7, 9, 1, 0x1fc],\n        [-5, 8, 1, 0xfd],\n        [-3, 9, 0, 0x1fd],\n        [-2, 7, 0, 0x7c],\n        [-1, 4, 0, 0xa],\n        [0, 2, 1, 0x0],\n        [2, 5, 0, 0x1a],\n        [3, 6, 0, 0x3a],\n        [4, 3, 4, 0x4],\n        [20, 6, 1, 0x3b],\n        [22, 4, 4, 0xb],\n        [38, 4, 5, 0xc],\n        [70, 5, 6, 0x1b],\n        [134, 5, 7, 0x1c],\n        [262, 6, 7, 0x3c],\n        [390, 7, 8, 0x7d],\n        [646, 6, 10, 0x3d],\n        [-16, 9, 32, 0x1fe, \"lower\"],\n        [1670, 9, 32, 0x1ff], // upper\n        [2, 0x1], // OOB\n      ];\n      break;\n    case 9:\n      lines = [\n        [-31, 8, 4, 0xfc],\n        [-15, 9, 2, 0x1fc],\n        [-11, 8, 2, 0xfd],\n        [-7, 9, 1, 0x1fd],\n        [-5, 7, 1, 0x7c],\n        [-3, 4, 1, 0xa],\n        [-1, 3, 1, 0x2],\n        [1, 3, 1, 0x3],\n        [3, 5, 1, 0x1a],\n        [5, 6, 1, 0x3a],\n        [7, 3, 5, 0x4],\n        [39, 6, 2, 0x3b],\n        [43, 4, 5, 0xb],\n        [75, 4, 6, 0xc],\n        [139, 5, 7, 0x1b],\n        [267, 5, 8, 0x1c],\n        [523, 6, 8, 0x3c],\n        [779, 7, 9, 0x7d],\n        [1291, 6, 11, 0x3d],\n        [-32, 9, 32, 0x1fe, \"lower\"],\n        [3339, 9, 32, 0x1ff], // upper\n        [2, 0x0], // OOB\n      ];\n      break;\n    case 10:\n      lines = [\n        [-21, 7, 4, 0x7a],\n        [-5, 8, 0, 0xfc],\n        [-4, 7, 0, 0x7b],\n        [-3, 5, 0, 0x18],\n        [-2, 2, 2, 0x0],\n        [2, 5, 0, 0x19],\n        [3, 6, 0, 0x36],\n        [4, 7, 0, 0x7c],\n        [5, 8, 0, 0xfd],\n        [6, 2, 6, 0x1],\n        [70, 5, 5, 0x1a],\n        [102, 6, 5, 0x37],\n        [134, 6, 6, 0x38],\n        [198, 6, 7, 0x39],\n        [326, 6, 8, 0x3a],\n        [582, 6, 9, 0x3b],\n        [1094, 6, 10, 0x3c],\n        [2118, 7, 11, 0x7d],\n        [-22, 8, 32, 0xfe, \"lower\"],\n        [4166, 8, 32, 0xff], // upper\n        [2, 0x2], // OOB\n      ];\n      break;\n    case 11:\n      lines = [\n        [1, 1, 0, 0x0],\n        [2, 2, 1, 0x2],\n        [4, 4, 0, 0xc],\n        [5, 4, 1, 0xd],\n        [7, 5, 1, 0x1c],\n        [9, 5, 2, 0x1d],\n        [13, 6, 2, 0x3c],\n        [17, 7, 2, 0x7a],\n        [21, 7, 3, 0x7b],\n        [29, 7, 4, 0x7c],\n        [45, 7, 5, 0x7d],\n        [77, 7, 6, 0x7e],\n        [141, 7, 32, 0x7f], // upper\n      ];\n      break;\n    case 12:\n      lines = [\n        [1, 1, 0, 0x0],\n        [2, 2, 0, 0x2],\n        [3, 3, 1, 0x6],\n        [5, 5, 0, 0x1c],\n        [6, 5, 1, 0x1d],\n        [8, 6, 1, 0x3c],\n        [10, 7, 0, 0x7a],\n        [11, 7, 1, 0x7b],\n        [13, 7, 2, 0x7c],\n        [17, 7, 3, 0x7d],\n        [25, 7, 4, 0x7e],\n        [41, 8, 5, 0xfe],\n        [73, 8, 32, 0xff], // upper\n      ];\n      break;\n    case 13:\n      lines = [\n        [1, 1, 0, 0x0],\n        [2, 3, 0, 0x4],\n        [3, 4, 0, 0xc],\n        [4, 5, 0, 0x1c],\n        [5, 4, 1, 0xd],\n        [7, 3, 3, 0x5],\n        [15, 6, 1, 0x3a],\n        [17, 6, 2, 0x3b],\n        [21, 6, 3, 0x3c],\n        [29, 6, 4, 0x3d],\n        [45, 6, 5, 0x3e],\n        [77, 7, 6, 0x7e],\n        [141, 7, 32, 0x7f], // upper\n      ];\n      break;\n    case 14:\n      lines = [\n        [-2, 3, 0, 0x4],\n        [-1, 3, 0, 0x5],\n        [0, 1, 0, 0x0],\n        [1, 3, 0, 0x6],\n        [2, 3, 0, 0x7],\n      ];\n      break;\n    case 15:\n      lines = [\n        [-24, 7, 4, 0x7c],\n        [-8, 6, 2, 0x3c],\n        [-4, 5, 1, 0x1c],\n        [-2, 4, 0, 0xc],\n        [-1, 3, 0, 0x4],\n        [0, 1, 0, 0x0],\n        [1, 3, 0, 0x5],\n        [2, 4, 0, 0xd],\n        [3, 5, 1, 0x1d],\n        [5, 6, 2, 0x3d],\n        [9, 7, 4, 0x7d],\n        [-25, 7, 32, 0x7e, \"lower\"],\n        [25, 7, 32, 0x7f], // upper\n      ];\n      break;\n    default:\n      throw new Jbig2Error(`standard table B.${number} does not exist`);\n  }\n\n  for (let i = 0, ii = lines.length; i < ii; i++) {\n    lines[i] = new HuffmanLine(lines[i]);\n  }\n  table = new HuffmanTable(lines, true);\n  standardTablesCache[number] = table;\n  return table;\n}\n\nclass Reader {\n  constructor(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n    this.position = start;\n    this.shift = -1;\n    this.currentByte = 0;\n  }\n\n  readBit() {\n    if (this.shift < 0) {\n      if (this.position >= this.end) {\n        throw new Jbig2Error(\"end of data while reading bit\");\n      }\n      this.currentByte = this.data[this.position++];\n      this.shift = 7;\n    }\n    const bit = (this.currentByte >> this.shift) & 1;\n    this.shift--;\n    return bit;\n  }\n\n  readBits(numBits) {\n    let result = 0,\n      i;\n    for (i = numBits - 1; i >= 0; i--) {\n      result |= this.readBit() << i;\n    }\n    return result;\n  }\n\n  byteAlign() {\n    this.shift = -1;\n  }\n\n  next() {\n    if (this.position >= this.end) {\n      return -1;\n    }\n    return this.data[this.position++];\n  }\n}\n\nfunction getCustomHuffmanTable(index, referredTo, customTables) {\n  // Returns a Tables segment that has been earlier decoded.\n  // See 7.4.2.1.6 (symbol dictionary) or 7.4.3.1.6 (text region).\n  let currentIndex = 0;\n  for (let i = 0, ii = referredTo.length; i < ii; i++) {\n    const table = customTables[referredTo[i]];\n    if (table) {\n      if (index === currentIndex) {\n        return table;\n      }\n      currentIndex++;\n    }\n  }\n  throw new Jbig2Error(\"can't find custom Huffman table\");\n}\n\nfunction getTextRegionHuffmanTables(\n  textRegion,\n  referredTo,\n  customTables,\n  numberOfSymbols,\n  reader\n) {\n  // 7.4.3.1.7 Symbol ID Huffman table decoding\n\n  // Read code lengths for RUNCODEs 0...34.\n  const codes = [];\n  for (let i = 0; i <= 34; i++) {\n    const codeLength = reader.readBits(4);\n    codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n  }\n  // Assign Huffman codes for RUNCODEs.\n  const runCodesTable = new HuffmanTable(codes, false);\n\n  // Read a Huffman code using the assignment above.\n  // Interpret the RUNCODE codes and the additional bits (if any).\n  codes.length = 0;\n  for (let i = 0; i < numberOfSymbols; ) {\n    const codeLength = runCodesTable.decode(reader);\n    if (codeLength >= 32) {\n      let repeatedLength, numberOfRepeats, j;\n      switch (codeLength) {\n        case 32:\n          if (i === 0) {\n            throw new Jbig2Error(\"no previous value in symbol ID table\");\n          }\n          numberOfRepeats = reader.readBits(2) + 3;\n          repeatedLength = codes[i - 1].prefixLength;\n          break;\n        case 33:\n          numberOfRepeats = reader.readBits(3) + 3;\n          repeatedLength = 0;\n          break;\n        case 34:\n          numberOfRepeats = reader.readBits(7) + 11;\n          repeatedLength = 0;\n          break;\n        default:\n          throw new Jbig2Error(\"invalid code length in symbol ID table\");\n      }\n      for (j = 0; j < numberOfRepeats; j++) {\n        codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));\n        i++;\n      }\n    } else {\n      codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n      i++;\n    }\n  }\n  reader.byteAlign();\n  const symbolIDTable = new HuffmanTable(codes, false);\n\n  // 7.4.3.1.6 Text region segment Huffman table selection\n\n  let customIndex = 0,\n    tableFirstS,\n    tableDeltaS,\n    tableDeltaT;\n\n  switch (textRegion.huffmanFS) {\n    case 0:\n    case 1:\n      tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\n      break;\n    case 3:\n      tableFirstS = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman FS selector\");\n  }\n\n  switch (textRegion.huffmanDS) {\n    case 0:\n    case 1:\n    case 2:\n      tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);\n      break;\n    case 3:\n      tableDeltaS = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman DS selector\");\n  }\n\n  switch (textRegion.huffmanDT) {\n    case 0:\n    case 1:\n    case 2:\n      tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);\n      break;\n    case 3:\n      tableDeltaT = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman DT selector\");\n  }\n\n  if (textRegion.refinement) {\n    // Load tables RDW, RDH, RDX and RDY.\n    throw new Jbig2Error(\"refinement with Huffman is not supported\");\n  }\n\n  return {\n    symbolIDTable,\n    tableFirstS,\n    tableDeltaS,\n    tableDeltaT,\n  };\n}\n\nfunction getSymbolDictionaryHuffmanTables(\n  dictionary,\n  referredTo,\n  customTables\n) {\n  // 7.4.2.1.6 Symbol dictionary segment Huffman table selection\n\n  let customIndex = 0,\n    tableDeltaHeight,\n    tableDeltaWidth;\n  switch (dictionary.huffmanDHSelector) {\n    case 0:\n    case 1:\n      tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\n      break;\n    case 3:\n      tableDeltaHeight = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman DH selector\");\n  }\n\n  switch (dictionary.huffmanDWSelector) {\n    case 0:\n    case 1:\n      tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);\n      break;\n    case 3:\n      tableDeltaWidth = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman DW selector\");\n  }\n\n  let tableBitmapSize, tableAggregateInstances;\n  if (dictionary.bitmapSizeSelector) {\n    tableBitmapSize = getCustomHuffmanTable(\n      customIndex,\n      referredTo,\n      customTables\n    );\n    customIndex++;\n  } else {\n    tableBitmapSize = getStandardTable(1);\n  }\n\n  if (dictionary.aggregationInstancesSelector) {\n    tableAggregateInstances = getCustomHuffmanTable(\n      customIndex,\n      referredTo,\n      customTables\n    );\n  } else {\n    tableAggregateInstances = getStandardTable(1);\n  }\n\n  return {\n    tableDeltaHeight,\n    tableDeltaWidth,\n    tableBitmapSize,\n    tableAggregateInstances,\n  };\n}\n\nfunction readUncompressedBitmap(reader, width, height) {\n  const bitmap = [];\n  for (let y = 0; y < height; y++) {\n    const row = new Uint8Array(width);\n    bitmap.push(row);\n    for (let x = 0; x < width; x++) {\n      row[x] = reader.readBit();\n    }\n    reader.byteAlign();\n  }\n  return bitmap;\n}\n\nfunction decodeMMRBitmap(input, width, height, endOfBlock) {\n  // MMR is the same compression algorithm as the PDF filter\n  // CCITTFaxDecode with /K -1.\n  const params = {\n    K: -1,\n    Columns: width,\n    Rows: height,\n    BlackIs1: true,\n    EndOfBlock: endOfBlock,\n  };\n  const decoder = new CCITTFaxDecoder(input, params);\n  const bitmap = [];\n  let currentByte,\n    eof = false;\n\n  for (let y = 0; y < height; y++) {\n    const row = new Uint8Array(width);\n    bitmap.push(row);\n    let shift = -1;\n    for (let x = 0; x < width; x++) {\n      if (shift < 0) {\n        currentByte = decoder.readNextChar();\n        if (currentByte === -1) {\n          // Set the rest of the bits to zero.\n          currentByte = 0;\n          eof = true;\n        }\n        shift = 7;\n      }\n      row[x] = (currentByte >> shift) & 1;\n      shift--;\n    }\n  }\n\n  if (endOfBlock && !eof) {\n    // Read until EOFB has been consumed.\n    const lookForEOFLimit = 5;\n    for (let i = 0; i < lookForEOFLimit; i++) {\n      if (decoder.readNextChar() === -1) {\n        break;\n      }\n    }\n  }\n\n  return bitmap;\n}\n\nclass Jbig2Image {\n  parseChunks(chunks) {\n    return parseJbig2Chunks(chunks);\n  }\n\n  parse(data) {\n    if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"IMAGE_DECODERS\")) {\n      throw new Error(\"Not implemented: Jbig2Image.parse\");\n    }\n    const { imgData, width, height } = parseJbig2(data);\n    this.width = width;\n    this.height = height;\n    return imgData;\n  }\n}\n\nexport { Jbig2Error, Jbig2Image };\n","/* Copyright 2012 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\nimport {\n  assert,\n  FeatureTest,\n  FormatError,\n  info,\n  MathClamp,\n  shadow,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\n\n/**\n * Resizes an RGB image with 3 components.\n * @param {TypedArray} src - The source buffer.\n * @param {TypedArray} dest - The destination buffer.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @param {number} alpha01 - Size reserved for the alpha channel.\n */\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n  const COMPONENTS = 3;\n  alpha01 = alpha01 !== 1 ? 0 : alpha01;\n  const xRatio = w1 / w2;\n  const yRatio = h1 / h2;\n  let newIndex = 0,\n    oldIndex;\n  const xScaled = new Uint16Array(w2);\n  const w1Scanline = w1 * COMPONENTS;\n\n  for (let i = 0; i < w2; i++) {\n    xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n  }\n  for (let i = 0; i < h2; i++) {\n    const py = Math.floor(i * yRatio) * w1Scanline;\n    for (let j = 0; j < w2; j++) {\n      oldIndex = py + xScaled[j];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      newIndex += alpha01;\n    }\n  }\n}\n\nfunction resizeRgbaImage(src, dest, w1, h1, w2, h2, alpha01) {\n  const xRatio = w1 / w2;\n  const yRatio = h1 / h2;\n  let newIndex = 0;\n  const xScaled = new Uint16Array(w2);\n\n  if (alpha01 === 1) {\n    for (let i = 0; i < w2; i++) {\n      xScaled[i] = Math.floor(i * xRatio);\n    }\n    const src32 = new Uint32Array(src.buffer);\n    const dest32 = new Uint32Array(dest.buffer);\n    const rgbMask = FeatureTest.isLittleEndian ? 0x00ffffff : 0xffffff00;\n    for (let i = 0; i < h2; i++) {\n      const buf = src32.subarray(Math.floor(i * yRatio) * w1);\n      for (let j = 0; j < w2; j++) {\n        dest32[newIndex++] |= buf[xScaled[j]] & rgbMask;\n      }\n    }\n  } else {\n    const COMPONENTS = 4;\n    const w1Scanline = w1 * COMPONENTS;\n    for (let i = 0; i < w2; i++) {\n      xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n    }\n    for (let i = 0; i < h2; i++) {\n      const buf = src.subarray(Math.floor(i * yRatio) * w1Scanline);\n      for (let j = 0; j < w2; j++) {\n        const oldIndex = xScaled[j];\n        dest[newIndex++] = buf[oldIndex];\n        dest[newIndex++] = buf[oldIndex + 1];\n        dest[newIndex++] = buf[oldIndex + 2];\n      }\n    }\n  }\n}\n\nfunction copyRgbaImage(src, dest, alpha01) {\n  if (alpha01 === 1) {\n    const src32 = new Uint32Array(src.buffer);\n    const dest32 = new Uint32Array(dest.buffer);\n    const rgbMask = FeatureTest.isLittleEndian ? 0x00ffffff : 0xffffff00;\n    for (let i = 0, ii = src32.length; i < ii; i++) {\n      dest32[i] |= src32[i] & rgbMask;\n    }\n  } else {\n    let j = 0;\n    for (let i = 0, ii = src.length; i < ii; i += 4) {\n      dest[j++] = src[i];\n      dest[j++] = src[i + 1];\n      dest[j++] = src[i + 2];\n    }\n  }\n}\n\nclass ColorSpace {\n  constructor(name, numComps) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === ColorSpace\n    ) {\n      unreachable(\"Cannot initialize ColorSpace.\");\n    }\n    this.name = name;\n    this.numComps = numComps;\n  }\n\n  /**\n   * Converts the color value to the RGB color. The color components are\n   * located in the src array starting from the srcOffset. Returns the array\n   * of the rgb components, each value ranging from [0,255].\n   */\n  getRgb(src, srcOffset) {\n    const rgb = new Uint8ClampedArray(3);\n    this.getRgbItem(src, srcOffset, rgb, 0);\n    return rgb;\n  }\n\n  /**\n   * Converts the color value to the RGB color, similar to the getRgb method.\n   * The result placed into the dest array starting from the destOffset.\n   */\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    unreachable(\"Should not call ColorSpace.getRgbItem\");\n  }\n\n  /**\n   * Converts the specified number of the color values to the RGB colors.\n   * The colors are located in the src array starting from the srcOffset.\n   * The result is placed into the dest array starting from the destOffset.\n   * The src array items shall be in [0,2^bits) range, the dest array items\n   * will be in [0,255] range. alpha01 indicates how many alpha components\n   * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA\n   * array).\n   */\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    unreachable(\"Should not call ColorSpace.getRgbBuffer\");\n  }\n\n  /**\n   * Determines the number of bytes required to store the result of the\n   * conversion done by the getRgbBuffer method. As in getRgbBuffer,\n   * |alpha01| is either 0 (RGB output) or 1 (RGBA output).\n   */\n  getOutputLength(inputLength, alpha01) {\n    unreachable(\"Should not call ColorSpace.getOutputLength\");\n  }\n\n  /**\n   * Returns true if source data will be equal the result/output data.\n   */\n  isPassthrough(bits) {\n    return false;\n  }\n\n  /**\n   * Refer to the static `ColorSpace.isDefaultDecode` method below.\n   */\n  isDefaultDecode(decodeMap, bpc) {\n    return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n  }\n\n  /**\n   * Fills in the RGB colors in the destination buffer.  alpha01 indicates\n   * how many alpha components there are in the dest array; it will be either\n   * 0 (RGB array) or 1 (RGBA array).\n   */\n  fillRgb(\n    dest,\n    originalWidth,\n    originalHeight,\n    width,\n    height,\n    actualHeight,\n    bpc,\n    comps,\n    alpha01\n  ) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'ColorSpace.fillRgb: Unsupported \"dest\" type.'\n      );\n    }\n    const count = originalWidth * originalHeight;\n    let rgbBuf = null;\n    const numComponentColors = 1 << bpc;\n    const needsResizing = originalHeight !== height || originalWidth !== width;\n\n    if (this.isPassthrough(bpc)) {\n      rgbBuf = comps;\n    } else if (\n      this.numComps === 1 &&\n      count > numComponentColors &&\n      this.name !== \"DeviceGray\" &&\n      this.name !== \"DeviceRGB\"\n    ) {\n      // Optimization: create a color map when there is just one component and\n      // we are converting more colors than the size of the color map. We\n      // don't build the map if the colorspace is gray or rgb since those\n      // methods are faster than building a map. This mainly offers big speed\n      // ups for indexed and alternate colorspaces.\n      //\n      // TODO it may be worth while to cache the color map. While running\n      // testing I never hit a cache so I will leave that out for now (perhaps\n      // we are reparsing colorspaces too much?).\n      const allColors =\n        bpc <= 8\n          ? new Uint8Array(numComponentColors)\n          : new Uint16Array(numComponentColors);\n      for (let i = 0; i < numComponentColors; i++) {\n        allColors[i] = i;\n      }\n      const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n      this.getRgbBuffer(\n        allColors,\n        0,\n        numComponentColors,\n        colorMap,\n        0,\n        bpc,\n        /* alpha01 = */ 0\n      );\n\n      if (!needsResizing) {\n        // Fill in the RGB values directly into |dest|.\n        let destPos = 0;\n        for (let i = 0; i < count; ++i) {\n          const key = comps[i] * 3;\n          dest[destPos++] = colorMap[key];\n          dest[destPos++] = colorMap[key + 1];\n          dest[destPos++] = colorMap[key + 2];\n          destPos += alpha01;\n        }\n      } else {\n        rgbBuf = new Uint8Array(count * 3);\n        let rgbPos = 0;\n        for (let i = 0; i < count; ++i) {\n          const key = comps[i] * 3;\n          rgbBuf[rgbPos++] = colorMap[key];\n          rgbBuf[rgbPos++] = colorMap[key + 1];\n          rgbBuf[rgbPos++] = colorMap[key + 2];\n        }\n      }\n    } else if (!needsResizing) {\n      // Fill in the RGB values directly into |dest|.\n      this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01);\n    } else {\n      rgbBuf = new Uint8ClampedArray(count * 3);\n      this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, /* alpha01 = */ 0);\n    }\n\n    if (rgbBuf) {\n      if (needsResizing) {\n        resizeRgbImage(\n          rgbBuf,\n          dest,\n          originalWidth,\n          originalHeight,\n          width,\n          height,\n          alpha01\n        );\n      } else {\n        let destPos = 0,\n          rgbPos = 0;\n        for (let i = 0, ii = width * actualHeight; i < ii; i++) {\n          dest[destPos++] = rgbBuf[rgbPos++];\n          dest[destPos++] = rgbBuf[rgbPos++];\n          dest[destPos++] = rgbBuf[rgbPos++];\n          destPos += alpha01;\n        }\n      }\n    }\n  }\n\n  /**\n   * True if the colorspace has components in the default range of [0, 1].\n   * This should be true for all colorspaces except for lab color spaces\n   * which are [0,100], [-128, 127], [-128, 127].\n   */\n  get usesZeroToOneRange() {\n    return shadow(this, \"usesZeroToOneRange\", true);\n  }\n\n  /**\n   * Checks if a decode map matches the default decode map for a color space.\n   * This handles the general decode maps where there are two values per\n   * component, e.g. [0, 1, 0, 1, 0, 1] for a RGB color.\n   * This does not handle Lab, Indexed, or Pattern decode maps since they are\n   * slightly different.\n   * @param {Array} decode - Decode map (usually from an image).\n   * @param {number} numComps - Number of components the color space has.\n   */\n  static isDefaultDecode(decode, numComps) {\n    if (!Array.isArray(decode)) {\n      return true;\n    }\n    if (numComps * 2 !== decode.length) {\n      warn(\"The decode map is not the correct length\");\n      return true;\n    }\n    for (let i = 0, ii = decode.length; i < ii; i += 2) {\n      if (decode[i] !== 0 || decode[i + 1] !== 1) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n\n/**\n * Alternate color space handles both Separation and DeviceN color spaces.  A\n * Separation color space is actually just a DeviceN with one color component.\n * Both color spaces use a tinting function to convert colors to a base color\n * space.\n *\n * The default color is `new Float32Array(new Array(numComps).fill(1))`.\n */\nclass AlternateCS extends ColorSpace {\n  constructor(numComps, base, tintFn) {\n    super(\"Alternate\", numComps);\n    this.base = base;\n    this.tintFn = tintFn;\n    this.tmpBuf = new Float32Array(base.numComps);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'AlternateCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const tmpBuf = this.tmpBuf;\n    this.tintFn(src, srcOffset, tmpBuf, 0);\n    this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'AlternateCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const tintFn = this.tintFn;\n    const base = this.base;\n    const scale = 1 / ((1 << bits) - 1);\n    const baseNumComps = base.numComps;\n    const usesZeroToOneRange = base.usesZeroToOneRange;\n    const isPassthrough =\n      (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n    let pos = isPassthrough ? destOffset : 0;\n    const baseBuf = isPassthrough\n      ? dest\n      : new Uint8ClampedArray(baseNumComps * count);\n    const numComps = this.numComps;\n\n    const scaled = new Float32Array(numComps);\n    const tinted = new Float32Array(baseNumComps);\n    let i, j;\n\n    for (i = 0; i < count; i++) {\n      for (j = 0; j < numComps; j++) {\n        scaled[j] = src[srcOffset++] * scale;\n      }\n      tintFn(scaled, 0, tinted, 0);\n      if (usesZeroToOneRange) {\n        for (j = 0; j < baseNumComps; j++) {\n          baseBuf[pos++] = tinted[j] * 255;\n        }\n      } else {\n        base.getRgbItem(tinted, 0, baseBuf, pos);\n        pos += baseNumComps;\n      }\n    }\n\n    if (!isPassthrough) {\n      base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return this.base.getOutputLength(\n      (inputLength * this.base.numComps) / this.numComps,\n      alpha01\n    );\n  }\n}\n\nclass PatternCS extends ColorSpace {\n  constructor(baseCS) {\n    super(\"Pattern\", null);\n    this.base = baseCS;\n  }\n\n  isDefaultDecode(decodeMap, bpc) {\n    unreachable(\"Should not call PatternCS.isDefaultDecode\");\n  }\n}\n\n/**\n * The default color is `new Uint8Array([0])`.\n */\nclass IndexedCS extends ColorSpace {\n  constructor(base, highVal, lookup) {\n    super(\"Indexed\", 1);\n    this.base = base;\n    this.highVal = highVal;\n\n    const length = base.numComps * (highVal + 1);\n    this.lookup = new Uint8Array(length);\n\n    if (lookup instanceof BaseStream) {\n      const bytes = lookup.getBytes(length);\n      this.lookup.set(bytes);\n    } else if (typeof lookup === \"string\") {\n      for (let i = 0; i < length; ++i) {\n        this.lookup[i] = lookup.charCodeAt(i) & 0xff;\n      }\n    } else {\n      throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\n    }\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'IndexedCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const { base, highVal, lookup } = this;\n    const start =\n      MathClamp(Math.round(src[srcOffset]), 0, highVal) * base.numComps;\n    base.getRgbBuffer(lookup, start, 1, dest, destOffset, 8, 0);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'IndexedCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const { base, highVal, lookup } = this;\n    const { numComps } = base;\n    const outputDelta = base.getOutputLength(numComps, alpha01);\n\n    for (let i = 0; i < count; ++i) {\n      const lookupPos =\n        MathClamp(Math.round(src[srcOffset++]), 0, highVal) * numComps;\n      base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n      destOffset += outputDelta;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n  }\n\n  isDefaultDecode(decodeMap, bpc) {\n    if (!Array.isArray(decodeMap)) {\n      return true;\n    }\n    if (decodeMap.length !== 2) {\n      warn(\"Decode map length is not correct\");\n      return true;\n    }\n    if (!Number.isInteger(bpc) || bpc < 1) {\n      warn(\"Bits per component is not correct\");\n      return true;\n    }\n    return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1;\n  }\n}\n\n/**\n * The default color is `new Float32Array([0])`.\n */\nclass DeviceGrayCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceGray\", 1);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceGrayCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const c = src[srcOffset] * 255;\n    dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const scale = 255 / ((1 << bits) - 1);\n    let j = srcOffset,\n      q = destOffset;\n    for (let i = 0; i < count; ++i) {\n      const c = scale * src[j++];\n      dest[q++] = c;\n      dest[q++] = c;\n      dest[q++] = c;\n      q += alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return inputLength * (3 + alpha01);\n  }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nclass DeviceRgbCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceRGB\", 3);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceRgbCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    dest[destOffset] = src[srcOffset] * 255;\n    dest[destOffset + 1] = src[srcOffset + 1] * 255;\n    dest[destOffset + 2] = src[srcOffset + 2] * 255;\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceRgbCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    if (bits === 8 && alpha01 === 0) {\n      dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n      return;\n    }\n    const scale = 255 / ((1 << bits) - 1);\n    let j = srcOffset,\n      q = destOffset;\n    for (let i = 0; i < count; ++i) {\n      dest[q++] = scale * src[j++];\n      dest[q++] = scale * src[j++];\n      dest[q++] = scale * src[j++];\n      q += alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return ((inputLength * (3 + alpha01)) / 3) | 0;\n  }\n\n  isPassthrough(bits) {\n    return bits === 8;\n  }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0, 1])`.\n */\nclass DeviceRgbaCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceRGBA\", 4);\n  }\n\n  getOutputLength(inputLength, _alpha01) {\n    return inputLength * 4;\n  }\n\n  isPassthrough(bits) {\n    return bits === 8;\n  }\n\n  fillRgb(\n    dest,\n    originalWidth,\n    originalHeight,\n    width,\n    height,\n    actualHeight,\n    bpc,\n    comps,\n    alpha01\n  ) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceRgbaCS.fillRgb: Unsupported \"dest\" type.'\n      );\n    }\n    if (originalHeight !== height || originalWidth !== width) {\n      resizeRgbaImage(\n        comps,\n        dest,\n        originalWidth,\n        originalHeight,\n        width,\n        height,\n        alpha01\n      );\n    } else {\n      copyRgbaImage(comps, dest, alpha01);\n    }\n  }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0, 1])`.\n */\nclass DeviceCmykCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceCMYK\", 4);\n  }\n\n  // The coefficients below was found using numerical analysis: the method of\n  // steepest descent for the sum((f_i - color_value_i)^2) for r/g/b colors,\n  // where color_value is the tabular value from the table of sampled RGB colors\n  // from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding\n  // CMYK color conversion using the estimation below:\n  //   f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255\n  #toRgb(src, srcOffset, srcScale, dest, destOffset) {\n    const c = src[srcOffset] * srcScale;\n    const m = src[srcOffset + 1] * srcScale;\n    const y = src[srcOffset + 2] * srcScale;\n    const k = src[srcOffset + 3] * srcScale;\n\n    dest[destOffset] =\n      255 +\n      c *\n        (-4.387332384609988 * c +\n          54.48615194189176 * m +\n          18.82290502165302 * y +\n          212.25662451639585 * k +\n          -285.2331026137004) +\n      m *\n        (1.7149763477362134 * m -\n          5.6096736904047315 * y +\n          -17.873870861415444 * k -\n          5.497006427196366) +\n      y *\n        (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) +\n      k * (-21.86122147463605 * k - 189.48180835922747);\n\n    dest[destOffset + 1] =\n      255 +\n      c *\n        (8.841041422036149 * c +\n          60.118027045597366 * m +\n          6.871425592049007 * y +\n          31.159100130055922 * k +\n          -79.2970844816548) +\n      m *\n        (-15.310361306967817 * m +\n          17.575251261109482 * y +\n          131.35250912493976 * k -\n          190.9453302588951) +\n      y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) +\n      k * (-20.737325471181034 * k - 187.80453709719578);\n\n    dest[destOffset + 2] =\n      255 +\n      c *\n        (0.8842522430003296 * c +\n          8.078677503112928 * m +\n          30.89978309703729 * y -\n          0.23883238689178934 * k +\n          -14.183576799673286) +\n      m *\n        (10.49593273432072 * m +\n          63.02378494754052 * y +\n          50.606957656360734 * k -\n          112.23884253719248) +\n      y *\n        (0.03296041114873217 * y +\n          115.60384449646641 * k +\n          -193.58209356861505) +\n      k * (-22.33816807309886 * k - 180.12613974708367);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceCmykCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    this.#toRgb(src, srcOffset, 1, dest, destOffset);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceCmykCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const scale = 1 / ((1 << bits) - 1);\n    for (let i = 0; i < count; i++) {\n      this.#toRgb(src, srcOffset, scale, dest, destOffset);\n      srcOffset += 4;\n      destOffset += 3 + alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return ((inputLength / 4) * (3 + alpha01)) | 0;\n  }\n}\n\n/**\n * CalGrayCS: Based on \"PDF Reference, Sixth Ed\", p.245\n *\n * The default color is `new Float32Array([0])`.\n */\nclass CalGrayCS extends ColorSpace {\n  constructor(whitePoint, blackPoint, gamma) {\n    super(\"CalGray\", 1);\n\n    if (!whitePoint) {\n      throw new FormatError(\n        \"WhitePoint missing - required for color space CalGray\"\n      );\n    }\n    // Translate arguments to spec variables.\n    [this.XW, this.YW, this.ZW] = whitePoint;\n    [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0];\n    this.G = gamma || 1;\n\n    // Validate variables as per spec.\n    if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n      throw new FormatError(\n        `Invalid WhitePoint components for ${this.name}, no fallback available`\n      );\n    }\n\n    if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n      info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n      this.XB = this.YB = this.ZB = 0;\n    }\n\n    if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n      warn(\n        `${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` +\n          `ZB: ${this.ZB}, only default values are supported.`\n      );\n    }\n\n    if (this.G < 1) {\n      info(\n        `Invalid Gamma: ${this.G} for ${this.name}, falling back to default.`\n      );\n      this.G = 1;\n    }\n  }\n\n  #toRgb(src, srcOffset, dest, destOffset, scale) {\n    // A represents a gray component of a calibrated gray space.\n    // A <---> AG in the spec\n    const A = src[srcOffset] * scale;\n    const AG = A ** this.G;\n\n    // Computes L as per spec. ( = this.YW * AG )\n    // Except if other than default BlackPoint values are used.\n    const L = this.YW * AG;\n    // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4.\n    // Convert values to rgb range [0, 255].\n    const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0);\n    dest[destOffset] = val;\n    dest[destOffset + 1] = val;\n    dest[destOffset + 2] = val;\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'CalGrayCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    this.#toRgb(src, srcOffset, dest, destOffset, 1);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'CalGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const scale = 1 / ((1 << bits) - 1);\n\n    for (let i = 0; i < count; ++i) {\n      this.#toRgb(src, srcOffset, dest, destOffset, scale);\n      srcOffset += 1;\n      destOffset += 3 + alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return inputLength * (3 + alpha01);\n  }\n}\n\n/**\n * CalRGBCS: Based on \"PDF Reference, Sixth Ed\", p.247\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nclass CalRGBCS extends ColorSpace {\n  // See http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html for these\n  // matrices.\n  // prettier-ignore\n  static #BRADFORD_SCALE_MATRIX = new Float32Array([\n    0.8951, 0.2664, -0.1614,\n    -0.7502, 1.7135, 0.0367,\n    0.0389, -0.0685, 1.0296]);\n\n  // prettier-ignore\n  static #BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([\n    0.9869929, -0.1470543, 0.1599627,\n    0.4323053, 0.5183603, 0.0492912,\n    -0.0085287, 0.0400428, 0.9684867]);\n\n  // See http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html.\n  // prettier-ignore\n  static #SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([\n    3.2404542, -1.5371385, -0.4985314,\n    -0.9692660, 1.8760108, 0.0415560,\n    0.0556434, -0.2040259, 1.0572252]);\n\n  static #FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n\n  static #tempNormalizeMatrix = new Float32Array(3);\n\n  static #tempConvertMatrix1 = new Float32Array(3);\n\n  static #tempConvertMatrix2 = new Float32Array(3);\n\n  static #DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;\n\n  constructor(whitePoint, blackPoint, gamma, matrix) {\n    super(\"CalRGB\", 3);\n\n    if (!whitePoint) {\n      throw new FormatError(\n        \"WhitePoint missing - required for color space CalRGB\"\n      );\n    }\n    // Translate arguments to spec variables.\n    const [XW, YW, ZW] = (this.whitePoint = whitePoint);\n    const [XB, YB, ZB] = (this.blackPoint = blackPoint || new Float32Array(3));\n\n    [this.GR, this.GG, this.GB] = gamma || new Float32Array([1, 1, 1]);\n    [\n      this.MXA,\n      this.MYA,\n      this.MZA,\n      this.MXB,\n      this.MYB,\n      this.MZB,\n      this.MXC,\n      this.MYC,\n      this.MZC,\n    ] = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\n    // Validate variables as per spec.\n    if (XW < 0 || ZW < 0 || YW !== 1) {\n      throw new FormatError(\n        `Invalid WhitePoint components for ${this.name}, no fallback available`\n      );\n    }\n\n    if (XB < 0 || YB < 0 || ZB < 0) {\n      info(\n        `Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` +\n          \"falling back to default.\"\n      );\n      this.blackPoint = new Float32Array(3);\n    }\n\n    if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n      info(\n        `Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` +\n          `${this.name}, falling back to default.`\n      );\n      this.GR = this.GG = this.GB = 1;\n    }\n  }\n\n  #matrixProduct(a, b, result) {\n    result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n    result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n    result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n  }\n\n  #toFlat(sourceWhitePoint, LMS, result) {\n    result[0] = (LMS[0] * 1) / sourceWhitePoint[0];\n    result[1] = (LMS[1] * 1) / sourceWhitePoint[1];\n    result[2] = (LMS[2] * 1) / sourceWhitePoint[2];\n  }\n\n  #toD65(sourceWhitePoint, LMS, result) {\n    const D65X = 0.95047;\n    const D65Y = 1;\n    const D65Z = 1.08883;\n\n    result[0] = (LMS[0] * D65X) / sourceWhitePoint[0];\n    result[1] = (LMS[1] * D65Y) / sourceWhitePoint[1];\n    result[2] = (LMS[2] * D65Z) / sourceWhitePoint[2];\n  }\n\n  #sRGBTransferFunction(color) {\n    // See http://en.wikipedia.org/wiki/SRGB.\n    if (color <= 0.0031308) {\n      return MathClamp(12.92 * color, 0, 1);\n    }\n    // Optimization:\n    // If color is close enough to 1, skip calling the following transform\n    // since calling Math.pow is expensive. If color is larger than\n    // the threshold, the final result is larger than 254.5 since\n    // ((1 + 0.055) * 0.99554525 ** (1 / 2.4) - 0.055) * 255 ===\n    // 254.50000003134699\n    if (color >= 0.99554525) {\n      return 1;\n    }\n    return MathClamp((1 + 0.055) * color ** (1 / 2.4) - 0.055, 0, 1);\n  }\n\n  #decodeL(L) {\n    if (L < 0) {\n      return -this.#decodeL(-L);\n    }\n    if (L > 8.0) {\n      return ((L + 16) / 116) ** 3;\n    }\n    return L * CalRGBCS.#DECODE_L_CONSTANT;\n  }\n\n  #compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n    // In case the blackPoint is already the default blackPoint then there is\n    // no need to do compensation.\n    if (\n      sourceBlackPoint[0] === 0 &&\n      sourceBlackPoint[1] === 0 &&\n      sourceBlackPoint[2] === 0\n    ) {\n      result[0] = XYZ_Flat[0];\n      result[1] = XYZ_Flat[1];\n      result[2] = XYZ_Flat[2];\n      return;\n    }\n\n    // For the blackPoint calculation details, please see\n    // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n    // AdobeBPC.pdf.\n    // The destination blackPoint is the default blackPoint [0, 0, 0].\n    const zeroDecodeL = this.#decodeL(0);\n\n    const X_DST = zeroDecodeL;\n    const X_SRC = this.#decodeL(sourceBlackPoint[0]);\n\n    const Y_DST = zeroDecodeL;\n    const Y_SRC = this.#decodeL(sourceBlackPoint[1]);\n\n    const Z_DST = zeroDecodeL;\n    const Z_SRC = this.#decodeL(sourceBlackPoint[2]);\n\n    const X_Scale = (1 - X_DST) / (1 - X_SRC);\n    const X_Offset = 1 - X_Scale;\n\n    const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n    const Y_Offset = 1 - Y_Scale;\n\n    const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n    const Z_Offset = 1 - Z_Scale;\n\n    result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n    result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n    result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n  }\n\n  #normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n    // In case the whitePoint is already flat then there is no need to do\n    // normalization.\n    if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n      result[0] = XYZ_In[0];\n      result[1] = XYZ_In[1];\n      result[2] = XYZ_In[2];\n      return;\n    }\n\n    const LMS = result;\n    this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n    const LMS_Flat = CalRGBCS.#tempNormalizeMatrix;\n    this.#toFlat(sourceWhitePoint, LMS, LMS_Flat);\n\n    this.#matrixProduct(\n      CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX,\n      LMS_Flat,\n      result\n    );\n  }\n\n  #normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n    const LMS = result;\n    this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n    const LMS_D65 = CalRGBCS.#tempNormalizeMatrix;\n    this.#toD65(sourceWhitePoint, LMS, LMS_D65);\n\n    this.#matrixProduct(\n      CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX,\n      LMS_D65,\n      result\n    );\n  }\n\n  #toRgb(src, srcOffset, dest, destOffset, scale) {\n    // A, B and C represent a red, green and blue components of a calibrated\n    // rgb space.\n    const A = MathClamp(src[srcOffset] * scale, 0, 1);\n    const B = MathClamp(src[srcOffset + 1] * scale, 0, 1);\n    const C = MathClamp(src[srcOffset + 2] * scale, 0, 1);\n\n    // A <---> AGR in the spec\n    // B <---> BGG in the spec\n    // C <---> CGB in the spec\n    const AGR = A === 1 ? 1 : A ** this.GR;\n    const BGG = B === 1 ? 1 : B ** this.GG;\n    const CGB = C === 1 ? 1 : C ** this.GB;\n\n    // Computes intermediate variables L, M, N as per spec.\n    // To decode X, Y, Z values map L, M, N directly to them.\n    const X = this.MXA * AGR + this.MXB * BGG + this.MXC * CGB;\n    const Y = this.MYA * AGR + this.MYB * BGG + this.MYC * CGB;\n    const Z = this.MZA * AGR + this.MZB * BGG + this.MZC * CGB;\n\n    // The following calculations are based on this document:\n    // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n    // AdobeBPC.pdf.\n    const XYZ = CalRGBCS.#tempConvertMatrix1;\n    XYZ[0] = X;\n    XYZ[1] = Y;\n    XYZ[2] = Z;\n    const XYZ_Flat = CalRGBCS.#tempConvertMatrix2;\n\n    this.#normalizeWhitePointToFlat(this.whitePoint, XYZ, XYZ_Flat);\n\n    const XYZ_Black = CalRGBCS.#tempConvertMatrix1;\n    this.#compensateBlackPoint(this.blackPoint, XYZ_Flat, XYZ_Black);\n\n    const XYZ_D65 = CalRGBCS.#tempConvertMatrix2;\n    this.#normalizeWhitePointToD65(\n      CalRGBCS.#FLAT_WHITEPOINT_MATRIX,\n      XYZ_Black,\n      XYZ_D65\n    );\n\n    const SRGB = CalRGBCS.#tempConvertMatrix1;\n    this.#matrixProduct(CalRGBCS.#SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n\n    // Convert the values to rgb range [0, 255].\n    dest[destOffset] = this.#sRGBTransferFunction(SRGB[0]) * 255;\n    dest[destOffset + 1] = this.#sRGBTransferFunction(SRGB[1]) * 255;\n    dest[destOffset + 2] = this.#sRGBTransferFunction(SRGB[2]) * 255;\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'CalRGBCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    this.#toRgb(src, srcOffset, dest, destOffset, 1);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'CalRGBCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const scale = 1 / ((1 << bits) - 1);\n\n    for (let i = 0; i < count; ++i) {\n      this.#toRgb(src, srcOffset, dest, destOffset, scale);\n      srcOffset += 3;\n      destOffset += 3 + alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return ((inputLength * (3 + alpha01)) / 3) | 0;\n  }\n}\n\n/**\n * LabCS: Based on \"PDF Reference, Sixth Ed\", p.250\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nclass LabCS extends ColorSpace {\n  constructor(whitePoint, blackPoint, range) {\n    super(\"Lab\", 3);\n\n    if (!whitePoint) {\n      throw new FormatError(\n        \"WhitePoint missing - required for color space Lab\"\n      );\n    }\n    // Translate args to spec variables\n    [this.XW, this.YW, this.ZW] = whitePoint;\n    [this.amin, this.amax, this.bmin, this.bmax] = range || [\n      -100, 100, -100, 100,\n    ];\n\n    // These are here just for completeness - the spec doesn't offer any\n    // formulas that use BlackPoint in Lab\n    [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0];\n\n    // Validate vars as per spec\n    if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n      throw new FormatError(\n        \"Invalid WhitePoint components, no fallback available\"\n      );\n    }\n\n    if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n      info(\"Invalid BlackPoint, falling back to default\");\n      this.XB = this.YB = this.ZB = 0;\n    }\n\n    if (this.amin > this.amax || this.bmin > this.bmax) {\n      info(\"Invalid Range, falling back to defaults\");\n      this.amin = -100;\n      this.amax = 100;\n      this.bmin = -100;\n      this.bmax = 100;\n    }\n  }\n\n  // Function g(x) from spec\n  #fn_g(x) {\n    return x >= 6 / 29 ? x ** 3 : (108 / 841) * (x - 4 / 29);\n  }\n\n  #decode(value, high1, low2, high2) {\n    return low2 + (value * (high2 - low2)) / high1;\n  }\n\n  // If decoding is needed maxVal should be 2^bits per component - 1.\n  #toRgb(src, srcOffset, maxVal, dest, destOffset) {\n    // XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax]\n    // not the usual [0, 1]. If a command like setFillColor is used the src\n    // values will already be within the correct range. However, if we are\n    // converting an image we have to map the values to the correct range given\n    // above.\n    // Ls,as,bs <---> L*,a*,b* in the spec\n    let Ls = src[srcOffset];\n    let as = src[srcOffset + 1];\n    let bs = src[srcOffset + 2];\n    if (maxVal !== false) {\n      Ls = this.#decode(Ls, maxVal, 0, 100);\n      as = this.#decode(as, maxVal, this.amin, this.amax);\n      bs = this.#decode(bs, maxVal, this.bmin, this.bmax);\n    }\n\n    // Adjust limits of 'as' and 'bs'\n    if (as > this.amax) {\n      as = this.amax;\n    } else if (as < this.amin) {\n      as = this.amin;\n    }\n    if (bs > this.bmax) {\n      bs = this.bmax;\n    } else if (bs < this.bmin) {\n      bs = this.bmin;\n    }\n\n    // Computes intermediate variables X,Y,Z as per spec\n    const M = (Ls + 16) / 116;\n    const L = M + as / 500;\n    const N = M - bs / 200;\n\n    const X = this.XW * this.#fn_g(L);\n    const Y = this.YW * this.#fn_g(M);\n    const Z = this.ZW * this.#fn_g(N);\n\n    let r, g, b;\n    // Using different conversions for D50 and D65 white points,\n    // per http://www.color.org/srgb.pdf\n    if (this.ZW < 1) {\n      // Assuming D50 (X=0.9642, Y=1.00, Z=0.8249)\n      r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n      g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n      b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n    } else {\n      // Assuming D65 (X=0.9505, Y=1.00, Z=1.0888)\n      r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n      g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n      b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n    }\n    // Convert the color values to the [0,255] range (clamping is automatic).\n    dest[destOffset] = Math.sqrt(r) * 255;\n    dest[destOffset + 1] = Math.sqrt(g) * 255;\n    dest[destOffset + 2] = Math.sqrt(b) * 255;\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'LabCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    this.#toRgb(src, srcOffset, false, dest, destOffset);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'LabCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const maxVal = (1 << bits) - 1;\n    for (let i = 0; i < count; i++) {\n      this.#toRgb(src, srcOffset, maxVal, dest, destOffset);\n      srcOffset += 3;\n      destOffset += 3 + alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return ((inputLength * (3 + alpha01)) / 3) | 0;\n  }\n\n  isDefaultDecode(decodeMap, bpc) {\n    // XXX: Decoding is handled with the lab conversion because of the strange\n    // ranges that are used.\n    return true;\n  }\n\n  get usesZeroToOneRange() {\n    return shadow(this, \"usesZeroToOneRange\", false);\n  }\n}\n\nexport {\n  AlternateCS,\n  CalGrayCS,\n  CalRGBCS,\n  ColorSpace,\n  DeviceCmykCS,\n  DeviceGrayCS,\n  DeviceRgbaCS,\n  DeviceRgbCS,\n  IndexedCS,\n  LabCS,\n  PatternCS,\n};\n","/* Copyright 2025 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\nclass QCMS {\n  static _module = null;\n\n  static _mustAddAlpha = false;\n\n  static _destBuffer = null;\n}\n\nfunction copy_result(ptr, len) {\n  // This function is called from the wasm module (it's an external\n  // \"C\" function). Its goal is to copy the result from the wasm memory\n  // to the destination buffer without any intermediate copies.\n  const { _module, _mustAddAlpha, _destBuffer } = QCMS;\n  const result = new Uint8Array(_module.memory.buffer, ptr, len);\n  if (result.length === _destBuffer.length) {\n    _destBuffer.set(result);\n    return;\n  }\n  if (_mustAddAlpha) {\n    for (let i = 0, j = 0, ii = result.length; i < ii; i += 3, j += 4) {\n      _destBuffer[j] = result[i];\n      _destBuffer[j + 1] = result[i + 1];\n      _destBuffer[j + 2] = result[i + 2];\n      _destBuffer[j + 3] = 255;\n    }\n  } else {\n    for (let i = 0, j = 0, ii = result.length; i < ii; i += 3, j += 4) {\n      _destBuffer[j] = result[i];\n      _destBuffer[j + 1] = result[i + 1];\n      _destBuffer[j + 2] = result[i + 2];\n    }\n  }\n}\n\nfunction copy_rgb(ptr) {\n  QCMS._destBuffer.set(new Uint8Array(QCMS._module.memory.buffer, ptr, 3));\n}\n\nexport { copy_result, copy_rgb, QCMS };\n","/* THIS FILE IS GENERATED - DO NOT EDIT */\nimport { copy_result, copy_rgb } from './qcms_utils.js';\n\nlet wasm;\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n    if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n        cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n    }\n    return cachedUint8ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n    ptr = ptr >>> 0;\n    return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nfunction passArray8ToWasm0(arg, malloc) {\n    const ptr = malloc(arg.length * 1, 1) >>> 0;\n    getUint8ArrayMemory0().set(arg, ptr / 1);\n    WASM_VECTOR_LEN = arg.length;\n    return ptr;\n}\n/**\n * # Safety\n *\n * This function is called directly from JavaScript.\n * @param {number} transformer\n * @param {Uint8Array} src\n */\nexport function qcms_convert_array(transformer, src) {\n    const ptr0 = passArray8ToWasm0(src, wasm.__wbindgen_malloc);\n    const len0 = WASM_VECTOR_LEN;\n    wasm.qcms_convert_array(transformer, ptr0, len0);\n}\n\n/**\n * # Safety\n *\n * This function is called directly from JavaScript.\n * @param {number} transformer\n * @param {number} src\n */\nexport function qcms_convert_one(transformer, src) {\n    wasm.qcms_convert_one(transformer, src);\n}\n\n/**\n * # Safety\n *\n * This function is called directly from JavaScript.\n * @param {number} transformer\n * @param {number} src1\n * @param {number} src2\n * @param {number} src3\n */\nexport function qcms_convert_three(transformer, src1, src2, src3) {\n    wasm.qcms_convert_three(transformer, src1, src2, src3);\n}\n\n/**\n * # Safety\n *\n * This function is called directly from JavaScript.\n * @param {number} transformer\n * @param {number} src1\n * @param {number} src2\n * @param {number} src3\n * @param {number} src4\n */\nexport function qcms_convert_four(transformer, src1, src2, src3, src4) {\n    wasm.qcms_convert_four(transformer, src1, src2, src3, src4);\n}\n\n/**\n * # Safety\n *\n * This function is called directly from JavaScript.\n * @param {Uint8Array} mem\n * @param {DataType} in_type\n * @param {Intent} intent\n * @returns {number}\n */\nexport function qcms_transformer_from_memory(mem, in_type, intent) {\n    const ptr0 = passArray8ToWasm0(mem, wasm.__wbindgen_malloc);\n    const len0 = WASM_VECTOR_LEN;\n    const ret = wasm.qcms_transformer_from_memory(ptr0, len0, in_type, intent);\n    return ret >>> 0;\n}\n\n/**\n * # Safety\n *\n * This function is called directly from JavaScript.\n * @param {number} transformer\n */\nexport function qcms_drop_transformer(transformer) {\n    wasm.qcms_drop_transformer(transformer);\n}\n\n/**\n * @enum {0 | 1 | 2 | 3 | 4 | 5}\n */\nexport const DataType = Object.freeze({\n    RGB8: 0, \"0\": \"RGB8\",\n    RGBA8: 1, \"1\": \"RGBA8\",\n    BGRA8: 2, \"2\": \"BGRA8\",\n    Gray8: 3, \"3\": \"Gray8\",\n    GrayA8: 4, \"4\": \"GrayA8\",\n    CMYK: 5, \"5\": \"CMYK\",\n});\n/**\n * @enum {0 | 1 | 2 | 3}\n */\nexport const Intent = Object.freeze({\n    Perceptual: 0, \"0\": \"Perceptual\",\n    RelativeColorimetric: 1, \"1\": \"RelativeColorimetric\",\n    Saturation: 2, \"2\": \"Saturation\",\n    AbsoluteColorimetric: 3, \"3\": \"AbsoluteColorimetric\",\n});\n\nasync function __wbg_load(module, imports) {\n    if (typeof Response === 'function' && module instanceof Response) {\n        if (typeof WebAssembly.instantiateStreaming === 'function') {\n            try {\n                return await WebAssembly.instantiateStreaming(module, imports);\n\n            } catch (e) {\n                if (module.headers.get('Content-Type') != 'application/wasm') {\n                    console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n                } else {\n                    throw e;\n                }\n            }\n        }\n\n        const bytes = await module.arrayBuffer();\n        return await WebAssembly.instantiate(bytes, imports);\n\n    } else {\n        const instance = await WebAssembly.instantiate(module, imports);\n\n        if (instance instanceof WebAssembly.Instance) {\n            return { instance, module };\n\n        } else {\n            return instance;\n        }\n    }\n}\n\nfunction __wbg_get_imports() {\n    const imports = {};\n    imports.wbg = {};\n    imports.wbg.__wbg_copyresult_b08ee7d273f295dd = function(arg0, arg1) {\n        copy_result(arg0 >>> 0, arg1 >>> 0);\n    };\n    imports.wbg.__wbg_copyrgb_d60ce17bb05d9b67 = function(arg0) {\n        copy_rgb(arg0 >>> 0);\n    };\n    imports.wbg.__wbindgen_init_externref_table = function() {\n        const table = wasm.__wbindgen_export_0;\n        const offset = table.grow(4);\n        table.set(0, undefined);\n        table.set(offset + 0, undefined);\n        table.set(offset + 1, null);\n        table.set(offset + 2, true);\n        table.set(offset + 3, false);\n        ;\n    };\n    imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n        throw new Error(getStringFromWasm0(arg0, arg1));\n    };\n\n    return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n\n}\n\nfunction __wbg_finalize_init(instance, module) {\n    wasm = instance.exports;\n    __wbg_init.__wbindgen_wasm_module = module;\n    cachedUint8ArrayMemory0 = null;\n\n\n    wasm.__wbindgen_start();\n    return wasm;\n}\n\nfunction initSync(module) {\n    if (wasm !== undefined) return wasm;\n\n\n    if (typeof module !== 'undefined') {\n        if (Object.getPrototypeOf(module) === Object.prototype) {\n            ({module} = module)\n        } else {\n            console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n        }\n    }\n\n    const imports = __wbg_get_imports();\n\n    __wbg_init_memory(imports);\n\n    if (!(module instanceof WebAssembly.Module)) {\n        module = new WebAssembly.Module(module);\n    }\n\n    const instance = new WebAssembly.Instance(module, imports);\n\n    return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n    if (wasm !== undefined) return wasm;\n\n\n    if (typeof module_or_path !== 'undefined') {\n        if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n            ({module_or_path} = module_or_path)\n        } else {\n            console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n        }\n    }\n\n    if (typeof module_or_path === 'undefined') {\n        module_or_path = new URL('qcms_bg.wasm', import.meta.url);\n    }\n    const imports = __wbg_get_imports();\n\n    if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n        module_or_path = fetch(module_or_path);\n    }\n\n    __wbg_init_memory(imports);\n\n    const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n    return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","/* Copyright 2025 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\nimport {\n  DataType,\n  initSync,\n  Intent,\n  qcms_convert_array,\n  qcms_convert_four,\n  qcms_convert_one,\n  qcms_convert_three,\n  qcms_drop_transformer,\n  qcms_transformer_from_memory,\n} from \"../../external/qcms/qcms.js\";\nimport { shadow, warn } from \"../shared/util.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { QCMS } from \"../../external/qcms/qcms_utils.js\";\n\nfunction fetchSync(url) {\n  // Parsing and using color spaces is still synchronous,\n  // so we must load the wasm module synchronously.\n  // TODO: Make the color space stuff asynchronous and use fetch.\n  const xhr = new XMLHttpRequest();\n  xhr.open(\"GET\", url, false);\n  xhr.responseType = \"arraybuffer\";\n  xhr.send(null);\n  return xhr.response;\n}\n\nclass IccColorSpace extends ColorSpace {\n  #transformer;\n\n  #convertPixel;\n\n  static #useWasm = true;\n\n  static #wasmUrl = null;\n\n  static #finalizer = new FinalizationRegistry(transformer => {\n    qcms_drop_transformer(transformer);\n  });\n\n  constructor(iccProfile, name, numComps) {\n    if (!IccColorSpace.isUsable) {\n      throw new Error(\"No ICC color space support\");\n    }\n\n    super(name, numComps);\n\n    let inType;\n    switch (numComps) {\n      case 1:\n        inType = DataType.Gray8;\n        this.#convertPixel = (src, srcOffset) =>\n          qcms_convert_one(this.#transformer, src[srcOffset] * 255);\n        break;\n      case 3:\n        inType = DataType.RGB8;\n        this.#convertPixel = (src, srcOffset) =>\n          qcms_convert_three(\n            this.#transformer,\n            src[srcOffset] * 255,\n            src[srcOffset + 1] * 255,\n            src[srcOffset + 2] * 255\n          );\n        break;\n      case 4:\n        inType = DataType.CMYK;\n        this.#convertPixel = (src, srcOffset) =>\n          qcms_convert_four(\n            this.#transformer,\n            src[srcOffset] * 255,\n            src[srcOffset + 1] * 255,\n            src[srcOffset + 2] * 255,\n            src[srcOffset + 3] * 255\n          );\n        break;\n      default:\n        throw new Error(`Unsupported number of components: ${numComps}`);\n    }\n    this.#transformer = qcms_transformer_from_memory(\n      iccProfile,\n      inType,\n      Intent.Perceptual\n    );\n    if (!this.#transformer) {\n      throw new Error(\"Failed to create ICC color space\");\n    }\n    IccColorSpace.#finalizer.register(this, this.#transformer);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    QCMS._destBuffer = dest.subarray(destOffset, destOffset + 3);\n    this.#convertPixel(src, srcOffset);\n    QCMS._destBuffer = null;\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    src = src.subarray(srcOffset, srcOffset + count * this.numComps);\n    if (bits !== 8) {\n      const scale = 255 / ((1 << bits) - 1);\n      for (let i = 0, ii = src.length; i < ii; i++) {\n        src[i] *= scale;\n      }\n    }\n    QCMS._mustAddAlpha = alpha01 && dest.buffer === src.buffer;\n    QCMS._destBuffer = dest.subarray(\n      destOffset,\n      destOffset + count * (3 + alpha01)\n    );\n    qcms_convert_array(this.#transformer, src);\n    QCMS._mustAddAlpha = false;\n    QCMS._destBuffer = null;\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return ((inputLength / this.numComps) * (3 + alpha01)) | 0;\n  }\n\n  static setOptions({ useWasm, useWorkerFetch, wasmUrl }) {\n    if (!useWorkerFetch) {\n      this.#useWasm = false;\n      return;\n    }\n    this.#useWasm = useWasm;\n    this.#wasmUrl = wasmUrl;\n  }\n\n  static get isUsable() {\n    let isUsable = false;\n    if (this.#useWasm) {\n      if (this.#wasmUrl) {\n        try {\n          this._module = QCMS._module = initSync({\n            module: fetchSync(`${this.#wasmUrl}qcms_bg.wasm`),\n          });\n          isUsable = !!this._module;\n        } catch (e) {\n          warn(`ICCBased color space: \"${e}\".`);\n        }\n      } else {\n        warn(\"No ICC color space support due to missing `wasmUrl` API option\");\n      }\n    }\n\n    return shadow(this, \"isUsable\", isUsable);\n  }\n}\n\nclass CmykICCBasedCS extends IccColorSpace {\n  static #iccUrl;\n\n  constructor() {\n    const iccProfile = new Uint8Array(\n      fetchSync(`${CmykICCBasedCS.#iccUrl}CGATS001Compat-v2-micro.icc`)\n    );\n    super(iccProfile, \"DeviceCMYK\", 4);\n  }\n\n  static setOptions({ iccUrl }) {\n    this.#iccUrl = iccUrl;\n  }\n\n  static get isUsable() {\n    let isUsable = false;\n    if (IccColorSpace.isUsable) {\n      if (this.#iccUrl) {\n        isUsable = true;\n      } else {\n        warn(\"No CMYK ICC profile support due to missing `iccUrl` API option\");\n      }\n    }\n\n    return shadow(this, \"isUsable\", isUsable);\n  }\n}\n\nexport { CmykICCBasedCS, IccColorSpace };\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\nimport {\n  AlternateCS,\n  CalGrayCS,\n  CalRGBCS,\n  DeviceCmykCS,\n  DeviceGrayCS,\n  DeviceRgbaCS,\n  DeviceRgbCS,\n  IndexedCS,\n  LabCS,\n  PatternCS,\n} from \"./colorspace.js\";\nimport { CmykICCBasedCS, IccColorSpace } from \"./icc_colorspace.js\";\nimport { Dict, Name, Ref } from \"./primitives.js\";\nimport { MathClamp, shadow, unreachable, warn } from \"../shared/util.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\nclass ColorSpaceUtils {\n  static parse({\n    cs,\n    xref,\n    resources = null,\n    pdfFunctionFactory,\n    globalColorSpaceCache,\n    localColorSpaceCache,\n    asyncIfNotCached = false,\n  }) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      (!globalColorSpaceCache || !localColorSpaceCache)\n    ) {\n      unreachable(\n        'ColorSpaceUtils.parse - expected \"globalColorSpaceCache\"/\"localColorSpaceCache\" argument.'\n      );\n    }\n    const options = {\n      xref,\n      resources,\n      pdfFunctionFactory,\n      globalColorSpaceCache,\n      localColorSpaceCache,\n    };\n    let csName, csRef, parsedCS;\n\n    // Check if the ColorSpace is cached first, to avoid re-parsing it.\n    if (cs instanceof Ref) {\n      csRef = cs;\n\n      const cachedCS =\n        globalColorSpaceCache.getByRef(csRef) ||\n        localColorSpaceCache.getByRef(csRef);\n      if (cachedCS) {\n        return cachedCS;\n      }\n      cs = xref.fetch(cs);\n    }\n    if (cs instanceof Name) {\n      csName = cs.name;\n\n      const cachedCS = localColorSpaceCache.getByName(csName);\n      if (cachedCS) {\n        return cachedCS;\n      }\n    }\n\n    try {\n      parsedCS = this.#parse(cs, options);\n    } catch (ex) {\n      if (asyncIfNotCached && !(ex instanceof MissingDataException)) {\n        return Promise.reject(ex);\n      }\n      throw ex;\n    }\n\n    // Attempt to cache the parsed ColorSpace, by name and/or reference.\n    if (csName || csRef) {\n      localColorSpaceCache.set(csName, csRef, parsedCS);\n\n      if (csRef) {\n        globalColorSpaceCache.set(/* name = */ null, csRef, parsedCS);\n      }\n    }\n    return asyncIfNotCached ? Promise.resolve(parsedCS) : parsedCS;\n  }\n\n  /**\n   * NOTE: This method should *only* be invoked from `this.#parse`,\n   *       when parsing \"sub\" ColorSpaces.\n   */\n  static #subParse(cs, options) {\n    const { globalColorSpaceCache } = options;\n    let csRef;\n\n    // Check if the ColorSpace is cached first, to avoid re-parsing it.\n    if (cs instanceof Ref) {\n      csRef = cs;\n\n      const cachedCS = globalColorSpaceCache.getByRef(csRef);\n      if (cachedCS) {\n        return cachedCS;\n      }\n    }\n    const parsedCS = this.#parse(cs, options);\n\n    // Only cache the parsed ColorSpace globally, by reference.\n    if (csRef) {\n      globalColorSpaceCache.set(/* name = */ null, csRef, parsedCS);\n    }\n    return parsedCS;\n  }\n\n  static #parse(cs, options) {\n    const { xref, resources, pdfFunctionFactory, globalColorSpaceCache } =\n      options;\n\n    cs = xref.fetchIfRef(cs);\n    if (cs instanceof Name) {\n      switch (cs.name) {\n        case \"G\":\n        case \"DeviceGray\":\n          return this.gray;\n        case \"RGB\":\n        case \"DeviceRGB\":\n          return this.rgb;\n        case \"DeviceRGBA\":\n          return this.rgba;\n        case \"CMYK\":\n        case \"DeviceCMYK\":\n          return this.cmyk;\n        case \"Pattern\":\n          return new PatternCS(/* baseCS = */ null);\n        default:\n          if (resources instanceof Dict) {\n            const colorSpaces = resources.get(\"ColorSpace\");\n            if (colorSpaces instanceof Dict) {\n              const resourcesCS = colorSpaces.get(cs.name);\n              if (resourcesCS) {\n                if (resourcesCS instanceof Name) {\n                  return this.#parse(resourcesCS, options);\n                }\n                cs = resourcesCS;\n                break;\n              }\n            }\n          }\n          // Fallback to the default gray color space.\n          warn(`Unrecognized ColorSpace: ${cs.name}`);\n          return this.gray;\n      }\n    }\n    if (Array.isArray(cs)) {\n      const mode = xref.fetchIfRef(cs[0]).name;\n      let params, numComps, baseCS, whitePoint, blackPoint, gamma;\n\n      switch (mode) {\n        case \"G\":\n        case \"DeviceGray\":\n          return this.gray;\n        case \"RGB\":\n        case \"DeviceRGB\":\n          return this.rgb;\n        case \"CMYK\":\n        case \"DeviceCMYK\":\n          return this.cmyk;\n        case \"CalGray\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          gamma = params.get(\"Gamma\");\n          return new CalGrayCS(whitePoint, blackPoint, gamma);\n        case \"CalRGB\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          gamma = params.getArray(\"Gamma\");\n          const matrix = params.getArray(\"Matrix\");\n          return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n        case \"ICCBased\":\n          const isRef = cs[1] instanceof Ref;\n          if (isRef) {\n            const cachedCS = globalColorSpaceCache.getByRef(cs[1]);\n            if (cachedCS) {\n              return cachedCS;\n            }\n          }\n\n          const stream = xref.fetchIfRef(cs[1]);\n          const dict = stream.dict;\n          numComps = dict.get(\"N\");\n\n          if (IccColorSpace.isUsable) {\n            try {\n              const iccCS = new IccColorSpace(\n                stream.getBytes(),\n                \"ICCBased\",\n                numComps\n              );\n              if (isRef) {\n                globalColorSpaceCache.set(/* name = */ null, cs[1], iccCS);\n              }\n              return iccCS;\n            } catch (ex) {\n              if (ex instanceof MissingDataException) {\n                throw ex;\n              }\n              warn(`ICCBased color space (${cs[1]}): \"${ex}\".`);\n            }\n          }\n\n          const altRaw = dict.getRaw(\"Alternate\");\n          if (altRaw) {\n            const altCS = this.#subParse(altRaw, options);\n            // Ensure that the number of components are correct,\n            // and also (indirectly) that it is not a PatternCS.\n            if (altCS.numComps === numComps) {\n              return altCS;\n            }\n            warn(\"ICCBased color space: Ignoring incorrect /Alternate entry.\");\n          }\n          if (numComps === 1) {\n            return this.gray;\n          } else if (numComps === 3) {\n            return this.rgb;\n          } else if (numComps === 4) {\n            return this.cmyk;\n          }\n          break;\n        case \"Pattern\":\n          baseCS = cs[1] || null;\n          if (baseCS) {\n            baseCS = this.#subParse(baseCS, options);\n          }\n          return new PatternCS(baseCS);\n        case \"I\":\n        case \"Indexed\":\n          baseCS = this.#subParse(cs[1], options);\n          const hiVal = MathClamp(xref.fetchIfRef(cs[2]), 0, 255);\n          const lookup = xref.fetchIfRef(cs[3]);\n          return new IndexedCS(baseCS, hiVal, lookup);\n        case \"Separation\":\n        case \"DeviceN\":\n          const name = xref.fetchIfRef(cs[1]);\n          numComps = Array.isArray(name) ? name.length : 1;\n          baseCS = this.#subParse(cs[2], options);\n          const tintFn = pdfFunctionFactory.create(cs[3]);\n          return new AlternateCS(numComps, baseCS, tintFn);\n        case \"Lab\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          const range = params.getArray(\"Range\");\n          return new LabCS(whitePoint, blackPoint, range);\n        default:\n          // Fallback to the default gray color space.\n          warn(`Unimplemented ColorSpace object: ${mode}`);\n          return this.gray;\n      }\n    }\n    // Fallback to the default gray color space.\n    warn(`Unrecognized ColorSpace object: ${cs}`);\n    return this.gray;\n  }\n\n  static get gray() {\n    return shadow(this, \"gray\", new DeviceGrayCS());\n  }\n\n  static get rgb() {\n    return shadow(this, \"rgb\", new DeviceRgbCS());\n  }\n\n  static get rgba() {\n    return shadow(this, \"rgba\", new DeviceRgbaCS());\n  }\n\n  static get cmyk() {\n    if (CmykICCBasedCS.isUsable) {\n      try {\n        return shadow(this, \"cmyk\", new CmykICCBasedCS());\n      } catch {\n        warn(\"CMYK fallback: DeviceCMYK\");\n      }\n    }\n    return shadow(this, \"cmyk\", new DeviceCmykCS());\n  }\n}\n\nexport { ColorSpaceUtils };\n","/* Copyright 2022 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\nimport { FeatureTest, ImageKind } from \"./util.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\n  return null;\n}\n\nfunction convertBlackAndWhiteToRGBA({\n  src,\n  srcPos = 0,\n  dest,\n  width,\n  height,\n  nonBlackColor = 0xffffffff,\n  inverseDecode = false,\n}) {\n  const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n  const [zeroMapping, oneMapping] = inverseDecode\n    ? [nonBlackColor, black]\n    : [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\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 { srcPos, 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 len = width * height * 3;\n  const len32 = len >> 2;\n  const src32 = new Uint32Array(src.buffer, srcPos, len32);\n\n  if (FeatureTest.isLittleEndian) {\n    // It's a way faster to do the shuffle manually instead of working\n    // component by component with some Uint8 arrays.\n    for (; i < len32 - 2; i += 3, destPos += 4) {\n      const s1 = src32[i]; // R2B1G1R1\n      const s2 = src32[i + 1]; // G3R3B2G2\n      const s3 = src32[i + 2]; // B4G4R4B3\n\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\n    for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n      dest[destPos++] =\n        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]; // R1G1B1R2\n      const s2 = src32[i + 1]; // G2B2R3G3\n      const s3 = src32[i + 2]; // B3R4G4B4\n\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\n    for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n      dest[destPos++] =\n        (src[j] << 24) | (src[j + 1] << 16) | (src[j + 2] << 8) | 0xff;\n    }\n  }\n\n  return { srcPos: srcPos + len, 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\nexport { convertBlackAndWhiteToRGBA, convertToRGBA, grayToRGBA };\n","/* Copyright 2014 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\nimport { assert, BaseException, warn } from \"../shared/util.js\";\nimport { ColorSpaceUtils } from \"./colorspace_utils.js\";\nimport { DeviceCmykCS } from \"./colorspace.js\";\nimport { grayToRGBA } from \"../shared/image_utils.js\";\nimport { readUint16 } from \"./core_utils.js\";\n\nclass JpegError extends BaseException {\n  constructor(msg) {\n    super(msg, \"JpegError\");\n  }\n}\n\nclass DNLMarkerError extends BaseException {\n  constructor(message, scanLines) {\n    super(message, \"DNLMarkerError\");\n    this.scanLines = scanLines;\n  }\n}\n\nclass EOIMarkerError extends BaseException {\n  constructor(msg) {\n    super(msg, \"EOIMarkerError\");\n  }\n}\n\n/**\n * This code was forked from https://github.com/notmasteryet/jpgjs.\n * The original version was created by GitHub user notmasteryet.\n *\n * - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n *   (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n * - The JFIF specification can be found in the JPEG File Interchange Format\n *   (www.w3.org/Graphics/JPEG/jfif3.pdf)\n * - The Adobe Application-Specific JPEG markers in the\n *   Supporting the DCT Filters in PostScript Level 2, Technical Note #5116\n *   (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n */\n\n// prettier-ignore\nconst dctZigZag = new Uint8Array([\n   0,\n   1,  8,\n  16,  9,  2,\n   3, 10, 17, 24,\n  32, 25, 18, 11, 4,\n   5, 12, 19, 26, 33, 40,\n  48, 41, 34, 27, 20, 13,  6,\n   7, 14, 21, 28, 35, 42, 49, 56,\n  57, 50, 43, 36, 29, 22, 15,\n  23, 30, 37, 44, 51, 58,\n  59, 52, 45, 38, 31,\n  39, 46, 53, 60,\n  61, 54, 47,\n  55, 62,\n  63\n]);\n\nconst dctCos1 = 4017; // cos(pi/16)\nconst dctSin1 = 799; // sin(pi/16)\nconst dctCos3 = 3406; // cos(3*pi/16)\nconst dctSin3 = 2276; // sin(3*pi/16)\nconst dctCos6 = 1567; // cos(6*pi/16)\nconst dctSin6 = 3784; // sin(6*pi/16)\nconst dctSqrt2 = 5793; // sqrt(2)\nconst dctSqrt1d2 = 2896; // sqrt(2) / 2\n\nfunction buildHuffmanTable(codeLengths, values) {\n  let k = 0,\n    i,\n    j,\n    length = 16;\n  while (length > 0 && !codeLengths[length - 1]) {\n    length--;\n  }\n  const code = [{ children: [], index: 0 }];\n  let p = code[0],\n    q;\n  for (i = 0; i < length; i++) {\n    for (j = 0; j < codeLengths[i]; j++) {\n      p = code.pop();\n      p.children[p.index] = values[k];\n      while (p.index > 0) {\n        p = code.pop();\n      }\n      p.index++;\n      code.push(p);\n      while (code.length <= i) {\n        code.push((q = { children: [], index: 0 }));\n        p.children[p.index] = q.children;\n        p = q;\n      }\n      k++;\n    }\n    if (i + 1 < length) {\n      // p here points to last code\n      code.push((q = { children: [], index: 0 }));\n      p.children[p.index] = q.children;\n      p = q;\n    }\n  }\n  return code[0].children;\n}\n\nfunction getBlockBufferOffset(component, row, col) {\n  return 64 * ((component.blocksPerLine + 1) * row + col);\n}\n\nfunction decodeScan(\n  data,\n  offset,\n  frame,\n  components,\n  resetInterval,\n  spectralStart,\n  spectralEnd,\n  successivePrev,\n  successive,\n  parseDNLMarker = false\n) {\n  const mcusPerLine = frame.mcusPerLine;\n  const progressive = frame.progressive;\n\n  const startOffset = offset;\n  let bitsData = 0,\n    bitsCount = 0;\n\n  function readBit() {\n    if (bitsCount > 0) {\n      bitsCount--;\n      return (bitsData >> bitsCount) & 1;\n    }\n    bitsData = data[offset++];\n    if (bitsData === 0xff) {\n      const nextByte = data[offset++];\n      if (nextByte) {\n        if (nextByte === /* DNL = */ 0xdc && parseDNLMarker) {\n          offset += 2; // Skip marker length.\n\n          const scanLines = readUint16(data, offset);\n          offset += 2;\n          if (scanLines > 0 && scanLines !== frame.scanLines) {\n            throw new DNLMarkerError(\n              \"Found DNL marker (0xFFDC) while parsing scan data\",\n              scanLines\n            );\n          }\n        } else if (nextByte === /* EOI = */ 0xd9) {\n          if (parseDNLMarker) {\n            // NOTE: only 8-bit JPEG images are supported in this decoder.\n            const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n            // Heuristic to attempt to handle corrupt JPEG images with too\n            // large `scanLines` parameter, by falling back to the currently\n            // parsed number of scanLines when it's at least (approximately)\n            // one \"half\" order of magnitude smaller than expected (fixes\n            // issue10880.pdf, issue10989.pdf, issue15492.pdf).\n            if (\n              maybeScanLines > 0 &&\n              Math.round(frame.scanLines / maybeScanLines) >= 5\n            ) {\n              throw new DNLMarkerError(\n                \"Found EOI marker (0xFFD9) while parsing scan data, \" +\n                  \"possibly caused by incorrect `scanLines` parameter\",\n                maybeScanLines\n              );\n            }\n          }\n          throw new EOIMarkerError(\n            \"Found EOI marker (0xFFD9) while parsing scan data\"\n          );\n        }\n        throw new JpegError(\n          `unexpected marker ${((bitsData << 8) | nextByte).toString(16)}`\n        );\n      }\n      // unstuff 0\n    }\n    bitsCount = 7;\n    return bitsData >>> 7;\n  }\n\n  function decodeHuffman(tree) {\n    let node = tree;\n    while (true) {\n      node = node[readBit()];\n      switch (typeof node) {\n        case \"number\":\n          return node;\n        case \"object\":\n          continue;\n      }\n      throw new JpegError(\"invalid huffman sequence\");\n    }\n  }\n\n  function receive(length) {\n    let n = 0;\n    while (length > 0) {\n      n = (n << 1) | readBit();\n      length--;\n    }\n    return n;\n  }\n\n  function receiveAndExtend(length) {\n    if (length === 1) {\n      return readBit() === 1 ? 1 : -1;\n    }\n    const n = receive(length);\n    if (n >= 1 << (length - 1)) {\n      return n;\n    }\n    return n + (-1 << length) + 1;\n  }\n\n  function decodeBaseline(component, blockOffset) {\n    const t = decodeHuffman(component.huffmanTableDC);\n    const diff = t === 0 ? 0 : receiveAndExtend(t);\n    component.blockData[blockOffset] = component.pred += diff;\n    let k = 1;\n    while (k < 64) {\n      const rs = decodeHuffman(component.huffmanTableAC);\n      const s = rs & 15,\n        r = rs >> 4;\n      if (s === 0) {\n        if (r < 15) {\n          break;\n        }\n        k += 16;\n        continue;\n      }\n      k += r;\n      const z = dctZigZag[k];\n      component.blockData[blockOffset + z] = receiveAndExtend(s);\n      k++;\n    }\n  }\n\n  function decodeDCFirst(component, blockOffset) {\n    const t = decodeHuffman(component.huffmanTableDC);\n    const diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n    component.blockData[blockOffset] = component.pred += diff;\n  }\n\n  function decodeDCSuccessive(component, blockOffset) {\n    component.blockData[blockOffset] |= readBit() << successive;\n  }\n\n  let eobrun = 0;\n  function decodeACFirst(component, blockOffset) {\n    if (eobrun > 0) {\n      eobrun--;\n      return;\n    }\n    let k = spectralStart;\n    const e = spectralEnd;\n    while (k <= e) {\n      const rs = decodeHuffman(component.huffmanTableAC);\n      const s = rs & 15,\n        r = rs >> 4;\n      if (s === 0) {\n        if (r < 15) {\n          eobrun = receive(r) + (1 << r) - 1;\n          break;\n        }\n        k += 16;\n        continue;\n      }\n      k += r;\n      const z = dctZigZag[k];\n      component.blockData[blockOffset + z] =\n        receiveAndExtend(s) * (1 << successive);\n      k++;\n    }\n  }\n\n  let successiveACState = 0,\n    successiveACNextValue;\n  function decodeACSuccessive(component, blockOffset) {\n    let k = spectralStart;\n    const e = spectralEnd;\n    let r = 0;\n    let s;\n    let rs;\n    while (k <= e) {\n      const offsetZ = blockOffset + dctZigZag[k];\n      const sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n      switch (successiveACState) {\n        case 0: // initial state\n          rs = decodeHuffman(component.huffmanTableAC);\n          s = rs & 15;\n          r = rs >> 4;\n          if (s === 0) {\n            if (r < 15) {\n              eobrun = receive(r) + (1 << r);\n              successiveACState = 4;\n            } else {\n              r = 16;\n              successiveACState = 1;\n            }\n          } else {\n            if (s !== 1) {\n              throw new JpegError(\"invalid ACn encoding\");\n            }\n            successiveACNextValue = receiveAndExtend(s);\n            successiveACState = r ? 2 : 3;\n          }\n          continue;\n        case 1: // skipping r zero items\n        case 2:\n          if (component.blockData[offsetZ]) {\n            component.blockData[offsetZ] += sign * (readBit() << successive);\n          } else {\n            r--;\n            if (r === 0) {\n              successiveACState = successiveACState === 2 ? 3 : 0;\n            }\n          }\n          break;\n        case 3: // set value for a zero item\n          if (component.blockData[offsetZ]) {\n            component.blockData[offsetZ] += sign * (readBit() << successive);\n          } else {\n            component.blockData[offsetZ] = successiveACNextValue << successive;\n            successiveACState = 0;\n          }\n          break;\n        case 4: // eob\n          if (component.blockData[offsetZ]) {\n            component.blockData[offsetZ] += sign * (readBit() << successive);\n          }\n          break;\n      }\n      k++;\n    }\n    if (successiveACState === 4) {\n      eobrun--;\n      if (eobrun === 0) {\n        successiveACState = 0;\n      }\n    }\n  }\n\n  let blockRow = 0;\n  function decodeMcu(component, decode, mcu, row, col) {\n    const mcuRow = (mcu / mcusPerLine) | 0;\n    const mcuCol = mcu % mcusPerLine;\n    blockRow = mcuRow * component.v + row;\n    const blockCol = mcuCol * component.h + col;\n    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n    decode(component, blockOffset);\n  }\n\n  function decodeBlock(component, decode, mcu) {\n    blockRow = (mcu / component.blocksPerLine) | 0;\n    const blockCol = mcu % component.blocksPerLine;\n    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n    decode(component, blockOffset);\n  }\n\n  const componentsLength = components.length;\n  let component, i, j, k, n;\n  let decodeFn;\n  if (progressive) {\n    if (spectralStart === 0) {\n      decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n    } else {\n      decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n    }\n  } else {\n    decodeFn = decodeBaseline;\n  }\n\n  let mcu = 0,\n    fileMarker;\n  const mcuExpected =\n    componentsLength === 1\n      ? components[0].blocksPerLine * components[0].blocksPerColumn\n      : mcusPerLine * frame.mcusPerColumn;\n\n  let h, v;\n  while (mcu <= mcuExpected) {\n    // reset interval stuff\n    const mcuToRead = resetInterval\n      ? Math.min(mcuExpected - mcu, resetInterval)\n      : mcuExpected;\n\n    // The `mcuToRead === 0` case should only occur when all of the expected\n    // MCU data has been already parsed, i.e. when `mcu === mcuExpected`, but\n    // some corrupt JPEG images contain more data than intended and we thus\n    // want to skip over any extra RSTx markers below (fixes issue11794.pdf).\n    if (mcuToRead > 0) {\n      for (i = 0; i < componentsLength; i++) {\n        components[i].pred = 0;\n      }\n      eobrun = 0;\n\n      if (componentsLength === 1) {\n        component = components[0];\n        for (n = 0; n < mcuToRead; n++) {\n          decodeBlock(component, decodeFn, mcu);\n          mcu++;\n        }\n      } else {\n        for (n = 0; n < mcuToRead; n++) {\n          for (i = 0; i < componentsLength; i++) {\n            component = components[i];\n            h = component.h;\n            v = component.v;\n            for (j = 0; j < v; j++) {\n              for (k = 0; k < h; k++) {\n                decodeMcu(component, decodeFn, mcu, j, k);\n              }\n            }\n          }\n          mcu++;\n        }\n      }\n    }\n\n    // find marker\n    bitsCount = 0;\n    fileMarker = findNextFileMarker(data, offset);\n    if (!fileMarker) {\n      break; // Reached the end of the image data without finding any marker.\n    }\n    if (fileMarker.invalid) {\n      // Some bad images seem to pad Scan blocks with e.g. zero bytes, skip\n      // past those to attempt to find a valid marker (fixes issue4090.pdf).\n      const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n      warn(\n        `decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`\n      );\n      offset = fileMarker.offset;\n    }\n    if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n      // RSTx\n      offset += 2;\n    } else {\n      break;\n    }\n  }\n\n  return offset - startOffset;\n}\n\n// A port of poppler's IDCT method which in turn is taken from:\n//   Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n//   'Practical Fast 1-D DCT Algorithms with 11 Multiplications',\n//   IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n//   988-991.\nfunction quantizeAndInverse(component, blockBufferOffset, p) {\n  const qt = component.quantizationTable,\n    blockData = component.blockData;\n  let v0, v1, v2, v3, v4, v5, v6, v7;\n  let p0, p1, p2, p3, p4, p5, p6, p7;\n  let t;\n\n  if (!qt) {\n    throw new JpegError(\"missing required Quantization Table.\");\n  }\n\n  // inverse DCT on rows\n  for (let row = 0; row < 64; row += 8) {\n    // gather block data\n    p0 = blockData[blockBufferOffset + row];\n    p1 = blockData[blockBufferOffset + row + 1];\n    p2 = blockData[blockBufferOffset + row + 2];\n    p3 = blockData[blockBufferOffset + row + 3];\n    p4 = blockData[blockBufferOffset + row + 4];\n    p5 = blockData[blockBufferOffset + row + 5];\n    p6 = blockData[blockBufferOffset + row + 6];\n    p7 = blockData[blockBufferOffset + row + 7];\n\n    // dequant p0\n    p0 *= qt[row];\n\n    // check for all-zero AC coefficients\n    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n      t = (dctSqrt2 * p0 + 512) >> 10;\n      p[row] = t;\n      p[row + 1] = t;\n      p[row + 2] = t;\n      p[row + 3] = t;\n      p[row + 4] = t;\n      p[row + 5] = t;\n      p[row + 6] = t;\n      p[row + 7] = t;\n      continue;\n    }\n    // dequant p1 ... p7\n    p1 *= qt[row + 1];\n    p2 *= qt[row + 2];\n    p3 *= qt[row + 3];\n    p4 *= qt[row + 4];\n    p5 *= qt[row + 5];\n    p6 *= qt[row + 6];\n    p7 *= qt[row + 7];\n\n    // stage 4\n    v0 = (dctSqrt2 * p0 + 128) >> 8;\n    v1 = (dctSqrt2 * p4 + 128) >> 8;\n    v2 = p2;\n    v3 = p6;\n    v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8;\n    v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8;\n    v5 = p3 << 4;\n    v6 = p5 << 4;\n\n    // stage 3\n    v0 = (v0 + v1 + 1) >> 1;\n    v1 = v0 - v1;\n    t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n    v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n    v3 = t;\n    v4 = (v4 + v6 + 1) >> 1;\n    v6 = v4 - v6;\n    v7 = (v7 + v5 + 1) >> 1;\n    v5 = v7 - v5;\n\n    // stage 2\n    v0 = (v0 + v3 + 1) >> 1;\n    v3 = v0 - v3;\n    v1 = (v1 + v2 + 1) >> 1;\n    v2 = v1 - v2;\n    t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n    v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n    v7 = t;\n    t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n    v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n    v6 = t;\n\n    // stage 1\n    p[row] = v0 + v7;\n    p[row + 7] = v0 - v7;\n    p[row + 1] = v1 + v6;\n    p[row + 6] = v1 - v6;\n    p[row + 2] = v2 + v5;\n    p[row + 5] = v2 - v5;\n    p[row + 3] = v3 + v4;\n    p[row + 4] = v3 - v4;\n  }\n\n  // inverse DCT on columns\n  for (let col = 0; col < 8; ++col) {\n    p0 = p[col];\n    p1 = p[col + 8];\n    p2 = p[col + 16];\n    p3 = p[col + 24];\n    p4 = p[col + 32];\n    p5 = p[col + 40];\n    p6 = p[col + 48];\n    p7 = p[col + 56];\n\n    // check for all-zero AC coefficients\n    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n      t = (dctSqrt2 * p0 + 8192) >> 14;\n      // Convert to 8-bit.\n      if (t < -2040) {\n        t = 0;\n      } else if (t >= 2024) {\n        t = 255;\n      } else {\n        t = (t + 2056) >> 4;\n      }\n      blockData[blockBufferOffset + col] = t;\n      blockData[blockBufferOffset + col + 8] = t;\n      blockData[blockBufferOffset + col + 16] = t;\n      blockData[blockBufferOffset + col + 24] = t;\n      blockData[blockBufferOffset + col + 32] = t;\n      blockData[blockBufferOffset + col + 40] = t;\n      blockData[blockBufferOffset + col + 48] = t;\n      blockData[blockBufferOffset + col + 56] = t;\n      continue;\n    }\n\n    // stage 4\n    v0 = (dctSqrt2 * p0 + 2048) >> 12;\n    v1 = (dctSqrt2 * p4 + 2048) >> 12;\n    v2 = p2;\n    v3 = p6;\n    v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12;\n    v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12;\n    v5 = p3;\n    v6 = p5;\n\n    // stage 3\n    // Shift v0 by 128.5 << 5 here, so we don't need to shift p0...p7 when\n    // converting to UInt8 range later.\n    v0 = ((v0 + v1 + 1) >> 1) + 4112;\n    v1 = v0 - v1;\n    t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n    v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n    v3 = t;\n    v4 = (v4 + v6 + 1) >> 1;\n    v6 = v4 - v6;\n    v7 = (v7 + v5 + 1) >> 1;\n    v5 = v7 - v5;\n\n    // stage 2\n    v0 = (v0 + v3 + 1) >> 1;\n    v3 = v0 - v3;\n    v1 = (v1 + v2 + 1) >> 1;\n    v2 = v1 - v2;\n    t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n    v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n    v7 = t;\n    t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n    v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n    v6 = t;\n\n    // stage 1\n    p0 = v0 + v7;\n    p7 = v0 - v7;\n    p1 = v1 + v6;\n    p6 = v1 - v6;\n    p2 = v2 + v5;\n    p5 = v2 - v5;\n    p3 = v3 + v4;\n    p4 = v3 - v4;\n\n    // Convert to 8-bit integers.\n    if (p0 < 16) {\n      p0 = 0;\n    } else if (p0 >= 4080) {\n      p0 = 255;\n    } else {\n      p0 >>= 4;\n    }\n    if (p1 < 16) {\n      p1 = 0;\n    } else if (p1 >= 4080) {\n      p1 = 255;\n    } else {\n      p1 >>= 4;\n    }\n    if (p2 < 16) {\n      p2 = 0;\n    } else if (p2 >= 4080) {\n      p2 = 255;\n    } else {\n      p2 >>= 4;\n    }\n    if (p3 < 16) {\n      p3 = 0;\n    } else if (p3 >= 4080) {\n      p3 = 255;\n    } else {\n      p3 >>= 4;\n    }\n    if (p4 < 16) {\n      p4 = 0;\n    } else if (p4 >= 4080) {\n      p4 = 255;\n    } else {\n      p4 >>= 4;\n    }\n    if (p5 < 16) {\n      p5 = 0;\n    } else if (p5 >= 4080) {\n      p5 = 255;\n    } else {\n      p5 >>= 4;\n    }\n    if (p6 < 16) {\n      p6 = 0;\n    } else if (p6 >= 4080) {\n      p6 = 255;\n    } else {\n      p6 >>= 4;\n    }\n    if (p7 < 16) {\n      p7 = 0;\n    } else if (p7 >= 4080) {\n      p7 = 255;\n    } else {\n      p7 >>= 4;\n    }\n\n    // store block data\n    blockData[blockBufferOffset + col] = p0;\n    blockData[blockBufferOffset + col + 8] = p1;\n    blockData[blockBufferOffset + col + 16] = p2;\n    blockData[blockBufferOffset + col + 24] = p3;\n    blockData[blockBufferOffset + col + 32] = p4;\n    blockData[blockBufferOffset + col + 40] = p5;\n    blockData[blockBufferOffset + col + 48] = p6;\n    blockData[blockBufferOffset + col + 56] = p7;\n  }\n}\n\nfunction buildComponentData(frame, component) {\n  const blocksPerLine = component.blocksPerLine;\n  const blocksPerColumn = component.blocksPerColumn;\n  const computationBuffer = new Int16Array(64);\n\n  for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n    for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n      const offset = getBlockBufferOffset(component, blockRow, blockCol);\n      quantizeAndInverse(component, offset, computationBuffer);\n    }\n  }\n  return component.blockData;\n}\n\nfunction findNextFileMarker(data, currentPos, startPos = currentPos) {\n  const maxPos = data.length - 1;\n  let newPos = startPos < currentPos ? startPos : currentPos;\n\n  if (currentPos >= maxPos) {\n    return null; // Don't attempt to read non-existent data and just return.\n  }\n  const currentMarker = readUint16(data, currentPos);\n  if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n    return {\n      invalid: null,\n      marker: currentMarker,\n      offset: currentPos,\n    };\n  }\n  let newMarker = readUint16(data, newPos);\n  while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {\n    if (++newPos >= maxPos) {\n      return null; // Don't attempt to read non-existent data and just return.\n    }\n    newMarker = readUint16(data, newPos);\n  }\n  return {\n    invalid: currentMarker.toString(16),\n    marker: newMarker,\n    offset: newPos,\n  };\n}\n\nfunction prepareComponents(frame) {\n  const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n  const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n  for (const component of frame.components) {\n    const blocksPerLine = Math.ceil(\n      (Math.ceil(frame.samplesPerLine / 8) * component.h) / frame.maxH\n    );\n    const blocksPerColumn = Math.ceil(\n      (Math.ceil(frame.scanLines / 8) * component.v) / frame.maxV\n    );\n    const blocksPerLineForMcu = mcusPerLine * component.h;\n    const blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n    const blocksBufferSize =\n      64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n    component.blockData = new Int16Array(blocksBufferSize);\n    component.blocksPerLine = blocksPerLine;\n    component.blocksPerColumn = blocksPerColumn;\n  }\n  frame.mcusPerLine = mcusPerLine;\n  frame.mcusPerColumn = mcusPerColumn;\n}\n\nfunction readDataBlock(data, offset) {\n  const length = readUint16(data, offset);\n  offset += 2;\n  let endOffset = offset + length - 2;\n\n  const fileMarker = findNextFileMarker(data, endOffset, offset);\n  if (fileMarker?.invalid) {\n    warn(\n      \"readDataBlock - incorrect length, current marker is: \" +\n        fileMarker.invalid\n    );\n    endOffset = fileMarker.offset;\n  }\n\n  const array = data.subarray(offset, endOffset);\n  return {\n    appData: array,\n    oldOffset: offset,\n    newOffset: offset + array.length,\n  };\n}\n\nfunction skipData(data, offset) {\n  const length = readUint16(data, offset);\n  offset += 2;\n  const endOffset = offset + length - 2;\n\n  const fileMarker = findNextFileMarker(data, endOffset, offset);\n  if (fileMarker?.invalid) {\n    return fileMarker.offset;\n  }\n  return endOffset;\n}\n\nclass JpegImage {\n  constructor({ decodeTransform = null, colorTransform = -1 } = {}) {\n    this._decodeTransform = decodeTransform;\n    this._colorTransform = colorTransform;\n  }\n\n  static canUseImageDecoder(data, colorTransform = -1) {\n    let exifOffsets = null;\n    let offset = 0;\n    let numComponents = null;\n    let fileMarker = readUint16(data, offset);\n    offset += 2;\n    if (fileMarker !== /* SOI (Start of Image) = */ 0xffd8) {\n      throw new JpegError(\"SOI not found\");\n    }\n    fileMarker = readUint16(data, offset);\n    offset += 2;\n\n    markerLoop: while (fileMarker !== /* EOI (End of Image) = */ 0xffd9) {\n      switch (fileMarker) {\n        case 0xffe1: // APP1 - Exif\n          // TODO: Remove this once https://github.com/w3c/webcodecs/issues/870\n          //       is fixed.\n          const { appData, oldOffset, newOffset } = readDataBlock(data, offset);\n          offset = newOffset;\n\n          // 'Exif\\x00\\x00'\n          if (\n            appData[0] === 0x45 &&\n            appData[1] === 0x78 &&\n            appData[2] === 0x69 &&\n            appData[3] === 0x66 &&\n            appData[4] === 0 &&\n            appData[5] === 0\n          ) {\n            if (exifOffsets) {\n              throw new JpegError(\"Duplicate EXIF-blocks found.\");\n            }\n            // Don't do the EXIF-block replacement here, see `JpegStream`,\n            // since that can modify the original PDF document.\n            exifOffsets = { exifStart: oldOffset + 6, exifEnd: newOffset };\n          }\n          fileMarker = readUint16(data, offset);\n          offset += 2;\n          continue;\n        case 0xffc0: // SOF0 (Start of Frame, Baseline DCT)\n        case 0xffc1: // SOF1 (Start of Frame, Extended DCT)\n        case 0xffc2: // SOF2 (Start of Frame, Progressive DCT)\n          // Skip marker length.\n          // Skip precision.\n          // Skip scanLines.\n          // Skip samplesPerLine.\n          numComponents = data[offset + (2 + 1 + 2 + 2)];\n          break markerLoop;\n        case 0xffff: // Fill bytes\n          if (data[offset] !== 0xff) {\n            // Avoid skipping a valid marker.\n            offset--;\n          }\n          break;\n      }\n      offset = skipData(data, offset);\n      fileMarker = readUint16(data, offset);\n      offset += 2;\n    }\n    if (numComponents === 4) {\n      return null;\n    }\n    if (numComponents === 3 && colorTransform === 0) {\n      return null;\n    }\n    return exifOffsets || {};\n  }\n\n  parse(data, { dnlScanLines = null } = {}) {\n    let offset = 0;\n    let jfif = null;\n    let adobe = null;\n    let frame, resetInterval;\n    let numSOSMarkers = 0;\n    const quantizationTables = [];\n    const huffmanTablesAC = [],\n      huffmanTablesDC = [];\n\n    let fileMarker = readUint16(data, offset);\n    offset += 2;\n    if (fileMarker !== /* SOI (Start of Image) = */ 0xffd8) {\n      throw new JpegError(\"SOI not found\");\n    }\n    fileMarker = readUint16(data, offset);\n    offset += 2;\n\n    markerLoop: while (fileMarker !== /* EOI (End of Image) = */ 0xffd9) {\n      let i, j, l;\n      switch (fileMarker) {\n        case 0xffe0: // APP0 (Application Specific)\n        case 0xffe1: // APP1\n        case 0xffe2: // APP2\n        case 0xffe3: // APP3\n        case 0xffe4: // APP4\n        case 0xffe5: // APP5\n        case 0xffe6: // APP6\n        case 0xffe7: // APP7\n        case 0xffe8: // APP8\n        case 0xffe9: // APP9\n        case 0xffea: // APP10\n        case 0xffeb: // APP11\n        case 0xffec: // APP12\n        case 0xffed: // APP13\n        case 0xffee: // APP14\n        case 0xffef: // APP15\n        case 0xfffe: // COM (Comment)\n          const { appData, newOffset } = readDataBlock(data, offset);\n          offset = newOffset;\n\n          if (fileMarker === 0xffe0) {\n            // 'JFIF\\x00'\n            if (\n              appData[0] === 0x4a &&\n              appData[1] === 0x46 &&\n              appData[2] === 0x49 &&\n              appData[3] === 0x46 &&\n              appData[4] === 0\n            ) {\n              jfif = {\n                version: { major: appData[5], minor: appData[6] },\n                densityUnits: appData[7],\n                xDensity: (appData[8] << 8) | appData[9],\n                yDensity: (appData[10] << 8) | appData[11],\n                thumbWidth: appData[12],\n                thumbHeight: appData[13],\n                thumbData: appData.subarray(\n                  14,\n                  14 + 3 * appData[12] * appData[13]\n                ),\n              };\n            }\n          }\n          // TODO APP1 - Exif\n          if (fileMarker === 0xffee) {\n            // 'Adobe'\n            if (\n              appData[0] === 0x41 &&\n              appData[1] === 0x64 &&\n              appData[2] === 0x6f &&\n              appData[3] === 0x62 &&\n              appData[4] === 0x65\n            ) {\n              adobe = {\n                version: (appData[5] << 8) | appData[6],\n                flags0: (appData[7] << 8) | appData[8],\n                flags1: (appData[9] << 8) | appData[10],\n                transformCode: appData[11],\n              };\n            }\n          }\n          break;\n\n        case 0xffdb: // DQT (Define Quantization Tables)\n          const quantizationTablesLength = readUint16(data, offset);\n          offset += 2;\n          const quantizationTablesEnd = quantizationTablesLength + offset - 2;\n          let z;\n          while (offset < quantizationTablesEnd) {\n            const quantizationTableSpec = data[offset++];\n            const tableData = new Uint16Array(64);\n            if (quantizationTableSpec >> 4 === 0) {\n              // 8 bit values\n              for (j = 0; j < 64; j++) {\n                z = dctZigZag[j];\n                tableData[z] = data[offset++];\n              }\n            } else if (quantizationTableSpec >> 4 === 1) {\n              // 16 bit values\n              for (j = 0; j < 64; j++) {\n                z = dctZigZag[j];\n                tableData[z] = readUint16(data, offset);\n                offset += 2;\n              }\n            } else {\n              throw new JpegError(\"DQT - invalid table spec\");\n            }\n            quantizationTables[quantizationTableSpec & 15] = tableData;\n          }\n          break;\n\n        case 0xffc0: // SOF0 (Start of Frame, Baseline DCT)\n        case 0xffc1: // SOF1 (Start of Frame, Extended DCT)\n        case 0xffc2: // SOF2 (Start of Frame, Progressive DCT)\n          if (frame) {\n            throw new JpegError(\"Only single frame JPEGs supported\");\n          }\n          offset += 2; // Skip marker length.\n\n          frame = {};\n          frame.extended = fileMarker === 0xffc1;\n          frame.progressive = fileMarker === 0xffc2;\n          frame.precision = data[offset++];\n          const sofScanLines = readUint16(data, offset);\n          offset += 2;\n          frame.scanLines = dnlScanLines || sofScanLines;\n          frame.samplesPerLine = readUint16(data, offset);\n          offset += 2;\n          frame.components = [];\n          frame.componentIds = {};\n          const componentsCount = data[offset++];\n          let maxH = 0,\n            maxV = 0;\n          for (i = 0; i < componentsCount; i++) {\n            const componentId = data[offset];\n            const h = data[offset + 1] >> 4;\n            const v = data[offset + 1] & 15;\n            if (maxH < h) {\n              maxH = h;\n            }\n            if (maxV < v) {\n              maxV = v;\n            }\n            const qId = data[offset + 2];\n            l = frame.components.push({\n              h,\n              v,\n              quantizationId: qId,\n              quantizationTable: null, // See comment below.\n            });\n            frame.componentIds[componentId] = l - 1;\n            offset += 3;\n          }\n          frame.maxH = maxH;\n          frame.maxV = maxV;\n          prepareComponents(frame);\n          break;\n\n        case 0xffc4: // DHT (Define Huffman Tables)\n          const huffmanLength = readUint16(data, offset);\n          offset += 2;\n          for (i = 2; i < huffmanLength; ) {\n            const huffmanTableSpec = data[offset++];\n            const codeLengths = new Uint8Array(16);\n            let codeLengthSum = 0;\n            for (j = 0; j < 16; j++, offset++) {\n              codeLengthSum += codeLengths[j] = data[offset];\n            }\n            const huffmanValues = new Uint8Array(codeLengthSum);\n            for (j = 0; j < codeLengthSum; j++, offset++) {\n              huffmanValues[j] = data[offset];\n            }\n            i += 17 + codeLengthSum;\n\n            (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[\n              huffmanTableSpec & 15\n            ] = buildHuffmanTable(codeLengths, huffmanValues);\n          }\n          break;\n\n        case 0xffdd: // DRI (Define Restart Interval)\n          offset += 2; // Skip marker length.\n\n          resetInterval = readUint16(data, offset);\n          offset += 2;\n          break;\n\n        case 0xffda: // SOS (Start of Scan)\n          // A DNL marker (0xFFDC), if it exists, is only allowed at the end\n          // of the first scan segment and may only occur once in an image.\n          // Furthermore, to prevent an infinite loop, do *not* attempt to\n          // parse DNL markers during re-parsing of the JPEG scan data.\n          const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n\n          offset += 2; // Skip marker length.\n\n          const selectorsCount = data[offset++],\n            components = [];\n          for (i = 0; i < selectorsCount; i++) {\n            const index = data[offset++];\n            const componentIndex = frame.componentIds[index];\n            const component = frame.components[componentIndex];\n            component.index = index;\n            const tableSpec = data[offset++];\n            component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n            component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n            components.push(component);\n          }\n          const spectralStart = data[offset++],\n            spectralEnd = data[offset++],\n            successiveApproximation = data[offset++];\n          try {\n            const processed = decodeScan(\n              data,\n              offset,\n              frame,\n              components,\n              resetInterval,\n              spectralStart,\n              spectralEnd,\n              successiveApproximation >> 4,\n              successiveApproximation & 15,\n              parseDNLMarker\n            );\n            offset += processed;\n          } catch (ex) {\n            if (ex instanceof DNLMarkerError) {\n              warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\n              return this.parse(data, { dnlScanLines: ex.scanLines });\n            } else if (ex instanceof EOIMarkerError) {\n              warn(`${ex.message} -- ignoring the rest of the image data.`);\n              break markerLoop;\n            }\n            throw ex;\n          }\n          break;\n\n        case 0xffdc: // DNL (Define Number of Lines)\n          // Ignore the marker, since it's being handled in `decodeScan`.\n          offset += 4;\n          break;\n\n        case 0xffff: // Fill bytes\n          if (data[offset] !== 0xff) {\n            // Avoid skipping a valid marker.\n            offset--;\n          }\n          break;\n\n        default:\n          // Could be incorrect encoding -- the last 0xFF byte of the previous\n          // block could have been eaten by the encoder, hence we fallback to\n          // `startPos = offset - 3` when looking for the next valid marker.\n          const nextFileMarker = findNextFileMarker(\n            data,\n            /* currentPos = */ offset - 2,\n            /* startPos = */ offset - 3\n          );\n          if (nextFileMarker?.invalid) {\n            warn(\n              \"JpegImage.parse - unexpected data, current marker is: \" +\n                nextFileMarker.invalid\n            );\n            offset = nextFileMarker.offset;\n            break;\n          }\n          if (!nextFileMarker || offset >= data.length - 1) {\n            warn(\n              \"JpegImage.parse - reached the end of the image data \" +\n                \"without finding an EOI marker (0xFFD9).\"\n            );\n            break markerLoop;\n          }\n          throw new JpegError(\n            \"JpegImage.parse - unknown marker: \" + fileMarker.toString(16)\n          );\n      }\n      fileMarker = readUint16(data, offset);\n      offset += 2;\n    }\n\n    if (!frame) {\n      throw new JpegError(\"JpegImage.parse - no frame data found.\");\n    }\n    this.width = frame.samplesPerLine;\n    this.height = frame.scanLines;\n    this.jfif = jfif;\n    this.adobe = adobe;\n    this.components = [];\n    for (const component of frame.components) {\n      // Prevent errors when DQT markers are placed after SOF{n} markers,\n      // by assigning the `quantizationTable` entry after the entire image\n      // has been parsed (fixes issue7406.pdf).\n      const quantizationTable = quantizationTables[component.quantizationId];\n      if (quantizationTable) {\n        component.quantizationTable = quantizationTable;\n      }\n\n      this.components.push({\n        index: component.index,\n        output: buildComponentData(frame, component),\n        scaleX: component.h / frame.maxH,\n        scaleY: component.v / frame.maxV,\n        blocksPerLine: component.blocksPerLine,\n        blocksPerColumn: component.blocksPerColumn,\n      });\n    }\n    this.numComponents = this.components.length;\n    return undefined;\n  }\n\n  _getLinearizedBlockData(width, height, isSourcePDF = false) {\n    const scaleX = this.width / width,\n      scaleY = this.height / height;\n\n    let component, componentScaleX, componentScaleY, blocksPerScanline;\n    let x, y, i, j, k;\n    let index;\n    let offset = 0;\n    let output;\n    const numComponents = this.components.length;\n    const dataLength = width * height * numComponents;\n    const data = new Uint8ClampedArray(dataLength);\n    const xScaleBlockOffset = new Uint32Array(width);\n    const mask3LSB = 0xfffffff8; // used to clear the 3 LSBs\n    let lastComponentScaleX;\n\n    for (i = 0; i < numComponents; i++) {\n      component = this.components[i];\n      componentScaleX = component.scaleX * scaleX;\n      componentScaleY = component.scaleY * scaleY;\n      offset = i;\n      output = component.output;\n      blocksPerScanline = (component.blocksPerLine + 1) << 3;\n      // Precalculate the `xScaleBlockOffset`. Since it doesn't depend on the\n      // component data, that's only necessary when `componentScaleX` changes.\n      if (componentScaleX !== lastComponentScaleX) {\n        for (x = 0; x < width; x++) {\n          j = 0 | (x * componentScaleX);\n          xScaleBlockOffset[x] = ((j & mask3LSB) << 3) | (j & 7);\n        }\n        lastComponentScaleX = componentScaleX;\n      }\n      // linearize the blocks of the component\n      for (y = 0; y < height; y++) {\n        j = 0 | (y * componentScaleY);\n        index = (blocksPerScanline * (j & mask3LSB)) | ((j & 7) << 3);\n        for (x = 0; x < width; x++) {\n          data[offset] = output[index + xScaleBlockOffset[x]];\n          offset += numComponents;\n        }\n      }\n    }\n\n    // decodeTransform contains pairs of multiplier (-256..256) and additive\n    let transform = this._decodeTransform;\n\n    // In PDF files, JPEG images with CMYK colour spaces are usually inverted\n    // (this can be observed by extracting the raw image data).\n    // Since the conversion algorithms (see below) were written primarily for\n    // the PDF use-cases, attempting to use `JpegImage` to parse standalone\n    // JPEG (CMYK) images may thus result in inverted images (see issue 9513).\n    //\n    // Unfortunately it's not (always) possible to tell, from the image data\n    // alone, if it needs to be inverted. Thus in an attempt to provide better\n    // out-of-box behaviour when `JpegImage` is used standalone, default to\n    // inverting JPEG (CMYK) images if and only if the image data does *not*\n    // come from a PDF file and no `decodeTransform` was passed by the user.\n    if (!isSourcePDF && numComponents === 4 && !transform) {\n      transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);\n    }\n\n    if (transform) {\n      for (i = 0; i < dataLength; ) {\n        for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {\n          data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];\n        }\n      }\n    }\n    return data;\n  }\n\n  get _isColorConversionNeeded() {\n    if (this.adobe) {\n      // The adobe transform marker overrides any previous setting.\n      return !!this.adobe.transformCode;\n    }\n    if (this.numComponents === 3) {\n      if (this._colorTransform === 0) {\n        // If the Adobe transform marker is not present and the image\n        // dictionary has a 'ColorTransform' entry, explicitly set to `0`,\n        // then the colours should *not* be transformed.\n        return false;\n      } else if (\n        this.components[0].index === /* \"R\" = */ 0x52 &&\n        this.components[1].index === /* \"G\" = */ 0x47 &&\n        this.components[2].index === /* \"B\" = */ 0x42\n      ) {\n        // If the three components are indexed as RGB in ASCII\n        // then the colours should *not* be transformed.\n        return false;\n      }\n      return true;\n    }\n    // `this.numComponents !== 3`\n    if (this._colorTransform === 1) {\n      // If the Adobe transform marker is not present and the image\n      // dictionary has a 'ColorTransform' entry, explicitly set to `1`,\n      // then the colours should be transformed.\n      return true;\n    }\n    return false;\n  }\n\n  _convertYccToRgb(data) {\n    let Y, Cb, Cr;\n    for (let i = 0, length = data.length; i < length; i += 3) {\n      Y = data[i];\n      Cb = data[i + 1];\n      Cr = data[i + 2];\n      data[i] = Y - 179.456 + 1.402 * Cr;\n      data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n      data[i + 2] = Y - 226.816 + 1.772 * Cb;\n    }\n    return data;\n  }\n\n  _convertYccToRgba(data, out) {\n    for (let i = 0, j = 0, length = data.length; i < length; i += 3, j += 4) {\n      const Y = data[i];\n      const Cb = data[i + 1];\n      const Cr = data[i + 2];\n      out[j] = Y - 179.456 + 1.402 * Cr;\n      out[j + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n      out[j + 2] = Y - 226.816 + 1.772 * Cb;\n      out[j + 3] = 255;\n    }\n    return out;\n  }\n\n  _convertYcckToRgb(data) {\n    this._convertYcckToCmyk(data);\n    return this._convertCmykToRgb(data);\n  }\n\n  _convertYcckToRgba(data) {\n    this._convertYcckToCmyk(data);\n    return this._convertCmykToRgba(data);\n  }\n\n  _convertYcckToCmyk(data) {\n    let Y, Cb, Cr;\n    for (let i = 0, length = data.length; i < length; i += 4) {\n      Y = data[i];\n      Cb = data[i + 1];\n      Cr = data[i + 2];\n      data[i] = 434.456 - Y - 1.402 * Cr;\n      data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n      data[i + 2] = 481.816 - Y - 1.772 * Cb;\n      // K in data[i + 3] is unchanged\n    }\n    return data;\n  }\n\n  _convertCmykToRgb(data) {\n    const count = data.length / 4;\n    ColorSpaceUtils.cmyk.getRgbBuffer(data, 0, count, data, 0, 8, 0);\n    return data.subarray(0, count * 3);\n  }\n\n  _convertCmykToRgba(data) {\n    ColorSpaceUtils.cmyk.getRgbBuffer(data, 0, data.length / 4, data, 0, 8, 1);\n\n    if (ColorSpaceUtils.cmyk instanceof DeviceCmykCS) {\n      // The alpha-component isn't updated by `DeviceCmykCS`, doing it manually.\n      for (let i = 3, ii = data.length; i < ii; i += 4) {\n        data[i] = 255;\n      }\n    }\n    return data;\n  }\n\n  getData({\n    width,\n    height,\n    forceRGBA = false,\n    forceRGB = false,\n    isSourcePDF = false,\n  }) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        isSourcePDF === true,\n        'JpegImage.getData: Unexpected \"isSourcePDF\" value for PDF files.'\n      );\n    }\n    if (this.numComponents > 4) {\n      throw new JpegError(\"Unsupported color mode\");\n    }\n    // Type of data: Uint8ClampedArray(width * height * numComponents)\n    const data = this._getLinearizedBlockData(width, height, isSourcePDF);\n\n    if (this.numComponents === 1 && (forceRGBA || forceRGB)) {\n      const len = data.length * (forceRGBA ? 4 : 3);\n      const rgbaData = new Uint8ClampedArray(len);\n      let offset = 0;\n      if (forceRGBA) {\n        grayToRGBA(data, new Uint32Array(rgbaData.buffer));\n      } else {\n        for (const grayColor of data) {\n          rgbaData[offset++] = grayColor;\n          rgbaData[offset++] = grayColor;\n          rgbaData[offset++] = grayColor;\n        }\n      }\n      return rgbaData;\n    } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n      if (forceRGBA) {\n        const rgbaData = new Uint8ClampedArray((data.length / 3) * 4);\n        return this._convertYccToRgba(data, rgbaData);\n      }\n      return this._convertYccToRgb(data);\n    } else if (this.numComponents === 4) {\n      if (this._isColorConversionNeeded) {\n        if (forceRGBA) {\n          return this._convertYcckToRgba(data);\n        }\n        if (forceRGB) {\n          return this._convertYcckToRgb(data);\n        }\n        return this._convertYcckToCmyk(data);\n      } else if (forceRGBA) {\n        return this._convertCmykToRgba(data);\n      } else if (forceRGB) {\n        return this._convertCmykToRgb(data);\n      }\n    }\n    return data;\n  }\n}\n\nexport { JpegError, JpegImage };\n","/* THIS FILE IS GENERATED - DO NOT EDIT */\nvar OpenJPEG = (() => {\n  var _scriptName = import.meta.url;\n  \n  return (\nasync function(moduleArg = {}) {\n  var moduleRtn;\n\nvar Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith(\"blob:\")){scriptDirectory=\"\"}else{scriptDirectory=scriptDirectory.slice(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1)}{readAsync=async url=>{var response=await fetch(url,{credentials:\"same-origin\"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+\" : \"+response.url)}}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];var wasmBinary=Module[\"wasmBinary\"];var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;Module[\"HEAP8\"]=HEAP8=new Int8Array(b);Module[\"HEAP16\"]=HEAP16=new Int16Array(b);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(b);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(b);Module[\"HEAP32\"]=HEAP32=new Int32Array(b);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(b);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(b);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(b);Module[\"HEAP64\"]=HEAP64=new BigInt64Array(b);Module[\"HEAPU64\"]=HEAPU64=new BigUint64Array(b)}function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;wasmExports[\"t\"]()}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(onPostRuns)}var runDependencies=0;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module[\"monitorRunDependencies\"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module[\"monitorRunDependencies\"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module[\"onAbort\"]?.(what);what=\"Aborted(\"+what+\")\";err(what);ABORT=true;what+=\". Build with -sASSERTIONS for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module[\"locateFile\"]){return locateFile(\"openjpeg.wasm\")}return new URL(\"openjpeg.wasm\",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw\"both async and sync fetching of the wasm failed\"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&typeof WebAssembly.instantiateStreaming==\"function\"){try{var response=fetch(binaryFile,{credentials:\"same-origin\"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err(\"falling back to ArrayBuffer instantiation\")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports[\"s\"];updateMemoryViews();removeRunDependency(\"wasm-instantiate\");return wasmExports}addRunDependency(\"wasm-instantiate\");function receiveInstantiationResult(result){return receiveInstance(result[\"instance\"])}var info=getWasmImports();if(Module[\"instantiateWasm\"]){return new Promise((resolve,reject)=>{Module[\"instantiateWasm\"](info,(mod,inst)=>{receiveInstance(mod,inst);resolve(mod.exports)})})}wasmBinaryFile??=findWasmBinary();try{var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}catch(e){readyPromiseReject(e);return Promise.reject(e)}}class ExitStatus{name=\"ExitStatus\";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.unshift(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.unshift(cb);var noExitRuntime=Module[\"noExitRuntime\"]||true;var __abort_js=()=>abort(\"\");var runtimeKeepaliveCounter=0;var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var timers={};var handleException=e=>{if(e instanceof ExitStatus||e==\"unwind\"){return EXITSTATUS}quit_(1,e)};var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module[\"onExit\"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var _emscripten_get_now=()=>performance.now();var __setitimer_js=(which,timeout_ms)=>{if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0};function _copy_pixels_1(compG_ptr,nb_pixels){compG_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);imageData.set(compG)}function _copy_pixels_3(compR_ptr,compG_ptr,compB_ptr,nb_pixels){compR_ptr>>=2;compG_ptr>>=2;compB_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*3);const compR=HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);for(let i=0;i<nb_pixels;i++){imageData[3*i]=compR[i];imageData[3*i+1]=compG[i];imageData[3*i+2]=compB[i]}}function _copy_pixels_4(compR_ptr,compG_ptr,compB_ptr,compA_ptr,nb_pixels){compR_ptr>>=2;compG_ptr>>=2;compB_ptr>>=2;compA_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compR=HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);const compA=HEAP32.subarray(compA_ptr,compA_ptr+nb_pixels);for(let i=0;i<nb_pixels;i++){imageData[4*i]=compR[i];imageData[4*i+1]=compG[i];imageData[4*i+2]=compB[i];imageData[4*i+3]=compA[i]}}var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||\"./this.program\";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i<str.length;++i){HEAP8[buffer++]=str.charCodeAt(i)}HEAP8[buffer]=0};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var _fd_close=fd=>52;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>num<INT53_MIN||num>INT53_MAX?NaN:Number(num);function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);return 70}var printCharBuffers=[null,[],[]];var UTF8Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str=\"\";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer));buffer.length=0}else{buffer.push(curr)}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\";var _fd_write=(fd,iov,iovcnt,pnum)=>{var num=0;for(var i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j<len;j++){printChar(fd,HEAPU8[ptr+j])}num+=len}HEAPU32[pnum>>2]=num;return 0};function _gray_to_rgba(compG_ptr,nb_pixels){compG_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);for(let i=0;i<nb_pixels;i++){imageData[4*i]=imageData[4*i+1]=imageData[4*i+2]=compG[i];imageData[4*i+3]=255}}function _graya_to_rgba(compG_ptr,compA_ptr,nb_pixels){compG_ptr>>=2;compA_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compA=HEAP32.subarray(compA_ptr,compA_ptr+nb_pixels);for(let i=0;i<nb_pixels;i++){imageData[4*i]=imageData[4*i+1]=imageData[4*i+2]=compG[i];imageData[4*i+3]=compA[i]}}function _jsPrintWarning(message_ptr){const message=UTF8ToString(message_ptr);(Module.warn||console.warn)(`OpenJPEG: ${message}`)}function _rgb_to_rgba(compR_ptr,compG_ptr,compB_ptr,nb_pixels){compR_ptr>>=2;compG_ptr>>=2;compB_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compR=HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);for(let i=0;i<nb_pixels;i++){imageData[4*i]=compR[i];imageData[4*i+1]=compG[i];imageData[4*i+2]=compB[i];imageData[4*i+3]=255}}function _storeErrorMessage(message_ptr){const message=UTF8ToString(message_ptr);if(!Module.errorMessages){Module.errorMessages=message}else{Module.errorMessages+=\"\\n\"+message}}var wasmImports={l:__abort_js,k:__emscripten_runtime_keepalive_clear,m:__setitimer_js,g:_copy_pixels_1,f:_copy_pixels_3,e:_copy_pixels_4,n:_emscripten_resize_heap,p:_environ_get,q:_environ_sizes_get,b:_fd_close,o:_fd_seek,c:_fd_write,r:_gray_to_rgba,i:_graya_to_rgba,d:_jsPrintWarning,j:_proc_exit,h:_rgb_to_rgba,a:_storeErrorMessage};var wasmExports=await createWasm();var ___wasm_call_ctors=wasmExports[\"t\"];var _malloc=Module[\"_malloc\"]=wasmExports[\"u\"];var _free=Module[\"_free\"]=wasmExports[\"v\"];var _jp2_decode=Module[\"_jp2_decode\"]=wasmExports[\"x\"];var __emscripten_timeout=wasmExports[\"y\"];function run(){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module[\"onRuntimeInitialized\"]?.();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(()=>{setTimeout(()=>Module[\"setStatus\"](\"\"),1);doRun()},1)}else{doRun()}}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();moduleRtn=readyPromise;\n\n\n  return moduleRtn;\n}\n);\n})();\nexport default OpenJPEG;\n","/* Copyright 2012 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\nimport { BaseStream } from \"./base_stream.js\";\nimport { stringToBytes } from \"../shared/util.js\";\n\nclass Stream extends BaseStream {\n  constructor(arrayBuffer, start, length, dict) {\n    super();\n\n    this.bytes =\n      arrayBuffer instanceof Uint8Array\n        ? arrayBuffer\n        : new Uint8Array(arrayBuffer);\n    this.start = start || 0;\n    this.pos = this.start;\n    this.end = start + length || this.bytes.length;\n    this.dict = dict;\n  }\n\n  get length() {\n    return this.end - this.start;\n  }\n\n  get isEmpty() {\n    return this.length === 0;\n  }\n\n  getByte() {\n    if (this.pos >= this.end) {\n      return -1;\n    }\n    return this.bytes[this.pos++];\n  }\n\n  getBytes(length) {\n    const bytes = this.bytes;\n    const pos = this.pos;\n    const strEnd = this.end;\n\n    if (!length) {\n      return bytes.subarray(pos, strEnd);\n    }\n    let end = pos + length;\n    if (end > strEnd) {\n      end = strEnd;\n    }\n    this.pos = end;\n    return bytes.subarray(pos, end);\n  }\n\n  getByteRange(begin, end) {\n    if (begin < 0) {\n      begin = 0;\n    }\n    if (end > this.end) {\n      end = this.end;\n    }\n    return this.bytes.subarray(begin, end);\n  }\n\n  reset() {\n    this.pos = this.start;\n  }\n\n  moveStart() {\n    this.start = this.pos;\n  }\n\n  makeSubStream(start, length, dict = null) {\n    return new Stream(this.bytes.buffer, start, length, dict);\n  }\n}\n\nclass StringStream extends Stream {\n  constructor(str) {\n    super(stringToBytes(str));\n  }\n}\n\nclass NullStream extends Stream {\n  constructor() {\n    super(new Uint8Array(0));\n  }\n}\n\nexport { NullStream, Stream, StringStream };\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\nimport { BaseException, warn } from \"../shared/util.js\";\nimport { fetchBinaryData } from \"./core_utils.js\";\nimport OpenJPEG from \"../../external/openjpeg/openjpeg.js\";\nimport { Stream } from \"./stream.js\";\n\nclass JpxError extends BaseException {\n  constructor(msg) {\n    super(msg, \"JpxError\");\n  }\n}\n\nclass JpxImage {\n  static #buffer = null;\n\n  static #handler = null;\n\n  static #modulePromise = null;\n\n  static #useWasm = true;\n\n  static #useWorkerFetch = true;\n\n  static #wasmUrl = null;\n\n  static setOptions({ handler, useWasm, useWorkerFetch, wasmUrl }) {\n    this.#useWasm = useWasm;\n    this.#useWorkerFetch = useWorkerFetch;\n    this.#wasmUrl = wasmUrl;\n\n    if (!useWorkerFetch) {\n      this.#handler = handler;\n    }\n  }\n\n  static async #getJsModule(fallbackCallback) {\n    const path =\n      typeof PDFJSDev === \"undefined\"\n        ? `../${this.#wasmUrl}openjpeg_nowasm_fallback.js`\n        : `${this.#wasmUrl}openjpeg_nowasm_fallback.js`;\n\n    let instance = null;\n    try {\n      const mod = await (typeof PDFJSDev === \"undefined\"\n        ? import(path) // eslint-disable-line no-unsanitized/method\n        : __raw_import__(path));\n      instance = mod.default();\n    } catch (e) {\n      warn(`JpxImage#getJsModule: ${e}`);\n    }\n    fallbackCallback(instance);\n  }\n\n  static async #instantiateWasm(fallbackCallback, imports, successCallback) {\n    const filename = \"openjpeg.wasm\";\n    try {\n      if (!this.#buffer) {\n        if (this.#useWorkerFetch) {\n          this.#buffer = await fetchBinaryData(`${this.#wasmUrl}${filename}`);\n        } else {\n          this.#buffer = await this.#handler.sendWithPromise(\n            \"FetchBinaryData\",\n            { type: \"wasmFactory\", filename }\n          );\n        }\n      }\n      const results = await WebAssembly.instantiate(this.#buffer, imports);\n      return successCallback(results.instance);\n    } catch (reason) {\n      warn(`JpxImage#instantiateWasm: ${reason}`);\n\n      this.#getJsModule(fallbackCallback);\n      return null;\n    } finally {\n      this.#handler = null;\n    }\n  }\n\n  static async decode(\n    bytes,\n    { numComponents = 4, isIndexedColormap = false, smaskInData = false } = {}\n  ) {\n    if (!this.#modulePromise) {\n      const { promise, resolve } = Promise.withResolvers();\n      const promises = [promise];\n      if (!this.#useWasm) {\n        this.#getJsModule(resolve);\n      } else {\n        promises.push(\n          OpenJPEG({\n            warn,\n            instantiateWasm: this.#instantiateWasm.bind(this, resolve),\n          })\n        );\n      }\n      this.#modulePromise = Promise.race(promises);\n    }\n    const module = await this.#modulePromise;\n\n    if (!module) {\n      throw new JpxError(\"OpenJPEG failed to initialize\");\n    }\n    let ptr;\n\n    try {\n      const size = bytes.length;\n      ptr = module._malloc(size);\n      module.HEAPU8.set(bytes, ptr);\n      const ret = module._jp2_decode(\n        ptr,\n        size,\n        numComponents > 0 ? numComponents : 0,\n        !!isIndexedColormap,\n        !!smaskInData\n      );\n      if (ret) {\n        const { errorMessages } = module;\n        if (errorMessages) {\n          delete module.errorMessages;\n          throw new JpxError(errorMessages);\n        }\n        throw new JpxError(\"Unknown error\");\n      }\n      const { imageData } = module;\n      module.imageData = null;\n\n      return imageData;\n    } finally {\n      if (ptr) {\n        module._free(ptr);\n      }\n    }\n  }\n\n  static cleanup() {\n    this.#modulePromise = null;\n  }\n\n  static parseImageProperties(stream) {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n      if (stream instanceof ArrayBuffer || ArrayBuffer.isView(stream)) {\n        stream = new Stream(stream);\n      } else {\n        throw new JpxError(\"Invalid data format, must be a TypedArray.\");\n      }\n    }\n    // No need to use OpenJPEG here since we're only getting very basic\n    // information which are located in the first bytes of the file.\n    let newByte = stream.getByte();\n    while (newByte >= 0) {\n      const oldByte = newByte;\n      newByte = stream.getByte();\n      const code = (oldByte << 8) | newByte;\n      // Image and tile size (SIZ)\n      if (code === 0xff51) {\n        stream.skip(4);\n        const Xsiz = stream.getInt32() >>> 0; // Byte 4\n        const Ysiz = stream.getInt32() >>> 0; // Byte 8\n        const XOsiz = stream.getInt32() >>> 0; // Byte 12\n        const YOsiz = stream.getInt32() >>> 0; // Byte 16\n        stream.skip(16);\n        const Csiz = stream.getUint16(); // Byte 36\n        return {\n          width: Xsiz - XOsiz,\n          height: Ysiz - YOsiz,\n          // Results are always returned as `Uint8ClampedArray`s.\n          bitsPerComponent: 8,\n          componentsCount: Csiz,\n        };\n      }\n    }\n    throw new JpxError(\"No size marker found in JPX stream\");\n  }\n}\n\nexport { JpxError, JpxImage };\n","/* Copyright 2018 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\nimport {\n  getVerbosityLevel,\n  setVerbosityLevel,\n  VerbosityLevel,\n} from \"./shared/util.js\";\nimport { Jbig2Error, Jbig2Image } from \"./core/jbig2.js\";\nimport { JpegError, JpegImage } from \"./core/jpg.js\";\nimport { JpxError, JpxImage } from \"./core/jpx.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion =\n  typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : void 0;\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild =\n  typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : void 0;\n\nglobalThis.pdfjsImageDecoders = {\n  getVerbosityLevel,\n  Jbig2Error,\n  Jbig2Image,\n  JpegError,\n  JpegImage,\n  JpxError,\n  JpxImage,\n  setVerbosityLevel,\n  VerbosityLevel,\n};\n\nexport {\n  getVerbosityLevel,\n  Jbig2Error,\n  Jbig2Image,\n  JpegError,\n  JpegImage,\n  JpxError,\n  JpxImage,\n  setVerbosityLevel,\n  VerbosityLevel,\n};\n"],"names":["isNodeJS","process","versions","nw","electron","type","FONT_IDENTITY_MATRIX","LINE_FACTOR","LINE_DESCENT_FACTOR","BASELINE_FACTOR","RenderingIntentFlag","ANY","DISPLAY","PRINT","SAVE","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","IS_EDITING","OPLIST","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","AnnotationEditorPrefix","AnnotationEditorType","NONE","FREETEXT","HIGHLIGHT","STAMP","INK","SIGNATURE","AnnotationEditorParamsType","RESIZE","CREATE","FREETEXT_SIZE","FREETEXT_COLOR","FREETEXT_OPACITY","INK_COLOR","INK_THICKNESS","INK_OPACITY","HIGHLIGHT_COLOR","HIGHLIGHT_DEFAULT_COLOR","HIGHLIGHT_THICKNESS","HIGHLIGHT_FREE","HIGHLIGHT_SHOW_ALL","DRAW_STEP","PermissionFlag","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","UNDERLINE","SQUIGGLY","STRIKEOUT","CARET","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","VerbosityLevel","ERRORS","WARNINGS","INFOS","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotation","endAnnotation","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","setStrokeTransparent","setFillTransparent","rawFillPath","DrawOPS","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","setVerbosityLevel","level","Number","isInteger","getVerbosityLevel","info","msg","console","log","warn","unreachable","Error","assert","cond","_isValidProtocol","url","protocol","createValidAbsoluteUrl","baseUrl","options","addDefaultProtocol","startsWith","dots","match","length","tryConvertEncoding","stringToUTF8String","absoluteUrl","URL","parse","updateUrlHash","hash","allowRel","res","href","split","shadow","obj","prop","value","nonSerializable","Object","defineProperty","enumerable","configurable","writable","BaseException","BaseExceptionClosure","message","name","prototype","constructor","PasswordException","code","UnknownErrorException","details","InvalidPDFException","ResponseException","status","missing","FormatError","AbortException","bytesToString","bytes","undefined","MAX_ARGUMENT_COUNT","String","fromCharCode","apply","strBuf","i","chunkEnd","Math","min","chunk","subarray","push","join","stringToBytes","str","Uint8Array","charCodeAt","string32","objectSize","keys","isLittleEndian","buffer8","view32","Uint32Array","buffer","isEvalSupported","Function","FeatureTest","isOffscreenCanvasSupported","OffscreenCanvas","isImageDecoderSupported","ImageDecoder","platform","navigator","userAgent","isAndroid","includes","isLinux","isMac","isWindows","isFirefox","isCSSRoundSupported","globalThis","CSS","supports","hexNumbers","Array","from","n","toString","padStart","Util","makeHexColor","r","g","b","scaleMinMax","minMax","temp","m1","m2","applyTransform","p","m","pos","p0","p1","applyTransformToBezier","m0","m3","m4","m5","pI","pI1","applyInverseTransform","d","axialAlignedBoundingBox","rect","output","r0","r1","r2","r3","a0","a2","a1","a3","b0","b2","b1","b3","m1r0","m1r2","m2r1","m2r3","max","inverseTransform","singularValueDecompose2dScale","matrix","a","c","first","second","sqrt","normalizeRect","slice","intersect","rect1","rect2","xLow","xHigh","yLow","yHigh","pointBoundingBox","x","y","rectBoundingBox","x0","y0","x1","y1","getExtremumOnCurve","#getExtremumOnCurve","x2","x3","y2","y3","t","mt","tt","ttt","getExtremum","#getExtremum","abs","delta","sqrtDelta","bezierBoundingBox","PDFStringTranslateTable","stringToPDFString","encoding","decoder","TextDecoder","fatal","decoded","decode","replaceAll","ex","ii","charCode","charAt","decodeURIComponent","escape","utf8StringToString","unescape","encodeURIComponent","isArrayEqual","arr1","arr2","getModificationDate","date","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","NormalizeRegex","NormalizationMap","normalizeUnicode","Map","_","p2","normalize","get","getUuid","crypto","randomUUID","buf","getRandomValues","AnnotationPrefix","_isValidExplicitDest","validRef","validName","dest","isArray","page","zoom","args","argsLen","allowNull","arg","MathClamp","v","toHexUtil","arr","toHex","num","toBase64Util","toBase64","btoa","fromBase64Util","fromBase64","atob","Promise","try","fn","resolve","sumPrecise","numbers","reduce","CIRCULAR_REF","Symbol","EOF","CmdCache","create","NameCache","RefCache","clearPrimitiveCaches","Name","Cmd","cmd","nonSerializableClosure","Dict","xref","_map","objId","suppressEncryption","__nonSerializable__","assignXref","newXref","size","key1","key2","key3","Ref","fetch","getAsync","fetchAsync","getArray","getRaw","key","getKeys","getRawValues","values","set","has","iterator","empty","emptyDict","merge","dictArray","mergeSubDicts","mergedDict","properties","dict","property","subDict","clear","clone","delete","gen","fromString","ref","exec","parseInt","RefSet","parent","_set","Set","put","add","remove","RefSetCache","putAlias","aliasRef","items","isName","isCmd","isDict","isRefsEqual","v1","v2","BaseStream","isEmpty","isDataLoaded","getByte","getBytes","getImageData","decoderOptions","asyncGetBytes","isAsync","isAsyncDecoder","canAsyncDecodeImageFromBuffer","getTransferableImage","peekByte","peekedByte","peekBytes","getUint16","getInt32","getByteRange","begin","end","getString","skip","reset","moveStart","makeSubStream","start","getBaseStreams","PDF_VERSION_REGEXP","MAX_INT_32","MIN_INT_32","IDENTITY_MATRIX","RESOURCES_KEYS_OPERATOR_LIST","RESOURCES_KEYS_TEXT_CONTENT","getLookupTableFactory","initializer","lookup","MissingDataException","ParserEOFException","XRefEntryException","XRefParseException","arrayBuffersToBytes","dataLength","byteLength","data","item","fetchBinaryData","response","ok","statusText","arrayBuffer","getInheritableProperty","stopWhenFound","visited","getParentToUpdate","firstDict","result","ROMAN_NUMBER_MAP","toRomanNumerals","number","lowerCase","roman","repeat","toLowerCase","log2","ceil","readInt8","offset","readInt16","readUint16","readUint32","isWhiteSpace","ch","isBooleanArray","len","every","isNumberArray","ArrayBuffer","isView","BigInt64Array","BigUint64Array","lookupMatrix","fallback","lookupRect","lookupNormalRect","parseXFAPath","path","positionPattern","map","component","escapePDFName","char","substring","escapeString","_collectJS","entry","list","parents","element","js","collectActions","eventType","actions","additionalActionsDicts","additionalActions","action","actionDict","Action","XMLEntities","codePointIter","codePointAt","encodeToXmlString","entity","toUpperCase","validateFontName","fontFamily","mustWarn","re","RegExp","test","ident","validateCSSFont","cssFontInfo","DEFAULT_CSS_FONT_OBLIQUE","DEFAULT_CSS_FONT_WEIGHT","CSS_FONT_WEIGHT_VALUES","fontWeight","italicAngle","weight","angle","parseFloat","isNaN","recoverJsURL","URL_OPEN_METHODS","regex","jsUrl","newWindow","numberToString","roundedValue","round","toFixed","getNewAnnotationsMap","annotationStorage","newAnnotationsByPage","annotations","pageIndex","stringToAsciiOrUTF16BE","isAscii","stringToUTF16String","stringToUTF16HexString","bigEndian","getRotationMatrix","rotation","width","height","getSizeInBytes","QeTable","qe","nmps","nlps","switchFlag","ArithmeticDecoder","bp","dataEnd","chigh","clow","byteIn","ct","readBit","contexts","cx_index","cx_mps","qeTableIcx","qeIcx","ccittEOL","ccittEOF","twoDimPass","twoDimHoriz","twoDimVert0","twoDimVertR1","twoDimVertL1","twoDimVertR2","twoDimVertL2","twoDimVertR3","twoDimVertL3","twoDimTable","whiteTable1","whiteTable2","blackTable1","blackTable2","blackTable3","CCITTFaxDecoder","source","next","eof","eoline","EndOfLine","byteAlign","EncodedByteAlign","columns","Columns","rows","Rows","eoblock","EndOfBlock","black","BlackIs1","codingLine","refLine","codingPos","row","nextLine2D","inputBits","inputBuf","outputBits","rowsDone","code1","_lookBits","_eatBits","readNextChar","refPos","blackPixels","bits","err","code2","code3","_getTwoDimCode","_addPixels","_getBlackCode","_getWhiteCode","_addPixelsNeg","gotEOL","_findTableCode","table","limit","limitValue","Jbig2Error","ContextCache","getContexts","id","Int8Array","DecodingContext","contextCache","cache","decodeInteger","procedure","prev","readBits","bit","sign","signedValue","decodeIAID","codeLength","SegmentTypes","CodingTemplates","RefinementTemplates","coding","reference","ReusedContexts","RefinementReusedContexts","decodeBitmapTemplate0","decodingContext","bitmap","contextLabel","j","pixel","row1","row2","OLD_PIXEL_MASK","decodeBitmap","mmr","templateIndex","prediction","at","input","Reader","decodeMMRBitmap","useskip","template","concat","sort","templateLength","templateX","templateY","changingTemplateEntries","reuseMask","minX","maxX","minY","k","changingEntriesLength","changingTemplateX","changingTemplateY","changingTemplateBit","Uint16Array","sbb_left","sbb_top","sbb_right","pseudoPixelContext","ltp","i0","j0","shift","sltp","decodeRefinement","referenceBitmap","offsetX","offsetY","codingTemplate","codingTemplateLength","codingTemplateX","Int32Array","codingTemplateY","referenceTemplate","referenceTemplateLength","referenceTemplateX","referenceTemplateY","referenceWidth","referenceHeight","decodeSymbolDictionary","huffman","refinement","symbols","numberOfNewSymbols","numberOfExportedSymbols","huffmanTables","refinementTemplateIndex","refinementAt","huffmanInput","newSymbols","currentHeight","symbolCodeLength","tableB1","symbolWidths","getStandardTable","deltaHeight","tableDeltaHeight","currentWidth","totalWidth","firstSymbol","deltaWidth","tableDeltaWidth","numberOfInstances","decodeTextRegion","symbolId","rdx","rdy","symbol","bitmapSize","tableBitmapSize","collectiveBitmap","readUncompressedBitmap","originalEnd","bitmapEnd","position","numberOfSymbolsDecoded","xMin","xMax","bitmapWidth","symbolBitmap","exportedSymbols","flags","currentFlag","totalSymbolsLength","runLength","defaultPixelValue","numberOfSymbolInstances","stripSize","inputSymbols","transposed","dsOffset","referenceCorner","combinationOperator","logStripSize","stripT","tableDeltaT","firstS","deltaT","deltaFirstS","tableFirstS","currentS","currentT","symbolIDTable","applyRefinement","symbolWidth","symbolHeight","rdw","rdh","increment","offsetT","offsetS","s2","t2","symbolRow","maxWidth","deltaS","tableDeltaS","decodePatternDictionary","patternWidth","patternHeight","maxPatternIndex","collectiveWidth","patterns","patternBitmap","decodeHalftoneRegion","regionWidth","regionHeight","enableSkip","gridWidth","gridHeight","gridOffsetX","gridOffsetY","gridVectorX","gridVectorY","regionBitmap","numberOfPatterns","pattern0","bitsPerValue","grayScaleBitPlanes","mmrInput","mg","ng","patternIndex","patternRow","regionRow","regionX","regionY","readSegmentHeader","segmentHeader","segmentType","typeName","deferredNonRetain","pageAssociationFieldSize","referredFlags","referredToCount","retainBits","referredToSegmentNumberSize","referredTo","pageAssociation","genericRegionInfo","readRegionSegmentInformation","genericRegionSegmentFlags","RegionSegmentInformationFieldLength","genericRegionMmr","searchPatternLength","searchPattern","headerEnd","readSegments","header","segments","segment","randomAccess","processSegment","visitor","atLength","dictionary","dictionaryFlags","huffmanDHSelector","huffmanDWSelector","bitmapSizeSelector","aggregationInstancesSelector","bitmapCodingContextUsed","bitmapCodingContextRetained","refinementTemplate","textRegion","textRegionSegmentFlags","textRegionHuffmanFlags","huffmanFS","huffmanDS","huffmanDT","huffmanRefinementDW","huffmanRefinementDH","huffmanRefinementDX","huffmanRefinementDY","huffmanRefinementSizeSelector","patternDictionary","patternDictionaryFlags","halftoneRegion","halftoneRegionFlags","genericRegion","pageInfo","resolutionX","resolutionY","pageSegmentFlags","lossless","requiresBuffer","combinationOperatorOverride","callbackName","processSegments","parseJbig2Chunks","chunks","SimpleSegmentVisitor","parseJbig2","numberOfPages","currentPageInfo","bitPacked","imgData","Uint8ClampedArray","q","mask","onPageInformation","rowSize","drawBitmap","regionInfo","mask0","offset0","onImmediateGenericRegion","region","onImmediateLosslessGenericRegion","arguments","onSymbolDictionary","currentSegment","referredSegments","getSymbolDictionaryHuffmanTables","customTables","referredSegment","referredSymbols","onImmediateTextRegion","getTextRegionHuffmanTables","onImmediateLosslessTextRegion","onPatternDictionary","onImmediateHalftoneRegion","onImmediateLosslessHalftoneRegion","onTables","decodeTablesSegment","HuffmanLine","lineData","isOOB","rangeLow","prefixLength","rangeLength","prefixCode","isLowerRange","HuffmanTreeNode","line","children","isLeaf","buildTree","node","decodeNode","reader","htOffset","HuffmanTable","lines","prefixCodesDone","assignPrefixCodes","rootNode","linesLength","prefixLengthMax","histogram","currentLength","firstCode","currentCode","currentTemp","lowestValue","highestValue","prefixSizeBits","rangeSizeBits","currentRangeLow","standardTablesCache","currentByte","numBits","getCustomHuffmanTable","index","currentIndex","numberOfSymbols","codes","runCodesTable","repeatedLength","numberOfRepeats","customIndex","tableAggregateInstances","endOfBlock","params","lookForEOFLimit","Jbig2Image","parseChunks","resizeRgbImage","src","w1","h1","w2","h2","alpha01","COMPONENTS","xRatio","yRatio","newIndex","oldIndex","xScaled","w1Scanline","floor","py","resizeRgbaImage","src32","dest32","rgbMask","copyRgbaImage","ColorSpace","numComps","getRgb","srcOffset","rgb","getRgbItem","destOffset","getRgbBuffer","count","getOutputLength","inputLength","isPassthrough","isDefaultDecode","decodeMap","bpc","fillRgb","originalWidth","originalHeight","actualHeight","comps","rgbBuf","numComponentColors","needsResizing","allColors","colorMap","destPos","rgbPos","usesZeroToOneRange","AlternateCS","base","tintFn","tmpBuf","Float32Array","scale","baseNumComps","baseBuf","scaled","tinted","PatternCS","baseCS","IndexedCS","highVal","outputDelta","lookupPos","DeviceGrayCS","DeviceRgbCS","DeviceRgbaCS","_alpha01","DeviceCmykCS","toRgb","#toRgb","srcScale","CalGrayCS","whitePoint","blackPoint","gamma","XW","YW","ZW","XB","YB","ZB","G","A","AG","L","val","CalRGBCS","BRADFORD_SCALE_MATRIX","BRADFORD_SCALE_INVERSE_MATRIX","SRGB_D65_XYZ_TO_RGB_MATRIX","FLAT_WHITEPOINT_MATRIX","tempNormalizeMatrix","tempConvertMatrix1","tempConvertMatrix2","DECODE_L_CONSTANT","GR","GG","GB","MXA","MYA","MZA","MXB","MYB","MZB","MXC","MYC","MZC","matrixProduct","#matrixProduct","toFlat","#toFlat","sourceWhitePoint","LMS","toD65","#toD65","D65X","D65Y","D65Z","sRGBTransferFunction","#sRGBTransferFunction","color","decodeL","#decodeL","compensateBlackPoint","#compensateBlackPoint","sourceBlackPoint","XYZ_Flat","zeroDecodeL","X_DST","X_SRC","Y_DST","Y_SRC","Z_DST","Z_SRC","X_Scale","X_Offset","Y_Scale","Y_Offset","Z_Scale","Z_Offset","normalizeWhitePointToFlat","#normalizeWhitePointToFlat","XYZ_In","LMS_Flat","normalizeWhitePointToD65","#normalizeWhitePointToD65","LMS_D65","B","AGR","BGG","CGB","Y","Z","XYZ","XYZ_Black","XYZ_D65","SRGB","LabCS","range","amin","amax","bmin","bmax","fn_g","#fn_g","#decode","high1","low2","high2","maxVal","Ls","as","bs","M","N","QCMS","_module","_mustAddAlpha","_destBuffer","copy_result","ptr","memory","copy_rgb","wasm","cachedTextDecoder","ignoreBOM","cachedUint8ArrayMemory0","getUint8ArrayMemory0","getStringFromWasm0","WASM_VECTOR_LEN","passArray8ToWasm0","malloc","qcms_convert_array","transformer","ptr0","__wbindgen_malloc","len0","qcms_convert_one","qcms_convert_three","src1","src2","src3","qcms_convert_four","src4","qcms_transformer_from_memory","mem","in_type","intent","ret","qcms_drop_transformer","DataType","freeze","RGB8","RGBA8","BGRA8","Gray8","GrayA8","CMYK","Intent","Perceptual","RelativeColorimetric","Saturation","AbsoluteColorimetric","__wbg_load","module","imports","Response","WebAssembly","instantiateStreaming","e","headers","instantiate","instance","Instance","__wbg_get_imports","wbg","__wbg_copyresult_b08ee7d273f295dd","arg0","arg1","__wbg_copyrgb_d60ce17bb05d9b67","__wbindgen_init_externref_table","__wbindgen_export_0","grow","__wbindgen_throw","__wbg_init_memory","__wbg_finalize_init","exports","__wbg_init","__wbindgen_wasm_module","__wbindgen_start","initSync","getPrototypeOf","Module","module_or_path","import","meta","Request","fetchSync","xhr","XMLHttpRequest","open","responseType","send","IccColorSpace","convertPixel","useWasm","wasmUrl","finalizer","FinalizationRegistry","iccProfile","isUsable","inType","register","setOptions","useWorkerFetch","CmykICCBasedCS","iccUrl","ColorSpaceUtils","cs","resources","pdfFunctionFactory","globalColorSpaceCache","localColorSpaceCache","asyncIfNotCached","csName","csRef","parsedCS","cachedCS","getByRef","getByName","reject","subParse","#subParse","#parse","fetchIfRef","gray","rgba","cmyk","colorSpaces","resourcesCS","mode","isRef","stream","iccCS","altRaw","altCS","hiVal","convertToRGBA","kind","convertBlackAndWhiteToRGBA","convertRGBToRGBA","srcPos","nonBlackColor","inverseDecode","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","elem","len32","s1","s3","jj","grayToRGBA","JpegError","DNLMarkerError","scanLines","EOIMarkerError","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","buildHuffmanTable","codeLengths","pop","getBlockBufferOffset","col","blocksPerLine","decodeScan","frame","components","resetInterval","spectralStart","spectralEnd","successivePrev","successive","parseDNLMarker","mcusPerLine","progressive","startOffset","bitsData","bitsCount","nextByte","maybeScanLines","blockRow","precision","decodeHuffman","tree","receive","receiveAndExtend","decodeBaseline","blockOffset","huffmanTableDC","diff","blockData","pred","rs","huffmanTableAC","s","z","decodeDCFirst","decodeDCSuccessive","eobrun","decodeACFirst","successiveACState","successiveACNextValue","decodeACSuccessive","offsetZ","decodeMcu","mcu","mcuRow","mcuCol","blockCol","h","decodeBlock","componentsLength","decodeFn","fileMarker","mcuExpected","blocksPerColumn","mcusPerColumn","mcuToRead","findNextFileMarker","invalid","partialMsg","marker","quantizeAndInverse","blockBufferOffset","qt","quantizationTable","v0","v3","v4","v5","v6","v7","p3","p4","p5","p6","p7","buildComponentData","computationBuffer","Int16Array","currentPos","startPos","maxPos","newPos","currentMarker","newMarker","prepareComponents","samplesPerLine","maxH","maxV","blocksPerLineForMcu","blocksPerColumnForMcu","blocksBufferSize","readDataBlock","endOffset","array","appData","oldOffset","newOffset","skipData","JpegImage","decodeTransform","colorTransform","_decodeTransform","_colorTransform","canUseImageDecoder","exifOffsets","numComponents","markerLoop","exifStart","exifEnd","dnlScanLines","jfif","adobe","numSOSMarkers","quantizationTables","huffmanTablesAC","huffmanTablesDC","l","version","major","minor","densityUnits","xDensity","yDensity","thumbWidth","thumbHeight","thumbData","flags0","flags1","transformCode","quantizationTablesLength","quantizationTablesEnd","quantizationTableSpec","tableData","extended","sofScanLines","componentIds","componentsCount","componentId","qId","quantizationId","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","selectorsCount","componentIndex","tableSpec","successiveApproximation","processed","nextFileMarker","scaleX","scaleY","_getLinearizedBlockData","isSourcePDF","componentScaleX","componentScaleY","blocksPerScanline","xScaleBlockOffset","mask3LSB","lastComponentScaleX","_isColorConversionNeeded","_convertYccToRgb","Cb","Cr","_convertYccToRgba","out","_convertYcckToRgb","_convertYcckToCmyk","_convertCmykToRgb","_convertYcckToRgba","_convertCmykToRgba","getData","forceRGBA","forceRGB","rgbaData","grayColor","OpenJPEG","_scriptName","moduleArg","moduleRtn","readyPromiseResolve","readyPromiseReject","readyPromise","ENVIRONMENT_IS_WEB","ENVIRONMENT_IS_WORKER","moduleOverrides","assign","arguments_","thisProgram","quit_","toThrow","scriptDirectory","locateFile","readAsync","readBinary","self","location","document","currentScript","replace","lastIndexOf","credentials","bind","error","wasmBinary","wasmMemory","ABORT","EXITSTATUS","HEAP8","HEAPU8","HEAP16","HEAPU16","HEAP32","HEAPU32","HEAPF32","HEAP64","HEAPU64","HEAPF64","runtimeInitialized","updateMemoryViews","Float64Array","preRun","addOnPreRun","callRuntimeCallbacks","onPreRuns","initRuntime","wasmExports","postRun","addOnPostRun","onPostRuns","runDependencies","dependenciesFulfilled","addRunDependency","removeRunDependency","callback","abort","what","RuntimeError","wasmBinaryFile","findWasmBinary","getBinarySync","file","getWasmBinary","binaryFile","instantiateArrayBuffer","binary","reason","instantiateAsync","instantiationResult","getWasmImports","wasmImports","createWasm","receiveInstance","receiveInstantiationResult","mod","inst","ExitStatus","callbacks","cb","unshift","noExitRuntime","__abort_js","runtimeKeepaliveCounter","__emscripten_runtime_keepalive_clear","timers","handleException","keepRuntimeAlive","_proc_exit","exitJS","implicit","_exit","maybeExit","callUserCallback","func","_emscripten_get_now","performance","now","__setitimer_js","which","timeout_ms","clearTimeout","setTimeout","__emscripten_timeout","_copy_pixels_1","compG_ptr","nb_pixels","imageData","compG","_copy_pixels_3","compR_ptr","compB_ptr","compR","compB","_copy_pixels_4","compA_ptr","compA","getHeapMax","alignMemory","alignment","growMemory","pages","_emscripten_resize_heap","requestedSize","oldSize","maxHeapSize","cutDown","overGrownHeapSize","newSize","replacement","ENV","getExecutableName","getEnvStrings","strings","lang","languages","env","USER","LOGNAME","PATH","PWD","HOME","LANG","stringToAscii","_environ_get","__environ","environ_buf","bufSize","forEach","string","_environ_sizes_get","penviron_count","penviron_buf_size","_fd_close","fd","INT53_MAX","INT53_MIN","bigintToI53Checked","NaN","_fd_seek","whence","printCharBuffers","UTF8Decoder","UTF8ArrayToString","heapOrArray","idx","maxBytesToRead","endIdx","endPtr","u0","u1","u2","printChar","curr","UTF8ToString","_fd_write","iov","iovcnt","pnum","_gray_to_rgba","_graya_to_rgba","_jsPrintWarning","message_ptr","_rgb_to_rgba","_storeErrorMessage","errorMessages","f","o","___wasm_call_ctors","_malloc","_free","_jp2_decode","run","doRun","Stream","strEnd","StringStream","NullStream","JpxError","JpxImage","handler","modulePromise","getJsModule","#getJsModule","fallbackCallback","default","instantiateWasm","#instantiateWasm","successCallback","filename","sendWithPromise","results","isIndexedColormap","smaskInData","promise","withResolvers","promises","race","cleanup","parseImageProperties","newByte","oldByte","Xsiz","Ysiz","XOsiz","YOsiz","Csiz","bitsPerComponent","pdfjsVersion","pdfjsBuild","pdfjsImageDecoders"],"sourceRoot":""}