{"version":3,"file":"/viewer.min.js","mappings":";;;;;;;;;;;;;;AAAA,iEAAe,CAAC,MAAM;EAClB,IAAIA,EAAE,GAAGC,SAAS,CAACC,SAAS,CAACC,WAAW,EAAE;EAE1C,IAAIH,EAAE,CAACI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAIJ,EAAE,CAACI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;IAC1D,OAAO,KAAK;EAChB,CAAC,MACI,IAAIJ,EAAE,CAACI,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;IACnC,OAAO,SAAS;EACpB,CAAC,MACI,IAAIJ,EAAE,CAACI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;IAChC,OAAO,MAAM;EACjB,CAAC,MACI,IAAIJ,EAAE,CAACI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAIJ,EAAE,CAACI,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;IAChE,OAAO,IAAI;EACf,CAAC,MACI,IAAIJ,EAAE,CAACI,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;IACnC,OAAO,SAAS;EACpB,CAAC,MACI,IAAIJ,EAAE,CAACI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAIC,MAAM,CAACC,MAAM,EAAE;IACnD,OAAO,QAAQ;EACnB,CAAC,MACI,IAAIN,EAAE,CAACI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;IAClC,OAAO,QAAQ;EACnB,CAAC,MACI;IACD,OAAO,SAAS;EACpB;AACJ,CAAC,GAAG;;;;;;;;;;;;;;;;;;AC3B+B;AACQ;AACN;AAEtB,MAAMM,UAAU,CAAC;EAC5BC,WAAW,CAACC,YAAY,EAAEC,aAAa,EAAEC,WAAW,EAAEC,YAAY,EAAEC,iBAAiB,EAAEC,aAAa,EAAEC,gBAAgB,EAAE;IACpH,IAAI,CAACN,YAAY,EAAE,MAAM,IAAIO,KAAK,CAAC,yBAAyB,CAAC;IAC7D,IAAI,CAACN,aAAa,EAAE,MAAM,IAAIM,KAAK,CAAC,0BAA0B,CAAC;;IAE/D;AACR;AACA;AACA;IACQ,IAAI,CAACC,UAAU,GAAG,IAAI;IAEtB,IAAI,CAACC,aAAa,GAAGT,YAAY;;IAEjC;AACR;AACA;AACA;IACQ,IAAI,CAACU,eAAe,GAAGT,aAAa,CAACU,MAAM;IAC3C;AACR;AACA;AACA;IACQ,IAAI,CAACC,UAAU,GAAG,CAAC,CAAC;IACpB;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACC,UAAU;IACf;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACC,aAAa,GAAGX,YAAY;IACjC;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACY,kBAAkB,GAAGX,iBAAiB;IAC3C;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACY,iBAAiB,GAAG,IAAI;IAC7B;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACC,aAAa,GAAG,IAAI;IACzB;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACC,gBAAgB,GAAGrB,kDAAU,KAAK,KAAK,IAAIA,kDAAU,KAAK,SAAS;IAExE,IAAIS,gBAAgB,EAAE;MAClB,IAAI,CAACa,UAAU,GAAG,IAAI;MACtB,IAAI,CAACC,YAAY,GAAGC,QAAQ,CAACC,cAAc,CAAChB,gBAAgB,CAAC;MAC7D,IAAI,CAACiB,iBAAiB,EAAE;IAC5B;;IAEA;IACA,IAAI,CAACf,UAAU,GAAG,IAAIgB,aAAa,CAAC;MAChCC,EAAE,EAAEzB,YAAY;MAChB0B,WAAW,EAAEzB,aAAa;MAC1B0B,YAAY,EAAE,IAAI;MAClBzB,WAAW,EAAEA,WAAW,GAAG,CAAC,IAAI,CAAC;MACjC0B,eAAe,EAAE,IAAI,CAACV,gBAAgB;MACtCW,mBAAmB,EAAE,KAAK;MAC1BC,mBAAmB,EAAE,KAAK;MAC1BC,eAAe,EAAE,KAAK;MACtBC,eAAe,EAAE,KAAK;MACtBC,aAAa,EAAE,IAAI;MACnBC,WAAW,EAAE,WAAW;MACxBC,iBAAiB,EAAE,UAAU;MAC7B;MACAC,eAAe,EAAE,KAAK;MACtBC,iBAAiB,EAAE,KAAK;MACxBC,mBAAmB,EAAE,KAAK;MAC1BC,oBAAoB,EAAE;QAClBC,WAAW,EAAE,KAAK;QAClBC,cAAc,EAAE,KAAK,CAAC;MAC1B,CAAC;;MACDC,iBAAiB,EAAE;IACvB,CAAC,CAAC;;IAEF;IACA,IAAI,CAACC,YAAY,GAAGxC,YAAY,KAAK,GAAG,IAAIA,YAAY,KAAK,IAAI,IAAIA,YAAY,KAAKyC,SAAS,IAAIxC,iBAAiB,KAAKwC,SAAS;IAClI,IAAI,IAAI,CAACD,YAAY,EAAE,IAAI,CAAC9B,UAAU,GAAG,IAAIjB,yDAAS,CAAC,IAAI,CAACY,UAAU,EAAE,IAAI,CAACM,aAAa,EAAE,IAAI,CAACC,kBAAkB,EAAE,IAAI,CAAC;IAE1H,IAAI,CAAC8B,gBAAgB,GAAG,IAAIlD,qDAAK,CAAC,IAAI,CAACa,UAAU,EAAEH,aAAa,CAAC;;IAEjE;IACA,IAAI,CAACG,UAAU,CAACsC,cAAc,CAAC,MAAM,EAAE,IAAI,CAACC,KAAK,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,CAACxC,UAAU,CAACsC,cAAc,CAAC,MAAM,EAAE,IAAI,CAACG,gBAAgB,CAACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAExE,IAAI1C,gBAAgB,EAAE,IAAI,CAACE,UAAU,CAAC0C,UAAU,CAAC,cAAc,EAAE,IAAI,CAACC,mBAAmB,CAACH,IAAI,CAAC,IAAI,CAAC,CAAC;EACzG;;EAEA;AACJ;AACA;EACID,KAAK,GAAG;IACJ;IACA,IAAI,IAAI,CAACvC,UAAU,CAAC4C,MAAM,CAACC,WAAW,GAAG,EAAE,EAAE,IAAI,CAACC,oBAAoB,CAAC,IAAI,CAAC;;IAE5E;IACA,IAAI,CAAC9C,UAAU,CAAC0C,UAAU,CAAC,QAAQ,EAAE,IAAI,CAACD,gBAAgB,CAACD,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE;IACA,IAAI,CAACO,wBAAwB,EAAE;;IAE/B;IACA,IAAI,CAACC,UAAU,CAAC,cAAc,EAAE;MAAEC,OAAO,EAAE,IAAI,CAACC,WAAW;IAAG,CAAC,CAAC;IAChE,IAAI,CAACF,UAAU,CAAC,YAAY,EAAE;MAAEG,IAAI,EAAE,IAAI,CAACC,cAAc,EAAE;MAAEC,aAAa,EAAE,IAAI,CAACA,aAAa;IAAG,CAAC,CAAC;EACvG;;EAEA;AACJ;AACA;EACItC,iBAAiB,GAAG;IAChB,IAAI,CAACJ,UAAU,GAAG2C,UAAU,CAAC,YAAY;MACrC,IAAI,CAAC1C,YAAY,CAAC2C,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC;IAC1D,CAAC,CAACf,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC;EACtB;;EAEA;AACJ;AACA;EACIG,mBAAmB,GAAG;IAClBa,YAAY,CAAC,IAAI,CAAC7C,UAAU,CAAC;IAC7B,IAAI,CAACC,YAAY,CAAC2C,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;EACzD;EAEAE,oBAAoB,GAAG;IAEnB,MAAMC,UAAU,GAAG,IAAI,CAAC1D,UAAU,CAAC2D,KAAK,CAACC,SAAS,CAAC,CAAC,CAAC,CAAChB,MAAM;IAE5D,OAAO,IAAI5B,aAAa,CAAC6C,KAAK,CAACH,UAAU,CAACI,KAAK,EAAEJ,UAAU,CAACK,MAAM,CAAC;EACvE;;EAEA;AACJ;AACA;AACA;EACIX,cAAc,GAAG;IAEb,OAAO,IAAI,CAACpD,UAAU,CAACgE,WAAW,EAAE,GAAG,CAAC;EAC5C;;EAEA;AACJ;AACA;AACA;EACIC,qBAAqB,GAAG;IAEpB,OAAO,IAAI,CAACjE,UAAU,CAACgE,WAAW,EAAE;EACxC;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIE,QAAQ,CAACf,IAAI,EAAEgB,cAAc,EAAE;IAE3B,MAAMC,KAAK,GAAGjB,IAAI,GAAG,CAAC;IACtB,IAAIiB,KAAK,KAAK,IAAI,CAACH,qBAAqB,EAAE,EAAE;IAC5C,IAAIG,KAAK,GAAG,CAAC,IAAI,IAAI,CAAClE,eAAe,GAAGkE,KAAK,EAAE,MAAM,IAAIC,UAAU,CAAC,+BAA+B,CAAC;IAEpG,IAAI,CAACtD,iBAAiB,EAAE;IACxB,IAAI,CAACf,UAAU,CAACkE,QAAQ,CAACE,KAAK,CAAC;IAE/B,MAAMpB,UAAU,GAAGmB,cAAc,KAAK,IAAI,IAAIA,cAAc,KAAK/B,SAAS,GAAG,IAAI,GAAG+B,cAAc;IAClG,IAAInB,UAAU,EAAE,IAAI,CAACA,UAAU,CAAC,YAAY,EAAE;MAAEG,IAAI,EAAEA,IAAI;MAAEE,aAAa,EAAE,IAAI,CAACA,aAAa;IAAG,CAAC,CAAC;EACtG;;EAEA;AACJ;AACA;AACA;EACIA,aAAa,GAAI;IAEb,OAAO,IAAI,CAACD,cAAc,EAAE,GAAG,IAAI,CAAClD,eAAe;EACvD;;EAEA;AACJ;AACA;AACA;EACIoE,MAAM,CAACC,IAAI,EAAE;IAETA,IAAI,GAAGA,IAAI,IAAI,GAAG;IAClB,IAAI,CAACvE,UAAU,CAACwE,QAAQ,CAACC,MAAM,CAACF,IAAI,CAAC;IACrC,IAAI,CAACvE,UAAU,CAACwE,QAAQ,CAACE,gBAAgB,EAAE;EAC/C;;EAEA;AACJ;AACA;AACA;EACIC,eAAe,CAACC,WAAW,EAAE;IAEzBA,WAAW,GAAGA,WAAW,KAAK,IAAI;IAElC,MAAM3B,OAAO,GAAG,IAAI,CAACC,WAAW,EAAE;IAClC,MAAM2B,MAAM,GAAG,IAAI,CAAC7E,UAAU,CAACwE,QAAQ,CAACM,SAAS,CAACF,WAAW,CAAC;IAE9D,MAAMG,SAAS,GAAG9B,OAAO,KAAK,EAAE,IAAIA,OAAO,KAAK,GAAG,GAC7C,IAAIjC,aAAa,CAACgE,IAAI,CAAC,CAAC,EAAEH,MAAM,CAACI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GACzC,IAAIjE,aAAa,CAACgE,IAAI,CAACH,MAAM,CAACK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAClF,UAAU,CAAC4C,MAAM,CAACC,WAAW,CAAC;IAEpF,IAAI,CAAC7C,UAAU,CAACwE,QAAQ,CAACW,SAAS,CAACJ,SAAS,EAAEH,WAAW,CAAC;EAC9D;;EAEA;AACJ;AACA;AACA;EACIQ,aAAa,CAACR,WAAW,EAAE;IAEvBA,WAAW,GAAGA,WAAW,KAAK,IAAI;IAElC,MAAM3B,OAAO,GAAG,IAAI,CAACC,WAAW,EAAE;IAClC,MAAM2B,MAAM,GAAG,IAAI,CAAC7E,UAAU,CAACwE,QAAQ,CAACM,SAAS,CAACF,WAAW,CAAC;IAE9D,MAAMG,SAAS,GAAG9B,OAAO,KAAK,EAAE,IAAIA,OAAO,KAAK,GAAG,GAC7C,IAAIjC,aAAa,CAACgE,IAAI,CAACH,MAAM,CAACK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAClF,UAAU,CAAC4C,MAAM,CAACC,WAAW,CAAC,GAC9E,IAAI7B,aAAa,CAACgE,IAAI,CAAC,CAAC,EAAEH,MAAM,CAACI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAE/C,IAAI,CAACjF,UAAU,CAACwE,QAAQ,CAACW,SAAS,CAACJ,SAAS,EAAEH,WAAW,CAAC;EAC9D;;EAEA;AACJ;AACA;AACA;EACIS,MAAM,CAACT,WAAW,EAAE;IAEhBA,WAAW,GAAGA,WAAW,KAAK,IAAI;IAElC,IAAI,IAAI,CAAC5E,UAAU,CAAC4C,MAAM,CAACC,WAAW,GAAG,EAAE,EAAE;MACzC,IAAI,CAACC,oBAAoB,CAAC8B,WAAW,CAAC;IAC1C,CAAC,MACI;MACD,IAAI,CAAC5E,UAAU,CAACwE,QAAQ,CAACa,MAAM,CAACT,WAAW,CAAC;IAChD;EACJ;;EAEA;AACJ;AACA;AACA;EACI9B,oBAAoB,CAAC8B,WAAW,EAAE;IAE9BA,WAAW,GAAGA,WAAW,KAAK,IAAI;IAElC,IAAI,CAACQ,aAAa,CAAC,IAAI,CAAC;IACxB,MAAMZ,QAAQ,GAAG,IAAI,CAACxE,UAAU,CAACwE,QAAQ;;IAEzC;IACA,MAAMc,MAAM,GAAGd,QAAQ,CAACe,SAAS,CAAC,IAAI,CAAC;;IAEvC;IACA,MAAMV,MAAM,GAAGL,QAAQ,CAACM,SAAS,CAAC,IAAI,CAAC;IAEvCN,QAAQ,CAACgB,KAAK,CAAC;MAAEN,CAAC,EAAE,CAAC,GAAGI,MAAM,CAACxB,KAAK,GAAG,CAAC;MAAEmB,CAAC,EAAEJ,MAAM,CAACI;IAAE,CAAC,EAAEL,WAAW,CAAC;EACzE;;EAEA;AACJ;AACA;AACA;EACI1B,WAAW,GAAG;IAGV,IAAID,OAAO,GAAG,IAAI,CAACjD,UAAU,CAACwE,QAAQ,CAACtB,WAAW,EAAE,GAAG,GAAG;IAC1D,IAAID,OAAO,GAAG,CAAC,EAAEA,OAAO,IAAI,GAAG;IAE/B,OAAOA,OAAO;EAClB;;EAEA;AACJ;AACA;AACA;AACA;EACIwC,WAAW,CAACxC,OAAO,EAAEkB,cAAc,EAAE;IAEjClB,OAAO,GAAGA,OAAO,IAAI,CAAC;IACtB,IAAI,CAACjD,UAAU,CAACwE,QAAQ,CAACiB,WAAW,CAACxC,OAAO,CAAC;IAE7C,MAAMD,UAAU,GAAGmB,cAAc,KAAK,IAAI,IAAIA,cAAc,KAAK/B,SAAS,GAAG,IAAI,GAAG+B,cAAc;IAClG,IAAInB,UAAU,EAAE,IAAI,CAACA,UAAU,CAAC,cAAc,EAAE;MAAEC,OAAO,EAAE,IAAI,CAACC,WAAW;IAAG,CAAC,CAAC;EACpF;;EAEA;AACJ;AACA;AACA;AACA;EACIwC,SAAS,CAACC,MAAM,EAAExB,cAAc,EAAE;IAE9B,IAAIlB,OAAO,GAAG0C,MAAM,GAAG,IAAI,CAACzC,WAAW,EAAE;IACzCD,OAAO,GAAG,CAACA,OAAO,GAAG,GAAG,IAAI,GAAG;IAE/B,IAAI,CAACwC,WAAW,CAACxC,OAAO,EAAEkB,cAAc,CAAC;EAC7C;;EAEA;AACJ;AACA;AACA;EACGyB,kBAAkB,GAAI;IAEjB,IAAI/E,QAAQ,CAACgF,uBAAuB,EAAE;MAClC,OAAOhF,QAAQ,CAACC,cAAc,CAAC,IAAI,CAACb,aAAa,CAAC,CAAC6F,8BAA8B,KAAK,IAAI;IAC9F,CAAC,MACI,IAAIjF,QAAQ,CAACkF,oBAAoB,EAAE;MACpC,OAAOlF,QAAQ,CAACC,cAAc,CAAC,IAAI,CAACb,aAAa,CAAC,CAAC8F,oBAAoB,KAAK,IAAI;IACpF,CAAC,MACI,IAAIlF,QAAQ,CAACmF,mBAAmB,EAAE;MACnC,OAAOnF,QAAQ,CAACC,cAAc,CAAC,IAAI,CAACb,aAAa,CAAC,CAAC+F,mBAAmB,KAAK,IAAI;IACnF,CAAC,MACI,IAAInF,QAAQ,CAACoF,iBAAiB,EAAE;MACjC,OAAOpF,QAAQ,CAACC,cAAc,CAAC,IAAI,CAACb,aAAa,CAAC,CAACgG,iBAAiB,KAAK,IAAI;IACjF;IAEA,OAAO,KAAK;EAChB;EAGA;AACJ;AACA;EACGC,gBAAgB,GAAI;IAEf,MAAMC,YAAY,GAAG,IAAI,CAACP,kBAAkB,EAAE;IAE9C,IAAIO,YAAY,EAAE;MAEd,IAAItF,QAAQ,CAACuF,oBAAoB,EAAE;QAC/BvF,QAAQ,CAACuF,oBAAoB,EAAE;MACnC,CAAC,MACI,IAAIvF,QAAQ,CAACwF,gBAAgB,EAAE;QAChCxF,QAAQ,CAACwF,gBAAgB,EAAE;MAC/B,CAAC,MACI,IAAIxF,QAAQ,CAACyF,mBAAmB,EAAE;QACnCzF,QAAQ,CAACyF,mBAAmB,EAAE;MAClC,CAAC,MACI,IAAIzF,QAAQ,CAAC0F,cAAc,EAAE;QAC9B1F,QAAQ,CAAC0F,cAAc,EAAE;MAC7B;IACJ,CAAC,MACI;MACD,IAAI1F,QAAQ,CAAC2F,eAAe,CAACC,mBAAmB,EAAE;QAC9C5F,QAAQ,CAACC,cAAc,CAAC,gBAAgB,CAAC,CAAC2F,mBAAmB,EAAE;MACnE,CAAC,MACI,IAAI5F,QAAQ,CAAC2F,eAAe,CAACE,uBAAuB,EAAE;QACvD7F,QAAQ,CAACC,cAAc,CAAC,gBAAgB,CAAC,CAAC4F,uBAAuB,EAAE;MACvE,CAAC,MACI,IAAI7F,QAAQ,CAAC2F,eAAe,CAACG,oBAAoB,EAAE;QACpD9F,QAAQ,CAACC,cAAc,CAAC,gBAAgB,CAAC,CAAC6F,oBAAoB,EAAE;MACpE,CAAC,MACI,IAAI9F,QAAQ,CAAC2F,eAAe,CAACI,iBAAiB,EAAE;QACjD/F,QAAQ,CAACC,cAAc,CAAC,gBAAgB,CAAC,CAAC8F,iBAAiB,EAAE;MACjE;IACJ;IAEAtD,UAAU,CAAC,YAAY;MACnB,IAAI,CAACtD,UAAU,CAACgD,UAAU,CAAC,QAAQ,CAAC;IACxC,CAAC,CAACR,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC;IAElB,IAAI,CAACQ,UAAU,CAAC,uBAAuB,EAAE;MAAE6D,YAAY,EAAE,CAACV;IAAa,CAAC,CAAC;EAC7E;EAEA;AACJ;AACA;AACA;EACGW,qBAAqB,GAAI;IAEpB,MAAMjI,SAAS,GAAG,IAAI,CAACmB,UAAU,CAACnB,SAAS;IAC3C,MAAMkI,QAAQ,GAAGlI,SAAS,CAACmI,OAAO,CAACC,YAAY,CAAC,aAAa,CAAC,KAAK,MAAM;IAEzE,OAAO,CAACF,QAAQ;EACpB;;EAEA;AACJ;AACA;EACGhE,wBAAwB,GAAI;IAEvB,MAAMlE,SAAS,GAAG,IAAI,CAACmB,UAAU,CAACnB,SAAS;IAC3C,MAAMkI,QAAQ,GAAGlI,SAAS,CAACmI,OAAO,CAACC,YAAY,CAAC,aAAa,CAAC,KAAK,MAAM;IACzEpI,SAAS,CAACmI,OAAO,CAACzD,YAAY,CAAC,aAAa,EAAE,CAACwD,QAAQ,CAAC;IACxDlI,SAAS,CAACqI,UAAU,CAACH,QAAQ,CAAC;IAE9B,IAAIA,QAAQ,EAAE;MACVlI,SAAS,CAACsI,MAAM,CAAC,IAAI,CAACnH,UAAU,CAACwE,QAAQ,CAAC;MAC1C3F,SAAS,CAACuI,WAAW,EAAE;IAC3B;IAEA,IAAI,CAACpH,UAAU,CAACgD,UAAU,CAAC,QAAQ,CAAC;EACxC;EAEA;AACJ;AACA;EACGP,gBAAgB,GAAI;IAEf,MAAM4E,aAAa,GAAGrG,aAAa,CAACsG,cAAc,CAAC,IAAI,CAACtH,UAAU,CAACgH,OAAO,CAACO,UAAU,CAAC;IACtF,MAAMC,mBAAmB,GAAGxG,aAAa,CAACsG,cAAc,CAAC,IAAI,CAACtH,UAAU,CAACgH,OAAO,CAACO,UAAU,CAACA,UAAU,CAAC;IAEvG,MAAM1E,WAAW,GAAG,IAAI,CAAC7C,UAAU,CAAC4C,MAAM,CAACC,WAAW;IAEtD,IAAIiB,KAAK,EAAEC,MAAM,EAAE0D,IAAI,EAAEC,GAAG;IAC5B,IAAI7E,WAAW,GAAG,EAAE,EAAE;MAClBiB,KAAK,GAAGuD,aAAa,CAACnC,CAAC;MACvBnB,MAAM,GAAG4D,IAAI,CAACC,GAAG,CAACP,aAAa,CAACpC,CAAC,GAAG,GAAG,EAAEnB,KAAK,GAAGjB,WAAW,GAAG,EAAE,CAAC;MAClE4E,IAAI,GAAG,CAAC;IACZ,CAAC,MACI;MACD3D,KAAK,GAAG6D,IAAI,CAACE,KAAK,CAACR,aAAa,CAACnC,CAAC,GAAG,GAAG,CAAC;MACzCnB,MAAM,GAAG4D,IAAI,CAACE,KAAK,CAACR,aAAa,CAACpC,CAAC,GAAG,GAAG,CAAC;MAC1CwC,IAAI,GAAGD,mBAAmB,CAACtC,CAAC,GAAGpB,KAAK,GAAG,CAAC;IAC5C;IAEA,IAAI,CAAC9D,UAAU,CAACnB,SAAS,CAACmI,OAAO,CAACc,KAAK,CAAChE,KAAK,GAAGA,KAAK,GAAG,IAAI;IAC5D,IAAI,CAAC9D,UAAU,CAACnB,SAAS,CAACmI,OAAO,CAACc,KAAK,CAAC/D,MAAM,GAAGA,MAAM,GAAG,IAAI;IAC9D,IAAI,CAAC/D,UAAU,CAACnB,SAAS,CAACmI,OAAO,CAACc,KAAK,CAACJ,GAAG,GAAG,KAAK;IACnD,IAAI,CAAC1H,UAAU,CAACnB,SAAS,CAACmI,OAAO,CAACc,KAAK,CAACL,IAAI,GAAGA,IAAI,GAAG,IAAI;IAE3DnE,UAAU,CAAC,MAAM;MACb,IAAI,CAACtD,UAAU,CAACnB,SAAS,CAACkJ,UAAU,EAAE;MACtC,IAAI,CAAC/H,UAAU,CAACnB,SAAS,CAACsI,MAAM,CAAC,IAAI,CAACnH,UAAU,CAACwE,QAAQ,CAAC;IAC9D,CAAC,EAAE,GAAG,CAAC;EACV;;EAEA;AACJ;AACA;AACA;EACGwD,iBAAiB,CAAEC,OAAO,EAAE;IACvB,IAAI,CAAC5F,gBAAgB,CAAC2F,iBAAiB,CAACC,OAAO,CAAC;IAChD,IAAI,IAAI,CAACC,eAAe,EAAE,IAAI,CAACA,eAAe,CAACF,iBAAiB,CAACC,OAAO,CAAC;EAC7E;;EAEA;AACJ;AACA;EACIE,gBAAgB,GAAG;IACf,IAAI,CAAC9F,gBAAgB,CAAC8F,gBAAgB,EAAE;EAC5C;;EAEA;AACJ;AACA;EACGC,eAAe,GAAI;IACd,IAAI,CAAC/F,gBAAgB,CAAC+F,eAAe,EAAE;IACvC,IAAI,IAAI,CAACF,eAAe,EAAE,IAAI,CAACA,eAAe,CAACE,eAAe,EAAE;EACpE;EAEDC,mBAAmB,GAAI;IAClB,OAAO,IAAI,CAAChG,gBAAgB,CAACiG,gBAAgB,EAAE;EACnD;EAEDC,qBAAqB,GAAI;IACpB,MAAMC,MAAM,GAAG,IAAI,CAACxI,UAAU,CAAC2D,KAAK,CAACC,SAAS,CAAC,CAAC,CAAC,CAAChB,MAAM,CAAC,KAAK,CAAC,CAAC6F,KAAK,CAAC,GAAG,CAAC;IAC1E,MAAMC,OAAO,GAAGF,MAAM,CAACG,GAAG,EAAE;IAE5B,OAAOD,OAAO,CAACE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;EACtC;EAEDC,SAAS,CAAEC,GAAG,EAAE;IAEX,IAAI,CAACzG,gBAAgB,CAAC0G,SAAS,EAAE;IACjC,OAAO,IAAI,CAAC1G,gBAAgB,CAAC2G,MAAM,CAACF,GAAG,EAAEA,GAAG,CAAC;EACjD;;EAEA;AACJ;AACA;AACA;AACA;EACGG,gBAAgB,CAAEC,IAAI,EAAEC,QAAQ,EAAE;IAC7B,IAAI,EAAED,IAAI,IAAI,IAAI,CAAC9I,UAAU,CAAC,EAAE;MAC5B,IAAI,CAACA,UAAU,CAAC8I,IAAI,CAAC,GAAG,EAAE;IAC9B;IACA,IAAI,CAAC9I,UAAU,CAAC8I,IAAI,CAAC,CAACE,IAAI,CAACD,QAAQ,CAAC;EACxC;;EAEA;AACJ;AACA;AACA;AACA;EACGE,mBAAmB,CAAEH,IAAI,EAAEC,QAAQ,EAAE;IAChC,IAAI,EAAED,IAAI,IAAI,IAAI,CAAC9I,UAAU,CAAC,EAAE;IAEhC,MAAMkJ,KAAK,GAAG,IAAI,CAAClJ,UAAU,CAAC8I,IAAI,CAAC;IACnC,IAAIC,QAAQ,KAAK,IAAI,IAAIA,QAAQ,KAAK/G,SAAS,EAAE;MAC7CkH,KAAK,CAACC,MAAM,CAAC,CAAC,CAAC;IACnB,CAAC,MACI;MACD,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAErJ,MAAM,GAAGmJ,KAAK,CAACnJ,MAAM,EAAEqJ,CAAC,GAAGrJ,MAAM,EAAEqJ,CAAC,EAAE,EAAE;QACpD,IAAIF,KAAK,CAACE,CAAC,CAAC,KAAKL,QAAQ,EAAE;UACvBG,KAAK,CAACC,MAAM,CAACC,CAAC,EAAE,CAAC,CAAC;UAClB,IAAI,CAACH,mBAAmB,CAACH,IAAI,EAAEC,QAAQ,CAAC;QAC5C;MACJ;IACJ;EACJ;;EAEA;AACJ;AACA;AACA;EACGM,aAAa,CAAEC,KAAK,EAAE;IAEjB,IAAI,EAAEA,KAAK,CAACR,IAAI,IAAI,IAAI,CAAC9I,UAAU,CAAC,EAAE;IAEtC,IAAIkJ,KAAK,GAAG,IAAI,CAAClJ,UAAU,CAACsJ,KAAK,CAACR,IAAI,CAAC;;IAEvC;IACA,KAAK,IAAIM,CAAC,GAAG,CAAC,EAAEG,CAAC,GAAGL,KAAK,CAACnJ,MAAM,EAAEqJ,CAAC,GAAGG,CAAC,EAAEH,CAAC,EAAE,EAAE;MAC1CF,KAAK,CAACE,CAAC,CAAC,CAACI,IAAI,CAAC,IAAI,EAAEF,KAAK,CAAC;IAC9B;EACJ;;EAEA;AACJ;AACA;AACA;AACA;EACG1G,UAAU,CAAE6G,SAAS,EAAEC,SAAS,EAAE;IAE7B,IAAIzK,kDAAU,KAAK,IAAI,EAAE;MACrB,MAAMqK,KAAK,GAAG,IAAIK,WAAW,CAACF,SAAS,EAAE;QAAEG,MAAM,EAAEF;MAAU,CAAC,CAAC;MAC/D,IAAI,CAACL,aAAa,CAACC,KAAK,CAAC;IAC7B,CAAC,MACI;MACD,MAAMA,KAAK,GAAG7I,QAAQ,CAACoJ,WAAW,CAAC,aAAa,CAAC;MACjDP,KAAK,CAACQ,eAAe,CAACL,SAAS,EAAE,KAAK,EAAE,KAAK,EAAEC,SAAS,CAAC;MACzD,IAAI,CAACL,aAAa,CAACC,KAAK,CAAC;IAC7B;EACJ;AACJ;;;;;;;;;;;;;;;;AC7iBqC;AAEtB,MAAMS,gBAAgB,CAAC;EAClC5K,WAAW,CAAC6K,MAAM,EAAEC,OAAO,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,aAAa,EAAEC,gBAAgB,EAAEC,WAAW,EAAEC,eAAe,EAAE;IAC5H,IAAI,CAACC,OAAO,GAAGR,MAAM;IACrB,IAAI,CAACS,QAAQ,GAAGR,OAAO;IAEvB,IAAIM,eAAe,KAAK,IAAI,EAAE;IAE9B,IAAI,CAACG,gBAAgB,GAAGH,eAAe;IAEvC,IAAI,CAACI,cAAc,GAAGlK,QAAQ,CAACmK,gBAAgB,CAAC,aAAa,GAAGT,gBAAgB,GAAG,GAAG,CAAC;IAEvF,IAAIE,gBAAgB,KAAKrI,SAAS,IAAIqI,gBAAgB,KAAK,IAAI,IAAIA,gBAAgB,KAAK,EAAE,EAAE;MACxF,IAAI,CAACQ,cAAc,GAAGpK,QAAQ,CAACmK,gBAAgB,CAAC,aAAa,GAAGP,gBAAgB,GAAG,GAAG,CAAC;MACvF,IAAI,CAACS,UAAU,GAAGrK,QAAQ,CAACC,cAAc,CAAC4J,WAAW,CAAC;MACtD,IAAI,CAACS,iBAAiB,EAAE;IAC5B;IAEA,IAAI,IAAI,CAACD,UAAU,EAAE,IAAI,CAACA,UAAU,CAACjC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAACmC,eAAe,CAAC5I,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IAEvG,IAAI,CAAC6I,SAAS,GAAG,IAAI,CAACT,OAAO,CAAC1K,eAAe;IAE7C,IAAI,CAACoL,SAAS,GAAGzK,QAAQ,CAACC,cAAc,CAAC,WAAW,CAAC;IACrD,IAAI,IAAI,CAACwK,SAAS,EAAE,IAAI,CAACA,SAAS,CAACC,WAAW,GAAG,EAAE;IAEnD,IAAI,CAACC,aAAa,GAAG3K,QAAQ,CAACC,cAAc,CAAC0J,aAAa,CAAC;IAC3D3J,QAAQ,CAACC,cAAc,CAACwJ,gBAAgB,CAAC,CAACrB,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACwC,SAAS,CAACjJ,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;EACzG;;EAEA;AACJ;AACA;AACA;AACA;EACIiJ,SAAS,CAAC/B,KAAK,EAAE;IAEb,IAAI;MACA,MAAMgC,IAAI,GAAG,IAAI;MACjB,IAAIC,GAAG,GAAG,IAAIC,cAAc,EAAE;MAC9BD,GAAG,CAACE,IAAI,CAAC,KAAK,EAAE,IAAI,CAACC,YAAY,EAAE,EAAE,IAAI,CAAC;MAC1CH,GAAG,CAACI,YAAY,GAAG,MAAM;MACzBJ,GAAG,CAACK,MAAM,GAAG,UAAUC,CAAC,EAAE;QACtB,IAAIN,GAAG,CAACO,MAAM,KAAK,GAAG,EAAE;UACpB,MAAMC,WAAW,GAAGR,GAAG,CAACS,iBAAiB,CAAC,cAAc,CAAC;UACzD,MAAMC,QAAQ,GAAGF,WAAW,KAAK,iBAAiB,GAAG,cAAc,GAAG,cAAc;UACpFG,OAAO,CAACC,GAAG,CAACJ,WAAW,CAAC;UACxBT,IAAI,CAACF,aAAa,CAACgB,IAAI,GAAGvN,MAAM,CAACwN,GAAG,CAACC,eAAe,CAACf,GAAG,CAACgB,QAAQ,CAAC;UAClEjB,IAAI,CAACF,aAAa,CAACjI,YAAY,CAAC,UAAU,EAAE8I,QAAQ,CAAC;UACrDX,IAAI,CAACF,aAAa,CAACoB,KAAK,EAAE;QAC9B,CAAC,MACI;UACDlB,IAAI,CAACJ,SAAS,CAACC,WAAW,GAAG,kBAAkB;QACnD;MACJ,CAAC;MAEDI,GAAG,CAACkB,OAAO,GAAG,UAAUZ,CAAC,EAAE;QACvBP,IAAI,CAACJ,SAAS,CAACC,WAAW,GAAG,kBAAkB;MACnD,CAAC;MACDI,GAAG,CAACmB,IAAI,EAAE;MAEV,IAAI,CAACxB,SAAS,CAACC,WAAW,GAAG,EAAE;IACnC,CAAC,CACD,OAAOU,CAAC,EAAE;MACN,IAAI,CAACX,SAAS,CAACC,WAAW,GAAGU,CAAC,CAACc,OAAO;IAC1C;EACJ;;EAEA;AACJ;AACA;AACA;EACIC,oBAAoB,GAAG;IACnB,IAAIC,QAAQ,GAAG,EAAE;IACjB,KAAK,IAAIzD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAAC0D,mBAAmB,EAAE1D,CAAC,GAAGA,CAAC,GAAG,CAAC,EAAE;MACrD,IAAI,IAAI,CAACuB,cAAc,CAACvB,CAAC,CAAC,CAAC2D,OAAO,EAAE;QAChCF,QAAQ,GAAG,IAAI,CAAClC,cAAc,CAACvB,CAAC,CAAC,CAAC4D,KAAK;QACvC;MACJ;IACJ;IAEA,OAAOH,QAAQ;EACnB;;EAEA;AACJ;AACA;AACA;EACID,oBAAoB,GAAG;IAEnB,IAAIC,QAAQ,GAAG,MAAM;IACrB,MAAMI,eAAe,GAAG,IAAI,CAACtC,cAAc,CAAC5K,MAAM;IAClD,KAAK,IAAIqJ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6D,eAAe,EAAE7D,CAAC,GAAGA,CAAC,GAAG,CAAC,EAAE;MAC5C,IAAI,IAAI,CAACuB,cAAc,CAACvB,CAAC,CAAC,CAAC2D,OAAO,EAAE,OAAO,IAAI,CAACpC,cAAc,CAACvB,CAAC,CAAC,CAAC4D,KAAK;IAC3E;IAEA,OAAOH,QAAQ;EACnB;;EAEA;AACJ;AACA;AACA;EACIK,YAAY,GAAG;IAEX,IAAIC,QAAQ,GAAG,cAAc;IAE7B,IAAI,IAAI,CAACtC,cAAc,KAAK7I,SAAS,IAAI,IAAI,CAAC6I,cAAc,KAAK,IAAI,EAAE,OAAOsC,QAAQ;IAEtF,MAAMF,eAAe,GAAG,IAAI,CAACpC,cAAc,CAAC9K,MAAM;IAClD,KAAK,IAAIqJ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6D,eAAe,EAAE7D,CAAC,GAAGA,CAAC,GAAG,CAAC,EAAE;MAC5C,IAAI,IAAI,CAACyB,cAAc,CAACzB,CAAC,CAAC,CAAC2D,OAAO,EAAE;QAChC,OAAO,IAAI,CAAClC,cAAc,CAACzB,CAAC,CAAC,CAAC4D,KAAK;MACvC;IACJ;IAEA,OAAOG,QAAQ;EACnB;;EAGA;AACJ;AACA;EACIpC,iBAAiB,GAAG;IAEhB,MAAMqC,cAAc,GAAG,IAAI,CAACvC,cAAc,CAAC9K,MAAM;IACjD,KAAK,IAAIqJ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgE,cAAc,EAAEhE,CAAC,GAAGA,CAAC,GAAG,CAAC,EAAE;MAC3C,IAAIiE,QAAQ,GAAG,IAAI,CAACxC,cAAc,CAACzB,CAAC,CAAC;MACrC,IAAIiE,QAAQ,CAACL,KAAK,KAAK,cAAc,EAAE;QACnCK,QAAQ,CAACxE,gBAAgB,CAAC,QAAQ,EAAE,YAAY;UAC5C,IAAI,CAACiC,UAAU,CAACwC,QAAQ,GAAG,IAAI;QACnC,CAAC,CAAClL,IAAI,CAAC,IAAI,CAAC,CAAC;MACjB,CAAC,MACI,IAAIiL,QAAQ,CAACL,KAAK,KAAK,aAAa,EAAE;QACvC,IAAI,CAAClC,UAAU,CAACwC,QAAQ,GAAGD,QAAQ,CAACN,OAAO,KAAK,KAAK;QACrDM,QAAQ,CAACxE,gBAAgB,CAAC,QAAQ,EAAE,YAAY;UAC5C,IAAI,CAACiC,UAAU,CAACwC,QAAQ,GAAG,KAAK;QACpC,CAAC,CAAClL,IAAI,CAAC,IAAI,CAAC,CAAC;MACjB;IACJ;EACJ;EAEA4I,eAAe,CAAC1B,KAAK,EAAE;IAEnB,IAAI;MACA,IAAI,CAACiE,UAAU,CAACjE,KAAK,CAACkE,aAAa,CAACR,KAAK,CAAC;MAC1C,IAAI,CAAC9B,SAAS,CAACC,WAAW,GAAG,EAAE;IACnC,CAAC,CACD,OAAOU,CAAC,EAAE;MACN,IAAI,CAACX,SAAS,CAACC,WAAW,GAAGU,CAAC,CAACc,OAAO;IAC1C;EACJ;;EAEA;AACJ;AACA;AACA;AACA;EACIY,UAAU,CAACE,UAAU,EAAE;IAGnB,IAAI,CAACA,UAAU,EAAE,MAAM,IAAI9N,KAAK,CAAC,gBAAgB,CAAC;IAClD,IAAI,CAAC8N,UAAU,CAACC,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,IAAI/N,KAAK,CAAC,aAAa,CAAC;IAEpE,IAAIgO,KAAK,GAAG,EAAE;IAEd,MAAMC,QAAQ,GAAGH,UAAU,CAACpF,KAAK,CAAC,GAAG,CAAC;IACtC,MAAMwF,aAAa,GAAGD,QAAQ,CAAC7N,MAAM;IACrC,KAAK,IAAIqJ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyE,aAAa,EAAEzE,CAAC,GAAGA,CAAC,GAAG,CAAC,EAAE;MAE1C,IAAI4D,KAAK,GAAGY,QAAQ,CAACxE,CAAC,CAAC,CAACZ,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;MACzC,IAAIwE,KAAK,CAACpO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;QAC3B;QACA,IAAIkP,IAAI,GAAGd,KAAK,CAAC3E,KAAK,CAAC,GAAG,CAAC;QAC3B,IAAI,CAACyF,IAAI,IAAIA,IAAI,CAAC/N,MAAM,KAAK,CAAC,EAAE;QAEhC,IAAIgO,KAAK,GAAGC,QAAQ,CAACF,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAIG,GAAG,GAAGD,QAAQ,CAACF,IAAI,CAAC,CAAC,CAAC,CAAC;QAE3B,IAAIC,KAAK,IAAIE,GAAG,EAAE,MAAM,IAAItO,KAAK,CAAC,QAAQ,CAAC;QAE3C,KAAK,IAAIuO,CAAC,GAAGH,KAAK,EAAEG,CAAC,IAAID,GAAG,EAAEC,CAAC,EAAE,EAAE;UAC/B,IAAIA,CAAC,GAAG,CAAC,IAAIA,CAAC,GAAG,IAAI,CAAC1D,OAAO,CAAC1K,eAAe,GAAG,CAAC,EAAE,MAAM,IAAIH,KAAK,CAAC,iBAAiB,CAAC;UACrF,IAAIgO,KAAK,CAAC/O,OAAO,CAACsP,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAACxD,gBAAgB,CAAC9L,OAAO,CAACsP,CAAC,CAAC,KAAK,CAAC,CAAC,EAAEP,KAAK,CAAC3E,IAAI,CAACkF,CAAC,CAAC;QACzF;MACJ,CAAC,MACI;QACD;QACA,IAAIlB,KAAK,GAAG,CAAC,IAAIA,KAAK,GAAG,IAAI,CAACxC,OAAO,CAAC1K,eAAe,GAAG,CAAC,EAAE,MAAM,IAAIH,KAAK,CAAC,iBAAiB,CAAC;QAC7F,IAAIgO,KAAK,CAAC/O,OAAO,CAACoO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAACtC,gBAAgB,CAAC9L,OAAO,CAACoO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAEW,KAAK,CAAC3E,IAAI,CAACgE,KAAK,CAAC;QACjG;MACJ;IACJ;;IACA,IAAIW,KAAK,CAAC5N,MAAM,GAAG,EAAE,EAAE,MAAM,IAAIJ,KAAK,CAAC,oBAAoB,CAAC;IAC5D,IAAI,CAACuL,SAAS,CAACC,WAAW,GAAG,EAAE;IAE/B,OAAOwC,KAAK;EAChB;;EAEA;AACJ;AACA;AACA;EACIjC,YAAY,GAAG;IAGX,IAAIhD,GAAG,GAAG,IAAI,CAAC+B,QAAQ;;IAEvB;IACA/B,GAAG,IAAI,UAAU,GAAG,IAAI,CAACkE,oBAAoB,EAAE;;IAE/C;IACA,IAAI,IAAI,CAACM,YAAY,EAAE,KAAK,cAAc,EAAE;MACxCxE,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC8B,OAAO,CAACxH,cAAc,EAAE;IAChD,CAAC,MACI;MACD,MAAM2K,KAAK,GAAG,IAAI,CAACJ,UAAU,CAAC,IAAI,CAACzC,UAAU,CAACkC,KAAK,CAAC;MACpD,KAAK,IAAI5D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGuE,KAAK,CAAC5N,MAAM,EAAEqJ,CAAC,GAAGA,CAAC,GAAG,CAAC,EAAE;QACzC,IAAIrG,IAAI,GAAG4K,KAAK,CAACvE,CAAC,CAAC;QACnBV,GAAG,IAAI,KAAK,GAAG3F,IAAI;MACvB;IACJ;IAEA,OAAO2F,GAAG;EACd;AACJ;;;;;;;;;;;;;;;AChOe,MAAMyF,WAAW,CAAC;EAC7BhP,WAAW,CAAC6K,MAAM,EAAEjB,QAAQ,EAAE;IAC1B;AACR;AACA;AACA;IACQ,IAAI,CAACyB,OAAO,GAAGR,MAAM;;IAErB;AACR;AACA;AACA;IACQ,IAAI,CAACoE,SAAS,GAAGrF,QAAQ;IAEzB,IAAI,CAACsF,KAAK,GAAG,IAAI;IACjB,IAAI,CAACC,aAAa,GAAG,IAAI;;IAEzB;AACR;AACA;AACA;IACQ,IAAI,CAACC,UAAU,GAAGvE,MAAM,CAACwE,SAAS,CAAC;MAC/BC,oBAAoB,EAAE,KAAK;MAC3BC,aAAa,EAAE,KAAK;MACpBC,eAAe,EAAE,IAAI;MACrBC,sBAAsB,EAAE,KAAK;MAC7BC,uBAAuB,EAAE,KAAK;MAC9BC,WAAW,EAAE,IAAI,CAACC,QAAQ,CAAC3M,IAAI,CAAC,IAAI;IACxC,CAAC,CAAC;EACN;;EAEA;AACJ;AACA;AACA;EACI2M,QAAQ,CAACC,IAAI,EAAE;IAEX,IAAI,CAACX,KAAK,GAAGW,IAAI;IACjB,IAAI,CAACV,aAAa,GAAG/G,IAAI,CAACE,KAAK,CAAC,IAAI,CAAC8G,UAAU,CAAC3H,OAAO,CAACqI,WAAW,CAAC,GAAG,GAAG,GAAG1H,IAAI,CAACE,KAAK,CAAC,IAAI,CAAC8G,UAAU,CAAC3H,OAAO,CAACsI,YAAY,CAAC;IAE7H,MAAMxG,GAAG,GAAG,IAAI,CAACyG,gBAAgB,EAAE;IAEnC,IAAI,CAACC,WAAW,CAAC1G,GAAG,CAAC;IACrB,IAAI,CAAC6F,UAAU,CAACc,QAAQ,CAAC,KAAK,CAAC;EACnC;;EAEA;AACJ;AACA;AACA;EACIC,YAAY,GAAG;IACX,OAAO,IAAI,CAAC9E,OAAO,CAACjH,KAAK,CAACC,SAAS,CAAC,CAAC,CAAC,CAAChB,MAAM,CAAC,KAAK,CAAC;EACxD;;EAEA;AACJ;AACA;AACA;AACA;AACA;EACI+M,kBAAkB,CAACC,SAAS,EAAEC,MAAM,EAAE;IAElC,IAAIC,KAAK,GAAGnI,IAAI,CAACE,KAAK,CAAC,IAAI,CAAC4G,KAAK,CAACvJ,CAAC,CAAC,GAAG,GAAG,GAAGyC,IAAI,CAACE,KAAK,CAAC,IAAI,CAAC4G,KAAK,CAACxJ,CAAC,CAAC,GAAG,GAAG,GAAG0C,IAAI,CAACE,KAAK,CAAC,IAAI,CAAC4G,KAAK,CAAC3K,KAAK,CAAC,GAAG,GAAG,GAAG6D,IAAI,CAACE,KAAK,CAAC,IAAI,CAAC4G,KAAK,CAAC1K,MAAM,CAAC;IAChJ+L,KAAK,IAAI,GAAG,GAAGF,SAAS;IACxBE,KAAK,IAAI,GAAG,GAAGD,MAAM,GAAG,cAAc;IAEtC,OAAOC,KAAK;EAChB;;EAEA;AACJ;AACA;AACA;EACIN,WAAW,CAAC1F,SAAS,EAAE;IACnB,IAAI,CAACjJ,QAAQ,CAACoJ,WAAW,EAAE;MACvB,MAAMP,KAAK,GAAG,IAAIK,WAAW,CAAC,kBAAkB,EAAE;QAAEC,MAAM,EAAEF;MAAU,CAAC,CAAC;MACxE,IAAI,CAAC0E,SAAS,CAAC5E,IAAI,CAAC,IAAI,EAAEF,KAAK,CAAC;IACpC,CAAC,MACI;MACD,MAAMA,KAAK,GAAG7I,QAAQ,CAACoJ,WAAW,CAAC,aAAa,CAAC;MACjDP,KAAK,CAACQ,eAAe,CAAC,kBAAkB,EAAE,KAAK,EAAE,KAAK,EAAEJ,SAAS,CAAC;MAClE,IAAI,CAAC0E,SAAS,CAAC5E,IAAI,CAAC,IAAI,EAAEF,KAAK,CAAC;IACpC;EACJ;;EAEA;AACJ;AACA;EACIvB,gBAAgB,GAAG;IACf,YAAY;;IAEZ,IAAI,CAACwG,UAAU,CAACoB,OAAO,EAAE;EAC7B;;EAEA;AACJ;AACA;EACI3H,eAAe,GAAG;IACd,YAAY;;IAEZ,IAAI,CAACuG,UAAU,CAACqB,MAAM,EAAE;EAC5B;;EAEA;AACJ;AACA;AACA;EACIhI,iBAAiB,CAACC,OAAO,EAAE;IACvB,YAAY;;IAEZ,IAAIA,OAAO,EAAE;MACT,IAAI,CAACwG,KAAK,GAAG,IAAI;MACjB,IAAI,CAACC,aAAa,GAAG,IAAI;IAC7B;IAEA,IAAI,CAACC,UAAU,CAACc,QAAQ,CAACxH,OAAO,CAAC;EACrC;;EAEA;AACJ;AACA;AACA;EACIc,SAAS,GAAG;IACR,YAAY;;IAEZ,OAAO,IAAI,CAACqG,IAAI,KAAK,IAAI;EAC7B;;EAEA;AACJ;AACA;AACA;AACA;EACIG,gBAAgB,CAACU,IAAI,EAAE;IACnB,YAAY;;IAEZ,MAAMnH,GAAG,GAAG,IAAI,CAAC4G,YAAY,EAAE;IAC/B,MAAME,SAAS,GAAGK,IAAI,KAAK7N,SAAS,IAAI6N,IAAI,KAAK,IAAI,GAAG,IAAI,CAACvB,aAAa,GAAG,GAAG,GAAGuB,IAAI,GAAG,GAAG,GAAGA,IAAI;IAEpG,IAAIhN,OAAO,GAAG,IAAI,CAAC2H,OAAO,CAACpG,QAAQ,CAACtB,WAAW,EAAE,GAAG,GAAG;IACvD,IAAID,OAAO,GAAG,CAAC,EAAEA,OAAO,IAAI,GAAG;IAE/B,OAAO6F,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC6G,kBAAkB,CAACC,SAAS,EAAE3M,OAAO,CAAC;EAClE;;EAEA;AACJ;AACA;AACA;EACIqF,gBAAgB,GAAG;IACf,YAAY;;IAEZ,MAAM2H,IAAI,GAAG,IAAI,CAACvB,aAAa,CAACjG,KAAK,CAAC,GAAG,CAAC;IAC1C,MAAM3E,KAAK,GAAGsK,QAAQ,CAAC6B,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAMlM,MAAM,GAAGqK,QAAQ,CAAC6B,IAAI,CAAC,CAAC,CAAC,CAAC;IAEhC,OAAO,IAAIjP,aAAa,CAAC6C,KAAK,CAACC,KAAK,EAAEC,MAAM,CAAC;EACjD;AACJ;;;;;;;;;;;;;;;AC/Je,MAAMmM,YAAY,CAAC;EAC9B3Q,WAAW,CAAC4Q,QAAQ,EAAEC,WAAW,EAAEC,mBAAmB,EAAEC,aAAa,EAAE;IACnE,IAAI,CAACC,OAAO,GAAG1P,QAAQ,CAACC,cAAc,CAACqP,QAAQ,CAAC;IAChD,IAAI,CAACK,OAAO,GAAG3P,QAAQ,CAAC4P,aAAa,CAAC,kBAAkB,GAAGN,QAAQ,GAAG,GAAG,CAAC;IAE1E,IAAIC,WAAW,KAAK,IAAI,IAAIA,WAAW,KAAK,IAAI,IAAIA,WAAW,KAAKhO,SAAS,EAAE;MAC3E,IAAI,CAACsO,QAAQ,GAAG7P,QAAQ,CAAC8P,aAAa,CAAC,KAAK,CAAC;MAC7C,IAAI,CAACD,QAAQ,CAACE,SAAS,CAACC,GAAG,CAAC,gBAAgB,CAAC;MAC7C,IAAI,CAACH,QAAQ,CAACnN,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;MACjD1C,QAAQ,CAACiQ,IAAI,CAACC,YAAY,CAAC,IAAI,CAACL,QAAQ,EAAE,IAAI,CAACH,OAAO,CAACS,MAAM,CAAC;MAE9D,IAAIX,mBAAmB,KAAK,IAAI,IAAIA,mBAAmB,KAAK,IAAI,IAAIA,mBAAmB,KAAKjO,SAAS,EAAE;QACnG,IAAI,CAACsO,QAAQ,CAACzH,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACgI,KAAK,CAACzO,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;MACzE;IACJ;IAEA,MAAM0O,QAAQ,GAAGZ,aAAa,IAAI,IAAI;IACtC,IAAIY,QAAQ,KAAK,IAAI,EAAE;MACnB,MAAMC,WAAW,GAAGtQ,QAAQ,CAACC,cAAc,CAACoQ,QAAQ,CAAC;MACrDC,WAAW,CAAClI,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACgI,KAAK,CAACzO,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IACvE;EACJ;;EAEA;AACJ;AACA;EACIqJ,IAAI,GAAG;IAEH,IAAI,IAAI,CAAC0E,OAAO,CAACtJ,YAAY,CAAC,aAAa,CAAC,KAAK,OAAO,EAAE;IAE1D,IAAI,CAACsJ,OAAO,CAAChN,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC;IAEjD,IAAI,IAAI,CAACmN,QAAQ,KAAK,IAAI,IAAI,IAAI,CAACA,QAAQ,KAAKtO,SAAS,EAAE;MACvD,IAAI,CAACsO,QAAQ,CAACnN,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC;IACtD;IAEA,IAAI,IAAI,CAACiN,OAAO,KAAK,IAAI,IAAI,IAAI,CAACA,OAAO,KAAKpO,SAAS,EAAE;MACrD,IAAI,CAACoO,OAAO,CAACjN,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;IACtD;EACJ;;EAEA;AACJ;AACA;EACI0N,KAAK,GAAG;IAEJ,IAAI,IAAI,CAACV,OAAO,CAACtJ,YAAY,CAAC,aAAa,CAAC,KAAK,MAAM,EAAE;IAEzD,IAAI,CAACsJ,OAAO,CAAChN,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;IAEhD,IAAI,IAAI,CAACmN,QAAQ,KAAK,IAAI,IAAI,IAAI,CAACA,QAAQ,KAAKtO,SAAS,EAAE;MACvD,IAAI,CAACsO,QAAQ,CAACnN,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;IACrD;IAEA,IAAI,IAAI,CAACiN,OAAO,KAAK,IAAI,IAAI,IAAI,CAACA,OAAO,KAAKpO,SAAS,EAAE;MACrD,IAAI,CAACoO,OAAO,CAACjN,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;IACvD;EACJ;;EAEA;AACJ;AACA;EACI6N,MAAM,GAAG;IAEL,IAAI,IAAI,CAACb,OAAO,CAACtJ,YAAY,CAAC,aAAa,CAAC,KAAK,OAAO,EAAE;MACtD,IAAI,CAACgK,KAAK,EAAE;IAChB,CAAC,MACI;MACD,IAAI,CAACpF,IAAI,EAAE;IACf;EACJ;AACJ;;;;;;;;;;;;;;;ACvEe,MAAMwF,oBAAoB,CAAC;EACtC9R,WAAW,CAAC0B,EAAE,EAAEqQ,SAAS,EAAE;IACvB,IAAI,CAACC,QAAQ,GAAG1Q,QAAQ,CAACC,cAAc,CAACG,EAAE,CAAC;IAC3C,IAAI,CAACuQ,QAAQ,GAAG3Q,QAAQ,CAACC,cAAc,CAACwQ,SAAS,CAAC;IAElD,IAAI,CAACG,cAAc,GAAG,IAAI,CAACC,SAAS,CAAClP,IAAI,CAAC,IAAI,CAAC;IAC/C,IAAI,CAACmP,kBAAkB,GAAG,IAAI,CAACC,WAAW,CAACpP,IAAI,CAAC,IAAI,CAAC;IAErD,IAAI,CAACgP,QAAQ,CAACvI,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC4I,WAAW,CAACrP,IAAI,CAAC,IAAI,CAAC,CAAC;IACxE,IAAI,CAACgP,QAAQ,CAACvI,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC4I,WAAW,CAACrP,IAAI,CAAC,IAAI,CAAC,CAAC;EAC7E;;EAEA;AACJ;AACA;AACA;EACIqP,WAAW,CAACnI,KAAK,EAAE;IACfA,KAAK,CAACoI,cAAc,EAAE;IAEtB7S,MAAM,CAACgK,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACwI,cAAc,EAAE,KAAK,CAAC;IAChExS,MAAM,CAACgK,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACwI,cAAc,EAAE,KAAK,CAAC;IAChExS,MAAM,CAACgK,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC0I,kBAAkB,EAAE,KAAK,CAAC;IAClE1S,MAAM,CAACgK,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC0I,kBAAkB,EAAE,KAAK,CAAC;EACvE;;EAEA;AACJ;AACA;AACA;EACID,SAAS,CAAChI,KAAK,EAAE;IACbA,KAAK,CAACoI,cAAc,EAAE;IAEtB,MAAM7F,CAAC,GAAGvC,KAAK,CAACR,IAAI,KAAK,WAAW,GAAGQ,KAAK,GAAGA,KAAK,CAACqI,cAAc,CAAC,CAAC,CAAC;IAEtE9S,MAAM,CAAC4B,QAAQ,CAACiQ,IAAI,CAAChJ,KAAK,CAACkK,MAAM,GAAG,WAAW;IAC/C,IAAI,CAACT,QAAQ,CAACzJ,KAAK,CAAChE,KAAK,GAAGmI,CAAC,CAACgG,OAAO,GAAG,IAAI,CAACV,QAAQ,CAACW,UAAU,GAAG,IAAI;EAC3E;;EAEA;AACJ;AACA;AACA;EACIN,WAAW,CAAClI,KAAK,EAAE;IACfzK,MAAM,CAAC4B,QAAQ,CAACiQ,IAAI,CAAChJ,KAAK,CAACkK,MAAM,GAAG,EAAE;IACtC/S,MAAM,CAACoK,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAACoI,cAAc,CAAC;IAC5DxS,MAAM,CAACoK,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAACoI,cAAc,CAAC;IAC5DxS,MAAM,CAACoK,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACsI,kBAAkB,CAAC;IAC9D1S,MAAM,CAACoK,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAACsI,kBAAkB,CAAC;EACnE;AACJ;;;;;;;;;;;;;;;;ACjDqC;AAEtB,MAAMQ,YAAY,CAAC;EAC9B5S,WAAW,CAAC0B,EAAE,EAAEmR,cAAc,EAAEC,YAAY,EAAEC,YAAY,EAAE;IACxD,IAAI,CAACC,OAAO,GAAG1R,QAAQ,CAACC,cAAc,CAACG,EAAE,CAAC;;IAE1C;IACA,MAAMuR,eAAe,GAAGnT,kDAAU,KAAK,IAAI,GAAG,QAAQ,GAAG,OAAO;;IAEhE;IACA,IAAI,CAACkT,OAAO,CAACtJ,gBAAgB,CAACuJ,eAAe,EAAEJ,cAAc,EAAE,KAAK,CAAC;;IAErE;IACA,MAAMK,OAAO,GAAGH,YAAY,IAAI,IAAI,CAACC,OAAO,CAACG,OAAO,CAACC,UAAU;IAC/D,IAAI,CAACC,MAAM,GAAGH,OAAO,KAAK,IAAI,IAAIA,OAAO,KAAKrQ,SAAS,GAAGvB,QAAQ,CAACC,cAAc,CAAC2R,OAAO,CAAC,GAAG,IAAI;IACjG,IAAI,IAAI,CAACG,MAAM,KAAK,IAAI,EAAE,IAAI,CAACL,OAAO,CAACtJ,gBAAgB,CAACuJ,eAAe,EAAE,IAAI,CAACK,cAAc,CAACrQ,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;;IAE/G;IACA,IAAI,CAACsQ,aAAa,GAAGT,YAAY,IAAI,IAAI,CAACE,OAAO,CAACnF,KAAK;IACvD,IAAI,CAAC2F,KAAK,EAAE;EAChB;;EAEA;AACJ;AACA;EACIF,cAAc,GAAG;IACb,IAAI,CAACD,MAAM,CAACrH,WAAW,GAAG,IAAI,CAACgH,OAAO,CAACnF,KAAK;EAChD;EAEA4F,aAAa,CAACtJ,KAAK,EAAE;IAEjB,IAAI7I,QAAQ,CAACoJ,WAAW,EAAE;MACtB,MAAMgJ,GAAG,GAAGpS,QAAQ,CAACoJ,WAAW,CAAC,YAAY,CAAC;MAC9CgJ,GAAG,CAACC,SAAS,CAACxJ,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;MAChC,OAAO,IAAI,CAAC6I,OAAO,CAAC9I,aAAa,CAACwJ,GAAG,CAAC;IAC1C,CAAC,MACI;MACD,MAAMA,GAAG,GAAGpS,QAAQ,CAACsS,iBAAiB,EAAE;MACxC,OAAO,IAAI,CAACZ,OAAO,CAACa,SAAS,CAAC,IAAI,GAAG1J,KAAK,EAAEuJ,GAAG,CAAC;IACpD;EACJ;;EAEA;AACJ;AACA;AACA;EACII,QAAQ,GAAG;IACP,OAAO,IAAI,CAACd,OAAO,CAACnF,KAAK;EAC7B;;EAEA;AACJ;AACA;AACA;EACIkG,QAAQ,CAAClG,KAAK,EAAE;IAEZ,IAAI,IAAI,CAACiG,QAAQ,EAAE,KAAKjG,KAAK,EAAE;IAE/B,IAAI,CAACmF,OAAO,CAACnF,KAAK,GAAGA,KAAK;IAC1B,IAAI,IAAI,CAACwF,MAAM,KAAK,IAAI,EAAE,IAAI,CAACC,cAAc,EAAE;IAE/C,MAAML,eAAe,GAAGnT,kDAAU,KAAK,IAAI,GAAG,QAAQ,GAAG,OAAO;IAChE,IAAI,CAAC2T,aAAa,CAACR,eAAe,CAAC;EACvC;;EAEA;AACJ;AACA;EACIO,KAAK,GAAG;IAEJ,IAAI,IAAI,CAACM,QAAQ,EAAE,KAAK,IAAI,CAACP,aAAa,EAAE;IAE5C,IAAI,CAACP,OAAO,CAACnF,KAAK,GAAG,IAAI,CAAC0F,aAAa;IACvC,IAAI,IAAI,CAACF,MAAM,KAAK,IAAI,EAAE,IAAI,CAACC,cAAc,EAAE;IAE/C,MAAML,eAAe,GAAGnT,kDAAU,KAAK,IAAI,GAAG,QAAQ,GAAG,OAAO;IAChE,IAAI,CAAC2T,aAAa,CAACR,eAAe,CAAC;EACvC;;EAEA;AACJ;;;;;;;;;;;;;;;AChFe,MAAMe,eAAe,CAAC;EACjChU,WAAW,CAACyH,OAAO,EAAE;IACjB,MAAM0E,IAAI,GAAG,IAAI;IAEjB1E,OAAO,CAACiC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACuK,uBAAuB,CAAChR,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IAEjF,IAAI,CAACiR,QAAQ,GAAGzM,OAAO,CAACgE,gBAAgB,CAAC,cAAc,CAAC;IAExD,IAAI,CAAC0I,aAAa,GAAG,IAAIC,KAAK,EAAE;IAChCA,KAAK,CAACC,SAAS,CAACC,OAAO,CAACjK,IAAI,CAAC,IAAI,CAAC6J,QAAQ,EAAE,UAAUK,GAAG,EAAE;MACvDA,GAAG,CAAC7K,gBAAgB,CAAC,OAAO,EAAEyC,IAAI,CAACqI,UAAU,CAACvR,IAAI,CAACkJ,IAAI,CAAC,EAAE,KAAK,CAAC;MAChEoI,GAAG,CAAC7K,gBAAgB,CAAC,WAAW,EAAEyC,IAAI,CAACsI,eAAe,CAACxR,IAAI,CAACkJ,IAAI,CAAC,EAAE,KAAK,CAAC;MACzEoI,GAAG,CAAC7K,gBAAgB,CAAC,UAAU,EAAEyC,IAAI,CAACuI,cAAc,CAACzR,IAAI,CAACkJ,IAAI,CAAC,EAAE,KAAK,CAAC;MAEvE,MAAMwI,QAAQ,GAAGrT,QAAQ,CAACC,cAAc,CAACgT,GAAG,CAAC7M,YAAY,CAAC,eAAe,CAAC,CAAC;MAC3EyE,IAAI,CAACgI,aAAa,CAACtK,IAAI,CAAC8K,QAAQ,CAAC;IACrC,CAAC,CAAC;IAEF,IAAI,CAACC,SAAS,GAAG,KAAK;EAC1B;;EAEA;AACJ;AACA;AACA;EACIJ,UAAU,CAACrK,KAAK,EAAE;IACd,MAAM0K,SAAS,GAAG1K,KAAK,CAACkE,aAAa;IAErC,MAAMlC,IAAI,GAAG,IAAI;IACjBiI,KAAK,CAACC,SAAS,CAACC,OAAO,CAACjK,IAAI,CAAC,IAAI,CAAC6J,QAAQ,EAAE,UAAUK,GAAG,EAAE;MACvD,MAAMO,UAAU,GAAGP,GAAG,KAAKM,SAAS;MACpC,MAAME,SAAS,GAAG5I,IAAI,CAACgI,aAAa,CAACvT,MAAM;MAC3C,IAAI+T,QAAQ;MACZ,KAAK,IAAI1K,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG8K,SAAS,EAAE9K,CAAC,EAAE,EAAE;QAChC,MAAM+K,KAAK,GAAG7I,IAAI,CAACgI,aAAa,CAAClK,CAAC,CAAC;QACnC,IAAI+K,KAAK,CAACtT,EAAE,KAAK6S,GAAG,CAAC7M,YAAY,CAAC,eAAe,CAAC,EAAE;UAChDiN,QAAQ,GAAGK,KAAK;UAChB;QACJ;MACJ;MAEAT,GAAG,CAACvQ,YAAY,CAAC,eAAe,EAAE8Q,UAAU,CAAC;MAC7CH,QAAQ,CAAC3Q,YAAY,CAAC,aAAa,EAAE,CAAC8Q,UAAU,CAAC;IACrD,CAAC,CAAC;EACN;;EAEA;AACJ;AACA;AACA;EACIb,uBAAuB,CAAC9J,KAAK,EAAE;IAE3B,MAAM8K,MAAM,GAAG9K,KAAK,CAACkE,aAAa;;IAElC;IACA,IAAIlE,KAAK,CAAC+K,MAAM,KAAK,CAAC,EAAE;MACpB/K,KAAK,CAACoI,cAAc,EAAE;MAEtB,MAAM2C,MAAM,GAAG/K,KAAK,CAAC+K,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;MACxC,MAAMC,SAAS,GAAGF,MAAM,CAAC9B,OAAO,CAACiC,aAAa,KAAK,KAAK,GAAG,CAAC,CAAC,GAAGF,MAAM,GAAG,GAAG,GAAGA,MAAM,GAAG,GAAG;MAE3F,IAAIG,gBAAgB,CAAChB,SAAS,CAACiB,QAAQ,EAAE;QACrCL,MAAM,CAACK,QAAQ,CAAC;UACZnN,GAAG,EAAE,CAAC;UACND,IAAI,EAAEiN,SAAS;UACfI,QAAQ,EAAE;QACd,CAAC,CAAC;MACN,CAAC,MACI;QACDN,MAAM,CAACO,UAAU,GAAGP,MAAM,CAACO,UAAU,GAAGL,SAAS;MACrD;IACJ;EACJ;;EAEA;AACJ;AACA;AACA;AACA;EACIV,eAAe,CAACtK,KAAK,EAAE;IAEnB,MAAM1C,OAAO,GAAG0C,KAAK,CAACkE,aAAa;IACnC5G,OAAO,CAAC4J,SAAS,CAACC,GAAG,CAAC,OAAO,CAAC;EAClC;;EAEA;AACJ;AACA;AACA;AACA;EACIoD,cAAc,CAACvK,KAAK,EAAE;IAElB,MAAM1C,OAAO,GAAG0C,KAAK,CAACkE,aAAa;;IAEnC;IACA5G,OAAO,CAAC4J,SAAS,CAACoE,MAAM,CAAC,OAAO,CAAC;IACjChO,OAAO,CAACiO,IAAI,EAAE;EAClB;;EAEA;AACJ;AACA;EACIC,aAAa,GAAG;IACZ,IAAIC,UAAU;IACdxB,KAAK,CAACC,SAAS,CAACC,OAAO,CAACjK,IAAI,CAAC,IAAI,CAAC6J,QAAQ,EAAE,UAAUK,GAAG,EAAE;MACvD,IAAIA,GAAG,CAAC7M,YAAY,CAAC,eAAe,CAAC,KAAK,MAAM,EAAE;QAC9CkO,UAAU,GAAGrB,GAAG;QAChB;MACJ;MAAC;IACL,CAAC,CAAC;IACF,OAAOqB,UAAU;EACrB;;EAEA;AACJ;AACA;EACIC,SAAS,GAAG;IACR,IAAI,CAAC3B,QAAQ,CAAC,CAAC,CAAC,CAAC7G,KAAK,EAAE;EAC5B;AACJ;;;;;;;;;;;;;;;ACvHe,MAAMyI,eAAe,CAAC;EACjC9V,WAAW,CAAC0B,EAAE,EAAEqU,SAAS,EAAE;IACvB,MAAM5J,IAAI,GAAG,IAAI;IAEjB,IAAI,CAAC6J,KAAK,GAAG1U,QAAQ,CAACC,cAAc,CAACG,EAAE,CAAC;IACxC,IAAI,CAACuU,UAAU,GAAGF,SAAS;IAE3B,IAAI,CAACC,KAAK,CAACtM,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACwM,sBAAsB,EAAE,KAAK,CAAC;IAC5E,IAAI,CAACF,KAAK,CAACtM,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAACyM,qBAAqB,EAAE,KAAK,CAAC;IAC1E,IAAI,IAAI,CAACF,UAAU,KAAK,KAAK,EAAE,IAAI,CAACD,KAAK,CAACtM,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACuK,uBAAuB,EAAE,KAAK,CAAC;IAExG,IAAI,CAACmC,UAAU,GAAG,IAAI,CAACJ,KAAK,CAACK,QAAQ;IACrCjC,KAAK,CAACC,SAAS,CAACC,OAAO,CAACjK,IAAI,CAAC,IAAI,CAAC+L,UAAU,EAAE,UAAUE,KAAK,EAAE;MAC3DA,KAAK,CAAC5M,gBAAgB,CAAC,OAAO,EAAEyC,IAAI,CAACoK,uBAAuB,CAACtT,IAAI,CAACkJ,IAAI,CAAC,EAAE,KAAK,CAAC;IACnF,CAAC,CAAC;EACN;;EAEA;AACJ;AACA;AACA;AACA;EACI+J,sBAAsB,CAAC/L,KAAK,EAAE;IAC1BA,KAAK,CAACkE,aAAa,CAACmI,KAAK,EAAE;EAC/B;;EAEA;AACJ;AACA;AACA;AACA;EACIL,qBAAqB,CAAChM,KAAK,EAAE;IACzBA,KAAK,CAACkE,aAAa,CAACqH,IAAI,EAAE;EAC9B;;EAEA;AACJ;AACA;AACA;EACIzB,uBAAuB,CAAC9J,KAAK,EAAE;IAE3B,MAAM8K,MAAM,GAAG9K,KAAK,CAACkE,aAAa;;IAElC;IACA,IAAIlE,KAAK,CAAC+K,MAAM,KAAK,CAAC,EAAE;MACpB/K,KAAK,CAACoI,cAAc,EAAE;MAEtB,MAAM2C,MAAM,GAAG/K,KAAK,CAAC+K,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;MACxC,MAAMC,SAAS,GAAGF,MAAM,CAAC9B,OAAO,CAACiC,aAAa,KAAK,KAAK,GAAG,CAAC,CAAC,GAAGF,MAAM,GAAG,GAAG,GAAGA,MAAM,GAAG,GAAG;MAE3F,IAAIG,gBAAgB,CAAChB,SAAS,CAACiB,QAAQ,EAAE;QACrCL,MAAM,CAACK,QAAQ,CAAC;UACZnN,GAAG,EAAE,CAAC;UACND,IAAI,EAAEiN,SAAS;UACfI,QAAQ,EAAE;QACd,CAAC,CAAC;MACN,CAAC,MACI;QACDN,MAAM,CAACO,UAAU,GAAGP,MAAM,CAACO,UAAU,GAAGL,SAAS;MACrD;IACJ;EACJ;EAEAoB,uBAAuB,CAACpM,KAAK,EAAE;IAE3B,MAAM8K,MAAM,GAAG9K,KAAK,CAACkE,aAAa;IAClC,MAAMlC,IAAI,GAAG,IAAI;IACjBiI,KAAK,CAACC,SAAS,CAACC,OAAO,CAACjK,IAAI,CAAC,IAAI,CAAC+L,UAAU,EAAE,UAAUE,KAAK,EAAE;MAC3D,IAAIrB,MAAM,KAAKqB,KAAK,EAAE;QAClBA,KAAK,CAACjF,SAAS,CAACC,GAAG,CAAC,UAAU,CAAC;QAC/BnF,IAAI,CAACsK,cAAc,CAACH,KAAK,CAAC;MAC9B,CAAC,MACI;QACDA,KAAK,CAACjF,SAAS,CAACoE,MAAM,CAAC,UAAU,CAAC;MACtC;IACJ,CAAC,CAAC;EACN;;EAEA;AACJ;AACA;AACA;EACIiB,UAAU,CAAC9S,IAAI,EAAE;IAEb,MAAMuI,IAAI,GAAG,IAAI;IACjBiI,KAAK,CAACC,SAAS,CAACC,OAAO,CAACjK,IAAI,CAAC,IAAI,CAAC+L,UAAU,EAAE,UAAUE,KAAK,EAAE;MAC3D,MAAMK,SAAS,GAAG9H,QAAQ,CAACyH,KAAK,CAACnD,OAAO,CAACyD,UAAU,CAAC;MAEpD,IAAIhT,IAAI,KAAK+S,SAAS,EAAE;QACpBL,KAAK,CAACjF,SAAS,CAACC,GAAG,CAAC,UAAU,CAAC;QAC/BnF,IAAI,CAACsK,cAAc,CAACH,KAAK,CAAC;MAC9B,CAAC,MACI;QACDA,KAAK,CAACjF,SAAS,CAACoE,MAAM,CAAC,UAAU,CAAC;MACtC;IACJ,CAAC,CAAC;EACN;;EAEA;AACJ;AACA;AACA;EACIgB,cAAc,CAAChP,OAAO,EAAE;IAEpB,MAAMoP,UAAU,GAAGpP,OAAO,CAACqP,qBAAqB,EAAE;IAClD,MAAMC,UAAU,GAAG,IAAI,CAACf,KAAK,CAACc,qBAAqB,EAAE;IAErD,IAAI,IAAI,CAACb,UAAU,KAAK,QAAQ,EAAE;MAC9B,MAAMe,SAAS,GAAGH,UAAU,CAAC1O,GAAG,GAAG4O,UAAU,CAAC5O,GAAG,GAAG,EAAE;MACtD,IAAIkN,gBAAgB,CAAChB,SAAS,CAACiB,QAAQ,EAAE;QACrC,IAAI,CAACU,KAAK,CAACV,QAAQ,CAAC;UAChBnN,GAAG,EAAE6O,SAAS;UACd9O,IAAI,EAAE,CAAC;UACPqN,QAAQ,EAAE;QACd,CAAC,CAAC;MACN,CAAC,MACI;QACD,IAAI,CAACS,KAAK,CAACgB,SAAS,GAAG,IAAI,CAAChB,KAAK,CAACgB,SAAS,GAAGA,SAAS;MAC3D;IACJ,CAAC,MACI;MACD,MAAMxB,UAAU,GAAGqB,UAAU,CAAC3O,IAAI,GAAG6O,UAAU,CAAC7O,IAAI,GAAI6O,UAAU,CAACxS,KAAK,GAAG,CAAE,GAAIsS,UAAU,CAACtS,KAAK,GAAG,CAAE;MACtG,IAAI8Q,gBAAgB,CAAChB,SAAS,CAACiB,QAAQ,EAAE;QACrC,IAAI,CAACU,KAAK,CAACV,QAAQ,CAAC;UAChBnN,GAAG,EAAE,CAAC;UACND,IAAI,EAAEsN,UAAU;UAChBD,QAAQ,EAAE;QACd,CAAC,CAAC;MACN,CAAC,MACI;QACD,IAAI,CAACS,KAAK,CAACR,UAAU,GAAG,IAAI,CAACQ,KAAK,CAACR,UAAU,GAAGA,UAAU;MAC9D;IACJ;EACJ;AACJ;;;;;;;;;;;;;;;ACtIe,MAAMyB,eAAe,CAAC;EACjCjX,WAAW,CAAC6K,MAAM,EAAEzK,YAAY,EAAE8W,QAAQ,EAAEC,SAAS,EAAE;IACnD;AACR;AACA;AACA;AACA;IACQ,IAAI,CAAC9L,OAAO,GAAGR,MAAM;;IAErB;AACR;AACA;AACA;IACQ,IAAI,CAACuM,WAAW,GAAG1X,MAAM,CAAC2X,gBAAgB,GAAG,CAAC,GAAG3X,MAAM,CAAC2X,gBAAgB,GAAG,CAAC;;IAE5E;AACR;AACA;AACA;IACQ,IAAI,CAACC,SAAS,GAAGJ,QAAQ;;IAEzB;AACR;AACA;AACA;IACQ,IAAI,CAACK,UAAU,GAAGJ,SAAS;;IAE3B;AACR;AACA;AACA;IACQ,IAAI,CAACK,qBAAqB,GAAG,IAAI,CAACC,cAAc,CAACxU,IAAI,CAAC,IAAI,CAAC;;IAE3D;AACR;AACA;AACA;IACQ,IAAI,CAACnC,UAAU,GAAG,IAAI4W,KAAK,EAAE;IAC7B,IAAI,CAAC5W,UAAU,CAAC2L,MAAM,GAAG,YAAW;MAChC,IAAI,CAACpB,OAAO,CAAClI,UAAU,CAAC,iBAAiB,EAAE,IAAI,CAACqU,qBAAqB,CAAC;MACtE,IAAI,CAACG,QAAQ,GAAG,IAAI,CAAC7W,UAAU,CAACyD,KAAK,GAAG,IAAI,CAAC6S,WAAW;MACxD,IAAI,CAACQ,SAAS,GAAG,IAAI,CAAC9W,UAAU,CAAC0D,MAAM,GAAG,IAAI,CAAC4S,WAAW;IAC9D,CAAC,CAACnU,IAAI,CAAC,IAAI,CAAC;IACZ,IAAI,CAACnC,UAAU,CAAC+W,GAAG,GAAGzX,YAAY;EACtC;;EAEA;AACJ;AACA;AACA;AACA;EACIqX,cAAc,GAAG;IAEb,IAAIhT,WAAW,GAAGoK,QAAQ,CAAC,IAAI,CAACxD,OAAO,CAAC5G,WAAW,EAAE,CAAC,GAAG,CAAC;;IAE1D;IACA,IAAI,CAAC,IAAI,CAACqT,gBAAgB,EAAE,EAAE;;IAE9B;IACA,IAAIC,SAAS,GAAG,IAAI,CAAC1M,OAAO,CAAChI,MAAM,CAAC2U,UAAU;;IAE9C;IACA,IAAI1H,MAAM,GAAG,IAAI,CAACjF,OAAO,CAACpG,QAAQ,CAACtB,WAAW,EAAE;;IAEhD;IACA,IAAIsU,YAAY,GAAG,IAAI,CAACC,cAAc,CAACH,SAAS,CAAC;;IAEjD;IACA,IAAII,MAAM,GAAG,IAAI,CAACC,aAAa,CAACH,YAAY,EAAE3H,MAAM,CAAC;;IAErD;IACA2H,YAAY,CAACI,kBAAkB,CAACF,MAAM,CAAC;;IAEvC;IACA,IAAIG,KAAK,GAAG,IAAI,CAACC,kBAAkB,CAACN,YAAY,EAAEE,MAAM,EAAE7H,MAAM,CAAC;;IAEjE;IACA,IAAI,CAACjF,OAAO,CAACmN,MAAM,CAACC,OAAO,CAACC,SAAS,CAAC,IAAI,CAAC5X,UAAU,EAAEwX,KAAK,CAAC3S,CAAC,EAAE2S,KAAK,CAAC5S,CAAC,EAAEyS,MAAM,CAACxS,CAAC,EAAEwS,MAAM,CAACzS,CAAC,CAAC;EAChG;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIwS,cAAc,CAACH,SAAS,EAAE;IACtB;IACA,IAAIY,OAAO,GAAG,IAAI,CAACtN,OAAO,CAACjH,KAAK,CAACC,SAAS,CAAC,CAAC,CAAC,CAACuU,+BAA+B,CAAC,IAAInX,aAAa,CAAC6C,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAACuU,KAAK,CAAC,IAAI,CAACzB,WAAW,CAAC;IACpI,IAAI0B,QAAQ,GAAG,IAAI,CAACzN,OAAO,CAACjH,KAAK,CAACC,SAAS,CAAC,CAAC,CAAC,CAACuU,+BAA+B,CAAC,IAAInX,aAAa,CAAC6C,KAAK,CAACyT,SAAS,CAACpS,CAAC,EAAE,CAAC,CAAC,CAAC,CAACkT,KAAK,CAAC,IAAI,CAACzB,WAAW,CAAC;IAC/I,IAAI2B,UAAU,GAAG,IAAI,CAAC1N,OAAO,CAACjH,KAAK,CAACC,SAAS,CAAC,CAAC,CAAC,CAACuU,+BAA+B,CAAC,IAAInX,aAAa,CAAC6C,KAAK,CAAC,CAAC,EAAEyT,SAAS,CAACrS,CAAC,CAAC,CAAC,CAACmT,KAAK,CAAC,IAAI,CAACzB,WAAW,CAAC;IACjJ,IAAI4B,WAAW,GAAG,IAAI,CAAC3N,OAAO,CAACjH,KAAK,CAACC,SAAS,CAAC,CAAC,CAAC,CAACuU,+BAA+B,CAACb,SAAS,CAAC,CAACc,KAAK,CAAC,IAAI,CAACzB,WAAW,CAAC;IAEpH,IAAI6B,UAAU,GAAG,IAAI,CAAC5N,OAAO,CAAC5D,OAAO;IACrC,OAAO,IAAIyR,mBAAmB,CAACP,OAAO,EAAEG,QAAQ,EAAEE,WAAW,EAAED,UAAU,EAAE,CAAC,EAAEE,UAAU,CAACnJ,WAAW,GAAG,IAAI,CAACsH,WAAW,EAAE,CAAC,EAAE6B,UAAU,CAAClJ,YAAY,GAAG,IAAI,CAACqH,WAAW,CAAC;EAC3K;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;EACIgB,aAAa,CAACH,YAAY,EAAEvU,OAAO,EAAE;IACjC;IACA,IAAIyV,eAAe,GAAGlB,YAAY,CAACmB,QAAQ,CAAC1V,OAAO,CAAC;IACpD,IAAI2V,gBAAgB,GAAGpB,YAAY,CAACqB,SAAS,CAAC5V,OAAO,CAAC;;IAEtD;IACA,IAAIuU,YAAY,CAACsB,OAAO,CAAC7V,OAAO,CAAC,KAAK,CAAC,IAAIuU,YAAY,CAACuB,QAAQ,CAAC9V,OAAO,CAAC,KAAK,IAAI,CAAC2H,OAAO,CAAC5D,OAAO,CAACqI,WAAW,GAAG,IAAI,CAACsH,WAAW,EAAE+B,eAAe,GAAGA,eAAe,GAAG,GAAG;IAC1K,IAAIlB,YAAY,CAACwB,MAAM,CAAC/V,OAAO,CAAC,KAAK,CAAC,IAAIuU,YAAY,CAACyB,SAAS,CAAChW,OAAO,CAAC,KAAK,IAAI,CAAC2H,OAAO,CAAC5D,OAAO,CAACsI,YAAY,GAAG,IAAI,CAACqH,WAAW,EAAEiC,gBAAgB,GAAGA,gBAAgB,GAAG,GAAG;;IAE7K;IACA,IAAIlB,MAAM,GAAG,IAAI1W,aAAa,CAAC6C,KAAK,CAAC,IAAI,CAACqT,QAAQ,EAAE,IAAI,CAACC,SAAS,CAAC;IACnE,IAAI+B,aAAa,GAAG,IAAI,CAAChC,QAAQ,GAAG,IAAI,CAACC,SAAS;;IAElD;IACA,IAAIgC,aAAa,GAAG,IAAI,CAACvO,OAAO,CAAC5D,OAAO,CAACqI,WAAW,GAAG,IAAI,CAACsH,WAAW,GAAG,IAAI;IAC9E,IAAI,IAAI,CAACO,QAAQ,GAAGiC,aAAa,EAAE;MAC/BzB,MAAM,CAACxS,CAAC,GAAGiU,aAAa;MACxBzB,MAAM,CAACzS,CAAC,GAAGyS,MAAM,CAACxS,CAAC,GAAGgU,aAAa;IACvC;IAEA,IAAIE,cAAc,GAAG,IAAI,CAACxO,OAAO,CAAC5D,OAAO,CAACsI,YAAY,GAAG,IAAI,CAACqH,WAAW,GAAG,IAAI;IAChF,IAAIe,MAAM,CAACzS,CAAC,GAAGmU,cAAc,EAAE;MAC3B1B,MAAM,CAACzS,CAAC,GAAGmU,cAAc;MACzB1B,MAAM,CAACxS,CAAC,GAAGwS,MAAM,CAACzS,CAAC,GAAGiU,aAAa;IACvC;;IAEA;IACA,IAAIxB,MAAM,CAACxS,CAAC,GAAGwT,eAAe,EAAE;MAC5BhB,MAAM,CAACxS,CAAC,GAAGwT,eAAe;MAC1BhB,MAAM,CAACzS,CAAC,GAAGyS,MAAM,CAACxS,CAAC,GAAGgU,aAAa;IACvC;IAEA,IAAIxB,MAAM,CAACzS,CAAC,GAAG2T,gBAAgB,EAAE;MAC7BlB,MAAM,CAACzS,CAAC,GAAG2T,gBAAgB;MAC3BlB,MAAM,CAACxS,CAAC,GAAGwS,MAAM,CAACzS,CAAC,GAAGiU,aAAa;IACvC;IAEA,OAAOxB,MAAM;EACjB;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACII,kBAAkB,CAACN,YAAY,EAAEE,MAAM,EAAEzU,OAAO,EAAE;IAE9C,IAAIoW,WAAW,GAAG,IAAIrY,aAAa,CAAC6C,KAAK,EAAE;;IAE3C;IACA;IACA,QAAQ,IAAI,CAACgT,SAAS;MAClB,KAAKyC,WAAW,CAACC,OAAO;QACpBF,WAAW,CAACnU,CAAC,GAAGsS,YAAY,CAACgC,UAAU,CAACvW,OAAO,CAAC,CAACiC,CAAC;QAClDmU,WAAW,CAACpU,CAAC,GAAGuS,YAAY,CAACgC,UAAU,CAACvW,OAAO,CAAC,CAACgC,CAAC;QAClD;MAEJ,KAAKqU,WAAW,CAACG,QAAQ;QACrBJ,WAAW,CAACnU,CAAC,GAAGsS,YAAY,CAACkC,WAAW,CAACzW,OAAO,CAAC,CAACiC,CAAC,GAAGwS,MAAM,CAACxS,CAAC;QAC9DmU,WAAW,CAACpU,CAAC,GAAGuS,YAAY,CAACkC,WAAW,CAACzW,OAAO,CAAC,CAACgC,CAAC;QACnD;MAEJ,KAAKqU,WAAW,CAACK,WAAW;QACxBN,WAAW,CAACnU,CAAC,GAAGsS,YAAY,CAACoC,cAAc,CAAC3W,OAAO,CAAC,CAACiC,CAAC,GAAGwS,MAAM,CAACxS,CAAC;QACjEmU,WAAW,CAACpU,CAAC,GAAGuS,YAAY,CAACoC,cAAc,CAAC3W,OAAO,CAAC,CAACgC,CAAC,GAAGyS,MAAM,CAACzS,CAAC;QACjE;MAEJ,KAAKqU,WAAW,CAACO,UAAU;QACvBR,WAAW,CAACnU,CAAC,GAAGsS,YAAY,CAACsC,aAAa,CAAC7W,OAAO,CAAC,CAACiC,CAAC;QACrDmU,WAAW,CAACpU,CAAC,GAAGuS,YAAY,CAACsC,aAAa,CAAC7W,OAAO,CAAC,CAACgC,CAAC,GAAGyS,MAAM,CAACzS,CAAC;QAChE;IAAM;IAGd,IAAIoU,WAAW,CAACnU,CAAC,GAAG,CAAC,EAAEmU,WAAW,CAACnU,CAAC,GAAG,CAAC;IACxC,IAAImU,WAAW,CAACnU,CAAC,GAAGwS,MAAM,CAACxS,CAAC,GAAG,IAAI,CAAC0F,OAAO,CAAC5D,OAAO,CAACqI,WAAW,GAAG,IAAI,CAACsH,WAAW,EAAE0C,WAAW,CAACnU,CAAC,GAAG,IAAI,CAAC0F,OAAO,CAAC5D,OAAO,CAACqI,WAAW,GAAG,IAAI,CAACsH,WAAW,GAAGe,MAAM,CAACxS,CAAC;IAElK,IAAImU,WAAW,CAACpU,CAAC,GAAG,CAAC,EAAEoU,WAAW,CAACpU,CAAC,GAAG,CAAC;IACxC,IAAIoU,WAAW,CAACpU,CAAC,GAAGyS,MAAM,CAACzS,CAAC,GAAG,IAAI,CAAC2F,OAAO,CAAC5D,OAAO,CAACsI,YAAY,GAAG,IAAI,CAACqH,WAAW,EAAE0C,WAAW,CAACpU,CAAC,GAAG,IAAI,CAAC2F,OAAO,CAAC5D,OAAO,CAACsI,YAAY,GAAG,IAAI,CAACqH,WAAW,GAAGe,MAAM,CAACzS,CAAC;IAEpK,OAAOoU,WAAW;EACtB;;EAGA;AACJ;AACA;AACA;EACIhC,gBAAgB,GAAG;IAEf,IAAI,CAAC,IAAI,CAACP,UAAU,EAAE,OAAO,IAAI;IAEjC,IAAI9S,WAAW,GAAGoK,QAAQ,CAAC,IAAI,CAACxD,OAAO,CAAC5G,WAAW,EAAE,CAAC,GAAG,CAAC;IAC1D,OAAO,IAAI,CAAC8S,UAAU,CAAC9X,OAAO,CAACgF,WAAW,CAAC,KAAK,CAAC,CAAC;EACtD;;EAEA;AACJ;AACA;EACI+V,OAAO,GAAG;IAEN,IAAI,CAACnP,OAAO,CAACoP,aAAa,CAAC,iBAAiB,EAAE,IAAI,CAACjD,qBAAqB,CAAC;IAEzE,IAAI,CAACnM,OAAO,GAAG,IAAI;IACnB,IAAI,CAAC+L,WAAW,GAAG,IAAI;IAEvB,IAAI,CAACE,SAAS,GAAG,IAAI;IACrB,IAAI,CAACC,UAAU,GAAG,IAAI;IAEtB,IAAI,CAACzW,UAAU,GAAG,IAAI;IAEtB,IAAI,CAAC6W,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACC,SAAS,GAAG,IAAI;IAErB,IAAI,CAACJ,qBAAqB,GAAG,IAAI;EACrC;AACJ;AAGA,MAAM0B,mBAAmB,CAAC;EACtBlZ,WAAW,CAAC2Y,OAAO,EAAEG,QAAQ,EAAEE,WAAW,EAAED,UAAU,EAAE2B,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAE;IAC5E,IAAI,CAAClC,OAAO,GAAG,IAAI,CAACmC,UAAU,CAACnC,OAAO,EAAE+B,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;IAC/D,IAAI,CAAC/B,QAAQ,GAAG,IAAI,CAACgC,UAAU,CAAChC,QAAQ,EAAE4B,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;IACjE,IAAI,CAAC7B,WAAW,GAAG,IAAI,CAAC8B,UAAU,CAAC9B,WAAW,EAAE0B,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;IACvE,IAAI,CAAC9B,UAAU,GAAG,IAAI,CAAC+B,UAAU,CAAC/B,UAAU,EAAE2B,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC;IAErE,IAAI,CAACzD,WAAW,GAAG1X,MAAM,CAAC2X,gBAAgB;EAC9C;;EAEA;AACJ;AACA;AACA;AACA;AACA;EACI+B,QAAQ,CAAC1V,OAAO,EAAE;IACd,IAAIA,OAAO,IAAI,CAAC,IAAIA,OAAO,GAAG,EAAE,EAAE,OAAO,IAAI,CAACoV,QAAQ,CAACnT,CAAC,GAAG,IAAI,CAACoT,UAAU,CAACpT,CAAC;IAC5E,IAAIjC,OAAO,IAAI,EAAE,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACiV,OAAO,CAAChT,CAAC,GAAG,IAAI,CAACqT,WAAW,CAACrT,CAAC;IAC9E,IAAIjC,OAAO,IAAI,GAAG,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACqV,UAAU,CAACpT,CAAC,GAAG,IAAI,CAACmT,QAAQ,CAACnT,CAAC;IAC/E,IAAIjC,OAAO,IAAI,GAAG,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACsV,WAAW,CAACrT,CAAC,GAAG,IAAI,CAACgT,OAAO,CAAChT,CAAC;IAE/E,OAAO,IAAI,CAACyT,QAAQ,CAAC1V,OAAO,GAAG,GAAG,CAAC;EACvC;;EAEA;AACJ;AACA;AACA;AACA;AACA;EACI4V,SAAS,CAAC5V,OAAO,EAAE;IACf,IAAIA,OAAO,IAAI,CAAC,IAAIA,OAAO,GAAG,EAAE,EAAE,OAAO,IAAI,CAACsV,WAAW,CAACtT,CAAC,GAAG,IAAI,CAACiT,OAAO,CAACjT,CAAC;IAC5E,IAAIhC,OAAO,IAAI,EAAE,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACoV,QAAQ,CAACpT,CAAC,GAAG,IAAI,CAACqT,UAAU,CAACrT,CAAC;IAC9E,IAAIhC,OAAO,IAAI,GAAG,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACiV,OAAO,CAACjT,CAAC,GAAG,IAAI,CAACsT,WAAW,CAACtT,CAAC;IAC/E,IAAIhC,OAAO,IAAI,GAAG,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACqV,UAAU,CAACrT,CAAC,GAAG,IAAI,CAACoT,QAAQ,CAACpT,CAAC;IAE/E,OAAO,IAAI,CAAC4T,SAAS,CAAC5V,OAAO,GAAG,GAAG,CAAC;EACxC;;EAEA;AACJ;AACA;AACA;AACA;AACA;EACI+V,MAAM,CAAC/V,OAAO,EAAE;IACZ,IAAIA,OAAO,IAAI,CAAC,IAAIA,OAAO,GAAG,EAAE,EAAE,OAAO,IAAI,CAACiV,OAAO,CAACjT,CAAC;IACvD,IAAIhC,OAAO,IAAI,EAAE,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACqV,UAAU,CAACrT,CAAC;IAC5D,IAAIhC,OAAO,IAAI,GAAG,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACsV,WAAW,CAACtT,CAAC;IAC9D,IAAIhC,OAAO,IAAI,GAAG,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACoV,QAAQ,CAACpT,CAAC;IAE3D,OAAO,IAAI,CAAC+T,MAAM,CAAC/V,OAAO,GAAG,GAAG,CAAC;EACrC;;EAEA;AACJ;AACA;AACA;AACA;AACA;EACI8V,QAAQ,CAAC9V,OAAO,EAAE;IACd,IAAIA,OAAO,IAAI,CAAC,IAAIA,OAAO,GAAG,EAAE,EAAE,OAAO,IAAI,CAACoV,QAAQ,CAACnT,CAAC;IACxD,IAAIjC,OAAO,IAAI,EAAE,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACiV,OAAO,CAAChT,CAAC;IACzD,IAAIjC,OAAO,IAAI,GAAG,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACqV,UAAU,CAACpT,CAAC;IAC7D,IAAIjC,OAAO,IAAI,GAAG,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACsV,WAAW,CAACrT,CAAC;IAE9D,OAAO,IAAI,CAAC6T,QAAQ,CAAC9V,OAAO,GAAG,GAAG,CAAC;EACvC;;EAEA;AACJ;AACA;AACA;AACA;AACA;EACIgW,SAAS,CAAChW,OAAO,EAAE;IACf,IAAIA,OAAO,IAAI,CAAC,IAAIA,OAAO,GAAG,EAAE,EAAE,OAAO,IAAI,CAACsV,WAAW,CAACtT,CAAC;IAC3D,IAAIhC,OAAO,IAAI,EAAE,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACoV,QAAQ,CAACpT,CAAC;IAC1D,IAAIhC,OAAO,IAAI,GAAG,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACiV,OAAO,CAACjT,CAAC;IAC1D,IAAIhC,OAAO,IAAI,GAAG,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACqV,UAAU,CAACrT,CAAC;IAE7D,OAAO,IAAI,CAAC+T,MAAM,CAAC/V,OAAO,GAAG,GAAG,CAAC;EACrC;;EAEA;AACJ;AACA;AACA;AACA;AACA;EACI6V,OAAO,CAAC7V,OAAO,EAAE;IACb,IAAIA,OAAO,IAAI,CAAC,IAAIA,OAAO,GAAG,EAAE,EAAE,OAAO,IAAI,CAACqV,UAAU,CAACpT,CAAC;IAC1D,IAAIjC,OAAO,IAAI,EAAE,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACsV,WAAW,CAACrT,CAAC;IAC7D,IAAIjC,OAAO,IAAI,GAAG,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACoV,QAAQ,CAACnT,CAAC;IAC3D,IAAIjC,OAAO,IAAI,GAAG,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACiV,OAAO,CAAChT,CAAC;IAE1D,OAAO,IAAI,CAAC4T,OAAO,CAAC7V,OAAO,GAAG,GAAG,CAAC;EACtC;;EAEA;AACJ;AACA;AACA;AACA;AACA;EACIuW,UAAU,CAACvW,OAAO,EAAE;IAChB,IAAIA,OAAO,IAAI,EAAE,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACqV,UAAU;IAC1D,IAAIrV,OAAO,IAAI,GAAG,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACsV,WAAW;IAC5D,IAAItV,OAAO,IAAI,GAAG,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACoV,QAAQ;IAEzD,OAAO,IAAI,CAACH,OAAO;EACvB;;EAEA;AACJ;AACA;AACA;AACA;AACA;EACI4B,aAAa,CAAC7W,OAAO,EAAE;IACnB,IAAIA,OAAO,IAAI,EAAE,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACsV,WAAW;IAC3D,IAAItV,OAAO,IAAI,GAAG,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACoV,QAAQ;IACzD,IAAIpV,OAAO,IAAI,GAAG,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACiV,OAAO;IAExD,OAAO,IAAI,CAACI,UAAU;EAC1B;;EAEA;AACJ;AACA;AACA;AACA;AACA;EACIsB,cAAc,CAAC3W,OAAO,EAAE;IACpB,IAAIA,OAAO,IAAI,EAAE,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACoV,QAAQ;IACxD,IAAIpV,OAAO,IAAI,GAAG,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACiV,OAAO;IACxD,IAAIjV,OAAO,IAAI,GAAG,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACqV,UAAU;IAE3D,OAAO,IAAI,CAACC,WAAW;EAC3B;;EAEA;AACJ;AACA;AACA;AACA;AACA;EACImB,WAAW,CAACzW,OAAO,EAAE;IACjB,IAAIA,OAAO,IAAI,EAAE,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACiV,OAAO;IACvD,IAAIjV,OAAO,IAAI,GAAG,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACqV,UAAU;IAC3D,IAAIrV,OAAO,IAAI,GAAG,IAAIA,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAACsV,WAAW;IAE5D,OAAO,IAAI,CAACF,QAAQ;EACxB;;EAEA;AACJ;AACA;AACA;AACA;EACIT,kBAAkB,CAAC0C,eAAe,EAAE;IAChC,IAAIC,UAAU,GAAG,IAAI,CAACL,IAAI;IAC1B,IAAIM,UAAU,GAAG,IAAI,CAACJ,IAAI;IAE1B,IAAI,CAAClC,OAAO,GAAG,IAAI,CAACmC,UAAU,CAAC,IAAI,CAACnC,OAAO,EAAE,CAAC,EAAEqC,UAAU,EAAE,CAAC,EAAEC,UAAU,CAAC;IAC1E,IAAI,CAACnC,QAAQ,GAAG,IAAI,CAACgC,UAAU,CAAC,IAAI,CAAChC,QAAQ,EAAE,CAAC,EAAEkC,UAAU,EAAE,CAAC,EAAEC,UAAU,CAAC;IAC5E,IAAI,CAACjC,WAAW,GAAG,IAAI,CAAC8B,UAAU,CAAC,IAAI,CAAC9B,WAAW,EAAE,CAAC,EAAEgC,UAAU,EAAE,CAAC,EAAEC,UAAU,CAAC;IAClF,IAAI,CAAClC,UAAU,GAAG,IAAI,CAAC+B,UAAU,CAAC,IAAI,CAAC/B,UAAU,EAAE,CAAC,EAAEiC,UAAU,EAAE,CAAC,EAAEC,UAAU,CAAC;EACpF;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACIH,UAAU,CAACI,MAAM,EAAER,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAE;IAEvC,IAAIK,MAAM,CAACvV,CAAC,GAAG+U,IAAI,EAAE;MACjBQ,MAAM,CAACvV,CAAC,GAAG+U,IAAI;IACnB,CAAC,MACI,IAAIQ,MAAM,CAACvV,CAAC,GAAGgV,IAAI,EAAE;MACtBO,MAAM,CAACvV,CAAC,GAAGgV,IAAI;IACnB;IAEA,IAAIO,MAAM,CAACxV,CAAC,GAAGkV,IAAI,EAAE;MACjBM,MAAM,CAACxV,CAAC,GAAGkV,IAAI;IACnB,CAAC,MACI,IAAIM,MAAM,CAACxV,CAAC,GAAGmV,IAAI,EAAE;MACtBK,MAAM,CAACxV,CAAC,GAAGmV,IAAI;IACnB;IAEA,OAAOK,MAAM;EACjB;AACJ;AAEA,MAAMnB,WAAW,GAAG;EAChB;EACA;EACAC,OAAO,EAAE,CAAC;EACV;EACA;EACAE,QAAQ,EAAE,CAAC;EACX;EACA;EACAE,WAAW,EAAE,CAAC;EACd;EACA;EACAE,UAAU,EAAE;AAChB,CAAC;;;;;;;;;;AC3bD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,UAASa,CAAC,EAAEzb,MAAM,EAAE4B,QAAQ,EAAEuB,SAAS,EAAE;EACtC,IAAIuY,OAAO,GAAGD,CAAC,CAACzb,MAAM,CAAC;EAEvByb,CAAC,CAACE,EAAE,CAACC,QAAQ,GAAG,UAASC,OAAO,EAAE;IAC9B,IAAIC,QAAQ,GAAG,IAAI;IACnB,IAAIC,UAAU;IACd,IAAIC,QAAQ,GAAG;MACXC,SAAS,EAAS,CAAC;MACnBC,aAAa,EAAK,CAAC;MACnBzR,KAAK,EAAa,QAAQ;MAC1B0R,MAAM,EAAY,MAAM;MACxBC,SAAS,EAASpc,MAAM;MACxBqc,cAAc,EAAI,UAAU;MAC5BC,cAAc,EAAI,KAAK;MACvBC,MAAM,EAAY,IAAI;MACtBC,IAAI,EAAc,IAAI;MACtBC,WAAW,EAAO;IACtB,CAAC;IAED,SAASvU,MAAM,GAAG;MACd,IAAIwU,OAAO,GAAG,CAAC;MAEfZ,QAAQ,CAACa,IAAI,CAAC,YAAW;QACrB,IAAIC,KAAK,GAAGnB,CAAC,CAAC,IAAI,CAAC;QACnB,IAAIO,QAAQ,CAACM,cAAc,IAAI,CAACM,KAAK,CAACC,EAAE,CAAC,UAAU,CAAC,EAAE;UAClD;QACJ;QACA,IAAIpB,CAAC,CAACqB,WAAW,CAAC,IAAI,EAAEd,QAAQ,CAAC,IAC7BP,CAAC,CAACsB,WAAW,CAAC,IAAI,EAAEf,QAAQ,CAAC,EAAE;UAC3B;QAAA,CACP,MAAM,IAAI,CAACP,CAAC,CAACuB,YAAY,CAAC,IAAI,EAAEhB,QAAQ,CAAC,IACtC,CAACP,CAAC,CAACwB,WAAW,CAAC,IAAI,EAAEjB,QAAQ,CAAC,EAAE;UAC5BY,KAAK,CAACM,OAAO,CAAC,QAAQ,CAAC;UACvB;UACAR,OAAO,GAAG,CAAC;QACnB,CAAC,MAAM;UACH,IAAI,EAAEA,OAAO,GAAGV,QAAQ,CAACE,aAAa,EAAE;YACpC,OAAO,KAAK;UAChB;QACJ;MACJ,CAAC,CAAC;IAEN;IAEA,IAAGL,OAAO,EAAE;MACR;MACA,IAAI1Y,SAAS,KAAK0Y,OAAO,CAACsB,YAAY,EAAE;QACpCtB,OAAO,CAACK,aAAa,GAAGL,OAAO,CAACsB,YAAY;QAC5C,OAAOtB,OAAO,CAACsB,YAAY;MAC/B;MACA,IAAIha,SAAS,KAAK0Y,OAAO,CAACuB,WAAW,EAAE;QACnCvB,OAAO,CAACwB,YAAY,GAAGxB,OAAO,CAACuB,WAAW;QAC1C,OAAOvB,OAAO,CAACuB,WAAW;MAC9B;MAEA3B,CAAC,CAAC6B,MAAM,CAACtB,QAAQ,EAAEH,OAAO,CAAC;IAC/B;;IAEA;IACAE,UAAU,GAAIC,QAAQ,CAACI,SAAS,KAAKjZ,SAAS,IAChC6Y,QAAQ,CAACI,SAAS,KAAKpc,MAAM,GAAI0b,OAAO,GAAGD,CAAC,CAACO,QAAQ,CAACI,SAAS,CAAC;;IAE9E;IACA,IAAI,CAAC,KAAKJ,QAAQ,CAACvR,KAAK,CAAC1K,OAAO,CAAC,QAAQ,CAAC,EAAE;MACxCgc,UAAU,CAACxY,IAAI,CAACyY,QAAQ,CAACvR,KAAK,EAAE,YAAW;QACvC,OAAOvC,MAAM,EAAE;MACnB,CAAC,CAAC;IACN;IAEA,IAAI,CAACyU,IAAI,CAAC,YAAW;MACjB,IAAIlQ,IAAI,GAAG,IAAI;MACf,IAAI8Q,KAAK,GAAG9B,CAAC,CAAChP,IAAI,CAAC;MAEnBA,IAAI,CAAC+Q,MAAM,GAAG,KAAK;;MAEnB;MACA,IAAID,KAAK,CAACE,IAAI,CAAC,KAAK,CAAC,KAAKta,SAAS,IAAIoa,KAAK,CAACE,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE;QAChE,IAAIF,KAAK,CAACV,EAAE,CAAC,KAAK,CAAC,EAAE;UACjBU,KAAK,CAACE,IAAI,CAAC,KAAK,EAAEzB,QAAQ,CAACS,WAAW,CAAC;QAC3C;MACJ;;MAEA;MACAc,KAAK,CAACG,GAAG,CAAC,QAAQ,EAAE,YAAW;QAC3B,IAAI,CAAC,IAAI,CAACF,MAAM,EAAE;UACd,IAAIxB,QAAQ,CAACO,MAAM,EAAE;YACjB,IAAIoB,aAAa,GAAG7B,QAAQ,CAAC5a,MAAM;YACnC8a,QAAQ,CAACO,MAAM,CAAC5R,IAAI,CAAC8B,IAAI,EAAEkR,aAAa,EAAE3B,QAAQ,CAAC;UACvD;UACAP,CAAC,CAAC,SAAS,CAAC,CACPlY,IAAI,CAAC,MAAM,EAAE,YAAW;YAErB,IAAIqa,QAAQ,GAAGL,KAAK,CAACE,IAAI,CAAC,OAAO,GAAGzB,QAAQ,CAACK,cAAc,CAAC;YAC5DkB,KAAK,CAACM,IAAI,EAAE;YACZ,IAAIN,KAAK,CAACV,EAAE,CAAC,KAAK,CAAC,EAAE;cACjBU,KAAK,CAACE,IAAI,CAAC,KAAK,EAAEG,QAAQ,CAAC;YAC/B,CAAC,MAAM;cACHL,KAAK,CAACO,GAAG,CAAC,kBAAkB,EAAE,OAAO,GAAGF,QAAQ,GAAG,IAAI,CAAC;YAC5D;YACAL,KAAK,CAACvB,QAAQ,CAACG,MAAM,CAAC,CAACH,QAAQ,CAACqB,YAAY,CAAC;YAE7C5Q,IAAI,CAAC+Q,MAAM,GAAG,IAAI;;YAElB;YACA,IAAIO,IAAI,GAAGtC,CAAC,CAACuC,IAAI,CAAClC,QAAQ,EAAE,UAAS/T,OAAO,EAAE;cAC1C,OAAO,CAACA,OAAO,CAACyV,MAAM;YAC1B,CAAC,CAAC;YACF1B,QAAQ,GAAGL,CAAC,CAACsC,IAAI,CAAC;YAElB,IAAI/B,QAAQ,CAACQ,IAAI,EAAE;cACf,IAAImB,aAAa,GAAG7B,QAAQ,CAAC5a,MAAM;cACnC8a,QAAQ,CAACQ,IAAI,CAAC7R,IAAI,CAAC8B,IAAI,EAAEkR,aAAa,EAAE3B,QAAQ,CAAC;YACrD;UACJ,CAAC,CAAC,CACDyB,IAAI,CAAC,KAAK,EAAEF,KAAK,CAACE,IAAI,CAAC,OAAO,GAAGzB,QAAQ,CAACK,cAAc,CAAC,CAAC;QACnE;MACJ,CAAC,CAAC;;MAEF;MACA;MACA,IAAI,CAAC,KAAKL,QAAQ,CAACvR,KAAK,CAAC1K,OAAO,CAAC,QAAQ,CAAC,EAAE;QACxCwd,KAAK,CAACha,IAAI,CAACyY,QAAQ,CAACvR,KAAK,EAAE,YAAW;UAClC,IAAI,CAACgC,IAAI,CAAC+Q,MAAM,EAAE;YACdD,KAAK,CAACL,OAAO,CAAC,QAAQ,CAAC;UAC3B;QACJ,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;;IAEF;IACAxB,OAAO,CAACnY,IAAI,CAAC,QAAQ,EAAE,YAAW;MAC9B2E,MAAM,EAAE;IACZ,CAAC,CAAC;;IAEF;IACA;IACA,IAAK,8BAA8B,CAAE+V,IAAI,CAACre,SAAS,CAACse,UAAU,CAAC,EAAE;MAC7DxC,OAAO,CAACnY,IAAI,CAAC,UAAU,EAAE,UAASkH,KAAK,EAAE;QACrC,IAAIA,KAAK,CAAC0T,aAAa,IAAI1T,KAAK,CAAC0T,aAAa,CAACC,SAAS,EAAE;UACtDtC,QAAQ,CAACa,IAAI,CAAC,YAAW;YACrBlB,CAAC,CAAC,IAAI,CAAC,CAACyB,OAAO,CAAC,QAAQ,CAAC;UAC7B,CAAC,CAAC;QACN;MACJ,CAAC,CAAC;IACN;;IAEA;IACAzB,CAAC,CAAC7Z,QAAQ,CAAC,CAACyc,KAAK,CAAC,YAAW;MACzBnW,MAAM,EAAE;IACZ,CAAC,CAAC;IAEF,OAAO,IAAI;EACf,CAAC;;EAED;EACA;;EAEAuT,CAAC,CAACuB,YAAY,GAAG,UAASjV,OAAO,EAAEiU,QAAQ,EAAE;IACzC,IAAIsC,IAAI;IAER,IAAItC,QAAQ,CAACI,SAAS,KAAKjZ,SAAS,IAAI6Y,QAAQ,CAACI,SAAS,KAAKpc,MAAM,EAAE;MACnEse,IAAI,GAAG,CAACte,MAAM,CAACue,WAAW,GAAGve,MAAM,CAACue,WAAW,GAAG7C,OAAO,CAAC5W,MAAM,EAAE,IAAI4W,OAAO,CAACpE,SAAS,EAAE;IAC7F,CAAC,MAAM;MACHgH,IAAI,GAAG7C,CAAC,CAACO,QAAQ,CAACI,SAAS,CAAC,CAAC1V,MAAM,EAAE,CAAC+B,GAAG,GAAGgT,CAAC,CAACO,QAAQ,CAACI,SAAS,CAAC,CAACtX,MAAM,EAAE;IAC9E;IAEA,OAAOwZ,IAAI,IAAI7C,CAAC,CAAC1T,OAAO,CAAC,CAACrB,MAAM,EAAE,CAAC+B,GAAG,GAAGuT,QAAQ,CAACC,SAAS;EAC/D,CAAC;EAEDR,CAAC,CAACwB,WAAW,GAAG,UAASlV,OAAO,EAAEiU,QAAQ,EAAE;IACxC,IAAIsC,IAAI;IAER,IAAItC,QAAQ,CAACI,SAAS,KAAKjZ,SAAS,IAAI6Y,QAAQ,CAACI,SAAS,KAAKpc,MAAM,EAAE;MACnEse,IAAI,GAAG5C,OAAO,CAAC7W,KAAK,EAAE,GAAG6W,OAAO,CAAC5F,UAAU,EAAE;IACjD,CAAC,MAAM;MACHwI,IAAI,GAAG7C,CAAC,CAACO,QAAQ,CAACI,SAAS,CAAC,CAAC1V,MAAM,EAAE,CAAC8B,IAAI,GAAGiT,CAAC,CAACO,QAAQ,CAACI,SAAS,CAAC,CAACvX,KAAK,EAAE;IAC9E;IAEA,OAAOyZ,IAAI,IAAI7C,CAAC,CAAC1T,OAAO,CAAC,CAACrB,MAAM,EAAE,CAAC8B,IAAI,GAAGwT,QAAQ,CAACC,SAAS;EAChE,CAAC;EAEDR,CAAC,CAACqB,WAAW,GAAG,UAAS/U,OAAO,EAAEiU,QAAQ,EAAE;IACxC,IAAIsC,IAAI;IAER,IAAItC,QAAQ,CAACI,SAAS,KAAKjZ,SAAS,IAAI6Y,QAAQ,CAACI,SAAS,KAAKpc,MAAM,EAAE;MACnEse,IAAI,GAAG5C,OAAO,CAACpE,SAAS,EAAE;IAC9B,CAAC,MAAM;MACHgH,IAAI,GAAG7C,CAAC,CAACO,QAAQ,CAACI,SAAS,CAAC,CAAC1V,MAAM,EAAE,CAAC+B,GAAG;IAC7C;IAEA,OAAO6V,IAAI,IAAI7C,CAAC,CAAC1T,OAAO,CAAC,CAACrB,MAAM,EAAE,CAAC+B,GAAG,GAAGuT,QAAQ,CAACC,SAAS,GAAIR,CAAC,CAAC1T,OAAO,CAAC,CAACjD,MAAM,EAAE;EACtF,CAAC;EAED2W,CAAC,CAACsB,WAAW,GAAG,UAAShV,OAAO,EAAEiU,QAAQ,EAAE;IACxC,IAAIsC,IAAI;IAER,IAAItC,QAAQ,CAACI,SAAS,KAAKjZ,SAAS,IAAI6Y,QAAQ,CAACI,SAAS,KAAKpc,MAAM,EAAE;MACnEse,IAAI,GAAG5C,OAAO,CAAC5F,UAAU,EAAE;IAC/B,CAAC,MAAM;MACHwI,IAAI,GAAG7C,CAAC,CAACO,QAAQ,CAACI,SAAS,CAAC,CAAC1V,MAAM,EAAE,CAAC8B,IAAI;IAC9C;IAEA,OAAO8V,IAAI,IAAI7C,CAAC,CAAC1T,OAAO,CAAC,CAACrB,MAAM,EAAE,CAAC8B,IAAI,GAAGwT,QAAQ,CAACC,SAAS,GAAGR,CAAC,CAAC1T,OAAO,CAAC,CAAClD,KAAK,EAAE;EACrF,CAAC;EAED4W,CAAC,CAAC+C,UAAU,GAAG,UAASzW,OAAO,EAAEiU,QAAQ,EAAE;IACtC,OAAO,CAACP,CAAC,CAACwB,WAAW,CAAClV,OAAO,EAAEiU,QAAQ,CAAC,IAAI,CAACP,CAAC,CAACsB,WAAW,CAAChV,OAAO,EAAEiU,QAAQ,CAAC,IACtE,CAACP,CAAC,CAACuB,YAAY,CAACjV,OAAO,EAAEiU,QAAQ,CAAC,IAAI,CAACP,CAAC,CAACqB,WAAW,CAAC/U,OAAO,EAAEiU,QAAQ,CAAC;EAClF,CAAC;;EAEF;EACA;EACA;;EAEAP,CAAC,CAAC6B,MAAM,CAAC7B,CAAC,CAACgD,IAAI,CAAC,GAAG,CAAC,EAAE;IAClB,gBAAgB,EAAG,UAASC,CAAC,EAAE;MAAE,OAAOjD,CAAC,CAACuB,YAAY,CAAC0B,CAAC,EAAE;QAACzC,SAAS,EAAG;MAAC,CAAC,CAAC;IAAE,CAAC;IAC7E,eAAe,EAAI,UAASyC,CAAC,EAAE;MAAE,OAAO,CAACjD,CAAC,CAACuB,YAAY,CAAC0B,CAAC,EAAE;QAACzC,SAAS,EAAG;MAAC,CAAC,CAAC;IAAE,CAAC;IAC9E,iBAAiB,EAAE,UAASyC,CAAC,EAAE;MAAE,OAAOjD,CAAC,CAACwB,WAAW,CAACyB,CAAC,EAAE;QAACzC,SAAS,EAAG;MAAC,CAAC,CAAC;IAAE,CAAC;IAC5E,gBAAgB,EAAG,UAASyC,CAAC,EAAE;MAAE,OAAO,CAACjD,CAAC,CAACwB,WAAW,CAACyB,CAAC,EAAE;QAACzC,SAAS,EAAG;MAAC,CAAC,CAAC;IAAE,CAAC;IAC7E,aAAa,EAAM,UAASyC,CAAC,EAAE;MAAE,OAAOjD,CAAC,CAAC+C,UAAU,CAACE,CAAC,EAAE;QAACzC,SAAS,EAAG;MAAC,CAAC,CAAC;IAAE,CAAC;IAC3E;IACA,gBAAgB,EAAG,UAASyC,CAAC,EAAE;MAAE,OAAO,CAACjD,CAAC,CAACuB,YAAY,CAAC0B,CAAC,EAAE;QAACzC,SAAS,EAAG;MAAC,CAAC,CAAC;IAAE,CAAC;IAC9E,eAAe,EAAI,UAASyC,CAAC,EAAE;MAAE,OAAOjD,CAAC,CAACwB,WAAW,CAACyB,CAAC,EAAE;QAACzC,SAAS,EAAG;MAAC,CAAC,CAAC;IAAE,CAAC;IAC5E,cAAc,EAAK,UAASyC,CAAC,EAAE;MAAE,OAAO,CAACjD,CAAC,CAACwB,WAAW,CAACyB,CAAC,EAAE;QAACzC,SAAS,EAAG;MAAC,CAAC,CAAC;IAAE;EAChF,CAAC,CAAC;AAEN,CAAC,EAAE0C,MAAM,EAAE3e,MAAM,EAAE4B,QAAQ,CAAC;;;;;;;;;;;ACjP5B;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;;;ACN2C;AACM;AACS;AACd;AACO;AACD;AACN;AACH;AAClB;AACE;AAEzB,MAAMsd,UAAU,CAAC;EACb5e,WAAW,CAAC6e,IAAI,EAAE;IAEd,IAAI1S,IAAI,GAAG,IAAI;IAEf,IAAI,CAACd,OAAO,GAAG,IAAItL,wDAAU,CAAC8e,IAAI,CAAC5e,YAAY,EAAE6e,IAAI,CAACC,KAAK,CAACF,IAAI,CAACld,WAAW,CAAC,EAAEkd,IAAI,CAAC1e,WAAW,EAAE0e,IAAI,CAACze,YAAY,EAAEye,IAAI,CAACxe,iBAAiB,EAAE,IAAI,CAAC2e,iBAAiB,CAAC/b,IAAI,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC;;IAEjM;IACA,IAAI,CAACsI,gBAAgB,GAAIsT,IAAI,CAACzT,eAAe,KAAK,EAAE,GAAI0T,IAAI,CAACC,KAAK,CAACF,IAAI,CAACzT,eAAe,CAAC,GAAG,IAAI;IAE/F9J,QAAQ,CAACoI,gBAAgB,CAAC,QAAQ,EAAE,MAAM;MACtC3F,UAAU,CAAC,IAAI,CAACsH,OAAO,CAAC5K,UAAU,CAACgD,UAAU,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC;IACjE,CAAC,CAAC;;IAEF;;IAEA,IAAI3D,sDAAU,KAAK,IAAI,EAAE;MAErB,IAAI,CAACmf,MAAM,GAAG,IAAI;MAClB,IAAI,CAACC,QAAQ,GAAG,CACZ;QACIC,UAAU,EAAE,YAAY;QACxB9W,GAAG,EAAE,CAAC,GAAG;QACT+W,GAAG,EAAE,GAAG;QACRtM,YAAY,EAAE,CAAC;QACfuM,IAAI,EAAE,CAAC;QACPC,QAAQ,EAAE,IAAI;QACdC,KAAK,GAAI;UACL,MAAM1R,KAAK,GAAG2R,UAAU,CAACle,QAAQ,CAACC,cAAc,CAAC,mBAAmB,CAAC,CAACsM,KAAK,CAAC;UAC5E,OAAOA,KAAK,KAAK,IAAI,CAACiF,YAAY;QACtC,CAAC;QACD2M,SAAS,GAAI;UACT,MAAM5R,KAAK,GAAG2R,UAAU,CAACle,QAAQ,CAACC,cAAc,CAAC,mBAAmB,CAAC,CAACsM,KAAK,CAAC;UAC5E,OAAOpM,aAAa,CAACie,OAAO,CAACC,UAAU,CAAC9R,KAAK,CAAC;QAClD;MACJ,CAAC,EACD;QACIsR,UAAU,EAAE,YAAY;QACxB9W,GAAG,EAAE,CAAC,GAAG;QACT+W,GAAG,EAAE,GAAG;QACRtM,YAAY,EAAE,CAAC;QACfuM,IAAI,EAAE,CAAC;QACPC,QAAQ,EAAE,IAAI;QACdC,KAAK,GAAI;UACL,MAAM1R,KAAK,GAAG2R,UAAU,CAACle,QAAQ,CAACC,cAAc,CAAC,mBAAmB,CAAC,CAACsM,KAAK,CAAC;UAC5E,OAAOA,KAAK,KAAK,IAAI,CAACiF,YAAY;QACtC,CAAC;QACD2M,SAAS,GAAI;UACT,MAAM5R,KAAK,GAAG2R,UAAU,CAACle,QAAQ,CAACC,cAAc,CAAC,mBAAmB,CAAC,CAACsM,KAAK,CAAC;UAC5E,OAAO1B,IAAI,CAACyT,iBAAiB,CAAC/R,KAAK,CAAC;QACxC;MACJ,CAAC,EACD;QACIsR,UAAU,EAAE,UAAU;QACtB9W,GAAG,EAAE,CAAC,GAAG;QACT+W,GAAG,EAAE,GAAG;QACRtM,YAAY,EAAE,CAAC;QACfuM,IAAI,EAAE,CAAC;QACPC,QAAQ,EAAE,IAAI;QACdC,KAAK,GAAI;UACL,MAAM1R,KAAK,GAAG2R,UAAU,CAACle,QAAQ,CAACC,cAAc,CAAC,iBAAiB,CAAC,CAACsM,KAAK,CAAC;UAC1E,OAAOA,KAAK,KAAK,IAAI,CAACiF,YAAY;QACtC,CAAC;QACD2M,SAAS,GAAI;UACT,MAAM5R,KAAK,GAAG2R,UAAU,CAACle,QAAQ,CAACC,cAAc,CAAC,iBAAiB,CAAC,CAACsM,KAAK,CAAC;UAC1E,OAAO1B,IAAI,CAAC0T,eAAe,CAAChS,KAAK,CAAC;QACtC;MACJ,CAAC,EACD;QACIsR,UAAU,EAAE,OAAO;QACnB9W,GAAG,EAAE,CAAC;QACN+W,GAAG,EAAE,CAAC;QACNtM,YAAY,EAAE,CAAC;QACfuM,IAAI,EAAE,GAAG;QACTC,QAAQ,EAAE,IAAI;QACdC,KAAK,GAAI;UACL,MAAM1R,KAAK,GAAG2R,UAAU,CAACle,QAAQ,CAACC,cAAc,CAAC,cAAc,CAAC,CAACsM,KAAK,CAAC;UACvE,OAAOA,KAAK,KAAK,IAAI,CAACiF,YAAY;QACtC,CAAC;QACD2M,SAAS,GAAI;UACT,MAAM5R,KAAK,GAAG2R,UAAU,CAACle,QAAQ,CAACC,cAAc,CAAC,cAAc,CAAC,CAACsM,KAAK,CAAC;UACvE,OAAOpM,aAAa,CAACie,OAAO,CAACI,KAAK,CAACjS,KAAK,CAAC;QAC7C;MACJ,CAAC,EACD;QACIsR,UAAU,EAAE,WAAW;QACvBG,QAAQ,EAAE,KAAK;QACfC,KAAK,GAAI;UACL,OAAOje,QAAQ,CAAC4P,aAAa,CAAC,4CAA4C,CAAC,CAACxJ,YAAY,CAAC,cAAc,CAAC,KAAK,MAAM;QACvH,CAAC;QACD+X,SAAS,GAAI;UACT,OAAOhe,aAAa,CAACie,OAAO,CAACK,SAAS,EAAE;QAC5C;MACJ,CAAC,EACD;QACIZ,UAAU,EAAE,QAAQ;QACpBG,QAAQ,EAAE,KAAK;QACfC,KAAK,GAAI;UACL,OAAOje,QAAQ,CAAC4P,aAAa,CAAC,yCAAyC,CAAC,CAACxJ,YAAY,CAAC,cAAc,CAAC,KAAK,MAAM;QACpH,CAAC;QACD+X,SAAS,GAAI;UACT,OAAOhe,aAAa,CAACie,OAAO,CAACM,MAAM,EAAE;QACzC;MACJ,CAAC,CACJ;MAED,IAAI,CAACC,oBAAoB,EAAE;IAC/B,CAAC,MACI;MACD,MAAMC,UAAU,GAAG5e,QAAQ,CAAC6e,sBAAsB,CAAC,cAAc,CAAC;MAClE,KAAK,IAAIlW,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiW,UAAU,CAACtf,MAAM,EAAEqJ,CAAC,EAAE,EAAE;QACxCiW,UAAU,CAACjW,CAAC,CAAC,CAAC1B,KAAK,CAAC6X,OAAO,GAAG,MAAM;MACxC;IACJ;;IAEA;;IAEA;;IAEA,MAAMC,UAAU,GAAG/e,QAAQ,CAACgf,oBAAoB,CAAC,QAAQ,CAAC;IAC1D,KAAK,IAAIrW,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoW,UAAU,CAACzf,MAAM,EAAEqJ,CAAC,EAAE,EAAE;MACxC,MAAMsW,MAAM,GAAGF,UAAU,CAACpW,CAAC,CAAC;MAE5B,IAAIsW,MAAM,CAAC7Y,YAAY,CAAC,qBAAqB,CAAC,EAAE;QAC5C,IAAI,CAAC8Y,8BAA8B,CAACD,MAAM,CAAC;MAC/C,CAAC,MACI,IAAIA,MAAM,CAAC7Y,YAAY,CAAC,eAAe,CAAC,EAAE;QAC3C,IAAI,CAAC+Y,+BAA+B,CAACF,MAAM,CAAC;MAChD;MAEA,IAAI,CAACG,0BAA0B,CAACH,MAAM,CAAC;IAC3C;IAEA,MAAMI,OAAO,GAAGrf,QAAQ,CAACmK,gBAAgB,CAAC,kBAAkB,CAAC;IAC7D,KAAK,IAAIxB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0W,OAAO,CAAC/f,MAAM,EAAEqJ,CAAC,EAAE,EAAE;MACrC,MAAMsK,GAAG,GAAGoM,OAAO,CAAC1W,CAAC,CAAC;MAEtB,IAAIsK,GAAG,CAAClD,SAAS,CAACuP,QAAQ,CAAC,aAAa,CAAC,EAAE;QACvC,IAAI,CAACC,UAAU,GAAG,IAAIpC,iEAAS,CAAClK,GAAG,CAAC;MACxC,CAAC,MACI;QACD,IAAIkK,iEAAS,CAAClK,GAAG,CAAC;MACtB;IACJ;;IAEA;;IAEA;;IAEA;IACA,IAAI,IAAI,CAAClJ,OAAO,CAAC1K,eAAe,GAAG,CAAC,EAAE,IAAI,CAACmgB,WAAW,EAAE;;IAExD;;IAEA;;IAEA,IAAI,CAACC,aAAa,GAAG,IAAIvC,6DAAM,CAAC,eAAe,EAAE,IAAI,CAACwC,YAAY,CAAC/d,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9E,IAAI,CAACoI,OAAO,CAAC3B,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAACuX,gBAAgB,CAAChe,IAAI,CAAC,IAAI,CAAC,CAAC;;IAE/E;;IAEA;;IAEA3B,QAAQ,CAACoI,gBAAgB,CAAC,wBAAwB,EAAE,IAAI,CAACwX,6BAA6B,CAACje,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IACzG3B,QAAQ,CAACoI,gBAAgB,CAAC,qBAAqB,EAAE,IAAI,CAACwX,6BAA6B,CAACje,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IACtG3B,QAAQ,CAACoI,gBAAgB,CAAC,oBAAoB,EAAE,IAAI,CAACwX,6BAA6B,CAACje,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IACrG3B,QAAQ,CAACoI,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAACwX,6BAA6B,CAACje,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;;IAEnG;;IAEA;;IAEA,IAAI,CAACke,SAAS,GAAG,KAAK;IACtB,IAAI,CAACC,qBAAqB,GAAG,KAAK;IAElC,IAAI,CAACC,UAAU,GAAGtd,UAAU,CAAC,IAAI,CAACud,OAAO,CAACre,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IAE3D,IAAI,CAACoI,OAAO,CAAC5K,UAAU,CAAC0C,UAAU,CAAC,cAAc,EAAE,IAAI,CAACoe,SAAS,CAACte,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7E,MAAMue,UAAU,GAAGlgB,QAAQ,CAACmK,gBAAgB,CAAC,kBAAkB,CAAC;IAChE,MAAMgW,QAAQ,GAAGD,UAAU,CAAC5gB,MAAM;IAClC,KAAK,IAAIqJ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwX,QAAQ,EAAExX,CAAC,GAAGA,CAAC,GAAG,CAAC,EAAE;MACrC,MAAMyX,MAAM,GAAGF,UAAU,CAACvX,CAAC,CAAC;MAE5ByX,MAAM,CAAChY,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC+K,eAAe,CAACxR,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;MAC5Eye,MAAM,CAAChY,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAACgL,cAAc,CAACzR,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IAC9E;;IAEA;EACJ;;EAEA;;EAEA6d,WAAW,GAAG;IAEV,IAAI,CAACa,cAAc,GAAGrgB,QAAQ,CAAC6e,sBAAsB,CAAC,qBAAqB,CAAC;IAC5E,MAAMyB,eAAe,GAAG9hB,sDAAU,KAAK,IAAI,GAAG,QAAQ,GAAG,SAAS;IAElE,KAAK,IAAImK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAAC0X,cAAc,CAAC/gB,MAAM,EAAEqJ,CAAC,EAAE,EAAE;MACjD,MAAM4X,QAAQ,GAAG,IAAI,CAACF,cAAc,CAAC1X,CAAC,CAAC;MACvC4X,QAAQ,CAACnY,gBAAgB,CAACkY,eAAe,EAAE,IAAI,CAACE,gBAAgB,CAAC7e,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;MACnF,IAAInD,sDAAU,KAAK,IAAI,EAAE;QACrB+hB,QAAQ,CAACnY,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAACoY,gBAAgB,CAAC7e,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;QAC1E4e,QAAQ,CAACnY,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACoY,gBAAgB,CAAC7e,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;MAC/E;IACJ;;IAEA;IACA,IAAI,CAACoI,OAAO,CAAC3B,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAACqY,uBAAuB,CAAC9e,IAAI,CAAC,IAAI,CAAC,CAAC;;IAEpF;;IAEA,IAAI,CAAC+e,iBAAiB,GAAG,IAAItD,gEAAS,CAAC,8BAA8B,EAAE,QAAQ,CAAC;IAChF,IAAI,CAACuD,gBAAgB,GAAG,IAAIvD,gEAAS,CAAC,6BAA6B,EAAE,KAAK,CAAC;IAE3E,MAAMwD,aAAa,GAAG5gB,QAAQ,CAAC6e,sBAAsB,CAAC,OAAO,CAAC;IAC9D,KAAK,IAAIgC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,aAAa,CAACthB,MAAM,EAAEuhB,CAAC,EAAE,EAAE;MAC3C,MAAM7L,KAAK,GAAG4L,aAAa,CAACC,CAAC,CAAC;MAE9B,IAAI,CAAC3B,8BAA8B,CAAClK,KAAK,CAAC;MAC1C,IAAI,CAACoK,0BAA0B,CAACpK,KAAK,CAAC;MAEtCA,KAAK,CAAC5M,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC0Y,oBAAoB,EAAE,KAAK,CAAC;IACrE;IAEA,IAAI7D,sEAAW,CAAC,SAAS,EAAE,iBAAiB,CAAC;IAE7CpD,6CAAC,CAAC,cAAc,CAAC,CAACG,QAAQ,CAAC;MACvBQ,SAAS,EAAEX,6CAAC,CAAC,8BAA8B,CAAC;MAC5CU,MAAM,EAAE,QAAQ;MAChBD,aAAa,EAAE,IAAI;MACnBI,cAAc,EAAE,IAAI;MACpBL,SAAS,EAAE;MACX;MACA;MACA;MACA;IACJ,CAAC,CAAC;;IAEFR,6CAAC,CAAC,YAAY,CAAC,CAACG,QAAQ,CAAC;MACrBQ,SAAS,EAAEX,6CAAC,CAAC,+BAA+B,CAAC;MAC7CU,MAAM,EAAE,QAAQ;MAChBD,aAAa,EAAE,IAAI;MACnBI,cAAc,EAAE,IAAI;MACpBL,SAAS,EAAE;MACX;MACA;MACA;MACA;IACJ,CAAC,CAAC;IACD;;IAED;EACJ;;EAEJ;;EAEA;;EAEA;AACA;AACA;AACA;EACI6E,8BAA8B,CAACD,MAAM,EAAE;IACnC,YAAY;;IAEZ,QAAQA,MAAM,CAACpN,OAAO,CAACkP,aAAa;MAEhC,KAAK,YAAY;QACb9B,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC4Y,UAAU,CAACrf,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;QACnE;MAEJ,KAAK,YAAY;QACbsd,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC6Y,UAAU,CAACtf,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;QACnE;MAEJ,KAAK,SAAS;QACV,MAAMW,IAAI,GAAGiL,QAAQ,CAAC0R,MAAM,CAACpN,OAAO,CAACqP,gBAAgB,CAAC;QACtDjC,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC2B,OAAO,CAAC1G,QAAQ,CAAC1B,IAAI,CAAC,IAAI,CAACoI,OAAO,EAAEzH,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC;QAC7F;MAEJ,KAAK,SAAS;QACV2c,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC2B,OAAO,CAACtG,MAAM,CAAC9B,IAAI,CAAC,IAAI,CAACoI,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC;QACpF;MAEJ,KAAK,QAAQ;QACTkV,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC2B,OAAO,CAACtG,MAAM,CAAC9B,IAAI,CAAC,IAAI,CAACoI,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC;QACpF;MAEJ,KAAK,SAAS;QACVkV,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC2B,OAAO,CAACvF,MAAM,CAAC7C,IAAI,CAAC,IAAI,CAACoI,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QACtF;MAEJ,KAAK,aAAa;QACdkV,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC2B,OAAO,CAACxF,aAAa,CAAC5C,IAAI,CAAC,IAAI,CAACoI,OAAO,CAAC,EAAE,KAAK,CAAC;QACtF;MAEJ,KAAK,eAAe;QAChBkV,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC2B,OAAO,CAACjG,eAAe,CAACnC,IAAI,CAAC,IAAI,CAACoI,OAAO,CAAC,EAAE,KAAK,CAAC;QACxF;MAEJ,KAAK,QAAQ;QACTkV,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC+Y,UAAU,CAACxf,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;QACnE;MAEJ,KAAK,WAAW;QACZ,MAAMS,OAAO,GAAGmL,QAAQ,CAAC0R,MAAM,CAACpN,OAAO,CAACqP,gBAAgB,CAAC;QACzDjC,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC2B,OAAO,CAACnF,WAAW,CAACjD,IAAI,CAAC,IAAI,CAACoI,OAAO,EAAE3H,OAAO,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC;QACnG;MAEJ,KAAK,iBAAiB;QAClB6c,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACgZ,gBAAgB,CAACzf,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;QACzE;MAEJ,KAAK,kBAAkB;QACnB,IAAI0f,gBAAgB,GAAGrhB,QAAQ,CAACshB,iBAAiB,IAAIthB,QAAQ,CAACuhB,mBAAmB,IAAIvhB,QAAQ,CAACwhB,oBAAoB,IAAIxhB,QAAQ,CAACyhB,uBAAuB;QACtJ,IAAIJ,gBAAgB,EAAE;UAClB,IAAI,CAACK,iBAAiB,GAAGzC,MAAM;UAC/BA,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACuZ,gBAAgB,CAAChgB,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;QAC7E,CAAC,MACI;UAED;UACA,IAAIwO,MAAM,GAAG8O,MAAM,CAAC2C,aAAa;UACjC,IAAIzR,MAAM,CAAC0R,OAAO,KAAK,IAAI,EAAE;YACzB1R,MAAM,CAAClJ,KAAK,CAAC6X,OAAO,GAAG,MAAM,CAAC,CAAC;UACnC,CAAC,MAAM;YACHG,MAAM,CAAChY,KAAK,CAAC6X,OAAO,GAAG,MAAM,CAAC,CAAC;UACnC;;UAEAG,MAAM,CAACvc,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;QAC9C;QACA;MAEJ,KAAK,gBAAgB;QACjB,IAAI,CAACof,WAAW,GAAG,IAAIzE,6DAAM,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC;QAC7E4B,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC0Z,WAAW,CAAC9W,IAAI,CAACrJ,IAAI,CAAC,IAAI,CAACmgB,WAAW,CAAC,EAAE,KAAK,CAAC;QACrF;MAEJ,KAAK,oBAAoB;QACrB,IAAI,CAACC,aAAa,CAAC9C,MAAM,CAAC;QAC1B;MAEJ,KAAK,iBAAiB;QAClB,IAAI,CAAC+C,UAAU,CAAC/C,MAAM,CAAC;QACvB;MAEJ,KAAK,QAAQ;QACTA,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC6Z,eAAe,CAACtgB,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;QACxE;MAEJ,KAAK,cAAc;QACfsd,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC8Z,aAAa,CAACvgB,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;QACtE;MAEJ;IAAQ;IAGZ,IAAIsd,MAAM,CAACpN,OAAO,CAACsQ,YAAY,KAAK,MAAM,EAAE;MACxClD,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACga,gBAAgB,CAACzgB,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IAC7E;EACJ;;EAEJ;AACA;AACA;AACA;EACIwd,+BAA+B,CAACF,MAAM,EAAE;IACpC,YAAY;;IAEZA,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACia,yBAAyB,CAAC1gB,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;EACtF;;EAEJ;AACA;AACA;AACA;EACI2gB,uBAAuB,CAACrD,MAAM,EAAE;IAC5B,YAAY;;IAEZA,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACma,SAAS,CAAC5gB,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;EACtE;;EAEJ;AACA;AACA;AACA;EACIyd,0BAA0B,CAACH,MAAM,EAAE;IAC/B,YAAY;;IAEZ,IAAIzgB,sDAAU,KAAK,KAAK,IAAIA,sDAAU,KAAK,SAAS,EAAEygB,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC+K,eAAe,CAACxR,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IAC9Hsd,MAAM,CAAC7W,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAACgL,cAAc,CAACzR,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IACtEsd,MAAM,CAAC7W,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAACgL,cAAc,CAACzR,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IAC1Esd,MAAM,CAAC7W,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC+K,eAAe,CAACxR,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IAC5Esd,MAAM,CAAC7W,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAACgL,cAAc,CAACzR,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IAC1Esd,MAAM,CAAC7W,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACgL,cAAc,CAACzR,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;EAC7E;;EAEJ;AACA;AACA;AACA;AACA;EACIwR,eAAe,CAACtK,KAAK,EAAE;IACnB,YAAY;;IAEZ,MAAM1C,OAAO,GAAG0C,KAAK,CAACkE,aAAa;IAEnC,IAAI,IAAI,CAAC8S,SAAS,EAAE;;IAEpB;IACA1Z,OAAO,CAAC4J,SAAS,CAACC,GAAG,CAAC,OAAO,CAAC;IAE9B,IAAI7J,OAAO,CAAC0b,OAAO,CAAC3jB,WAAW,EAAE,KAAK,QAAQ,EAAE;;IAEhD;IACA;IACA,IAAIM,sDAAU,KAAK,KAAK,IAAIA,sDAAU,KAAK,SAAS,EAAE;IAEtD,MAAMgkB,SAAS,GAAGrc,OAAO,CAAC0L,OAAO,CAAC2Q,SAAS;IAC3C,IAAI,CAACA,SAAS,EAAE;IAEhB,MAAMC,OAAO,GAAGziB,QAAQ,CAACC,cAAc,CAACuiB,SAAS,CAAC;IAClD,IAAI,CAACC,OAAO,EAAE;IAEdA,OAAO,CAAC/f,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC;IAE5C,MAAMiV,UAAU,GAAG,IAAI,CAAC5N,OAAO,CAAC5K,UAAU,CAACgH,OAAO,CAACqP,qBAAqB,EAAE;IAC1E,MAAMkN,UAAU,GAAGvc,OAAO,CAACqP,qBAAqB,EAAE;IAClD,MAAMmN,WAAW,GAAGF,OAAO,CAACjN,qBAAqB,EAAE;IAEnD,MAAMoN,KAAK,GAAGF,UAAU,CAACre,CAAC,GAAGsT,UAAU,CAACtT,CAAC;IACzC,MAAMwe,KAAK,GAAGH,UAAU,CAACte,CAAC,GAAGuT,UAAU,CAACvT,CAAC;IACzC,MAAM0e,GAAG,GAAGH,WAAW,CAACte,CAAC,GAAGsT,UAAU,CAACtT,CAAC;IACxC,MAAM0e,GAAG,GAAGJ,WAAW,CAACve,CAAC,GAAGuT,UAAU,CAACvT,CAAC;IAExC,MAAMmK,IAAI,GAAG,IAAIyU,OAAO,CAACJ,KAAK,EAAEC,KAAK,EAAEH,UAAU,CAACzf,KAAK,EAAEyf,UAAU,CAACxf,MAAM,CAAC;IAC3E,MAAM+f,MAAM,GAAG,IAAID,OAAO,CAACF,GAAG,EAAEC,GAAG,EAAEJ,WAAW,CAAC1f,KAAK,EAAE0f,WAAW,CAACzf,MAAM,CAAC;IAE3Euf,OAAO,CAACxb,KAAK,CAACJ,GAAG,GAAG,EAAE;IACtB4b,OAAO,CAACxb,KAAK,CAACic,MAAM,GAAG,EAAE;IACzBT,OAAO,CAACxb,KAAK,CAACL,IAAI,GAAG,EAAE;IACvB6b,OAAO,CAACxb,KAAK,CAACkc,KAAK,GAAG,EAAE;IAExB,MAAMC,UAAU,GAAG7U,IAAI,CAAC3H,IAAI,GAAI2H,IAAI,CAACtL,KAAK,GAAG,CAAE;IAC/C,MAAMogB,MAAM,GAAGD,UAAU,GAAIH,MAAM,CAAChgB,KAAK,GAAG,CAAE;IAE9C,IAAIsL,IAAI,CAAC3H,IAAI,KAAK,CAAC,EAAE;MACjB6b,OAAO,CAACxb,KAAK,CAACL,IAAI,GAAG,CAAC;IAC1B,CAAC,MAAM,IAAI+Q,UAAU,CAAC1U,KAAK,GAAGogB,MAAM,GAAGJ,MAAM,CAAChgB,KAAK,EAAE;MACjDwf,OAAO,CAACxb,KAAK,CAACkc,KAAK,GAAG,CAAC;IAC3B,CAAC,MAAM;MACHV,OAAO,CAACxb,KAAK,CAACL,IAAI,GAAGyc,MAAM,GAAG,IAAI;IACtC;IAEA,IAAI9U,IAAI,CAACnK,CAAC,GAAGmK,IAAI,CAACrL,MAAM,GAAGyU,UAAU,CAACzU,MAAM,GAAG,CAAC,EAAE;MAC9Cuf,OAAO,CAACxb,KAAK,CAACJ,GAAG,GAAG0H,IAAI,CAAC1H,GAAG,GAAGoc,MAAM,CAAC/f,MAAM,GAAG,IAAI;IACvD,CAAC,MACI;MACDuf,OAAO,CAACxb,KAAK,CAACJ,GAAG,GAAG0H,IAAI,CAAC1H,GAAG,GAAG0H,IAAI,CAACrL,MAAM,GAAG,IAAI;IACrD;EACJ;;EAEJ;AACA;AACA;AACA;AACA;EACIkQ,cAAc,CAACvK,KAAK,EAAE;IAClB,YAAY;;IAEZ,MAAM1C,OAAO,GAAG0C,KAAK,CAACkE,aAAa;;IAEnC;IACA5G,OAAO,CAAC4J,SAAS,CAACoE,MAAM,CAAC,OAAO,CAAC;IACjChO,OAAO,CAACiO,IAAI,EAAE;;IAEd;IACA;IACA,IAAI5V,sDAAU,KAAK,KAAK,IAAIA,sDAAU,KAAK,SAAS,EAAE;;IAEtD;IACA,MAAMgkB,SAAS,GAAGrc,OAAO,CAAC0L,OAAO,CAAC2Q,SAAS;IAC3C,IAAI,CAACA,SAAS,EAAE;;IAEhB;IACA,MAAMC,OAAO,GAAGziB,QAAQ,CAACC,cAAc,CAACuiB,SAAS,CAAC;IAClD,IAAI,CAACC,OAAO,EAAE;;IAEd;IACA,IAAI,IAAI,CAACa,aAAa,KAAK,IAAI,EAAEllB,MAAM,CAACuE,YAAY,CAAC,IAAI,CAAC2gB,aAAa,CAAC;IACxE,IAAI,CAACA,aAAa,GAAG,IAAI;IACzBb,OAAO,CAAC/f,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;EAC/C;;EAEJ;AACA;AACA;AACA;EACI2f,yBAAyB,CAACxZ,KAAK,EAAE;IAC7B,YAAY;;IAEZ,MAAM1C,OAAO,GAAG0C,KAAK,CAACkE,aAAa;IACnC,MAAMwW,UAAU,GAAGpd,OAAO,CAACC,YAAY,CAAC,eAAe,CAAC,KAAK,MAAM;IACnE,MAAMod,UAAU,GAAGrd,OAAO,CAACC,YAAY,CAAC,eAAe,CAAC;IAExDD,OAAO,CAACzD,YAAY,CAAC,eAAe,EAAE,CAAC6gB,UAAU,CAAC;IAClDvjB,QAAQ,CAACC,cAAc,CAACujB,UAAU,CAAC,CAAC9gB,YAAY,CAAC,aAAa,EAAE6gB,UAAU,CAAC;IAE3E,MAAME,cAAc,GAAGtd,OAAO,CAAC0L,OAAO,CAAC4R,cAAc;IACrD,IAAIA,cAAc,EAAE;MAChB,MAAMC,YAAY,GAAG1jB,QAAQ,CAACC,cAAc,CAACwjB,cAAc,CAAC;MAC5D,IAAIC,YAAY,IAAIA,YAAY,CAACtd,YAAY,CAAC,eAAe,CAAC,KAAK,MAAM,EAAE;QACvE,MAAMud,WAAW,GAAGD,YAAY,CAACtd,YAAY,CAAC,eAAe,CAAC;QAC9D,IAAIud,WAAW,EAAE;UACb,MAAMC,SAAS,GAAG5jB,QAAQ,CAACC,cAAc,CAAC0jB,WAAW,CAAC;UACtD,IAAIC,SAAS,EAAE;YACXF,YAAY,CAAChhB,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;YACnDkhB,SAAS,CAAClhB,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;UACjD;QACJ;MACJ;IACJ;IAEA,IAAIyD,OAAO,CAAC0L,OAAO,CAACgS,MAAM,EAAE;MACxB,MAAMC,SAAS,GAAG9jB,QAAQ,CAACC,cAAc,CAACkG,OAAO,CAAC0L,OAAO,CAACgS,MAAM,CAAC;MACjE,IAAIC,SAAS,EAAE;QACXA,SAAS,CAACphB,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;QAChD1C,QAAQ,CAACC,cAAc,CAAC6jB,SAAS,CAAC1d,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC1D,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;MACxG;IACJ;IAEA,IAAI8gB,UAAU,KAAK,SAAS,EAAE;MAC1BxjB,QAAQ,CAAC4P,aAAa,CAAC,UAAU,CAAC,CAACG,SAAS,CAACQ,MAAM,CAAC,cAAc,CAAC;MACnEvQ,QAAQ,CAACC,cAAc,CAAC,kBAAkB,CAAC,CAAC8P,SAAS,CAACQ,MAAM,CAAC,cAAc,CAAC;MAC5EvQ,QAAQ,CAACC,cAAc,CAAC,gBAAgB,CAAC,CAAC8P,SAAS,CAACQ,MAAM,CAAC,cAAc,CAAC;MAE1E,MAAMwT,OAAO,GAAG/jB,QAAQ,CAACC,cAAc,CAAC,iBAAiB,CAAC;MAC1D8jB,OAAO,CAACrhB,YAAY,CAAC,aAAa,EAAE6gB,UAAU,CAAC;MAE/C,IAAIA,UAAU,EAAE;QACZ,IAAI,IAAI,CAACS,YAAY,KAAK,IAAI,IAAI,IAAI,CAACA,YAAY,KAAKziB,SAAS,EAAE;UAC/DwiB,OAAO,CAACvb,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAACwb,YAAY,CAAC;UACvD,IAAI,CAACA,YAAY,GAAG,IAAI;QAC5B;MACJ,CAAC,MACI;QACD,IAAI,CAACA,YAAY,GAAG,IAAI,CAACC,oBAAoB,CAACtiB,IAAI,CAAC,IAAI,EAAEwE,OAAO,CAAC;QACjE4d,OAAO,CAAC3b,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC4b,YAAY,EAAE,KAAK,CAAC;MAC/D;IACJ;IAEA,IAAI,IAAI,CAACjE,UAAU,EAAEpd,YAAY,CAAC,IAAI,CAACod,UAAU,CAAC;;IAElD;IACA,MAAMyC,SAAS,GAAGrc,OAAO,CAAC0L,OAAO,CAAC4Q,OAAO;IACzC,IAAI,CAACD,SAAS,EAAE;;IAEhB;IACA,MAAMC,OAAO,GAAGziB,QAAQ,CAACC,cAAc,CAACuiB,SAAS,CAAC;IAClD,IAAI,CAACC,OAAO,EAAE;IAEd,MAAMyB,GAAG,GAAGX,UAAU,GAAGd,OAAO,CAAC5Q,OAAO,CAACsS,cAAc,GAAG1B,OAAO,CAAC5Q,OAAO,CAACuS,WAAW;IACrF,IAAI,CAACF,GAAG,EAAE;IAEVzB,OAAO,CAAC/X,WAAW,GAAGwZ,GAAG;EAC7B;EAEAD,oBAAoB,CAAC9d,OAAO,EAAE;IAC1B,YAAY;;IAEZA,OAAO,CAAC4F,KAAK,EAAE;EACnB;;EAEJ;;EAEA;;EAEA;AACA;AACA;AACA;EACIyU,gBAAgB,CAAC3X,KAAK,EAAE;IAEpB;IACA,IAAIA,KAAK,CAACR,IAAI,KAAK,OAAO,IAAIQ,KAAK,CAACwb,OAAO,KAAK,EAAE,EAAE;IAEpD,MAAMC,OAAO,GAAG/W,QAAQ,CAAC1E,KAAK,CAAC8K,MAAM,CAACpH,KAAK,CAAC;IAC5C,IAAIgY,KAAK,CAACD,OAAO,CAAC,IAAIA,OAAO,GAAG,CAAC,IAAIA,OAAO,GAAG,IAAI,CAACva,OAAO,CAACya,UAAU,EAAE;MACpE;MACA3b,KAAK,CAAC8K,MAAM,CAACpH,KAAK,GAAG,IAAI,CAACxC,OAAO,CAACxH,cAAc,EAAE;IACtD,CAAC,MACI,IAAI+hB,OAAO,KAAK,IAAI,CAACva,OAAO,CAACxH,cAAc,EAAE,EAAE;MAChD,IAAI;QACA,IAAI,CAACwH,OAAO,CAAC1G,QAAQ,CAACihB,OAAO,EAAE,IAAI,CAAC;MACxC,CAAC,CACD,OAAOlZ,CAAC,EAAE;QACN;QACAvC,KAAK,CAACkE,aAAa,CAACR,KAAK,GAAG,IAAI,CAACxC,OAAO,CAACxH,cAAc,EAAE;MAC7D;IACJ;EACJ;;EAEA;AACJ;AACA;AACA;AACA;EACIke,uBAAuB,CAAC5X,KAAK,EAAE;IAE3B,MAAM1F,WAAW,GAAG0F,KAAK,CAACM,MAAM,CAAC7G,IAAI;IACrC,MAAMmiB,WAAW,GAAG5b,KAAK,CAACM,MAAM,CAAC3G,aAAa;;IAE9C;IACA;IACA,MAAMkiB,SAAS,GAAG1kB,QAAQ,CAAC6e,sBAAsB,CAAC,WAAW,CAAC;IAC9D,MAAM8F,SAAS,GAAGD,SAAS,CAACplB,MAAM;IAClC,KAAK,IAAIqJ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgc,SAAS,EAAEhc,CAAC,GAAGA,CAAC,GAAG,CAAC,EAAE;MACtC+b,SAAS,CAAC/b,CAAC,CAAC,CAACkE,QAAQ,GAAG1J,WAAW,KAAK,CAAC;IAC7C;;IAEA;IACA;IACA,MAAMyhB,SAAS,GAAG5kB,QAAQ,CAAC6e,sBAAsB,CAAC,WAAW,CAAC;IAC9D,MAAMgG,SAAS,GAAGD,SAAS,CAACtlB,MAAM;IAClC,KAAK,IAAIqJ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkc,SAAS,EAAElc,CAAC,GAAGA,CAAC,GAAG,CAAC,EAAE;MACtCic,SAAS,CAACjc,CAAC,CAAC,CAACkE,QAAQ,GAAG,CAAC4X,WAAW;IACxC;;IAEA;IACA,IAAI,CAAC/D,iBAAiB,CAACtL,UAAU,CAACjS,WAAW,CAAC;IAC9C,IAAI,CAACwd,gBAAgB,CAACvL,UAAU,CAACjS,WAAW,CAAC;;IAE7C;IACA,KAAK,IAAIsK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAAC4S,cAAc,CAAC/gB,MAAM,EAAEmO,CAAC,GAAGA,CAAC,GAAG,CAAC,EAAE;MACvD,MAAMqX,IAAI,GAAG,IAAI,CAACzE,cAAc,CAAC5S,CAAC,CAAC;MACnC,IAAIF,QAAQ,CAACuX,IAAI,CAACvY,KAAK,CAAC,KAAKpJ,WAAW,EAAE2hB,IAAI,CAACvY,KAAK,GAAGpJ,WAAW;IACtE;EACJ;;EAEJ;AACA;AACA;AACA;AACA;EACI8H,YAAY,CAAC3I,IAAI,EAAE;IACf,IAAI,CAACyiB,QAAQ,CAACpZ,IAAI,CAACsB,KAAK,CAAC,cAAc,CAAC,EAAE;MACtC,IAAI,CAAC8X,QAAQ,CAACC,MAAM,EAAE;QAClB,OAAOD,QAAQ,CAACpZ,IAAI,GAAG,KAAK,GAAGrJ,IAAI;MACvC,CAAC,MACI;QACD,OAAOyiB,QAAQ,CAACpZ,IAAI,GAAG,KAAK,GAAGrJ,IAAI;MACvC;IACJ;IAEA,OAAOyiB,QAAQ,CAACpZ,IAAI,CAAC5D,OAAO,CAAC,cAAc,EAAE,UAAUkF,KAAK,EAAE;MAC1D,OAAOA,KAAK,CAACgY,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG3iB,IAAI;IACxC,CAAC,CAAC;EACN;;EAEJ;;EAEA;;EAEIwe,oBAAoB,GAAG;IACnB,YAAY;;IAEZ,MAAMoE,QAAQ,GAAG9mB,MAAM,CAAC+mB,gBAAgB,CAACnlB,QAAQ,CAACC,cAAc,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,CAACmlB,UAAU,KAAK,SAAS;IACjH,IAAIF,QAAQ,EAAEllB,QAAQ,CAACC,cAAc,CAAC,uBAAuB,CAAC,CAAC8L,KAAK,EAAE;EAC1E;;EAEJ;;EAEA;;EAEA;AACA;AACA;AACA;AACA;EACIoV,UAAU,CAACtY,KAAK,EAAE;IACd,YAAY;;IAEZ,MAAM/D,MAAM,GAAGyI,QAAQ,CAAC1E,KAAK,CAACkE,aAAa,CAAC8E,OAAO,CAACqP,gBAAgB,CAAC;IACrE,MAAM9e,OAAO,GAAG,CAAC0C,MAAM,GAAG,IAAI,CAACiF,OAAO,CAAC1H,WAAW,EAAE,GAAG,GAAG,IAAI,GAAG;IAEjE,IAAI,CAACgjB,gBAAgB,CAACjjB,OAAO,EAAE,IAAI,CAAC;EACxC;;EAEJ;AACA;AACA;AACA;AACA;EACIsd,YAAY,CAAC7W,KAAK,EAAE;IAChB,YAAY;;IAEZ,IAAIA,KAAK,CAACR,IAAI,KAAK,OAAO,IAAIQ,KAAK,CAACR,IAAI,KAAK,QAAQ,EAAE;IAEvD,MAAMjG,OAAO,GAAGmL,QAAQ,CAAC1E,KAAK,CAAC8K,MAAM,CAACpH,KAAK,CAAC;IAC5C,IAAI,CAAC8Y,gBAAgB,CAACjjB,OAAO,EAAE,KAAK,CAAC;EACzC;;EAEJ;AACA;AACA;AACA;AACA;EACIud,gBAAgB,CAAC9W,KAAK,EAAE;IACpB,YAAY;;IAEZ;IACA,MAAMzG,OAAO,GAAGyG,KAAK,CAACM,MAAM,CAAC/G,OAAO,GAAG,GAAG,GAAGyG,KAAK,CAACM,MAAM,CAAC/G,OAAO,GAAG,GAAG,GAAGyG,KAAK,CAACM,MAAM,CAAC/G,OAAO;IAC9F,IAAI,CAACqd,aAAa,CAAChN,QAAQ,CAACrQ,OAAO,CAAC;EACxC;;EAEJ;;EAEA;;EAEA;AACA;AACA;AACA;EACIggB,gBAAgB,CAACvZ,KAAK,EAAE;IACpB,YAAY;;IAEZ,MAAMoW,MAAM,GAAGjf,QAAQ,CAAC4P,aAAa,CAAC,sCAAsC,CAAC;IAC7EqP,MAAM,CAACvc,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;IAE7C1C,QAAQ,CAACC,cAAc,CAAC,cAAc,CAAC,CAACyC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;EAC/E;;EAEJ;;EAEA;;EAEA;AACA;AACA;AACA;EACIsf,UAAU,CAAC/C,MAAM,EAAE;IACf,IAAI,CAACqG,iBAAiB,GAAG,IAAIjI,6DAAM,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC;IAC3F,IAAI,CAACkI,YAAY,GAAG,IAAIlI,6DAAM,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC;IAC7D,IAAI,CAACmI,mBAAmB,GAAG,IAAInI,6DAAM,CAAC,sBAAsB,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;IAC9E,IAAI,CAACoI,kBAAkB,GAAG,IAAIpI,6DAAM,CAAC,qBAAqB,EAAE,IAAI,EAAE,KAAK,EAAE,oBAAoB,CAAC;IAE9F4B,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACkd,iBAAiB,CAACta,IAAI,CAACrJ,IAAI,CAAC,IAAI,CAAC2jB,iBAAiB,CAAC,EAAE,KAAK,CAAC;IAEjG,MAAMI,WAAW,GAAG1lB,QAAQ,CAACC,cAAc,CAAC,oBAAoB,CAAC;IACjEylB,WAAW,CAACtd,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACud,eAAe,CAAChkB,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IAE7E3B,QAAQ,CAACC,cAAc,CAAC,sBAAsB,CAAC,CAACmI,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC2B,OAAO,CAACzC,gBAAgB,CAAC3F,IAAI,CAAC,IAAI,CAACoI,OAAO,CAAC,EAAE,KAAK,CAAC;IAClI/J,QAAQ,CAACC,cAAc,CAAC,mBAAmB,CAAC,CAACmI,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACwd,cAAc,CAACjkB,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IAC7G3B,QAAQ,CAACC,cAAc,CAAC,qBAAqB,CAAC,CAACmI,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACyd,aAAa,CAAClkB,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IAE9G3B,QAAQ,CAACC,cAAc,CAAC,qBAAqB,CAAC,CAACmI,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC0d,eAAe,CAACnkB,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IAChH3B,QAAQ,CAACC,cAAc,CAAC,6BAA6B,CAAC,CAACmI,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACwd,cAAc,CAACjkB,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;EAC3H;;EAEJ;AACA;AACA;EACIgkB,eAAe,GAAG;IAEd,IAAI,CAAC3F,OAAO,EAAE;IACd,IAAI,CAACH,SAAS,GAAG,IAAI;IAErB,IAAI,CAAC0F,YAAY,CAACva,IAAI,EAAE;IACxB,IAAI,CAACjB,OAAO,CAAC5C,iBAAiB,CAAC,IAAI,CAAC;EACxC;;EAEJ;AACA;AACA;EACI0e,aAAa,GAAG;IAEZ,IAAI,CAAChG,SAAS,GAAG,KAAK;IAEtB,IAAI,CAAC0F,YAAY,CAACnV,KAAK,EAAE;IACzB,IAAI,CAACrG,OAAO,CAAC5C,iBAAiB,CAAC,KAAK,CAAC;EACzC;;EAEJ;AACA;AACA;EACIye,cAAc,GAAG;IACb,IAAI,CAACL,YAAY,CAACva,IAAI,EAAE;IACxB,IAAI,CAACwa,mBAAmB,CAACpV,KAAK,EAAE;IAEhC,IAAI,CAACrG,OAAO,CAACxC,eAAe,EAAE;EAClC;;EAEA;AACJ;AACA;AACA;EACImW,iBAAiB,CAAC7U,KAAK,EAAE;IACrB,IAAI,CAAC0c,YAAY,CAACnV,KAAK,EAAE;IACzB,IAAI,CAAC2V,UAAU,CAACld,KAAK,CAACM,MAAM,CAAC;IAC7B;EACJ;;EAEA;AACJ;AACA;AACA;EACI4c,UAAU,CAAC9d,GAAG,EAAE;IACZ,MAAM4C,IAAI,GAAG,IAAI;IAEjB,IAAI,CAAC2a,mBAAmB,CAACpV,KAAK,EAAE;IAChC,IAAI,CAACrG,OAAO,CAAC7J,iBAAiB,EAAE;IAEhC,MAAM8lB,KAAK,GAAGhmB,QAAQ,CAACC,cAAc,CAAC,cAAc,CAAC;IACrD+lB,KAAK,CAACzP,GAAG,GAAGtO,GAAG;IACf+d,KAAK,CAAC7a,MAAM,GAAG,YAAY;MACvBN,IAAI,CAACd,OAAO,CAACjI,mBAAmB,EAAE;MAClC+I,IAAI,CAAC4a,kBAAkB,CAACza,IAAI,EAAE;MAC9BhL,QAAQ,CAACC,cAAc,CAAC,WAAW,CAAC,CAACyK,WAAW,GAAGzC,GAAG;MACtDjI,QAAQ,CAACC,cAAc,CAAC,WAAW,CAAC,CAACyK,WAAW,GAAI,aAAYzC,GAAI,UAASjI,QAAQ,CAACC,cAAc,CAAC,aAAa,CAAC,CAACsM,KAAM,KAAI;IAClI,CAAC;IACDyZ,KAAK,CAACha,OAAO,GAAG,YAAY;MACxBnB,IAAI,CAACd,OAAO,CAACjI,mBAAmB,EAAE;MAClCmkB,KAAK,CAAC,cAAc,CAAC;IACzB,CAAC;IAED,IAAI,CAACpG,SAAS,GAAG,KAAK;EAC1B;;EAEA;AACJ;AACA;AACA;EACIqG,iBAAiB,CAACje,GAAG,EAAE;IACnB,MAAMke,SAAS,GAAG,IAAI,CAACpc,OAAO,CAACvC,mBAAmB,EAAE;IACpDxH,QAAQ,CAACC,cAAc,CAAC,YAAY,CAAC,CAACyK,WAAW,GAAGyb,SAAS,CAAC9hB,CAAC,GAAG,GAAG,GAAG8hB,SAAS,CAAC/hB,CAAC;IAEnF,MAAMgiB,OAAO,GAAGpmB,QAAQ,CAACC,cAAc,CAAC,eAAe,CAAC;IACxDmmB,OAAO,CAAC7P,GAAG,GAAG6P,OAAO,CAACvU,OAAO,CAAC0E,GAAG;IAEjC9K,OAAO,CAACC,GAAG,CAACzD,GAAG,CAAC;IAChB,IAAI,CAACud,mBAAmB,CAACxa,IAAI,EAAE;IAC/B,IAAI,CAACqb,SAAS,GAAGpe,GAAG;IAEpB,MAAM6C,GAAG,GAAG,IAAIC,cAAc,EAAE;IAChCD,GAAG,CAACE,IAAI,CAAC,KAAK,EAAE/C,GAAG,EAAE,IAAI,CAAC;IAC1B6C,GAAG,CAACI,YAAY,GAAG,MAAM;IACzBJ,GAAG,CAACwb,gBAAgB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;IAC1Dxb,GAAG,CAACyb,SAAS,GAAG,UAASnb,CAAC,EAAE;MACxB,IAAIN,GAAG,CAACO,MAAM,KAAK,GAAG,EAAE;QACpB,MAAMmb,MAAM,GAAG,IAAIC,UAAU,EAAE;QAC/BD,MAAM,CAACD,SAAS,GAAE,YAAW;UACzBH,OAAO,CAAC7P,GAAG,GAAGiQ,MAAM,CAACE,MAAM;QAC/B,CAAC;QACDF,MAAM,CAACG,aAAa,CAAC7b,GAAG,CAACgB,QAAQ,CAAC;MACtC,CAAC,MACI;QACDma,KAAK,CAAC,eAAe,CAAC;MAC1B;IACJ,CAAC,CAACtkB,IAAI,CAAC,IAAI,CAAC;IACZmJ,GAAG,CAACmB,IAAI,EAAE;EACd;;EAEA;AACJ;AACA;EACI6Z,eAAe,GAAG;IACd,MAAMjb,IAAI,GAAG,IAAI;IAEjB,IAAI,CAAC2a,mBAAmB,CAACpV,KAAK,EAAE;IAChC,IAAI,CAACrG,OAAO,CAAC7J,iBAAiB,EAAE;IAEhC,MAAM8lB,KAAK,GAAGhmB,QAAQ,CAACC,cAAc,CAAC,cAAc,CAAC;IACrD+lB,KAAK,CAAC7a,MAAM,GAAG,YAAW;MACtBN,IAAI,CAACd,OAAO,CAACjI,mBAAmB,EAAE;MAClC+I,IAAI,CAAC4a,kBAAkB,CAACza,IAAI,EAAE;IAClC,CAAC;IACDgb,KAAK,CAACha,OAAO,GAAG,YAAY;MACxBnB,IAAI,CAACd,OAAO,CAACjI,mBAAmB,EAAE;MAClCmkB,KAAK,CAAC,cAAc,CAAC;IACzB,CAAC;IAED,MAAMW,YAAY,GAAG5mB,QAAQ,CAACC,cAAc,CAAC,WAAW,CAAC,CAACsM,KAAK;IAE/D,MAAMsa,QAAQ,GAAG,IAAIC,QAAQ,EAAE;IAC/BD,QAAQ,CAACE,MAAM,CAAC,KAAK,EAAE,IAAI,CAACV,SAAS,CAAC;IAEtC,MAAMW,SAAS,GAAG,IAAIjc,cAAc,EAAE;IACtCic,SAAS,CAAChc,IAAI,CAAC,MAAM,EAAE4b,YAAY,EAAE,IAAI,CAAC;IAC1CI,SAAS,CAAC9b,YAAY,GAAG,MAAM;IAC/B8b,SAAS,CAACV,gBAAgB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;IAChEU,SAAS,CAACT,SAAS,GAAG,UAAUnb,CAAC,EAAE;MAC/BP,IAAI,CAACgV,SAAS,GAAG,KAAK;MACtB,MAAM5X,GAAG,GAAG+e,SAAS,CAAClb,QAAQ,CAACmb,SAAS;MAExCjB,KAAK,CAACzP,GAAG,GAAGtO,GAAG;MACfjI,QAAQ,CAACC,cAAc,CAAC,WAAW,CAAC,CAACyK,WAAW,GAAGzC,GAAG;MACtDjI,QAAQ,CAACC,cAAc,CAAC,WAAW,CAAC,CAACyK,WAAW,GAAI,aAAYzC,GAAI,KAAI;MACxEwD,OAAO,CAACC,GAAG,CAAE,aAAYzD,GAAI,KAAI,CAAC;IACtC,CAAC;IAED+e,SAAS,CAAC/a,IAAI,CAAC4a,QAAQ,CAAC;EAC5B;;EAEJ;;EAEA;;EAEI;AACJ;AACA;AACA;EACI9E,aAAa,CAAC9C,MAAM,EAAE;IAClB,IAAI,CAACiI,eAAe,GAAG,IAAI7J,6DAAM,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE,uBAAuB,CAAC;IAEzF,MAAM8J,WAAW,GAAGnnB,QAAQ,CAACC,cAAc,CAAC,cAAc,CAAC;IAC3D;IACA;IACA;IACA,IAAI+c,8DAAU,CAAC,IAAI,CAACjT,OAAO,EAAEod,WAAW,CAAC5a,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,CAACtC,gBAAgB,CAAC;IAC1I;;IAEAgV,MAAM,CAAC7W,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC8e,eAAe,CAAClc,IAAI,CAACrJ,IAAI,CAAC,IAAI,CAACulB,eAAe,CAAC,EAAE,KAAK,CAAC;IAC7FlnB,QAAQ,CAACC,cAAc,CAAC,UAAU,CAAC,CAACmI,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC8e,eAAe,CAAC9W,KAAK,CAACzO,IAAI,CAAC,IAAI,CAACulB,eAAe,CAAC,EAAE,KAAK,CAAC;EAE/H;;EAEJ;;EAEA;;EAEI;AACJ;AACA;AACA;EACItH,6BAA6B,CAAC/W,KAAK,EAAE;IAEjC,MAAM7C,YAAY,GAAG,IAAI,CAAC+D,OAAO,CAAChF,kBAAkB,EAAE;IAEtD,IAAI,CAAC2c,iBAAiB,CAAChf,YAAY,CAAC,cAAc,EAAEsD,YAAY,CAAC;IAEjE,MAAMohB,cAAc,GAAG,IAAI,CAAC1F,iBAAiB,CAAC3M,QAAQ;IACtD,MAAMsS,WAAW,GAAGD,cAAc,CAAC9nB,MAAM;IACzC,KAAK,IAAIqJ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0e,WAAW,EAAE1e,CAAC,GAAGA,CAAC,GAAG,CAAC,EAAE;MACxC,MAAM2e,UAAU,GAAGF,cAAc,CAACze,CAAC,CAAC;MACpC,IAAI2e,UAAU,CAACzF,OAAO,KAAK,KAAK,EAAE;QAE9B,IAAIyF,UAAU,CAACvX,SAAS,EAAE;UACtBuX,UAAU,CAACvX,SAAS,CAACQ,MAAM,CAAC,aAAa,CAAC;UAC1C+W,UAAU,CAACvX,SAAS,CAACQ,MAAM,CAAC,WAAW,CAAC;QAC5C,CAAC,MACI;UACD,IAAI;YACA,MAAMR,SAAS,GAAGuX,UAAU,CAAClhB,YAAY,CAAC,OAAO,CAAC,CAACwB,KAAK,CAAC,GAAG,CAAC;YAC7D,MAAM2f,UAAU,GAAGxX,SAAS,CAACzQ,MAAM;YAEnC,IAAIkoB,YAAY,GAAG,EAAE;YACrB,KAAK,IAAI7e,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4e,UAAU,EAAE5e,CAAC,GAAGA,CAAC,GAAG,CAAC,EAAE;cACvC,MAAM8e,SAAS,GAAG1X,SAAS,CAACpH,CAAC,CAAC;cAC9B,IAAI8e,SAAS,KAAK,aAAa,EAAE;gBAC7BD,YAAY,IAAI,YAAY;cAChC,CAAC,MACI,IAAIC,SAAS,KAAK,WAAW,EAAE;gBAChCD,YAAY,IAAI,cAAc;cAClC,CAAC,MACI;gBACDA,YAAY,IAAIC,SAAS,GAAG,GAAG;cACnC;YACJ;YAEAH,UAAU,CAAC5kB,YAAY,CAAC,OAAO,EAAE8kB,YAAY,CAAC;UAClD,CAAC,CACD,OAAOpc,CAAC,EAAE;YACNK,OAAO,CAACC,GAAG,CAACN,CAAC,CAAC;UAClB;QACJ;MACJ,CAAC,MAAM,IAAIkc,UAAU,CAACvX,SAAS,CAACuP,QAAQ,CAAC,mBAAmB,CAAC,EAAE;QAC3DgI,UAAU,CAAC5c,WAAW,GAAG1E,YAAY,GAAG,WAAW,GAAG,OAAO;MACjE;IACJ;EACJ;;EAEJ;;EAEA;;EAEIob,gBAAgB,CAACvY,KAAK,EAAE;IACpB,IAAI,CAACkB,OAAO,CAAC7H,wBAAwB,EAAE;EAC3C;;EAEJ;;EAEA;;EAEA;AACA;AACA;AACA;EACI+d,SAAS,CAACpX,KAAK,EAAE;IACb,YAAY;;IAEZ,IAAIA,KAAK,CAAC6e,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC7H,SAAS,KAAK,IAAI,EAAE;IAEtD,MAAMrF,SAAS,GAAGxa,QAAQ,CAACC,cAAc,CAAC,kBAAkB,CAAC;IAC7D,IAAIua,SAAS,CAACpU,YAAY,CAAC,kBAAkB,CAAC,KAAK,MAAM,EAAE;MACvD,IAAI,CAAC4Z,OAAO,EAAE;IAClB,CAAC,MACI;MACD,IAAI,CAAC2H,OAAO,EAAE;IAClB;EACJ;;EAEJ;AACA;AACA;EACI3H,OAAO,GAAG;IACN,YAAY;;IAEZ,IAAI,IAAI,CAACH,SAAS,KAAK,IAAI,EAAE;IAE7B,MAAMK,UAAU,GAAGlgB,QAAQ,CAACmK,gBAAgB,CAAC,kBAAkB,CAAC;IAChE,MAAMgW,QAAQ,GAAGD,UAAU,CAAC5gB,MAAM;IAElC,KAAK,IAAIqJ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwX,QAAQ,EAAExX,CAAC,GAAGA,CAAC,GAAG,CAAC,EAAE;MACrC,MAAMyX,MAAM,GAAGF,UAAU,CAACvX,CAAC,CAAC;MAC5B,IAAIyX,MAAM,CAACrQ,SAAS,CAACuP,QAAQ,CAAC,OAAO,CAAC,EAAE;QACpC7c,UAAU,CAAC,IAAI,CAACud,OAAO,CAACre,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;QACzC;MACJ;IACJ;IAEA,KAAK,IAAIgH,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwX,QAAQ,EAAExX,CAAC,GAAGA,CAAC,GAAG,CAAC,EAAE;MACrC,MAAMyX,MAAM,GAAGF,UAAU,CAACvX,CAAC,CAAC;MAE5ByX,MAAM,CAAC1d,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC;MACxC,IAAI0d,MAAM,CAACvO,OAAO,CAAC+V,QAAQ,KAAK,WAAW,EAAE;QACzC,MAAMzX,MAAM,GAAGnQ,QAAQ,CAAC4P,aAAa,CAAC,wBAAwB,GAAGwQ,MAAM,CAAChgB,EAAE,GAAG,IAAI,CAAC;QAClF,IAAI+P,MAAM,EAAE;UACRA,MAAM,CAACzN,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC;UAC3CyN,MAAM,CAACJ,SAAS,CAACoE,MAAM,CAAC,OAAO,CAAC;UAEhC,IAAIiM,MAAM,CAAChgB,EAAE,KAAK,mBAAmB,EAAEJ,QAAQ,CAACC,cAAc,CAAC,kBAAkB,CAAC,CAAC8P,SAAS,CAACoE,MAAM,CAAC,cAAc,CAAC;QACvH;MACJ;IACJ;IAEAnU,QAAQ,CAACC,cAAc,CAAC,kBAAkB,CAAC,CAACyC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrF1C,QAAQ,CAACC,cAAc,CAAC,WAAW,CAAC,CAACyC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC;EAClF;;EAEJ;AACA;AACA;EACIilB,OAAO,GAAG;IACN,YAAY;;IAEZ,IAAI,IAAI,CAAC9H,SAAS,KAAK,IAAI,EAAE;IAE7B,MAAMK,UAAU,GAAGlgB,QAAQ,CAACmK,gBAAgB,CAAC,yBAAyB,CAAC;IACvE,MAAMgW,QAAQ,GAAGD,UAAU,CAAC5gB,MAAM;IAElC,KAAK,IAAIqJ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwX,QAAQ,EAAExX,CAAC,GAAGA,CAAC,GAAG,CAAC,EAAE;MACrC,MAAMyX,MAAM,GAAGF,UAAU,CAACvX,CAAC,CAAC;MAE5ByX,MAAM,CAAC1d,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC;IAC7C;IAEA1C,QAAQ,CAACC,cAAc,CAAC,kBAAkB,CAAC,CAACyC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpF1C,QAAQ,CAACC,cAAc,CAAC,WAAW,CAAC,CAACyC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC;EACjF;;EAEJ;;EAEA;;EAEI6b,eAAe,CAACsJ,UAAU,EAAE;IACxB,IAAIA,UAAU,GAAG,CAAC,GAAG,IAAIA,UAAU,GAAG,GAAG,EAAE;MACvC,MAAM,IAAI3oB,KAAK,CAAC,mDAAmD,CAAC;IACxE;IACA2oB,UAAU,GAAGA,UAAU,GAAG,GAAG,GAAG,CAAC;IACjC,MAAMC,SAAS,GAAG,GAAG,IAAI,CAAC,GAAGD,UAAU,CAAC;IAExC,MAAME,mBAAmB,GAAG,EAAE;IAC9B,KAAK,IAAIpf,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,GAAG,EAAEA,CAAC,EAAE,EAAE;MAC1Bof,mBAAmB,CAACpf,CAAC,CAAC,GAAG7B,IAAI,CAACkhB,KAAK,CAACrf,CAAC,GAAGkf,UAAU,GAAGC,SAAS,CAAC;IACnE;IACA,OAAO,UAAU3Q,OAAO,EAAE7O,QAAQ,EAAE;MAChC,IAAI2f,OAAO,GAAG9Q,OAAO,CAAC+Q,YAAY,CAC9B,CAAC,EAAE,CAAC,EAAE/Q,OAAO,CAACgR,MAAM,CAACllB,KAAK,EAAEkU,OAAO,CAACgR,MAAM,CAACjlB,MAAM,CAAC;MACtD,IAAIklB,MAAM,GAAGH,OAAO,CAACI,IAAI;MACzB,KAAK,IAAI1f,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyf,MAAM,CAAC9oB,MAAM,EAAEqJ,CAAC,IAAI,CAAC,EAAE;QACvCyf,MAAM,CAACzf,CAAC,CAAC,GAAGof,mBAAmB,CAACK,MAAM,CAACzf,CAAC,CAAC,CAAC;QAC1Cyf,MAAM,CAACzf,CAAC,GAAG,CAAC,CAAC,GAAGof,mBAAmB,CAACK,MAAM,CAACzf,CAAC,GAAG,CAAC,CAAC,CAAC;QAClDyf,MAAM,CAACzf,CAAC,GAAG,CAAC,CAAC,GAAGof,mBAAmB,CAACK,MAAM,CAACzf,CAAC,GAAG,CAAC,CAAC,CAAC;MACtD;MACAwO,OAAO,CAACmR,YAAY,CAACL,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;MACnC3f,QAAQ,EAAE;IACd,CAAC;EACL;EAEAgW,iBAAiB,CAACuJ,UAAU,EAAE;IAC1B,IAAIA,UAAU,GAAG,CAAC,GAAG,IAAIA,UAAU,GAAG,GAAG,EAAE;MACvC,MAAM,IAAI3oB,KAAK,CAAC,qDAAqD,CAAC;IAC1E;IACA2oB,UAAU,IAAI,GAAG;IACjBA,UAAU,GAAGA,UAAU,KAAK,CAAC,GAAGA,UAAU,GAAG,GAAG,GAAG,CAAC;IAEpD,MAAMhd,IAAI,GAAG,IAAI;IACjB,OAAO,UAAUsM,OAAO,EAAE7O,QAAQ,EAAE;MAChC,MAAM2f,OAAO,GAAG9Q,OAAO,CAAC+Q,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE/Q,OAAO,CAACgR,MAAM,CAACllB,KAAK,EAAEkU,OAAO,CAACgR,MAAM,CAACjlB,MAAM,CAAC;MACvF,MAAMklB,MAAM,GAAGH,OAAO,CAACI,IAAI;MAC3B,KAAK,IAAI1f,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyf,MAAM,CAAC9oB,MAAM,EAAEqJ,CAAC,IAAI,CAAC,EAAE;QACvC,MAAM4f,GAAG,GAAG1d,IAAI,CAAC2d,eAAe,CAACJ,MAAM,CAACzf,CAAC,CAAC,EAAEyf,MAAM,CAACzf,CAAC,GAAG,CAAC,CAAC,EAAEyf,MAAM,CAACzf,CAAC,GAAG,CAAC,CAAC,CAAC;QACzE4f,GAAG,CAACE,CAAC,IAAIZ,UAAU;QAEnB,MAAMa,GAAG,GAAG7d,IAAI,CAAC8d,eAAe,CAACJ,GAAG,CAACK,CAAC,EAAEL,GAAG,CAACE,CAAC,EAAEF,GAAG,CAACM,CAAC,CAAC;QACrDT,MAAM,CAACzf,CAAC,CAAC,GAAG+f,GAAG,CAACI,CAAC;QACjBV,MAAM,CAACzf,CAAC,GAAG,CAAC,CAAC,GAAG+f,GAAG,CAACK,CAAC;QACrBX,MAAM,CAACzf,CAAC,GAAG,CAAC,CAAC,GAAG+f,GAAG,CAACM,CAAC;MACzB;MACA7R,OAAO,CAACmR,YAAY,CAACL,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;MACnC3f,QAAQ,EAAE;IACd,CAAC;EACL;EAEAkgB,eAAe,CAACM,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAE;IAErB;IACAF,CAAC,IAAI,GAAG;IACRC,CAAC,IAAI,GAAG;IACRC,CAAC,IAAI,GAAG;IAER,MAAMlL,GAAG,GAAGhX,IAAI,CAACgX,GAAG,CAACgL,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC;IAC7B,MAAMjiB,GAAG,GAAGD,IAAI,CAACC,GAAG,CAAC+hB,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC;IAE7B,MAAMC,IAAI,GAAGnL,GAAG,GAAG/W,GAAG;IACtB,IAAI6hB,CAAC,GAAG,CAAC;IACT,IAAIH,CAAC,GAAG3K,GAAG,KAAK,CAAC,GAAG,CAAC,GAAGmL,IAAI,GAAGnL,GAAG;IAClC,IAAI+K,CAAC,GAAG/K,GAAG;IAEX,IAAImL,IAAI,GAAG,CAAC,EAAE;MACV,QAAQnL,GAAG;QACP,KAAKgL,CAAC;UACFF,CAAC,GAAG,CAACG,CAAC,GAAGC,CAAC,IAAIC,IAAI;UAClB,IAAIL,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,CAAC;UACjB;QAEJ,KAAKG,CAAC;UACFH,CAAC,GAAG,CAACI,CAAC,GAAGF,CAAC,IAAIG,IAAI,GAAG,CAAC;UACtB;QAEJ,KAAKD,CAAC;UACFJ,CAAC,GAAG,CAACE,CAAC,GAAGC,CAAC,IAAIE,IAAI,GAAG,CAAC;UACtB;MAAM;MAEdL,CAAC,IAAI,CAAC;IACV;IAEA,OAAO;MACHA,CAAC,EAAEA,CAAC;MACJH,CAAC,EAAEA,CAAC;MACJI,CAAC,EAAEA;IACP,CAAC;EACL;EAEAF,eAAe,CAACC,CAAC,EAAEH,CAAC,EAAEI,CAAC,EAAE;IACrB,IAAIC,CAAC,EAAEC,CAAC,EAAEC,CAAC;IAEX,MAAMrgB,CAAC,GAAG7B,IAAI,CAACkhB,KAAK,CAACY,CAAC,GAAG,CAAC,CAAC;IAC3B,MAAMM,CAAC,GAAGN,CAAC,GAAG,CAAC,GAAGjgB,CAAC;IAEnB,QAAQA,CAAC;MAEL,KAAK,CAAC;QACFmgB,CAAC,GAAGD,CAAC;QACLE,CAAC,GAAGF,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAGK,CAAC,IAAIT,CAAC,CAAC;QACzBO,CAAC,GAAGH,CAAC,IAAI,CAAC,GAAGJ,CAAC,CAAC;QACf;MAEJ,KAAK,CAAC;QACFK,CAAC,GAAGD,CAAC,IAAI,CAAC,GAAGJ,CAAC,GAAGS,CAAC,CAAC;QACnBH,CAAC,GAAGF,CAAC;QACLG,CAAC,GAAGH,CAAC,IAAI,CAAC,GAAGJ,CAAC,CAAC;QACf;MAEJ,KAAK,CAAC;QACFK,CAAC,GAAGD,CAAC,IAAI,CAAC,GAAGJ,CAAC,CAAC;QACfM,CAAC,GAAGF,CAAC;QACLG,CAAC,GAAGH,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAGK,CAAC,IAAIT,CAAC,CAAC;QACzB;MAEJ,KAAK,CAAC;QACFK,CAAC,GAAGD,CAAC,IAAI,CAAC,GAAGJ,CAAC,CAAC;QACfM,CAAC,GAAGF,CAAC,IAAI,CAAC,GAAGJ,CAAC,GAAGS,CAAC,CAAC;QACnBF,CAAC,GAAGH,CAAC;QACL;MAEJ,KAAK,CAAC;QACFC,CAAC,GAAGD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAGK,CAAC,IAAIT,CAAC,CAAC;QACzBM,CAAC,GAAGF,CAAC,IAAI,CAAC,GAAGJ,CAAC,CAAC;QACfO,CAAC,GAAGH,CAAC;QACL;MAEJ,KAAK,CAAC;QACFC,CAAC,GAAGD,CAAC;QACLE,CAAC,GAAGF,CAAC,IAAI,CAAC,GAAGJ,CAAC,CAAC;QACfO,CAAC,GAAGH,CAAC,IAAI,CAAC,GAAGJ,CAAC,GAAGS,CAAC,CAAC;QACnB;IAAM;IAGd,OAAO;MACHJ,CAAC,EAAEhiB,IAAI,CAACkhB,KAAK,CAAC,GAAG,GAAGc,CAAC,CAAC;MACtBC,CAAC,EAAEjiB,IAAI,CAACkhB,KAAK,CAAC,GAAG,GAAGe,CAAC,CAAC;MACtBC,CAAC,EAAEliB,IAAI,CAACkhB,KAAK,CAAC,GAAG,GAAGgB,CAAC;IACzB,CAAC;EACL;EAEArK,oBAAoB,GAAG;IACnB,MAAM9T,IAAI,GAAG,IAAI;IACjB,MAAMse,MAAM,GAAGnpB,QAAQ,CAACC,cAAc,CAAC,qBAAqB,CAAC;IAC7D,MAAMmpB,cAAc,GAAGppB,QAAQ,CAAC4P,aAAa,CAAC,qCAAqC,CAAC;IACpF,IAAI,CAACgO,QAAQ,CAACyL,GAAG,CAAC,UAAUC,MAAM,EAAE;MAEhC,MAAMC,OAAO,GAAGvpB,QAAQ,CAAC8P,aAAa,CAAC,KAAK,CAAC;MAC7CyZ,OAAO,CAACnpB,EAAE,GAAGkpB,MAAM,CAACzL,UAAU,GAAG,eAAe;MAChD0L,OAAO,CAACxZ,SAAS,CAACC,GAAG,CAAC,qBAAqB,CAAC;MAC5CuZ,OAAO,CAAC7mB,YAAY,CAAC,aAAa,EAAE0mB,cAAc,CAAChjB,YAAY,CAAC,eAAe,CAAC,KAAKmjB,OAAO,CAACnpB,EAAE,CAAC;MAChGmpB,OAAO,CAAC7mB,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;MAExC,MAAM8mB,MAAM,GAAGxpB,QAAQ,CAAC8P,aAAa,CAAC,OAAO,CAAC;MAC9C0Z,MAAM,CAACppB,EAAE,GAAGkpB,MAAM,CAACzL,UAAU,GAAG,SAAS;MACzC2L,MAAM,CAACzZ,SAAS,CAACC,GAAG,CAAC,eAAe,CAAC;MACrCwZ,MAAM,CAACnhB,IAAI,GAAG,OAAO;MACrBmhB,MAAM,CAACziB,GAAG,GAAGuiB,MAAM,CAACviB,GAAG;MACvByiB,MAAM,CAAC1L,GAAG,GAAGwL,MAAM,CAACxL,GAAG;MACvB0L,MAAM,CAACzL,IAAI,GAAGuL,MAAM,CAACvL,IAAI,IAAI,CAAC;MAC9ByL,MAAM,CAACjd,KAAK,GAAG+c,MAAM,CAAC9X,YAAY;MAElC,MAAMiY,cAAc,GAAGjrB,sDAAU,KAAK,IAAI,IAAIA,sDAAU,KAAK,MAAM,GAAG,QAAQ,GAAG,OAAO;MACxFgrB,MAAM,CAACphB,gBAAgB,CAACqhB,cAAc,EAAE5e,IAAI,CAAC6e,aAAa,CAAC/nB,IAAI,CAACkJ,IAAI,CAAC,EAAE,KAAK,CAAC;MAE7E,MAAM8e,WAAW,GAAG3pB,QAAQ,CAAC8P,aAAa,CAAC,QAAQ,CAAC;MACpD6Z,WAAW,CAAC5Z,SAAS,CAACC,GAAG,CAAC,eAAe,CAAC;MAC1C2Z,WAAW,CAACthB,IAAI,GAAG,QAAQ;MAC3BshB,WAAW,CAAC9X,OAAO,CAAC+X,UAAU,GAAGN,MAAM,CAACzL,UAAU;MAElD,MAAMlV,CAAC,GAAG3I,QAAQ,CAAC8P,aAAa,CAAC,GAAG,CAAC;MACrCnH,CAAC,CAACoH,SAAS,CAACC,GAAG,CAAC,KAAK,CAAC;MACtBrH,CAAC,CAACoH,SAAS,CAACC,GAAG,CAAC,aAAa,CAAC;MAE9B2Z,WAAW,CAACE,WAAW,CAAClhB,CAAC,CAAC;MAC1B4gB,OAAO,CAACM,WAAW,CAACL,MAAM,CAAC;MAC3BD,OAAO,CAACM,WAAW,CAACF,WAAW,CAAC;MAEhCA,WAAW,CAACvhB,gBAAgB,CAAC,OAAO,EAAEyC,IAAI,CAACif,YAAY,CAACnoB,IAAI,CAACkJ,IAAI,CAAC,EAAE,KAAK,CAAC;MAE1Ese,MAAM,CAACjZ,YAAY,CAACqZ,OAAO,EAAEJ,MAAM,CAACY,UAAU,CAAC;IACnD,CAAC,CAAC;EACN;EAEAL,aAAa,GAAG;IAEZ,IAAIH,OAAO,GAAG,EAAE;IAChB,IAAI,IAAI,CAAC5L,MAAM,KAAK,IAAI,EAAEhb,YAAY,CAAC,IAAI,CAACgb,MAAM,CAAC;IAEnDlb,UAAU,CAAC,YAAY;MAEnB,IAAI,CAACmb,QAAQ,CAACyL,GAAG,CAAC,UAAUC,MAAM,EAAE;QAChC,IAAIA,MAAM,CAACrL,KAAK,EAAE,KAAK,IAAI,EAAE;UACzBsL,OAAO,CAAChhB,IAAI,CAAC+gB,MAAM,CAACnL,SAAS,EAAE,CAAC;QACpC;MACJ,CAAC,CAAC;MAGF,IAAI,CAACpU,OAAO,CAAC5K,UAAU,CAAC6qB,gBAAgB,CAAC;QACrCT,OAAO,EAAE;UACLU,UAAU,EAAEV;QAChB,CAAC;QACDW,QAAQ,EAAE;MACd,CAAC,CAAC;IAEN,CAAC,CAACvoB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;EACrB;EAEAmoB,YAAY,CAACjhB,KAAK,EAAE;IAChB,MAAMzI,EAAE,GAAGyI,KAAK,CAACkE,aAAa,CAAC8E,OAAO,CAAC+X,UAAU;IACjD,IAAI,CAAChM,QAAQ,CAACyL,GAAG,CAAC,UAAUC,MAAM,EAAE;MAChC,IAAIA,MAAM,CAACzL,UAAU,KAAKzd,EAAE,EAAE;QAC1B,IAAI+pB,WAAW,GAAGnqB,QAAQ,CAACC,cAAc,CAACqpB,MAAM,CAACzL,UAAU,GAAG,SAAS,CAAC;QACxEsM,WAAW,CAAC5d,KAAK,GAAG+c,MAAM,CAAC9X,YAAY,IAAI,CAAC;MAChD;IACJ,CAAC,CAAC;IACF,IAAI,CAACkY,aAAa,EAAE;EACxB;EAEAxH,aAAa,CAACrZ,KAAK,EAAE;IACjB,IAAIrK,sDAAU,KAAK,IAAI,EAAE;MACrB,IAAI,CAACof,QAAQ,CAACyL,GAAG,CAAC,UAAUC,MAAM,EAAE;QAChC,IAAIA,MAAM,CAACtL,QAAQ,EAAE;UACjB,IAAImM,WAAW,GAAGnqB,QAAQ,CAACC,cAAc,CAACqpB,MAAM,CAACzL,UAAU,GAAG,SAAS,CAAC;UACxEsM,WAAW,CAAC5d,KAAK,GAAG+c,MAAM,CAAC9X,YAAY,IAAI,CAAC;QAChD,CAAC,MACI,IAAI8X,MAAM,CAACrL,KAAK,EAAE,EAAE;UACrB,MAAMgB,MAAM,GAAGjf,QAAQ,CAAC4P,aAAa,CAAC,kCAAkC,GAAG0Z,MAAM,CAACzL,UAAU,GAAG,GAAG,CAAC;UACnG,IAAIoB,MAAM,EAAEA,MAAM,CAAClT,KAAK,EAAE;QAC9B;MACJ,CAAC,CAAC;MACF,IAAI,CAAC2d,aAAa,EAAE;IACxB;IAEA,IAAI,CAAC3f,OAAO,CAACnF,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC;EACrC;EAEAwlB,SAAS,CAACC,IAAI,EAAEC,QAAQ,EAAE;IAEtB,IAAI,IAAI,CAAC3M,MAAM,KAAK,IAAI,EAAEhb,YAAY,CAAC,IAAI,CAACgb,MAAM,CAAC;IACnD,IAAI,CAACA,MAAM,GAAGlb,UAAU,CAAC,YAAY;MACjC4nB,IAAI,CAACthB,IAAI,EAAE;IACf,CAAC,EAAEuhB,QAAQ,CAAC;EAChB;;EAGJ;;EAEA;;EAEA;AACA;AACA;EACItJ,UAAU,GAAG;IAET,IAAI,IAAI,CAACnB,SAAS,EAAE;IAEpB,MAAM0K,QAAQ,GAAG,IAAI,CAACxgB,OAAO,CAACxH,cAAc,EAAE,GAAG,CAAC;IAClD,IAAI,CAACwH,OAAO,CAAC1G,QAAQ,CAACknB,QAAQ,EAAE,IAAI,CAAC;EACzC;;EAEJ;AACA;AACA;EACItJ,UAAU,GAAG;IAET,IAAI,IAAI,CAACpB,SAAS,EAAE;IAEpB,MAAM2K,QAAQ,GAAG,IAAI,CAACzgB,OAAO,CAACxH,cAAc,EAAE,GAAG,CAAC;IAClD,IAAI,CAACwH,OAAO,CAAC1G,QAAQ,CAACmnB,QAAQ,EAAE,IAAI,CAAC;EACzC;;EAEJ;;EAEA;;EAEA;AACA;AACA;AACA;AACA;EACInF,gBAAgB,CAACjjB,OAAO,EAAED,UAAU,EAAE;IAClC,MAAMmB,cAAc,GAAGnB,UAAU,KAAK,IAAI;IAC1C,IAAI,CAAC4H,OAAO,CAACnF,WAAW,CAACxC,OAAO,EAAEkB,cAAc,CAAC;EACrD;;EAEJ;;EAEA;;EAEA;AACA;AACA;EACIqe,gBAAgB,GAAG;IAEf,IAAI,IAAI,CAACD,iBAAiB,KAAKngB,SAAS,IAAI,IAAI,CAACmgB,iBAAiB,KAAK,IAAI,EAAE,MAAM,IAAIxiB,KAAK,CAAC,8BAA8B,CAAC;IAE5H,IAAI,CAAC6K,OAAO,CAAC1E,gBAAgB,EAAE;EACnC;;EAEJ;;EAEI4c,eAAe,CAACpZ,KAAK,EAAE;IAEnB,MAAM8K,MAAM,GAAG9K,KAAK,CAACkE,aAAa;IAClC,MAAM0d,SAAS,GAAG9W,MAAM,CAACvN,YAAY,CAAC,cAAc,CAAC,KAAK,MAAM;IAChEuN,MAAM,CAACjR,YAAY,CAAC,cAAc,EAAE,CAAC+nB,SAAS,CAAC;IAE/C,IAAI,CAACf,aAAa,EAAE;EACxB;AACJ;AAEAtrB,MAAM,CAACkf,UAAU,GAAGA,UAAU,C","sources":["webpack:///./Scripts/Viewer/lib/useragent.js","webpack:///./Scripts/Viewer/lib/viewer-core.js","webpack:///./Scripts/Viewer/lib/viewer-downloader.js","webpack:///./Scripts/Viewer/lib/viewer-quote.js","webpack:///./Scripts/Viewer/lib/viewer-ui-dialog.js","webpack:///./Scripts/Viewer/lib/viewer-ui-element-resizer.js","webpack:///./Scripts/Viewer/lib/viewer-ui-slider.js","webpack:///./Scripts/Viewer/lib/viewer-ui-tab-helper.js","webpack:///./Scripts/Viewer/lib/viewer-ui-thumblist.js","webpack:///./Scripts/Viewer/lib/viewer-watermark.js","webpack:///./node_modules/jquery-lazyload/jquery.lazyload.js","webpack:///external var \"jQuery\"","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///./Scripts/Viewer/viewer.js"],"sourcesContent":["export default (() => {\r\n var ua = navigator.userAgent.toLowerCase();\r\n\r\n if (ua.indexOf('iphone') !== -1 || ua.indexOf('ipad') !== -1) {\r\n return 'ios';\r\n }\r\n else if (ua.indexOf('android') !== -1) {\r\n return 'android';\r\n }\r\n else if (ua.indexOf('edge') !== -1) {\r\n return 'edge';\r\n }\r\n else if (ua.indexOf('meie') !== -1 || ua.indexOf('trident') !== -1) {\r\n return 'ie';\r\n }\r\n else if (ua.indexOf('firefox') !== -1) {\r\n return 'firefox';\r\n }\r\n else if (ua.indexOf('chrome') !== -1 && window.chrome) {\r\n return 'chrome';\r\n }\r\n else if (ua.indexOf('safari') !== -1) {\r\n return 'safari';\r\n }\r\n else {\r\n return 'unknown';\r\n }\r\n})();","import Quote from './viewer-quote';\r\nimport Watermark from './viewer-watermark';\r\nimport _userAgent from './useragent';\r\n\r\nexport default class ViewerCore {\r\n constructor(mainViewerId, tileSourceDef, initialPage, watermarkUrl, watermarkPosition, quoteCallback, loadingOverlayId) {\r\n if (!mainViewerId) throw new Error('mainViewerIdが指定されていません。');\r\n if (!tileSourceDef) throw new Error('tileSourceDefが指定されていません。');\r\n\r\n /**\r\n * メインビューア\r\n * @type {OpenSeadragon.Viewer}\r\n */\r\n this.mainViewer = null;\r\n\r\n this._mainViewerId = mainViewerId;\r\n\r\n /**\r\n * 総ページ数。 \r\n * @type {Number}\r\n */\r\n this.totalPagesCount = tileSourceDef.length;\r\n /**\r\n * 保持しているイベントリスナーリスト。 \r\n * @type {Array}\r\n */\r\n this._listeners = {};\r\n /**\r\n * ウォーターマークオブジェクト。\r\n * @private\r\n * @type {JGMWatermark}\r\n */\r\n this._watermark;\r\n /**\r\n * ウォーターマークのURL\r\n * @private\r\n * @type {String}\r\n */\r\n this._watermarkUrl = watermarkUrl;\r\n /**\r\n * ウォーターマークの表示位置\r\n * @private\r\n * @type {Number}\r\n */\r\n this._watermarkPosition = watermarkPosition;\r\n /**\r\n * ビューアを同期するイベントハンドラを保持する変数。\r\n * @private\r\n * @type {Function}\r\n */\r\n this._navigatorHandler = null;\r\n /**\r\n * サブ画像のウォーターマーク\r\n * @private\r\n * @type {JGMWatermark}\r\n */\r\n this._subWatermark = null;\r\n /**\r\n * 描写をすぐに行うか否か\r\n * @private\r\n * @type {Boolean}\r\n */\r\n this._immediateRender = _userAgent === 'ios' || _userAgent === 'android';\r\n\r\n if (loadingOverlayId) {\r\n this._loadTimer = null;\r\n this._loadOverlay = document.getElementById(loadingOverlayId);\r\n this.showLoadAnimation();\r\n }\r\n\r\n // メインビューアの生成。\r\n this.mainViewer = new OpenSeadragon({\r\n id: mainViewerId,\r\n tileSources: tileSourceDef,\r\n sequenceMode: true,\r\n initialPage: initialPage - 1 || 0,\r\n immediateRender: this._immediateRender,\r\n showSequenceControl: false,\r\n showFullPageControl: false,\r\n showHomeControl: false,\r\n showZoomControl: false,\r\n showNavigator: true,\r\n navigatorId: 'navigator',\r\n navigatorPosition: 'ABSOLUTE',\r\n //navigatorLeft: \"4px\",\r\n navigatorRotate: false,\r\n navigatorAutoFade: false,\r\n navigatorAutoResize: false,\r\n gestureSettingsMouse: {\r\n clickToZoom: false,\r\n dblClickToZoom: false // ダブルクリックでズームしない\r\n },\r\n crossOriginPolicy: 'Anonymous'\r\n });\r\n\r\n // ウォーターマークの設定。\r\n this.hasWatermark = watermarkUrl !== ' ' && watermarkUrl !== null && watermarkUrl !== undefined && watermarkPosition !== undefined;\r\n if (this.hasWatermark) this._watermark = new Watermark(this.mainViewer, this._watermarkUrl, this._watermarkPosition, null);\r\n\r\n this._mainQuoteHelper = new Quote(this.mainViewer, quoteCallback);\r\n\r\n // ビューアが開かれた際の処理。\r\n this.mainViewer.addOnceHandler('open', this._init.bind(this));\r\n this.mainViewer.addOnceHandler('open', this._updateNavigator.bind(this));\r\n\r\n if (loadingOverlayId) this.mainViewer.addHandler('tile-drawing', this.hiddenLoadAnimation.bind(this));\r\n }\r\n\r\n /**\r\n * ビューアの初期化を行います。\r\n */\r\n _init() {\r\n // アスペクト比が10:1以上の場合は巻物と判定し、初期表示位置設定を行う。\r\n if (this.mainViewer.source.aspectRatio > 10) this.goHomeForScrollsItem(true);\r\n\r\n // ビューアサイズが変更された場合にナビゲーターのサイズも変更されるように登録する。\r\n this.mainViewer.addHandler('resize', this._updateNavigator.bind(this));\r\n //if (this._initializeNavView === 0) this.toggleDisplayOfNavigator();\r\n this.toggleDisplayOfNavigator();\r\n\r\n // 初期状態を通利するためにイベントを発生させる。\r\n this.raiseEvent('changeRotate', { degrees: this.getRotation() });\r\n this.raiseEvent('changePage', { page: this.getCurrentPage(), existNextPage: this.existNextPage() });\r\n }\r\n\r\n /**\r\n * ローディングアイコンを表示します。\r\n */\r\n showLoadAnimation() {\r\n this._loadTimer = setTimeout(function () {\r\n this._loadOverlay.setAttribute('aria-hidden', 'false');\r\n }.bind(this), 200);\r\n }\r\n\r\n /**\r\n * ローディングアイコンを非表示にします。\r\n */\r\n hiddenLoadAnimation() {\r\n clearTimeout(this._loadTimer);\r\n this._loadOverlay.setAttribute('aria-hidden', 'true');\r\n }\r\n\r\n getOriginalImageSize() {\r\n \r\n const tileSource = this.mainViewer.world.getItemAt(0).source;\r\n\r\n return new OpenSeadragon.Point(tileSource.width, tileSource.height);\r\n }\r\n\r\n /**\r\n * 現在のページ番号を取得します。\r\n * @return {Number} 現在のページ番号。\r\n */\r\n getCurrentPage() {\r\n \r\n return this.mainViewer.currentPage() + 1;\r\n }\r\n\r\n /**\r\n * 現在のページ番号(インデックス)を取得します。\r\n * @return {Number} 現在のページ番号(インデックス)。\r\n */\r\n getIndexOfCurrentPage() {\r\n \r\n return this.mainViewer.currentPage();\r\n }\r\n\r\n /**\r\n * 指定したページに移動します。\r\n * @param {Number} page 移動先のページ番号。\r\n * @param {Boolean} [needRaiseEvent=true] イベントを発火させる必要性の有無。\r\n * \r\n * @throws {RangeError} 指定されたページが存在しない場合に発生します。\r\n */\r\n goToPage(page, needRaiseEvent) {\r\n\r\n const index = page - 1;\r\n if (index === this.getIndexOfCurrentPage()) return;\r\n if (index < 0 || this.totalPagesCount < index) throw new RangeError('specified page does not exist');\r\n\r\n this.showLoadAnimation();\r\n this.mainViewer.goToPage(index);\r\n\r\n const raiseEvent = needRaiseEvent === null || needRaiseEvent === undefined ? true : needRaiseEvent;\r\n if (raiseEvent) this.raiseEvent('changePage', { page: page, existNextPage: this.existNextPage() });\r\n }\r\n\r\n /**\r\n * 次のページが存在するか否かを判定します。\r\n * @returns {Boolean} 次のページの有無。\r\n */\r\n existNextPage () {\r\n\r\n return this.getCurrentPage() < this.totalPagesCount;\r\n }\r\n\r\n /**\r\n * 画像の表示を指定した倍率に変更します。\r\n * @param {Number} [zoom=2.0] 拡大倍率。\r\n */\r\n zoomTo(zoom) {\r\n\r\n zoom = zoom || 2.0;\r\n this.mainViewer.viewport.zoomBy(zoom);\r\n this.mainViewer.viewport.applyConstraints();\r\n }\r\n\r\n /**\r\n * 画像を横幅に合わせます。\r\n * @param {Boolean} [immediately=false] 直ちに実行するか否か(=アニメーションの有無)。\r\n */\r\n fitHorizontally(immediately) {\r\n\r\n immediately = immediately === true;\r\n\r\n const degrees = this.getRotation();\r\n const center = this.mainViewer.viewport.getCenter(immediately);\r\n\r\n const newBounds = degrees !== 90 && degrees !== 270\r\n ? new OpenSeadragon.Rect(0, center.y, 1, 0)\r\n : new OpenSeadragon.Rect(center.x, 0, 0, 1 / this.mainViewer.source.aspectRatio);\r\n\r\n this.mainViewer.viewport.fitBounds(newBounds, immediately);\r\n }\r\n\r\n /**\r\n * 画像を縦幅に合わせます。\r\n * @param {Boolean} [immediately=false] 直ちに実行するか否か(=アニメーションの有無)。\r\n */\r\n fitVertically(immediately) {\r\n\r\n immediately = immediately === true;\r\n\r\n const degrees = this.getRotation();\r\n const center = this.mainViewer.viewport.getCenter(immediately);\r\n\r\n const newBounds = degrees !== 90 && degrees !== 270\r\n ? new OpenSeadragon.Rect(center.x, 0, 0, 1 / this.mainViewer.source.aspectRatio)\r\n : new OpenSeadragon.Rect(0, center.y, 1, 0);\r\n\r\n this.mainViewer.viewport.fitBounds(newBounds, immediately);\r\n }\r\n\r\n /**\r\n * 画像を全体表示します。\r\n * @param {Boolean} [immediately=false] 直ちに実行するか否か(=アニメーションの有無)。\r\n */\r\n goHome(immediately) {\r\n\r\n immediately = immediately === true;\r\n\r\n if (this.mainViewer.source.aspectRatio > 10) {\r\n this.goHomeForScrollsItem(immediately);\r\n }\r\n else {\r\n this.mainViewer.viewport.goHome(immediately);\r\n }\r\n }\r\n\r\n /**\r\n * 巻物のホーム画面に移動させます。\r\n * @param {Boolean} [immediately=false] 直ちに実行するか否か(=アニメーションの有無)。\r\n */\r\n goHomeForScrollsItem(immediately) {\r\n\r\n immediately = immediately === true;\r\n\r\n this.fitVertically(true);\r\n const viewport = this.mainViewer.viewport;\r\n\r\n // 現在のビューポートの矩形座標(x, y, width, height)\r\n const bounds = viewport.getBounds(true);\r\n\r\n // 現在のビューポートの中心点(x,y)\r\n const center = viewport.getCenter(true);\r\n\r\n viewport.panTo({ x: 1 - bounds.width / 2, y: center.y }, immediately);\r\n }\r\n\r\n /**\r\n * 画像の回転角を取得します。\r\n * @returns {Number} 画像の回転角。\r\n */\r\n getRotation() {\r\n \r\n\r\n let degrees = this.mainViewer.viewport.getRotation() % 360;\r\n if (degrees < 0) degrees += 360;\r\n\r\n return degrees;\r\n }\r\n\r\n /**\r\n * 画像を指定した角度に設定します。\r\n * @param {Number} [degrees=0] 回転角度。\r\n * @param {Boolean} [needRaiseEvent=true] イベントを発火させる必要の有無。\r\n */\r\n setRotation(degrees, needRaiseEvent) {\r\n \r\n degrees = degrees || 0;\r\n this.mainViewer.viewport.setRotation(degrees);\r\n\r\n const raiseEvent = needRaiseEvent === null || needRaiseEvent === undefined ? true : needRaiseEvent;\r\n if (raiseEvent) this.raiseEvent('changeRotate', { degrees: this.getRotation() });\r\n }\r\n\r\n /**\r\n * 画像を指定した角度回転させます。\r\n * @param {Number} offset 回転させる角度。\r\n * @param {Boolean} [needRaiseEvent=true] イベントを発火させる必要の有無。\r\n */\r\n setRotate(offset, needRaiseEvent) {\r\n \r\n let degrees = offset + this.getRotation();\r\n degrees = (degrees + 360) % 360;\r\n\r\n this.setRotation(degrees, needRaiseEvent);\r\n }\r\n\r\n /**\r\n * 現在の表示がフルスクリーンであるか否かを取得します。\r\n * @return {Boolean} フルスクリーンであるか否か。\r\n */\r\n getFullscreenState () {\r\n\r\n if (document.webkitFullscreenElement) {\r\n return document.getElementById(this._mainViewerId).webkitCurrentFullScreenElement !== null;\r\n }\r\n else if (document.mozFullScreenElement) {\r\n return document.getElementById(this._mainViewerId).mozFullScreenElement !== null;\r\n }\r\n else if (document.msFullscreenElement) {\r\n return document.getElementById(this._mainViewerId).msFullscreenElement !== null;\r\n }\r\n else if (document.fullscreenElement) {\r\n return document.getElementById(this._mainViewerId).fullscreenElement !== null;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n\r\n /**\r\n * フルスクリーン表示に切り替えます。\r\n */\r\n toggleFullScreen () {\r\n\r\n const isFullScreen = this.getFullscreenState();\r\n\r\n if (isFullScreen) {\r\n\r\n if (document.webkitExitFullscreen) {\r\n document.webkitExitFullscreen();\r\n }\r\n else if (document.msExitFullscreen) {\r\n document.msExitFullscreen();\r\n }\r\n else if (document.mozCancelFullScreen) {\r\n document.mozCancelFullScreen();\r\n }\r\n else if (document.exitFullscreen) {\r\n document.exitFullscreen();\r\n }\r\n }\r\n else {\r\n if (document.documentElement.msRequestFullscreen) {\r\n document.getElementById(\"viewer-element\").msRequestFullscreen();\r\n }\r\n else if (document.documentElement.webkitRequestFullscreen) {\r\n document.getElementById(\"viewer-element\").webkitRequestFullscreen();\r\n }\r\n else if (document.documentElement.mozRequestFullScreen) {\r\n document.getElementById(\"viewer-element\").mozRequestFullScreen();\r\n }\r\n else if (document.documentElement.requestFullscreen) {\r\n document.getElementById(\"viewer-element\").requestFullscreen();\r\n }\r\n }\r\n\r\n setTimeout(function () {\r\n this.mainViewer.raiseEvent('resize');\r\n }.bind(this), 300);\r\n\r\n this.raiseEvent('changeFullscreenState', { isFullscreen: !isFullScreen });\r\n };\r\n\r\n /**\r\n * ナビゲーターの表示/非表示を判定します。\r\n * @return {Boolean} ナビゲータ表示の有無。\r\n */\r\n getVisibleOfNavigator () {\r\n\r\n const navigator = this.mainViewer.navigator;\r\n const isHidden = navigator.element.getAttribute('aria-hidden') === 'true';\r\n\r\n return !isHidden;\r\n }\r\n\r\n /**\r\n * ナビゲーターの表示/非表示を切り替えます。\r\n */\r\n toggleDisplayOfNavigator () {\r\n\r\n const navigator = this.mainViewer.navigator;\r\n const isHidden = navigator.element.getAttribute('aria-hidden') === 'true';\r\n navigator.element.setAttribute('aria-hidden', !isHidden);\r\n navigator.setVisible(isHidden);\r\n\r\n if (isHidden) {\r\n navigator.update(this.mainViewer.viewport);\r\n navigator.forceRedraw();\r\n }\r\n\r\n this.mainViewer.raiseEvent('resize');\r\n };\r\n\r\n /**\r\n * ナビゲータのサイズ調整を行います。\r\n */\r\n _updateNavigator () {\r\n\r\n const containerSize = OpenSeadragon.getElementSize(this.mainViewer.element.parentNode);\r\n const parentContainerSize = OpenSeadragon.getElementSize(this.mainViewer.element.parentNode.parentNode);\r\n\r\n const aspectRatio = this.mainViewer.source.aspectRatio;\r\n\r\n let width, height, left, top;\r\n if (aspectRatio > 10) {\r\n width = containerSize.x;\r\n height = Math.min(containerSize.y * 0.1, width / aspectRatio + 30);\r\n left = 0;\r\n }\r\n else {\r\n width = Math.round(containerSize.x * 0.2);\r\n height = Math.round(containerSize.y * 0.2);\r\n left = parentContainerSize.x - width - 4;\r\n }\r\n\r\n this.mainViewer.navigator.element.style.width = width + 'px';\r\n this.mainViewer.navigator.element.style.height = height + 'px';\r\n this.mainViewer.navigator.element.style.top = '0px';\r\n this.mainViewer.navigator.element.style.left = left + 'px';\r\n\r\n setTimeout(() => {\r\n this.mainViewer.navigator.updateSize();\r\n this.mainViewer.navigator.update(this.mainViewer.viewport);\r\n }, 250); \r\n }\r\n\r\n /**\r\n * 引用の状態を設定します。\r\n * @param {Boolean} enabled 引用の状態。\r\n */\r\n setSelectionState (enabled) {\r\n this._mainQuoteHelper.setSelectionState(enabled);\r\n if (this._subQuoteHelper) this._subQuoteHelper.setSelectionState(enabled);\r\n }\r\n\r\n /**\r\n * 引用を確定します。 \r\n */\r\n confirmSelection() {\r\n this._mainQuoteHelper.confirmSelection();\r\n }\r\n\r\n /**\r\n * 引用を中止します。 \r\n */\r\n cancelSelection () {\r\n this._mainQuoteHelper.cancelSelection();\r\n if (this._subQuoteHelper) this._subQuoteHelper.cancelSelection();\r\n }\r\n\r\n getSelectedRectSize () {\r\n return this._mainQuoteHelper.getSelectionSize();\r\n }\r\n\r\n getCurrentPageImageId () {\r\n const params = this.mainViewer.world.getItemAt(0).source['@id'].split('/');\r\n const imageId = params.pop();\r\n\r\n return imageId.replace('.jp2', '');\r\n }\r\n\r\n registUrl (url) {\r\n\r\n this._mainQuoteHelper.isDrawing();\r\n return this._mainQuoteHelper.regist(url, url);\r\n }\r\n\r\n /**\r\n * イベントリスナーを登録します。\r\n * @param {String} type イベントの種類。\r\n * @param {EventListenerOrEventListenerObject} callback コールバック。\r\n */\r\n addEventListener (type, callback) {\r\n if (!(type in this._listeners)) {\r\n this._listeners[type] = [];\r\n }\r\n this._listeners[type].push(callback);\r\n }\r\n\r\n /**\r\n * イベントリスナーを削除します。\r\n * @param {String} type イベントの種類\r\n * @param {EventListenerOrEventListenerObject} [callback] コールバック\r\n */\r\n removeEventListener (type, callback) {\r\n if (!(type in this._listeners)) return;\r\n\r\n const stack = this._listeners[type];\r\n if (callback === null || callback === undefined) {\r\n stack.splice(0);\r\n }\r\n else {\r\n for (var i = 0, length = stack.length; i < length; i++) {\r\n if (stack[i] === callback) {\r\n stack.splice(i, 1);\r\n this.removeEventListener(type, callback);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * イベントを発火します。\r\n * @param {CustomEvent} event イベントオブジェクト。\r\n */\r\n dispatchEvent (event) {\r\n\r\n if (!(event.type in this._listeners)) return;\r\n\r\n var stack = this._listeners[event.type];\r\n\r\n // event.target = this;\r\n for (var i = 0, l = stack.length; i < l; i++) {\r\n stack[i].call(this, event);\r\n }\r\n }\r\n\r\n /**\r\n * イベントを発火させます。\r\n * @param {String} eventName イベント名\r\n * @param {any} eventArgs detailに入る変数。\r\n */\r\n raiseEvent (eventName, eventArgs) {\r\n\r\n if (_userAgent !== 'ie') {\r\n const event = new CustomEvent(eventName, { detail: eventArgs });\r\n this.dispatchEvent(event);\r\n }\r\n else {\r\n const event = document.createEvent('CustomEvent');\r\n event.initCustomEvent(eventName, false, false, eventArgs);\r\n this.dispatchEvent(event);\r\n }\r\n }\r\n}","import _userAgent from './useragent';\r\n\r\nexport default class ViewerDownloader {\r\n constructor(viewer, baseUrl, downloadButtonId, typeSelectorName, dummyAnchorId, pageSelectorName, pageInputId, enableDownloads) {\r\n this._viewer = viewer;\r\n this._baseUrl = baseUrl;\r\n\r\n if (enableDownloads === null) return;\r\n\r\n this._enableDownloads = enableDownloads;\r\n\r\n this._typeSelectors = document.querySelectorAll('input[name=' + typeSelectorName + ']');\r\n\r\n if (pageSelectorName !== undefined && pageSelectorName !== null && pageSelectorName !== '') {\r\n this._pageSelectors = document.querySelectorAll('input[name=' + pageSelectorName + ']');\r\n this._pageInput = document.getElementById(pageInputId);\r\n this._initPageSelector();\r\n }\r\n\r\n if (this._pageInput) this._pageInput.addEventListener('change', this._parsePageEvent.bind(this), false);\r\n\r\n this._lastPage = this._viewer.totalPagesCount;\r\n\r\n this._alertMsg = document.getElementById('alert-msg');\r\n if (this._alertMsg) this._alertMsg.textContent = '';\r\n\r\n this._dummyElement = document.getElementById(dummyAnchorId);\r\n document.getElementById(downloadButtonId).addEventListener('click', this._download.bind(this), false);\r\n }\r\n\r\n /**\r\n * サブミットイベントのイベントハンドラ。\r\n * 実際にはフォームに送信せずに\r\n * @param {MouseEvent} event マウスイベント。\r\n */\r\n _download(event) {\r\n\r\n try {\r\n const self = this;\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', this._generateUrl(), true);\r\n xhr.responseType = 'blob';\r\n xhr.onload = function (e) {\r\n if (xhr.status === 200) {\r\n const contentType = xhr.getResponseHeader('content-type');\r\n const fileName = contentType === 'application/zip' ? 'download.zip' : 'download.jpg';\r\n console.log(contentType);\r\n self._dummyElement.href = window.URL.createObjectURL(xhr.response);\r\n self._dummyElement.setAttribute('download', fileName);\r\n self._dummyElement.click();\r\n }\r\n else {\r\n self._alertMsg.textContent = 'ダウンロードが無効のページです。';\r\n }\r\n };\r\n\r\n xhr.onerror = function (e) {\r\n self._alertMsg.textContent = 'ダウンロードが無効のページです。';\r\n };\r\n xhr.send();\r\n\r\n this._alertMsg.textContent = '';\r\n }\r\n catch (e) {\r\n this._alertMsg.textContent = e.message;\r\n }\r\n }\r\n\r\n /**\r\n * ダウンロードする画像の種別を取得します。\r\n * @returns {String} ダウンロードする画像の種別。\r\n */\r\n _getDownloadFileType() {\r\n let fileType = '';\r\n for (let i = 0; i < this._typeSelectorsCount; i = i + 1) {\r\n if (this._typeSelectors[i].checked) {\r\n fileType = this._typeSelectors[i].value;\r\n return;\r\n }\r\n }\r\n\r\n return fileType;\r\n }\r\n\r\n /**\r\n * ダウンロードする画像の種別を取得します。\r\n * @returns {String} ダウンロードする画像の種別。\r\n */\r\n _getDownloadFileType() {\r\n\r\n let fileType = 'JPEG';\r\n const selectorsLength = this._typeSelectors.length;\r\n for (let i = 0; i < selectorsLength; i = i + 1) {\r\n if (this._typeSelectors[i].checked) return this._typeSelectors[i].value;\r\n }\r\n\r\n return fileType;\r\n }\r\n\r\n /**\r\n * ダウンロードする画像の種別を取得します。\r\n * @returns {String} ダウンロードする画像の種別。\r\n */\r\n _getPageType() {\r\n\r\n let pageType = 'current-page';\r\n\r\n if (this._pageSelectors === undefined || this._pageSelectors === null) return pageType;\r\n\r\n const selectorsLength = this._pageSelectors.length;\r\n for (let i = 0; i < selectorsLength; i = i + 1) {\r\n if (this._pageSelectors[i].checked) {\r\n return this._pageSelectors[i].value;\r\n }\r\n }\r\n\r\n return pageType;\r\n }\r\n\r\n\r\n /**\r\n * ページ種別セレクターの初期化を行う。\r\n */\r\n _initPageSelector() {\r\n\r\n const selectorsCount = this._pageSelectors.length;\r\n for (let i = 0; i < selectorsCount; i = i + 1) {\r\n let selector = this._pageSelectors[i];\r\n if (selector.value === 'current-page') {\r\n selector.addEventListener('change', function () {\r\n this._pageInput.disabled = true;\r\n }.bind(this));\r\n }\r\n else if (selector.value === 'page-select') {\r\n this._pageInput.disabled = selector.checked === false;\r\n selector.addEventListener('change', function () {\r\n this._pageInput.disabled = false;\r\n }.bind(this));\r\n }\r\n }\r\n }\r\n\r\n _parsePageEvent(event) {\r\n\r\n try {\r\n this._parsePage(event.currentTarget.value);\r\n this._alertMsg.textContent = '';\r\n }\r\n catch (e) {\r\n this._alertMsg.textContent = e.message;\r\n }\r\n }\r\n\r\n /**\r\n * ページ文字列をパースして、ページ番号の配列に変換する。\r\n * @param {String} pageString パースするページ文字列。\r\n * @returns {Array} ページ番号の配列。\r\n */\r\n _parsePage(pageString) {\r\n\r\n\r\n if (!pageString) throw new Error('ページ数が指定されていません');\r\n if (!pageString.match(/^[0-9,--]+$/)) throw new Error('ページの指定が不正です');\r\n\r\n let pages = [];\r\n\r\n const pageList = pageString.split(',');\r\n const pageListCount = pageList.length;\r\n for (let i = 0; i < pageListCount; i = i + 1) {\r\n\r\n let value = pageList[i].replace('-', '-');\r\n if (value.indexOf('-') !== -1) {\r\n // ハイフンあり\r\n let defs = value.split('-');\r\n if (!defs || defs.length !== 2) return;\r\n\r\n let start = parseInt(defs[0]);\r\n let end = parseInt(defs[1]);\r\n\r\n if (start >= end) throw new Error('値が不正です');\r\n\r\n for (let j = start; j <= end; j++) {\r\n if (j < 1 || j > this._viewer.totalPagesCount + 1) throw new Error('指定したページは存在しません。');\r\n if (pages.indexOf(j) === -1 && this._enableDownloads.indexOf(j) !== -1) pages.push(j);\r\n }\r\n }\r\n else {\r\n // ハイフンなしダウンロード\r\n if (value < 1 || value > this._viewer.totalPagesCount + 1) throw new Error('指定したページは存在しません。');\r\n if (pages.indexOf(value) === -1 && this._enableDownloads.indexOf(value) !== -1) pages.push(value);\r\n //if (pages.indexOf(value) === -1 && this._enableDownloads.indexOf(j) !== -1) pages.push(value);\r\n }\r\n }\r\n if (pages.length > 10) throw new Error('ページは10ページまで指定できます。');\r\n this._alertMsg.textContent = '';\r\n\r\n return pages;\r\n }\r\n\r\n /**\r\n * ダウンロードするURLを生成します。\r\n * @returns {String} ダウンロード先のURL。\r\n */\r\n _generateUrl() {\r\n\r\n\r\n let url = this._baseUrl;\r\n\r\n // ダウンロードする画像の種別を取得します。\r\n url += '?format=' + this._getDownloadFileType();\r\n\r\n // ページ番号を取得します。\r\n if (this._getPageType() === 'current-page') {\r\n url += '&p=' + this._viewer.getCurrentPage();\r\n }\r\n else {\r\n const pages = this._parsePage(this._pageInput.value);\r\n for (let i = 0; i < pages.length; i = i + 1) {\r\n let page = pages[i];\r\n url += '&p=' + page;\r\n }\r\n }\r\n\r\n return url;\r\n }\r\n}","\r\nexport default class ViewerQuote {\r\n constructor(viewer, callback) {\r\n /**\r\n * ビューア本体。 \r\n * @type {OpenSeadragon.Viewer}\r\n */\r\n this._viewer = viewer;\r\n\r\n /**\r\n * 登録後に呼び出すコールバック関数。 \r\n * @type {Function}\r\n */\r\n this._callback = callback;\r\n\r\n this._rect = null;\r\n this._selectedSize = null;\r\n\r\n /**\r\n * 画像矩形領域選択クライアント。 \r\n * @type {OpenSeadragon.selection}\r\n */\r\n this._selection = viewer.selection({\r\n showSelectionControl: false,\r\n allowRotation: false,\r\n restrictToImage: true,\r\n showConfirmDenyButtons: false,\r\n styleConfirmDenyButtons: false,\r\n onSelection: this._confirm.bind(this)\r\n });\r\n }\r\n\r\n /**\r\n * 引用領域の指定を確定し、パーマリンクサーバに登録します。\r\n * @param {OpenSeadragon.Rect} rect 引用領域情報。\r\n */\r\n _confirm(rect) {\r\n \r\n this._rect = rect;\r\n this._selectedSize = Math.round(this._selection.element.clientWidth) + ',' + Math.round(this._selection.element.clientHeight);\r\n\r\n const url = this.generateImageUrl();\r\n\r\n this._raiseEvent(url);\r\n this._selection.setState(false);\r\n }\r\n\r\n /**\r\n * 画像IDを取得します。\r\n * @return {String} 画像ID。\r\n */\r\n _getImageUrl() {\r\n return this._viewer.world.getItemAt(0).source['@id'];\r\n }\r\n\r\n /**\r\n * URLのパラメータを生成します。\r\n * @param {String} sizeParam サイズパラメータの文字列。\r\n * @param {Number} rotate 回転角。\r\n * @return {String} パラメータ文字列。\r\n */\r\n _generateParametor(sizeParam, rotate) {\r\n \r\n let param = Math.round(this._rect.x) + ',' + Math.round(this._rect.y) + ',' + Math.round(this._rect.width) + ',' + Math.round(this._rect.height);\r\n param += '/' + sizeParam;\r\n param += '/' + rotate + '/default.jpg';\r\n\r\n return param;\r\n }\r\n\r\n /**\r\n * コールバック関数を実行する。\r\n * @param {Object} eventArgs イベントの引き数。 \r\n */\r\n _raiseEvent(eventArgs) {\r\n if (!document.createEvent) {\r\n const event = new CustomEvent('confirmSelection', { detail: eventArgs });\r\n this._callback.call(this, event);\r\n }\r\n else {\r\n const event = document.createEvent('CustomEvent');\r\n event.initCustomEvent('confirmSelection', false, false, eventArgs);\r\n this._callback.call(this, event);\r\n }\r\n }\r\n\r\n /**\r\n * 引用領域の指定を確定します。\r\n */\r\n confirmSelection() {\r\n 'use strict';\r\n\r\n this._selection.confirm();\r\n }\r\n\r\n /**\r\n * 引用領域の指定をキャンセルします。\r\n */\r\n cancelSelection() {\r\n 'use strict';\r\n\r\n this._selection.cancel();\r\n }\r\n\r\n /**\r\n * 引用領域の指定を開始します。\r\n * @param {Boolean} enabled 設定する状態。\r\n */\r\n setSelectionState(enabled) {\r\n 'use strict';\r\n\r\n if (enabled) {\r\n this._rect = null;\r\n this._selectedSize = null;\r\n }\r\n\r\n this._selection.setState(enabled);\r\n }\r\n\r\n /**\r\n * 現在、矩形領域が指定されているか判定します。\r\n * @return {Boolean} 矩形領域が指定されているかどうか。\r\n */\r\n isDrawing() {\r\n 'use strict';\r\n\r\n return this.rect !== null;\r\n }\r\n\r\n /**\r\n * パーマネントサーバに登録するURLを取得します。\r\n * @param {Number} [size] 登録する画像の長辺の長さ。未指定の場合は矩形領域のサイズを指定する。\r\n * @return {String} url\r\n */\r\n generateImageUrl(size) {\r\n 'use strict';\r\n\r\n const url = this._getImageUrl();\r\n const sizeParam = size === undefined || size === null ? this._selectedSize : '!' + size + ',' + size;\r\n\r\n let degrees = this._viewer.viewport.getRotation() % 360;\r\n if (degrees < 0) degrees += 360;\r\n\r\n return url + '/' + this._generateParametor(sizeParam, degrees);\r\n }\r\n\r\n /**\r\n * 選択した領域のサイズを取得します。。\r\n * @return {OpenSeadragon.Point} 選択した領域のサイズ。\r\n */\r\n getSelectionSize() {\r\n 'use strict';\r\n\r\n const size = this._selectedSize.split(',');\r\n const width = parseInt(size[0]);\r\n const height = parseInt(size[1]);\r\n\r\n return new OpenSeadragon.Point(width, height);\r\n }\r\n}","export default class ViewerDialog {\r\n constructor(dialogId, showOverlay, overlayClickToClose, closeButtonId) {\r\n this._dialog = document.getElementById(dialogId);\r\n this._button = document.querySelector('*[aria-controls=' + dialogId + ']');\r\n\r\n if (showOverlay === true || showOverlay === null || showOverlay === undefined) {\r\n this._overlay = document.createElement('div');\r\n this._overlay.classList.add('dialog-overlay');\r\n this._overlay.setAttribute('aria-hidden', 'true');\r\n document.body.insertBefore(this._overlay, this._dialog.parent);\r\n\r\n if (overlayClickToClose === true || overlayClickToClose === null || overlayClickToClose === undefined) {\r\n this._overlay.addEventListener('click', this.close.bind(this), false);\r\n }\r\n }\r\n\r\n const buttonId = closeButtonId || null;\r\n if (buttonId !== null) {\r\n const closeButton = document.getElementById(buttonId);\r\n closeButton.addEventListener('click', this.close.bind(this), false);\r\n }\r\n }\r\n\r\n /**\r\n * ダイアログを表示します。\r\n */\r\n open() {\r\n\r\n if (this._dialog.getAttribute('aria-hidden') === 'false') return;\r\n\r\n this._dialog.setAttribute('aria-hidden', 'false');\r\n\r\n if (this._overlay !== null && this._overlay !== undefined) {\r\n this._overlay.setAttribute('aria-hidden', 'false');\r\n }\r\n\r\n if (this._button !== null && this._button !== undefined) {\r\n this._button.setAttribute('aria-expanded', 'true');\r\n }\r\n }\r\n\r\n /**\r\n * ダイアログを閉じます。\r\n */\r\n close() {\r\n\r\n if (this._dialog.getAttribute('aria-hidden') === 'true') return;\r\n\r\n this._dialog.setAttribute('aria-hidden', 'true');\r\n\r\n if (this._overlay !== null && this._overlay !== undefined) {\r\n this._overlay.setAttribute('aria-hidden', 'true');\r\n }\r\n\r\n if (this._button !== null && this._button !== undefined) {\r\n this._button.setAttribute('aria-expanded', 'false');\r\n }\r\n }\r\n\r\n /**\r\n * ダイアログの表示を切り替えます。 \r\n */\r\n toggle() {\r\n\r\n if (this._dialog.getAttribute('aria-hidden') === 'false') {\r\n this.close();\r\n }\r\n else {\r\n this.open();\r\n }\r\n }\r\n}","export default class ViewerElementResizer {\r\n constructor(id, resizerId) {\r\n this._element = document.getElementById(id);\r\n this._resizer = document.getElementById(resizerId);\r\n\r\n this._resizeHandler = this._resizing.bind(this);\r\n this._stopResizeHandler = this._stopResize.bind(this);\r\n\r\n this._resizer.addEventListener('mousedown', this._initResize.bind(this));\r\n this._resizer.addEventListener('touchstart', this._initResize.bind(this));\r\n }\r\n\r\n /**\r\n * タブを切り替えます。\r\n * @param {MouseEvent} event イベント。\r\n */\r\n _initResize(event) {\r\n event.preventDefault();\r\n\r\n window.addEventListener('mousemove', this._resizeHandler, false);\r\n window.addEventListener('touchmove', this._resizeHandler, false);\r\n window.addEventListener('mouseup', this._stopResizeHandler, false);\r\n window.addEventListener('touchend', this._stopResizeHandler, false);\r\n }\r\n\r\n /**\r\n * タブを切り替えます。\r\n * @param {MouseEvent} event イベント。\r\n */\r\n _resizing(event) {\r\n event.preventDefault();\r\n\r\n const e = event.type === \"mousemove\" ? event : event.changedTouches[0];\r\n\r\n window.document.body.style.cursor = 'ew-resize';\r\n this._element.style.width = e.clientX - this._element.offsetLeft + 'px';\r\n }\r\n\r\n /**\r\n * タブを切り替えます。\r\n * @param {MouseEvent} event イベント。\r\n */\r\n _stopResize(event) {\r\n window.document.body.style.cursor = '';\r\n window.removeEventListener('mousemove', this._resizeHandler);\r\n window.removeEventListener('touchmove', this._resizeHandler);\r\n window.removeEventListener('mouseup', this._stopResizeHandler);\r\n window.removeEventListener('touchend', this._stopResizeHandler);\r\n }\r\n}","import _userAgent from './useragent';\r\n\r\nexport default class ViewerSlider {\r\n constructor(id, changeCallback, defaultValue, valueLabelId) {\r\n this._slider = document.getElementById(id);\r\n\r\n // input(type=range)要素の値が変更された際のイベントはieの場合のみchangeイベントである。\r\n const sliderEventName = _userAgent === 'ie' ? 'change' : 'input';\r\n\r\n // 変更イベントの登録。\r\n this._slider.addEventListener(sliderEventName, changeCallback, false);\r\n\r\n // ラベルのIdは初期値が指定されていない場合はdata-value-label属性から取得する。\r\n const labelId = valueLabelId || this._slider.dataset.valueLabel;\r\n this._label = labelId !== null && labelId !== undefined ? document.getElementById(labelId) : null;\r\n if (this._label !== null) this._slider.addEventListener(sliderEventName, this._setValueLabel.bind(this), false);\r\n\r\n // 初期値が指定されていない場合は現時点でのスライダーの値を初期値にする。\r\n this._initialValue = defaultValue || this._slider.value;\r\n this.reset();\r\n }\r\n\r\n /**\r\n * スライダーの値を表示します。\r\n */\r\n _setValueLabel() {\r\n this._label.textContent = this._slider.value;\r\n }\r\n\r\n _triggerEvent(event) {\r\n\r\n if (document.createEvent) {\r\n const evt = document.createEvent('HTMLEvents');\r\n evt.initEvent(event, true, true);\r\n return this._slider.dispatchEvent(evt);\r\n }\r\n else {\r\n const evt = document.createEveneObject();\r\n return this._slider.fireEvent('on' + event, evt);\r\n }\r\n }\r\n\r\n /**\r\n * スライダーの現在値を取得します。\r\n * @return {String} スライダーの現在値。\r\n */\r\n getValue() {\r\n return this._slider.value;\r\n }\r\n\r\n /**\r\n * スライダーの値を変更します。\r\n * @param {String} value 変更するスライダーの値。\r\n */\r\n setValue(value) {\r\n\r\n if (this.getValue() === value) return;\r\n\r\n this._slider.value = value;\r\n if (this._label !== null) this._setValueLabel();\r\n\r\n const sliderEventName = _userAgent === 'ie' ? 'change' : 'input';\r\n this._triggerEvent(sliderEventName);\r\n }\r\n\r\n /**\r\n * スライダーの値を初期値に戻します。 \r\n */\r\n reset() {\r\n\r\n if (this.getValue() === this._initialValue) return;\r\n\r\n this._slider.value = this._initialValue;\r\n if (this._label !== null) this._setValueLabel();\r\n\r\n const sliderEventName = _userAgent === 'ie' ? 'change' : 'input';\r\n this._triggerEvent(sliderEventName);\r\n }\r\n\r\n //#endregion\r\n}","export default class ViewerTabHelper {\r\n constructor(element) {\r\n const self = this;\r\n\r\n element.addEventListener('wheel', this._mouseWheelEventHandler.bind(this), false);\r\n\r\n this._tabList = element.querySelectorAll('[role=\"tab\"]');\r\n\r\n this._tabPanelList = new Array();\r\n Array.prototype.forEach.call(this._tabList, function (tab) {\r\n tab.addEventListener('click', self._changeTab.bind(self), false);\r\n tab.addEventListener('mouseover', self._mouseOverEvent.bind(self), false);\r\n tab.addEventListener('mouseout', self._mouseOutEvent.bind(self), false);\r\n\r\n const tabPanel = document.getElementById(tab.getAttribute('aria-controls'));\r\n self._tabPanelList.push(tabPanel);\r\n });\r\n\r\n this._dragFlag = false;\r\n }\r\n\r\n /**\r\n * タブを切り替えます。\r\n * @param {MouseEvent} event イベント。\r\n */\r\n _changeTab(event) {\r\n const targetTab = event.currentTarget;\r\n\r\n const self = this;\r\n Array.prototype.forEach.call(this._tabList, function (tab) {\r\n const isSelected = tab === targetTab;\r\n const tabLength = self._tabPanelList.length;\r\n let tabPanel;\r\n for (let i = 0; i < tabLength; i++) {\r\n const panel = self._tabPanelList[i];\r\n if (panel.id === tab.getAttribute('aria-controls')) {\r\n tabPanel = panel;\r\n break;\r\n }\r\n }\r\n\r\n tab.setAttribute('aria-selected', isSelected);\r\n tabPanel.setAttribute('aria-hidden', !isSelected);\r\n });\r\n }\r\n\r\n /**\r\n * マウスホイールイベントのイベントハンドラ。\r\n * @param {WheelEvent} event マウスホイールイベント。\r\n */\r\n _mouseWheelEventHandler(event) {\r\n\r\n const target = event.currentTarget;\r\n\r\n // deltaYが0でない場合(=上下のスクロール)の場合は横スクロールに置き換える。\r\n if (event.deltaY !== 0) {\r\n event.preventDefault();\r\n\r\n const deltaY = event.deltaY > 0 ? 1 : -1;\r\n const scrollVal = target.dataset.pageDirection === 'rtl' ? -1 * deltaY * 128 : deltaY * 128;\r\n\r\n if (HTMLUListElement.prototype.scrollBy) {\r\n target.scrollBy({\r\n top: 0,\r\n left: scrollVal,\r\n behavior: 'auto',\r\n });\r\n }\r\n else {\r\n target.scrollLeft = target.scrollLeft - scrollVal;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * ボタンがマウスオーバーされた時のイベント。\r\n * hoverクラスの付与と(あれば)ツールチップの表示を行う。\r\n * @param {MouseEvent} event MouseEvent\r\n */\r\n _mouseOverEvent(event) {\r\n\r\n const element = event.currentTarget;\r\n element.classList.add('hover');\r\n }\r\n\r\n /**\r\n * ボタンがマウスオーバーされた時のイベント。\r\n * hoverクラスの除去と(あれば)ツールチップを非表示にする。\r\n * @param {MouseEvent} event MouseEvent\r\n */\r\n _mouseOutEvent(event) {\r\n\r\n const element = event.currentTarget;\r\n\r\n // hoverクラスの削除。\r\n element.classList.remove('hover');\r\n element.blur();\r\n }\r\n\r\n /**\r\n * 先頭のタブに遷移します。 \r\n */\r\n getCurrentTab() {\r\n let currentTab;\r\n Array.prototype.forEach.call(this._tabList, function (tab) {\r\n if (tab.getAttribute('aria-selected') === 'true') {\r\n currentTab = tab;\r\n return;\r\n };\r\n });\r\n return currentTab;\r\n }\r\n\r\n /**\r\n * 先頭のタブに遷移します。 \r\n */\r\n goToFirst() {\r\n this._tabList[0].click();\r\n }\r\n}","export default class ViewerThumbList {\r\n constructor(id, direction) {\r\n const self = this;\r\n\r\n this._list = document.getElementById(id);\r\n this._direction = direction;\r\n\r\n this._list.addEventListener('mouseover', this._mouseOverEventHandler, false);\r\n this._list.addEventListener('mouseout', this._mouseOutEventHandler, false);\r\n if (this._direction === 'row') this._list.addEventListener('wheel', this._mouseWheelEventHandler, false);\r\n\r\n this._thumbList = this._list.children;\r\n Array.prototype.forEach.call(this._thumbList, function (thumb) {\r\n thumb.addEventListener('click', self._clickThumbEventHandler.bind(self), false);\r\n });\r\n }\r\n\r\n /**\r\n * マウスオーバー時のイベントハンドラ。\r\n * 要素にフォーカスを当てます。\r\n * @param {MouseEvent} event マウスイベント。\r\n */\r\n _mouseOverEventHandler(event) {\r\n event.currentTarget.focus();\r\n }\r\n\r\n /**\r\n * マウスアウト時のイベントハンドラ。\r\n * 要素からフォーカスを外します。\r\n * @param {MouseEvent} event マウスイベント。\r\n */\r\n _mouseOutEventHandler(event) {\r\n event.currentTarget.blur();\r\n }\r\n\r\n /**\r\n * マウスホイールイベントのイベントハンドラ。\r\n * @param {WheelEvent} event マウスホイールイベント。\r\n */\r\n _mouseWheelEventHandler(event) {\r\n\r\n const target = event.currentTarget;\r\n\r\n // deltaYが0でない場合(=上下のスクロール)の場合は横スクロールに置き換える。\r\n if (event.deltaY !== 0) {\r\n event.preventDefault();\r\n\r\n const deltaY = event.deltaY > 0 ? 1 : -1;\r\n const scrollVal = target.dataset.pageDirection === 'rtl' ? -1 * deltaY * 128 : deltaY * 128;\r\n\r\n if (HTMLUListElement.prototype.scrollBy) {\r\n target.scrollBy({\r\n top: 0,\r\n left: scrollVal,\r\n behavior: 'auto',\r\n });\r\n }\r\n else {\r\n target.scrollLeft = target.scrollLeft - scrollVal;\r\n }\r\n }\r\n }\r\n\r\n _clickThumbEventHandler(event) {\r\n\r\n const target = event.currentTarget;\r\n const self = this;\r\n Array.prototype.forEach.call(this._thumbList, function (thumb) {\r\n if (target === thumb) {\r\n thumb.classList.add('selected');\r\n self.scrollIntoView(thumb);\r\n }\r\n else {\r\n thumb.classList.remove('selected');\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * サムネイルの状態を変更します。\r\n * @param {Number} page ページ番号。\r\n */\r\n changePage(page) {\r\n\r\n const self = this;\r\n Array.prototype.forEach.call(this._thumbList, function (thumb) {\r\n const thumbPage = parseInt(thumb.dataset.pageNumber);\r\n\r\n if (page === thumbPage) {\r\n thumb.classList.add('selected');\r\n self.scrollIntoView(thumb);\r\n }\r\n else {\r\n thumb.classList.remove('selected');\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * 指定された要素の位置までスクロールします。\r\n * @param {HTMLElement} element エレメント\r\n */\r\n scrollIntoView(element) {\r\n\r\n const clientRect = element.getBoundingClientRect();\r\n const parentRect = this._list.getBoundingClientRect();\r\n\r\n if (this._direction === 'column') {\r\n const scrollTop = clientRect.top - parentRect.top - 10;\r\n if (HTMLUListElement.prototype.scrollBy) {\r\n this._list.scrollBy({\r\n top: scrollTop,\r\n left: 0,\r\n behavior: 'smooth',\r\n });\r\n }\r\n else {\r\n this._list.scrollTop = this._list.scrollTop - scrollTop;\r\n }\r\n }\r\n else {\r\n const scrollLeft = clientRect.left - parentRect.left - (parentRect.width / 2) + (clientRect.width / 2);\r\n if (HTMLUListElement.prototype.scrollBy) {\r\n this._list.scrollBy({\r\n top: 0,\r\n left: scrollLeft,\r\n behavior: 'smooth',\r\n });\r\n }\r\n else {\r\n this._list.scrollLeft = this._list.scrollLeft - scrollLeft;\r\n }\r\n }\r\n }\r\n}","export default class ViewerWatermark {\r\n constructor(viewer, watermarkUrl, position, dispPages) {\r\n /**\r\n * ウォーターマークを描画するビューア\r\n * @private\r\n * @type {OpenSeadragon.viewer} \r\n */\r\n this._viewer = viewer;\r\n\r\n /**\r\n * デバイスのピクセルレシオ。\r\n * @type {Number}\r\n */\r\n this._pixelRatio = window.devicePixelRatio > 1 ? window.devicePixelRatio : 1;\r\n\r\n /**\r\n * ウォーターマークを描画する位置。\r\n * @type {Number}\r\n */\r\n this._position = position;\r\n\r\n /**\r\n * ウォーターマークを描画するページ定義 \r\n * @type {Array}\r\n */\r\n this._dispPages = dispPages;\r\n\r\n /**\r\n * ウォーターマークを描画イベントハンドラ。 \r\n * @type {function}\r\n */\r\n this._drawWatermarkHandler = this._drawWatermark.bind(this);\r\n\r\n /**\r\n * ウォーターマーク画像。 \r\n * @type {Image}\r\n */\r\n this._watermark = new Image();\r\n this._watermark.onload = function() {\r\n this._viewer.addHandler('update-viewport', this._drawWatermarkHandler);\r\n this._wmWidth = this._watermark.width * this._pixelRatio;\r\n this._wmHeight = this._watermark.height * this._pixelRatio;\r\n }.bind(this);\r\n this._watermark.src = watermarkUrl;\r\n }\r\n\r\n /**\r\n * ウォーターマークを描画する。\r\n * @function IRIArchives._drawWatermark\r\n * @private\r\n */\r\n _drawWatermark() {\r\n\r\n var currentPage = parseInt(this._viewer.currentPage()) + 1;\r\n\r\n // 現在のページが表示するページリストに含まれていない場合は抜ける。\r\n if (!this.canDrawWatermark()) return;\r\n\r\n // 画像のサイズを取得する。\r\n var imageSize = this._viewer.source.dimensions;\r\n\r\n // 回転角を取得する。\r\n var rotate = this._viewer.viewport.getRotation();\r\n\r\n // 画像の貼り付け領域を取得する。\r\n var imageCorners = this._detectCorners(imageSize);\r\n\r\n // ウォーターマークのサイズを計算する。\r\n var wmSize = this._detectWMSize(imageCorners, rotate);\r\n\r\n // ウォーターマークサイズから貼り付け位置を補正する。\r\n imageCorners.positionCorrection(wmSize);\r\n\r\n // ウォーターマークの貼り付け位置を取得する。\r\n var point = this._calcWmCoordinates(imageCorners, wmSize, rotate);\r\n\r\n // canvasにウオーターマーク画像を張り付ける。\r\n this._viewer.drawer.context.drawImage(this._watermark, point.x, point.y, wmSize.x, wmSize.y);\r\n }\r\n\r\n /**\r\n * ウォーターマーク貼り付け可能領域を判定する。\r\n * @function IRIArchives._detectCorners\r\n * @private\r\n * @param {OpenSeadragon.Point} imageSize 画像のサイズ(pixel)。\r\n * @return {IRIArchives.RectCorners} 貼り付け可能領域。\r\n */\r\n _detectCorners(imageSize) {\r\n // ビューアにおける画像の四隅の座標を取得する。\r\n var topLeft = this._viewer.world.getItemAt(0).imageToViewerElementCoordinates(new OpenSeadragon.Point(0, 0)).times(this._pixelRatio);\r\n var topRight = this._viewer.world.getItemAt(0).imageToViewerElementCoordinates(new OpenSeadragon.Point(imageSize.x, 0)).times(this._pixelRatio);\r\n var bottomLeft = this._viewer.world.getItemAt(0).imageToViewerElementCoordinates(new OpenSeadragon.Point(0, imageSize.y)).times(this._pixelRatio);\r\n var bottomRight = this._viewer.world.getItemAt(0).imageToViewerElementCoordinates(imageSize).times(this._pixelRatio);\r\n\r\n var viewerElem = this._viewer.element;\r\n return new ViewerWatermarkRect(topLeft, topRight, bottomRight, bottomLeft, 0, viewerElem.clientWidth * this._pixelRatio, 0, viewerElem.clientHeight * this._pixelRatio);\r\n }\r\n\r\n /**\r\n * ウォーターマークのサイズを求める。\r\n * @function IRIArchives._detectWMSize\r\n * @private\r\n * @param {IRIArchives.RectCorners} imageCorners 画像のサイズ(pixel)。\r\n * @param {Number} degrees 回転角(degree)。\r\n * @return {OpenSeadragon.Point} ウォーターマークのサイズ。\r\n */\r\n _detectWMSize(imageCorners, degrees) {\r\n // ウォーターマーク表示可能サイズを求める。\r\n var dispRegionWidth = imageCorners.getWidth(degrees);\r\n var dispRegionHeight = imageCorners.getHeight(degrees);\r\n\r\n // 表示可能領域がビューアの端にかかっていない場合は表示可能領域を0.8倍にする。\r\n if (imageCorners.getLeft(degrees) !== 0 && imageCorners.getRight(degrees) !== this._viewer.element.clientWidth * this._pixelRatio) dispRegionWidth = dispRegionWidth * 0.8;\r\n if (imageCorners.getTop(degrees) !== 0 && imageCorners.getBottom(degrees) !== this._viewer.element.clientHeight * this._pixelRatio) dispRegionHeight = dispRegionHeight * 0.8;\r\n\r\n // ウォーターマークの大きさ。\r\n var wmSize = new OpenSeadragon.Point(this._wmWidth, this._wmHeight);\r\n var wmAspectRatio = this._wmWidth / this._wmHeight;\r\n\r\n // ウォーターマークの大きさがビューポートの1/3以上の場合は縮小を行う。\r\n var oneThirdWidth = this._viewer.element.clientWidth * this._pixelRatio * 0.33;\r\n if (this._wmWidth > oneThirdWidth) {\r\n wmSize.x = oneThirdWidth;\r\n wmSize.y = wmSize.x / wmAspectRatio;\r\n }\r\n\r\n var oneThirdHeight = this._viewer.element.clientHeight * this._pixelRatio * 0.33;\r\n if (wmSize.y > oneThirdHeight) {\r\n wmSize.y = oneThirdHeight;\r\n wmSize.x = wmSize.y * wmAspectRatio;\r\n }\r\n\r\n // ウォーターマークの大きさが表示可能領域より小さい場合は縮小を行う。\r\n if (wmSize.x > dispRegionWidth) {\r\n wmSize.x = dispRegionWidth;\r\n wmSize.y = wmSize.x / wmAspectRatio;\r\n }\r\n\r\n if (wmSize.y > dispRegionHeight) {\r\n wmSize.y = dispRegionHeight;\r\n wmSize.x = wmSize.y * wmAspectRatio;\r\n }\r\n\r\n return wmSize;\r\n }\r\n\r\n /**\r\n * ウォーターマークの座標を求める。\r\n * @function IRIArchives._calcWmCoordinates\r\n * @private\r\n * @param {WatermarkRect} imageCorners 画像のサイズ(pixel)。\r\n * @param {OpenSeadragon.Point} wmSize ウォーターマークのサイズ。\r\n * @param {Number} degrees 回転角(degree)。\r\n * @return {OpenSeadragon.Point} ウォーターマークの座標。\r\n */\r\n _calcWmCoordinates(imageCorners, wmSize, degrees) {\r\n\r\n var coordinates = new OpenSeadragon.Point();\r\n\r\n //ウォーターマークの貼り付け座標は左上の座標が基準なので、\r\n //ウォーターマークの貼り付け位置が右もしくは下に位置している場合はウォーターマークのサイズを考慮する。\r\n switch (this._position) {\r\n case positionDef.TopLeft:\r\n coordinates.x = imageCorners.getTopLeft(degrees).x;\r\n coordinates.y = imageCorners.getTopLeft(degrees).y;\r\n break;\r\n\r\n case positionDef.TopRight:\r\n coordinates.x = imageCorners.getTopRight(degrees).x - wmSize.x;\r\n coordinates.y = imageCorners.getTopRight(degrees).y;\r\n break;\r\n\r\n case positionDef.BottomRight:\r\n coordinates.x = imageCorners.getBottomRight(degrees).x - wmSize.x;\r\n coordinates.y = imageCorners.getBottomRight(degrees).y - wmSize.y;\r\n break;\r\n\r\n case positionDef.BottomLeft:\r\n coordinates.x = imageCorners.getBottomLeft(degrees).x;\r\n coordinates.y = imageCorners.getBottomLeft(degrees).y - wmSize.y;\r\n break;\r\n }\r\n\r\n if (coordinates.x < 0) coordinates.x = 0;\r\n if (coordinates.x + wmSize.x > this._viewer.element.clientWidth * this._pixelRatio) coordinates.x = this._viewer.element.clientWidth * this._pixelRatio - wmSize.x;\r\n\r\n if (coordinates.y < 0) coordinates.y = 0;\r\n if (coordinates.y + wmSize.y > this._viewer.element.clientHeight * this._pixelRatio) coordinates.y = this._viewer.element.clientHeight * this._pixelRatio - wmSize.y;\r\n\r\n return coordinates;\r\n }\r\n\r\n\r\n /**\r\n * ウォーターマークが描写できるか判定する。\r\n * @returns {Boolean} ウォーターマークの可否。\r\n */\r\n canDrawWatermark() {\r\n\r\n if (!this._dispPages) return true;\r\n\r\n var currentPage = parseInt(this._viewer.currentPage()) + 1;\r\n return this._dispPages.indexOf(currentPage) !== -1;\r\n }\r\n\r\n /**\r\n * ウォーターマークを破棄します。\r\n */\r\n destroy() {\r\n\r\n this._viewer.removeHandler('update-viewport', this._drawWatermarkHandler);\r\n\r\n this._viewer = null;\r\n this._pixelRatio = null;\r\n\r\n this._position = null;\r\n this._dispPages = null;\r\n\r\n this._watermark = null;\r\n\r\n this._wmWidth = null;\r\n this._wmHeight = null;\r\n\r\n this._drawWatermarkHandler = null;\r\n }\r\n}\r\n\r\n\r\nclass ViewerWatermarkRect {\r\n constructor(topLeft, topRight, bottomRight, bottomLeft, minX, maxX, minY, maxY) {\r\n this.topLeft = this._normalize(topLeft, minX, maxX, minY, maxY);\r\n this.topRight = this._normalize(topRight, minX, maxX, minY, maxY);\r\n this.bottomRight = this._normalize(bottomRight, minX, maxX, minY, maxY);\r\n this.bottomLeft = this._normalize(bottomLeft, minX, maxX, minY, maxY);\r\n\r\n this._pixelRatio = window.devicePixelRatio;\r\n }\r\n\r\n /**\r\n * 幅を取得する。\r\n * @function IRIArchives.RectCorners.prototype.getWidth\r\n * @param {Number} degrees 現在の角度(degree)。\r\n * @returns {Number} 幅(pixel)。\r\n */\r\n getWidth(degrees) {\r\n if (degrees >= 0 && degrees < 90) return this.topRight.x - this.bottomLeft.x;\r\n if (degrees >= 90 && degrees < 180) return this.topLeft.x - this.bottomRight.x;\r\n if (degrees >= 180 && degrees < 270) return this.bottomLeft.x - this.topRight.x;\r\n if (degrees >= 270 && degrees < 360) return this.bottomRight.x - this.topLeft.x;\r\n\r\n return this.getWidth(degrees - 360);\r\n }\r\n\r\n /**\r\n * 高さを取得する。\r\n * @function IRIArchives.RectCorners.prototype.getHeight\r\n * @param {Number} degrees 現在の角度(degree)。\r\n * @returns {Number} 高さ(pixel)。\r\n */\r\n getHeight(degrees) {\r\n if (degrees >= 0 && degrees < 90) return this.bottomRight.y - this.topLeft.y;\r\n if (degrees >= 90 && degrees < 180) return this.topRight.y - this.bottomLeft.y;\r\n if (degrees >= 180 && degrees < 270) return this.topLeft.y - this.bottomRight.y;\r\n if (degrees >= 270 && degrees < 360) return this.bottomLeft.y - this.topRight.y;\r\n\r\n return this.getHeight(degrees - 360);\r\n }\r\n\r\n /**\r\n * 上底のY座標を取得する。\r\n * @function IRIArchives.RectCorners.prototype.getTop\r\n * @param {Number} degrees 現在の角度(degree)。\r\n * @returns {Number} 上底のY座標(pixel)。\r\n */\r\n getTop(degrees) {\r\n if (degrees >= 0 && degrees < 90) return this.topLeft.y;\r\n if (degrees >= 90 && degrees < 180) return this.bottomLeft.y;\r\n if (degrees >= 180 && degrees < 270) return this.bottomRight.y;\r\n if (degrees >= 270 && degrees < 360) return this.topRight.y;\r\n\r\n return this.getTop(degrees - 360);\r\n }\r\n\r\n /**\r\n * 右端のX座標を取得する。\r\n * @function IRIArchives.RectCorners.prototype.getRight\r\n * @param {Number} degrees 現在の角度(degree)。\r\n * @returns {Number} 右端のX座標(pixel)。\r\n */\r\n getRight(degrees) {\r\n if (degrees >= 0 && degrees < 90) return this.topRight.x;\r\n if (degrees >= 90 && degrees < 180) return this.topLeft.x;\r\n if (degrees >= 180 && degrees < 270) return this.bottomLeft.x;\r\n if (degrees >= 270 && degrees < 360) return this.bottomRight.x;\r\n\r\n return this.getRight(degrees - 360);\r\n }\r\n\r\n /**\r\n * 下底のY座標を取得する。\r\n * @function IRIArchives.RectCorners.prototype.getBottom\r\n * @param {Number} degrees 現在の角度(degree)。\r\n * @returns {Number} 下底のY座標(pixel)。\r\n */\r\n getBottom(degrees) {\r\n if (degrees >= 0 && degrees < 90) return this.bottomRight.y;\r\n if (degrees >= 90 && degrees < 180) return this.topRight.y;\r\n if (degrees >= 180 && degrees < 270) return this.topLeft.y;\r\n if (degrees >= 270 && degrees < 360) return this.bottomLeft.y;\r\n\r\n return this.getTop(degrees - 360);\r\n }\r\n\r\n /**\r\n * 左端のX座標を取得する。\r\n * @function IRIArchives.RectCorners.prototype.getLeft\r\n * @param {Number} degrees 現在の角度(degree)。\r\n * @returns {Number} 左端のX座標(pixel)。\r\n */\r\n getLeft(degrees) {\r\n if (degrees >= 0 && degrees < 90) return this.bottomLeft.x;\r\n if (degrees >= 90 && degrees < 180) return this.bottomRight.x;\r\n if (degrees >= 180 && degrees < 270) return this.topRight.x;\r\n if (degrees >= 270 && degrees < 360) return this.topLeft.x;\r\n\r\n return this.getLeft(degrees - 360);\r\n }\r\n\r\n /**\r\n * 回転後の左上の頂点の座標を取得する。\r\n * @function IRIArchives.RectCorners.prototype.getTopLeft\r\n * @param {Number} degrees 現在の角度(degree)。\r\n * @returns {OpenSeadragon.Point} 頂点の座標。\r\n */\r\n getTopLeft(degrees) {\r\n if (degrees >= 45 && degrees < 135) return this.bottomLeft;\r\n if (degrees >= 135 && degrees < 225) return this.bottomRight;\r\n if (degrees >= 225 && degrees < 315) return this.topRight;\r\n\r\n return this.topLeft;\r\n }\r\n\r\n /**\r\n * 回転後の左下の頂点の座標を取得する。\r\n * @function IRIArchives.RectCorners.prototype.getBottomLeft\r\n * @param {Number} degrees 現在の角度(degree)。\r\n * @returns {OpenSeadragon.Point} 頂点の座標。\r\n */\r\n getBottomLeft(degrees) {\r\n if (degrees >= 45 && degrees < 135) return this.bottomRight;\r\n if (degrees >= 135 && degrees < 225) return this.topRight;\r\n if (degrees >= 225 && degrees < 315) return this.topLeft;\r\n\r\n return this.bottomLeft;\r\n }\r\n\r\n /**\r\n * 回転後の右下の頂点の座標を取得する。\r\n * @function IRIArchives.RectCorners.prototype.getBottomRight\r\n * @param {Number} degrees 現在の角度(degree)。\r\n * @returns {OpenSeadragon.Point} 頂点の座標。\r\n */\r\n getBottomRight(degrees) {\r\n if (degrees >= 45 && degrees < 135) return this.topRight;\r\n if (degrees >= 135 && degrees < 225) return this.topLeft;\r\n if (degrees >= 225 && degrees < 315) return this.bottomLeft;\r\n\r\n return this.bottomRight;\r\n }\r\n\r\n /**\r\n * 回転後の右上の頂点の座標を取得する。\r\n * @function IRIArchives.RectCorners.prototype.getTopRigth\r\n * @param {Number} degrees 現在の角度(degree)。\r\n * @returns {OpenSeadragon.Point} 頂点の座標。\r\n */\r\n getTopRight(degrees) {\r\n if (degrees >= 45 && degrees < 135) return this.topLeft;\r\n if (degrees >= 135 && degrees < 225) return this.bottomLeft;\r\n if (degrees >= 225 && degrees < 315) return this.bottomRight;\r\n\r\n return this.topRight;\r\n }\r\n\r\n /**\r\n * 位置の補正を行う。\r\n * @function IRIArchives.RectCorners.prototype.positionCorrection\r\n * @param {OpenSeadragon.Point} correctionValue 補正値。\r\n */\r\n positionCorrection(correctionValue) {\r\n var correctedX = this.maxX;\r\n var correctedY = this.maxY;\r\n\r\n this.topLeft = this._normalize(this.topLeft, 0, correctedX, 0, correctedY);\r\n this.topRight = this._normalize(this.topRight, 0, correctedX, 0, correctedY);\r\n this.bottomRight = this._normalize(this.bottomRight, 0, correctedX, 0, correctedY);\r\n this.bottomLeft = this._normalize(this.bottomLeft, 0, correctedX, 0, correctedY);\r\n }\r\n\r\n /**\r\n * 座標を補正して、閾値を超えないようにする。\r\n * @private\r\n * @function IRIArchives.RectCorners.prototype._normalize\r\n * @param {OpenSeadragon.Point} corner 補正する座標。\r\n * @param {Number} minX X座標の最小値。\r\n * @param {Number} maxX X座標の最大値。\r\n * @param {Number} minY Y座標の最小値。\r\n * @param {Number} maxY Y座標の最大値。\r\n * @returns {OpenSeadragon.Point} 補正後の値。\r\n */\r\n _normalize(corner, minX, maxX, minY, maxY) {\r\n\r\n if (corner.x < minX) {\r\n corner.x = minX;\r\n }\r\n else if (corner.x > maxX) {\r\n corner.x = maxX;\r\n }\r\n\r\n if (corner.y < minY) {\r\n corner.y = minY;\r\n }\r\n else if (corner.y > maxY) {\r\n corner.y = maxY;\r\n }\r\n\r\n return corner;\r\n }\r\n}\r\n\r\nconst positionDef = {\r\n /** @member {Number} */\r\n /** 左上 */\r\n TopLeft: 0,\r\n /** @member {Number} */\r\n /** 右上 */\r\n TopRight: 1,\r\n /** @member {Number} */\r\n /** 右下 */\r\n BottomRight: 2,\r\n /** @member {Number} */\r\n /** 左下 */\r\n BottomLeft: 3\r\n};\r\n","/*!\n * Lazy Load - jQuery plugin for lazy loading images\n *\n * Copyright (c) 2007-2015 Mika Tuupola\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n * Project home:\n * http://www.appelsiini.net/projects/lazyload\n *\n * Version: 1.9.7\n *\n */\n\n(function($, window, document, undefined) {\n var $window = $(window);\n\n $.fn.lazyload = function(options) {\n var elements = this;\n var $container;\n var settings = {\n threshold : 0,\n failure_limit : 0,\n event : \"scroll\",\n effect : \"show\",\n container : window,\n data_attribute : \"original\",\n skip_invisible : false,\n appear : null,\n load : null,\n placeholder : \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC\"\n };\n\n function update() {\n var counter = 0;\n\n elements.each(function() {\n var $this = $(this);\n if (settings.skip_invisible && !$this.is(\":visible\")) {\n return;\n }\n if ($.abovethetop(this, settings) ||\n $.leftofbegin(this, settings)) {\n /* Nothing. */\n } else if (!$.belowthefold(this, settings) &&\n !$.rightoffold(this, settings)) {\n $this.trigger(\"appear\");\n /* if we found an image we'll load, reset the counter */\n counter = 0;\n } else {\n if (++counter > settings.failure_limit) {\n return false;\n }\n }\n });\n\n }\n\n if(options) {\n /* Maintain BC for a couple of versions. */\n if (undefined !== options.failurelimit) {\n options.failure_limit = options.failurelimit;\n delete options.failurelimit;\n }\n if (undefined !== options.effectspeed) {\n options.effect_speed = options.effectspeed;\n delete options.effectspeed;\n }\n\n $.extend(settings, options);\n }\n\n /* Cache container as jQuery as object. */\n $container = (settings.container === undefined ||\n settings.container === window) ? $window : $(settings.container);\n\n /* Fire one scroll event per scroll. Not one scroll event per image. */\n if (0 === settings.event.indexOf(\"scroll\")) {\n $container.bind(settings.event, function() {\n return update();\n });\n }\n\n this.each(function() {\n var self = this;\n var $self = $(self);\n\n self.loaded = false;\n\n /* If no src attribute given use data:uri. */\n if ($self.attr(\"src\") === undefined || $self.attr(\"src\") === false) {\n if ($self.is(\"img\")) {\n $self.attr(\"src\", settings.placeholder);\n }\n }\n\n /* When appear is triggered load original image. */\n $self.one(\"appear\", function() {\n if (!this.loaded) {\n if (settings.appear) {\n var elements_left = elements.length;\n settings.appear.call(self, elements_left, settings);\n }\n $(\"\")\n .bind(\"load\", function() {\n\n var original = $self.attr(\"data-\" + settings.data_attribute);\n $self.hide();\n if ($self.is(\"img\")) {\n $self.attr(\"src\", original);\n } else {\n $self.css(\"background-image\", \"url('\" + original + \"')\");\n }\n $self[settings.effect](settings.effect_speed);\n\n self.loaded = true;\n\n /* Remove image from array so it is not looped next time. */\n var temp = $.grep(elements, function(element) {\n return !element.loaded;\n });\n elements = $(temp);\n\n if (settings.load) {\n var elements_left = elements.length;\n settings.load.call(self, elements_left, settings);\n }\n })\n .attr(\"src\", $self.attr(\"data-\" + settings.data_attribute));\n }\n });\n\n /* When wanted event is triggered load original image */\n /* by triggering appear. */\n if (0 !== settings.event.indexOf(\"scroll\")) {\n $self.bind(settings.event, function() {\n if (!self.loaded) {\n $self.trigger(\"appear\");\n }\n });\n }\n });\n\n /* Check if something appears when window is resized. */\n $window.bind(\"resize\", function() {\n update();\n });\n\n /* With IOS5 force loading images when navigating with back button. */\n /* Non optimal workaround. */\n if ((/(?:iphone|ipod|ipad).*os 5/gi).test(navigator.appVersion)) {\n $window.bind(\"pageshow\", function(event) {\n if (event.originalEvent && event.originalEvent.persisted) {\n elements.each(function() {\n $(this).trigger(\"appear\");\n });\n }\n });\n }\n\n /* Force initial check if images should appear. */\n $(document).ready(function() {\n update();\n });\n\n return this;\n };\n\n /* Convenience methods in jQuery namespace. */\n /* Use as $.belowthefold(element, {threshold : 100, container : window}) */\n\n $.belowthefold = function(element, settings) {\n var fold;\n\n if (settings.container === undefined || settings.container === window) {\n fold = (window.innerHeight ? window.innerHeight : $window.height()) + $window.scrollTop();\n } else {\n fold = $(settings.container).offset().top + $(settings.container).height();\n }\n\n return fold <= $(element).offset().top - settings.threshold;\n };\n\n $.rightoffold = function(element, settings) {\n var fold;\n\n if (settings.container === undefined || settings.container === window) {\n fold = $window.width() + $window.scrollLeft();\n } else {\n fold = $(settings.container).offset().left + $(settings.container).width();\n }\n\n return fold <= $(element).offset().left - settings.threshold;\n };\n\n $.abovethetop = function(element, settings) {\n var fold;\n\n if (settings.container === undefined || settings.container === window) {\n fold = $window.scrollTop();\n } else {\n fold = $(settings.container).offset().top;\n }\n\n return fold >= $(element).offset().top + settings.threshold + $(element).height();\n };\n\n $.leftofbegin = function(element, settings) {\n var fold;\n\n if (settings.container === undefined || settings.container === window) {\n fold = $window.scrollLeft();\n } else {\n fold = $(settings.container).offset().left;\n }\n\n return fold >= $(element).offset().left + settings.threshold + $(element).width();\n };\n\n $.inviewport = function(element, settings) {\n return !$.rightoffold(element, settings) && !$.leftofbegin(element, settings) &&\n !$.belowthefold(element, settings) && !$.abovethetop(element, settings);\n };\n\n /* Custom selectors for your convenience. */\n /* Use as $(\"img:below-the-fold\").something() or */\n /* $(\"img\").filter(\":below-the-fold\").something() which is faster */\n\n $.extend($.expr[\":\"], {\n \"below-the-fold\" : function(a) { return $.belowthefold(a, {threshold : 0}); },\n \"above-the-top\" : function(a) { return !$.belowthefold(a, {threshold : 0}); },\n \"right-of-screen\": function(a) { return $.rightoffold(a, {threshold : 0}); },\n \"left-of-screen\" : function(a) { return !$.rightoffold(a, {threshold : 0}); },\n \"in-viewport\" : function(a) { return $.inviewport(a, {threshold : 0}); },\n /* Maintain BC for couple of versions. */\n \"above-the-fold\" : function(a) { return !$.belowthefold(a, {threshold : 0}); },\n \"right-of-fold\" : function(a) { return $.rightoffold(a, {threshold : 0}); },\n \"left-of-fold\" : function(a) { return !$.rightoffold(a, {threshold : 0}); }\n });\n\n})(jQuery, window, document);\n","module.exports = jQuery;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import ViewerCore from './lib/viewer-core';\r\nimport Downloader from './lib/viewer-downloader';\r\nimport ElemResizer from './lib/viewer-ui-element-resizer';\r\nimport Slider from './lib/viewer-ui-slider';\r\nimport TabHelper from './lib/viewer-ui-tab-helper';\r\nimport ThumbList from './lib/viewer-ui-thumblist';\r\nimport Dialog from './lib/viewer-ui-dialog';\r\nimport _userAgent from './lib/useragent';\r\nimport $ from 'jquery';\r\nimport 'jquery-lazyload';\r\n\r\nclass RoDAViewer {\r\n constructor(args) {\r\n\r\n var self = this;\r\n\r\n this._viewer = new ViewerCore(args.mainViewerId, JSON.parse(args.tileSources), args.initialPage, args.watermarkUrl, args.watermarkPosition, this._confirmSelection.bind(this), 'spinner-overlay');\r\n\r\n // yama追記:ダウンロード可能な時のみparse\r\n this._enableDownloads = (args.enableDownloads !== '') ? JSON.parse(args.enableDownloads) : null;\r\n\r\n document.addEventListener('resize', () => {\r\n setTimeout(this._viewer.mainViewer.raiseEvent('resize'), 500);\r\n }); \r\n\r\n //#region 画像フィルター系\r\n\r\n if (_userAgent !== 'ie') {\r\n\r\n this._timer = null;\r\n this._filters = [\r\n {\r\n filterName: 'brightness',\r\n min: -255,\r\n max: 255,\r\n defaultValue: 0,\r\n step: 1,\r\n isSlider: true,\r\n isAdd () {\r\n const value = parseFloat(document.getElementById('brightness-slider').value);\r\n return value !== this.defaultValue;\r\n },\r\n processor () {\r\n const value = parseFloat(document.getElementById('brightness-slider').value);\r\n return OpenSeadragon.Filters.BRIGHTNESS(value);\r\n }\r\n },\r\n {\r\n filterName: 'saturation',\r\n min: -100,\r\n max: 100,\r\n defaultValue: 0,\r\n step: 1,\r\n isSlider: true,\r\n isAdd () {\r\n const value = parseFloat(document.getElementById('saturation-slider').value);\r\n return value !== this.defaultValue;\r\n },\r\n processor () {\r\n const value = parseFloat(document.getElementById('saturation-slider').value);\r\n return self._saturationFilter(value);\r\n }\r\n },\r\n {\r\n filterName: 'contrast',\r\n min: -100,\r\n max: 100,\r\n defaultValue: 0,\r\n step: 1,\r\n isSlider: true,\r\n isAdd () {\r\n const value = parseFloat(document.getElementById('contrast-slider').value);\r\n return value !== this.defaultValue;\r\n },\r\n processor () {\r\n const value = parseFloat(document.getElementById('contrast-slider').value);\r\n return self._contrastFilter(value);\r\n }\r\n },\r\n {\r\n filterName: 'gamma',\r\n min: 0,\r\n max: 5,\r\n defaultValue: 1,\r\n step: 0.1,\r\n isSlider: true,\r\n isAdd () {\r\n const value = parseFloat(document.getElementById('gamma-slider').value);\r\n return value !== this.defaultValue;\r\n },\r\n processor () {\r\n const value = parseFloat(document.getElementById('gamma-slider').value);\r\n return OpenSeadragon.Filters.GAMMA(value);\r\n }\r\n },\r\n {\r\n filterName: 'greyscale',\r\n isSlider: false,\r\n isAdd () {\r\n return document.querySelector('.filter-button[data-effect-type=greyscale]').getAttribute('aria-pressed') === 'true';\r\n },\r\n processor () {\r\n return OpenSeadragon.Filters.GREYSCALE();\r\n }\r\n },\r\n {\r\n filterName: 'invert',\r\n isSlider: false,\r\n isAdd () {\r\n return document.querySelector('.filter-button[data-effect-type=invert]').getAttribute('aria-pressed') === 'true';\r\n },\r\n processor () {\r\n return OpenSeadragon.Filters.INVERT();\r\n }\r\n }\r\n ];\r\n\r\n this._createFilterSliders();\r\n }\r\n else {\r\n const filterItem = document.getElementsByClassName('image-filter');\r\n for (let i = 0; i < filterItem.length; i++) {\r\n filterItem[i].style.display = 'none';\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region ボタン初期化\r\n\r\n const buttonList = document.getElementsByTagName('button');\r\n for (let i = 0; i < buttonList.length; i++) {\r\n const button = buttonList[i];\r\n\r\n if (button.getAttribute('data-viewer-command')) {\r\n this._registClickEventForHasCommand(button);\r\n }\r\n else if (button.getAttribute('aria-expanded')) {\r\n this._registClickEventForHasExpanded(button);\r\n }\r\n\r\n this._registMouseEventForButton(button);\r\n }\r\n\r\n const tabList = document.querySelectorAll('[role=\"tablist\"]');\r\n for (let i = 0; i < tabList.length; i++) {\r\n const tab = tabList[i];\r\n\r\n if (tab.classList.contains('filter-list')) {\r\n this._filterTab = new TabHelper(tab);\r\n }\r\n else {\r\n new TabHelper(tab);\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region ページ系初期化\r\n\r\n // コンテンツが複数ページを有する場合のイベントハンドラの登録\r\n if (this._viewer.totalPagesCount > 1) this._initPaging();\r\n\r\n //#endregion\r\n\r\n //#region 回転系の初期化\r\n\r\n this._rotateSlider = new Slider('rotate-slider', this._setRotation.bind(this));\r\n this._viewer.addEventListener('changeRotate', this._setRotationInfo.bind(this));\r\n\r\n //#endregion\r\n\r\n //#region フルスクリーン機能の初期化\r\n\r\n document.addEventListener(\"webkitfullscreenchange\", this._changeFullscreenEventHandler.bind(this), false);\r\n document.addEventListener(\"mozfullscreenchange\", this._changeFullscreenEventHandler.bind(this), false);\r\n document.addEventListener(\"MSFullscreenChange\", this._changeFullscreenEventHandler.bind(this), false);\r\n document.addEventListener(\"fullscreenchange\", this._changeFullscreenEventHandler.bind(this), false);\r\n\r\n //#endregion\r\n\r\n //#region UI系の初期化\r\n\r\n this._isUILock = false;\r\n this._beforeNavigatorState = false;\r\n\r\n this._hideStart = setTimeout(this._hideUI.bind(this), 3000);\r\n\r\n this._viewer.mainViewer.addHandler('canvas-click', this._toggleUI.bind(this));\r\n\r\n const uiElements = document.querySelectorAll('[data-auto-hide]');\r\n const uiLength = uiElements.length;\r\n for (let i = 0; i < uiLength; i = i + 1) {\r\n const uiElem = uiElements[i];\r\n\r\n uiElem.addEventListener('mouseover', this._mouseOverEvent.bind(this), false);\r\n uiElem.addEventListener('mouseout', this._mouseOutEvent.bind(this), false);\r\n }\r\n\r\n //#endregion\r\n }\r\n\r\n //#region 各種初期化系\r\n\r\n _initPaging() {\r\n\r\n this._pageInfoForms = document.getElementsByClassName('current-page-number');\r\n const changeEventName = _userAgent !== 'ie' ? 'change' : 'mouseup';\r\n\r\n for (let i = 0; i < this._pageInfoForms.length; i++) {\r\n const pageForm = this._pageInfoForms[i];\r\n pageForm.addEventListener(changeEventName, this._directPageInput.bind(this), false);\r\n if (_userAgent === 'ie') {\r\n pageForm.addEventListener('blur', this._directPageInput.bind(this), false);\r\n pageForm.addEventListener('keyup', this._directPageInput.bind(this), false);\r\n }\r\n }\r\n\r\n // ページが変更された場合のイベントを登録する。\r\n this._viewer.addEventListener('changePage', this._changePageEventHandler.bind(this));\r\n\r\n //#region サムネイル系初期化\r\n\r\n this._sidebarThumbList = new ThumbList('sidebar-thumbnail-list-inner', 'column');\r\n this._bottomThumbList = new ThumbList('bottom-thumbnail-list-inner', 'row');\r\n\r\n const thumbnailList = document.getElementsByClassName('thumb');\r\n for (let k = 0; k < thumbnailList.length; k++) {\r\n const thumb = thumbnailList[k];\r\n\r\n this._registClickEventForHasCommand(thumb);\r\n this._registMouseEventForButton(thumb);\r\n\r\n thumb.addEventListener('click', this._sidebarContentClick, false);\r\n }\r\n\r\n new ElemResizer('sidebar', 'sidebar-resizer');\r\n\r\n $('.bottom-lazy').lazyload({\r\n container: $('#bottom-thumbnail-list-inner'),\r\n effect: 'fadeIn',\r\n failure_limit: 1000,\r\n skip_invisible: true,\r\n threshold: 300\r\n //load: function (e) {\r\n // $(this).css('visibility', 'visible');\r\n // $(this).next('svg').remove();\r\n //}\r\n });\r\n\r\n $('.side-lazy').lazyload({\r\n container: $('#sidebar-thumbnail-list-inner'),\r\n effect: 'fadeIn',\r\n failure_limit: 1000,\r\n skip_invisible: true,\r\n threshold: 300\r\n //load: function (e) {\r\n // $(this).css('visibility','visible');\r\n // $(this).next('svg').remove();\r\n //}\r\n });\r\n //lazyload();\r\n\r\n //#endregion\r\n }\r\n\r\n//#endregion\r\n\r\n//#region ボタン関係\r\n\r\n/**\r\n * コマンドを実行するイベントハンドラを登録します。\r\n * @param {HTMLElement} button ボタン要素\r\n */\r\n _registClickEventForHasCommand(button) {\r\n 'use strict';\r\n\r\n switch (button.dataset.viewerCommand) {\r\n\r\n case 'goPrevPage':\r\n button.addEventListener('click', this.goPrevPage.bind(this), false);\r\n break;\r\n\r\n case 'goNextPage':\r\n button.addEventListener('click', this.goNextPage.bind(this), false);\r\n break;\r\n\r\n case 'setPage':\r\n const page = parseInt(button.dataset.viewerCommandArg);\r\n button.addEventListener('click', this._viewer.goToPage.bind(this._viewer, page, true), false);\r\n break;\r\n\r\n case 'zoomOut':\r\n button.addEventListener('click', this._viewer.zoomTo.bind(this._viewer, 0.5), false);\r\n break;\r\n\r\n case 'zoomIn':\r\n button.addEventListener('click', this._viewer.zoomTo.bind(this._viewer, 2.0), false);\r\n break;\r\n\r\n case 'fitHome':\r\n button.addEventListener('click', this._viewer.goHome.bind(this._viewer, false), false);\r\n break;\r\n\r\n case 'fitVertical':\r\n button.addEventListener('click', this._viewer.fitVertically.bind(this._viewer), false);\r\n break;\r\n\r\n case 'fitHorizontal':\r\n button.addEventListener('click', this._viewer.fitHorizontally.bind(this._viewer), false);\r\n break;\r\n\r\n case 'rotate':\r\n button.addEventListener('click', this._setRotate.bind(this), false);\r\n break;\r\n\r\n case 'setRotate':\r\n const degrees = parseInt(button.dataset.viewerCommandArg);\r\n button.addEventListener('click', this._viewer.setRotation.bind(this._viewer, degrees, true), false);\r\n break;\r\n\r\n case 'toggleNavigator':\r\n button.addEventListener('click', this._toggleNavigator.bind(this), false);\r\n break;\r\n\r\n case 'toggleFullscreen':\r\n var enableFullscreen = document.fullscreenEnabled || document.msFullscreenEnabled || document.mozFullScreenEnabled || document.webkitFullscreenEnabled;\r\n if (enableFullscreen) {\r\n this._fullScreenButton = button;\r\n button.addEventListener('click', this.toggleFullscreen.bind(this), false);\r\n }\r\n else {\r\n\r\n //if (button.parent.getElementsByClassName == 'bottom-command-item') {\r\n var parent = button.parentElement;\r\n if (parent.tagName === 'LI') {\r\n parent.style.display = 'none'; // フルスクリーンに対応していない場合は親要素を非表示に\r\n } else {\r\n button.style.display = 'none'; // フルスクリーンに対応していない場合は親要素を非表示に\r\n }\r\n\r\n button.setAttribute('aria-hidden', 'true');\r\n }\r\n break;\r\n\r\n case 'openInfoDialog':\r\n this._infoDialog = new Dialog('info-dialog', true, true, 'info-close-button');\r\n button.addEventListener('click', this._infoDialog.open.bind(this._infoDialog), false);\r\n break;\r\n\r\n case 'openDownloadDialog':\r\n this._initDownload(button);\r\n break;\r\n\r\n case 'openQuoteDialog':\r\n this._initQuote(button);\r\n break;\r\n\r\n case 'effect':\r\n button.addEventListener('click', this.imageAdjustment.bind(this), false);\r\n break;\r\n\r\n case 'effect-reset':\r\n button.addEventListener('click', this._resetFilters.bind(this), false);\r\n break;\r\n\r\n default:\r\n }\r\n\r\n if (button.dataset.clickToClose === 'true') {\r\n button.addEventListener('click', this._closeMenuDialog.bind(this), false);\r\n }\r\n }\r\n\r\n/**\r\n * 要素の開閉を行うイベントハンドラを登録します。\r\n * @param {HTMLButtonElement} button ボタン要素\r\n */\r\n _registClickEventForHasExpanded(button) {\r\n 'use strict';\r\n\r\n button.addEventListener('click', this._clickEventForHasExpanded.bind(this), false);\r\n }\r\n\r\n/**\r\n * タブの切り替えを行うイベントハンドラを登録します。\r\n * @param {HTMLButtonElement} button ボタン要素\r\n */\r\n _registClickEventForTab(button) {\r\n 'use strict';\r\n\r\n button.addEventListener('click', this.toggleTab.bind(this), false);\r\n }\r\n\r\n/**\r\n * ボタンに対するマウス操作のイベントハンドラを登録します。\r\n * @param {HTMLElement} button ボタン要素\r\n */\r\n _registMouseEventForButton(button) {\r\n 'use strict';\r\n\r\n if (_userAgent !== 'ios' && _userAgent !== 'android') button.addEventListener('focus', this._mouseOverEvent.bind(this), false);\r\n button.addEventListener('blur', this._mouseOutEvent.bind(this), false);\r\n button.addEventListener('touchend', this._mouseOutEvent.bind(this), false);\r\n button.addEventListener('mouseover', this._mouseOverEvent.bind(this), false);\r\n button.addEventListener('mouseout', this._mouseOutEvent.bind(this), false);\r\n button.addEventListener('mouseup', this._mouseOutEvent.bind(this), false);\r\n }\r\n\r\n/**\r\n * ボタンがマウスオーバーされた時のイベント。\r\n * hoverクラスの付与と(あれば)ツールチップの表示を行う。\r\n * @param {MouseEvent} event MouseEvent\r\n */\r\n _mouseOverEvent(event) {\r\n 'use strict';\r\n\r\n const element = event.currentTarget;\r\n\r\n if (this._isUILock) return;\r\n\r\n // hoverクラスの付与。\r\n element.classList.add('hover');\r\n\r\n if (element.tagName.toLowerCase() !== 'button') return;\r\n\r\n // ツールチップの表示\r\n // 端末のOSがiOSとandroidの場合はツールチップを表示せずに抜ける。\r\n if (_userAgent === 'ios' || _userAgent === 'android') return;\r\n\r\n const tooltipId = element.dataset.tooltipId;\r\n if (!tooltipId) return;\r\n\r\n const tooltip = document.getElementById(tooltipId);\r\n if (!tooltip) return;\r\n\r\n tooltip.setAttribute('aria-hidden', 'false');\r\n\r\n const viewerElem = this._viewer.mainViewer.element.getBoundingClientRect();\r\n const targetRect = element.getBoundingClientRect();\r\n const tooltipRect = tooltip.getBoundingClientRect();\r\n\r\n const rectX = targetRect.x - viewerElem.x;\r\n const rectY = targetRect.y - viewerElem.y;\r\n const tpX = tooltipRect.x - viewerElem.x;\r\n const tpY = tooltipRect.y - viewerElem.y;\r\n\r\n const rect = new DOMRect(rectX, rectY, targetRect.width, targetRect.height);\r\n const tpRect = new DOMRect(tpX, tpY, tooltipRect.width, tooltipRect.height);\r\n\r\n tooltip.style.top = '';\r\n tooltip.style.bottom = '';\r\n tooltip.style.left = '';\r\n tooltip.style.right = '';\r\n\r\n const elemCenter = rect.left + (rect.width / 2);\r\n const tpLeft = elemCenter - (tpRect.width / 2);\r\n\r\n if (rect.left === 0) {\r\n tooltip.style.left = 0;\r\n } else if (viewerElem.width < tpLeft + tpRect.width) {\r\n tooltip.style.right = 0;\r\n } else {\r\n tooltip.style.left = tpLeft + 'px';\r\n }\r\n\r\n if (rect.y + rect.height > viewerElem.height / 2) {\r\n tooltip.style.top = rect.top - tpRect.height + 'px';\r\n }\r\n else {\r\n tooltip.style.top = rect.top + rect.height + 'px';\r\n }\r\n }\r\n\r\n/**\r\n * ボタンがマウスオーバーされた時のイベント。\r\n * hoverクラスの除去と(あれば)ツールチップを非表示にする。\r\n * @param {MouseEvent} event MouseEvent\r\n */\r\n _mouseOutEvent(event) {\r\n 'use strict';\r\n\r\n const element = event.currentTarget;\r\n\r\n // hoverクラスの削除。\r\n element.classList.remove('hover');\r\n element.blur();\r\n\r\n // ツールチップの表示\r\n // 端末のOSがiOSとandroidの場合はツールチップを表示せずに抜ける。\r\n if (_userAgent === 'ios' || _userAgent === 'android') return;\r\n\r\n // ツールチップのIDを取得。\r\n const tooltipId = element.dataset.tooltipId;\r\n if (!tooltipId) return;\r\n\r\n // ツールチップ要素を取得。\r\n const tooltip = document.getElementById(tooltipId);\r\n if (!tooltip) return;\r\n\r\n // 200ms後にツールチップを表示する。\r\n if (this._tooltipTimer !== null) window.clearTimeout(this._tooltipTimer);\r\n this._tooltipTimer = null;\r\n tooltip.setAttribute('aria-hidden', 'true');\r\n }\r\n\r\n/**\r\n * 要素の開閉を行うボタンをクリックした際のイベント。\r\n * @param {MouseEvent} event イベント。\r\n */\r\n _clickEventForHasExpanded(event) {\r\n 'use strict';\r\n\r\n const element = event.currentTarget;\r\n const isExpanded = element.getAttribute('aria-expanded') === 'true';\r\n const ctrlElemId = element.getAttribute('aria-controls');\r\n\r\n element.setAttribute('aria-expanded', !isExpanded);\r\n document.getElementById(ctrlElemId).setAttribute('aria-hidden', isExpanded);\r\n\r\n const toggleButtonId = element.dataset.toggleButtonId;\r\n if (toggleButtonId) {\r\n const toggleButton = document.getElementById(toggleButtonId);\r\n if (toggleButton && toggleButton.getAttribute('aria-expanded') === 'true') {\r\n const tCtrlElemId = toggleButton.getAttribute('aria-controls');\r\n if (tCtrlElemId) {\r\n const tCtrlElem = document.getElementById(tCtrlElemId);\r\n if (tCtrlElem) {\r\n toggleButton.setAttribute('aria-expanded', 'false');\r\n tCtrlElem.setAttribute('aria-hidden', 'true');\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (element.dataset.closed) {\r\n const closeElem = document.getElementById(element.dataset.closed);\r\n if (closeElem) {\r\n closeElem.setAttribute('aria-expanded', 'false');\r\n document.getElementById(closeElem.getAttribute('aria-controls')).setAttribute('aria-hidden', 'true');\r\n }\r\n }\r\n\r\n if (ctrlElemId === 'sidebar') {\r\n document.querySelector('.toolbar').classList.toggle('show-sidebar');\r\n document.getElementById('viewer-container').classList.toggle('show-sidebar');\r\n document.getElementById('bottom-toolbar').classList.toggle('show-sidebar');\r\n\r\n const overlay = document.getElementById('sidebar-overlay');\r\n overlay.setAttribute('aria-hidden', isExpanded);\r\n\r\n if (isExpanded) {\r\n if (this._sidebarFunc !== null && this._sidebarFunc !== undefined) {\r\n overlay.removeEventListener('click', this._sidebarFunc);\r\n this._sidebarFunc = null;\r\n }\r\n }\r\n else {\r\n this._sidebarFunc = this._elementClickTrigger.bind(this, element);\r\n overlay.addEventListener('click', this._sidebarFunc, false);\r\n }\r\n }\r\n\r\n if (this._hideStart) clearTimeout(this._hideStart);\r\n\r\n // ツールチップのIDを取得。\r\n const tooltipId = element.dataset.tooltip;\r\n if (!tooltipId) return;\r\n\r\n // ツールチップ要素を取得。\r\n const tooltip = document.getElementById(tooltipId);\r\n if (!tooltip) return;\r\n\r\n const msg = isExpanded ? tooltip.dataset.notExpandedMsg : tooltip.dataset.expandedMsg;\r\n if (!msg) return;\r\n\r\n tooltip.textContent = msg;\r\n }\r\n\r\n _elementClickTrigger(element) {\r\n 'use strict';\r\n\r\n element.click();\r\n }\r\n\r\n//#endregion\r\n\r\n//#region ページ関係\r\n\r\n/**\r\n * ページを直接入力した際のイベントハンドラ。\r\n * @param {Event} event イベント。\r\n */\r\n _directPageInput(event) {\r\n\r\n // イベント種別がキーアップの場合はEnter以外は反応しない。\r\n if (event.type === 'keyup' && event.keyCode !== 13) return;\r\n\r\n const pageNum = parseInt(event.target.value);\r\n if (isNaN(pageNum) || pageNum < 1 || pageNum > this._viewer.totalPages) {\r\n // 入力されたページ番号が不正であった場合は現在のページ番号をセットする。\r\n event.target.value = this._viewer.getCurrentPage();\r\n }\r\n else if (pageNum !== this._viewer.getCurrentPage()) {\r\n try {\r\n this._viewer.goToPage(pageNum, true);\r\n }\r\n catch (e) {\r\n // 入力されたページ番号が不正であった場合は現在のページ番号をセットする。\r\n event.currentTarget.value = this._viewer.getCurrentPage();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * ページが変更された際のイベントハンドラ。\r\n * ページ番号の補正、スライダー位置の補正等を行う。\r\n * \r\n */\r\n _changePageEventHandler(event) {\r\n\r\n const currentPage = event.detail.page;\r\n const hasNextPage = event.detail.existNextPage;\r\n\r\n // 最初のページである場合に前のページへ移動するボタンを無効化する。\r\n // 最初のページでない場合は逆に有効化を行う。\r\n const prevPages = document.getElementsByClassName('prev-page');\r\n const prevCount = prevPages.length;\r\n for (let i = 0; i < prevCount; i = i + 1) {\r\n prevPages[i].disabled = currentPage === 1;\r\n }\r\n\r\n // 最後のページである場合に後ろのページへ移動するボタンを無効化する。\r\n // 最後のページでない場合は逆に有効化を行う。\r\n const nextPages = document.getElementsByClassName('next-page');\r\n const nextCount = nextPages.length;\r\n for (let i = 0; i < nextCount; i = i + 1) {\r\n nextPages[i].disabled = !hasNextPage;\r\n }\r\n\r\n // サムネイルリストのページを変更する。\r\n this._sidebarThumbList.changePage(currentPage);\r\n this._bottomThumbList.changePage(currentPage);\r\n\r\n // フォームの設定を行う。\r\n for (let j = 0; j < this._pageInfoForms.length; j = j + 1) {\r\n const form = this._pageInfoForms[j];\r\n if (parseInt(form.value) !== currentPage) form.value = currentPage;\r\n }\r\n }\r\n\r\n/**\r\n* ページ番号を変更したURLを生成する。\r\n* @param {Number} page ページ番号\r\n* @return {string} URL。\r\n*/\r\n _generateUrl(page) {\r\n if (!location.href.match(/[?&]p=\\d{1,}/)) {\r\n if (!location.search) {\r\n return location.href + '?p=' + page;\r\n }\r\n else {\r\n return location.href + '&p=' + page;\r\n }\r\n }\r\n\r\n return location.href.replace(/[?&]p=\\d{1,}/, function (match) {\r\n return match.charAt(0) + 'p=' + page;\r\n });\r\n }\r\n\r\n//#endregion\r\n\r\n//#region サムネイルリスト関係\r\n\r\n _sidebarContentClick() {\r\n 'use strict';\r\n\r\n const isMobile = window.getComputedStyle(document.getElementById('sidebar-overlay'), '').visibility === 'visible';\r\n if (isMobile) document.getElementById('sidebar-toggle-button').click();\r\n }\r\n\r\n//#endregion\r\n\r\n//#region 回転系\r\n\r\n/**\r\n * 画像角度回転ボタンが押された際のイベントハンドラ。\r\n * ボタンのdata-viewer-command-arg属性の値だけ回転させる。\r\n * @param {MouseEvent} event マウスイベント\r\n */\r\n _setRotate(event) {\r\n 'use strict';\r\n\r\n const offset = parseInt(event.currentTarget.dataset.viewerCommandArg);\r\n const degrees = (offset + this._viewer.getRotation() + 360) % 360;\r\n\r\n this.setImageRotation(degrees, true);\r\n }\r\n\r\n/**\r\n * 画像角度回転スライダーの値が変更された際のイベントハンドラ。\r\n * 画像の角度をinput要素のvalueに変更する。\r\n * @param {Event} event inputイベント。\r\n */\r\n _setRotation(event) {\r\n 'use strict';\r\n\r\n if (event.type !== 'input' && event.type !== 'change') return;\r\n\r\n const degrees = parseInt(event.target.value);\r\n this.setImageRotation(degrees, false);\r\n }\r\n\r\n/**\r\n * 画像角度が変更された際のイベントハンドラ。\r\n * 画像角度回転スライダーの値を画像角度と一致させる。\r\n * @param {CustomEvent} event イベント。\r\n */\r\n _setRotationInfo(event) {\r\n 'use strict';\r\n\r\n // OpenSeadragonでは角度は0~360だが、スライダー上では-180~180であるので、変換を行う。\r\n const degrees = event.detail.degrees > 180 ? event.detail.degrees - 360 : event.detail.degrees;\r\n this._rotateSlider.setValue(degrees);\r\n }\r\n\r\n//#endregion\r\n\r\n//#region メニュー系\r\n\r\n/**\r\n * メニューダイアログを閉じるイベント。\r\n * @param {MouseEvent} event マウスイベント\r\n */\r\n _closeMenuDialog(event) {\r\n 'use strict';\r\n\r\n const button = document.querySelector('button[aria-controls=\"toolbar-menu\"]');\r\n button.setAttribute('aria-expanded', 'false');\r\n\r\n document.getElementById('toolbar-menu').setAttribute('aria-hidden', 'true');\r\n }\r\n\r\n//#endregion\r\n\r\n//#region 引用系\r\n\r\n/**\r\n * 引用の初期化を行います。\r\n * @param {HTMLButtonElement} button ボタン要素\r\n */\r\n _initQuote(button) {\r\n this._quoteAboutDialog = new Dialog('quote-about-dialog', true, true, 'quote-about-button');\r\n this._quoteDialog = new Dialog('quote-command', false, false);\r\n this._quotePreviewDialog = new Dialog('quote-preview-dialog', true, false, '');\r\n this._quoteResultDialog = new Dialog('quote-result-dialog', true, false, 'quote-close-button');\r\n\r\n button.addEventListener('click', this._quoteAboutDialog.open.bind(this._quoteAboutDialog), false);\r\n\r\n const startButton = document.getElementById('quote-about-button');\r\n startButton.addEventListener('click', this._startSelection.bind(this), false);\r\n\r\n document.getElementById('quote-confirm-button').addEventListener('click', this._viewer.confirmSelection.bind(this._viewer), false);\r\n document.getElementById('quote-redo-button').addEventListener('click', this._redoSelection.bind(this), false);\r\n document.getElementById('quote-cancel-button').addEventListener('click', this._endSelection.bind(this), false);\r\n\r\n document.getElementById('quote-regist-button').addEventListener('click', this._registQuoteUrl.bind(this), false);\r\n document.getElementById('quote-preview-cancel-button').addEventListener('click', this._redoSelection.bind(this), false);\r\n }\r\n\r\n/**\r\n* 引用を開始します。\r\n*/\r\n _startSelection() {\r\n\r\n this._hideUI();\r\n this._isUILock = true;\r\n\r\n this._quoteDialog.open();\r\n this._viewer.setSelectionState(true);\r\n }\r\n\r\n/**\r\n * 引用を中止します。\r\n */\r\n _endSelection() {\r\n\r\n this._isUILock = false;\r\n\r\n this._quoteDialog.close();\r\n this._viewer.setSelectionState(false);\r\n }\r\n\r\n/**\r\n * 引用をやり直します。\r\n */\r\n _redoSelection() {\r\n this._quoteDialog.open();\r\n this._quotePreviewDialog.close();\r\n\r\n this._viewer.cancelSelection();\r\n }\r\n\r\n /**\r\n * 引用が確定した際のイベントハンドラ。\r\n * @param {Event} event イベント\r\n */\r\n _confirmSelection(event) {\r\n this._quoteDialog.close();\r\n this._showQuote(event.detail);\r\n //this._showQuotePreview(event.detail);\r\n }\r\n\r\n /**\r\n * URLを登録して、結果を表示します。\r\n * @param {string} url url\r\n */\r\n _showQuote(url) {\r\n const self = this;\r\n\r\n this._quotePreviewDialog.close();\r\n this._viewer.showLoadAnimation();\r\n\r\n const image = document.getElementById('quote-result');\r\n image.src = url;\r\n image.onload = function () {\r\n self._viewer.hiddenLoadAnimation();\r\n self._quoteResultDialog.open();\r\n document.getElementById('image-url').textContent = url;\r\n document.getElementById('image-tag').textContent = `\"${document.getElementById('image-title').value}\"`;\r\n };\r\n image.onerror = function () {\r\n self._viewer.hiddenLoadAnimation();\r\n alert('画像の取得に失敗しました');\r\n };\r\n \r\n this._isUILock = false;\r\n }\r\n\r\n /**\r\n * プレビューを表示します。\r\n * @param {String} url 登録するURL。\r\n */\r\n _showQuotePreview(url) {\r\n const quoteSize = this._viewer.getSelectedRectSize();\r\n document.getElementById('quote-size').textContent = quoteSize.x + '×' + quoteSize.y;\r\n\r\n const preview = document.getElementById('quote-preview');\r\n preview.src = preview.dataset.src;\r\n\r\n console.log(url);\r\n this._quotePreviewDialog.open();\r\n this._imageUrl = url;\r\n\r\n const xhr = new XMLHttpRequest();\r\n xhr.open('GET', url, true);\r\n xhr.responseType = 'blob';\r\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\r\n xhr.onloadend = function(e) {\r\n if (xhr.status === 200) {\r\n const reader = new FileReader();\r\n reader.onloadend =function() {\r\n preview.src = reader.result;\r\n };\r\n reader.readAsDataURL(xhr.response);\r\n }\r\n else {\r\n alert('画像の取得に失敗しました。');\r\n }\r\n }.bind(this);\r\n xhr.send();\r\n }\r\n\r\n /**\r\n * URLを登録して、結果を表示します。\r\n */\r\n _registQuoteUrl() {\r\n const self = this;\r\n\r\n this._quotePreviewDialog.close();\r\n this._viewer.showLoadAnimation();\r\n\r\n const image = document.getElementById('quote-result');\r\n image.onload = function() {\r\n self._viewer.hiddenLoadAnimation();\r\n self._quoteResultDialog.open();\r\n };\r\n image.onerror = function () {\r\n self._viewer.hiddenLoadAnimation();\r\n alert('画像の取得に失敗しました');\r\n };\r\n\r\n const permalinkUrl = document.getElementById('quote_url').value;\r\n\r\n const formData = new FormData();\r\n formData.append('url', this._imageUrl);\r\n\r\n const xhrObject = new XMLHttpRequest();\r\n xhrObject.open('POST', permalinkUrl, true);\r\n xhrObject.responseType = 'json';\r\n xhrObject.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\r\n xhrObject.onloadend = function (e) {\r\n self._isUILock = false;\r\n const url = xhrObject.response.permalink;\r\n\r\n image.src = url;\r\n document.getElementById('image-url').textContent = url;\r\n document.getElementById('image-tag').textContent = ``;\r\n console.log(``);\r\n };\r\n \r\n xhrObject.send(formData);\r\n }\r\n\r\n//#endregion\r\n\r\n//#region ダウンロード系\r\n\r\n /**\r\n * ダウンロードダイアログの初期化を行う。\r\n * @param {object} button ボタン\r\n */\r\n _initDownload(button) {\r\n this._downloadDialog = new Dialog('download-dialog', true, true, 'download-close-button');\r\n\r\n const downloadUrl = document.getElementById('download_url');\r\n // yama追記:ダウンロード可能な時のみDownloaderをnewする\r\n //if (this._enableDownloads !== null) {\r\n //}\r\n new Downloader(this._viewer, downloadUrl.value, 'download-button', 'type', 'download', 'page-select', 'page-range', this._enableDownloads);\r\n //new Downloader(this._viewer.mainViewer, downloadUrl.value, 'download-button', 'type', 'download', 'page-select', 'page-range', this._enableDownloads);\r\n\r\n button.addEventListener('click', this._downloadDialog.open.bind(this._downloadDialog), false);\r\n document.getElementById('download').addEventListener('click', this._downloadDialog.close.bind(this._downloadDialog), false);\r\n\r\n }\r\n\r\n//#endregion\r\n\r\n//#region フルスクリーン\r\n\r\n /**\r\n * フルスクリーン変更イベントのイベントハンドラ。\r\n * @param {fullscreenchange} event フルスクリーン変更イベント。\r\n */\r\n _changeFullscreenEventHandler(event) {\r\n\r\n const isFullscreen = this._viewer.getFullscreenState();\r\n\r\n this._fullScreenButton.setAttribute('aria-pressed', isFullscreen);\r\n\r\n const buttonChildren = this._fullScreenButton.children;\r\n const buttonCount = buttonChildren.length;\r\n for (let i = 0; i < buttonCount; i = i + 1) {\r\n const buttonIcon = buttonChildren[i];\r\n if (buttonIcon.tagName === 'svg') {\r\n\r\n if (buttonIcon.classList) {\r\n buttonIcon.classList.toggle('fa-compress');\r\n buttonIcon.classList.toggle('fa-expand');\r\n }\r\n else {\r\n try {\r\n const classList = buttonIcon.getAttribute('class').split(' ');\r\n const classCount = classList.length;\r\n\r\n let classListStr = '';\r\n for (let i = 0; i < classCount; i = i + 1) {\r\n const className = classList[i];\r\n if (className === 'fa-compress') {\r\n classListStr += 'fa-expand ';\r\n }\r\n else if (className === 'fa-expand') {\r\n classListStr += 'fa-compress ';\r\n }\r\n else {\r\n classListStr += className + ' ';\r\n }\r\n }\r\n\r\n buttonIcon.setAttribute('class', classListStr);\r\n }\r\n catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n } else if (buttonIcon.classList.contains('menu-button-label')) {\r\n buttonIcon.textContent = isFullscreen ? '全画面モードの終了' : '全画面表示';\r\n }\r\n }\r\n }\r\n\r\n//#endregion\r\n\r\n//#region ナビゲータ\r\n\r\n _toggleNavigator(event) {\r\n this._viewer.toggleDisplayOfNavigator();\r\n }\r\n\r\n//#endregion\r\n\r\n//#region UI系\r\n\r\n/**\r\n * UIの表示を切り替えるイベントハンドラ\r\n * @param {MouseEvent} event イベント。\r\n */\r\n _toggleUI(event) {\r\n 'use strict';\r\n\r\n if (event.quick === false || this._isUILock === true) return;\r\n\r\n const container = document.getElementById('viewer-container');\r\n if (container.getAttribute('data-show-header') === 'true') {\r\n this._hideUI();\r\n }\r\n else {\r\n this._showUI();\r\n }\r\n }\r\n\r\n/**\r\n * UIを非表示にする。 \r\n */\r\n _hideUI() {\r\n 'use strict';\r\n\r\n if (this._isUILock === true) return;\r\n\r\n const uiElements = document.querySelectorAll('[data-auto-hide]');\r\n const uiLength = uiElements.length;\r\n\r\n for (let i = 0; i < uiLength; i = i + 1) {\r\n const uiElem = uiElements[i];\r\n if (uiElem.classList.contains('hover')) {\r\n setTimeout(this._hideUI.bind(this), 3000);\r\n return;\r\n }\r\n }\r\n\r\n for (let i = 0; i < uiLength; i = i + 1) {\r\n const uiElem = uiElements[i];\r\n\r\n uiElem.setAttribute('aria-hidden', true);\r\n if (uiElem.dataset.autoHide === 'hide-only') {\r\n const parent = document.querySelector('button[aria-controls=\"' + uiElem.id + '\"]');\r\n if (parent) {\r\n parent.setAttribute('aria-expanded', false);\r\n parent.classList.remove('hover');\r\n\r\n if (uiElem.id === 'sidebar-container') document.getElementById('viewer-container').classList.remove('show-sidebar');\r\n }\r\n }\r\n }\r\n\r\n document.getElementById('viewer-container').setAttribute('data-show-header', 'false');\r\n document.getElementById('navigator').setAttribute('data-show-header', 'false');\r\n }\r\n\r\n/**\r\n * UIを表示する。 \r\n */\r\n _showUI() {\r\n 'use strict';\r\n\r\n if (this._isUILock === true) return;\r\n\r\n const uiElements = document.querySelectorAll('[data-auto-hide=\"true\"]');\r\n const uiLength = uiElements.length;\r\n\r\n for (let i = 0; i < uiLength; i = i + 1) {\r\n const uiElem = uiElements[i];\r\n\r\n uiElem.setAttribute('aria-hidden', false);\r\n }\r\n\r\n document.getElementById('viewer-container').setAttribute('data-show-header', 'true');\r\n document.getElementById('navigator').setAttribute('data-show-header', 'true');\r\n }\r\n\r\n//#endregion\r\n\r\n//#region フィルター\r\n\r\n _contrastFilter(adjustment) {\r\n if (adjustment < -100 || adjustment > 100) {\r\n throw new Error('Contrast adjustment must be between -100 and 100.');\r\n }\r\n adjustment = adjustment / 100 + 1;\r\n const intercept = 128 * (1 - adjustment);\r\n\r\n const precomputedContrast = [];\r\n for (var i = 0; i < 256; i++) {\r\n precomputedContrast[i] = Math.floor(i * adjustment + intercept);\r\n }\r\n return function (context, callback) {\r\n var imgData = context.getImageData(\r\n 0, 0, context.canvas.width, context.canvas.height);\r\n var pixels = imgData.data;\r\n for (var i = 0; i < pixels.length; i += 4) {\r\n pixels[i] = precomputedContrast[pixels[i]];\r\n pixels[i + 1] = precomputedContrast[pixels[i + 1]];\r\n pixels[i + 2] = precomputedContrast[pixels[i + 2]];\r\n }\r\n context.putImageData(imgData, 0, 0);\r\n callback();\r\n };\r\n }\r\n\r\n _saturationFilter(adjustment) {\r\n if (adjustment < -100 || adjustment > 100) {\r\n throw new Error('Saturation adjustment must be between -100 and 100.');\r\n }\r\n adjustment += 100;\r\n adjustment = adjustment !== 0 ? adjustment / 100 : 0;\r\n\r\n const self = this;\r\n return function (context, callback) {\r\n const imgData = context.getImageData(0, 0, context.canvas.width, context.canvas.height);\r\n const pixels = imgData.data;\r\n for (let i = 0; i < pixels.length; i += 4) {\r\n const hsv = self._convertRGB2HSV(pixels[i], pixels[i + 1], pixels[i + 2]);\r\n hsv.s *= adjustment;\r\n\r\n const rgb = self._convertHSV2RGB(hsv.h, hsv.s, hsv.v);\r\n pixels[i] = rgb.r;\r\n pixels[i + 1] = rgb.g;\r\n pixels[i + 2] = rgb.b;\r\n }\r\n context.putImageData(imgData, 0, 0);\r\n callback();\r\n };\r\n }\r\n\r\n _convertRGB2HSV(r, g, b) {\r\n\r\n // RGBを0.0~1.0の浮動小数点モデルに変換する。\r\n r /= 255;\r\n g /= 255;\r\n b /= 255;\r\n\r\n const max = Math.max(r, g, b);\r\n const min = Math.min(r, g, b);\r\n\r\n const diff = max - min;\r\n let h = 0;\r\n let s = max === 0 ? 0 : diff / max;\r\n let v = max;\r\n\r\n if (diff > 0) {\r\n switch (max) {\r\n case r:\r\n h = (g - b) / diff;\r\n if (h < 0) h += 6;\r\n break;\r\n\r\n case g:\r\n h = (b - r) / diff + 2;\r\n break;\r\n\r\n case b:\r\n h = (r - g) / diff + 4;\r\n break;\r\n }\r\n h /= 6;\r\n }\r\n\r\n return {\r\n h: h,\r\n s: s,\r\n v: v\r\n };\r\n }\r\n\r\n _convertHSV2RGB(h, s, v) {\r\n let r, g, b;\r\n\r\n const i = Math.floor(h * 6);\r\n const f = h * 6 - i;\r\n\r\n switch (i) {\r\n\r\n case 0:\r\n r = v;\r\n g = v * (1 - (1 - f) * s);\r\n b = v * (1 - s);\r\n break;\r\n\r\n case 1:\r\n r = v * (1 - s * f);\r\n g = v;\r\n b = v * (1 - s);\r\n break;\r\n\r\n case 2:\r\n r = v * (1 - s);\r\n g = v;\r\n b = v * (1 - (1 - f) * s);\r\n break;\r\n\r\n case 3:\r\n r = v * (1 - s);\r\n g = v * (1 - s * f);\r\n b = v;\r\n break;\r\n\r\n case 4:\r\n r = v * (1 - (1 - f) * s);\r\n g = v * (1 - s);\r\n b = v;\r\n break;\r\n\r\n case 5:\r\n r = v;\r\n g = v * (1 - s);\r\n b = v * (1 - s * f);\r\n break;\r\n }\r\n\r\n return {\r\n r: Math.floor(255 * r),\r\n g: Math.floor(255 * g),\r\n b: Math.floor(255 * b)\r\n };\r\n }\r\n\r\n _createFilterSliders() {\r\n const self = this;\r\n const panels = document.getElementById('bottom-image-filter');\r\n const selectedFilter = document.querySelector('.image-filter[aria-selected=\"true\"]');\r\n this._filters.map(function (filter) {\r\n\r\n const filters = document.createElement('div');\r\n filters.id = filter.filterName + '-slider-panel';\r\n filters.classList.add('bottom-slider-panel');\r\n filters.setAttribute('aria-hidden', selectedFilter.getAttribute('aria-controls') !== filters.id);\r\n filters.setAttribute('role', 'tabpanel');\r\n\r\n const slider = document.createElement('input');\r\n slider.id = filter.filterName + '-slider';\r\n slider.classList.add('dialog-slider');\r\n slider.type = 'range';\r\n slider.min = filter.min;\r\n slider.max = filter.max;\r\n slider.step = filter.step || 1;\r\n slider.value = filter.defaultValue;\r\n\r\n const inputEventName = _userAgent === 'ie' || _userAgent === 'edge' ? 'change' : 'input';\r\n slider.addEventListener(inputEventName, self._updateFilter.bind(self), false);\r\n\r\n const resetButton = document.createElement('button');\r\n resetButton.classList.add('slider-button');\r\n resetButton.type = 'button';\r\n resetButton.dataset.effectType = filter.filterName;\r\n\r\n const i = document.createElement('i');\r\n i.classList.add('fas');\r\n i.classList.add('fa-sync-alt');\r\n\r\n resetButton.appendChild(i);\r\n filters.appendChild(slider);\r\n filters.appendChild(resetButton);\r\n\r\n resetButton.addEventListener('click', self._resetFilter.bind(self), false);\r\n\r\n panels.insertBefore(filters, panels.firstChild);\r\n });\r\n }\r\n\r\n _updateFilter() {\r\n\r\n var filters = [];\r\n if (this._timer !== null) clearTimeout(this._timer);\r\n\r\n setTimeout(function () {\r\n\r\n this._filters.map(function (filter) {\r\n if (filter.isAdd() === true) {\r\n filters.push(filter.processor());\r\n }\r\n });\r\n\r\n\r\n this._viewer.mainViewer.setFilterOptions({\r\n filters: {\r\n processors: filters\r\n },\r\n loadMode: 'sync'\r\n });\r\n\r\n }.bind(this), 50);\r\n }\r\n\r\n _resetFilter(event) {\r\n const id = event.currentTarget.dataset.effectType;\r\n this._filters.map(function (filter) {\r\n if (filter.filterName === id) {\r\n var filterInput = document.getElementById(filter.filterName + '-slider');\r\n filterInput.value = filter.defaultValue || 0;\r\n }\r\n });\r\n this._updateFilter();\r\n }\r\n\r\n _resetFilters(event) {\r\n if (_userAgent !== 'ie') {\r\n this._filters.map(function (filter) {\r\n if (filter.isSlider) {\r\n var filterInput = document.getElementById(filter.filterName + '-slider');\r\n filterInput.value = filter.defaultValue || 0;\r\n }\r\n else if (filter.isAdd()) {\r\n const button = document.querySelector('.filter-button[data-effect-type=' + filter.filterName + ']');\r\n if (button) button.click();\r\n }\r\n });\r\n this._updateFilter();\r\n }\r\n\r\n this._viewer.setRotation(0, true);\r\n }\r\n\r\n _debounce(func, intervel) {\r\n\r\n if (this._timer !== null) clearTimeout(this._timer);\r\n this._timer = setTimeout(function () {\r\n func.call();\r\n }, intervel);\r\n }\r\n\r\n\r\n//#region パブリックメソッド\r\n\r\n//#region ページ関係\r\n\r\n/**\r\n * 前のページへ移動します。 \r\n */\r\n goPrevPage() {\r\n\r\n if (this._isUILock) return;\r\n\r\n const prevPage = this._viewer.getCurrentPage() - 1;\r\n this._viewer.goToPage(prevPage, true);\r\n }\r\n\r\n/**\r\n * 前のページへ移動します。 \r\n */\r\n goNextPage() {\r\n\r\n if (this._isUILock) return;\r\n\r\n const nextPage = this._viewer.getCurrentPage() + 1;\r\n this._viewer.goToPage(nextPage, true);\r\n }\r\n\r\n//#endregion\r\n\r\n//#region 回転系\r\n\r\n/**\r\n * 画像を回転させます。\r\n * @param {Number} degrees 設定する回転角。\r\n * @param {Boolean} [raiseEvent=true] イベントを発火させるか否か。\r\n */\r\n setImageRotation(degrees, raiseEvent) {\r\n const needRaiseEvent = raiseEvent === true;\r\n this._viewer.setRotation(degrees, needRaiseEvent);\r\n }\r\n\r\n//#endregion\r\n\r\n//#region フルスクリーン\r\n\r\n/**\r\n * フルスクリーン表示を切り替えます。\r\n */\r\n toggleFullscreen() {\r\n\r\n if (this._fullScreenButton === undefined || this._fullScreenButton === null) throw new Error('この端末ではフルスクリーン表示がサポートされていません。');\r\n\r\n this._viewer.toggleFullScreen();\r\n }\r\n\r\n//#endregion\r\n\r\n imageAdjustment(event) {\r\n\r\n const target = event.currentTarget;\r\n const isPressed = target.getAttribute('aria-pressed') === 'true';\r\n target.setAttribute('aria-pressed', !isPressed);\r\n\r\n this._updateFilter();\r\n }\r\n}\r\n\r\nwindow.RoDAViewer = RoDAViewer;\r\n"],"names":["ua","navigator","userAgent","toLowerCase","indexOf","window","chrome","Quote","Watermark","_userAgent","ViewerCore","constructor","mainViewerId","tileSourceDef","initialPage","watermarkUrl","watermarkPosition","quoteCallback","loadingOverlayId","Error","mainViewer","_mainViewerId","totalPagesCount","length","_listeners","_watermark","_watermarkUrl","_watermarkPosition","_navigatorHandler","_subWatermark","_immediateRender","_loadTimer","_loadOverlay","document","getElementById","showLoadAnimation","OpenSeadragon","id","tileSources","sequenceMode","immediateRender","showSequenceControl","showFullPageControl","showHomeControl","showZoomControl","showNavigator","navigatorId","navigatorPosition","navigatorRotate","navigatorAutoFade","navigatorAutoResize","gestureSettingsMouse","clickToZoom","dblClickToZoom","crossOriginPolicy","hasWatermark","undefined","_mainQuoteHelper","addOnceHandler","_init","bind","_updateNavigator","addHandler","hiddenLoadAnimation","source","aspectRatio","goHomeForScrollsItem","toggleDisplayOfNavigator","raiseEvent","degrees","getRotation","page","getCurrentPage","existNextPage","setTimeout","setAttribute","clearTimeout","getOriginalImageSize","tileSource","world","getItemAt","Point","width","height","currentPage","getIndexOfCurrentPage","goToPage","needRaiseEvent","index","RangeError","zoomTo","zoom","viewport","zoomBy","applyConstraints","fitHorizontally","immediately","center","getCenter","newBounds","Rect","y","x","fitBounds","fitVertically","goHome","bounds","getBounds","panTo","setRotation","setRotate","offset","getFullscreenState","webkitFullscreenElement","webkitCurrentFullScreenElement","mozFullScreenElement","msFullscreenElement","fullscreenElement","toggleFullScreen","isFullScreen","webkitExitFullscreen","msExitFullscreen","mozCancelFullScreen","exitFullscreen","documentElement","msRequestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","requestFullscreen","isFullscreen","getVisibleOfNavigator","isHidden","element","getAttribute","setVisible","update","forceRedraw","containerSize","getElementSize","parentNode","parentContainerSize","left","top","Math","min","round","style","updateSize","setSelectionState","enabled","_subQuoteHelper","confirmSelection","cancelSelection","getSelectedRectSize","getSelectionSize","getCurrentPageImageId","params","split","imageId","pop","replace","registUrl","url","isDrawing","regist","addEventListener","type","callback","push","removeEventListener","stack","splice","i","dispatchEvent","event","l","call","eventName","eventArgs","CustomEvent","detail","createEvent","initCustomEvent","ViewerDownloader","viewer","baseUrl","downloadButtonId","typeSelectorName","dummyAnchorId","pageSelectorName","pageInputId","enableDownloads","_viewer","_baseUrl","_enableDownloads","_typeSelectors","querySelectorAll","_pageSelectors","_pageInput","_initPageSelector","_parsePageEvent","_lastPage","_alertMsg","textContent","_dummyElement","_download","self","xhr","XMLHttpRequest","open","_generateUrl","responseType","onload","e","status","contentType","getResponseHeader","fileName","console","log","href","URL","createObjectURL","response","click","onerror","send","message","_getDownloadFileType","fileType","_typeSelectorsCount","checked","value","selectorsLength","_getPageType","pageType","selectorsCount","selector","disabled","_parsePage","currentTarget","pageString","match","pages","pageList","pageListCount","defs","start","parseInt","end","j","ViewerQuote","_callback","_rect","_selectedSize","_selection","selection","showSelectionControl","allowRotation","restrictToImage","showConfirmDenyButtons","styleConfirmDenyButtons","onSelection","_confirm","rect","clientWidth","clientHeight","generateImageUrl","_raiseEvent","setState","_getImageUrl","_generateParametor","sizeParam","rotate","param","confirm","cancel","size","ViewerDialog","dialogId","showOverlay","overlayClickToClose","closeButtonId","_dialog","_button","querySelector","_overlay","createElement","classList","add","body","insertBefore","parent","close","buttonId","closeButton","toggle","ViewerElementResizer","resizerId","_element","_resizer","_resizeHandler","_resizing","_stopResizeHandler","_stopResize","_initResize","preventDefault","changedTouches","cursor","clientX","offsetLeft","ViewerSlider","changeCallback","defaultValue","valueLabelId","_slider","sliderEventName","labelId","dataset","valueLabel","_label","_setValueLabel","_initialValue","reset","_triggerEvent","evt","initEvent","createEveneObject","fireEvent","getValue","setValue","ViewerTabHelper","_mouseWheelEventHandler","_tabList","_tabPanelList","Array","prototype","forEach","tab","_changeTab","_mouseOverEvent","_mouseOutEvent","tabPanel","_dragFlag","targetTab","isSelected","tabLength","panel","target","deltaY","scrollVal","pageDirection","HTMLUListElement","scrollBy","behavior","scrollLeft","remove","blur","getCurrentTab","currentTab","goToFirst","ViewerThumbList","direction","_list","_direction","_mouseOverEventHandler","_mouseOutEventHandler","_thumbList","children","thumb","_clickThumbEventHandler","focus","scrollIntoView","changePage","thumbPage","pageNumber","clientRect","getBoundingClientRect","parentRect","scrollTop","ViewerWatermark","position","dispPages","_pixelRatio","devicePixelRatio","_position","_dispPages","_drawWatermarkHandler","_drawWatermark","Image","_wmWidth","_wmHeight","src","canDrawWatermark","imageSize","dimensions","imageCorners","_detectCorners","wmSize","_detectWMSize","positionCorrection","point","_calcWmCoordinates","drawer","context","drawImage","topLeft","imageToViewerElementCoordinates","times","topRight","bottomLeft","bottomRight","viewerElem","ViewerWatermarkRect","dispRegionWidth","getWidth","dispRegionHeight","getHeight","getLeft","getRight","getTop","getBottom","wmAspectRatio","oneThirdWidth","oneThirdHeight","coordinates","positionDef","TopLeft","getTopLeft","TopRight","getTopRight","BottomRight","getBottomRight","BottomLeft","getBottomLeft","destroy","removeHandler","minX","maxX","minY","maxY","_normalize","correctionValue","correctedX","correctedY","corner","$","$window","fn","lazyload","options","elements","$container","settings","threshold","failure_limit","effect","container","data_attribute","skip_invisible","appear","load","placeholder","counter","each","$this","is","abovethetop","leftofbegin","belowthefold","rightoffold","trigger","failurelimit","effectspeed","effect_speed","extend","$self","loaded","attr","one","elements_left","original","hide","css","temp","grep","test","appVersion","originalEvent","persisted","ready","fold","innerHeight","inviewport","expr","a","jQuery","Downloader","ElemResizer","Slider","TabHelper","ThumbList","Dialog","RoDAViewer","args","JSON","parse","_confirmSelection","_timer","_filters","filterName","max","step","isSlider","isAdd","parseFloat","processor","Filters","BRIGHTNESS","_saturationFilter","_contrastFilter","GAMMA","GREYSCALE","INVERT","_createFilterSliders","filterItem","getElementsByClassName","display","buttonList","getElementsByTagName","button","_registClickEventForHasCommand","_registClickEventForHasExpanded","_registMouseEventForButton","tabList","contains","_filterTab","_initPaging","_rotateSlider","_setRotation","_setRotationInfo","_changeFullscreenEventHandler","_isUILock","_beforeNavigatorState","_hideStart","_hideUI","_toggleUI","uiElements","uiLength","uiElem","_pageInfoForms","changeEventName","pageForm","_directPageInput","_changePageEventHandler","_sidebarThumbList","_bottomThumbList","thumbnailList","k","_sidebarContentClick","viewerCommand","goPrevPage","goNextPage","viewerCommandArg","_setRotate","_toggleNavigator","enableFullscreen","fullscreenEnabled","msFullscreenEnabled","mozFullScreenEnabled","webkitFullscreenEnabled","_fullScreenButton","toggleFullscreen","parentElement","tagName","_infoDialog","_initDownload","_initQuote","imageAdjustment","_resetFilters","clickToClose","_closeMenuDialog","_clickEventForHasExpanded","_registClickEventForTab","toggleTab","tooltipId","tooltip","targetRect","tooltipRect","rectX","rectY","tpX","tpY","DOMRect","tpRect","bottom","right","elemCenter","tpLeft","_tooltipTimer","isExpanded","ctrlElemId","toggleButtonId","toggleButton","tCtrlElemId","tCtrlElem","closed","closeElem","overlay","_sidebarFunc","_elementClickTrigger","msg","notExpandedMsg","expandedMsg","keyCode","pageNum","isNaN","totalPages","hasNextPage","prevPages","prevCount","nextPages","nextCount","form","location","search","charAt","isMobile","getComputedStyle","visibility","setImageRotation","_quoteAboutDialog","_quoteDialog","_quotePreviewDialog","_quoteResultDialog","startButton","_startSelection","_redoSelection","_endSelection","_registQuoteUrl","_showQuote","image","alert","_showQuotePreview","quoteSize","preview","_imageUrl","setRequestHeader","onloadend","reader","FileReader","result","readAsDataURL","permalinkUrl","formData","FormData","append","xhrObject","permalink","_downloadDialog","downloadUrl","buttonChildren","buttonCount","buttonIcon","classCount","classListStr","className","quick","_showUI","autoHide","adjustment","intercept","precomputedContrast","floor","imgData","getImageData","canvas","pixels","data","putImageData","hsv","_convertRGB2HSV","s","rgb","_convertHSV2RGB","h","v","r","g","b","diff","f","panels","selectedFilter","map","filter","filters","slider","inputEventName","_updateFilter","resetButton","effectType","appendChild","_resetFilter","firstChild","setFilterOptions","processors","loadMode","filterInput","_debounce","func","intervel","prevPage","nextPage","isPressed"],"sourceRoot":""}