{"version":3,"file":"static/js/main.e8822179.js","mappings":"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AAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,YACT,CAAC,MAAQ,MAAQ,MAAO,YACxB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,YACT,CAAC,YACD,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,YACT,CAAC,MAAQ,YACT,CAAC,MAAQ,YACT,CAAC,MAAQ,YACT,CAAC,MAAQ,YACT,CAAC,MAAQ,YACT,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,YACT,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,YACT,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,YACT,CAAC,MAAQ,YACT,CAAC,MAAQ,YACT,CAAC,MAAQ,YACT,CAAC,MAAQ,YACT,CAAC,MAAQ,YACT,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,MAAQ,MAAQ,YACzB,CAAC,MAAQ,YACT,CAAC,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A,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGEzF,EAA2B,CAC7B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEEV,EAA0B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAC7DC,EAA2B,CAC7B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,KAEEw/B,EAA0B,CAC5B,EACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,EACA,GACA,GACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGE76B,EAA6B,CAC/B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEE2yB,EAA4B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAC/DrF,EAA6B,CAC/B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,KAEEzS,EAA4B,CAC9B,EACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,GACA,IACA,GACA,GACA,GACA,IACA,EACA,GACA,GACA,IACA,IACA,IACA,IACA,EACA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,cAuKO29C,EAAkBngE,EAASC,GAAA,QAC9BE,EAAY,EACZD,EAAe,EACfE,EAAK,IAAIqB,MACJlB,EAAI,EAA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CA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IAGOE,EAAI,EAAGA,EAAI,GAAIA,IAAK,KACvBD,EAAIM,GAAQP,EAAIE,GAAKH,EAAK,IAAM,KACpCE,EAAI4B,KAAK4E,IAAI5E,KAAKk6C,IAAI97C,EAAG,GAAI,KAC7BG,EAAO6I,EAAO/I,IAAMD,CAAA,SAElBE,EAAO,CACT,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEOG,EAAI,EAAGA,EAAI,GAAIA,IAAK,KACvBM,EAAIL,GAAQJ,EAAKG,GAAKP,EAAK,IAAM,KACrCa,EAAIiB,KAAK4E,IAAI5E,KAAKk6C,IAAIn7C,EAAG,GAAI,KAC7BJ,EAAQyI,EAAO3I,IAAMM,CAAA,SAEnBH,EAAO,CACT,EACA,YACA,YACA,YACA,EACA,WACA,SACA,YAEEE,EAAI,EACC2B,EAAM,EAAGA,EAAM,EAAGA,IAAA,IACpB,IAAIO,EAAM,EAAGA,EAAM,EAAGA,IACzBxC,EAAQM,GAAK,GAAOP,EAAO6I,EAAOtI,IAAMF,EAAK6B,GAAO7B,EAAKoC,GAAO,GAChEnC,EAASC,GAAK,GAAOH,EAAQyI,EAAOtI,IAAMF,EAAK6B,GAAO7B,EAAKoC,GAAO,GAClElC,GAAA,CA2gBkB,CAGpBZ,EAAU,GAAK8B,KAAKE,MAAM,IAAOhC,GAAW8B,KAAKE,MAAM,IAAgB,EAAVhC,IAG/DO,EAAiBP,EAAA,MA5Hdm6Q,OAAS,SACZn6Q,EACAO,GAEIA,GAASmP,EAAWnP,GAGxBuC,EAAU,IAAIrB,MACdH,EAAU,EACVK,EAAU,EAGVX,EAAU,OAhLVA,EAAU,OACVA,EAAU,IACVkf,EAAU,IACVA,EAAU,IACVA,EAAU,IACVA,EAAU,IACVA,EAAU,GACVA,EAAU,GACVA,EAAU,GACVA,EAAU,GACVlf,EAAU,GACVA,EAAU,GACVkf,EAAU,GACVA,EAAU,cAsBVlf,EAAU,OACVA,EAAU,KACVkf,EAAU,OACL,IAAIlgB,EAAI,EAAGA,EAAI,GAAIA,IACtBkgB,EAAU7f,EAAOL,IAEnBkgB,EAAU,OACL,IAAIjgB,EAAI,EAAGA,EAAI,GAAIA,IACtBigB,EAAUzf,EAAQR,GAAA,CA9BV,GAqKV,SAlKiBD,EAAOC,GACxBe,EAAU,OACVA,EAAU,IACVkf,EAAU,GACVlf,EAAUf,GACVe,EAAUhB,GACVkgB,EAAU,GACVA,EAAU,GACVA,EAAU,IACVA,EAAU,GACVA,EAAU,GACVA,EAAU,IACVA,EAAU,GACVA,EAAU,GACVA,EAAU,IACVA,EAAU,GAmJV,CACUlgB,EAAM4rB,MAAO5rB,EAAM6rB,QAAA,WAnI7B7qB,EAAU,OACVA,EAAU,KAEVkf,EAAU,OACL,IAAIlgB,EAAI,EAAGA,EAAI,GAAIA,IACtBkgB,EAAUzc,EAAyBzD,EAAI,QAEpC,IAAIC,EAAI,EAAGA,GAAK,GAAIA,IACvBigB,EAAUnd,EAAwB9C,IAGpCigB,EAAU,QACL,IAAI/f,EAAI,EAAGA,EAAI,GAAIA,IACtB+f,EAAUld,EAAyB7C,EAAI,QAEpC,IAAID,EAAI,EAAGA,GAAK,IAAKA,IACxBggB,EAAUsiB,EAAwBtiC,IAGpCggB,EAAU,OACL,IAAI9f,EAAI,EAAGA,EAAI,GAAIA,IACtB8f,EAAUvY,EAA2BvH,EAAI,QAEtC,IAAIG,EAAI,EAAGA,GAAK,GAAIA,IACvB2f,EAAUoa,EAA0B/5B,IAGtC2f,EAAU,QACL,IAAI1f,EAAI,EAAGA,EAAI,GAAIA,IACtB0f,EAAU+U,EAA2Bz0B,EAAI,QAEtC,IAAIH,EAAI,EAAGA,GAAK,IAAKA,IACxB6f,EAAUsC,EAA0BniB,GAAA,CAmGT,GA9F7BW,EAAU,OACVA,EAAU,IACVkf,EAAU,GACVA,EAAU,GACVA,EAAU,GACVA,EAAU,GACVA,EAAU,IACVA,EAAU,GACVA,EAAU,IACVA,EAAU,GACVA,EAAU,IACVA,EAAU,OAwFN1f,EAAM,EACNK,EAAM,EACNH,EAAM,EAEVY,EAAU,EACVK,EAAU,OAELw4Q,OAAOrmQ,YAAc,mBAQtBlT,EAEA2B,EAAGggC,EAAGr5B,EACNi3D,EAAO19D,EAAG+hC,EAAKqI,EAAKK,EATpBtrC,EAAY5B,EAAM+pB,KAClBtgB,EAAQzJ,EAAM4rB,MACd2hB,EAASvtC,EAAM6rB,OAEfwhB,EAAoB,EAAR5jC,EAGdwuB,EAAI,EAGCA,EAAIsV,GAAQ,KACjB3sC,EAAI,EACGA,EAAIysC,GAAW,KACpB8yB,EAAQ9yB,EAAYpV,EAAIr3B,EACxB4jC,GAAO,EACPqI,EAAM,EAEDK,EAAM,EAAGA,EAAM,GAAIA,IAGtBzqC,EAAI09D,GAFJtzB,EAAMK,GAAO,GAEKG,GADlB7I,EAAkB,GAAL,EAAN0I,IAGHjV,EAAI4U,GAAOU,IAEb9qC,GAAK4qC,GAAapV,EAAI,EAAI4U,EAAMU,IAG9B3sC,EAAI4jC,GAAO6I,IAEb5qC,GAAK7B,EAAI4jC,EAAM6I,EAAY,GAG7B9qC,EAAIX,EAAUa,KACd8/B,EAAI3gC,EAAUa,KACdyG,EAAItH,EAAUa,KASdW,EAAI8pC,IACAxkC,EAAcnG,GACdmG,EAAe65B,EAAI,KAAQ,GAC3B75B,EAAeQ,EAAI,KAAQ,IAC3B,IACF,IACFnI,EAAImsC,IACAxkC,EAAenG,EAAI,KAAQ,GAC3BmG,EAAe65B,EAAI,MAAS,GAC5B75B,EAAeQ,EAAI,MAAS,IAC5B,IACF,IACF1G,EAAI0qC,IACAxkC,EAAenG,EAAI,MAAS,GAC5BmG,EAAe65B,EAAI,MAAS,GAC5B75B,EAAeQ,EAAI,MAAS,IAC5B,IACF,IAGJ1I,EAAMw3B,EAAU50B,EAAK9C,EAASE,EAAKP,EAAQC,GAC3CW,EAAMm3B,EAAUj3B,EAAKJ,EAAUE,EAAKV,EAASC,GAC7CM,EAAMs3B,EAAUx1B,EAAK7B,EAAUD,EAAKP,EAASC,GAC7CQ,GAAK,GAEPq3B,GAAK,KAMHt2B,GAAW,EAAG,KACZyI,EAAW,GACfA,EAAS,GAAKzI,EAAU,EACxByI,EAAS,IAAM,GAAMzI,EAAU,GAAM,EACrCsB,EAAUmH,EAAA,QAGZpJ,EAAU,OAEH,IAAIgtD,WAAWlrD,EAAA,EAiBtB9C,EAAUA,GAAW,sBAxIjBA,EAAOuB,OAAO+pB,aACTrrB,EAAI,EAAGA,EAAI,IAAKA,IAEvBsiC,EAAItiC,GAAKD,EAAKC,EAAA,CAqIK,GA/frBA,EAASkgE,EACP18D,EACAV,GAEF5C,EAAUggE,EACRx4D,EACA2yB,GAEFp6B,EAASigE,EACPn9D,EACAw/B,GAEFpiC,EAAU+/D,EACRlrC,EACAzS,GAAA,mBAKExiB,EAAU,EACVC,EAAU,EACLE,EAAM,EAAGA,GAAO,GAAIA,IAAO,KAE7B,IAAID,EAAKF,EAASE,EAAKD,EAASC,IACnCQ,EAAS,MAAQR,GAAMC,EACvBU,EAAQ,MAAQX,GAAM,GACtBW,EAAQ,MAAQX,GAAI,GAAKC,EACzBU,EAAQ,MAAQX,GAAI,GAAKA,EAAA,IAGtB,IAAIE,IAAUH,EAAU,GAAIG,IAAUJ,EAASI,IAClDM,EAAS,MAAQN,GAASD,EAC1BU,EAAQ,MAAQT,GAAS,GACzBS,EAAQ,MAAQT,GAAO,GAAKD,EAC5BU,EAAQ,MAAQT,GAAO,GAAKH,EAAU,EAAIG,EAE5CJ,IAAY,EACZC,IAAY,GAvBZ,GAqfF,eAzdK,IAAID,EAAI,EAAGA,EAAI,IAAKA,IACvB0I,EAAc1I,GAAK,MAAQA,EAC3B0I,EAAe1I,EAAI,KAAQ,GAAK,MAAQA,EACxC0I,EAAe1I,EAAI,KAAQ,GAAK,KAAOA,EAAI,MAC3C0I,EAAe1I,EAAI,KAAQ,IAAM,MAAQA,EACzC0I,EAAe1I,EAAI,MAAS,IAAM,MAAQA,EAC1C0I,EAAe1I,EAAI,MAAS,GAAK,MAAQA,EAAI,QAC7C0I,EAAe1I,EAAI,MAAS,IAAM,MAAQA,EAC1C0I,EAAe1I,EAAI,MAAS,IAAM,KAAOA,CAAA,CAid3C,GAGA0P,EAAW1P,EAAA,CC9sCf,SAASivB,GAAWjvB,EAAQC,GAAA,QACrBmjP,IAAM,OACNj1L,OAASnuD,EAAA,KACTo6Q,MAAQ,IAAI9qL,SAAStvF,EAAOmuD,QAAA,KAC5BksN,gBAAkBp6Q,EAAA,KAClBq6Q,WAAA,EAAY,KACZC,KACHh5Q,OAAO+pB,aAAa1nB,KAAKuqD,OAAO,IAAM5sD,OAAO+pB,aAAa1nB,KAAKuqD,OAAO,SACnEi1L,KAAO,GACqD,IAA7D,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MAAMp6O,QAAQpF,KAAK22Q,MACpD,MAAM,IAAIrwQ,MAAM,yBACbswQ,cAAA,KACAC,UAAA,CCrBP,SAASjtP,GAAYxtB,GAAA,SAsCVC,EAAED,GAAA,IACJA,EAAG,MAAMkK,MAAM,sBAEb/J,EAAGH,EAAGC,EAAGE,GAAA,IACX,IAAID,EAAI,EAAG,EAAIA,EAAGA,IAAA,GAASF,EAAEC,EAAIC,IAAMC,EAAE8tD,WAAW/tD,GAAI,OAAO,UAC7D,UAEAA,EAAEF,EAAGC,EAAGE,EAAGD,EAAGE,GAAA,IAChB,IAAIG,EAAI,EAAGA,EAAIH,EAAGG,IAAKP,EAAEC,EAAIM,GAAKJ,EAAED,EAAIK,EAAA,UAEtCH,EAAEJ,EAAGC,EAAGE,EAAGD,GAAA,IACb,IAAIE,EAAI,EAAGA,EAAIF,EAAGE,IAAKJ,EAAEC,EAAIG,GAAKD,CAAA,UAEhCI,EAAEP,GAAA,OACF,IAAI0sQ,WAAW1sQ,EAAA,UAEfQ,EAAGR,EAAGC,GAAA,IACR,IAAIE,EAAI,GAAID,EAAI,EAAGA,EAAIF,EAAGE,IAAKC,EAAEsd,KAAK,IAAIxd,GAAA,OACxCE,CAAA,UAcAE,EAAGL,EAAGC,GAAA,IAQTE,EAAI,mBAPCH,EAAEG,EAAGD,EAAGE,GAAA,IACV,IAAIG,EAAIH,EAAEF,GAAIM,EAAK,EAAGA,EAAKD,IAC9BJ,EAAEsd,KAAKrd,EAAEoB,OAAStB,EAAI,EAAI,GAAK,IAAID,KAC/BG,EAAEoB,OAAStB,EAAI,IAFcM,IAGjCR,EAAEG,EAAEK,GAAKN,EAAI,EAAGE,EAAA,CAGZ,CACND,EAAG,EAAGH,GACDG,CAAA,KAELM,EAAe,eACbT,EAAO4D,KAAA,SAIFnD,EAAET,EAAGC,GAAA,IACP,IAAIE,EAAK,GAAMF,EAAI,IAAQ,EAAGD,EAAIG,GAAKA,KAAO,SAC5CA,GAAKH,EAAKG,EAAI,GAAMA,EAAIH,CAAA,UAExBM,EAAEN,EAAGG,EAAGD,EAAGE,EAAGG,GACrBN,IAAIG,EAAIF,IAAA,GACMF,EAAEG,GAAZC,GAAKF,IAAgBK,QAClB,EAAIH,EAAA,UA+EJO,EAAEX,EAAGG,EAAGD,EAAGE,EAAGI,GAAA,GACrBP,EAAE,MAAQO,GACN,KAAOA,EAAG,IAAIH,EAAIE,EAAE,UACnB,GAAiB,OAAXF,EAAIE,EAAEC,IAAiB,OAAO,kBAhFhCR,EAAGG,EAAGD,EAAGE,EAAGI,EAAGH,GAAA,IAGtBM,EACAD,EAHEE,EAAIT,EACNoC,EAAI,GAAKrC,EAGT4C,EAAIvC,EAAE,IACNe,EAAIf,EAAE,QACRN,EAAE,GAAKO,GACPP,EAAE,MAAQG,GACVH,EAAE,MAAQD,GACVC,EAAE,EAAIC,GACDQ,EAAI,EAAGA,EAAIF,IAAKE,EAAG,IAClB,GAAKN,EAAEM,GAAI,OAAO,IACpBoC,EAAE1C,EAAEM,GAAA,IAEJoC,EAAE,IAAMtC,EAAG,OAAO,MACtBc,EAAE,GAAK,EACFX,EAAI,EAAG,GAAKA,IAAKA,EAAG,IACnBmC,EAAEnC,GAAK,GAAKA,EAAG,OAAO,EAC1BW,EAAEX,EAAI,GAAKW,EAAEX,GAAKmC,EAAEnC,EAAA,KAEjBD,EAAI,EAAGA,EAAIF,IAAKE,EAAIC,EAAIP,EAAEM,GAAK,EAAIN,EAAEM,KAAOL,EAAEiB,EAAEX,MAAQD,GAAA,GACzD,GAAKY,EAAE,IACT,OAAQlB,EAAI,IAAIS,GAASiC,EAAI,EAAK1C,EAAE6L,MAAQ5L,EAAE,GAAKC,EAAEN,EAAGY,EAAG,EAAG2B,EAAGnC,GAAImC,EAAA,IAMrEZ,EALEyB,GAAK,EACPrC,EAAIwB,EAAI,EACRC,EAAI,EACJ+/B,EAAI,EACJ75B,EAAI,EAEJQ,EAAI,GAAKhJ,EAAA,IACXQ,EAAI,EACJC,EAAI,EACCH,EAAI,EAAGG,GAAKT,IAAKS,EAAGH,IAAM,EAAG,IAEhC+hC,GADA75B,IAAM,EAGF,GADJA,GAAK5F,EAAEnC,IACI,OAAO,OACX,EAAImC,EAAEnC,KAAMmC,EAAEnC,IAClBP,EAAI,IAAIS,GACJiC,EAAInC,EACNP,EAAE6L,MAAQ5L,EAAEK,KACbJ,EAAEN,EAAGY,EAAI4B,EAAGhC,EAAG0I,EAAG9I,GACjBoC,EAAI/B,EAAE+B,EAAG7B,EAAA,KAEhBA,EAAIT,EAAI,EACHM,EAAI,EAAG,IAAMG,IAAKA,EAAGH,IAAM,EAAG,IAEjC+hC,GADA75B,IAAM,EAGF,GADJA,GAAK5F,EAAEnC,IACI,OAAO,OACX,EAAImC,EAAEnC,KAAMmC,EAAEnC,GAAI,IACvBP,EAAI,IAAIS,GACH2B,EAAIzB,IAAMqC,EAAG,KAChBxC,GAAKsI,EAEAvH,EAAI,IADTyB,EAAIzC,GACeT,EAAI,GAAKkD,KAEtB,IADJzB,GAAKmB,EAAEM,QAELA,EACFzB,IAAM,EAIRY,GADA2G,EAAI,IADJvH,EAAIyB,EAAIlD,GAIRF,EAAEG,GADFiD,EAAIZ,EAAIzB,IACC+B,EAAInB,EAAIzB,EACjBF,EAAEG,EAAIiD,GAAG6I,MAAQrL,EAAIT,EAAIiD,CAAA,CAE3BhD,EAAE0C,EAAInC,EAAIT,EACVE,EAAE6L,MAAQ5L,EAAEK,KACZJ,EAAEN,EAAGY,GAAK4B,GAAKtC,GAAIM,EAAG0I,EAAG9I,GACzBoC,EAAI/B,EAAE+B,EAAG7B,EAAA,SAGN4hC,GAAK,EAAIjhC,EAAE,IAAM,EAAI,EAAIiB,CAAA,CAKS,CAChCvC,EAAGG,EAAGD,EAAGE,EAAGI,EAAGH,EAAA,UAEjBQ,IAAA,KACFoL,MAAQrI,KAAKd,EAAI,WAEfpC,IAAA,KACFuL,MAAQrI,KAAKd,EAAI,WAEflC,IAAA,KACFq3B,EAAIz3B,EAAG,EAAGK,GAAA,KACV4I,EAAIlJ,EAAE,QACNugB,GAAKld,KAAK4a,GAAK5a,KAAKoX,GAAKpX,KAAKkiB,GAAK,OACnCI,GAAK1lB,EAAGuhQ,GAAIrhQ,EAAA,UAEV6B,EAAGvC,EAAGG,EAAGD,EAAGE,GACnBH,EAAE,MAAQD,GACVC,EAAE,MAAQE,GACVF,EAAE,WAAaG,GACfJ,EAAE0S,GAAK,IACP1S,EAAEs6B,EAAI,EACNt6B,EAAEoD,GAAK,EACPpD,EAAEmT,GAAK,EACPnT,EAAE6R,GAAK1R,EACPH,EAAE0R,GAAKxR,EACPF,EAAE6pB,GAAK1pB,EACPH,EAAEwkB,GAAKtkB,EAAIE,EACXJ,EAAE2kB,GAAK,GAAKvkB,EAAIF,EAAIE,EAAI,EAAI,EAAIF,EAChC8C,EAAGhD,EAAA,UAEI8C,EAAG9C,EAAGC,GAAA,IACR,IAAIE,EAAI,EAAG,EAAIF,KAAOE,GAAKwH,EAAE3H,EAAG,MAAQC,EAAA,OACtCE,CAAA,UAEAmB,EAAGtB,EAAGC,GAAA,IACTE,EAAI2C,EAAG9C,EAAGC,GAAA,OACPuiC,EAAExiC,IAAMG,EAAIA,CAAA,UAEZwB,EAAG3B,EAAGG,EAAGD,EAAGE,GAAA,IACfG,EACFC,EAAI,MACNP,EAAE,MAAQD,GACVC,EAAE,MAAQE,GACVF,EAAE,WAAaG,GACfJ,EAAE0e,GAAKte,EACPJ,EAAEuU,GAAK,EACPvU,EAAEM,EAAI,EACNN,EAAEW,EAAI,IACFP,IAAMA,EAAI,GACTG,EAAI,EAAGA,EAAIH,IAAKG,EAAGC,GAAKL,EAAED,EAAIK,IAAO,EAAIA,EAC9CP,EAAEuU,GAAK/T,EACPR,EAAEmW,GAAK/V,EACPJ,EAAE6R,GAAK1R,EACPH,EAAE0R,GAAKxR,CAAA,UAEAkD,EAAGpD,GAAA,KACH,GAAKA,EAAEM,GAAKN,EAAEmW,GAAKnW,EAAE0e,IACzB1e,EAAEuU,MAAQ,EACRvU,EAAEuU,IAAOvU,EAAE6R,GAAG7R,EAAE0R,GAAK1R,EAAEmW,KAAQukQ,GAAK,IAAQ,IAC3C16Q,EAAEmW,GACHnW,EAAEM,GAAK,EACZ4I,EAAGlJ,KAAQA,EAAEW,EAAI,EAAKX,EAAEM,EAAI,YAErBS,EAAEf,EAAGG,GAAA,GACZF,EAAE,GAAKE,IACFH,EAAEW,GAAKR,GAAK6hQ,GAAI,KACf9hQ,EAAIwI,EAAG1I,GAAK2uP,GAAGxuP,GAAA,OACnBH,EAAEM,GAAKH,EACPiD,EAAGpD,GACIE,CAAA,QAETF,EAAEW,EAAI,EACEX,EAAEM,EAAI,WAEPkC,IAAA,KACFY,EAAIQ,KAAK8O,GAAK9O,KAAK02B,EAAI,OACvBzoB,GAAK,QACLH,GAAK,OACLmY,GAAK,QACLrF,GAAK,OACLG,GAAK,QACLxR,GAAK,WAEHovB,IAAA,KACFhuB,GAAK,OACL1C,GAAK,QACLlR,EAAIiD,KAAKtD,EAAIsD,KAAKuS,GAAKvS,KAAK8a,GAAK9a,KAAK8N,GAAK,WAEzChJ,EAAG1I,GAAA,OACFA,EAAEuU,MAAQvU,EAAEM,EAAKo6Q,GAAK,KAAS,WAEhCxxQ,EAAGlJ,GAAA,OACVC,EAAED,EAAEmW,IAAMnW,EAAE0e,IACL1e,EAAEW,GAAMX,EAAEmW,IAAMnW,EAAE0e,IAAM1e,EAAEM,EAAIo6Q,EAAA,UAE9Bj3Q,EAAGzD,EAAGC,GACbD,EAAEM,EAAIL,EACND,EAAEW,EAAIuI,EAAGlJ,EAAA,UAEF+C,EAAG/C,GACVA,EAAEM,GAAKq6Q,KAAO16Q,EAAED,EAAEM,GAAKq6Q,IAAKv3Q,EAAGpD,GAAA,UAExBgD,EAAGhD,GACVC,EAAE,MAAQD,GAAK,MAAQA,EAAE6R,IACzB7R,EAAE0R,GAAK1R,EAAE2kB,IACH3kB,EAAEs6B,GAAKt6B,EAAE6R,GAAG7R,EAAE0R,MAAS1R,EAAEs6B,GAAK,KAAQ,EAAKt6B,EAAEoD,GAAK,IACnDnD,EAAE,MAAQD,GAAK,MAAQA,EAAE6R,IAC1B7R,EAAE0R,GAAK1R,EAAEwkB,IACHxkB,EAAEoD,GAAK,EAAKpD,EAAEs6B,EAAIt6B,EAAE6R,GAAG7R,EAAE0R,MAAS1R,EAAEs6B,GAAK,GAC3Ct6B,EAAEmT,GACDnT,EAAEoD,EAAI,GACLpD,EAAEs6B,IAAM,EAAKt6B,EAAEoD,GAAK,EAAKpD,EAAEmT,GAAK,aAEnCqvB,EAAExiC,GAAA,OACF8C,EAAG9C,EAAG,YAEN2H,EAAE3H,EAAGC,GAAA,IACRE,EAAIH,EAAE0S,GAAA,EACN1S,EAAEoD,GAAKJ,EAAGhD,GAAA,IACVE,EAAIF,EAAEoD,EACRhD,EAAKD,EAAIF,IAAO,EAChBM,GAAKP,EAAEs6B,IAAMp6B,EAAIE,GAAK,MACxBG,GAAMJ,GAAKC,EAAKJ,EAAEs6B,GAAOl6B,EAAI,GAAMF,IAAO,GAAOC,EAAIC,EAAI,EACzDF,EAAIC,EACCC,EAAI,EAAG,KAAOF,GAAME,GAAK,EAAKF,IAAM,SACzCA,EAAI,EAAKE,EAAIw6Q,GAAG16Q,GAChBF,EAAEoD,GAAKlD,EACPF,EAAE0S,IAAMvS,GAAKD,GAAK,EACXK,CAAA,UAEA+5B,EAAGt6B,EAAGC,EAAGE,GAChBH,EAAEC,EAAI,GAAME,GAAK,GAAM,IACvBH,EAAEC,EAAI,GAAME,GAAK,GAAM,IACvBH,EAAEC,EAAI,GAAME,GAAK,EAAK,IACtBH,EAAEC,EAAI,GAAME,GAAK,EAAK,aAEf80B,EAAGj1B,EAAGC,GAAA,OACLD,EAAEC,EAAI,IAAM,EAAMD,EAAEC,EAAI,IAAM,WAE/BuiB,EAAGxiB,EAAGC,GAAA,OACNg1B,EAAGj1B,EAAGC,GAAMD,EAAEC,EAAI,IAAM,YAExBkgE,EAAGngE,EAAGC,GAAA,OACNg1B,EAAGj1B,EAAGC,GAAMg1B,EAAGj1B,EAAGC,EAAI,IAAM,YAE5BgD,EAAGjD,EAAGG,GAAA,IACTD,EAAI,GAAKC,EAAA,OACbF,EAAE,MAAQD,GACVC,EAAE,EAAIE,GACNH,EAAEouC,EAAI7tC,EAAEL,GACJ,MAAQF,EAAEouC,EAAU,GACxBpuC,EAAEie,GAAK,GAAK9d,EACZH,EAAEuV,GAAKpV,EACA,YAEA+f,EAAGlgB,EAAGG,GACbF,EAAE,MAAQD,GACVC,EAAE,MAAQE,GACVF,EAAED,EAAEuV,IAAMpV,EAAEoV,IACZrV,EAAEC,EAAEiuC,EAAG,EAAGpuC,EAAEouC,EAAG,EAAG,GAAKjuC,EAAEoV,GAAA,UAElBvU,IAAA,KACFotC,EAAI,QACJ74B,GAAK3R,KAAKqa,GAAK,WAEb+Z,EAAGh4B,EAAGG,EAAGD,EAAGE,GACnBH,EAAE,MAAQC,GACVD,EAAE,MAAQG,GAAA,IACNG,EAAIL,EAAE,GACRM,EAAIJ,EAAE,aACHG,IAAMA,GAAKP,EAAIQ,EAAIL,EAAI,GAAKA,GAAA,GAC5BK,IAAMA,GAAKL,EAAII,EAAIP,EAAI,GAAKA,GAC7B,GAAKO,GAAK,GAAKC,EAAU,GAC7BN,EAAE,GAAKK,EACPH,EAAE,GAAKI,EACA,YAEAkP,EAAG1P,EAAGC,GAAA,OACLD,GAAK,GAAKC,GAAK,IAAOA,CAAA,UAEvBwC,EAAGzC,EAAGC,GAAA,QAEF,WAAJD,IAAuB,WAAJC,KAAqB,EAAK,cACxC,SAAJD,IAAqB,SAAJC,KAAmB,EAAK,YAC/C,WAGKukC,EAAEvkC,EAAGE,GACZH,EAAKG,GAAK,SAASA,EAAGD,EAAGE,EAAGG,EAAGC,EAAGH,EAAGI,GAAA,IAC/BH,EAAA,IACCA,EAAI,EAAGA,EAAIE,IAAKF,EAAG,KAClBK,EAAIX,EAAKC,GAAGI,EAAEI,EAAIH,EAAI,GAAIF,EAAGG,EAAID,GACrCD,EAAEI,EAAIH,GAAKmC,EAAGtC,EAAED,EAAII,GAAIK,EAAA,YAIrBksC,IAAA,KACFllB,GAAK/jB,KAAK0hB,GAAK1hB,KAAK8hB,GAAK,WAEvBwnB,EAAGltC,EAAGC,GAAA,QACO,YAATD,EAAIC,MAAqB,IAAMD,EAAIC,KAAQ,WAE/C2B,EAAG5B,GAAA,OACN,GAAKA,GAAK,IAAMA,EAAUA,EAC1B,EAAIA,EAAU,EACd,IAAMA,EAAU,oBAEbyJ,EAAGzJ,EAAGC,GAAA,OACN2B,EAAG5B,GAAMA,EAAIC,EAAI,IAAQ,aAEzBstC,EAAGvtC,EAAGC,EAAGE,GAAA,OACT2B,KAAKC,IAAI9B,EAAIE,GAAK2B,KAAKC,IAAI/B,EAAIG,EAAA,UAE/BktC,EAAGrtC,EAAGC,EAAGE,EAAGD,EAAGE,EAAGG,EAAGC,GAAA,IAC5BN,EAAIK,EAAEC,EAAI,GACLL,EAAI,EAAGA,EAAIC,IAAKD,EAAGI,EAAEC,EAAIL,GAAKD,EAAIuC,EAAGzC,EAAEC,EAAIE,GAAID,EAAA,UAE7C+3B,EAAGj4B,EAAGC,EAAGE,EAAGD,EAAGE,GAAA,IAClBG,EAAA,IACCA,EAAI,EAAGA,EAAIJ,IAAKI,EAAG,KAClBC,EAAIR,EAAEC,EAAIM,GACZF,EAAKG,GAAK,EAAK,IAGfC,EAAQ,UADRA,GADAA,EAAQ,SAAJD,KACMH,GAAK,IAAMA,IAEvBH,EAAEE,EAAIG,IAAW,WAAJC,GAAkBC,IAAO,YAGjC2J,EAAGpK,EAAGC,GACbA,EAAEylB,GAAM1lB,GAAK,EAAK,IAClBC,EAAEqlB,GAAMtlB,GAAK,EAAK,IAClBC,EAAE0nB,GAAM3nB,GAAK,GAAM,aAEZg1B,EAAGh1B,EAAGC,EAAGE,EAAGD,EAAGE,EAAGG,GAAA,IACrBC,EAAA,IACCA,EAAI,EAAGA,EAAIN,IAAKM,EAAG,KAClBH,EAAIJ,EAAEE,EAAIK,GACZC,EAAIJ,IAAM,EAEVC,EAAID,EAEJM,EAAQ,KADRA,GAFAA,EAAIN,IAAM,MAEEL,EAAE0lB,IAAM,IAAO,KAAQjlB,GAAK,IAAO,MAAS,IAIxDH,EAAQ,KADRA,GADAA,IAAYN,EAAEslB,IAAM,IAAO,KAAQ7kB,GAAK,IAAO,MAAS,KAC5CT,EAAE2nB,IAAM,IAAO,KAAQhnB,GAAK,IAAO,MAAS,IAE1DP,EAAEG,EAAIC,IAAU,WAAJH,IAAmBM,GAAK,IAAML,CAAA,WAGrC8tC,EAAGnuC,EAAGE,EAAGD,EAAGE,EAAGG,GACtBP,EAAKG,GAAK,SAASH,EAAGC,EAAGE,EAAGD,EAAGM,EAAGH,EAAGI,EAAGH,EAAGK,GAAA,IACpCT,EAAIO,EAAGP,EAAII,IAAKJ,EAAA,IACdO,EAAI,EAAGA,EAAIE,IAAKF,EAAGD,EAAEH,KAAOE,EAAEJ,EAAEC,EAAEJ,EAAEC,OAAA,EAE7CD,EAAKC,GAAK,SAASA,EAAGE,EAAGK,EAAGH,EAAGI,EAAGH,EAAGK,GAAA,IAC/BE,EAAI,GAAKZ,EAAEmD,EACb1C,EAAIT,EAAE2S,GACNhS,EAAIX,EAAEi+B,EAAE,GACR37B,EAAItC,EAAEuC,EAAA,GACJ,EAAI3B,EACN,IAAKZ,GAAK,GAAKA,EAAEmD,GAAK,EAAGb,GAAK,GAAK1B,GAAK,EAAGV,EAAIK,IAAKL,EAAG,KAEnD2C,EADExB,EAAI,MAEHwB,EAAI,EAAGA,EAAIpC,IAAKoC,EACnBA,EAAI7C,IAAMqB,EAAIlB,EAAEC,EAAEI,OAASH,EAAEK,KAAOJ,EAAEK,EAAEU,EAAIiB,IAAOjB,IAAMT,CAAA,MAE1Db,EAAK,eAAiBE,GAAGG,EAAGI,EAAGG,EAAG2B,EAAGjC,EAAGK,EAAGR,EAAGK,EAAGE,EAAA,WAGjDw9B,EAAGl+B,EAAGC,EAAGE,EAAGD,EAAGE,GAAA,IACjBD,EAAIF,EAAIE,EAAGF,EAAIE,GAAK,KACnBI,EAAIP,EAAEC,KACVC,EAAEE,KAAQG,GAAK,GAAM,IACrBL,EAAEE,KAAQG,GAAK,EAAK,IACpBL,EAAEE,KAAQG,GAAK,EAAK,cAGfgK,EAAGvK,EAAGC,EAAGE,EAAGD,EAAGE,GAAA,IACjBD,EAAIF,EAAIE,EAAGF,EAAIE,GAAK,KACnBI,EAAIP,EAAEC,KACVC,EAAEE,KAAQG,GAAK,GAAM,IACrBL,EAAEE,KAAQG,GAAK,EAAK,IACpBL,EAAEE,KAAQG,GAAK,EAAK,IACpBL,EAAEE,KAAQG,GAAK,GAAM,cAGhBO,EAAGd,EAAGC,EAAGE,EAAGD,EAAGE,GAAA,IACjBD,EAAIF,EAAIE,EAAGF,EAAIE,GAAK,KAErBI,GADEC,EAAIR,EAAEC,OACG,GAAM,IAASO,GAAK,GAAM,GACrCA,EAAMA,GAAK,EAAK,IAASA,GAAK,GAAM,GACtCN,EAAEE,KAAOG,EACTL,EAAEE,KAAOI,CAAA,WAGJmC,EAAG3C,EAAGC,EAAGE,EAAGD,EAAGE,GAAA,IACjBD,EAAIF,EAAIE,EAAGF,EAAIE,GAAK,KAErBI,GADEC,EAAIR,EAAEC,OACG,GAAM,IAASO,GAAK,GAAM,EACrCA,EAAMA,GAAK,EAAK,IAASA,GAAK,EAAK,GACrCN,EAAEE,KAAOG,EACTL,EAAEE,KAAOI,CAAA,WAGJi/D,GAAGz/D,EAAGC,EAAGE,EAAGD,EAAGE,GAAA,IACjBD,EAAIF,EAAIE,EAAGF,EAAIE,GAAK,KACnBI,EAAIP,EAAEC,KACVC,EAAEE,KAAQG,GAAK,EAAK,IACpBL,EAAEE,KAAQG,GAAK,EAAK,IACpBL,EAAEE,KAAQG,GAAK,GAAM,cAGhB2mP,GAAGlnP,EAAGC,EAAGE,EAAGC,EAAGG,EAAGC,GAAA,GACrB,GAAKA,EACP,IAAKL,EAAIF,EAAIE,EAAGF,EAAIE,GAEhBm6B,EACEl6B,IAFHI,EAAIR,EAAEC,MAGC,IAAM,GACNO,EAAE,IAAM,EAAK,MACbA,EAAE,IAAM,EAAK,SACdA,EAAE,IAAM,MACT,GAEHD,GAAK,QACPL,EAAEE,EAAGG,EAAGP,EAAGC,EAAGE,EAAA,UAEZ6vP,GAAG/vP,EAAGE,GACbH,EAAKG,GAAG,GAAKH,EAAKC,EAAI,KACtBD,EAAKG,GAAG,GAAKH,EAAKC,EAAI,KACtBD,EAAKG,GAAG,GAAKH,EAAKC,EAAI,KACtBD,EAAKG,GAAG,GAAKH,EAAKC,EAAI,KACtBD,EAAKG,GAAG,GAAKH,EAAKC,EAAI,KACtBD,EAAKG,GAAG,GAAKH,EAAKC,EAAI,KACtBD,EAAKG,GAAG,GAAKH,EAAKC,EAAI,KACtBD,EAAKG,GAAG,GAAKH,EAAKC,EAAI,KACtBD,EAAKG,GAAG,GAAKH,EAAKC,EAAI,KACtBD,EAAKG,GAAG,GAAKH,EAAKC,EAAI,KACtBD,EAAKG,GAAG,IAAMH,EAAKC,EAAI,MACvBD,EAAKG,GAAG,IAAMH,EAAKC,EAAI,MACvBD,EAAKG,GAAG,IAAMH,EAAKC,EAAI,MACvBD,EAAKG,GAAG,IAAMH,EAAKC,EAAI,MACvBD,EAAKG,GAAG,IAAMH,EAAKC,EAAI,KACvBD,EAAKG,GAAG,IAAMH,EAAKC,EAAI,cAEhBgwP,GAAGjwP,GAAA,OACHA,GAAK66Q,IAAM76Q,GAAK86Q,IAAM96Q,GAAK+6Q,IAAM/6Q,GAAKg7Q,EAAA,UAEtCl0B,KAAA,KACFvwO,GAAK,QACLk2B,KAAO7oC,KAAKsF,EAAItF,KAAK6S,GAAK,WAExBy5O,KAAA,KACFnvP,EAAI,QACJL,EAAI,QACJ0P,GAAK,QACL6kB,EAAI,QACJrR,GAAKhgB,KAAKq3Q,GAAKr3Q,KAAKs3Q,GAAKt3Q,KAAK0lB,GAAK1lB,KAAK0T,GAAK1T,KAAK2Z,GAAK3Z,KAAKuZ,GAAKvZ,KAAKyM,GAAKzM,KAAKoxB,EAAIpxB,KAAK2pC,EAAI3pC,KAAK2+B,EAAI3+B,KAAKX,EAAI,WAE7GktP,KAAA,KACFzkO,GAAK9nB,KAAKioB,OAASjoB,KAAKgoB,MAAQhoB,KAAKb,EAAI,OACzCrC,EAAI,CAAC,EAAD,KACJA,EAAEy6Q,KAAO,IAAIr0B,GAAA,KACbpmP,EAAE2W,GAAK,IAAI64O,GAAA,KACX/oO,GAAK,cAEH27N,KAAA,KACFl3N,MAAQ,CAAC,QACTC,OAAS,CAAC,QACVV,GAAK,CAAC,QACNC,GAAK,CAAC,QACNpkB,OAAS,CAAC,YAERopP,KAAA,KACFzmO,GAAK/lB,KAAKwhB,GAAKxhB,KAAKomB,GAAKpmB,KAAKqT,GAAKrT,KAAKsT,GAAKtT,KAAKsM,GAAKtM,KAAKkhB,GAAKlhB,KAAKmhB,GAAKnhB,KAAKu8D,EAAIv8D,KAAKjC,EAAIiC,KAAK+O,GAAK/O,KAAKw3Q,GAAKx3Q,KAAKoU,GAAK,WAEzH6kP,GAAG78P,GAAA,OACVsqN,MAAM,gCACCtqN,EAAE6sC,CAAA,UAEFyjN,GAAGtwP,EAAGC,GAAA,IACTE,EAAIH,EAAE6sC,EACRzsC,EAAIH,EAAEy1B,GAAGh1B,EAAEy6Q,KACX56Q,EAAIH,EAAEmW,GACN/V,EAAIJ,EAAEqW,GAAKzW,EAAE6Q,GAAKzQ,EAAE8I,EACpB7I,EAAIilC,GAAErlC,EAAEy1B,GAAG3yB,GACXtC,EAAIT,EAAEe,EACNT,EAAIN,EAAEiD,EACNtC,EAAIX,EAAEU,EACNG,EAAIb,EAAEuiC,EACN7hC,EAAIV,EAAEoQ,GACNxP,EAAIZ,EAAEutC,EACNhrC,EAAItC,EAAE6f,GACNhd,EAAI7C,EAAE+f,GACN1e,EAAIrB,EAAEijB,GACNvhB,EAAI1B,EAAEkjB,GACN/f,EAAIpD,EAAE6Q,GACN9P,EAAIf,EAAE6Q,GAAK7Q,EAAE6sC,EACbrqC,EAAIxC,EAAEktC,EACN3K,EAAK//B,EAAI,GAAM,SACZY,EACD/C,EAAEI,EAAGH,EAAG,KAAM,KAAMK,EAAGE,EAAGH,EAAGE,EAAGD,EAAGE,EAAGH,EAAGE,EAAGL,EAAGC,EAAG,KAAM,KAAMgC,IAC7DnC,EAAEJ,EAAEmgB,GAAIngB,EAAEqgB,GAAI7f,EAAGH,EAAGiC,EAAGO,EAAGxB,EAAGK,EAAGhB,EAAGE,EAAGH,EAAGE,EAAGL,EAAGC,EAAIJ,EAAE8I,EAAG3I,EAAGC,EAAGgC,KAC7DrC,GACCiD,EAAI,EAAIrC,EAAGqC,GAAK,EACpBb,EAAI5B,EACFmC,EAAIjC,EACJS,EAAIZ,EACJiB,EAAIf,EACJC,GAAKb,EAAEwjB,GACP5iB,GAAKZ,EAAEwjB,GACPhjB,GAAK,EAAIJ,EAAE8I,EAEZ7I,EAAEI,GADDH,GAAK,EAAIN,EAAEqQ,IACHrQ,EAAEqQ,GAAI5P,EAAGH,EAAGiC,EAAGO,EAAGxB,EAAGK,EAAGhB,EAAGE,EAAGH,EAAGE,EAAGL,EAAGC,EAAIJ,EAAE8I,EAAG3I,EAAGC,EAAGgC,GAAA,OACnElC,GAAKN,EAAEqQ,GACPrQ,EAAEmgE,EAAIp/D,EAAIf,EAAEQ,GACPN,EAAED,EAAEmgB,GAAIngB,EAAEqgB,GAAI7f,EAAGH,EAAGkC,GACrBtC,EAAED,EAAE6f,GAAI7f,EAAE+f,GAAIrf,EAAGE,EAAG0hC,GACpBriC,EAAED,EAAEijB,GAAIjjB,EAAEkjB,GAAIziB,EAAGE,EAAG2hC,GACpBpiC,KACI,EAAJY,GACAV,EACEI,EACAH,EACA,KACA,KACAK,EACAE,EACAH,EACAE,EACAD,EACAE,EACAH,EACAE,EACAL,EACAC,EAAIJ,EAAE8I,EACN,KACA,KACA1G,GAECrC,CAAA,UAEA8jP,GAAGjkP,EAAGG,EAAGD,GAAA,IACZE,EAAIJ,EAAEi1B,EACR10B,EAAI,CAACP,EAAEg1B,GAAA,GACL,MAAQ50B,EAAG,KACTI,EAAIR,EAAEktC,EACR7sC,EAAIF,EAAEu1B,GAAG3yB,EACTtC,EAAIJ,GAAKg7Q,IAAMh7Q,GAAK06Q,GACtB56Q,EAAIA,EAAEu1B,GAAGh1B,EAAEy6Q,KAAA,IACP76Q,EAAI,CAAC,GACPK,EAAIX,EAAE6Q,GACRvQ,EAAE,GAAKN,EAAE6sC,EACT7sC,EAAE+d,KACC,GAAKpd,IAAML,EAAE,MAAQK,EAAIJ,EAAE,IAAMP,EAAE4rB,OACpC5rB,EAAEmgE,EAAIngE,EAAE6Q,GAAK7Q,EAAE6sC,GAAK7sC,EAAEQ,IAAMF,EAAE,GAAKN,EAAEQ,EAAIR,EAAEmgE,EAAIx/D,IAAA,IAC7CE,EAAIV,EAAEoW,GACR5V,EAAIR,EAAEsW,GAAK9V,EAAIR,EAAE+I,EACnBlJ,EAAIs7Q,GAAGl7Q,EAAGG,EAAE,GAAIP,EAAE4rB,MAAOprB,EAAGF,EAAGO,EAAGF,GAAKF,EAAI,EAAI,GAAIN,EAAE+I,GACrDjJ,EAAEC,GAAKI,GACPN,GAAKiwP,GAAG5vP,IAAMk7Q,GAAG16Q,EAAGF,EAAGF,EAAGD,EAAGF,EAAGH,EAAE+I,EAAA,QAE7B,WAEAsnP,GAAGxwP,GAAA,IACNC,EAAID,EAAE+Q,GACR5Q,EAAIF,EAAEy1B,GAAG3yB,EACT7C,EAAI,GAAKC,EACTC,EAAID,GAAKq7Q,IAAMr7Q,GAAKs7Q,IAAMt7Q,GAAKk7Q,IAAMl7Q,GAAKu7Q,IAAM,IAAMv7Q,GAAK8vP,GAAG9vP,GAAA,GAChEF,EAAE07Q,OAAS,KACX17Q,EAAE4d,GAAK,KACP5d,EAAE6d,GAAK,KACP7d,EAAE4qB,GAAK,MACFu3O,GAAGniQ,EAAEyT,GAAI1T,EAAGI,EAAI,GAAK,IAAK,OAAO,KACtCA,GAAK6vP,GAAG9vP,IAAMwb,KACV3b,EAAEkQ,GAAIo6M,MAAM,wBACX,IACCpqN,GAAA,GACID,EAAE4d,GAAKg/O,GAAK78P,EAAE+d,GAAK,IACvB5d,EAAKH,EAAEktC,EAAI,GAAM,EACjBjtC,EAAE07Q,OAASp7Q,EAAEP,EAAEktC,EAAI,EAAI/sC,GACnB,MAAQF,EAAE07Q,OAAQ,OAAO,EAC7B17Q,EAAEmgB,GAAKngB,EAAE07Q,OACT17Q,EAAEqgB,GAAK,EACPrgB,EAAE6f,GAAK7f,EAAEmgB,GACTngB,EAAE+f,GAAK/f,EAAEqgB,GAAKtgB,EAAEktC,EAChBjtC,EAAEijB,GAAKjjB,EAAE6f,GACT7f,EAAEkjB,GAAKljB,EAAE+f,GAAK7f,EACdF,EAAE4d,GAAKyyO,GACP30O,IAAA,OAEG2uM,MAAM,gBACblqN,IAAOH,EAAE6d,GAAKmmO,GAAK/jP,GAAKi/P,KAAA,IAEtBj/P,IAAM2lC,GAAI,KACP7lC,EAAI,EAAG,IAAMA,IAAKA,EACpBmkC,GAAGnkC,GAAM,OAASA,EAAI,KAAO6pD,IAAOvhB,GAClCV,GAAG5nC,IAAM,OAASA,EAAI,KAAO6pD,GAC7BjkB,GAAG5lC,IAAM,OAASA,EAAI,KACtBgoC,GAAGhoC,GAAM,QAAUA,EAAI,KAAO6pD,IAAOvhB,GAAA,IACrCtoC,EAAIioC,GAAIjoC,EAAIokC,KAAMpkC,EACpBC,EAAK,OAASD,EAAI,IAAM6pD,IAAOvhB,GAC7BvC,GAAG/lC,EAAIioC,IAAMwmN,GAAGxuP,EAAG,KACnB6kC,GAAG9kC,EAAIioC,IAAMwmN,GAAIxuP,EAAI,GAAM,EAAG,IACnC4lC,GAAK,SAEA,WAEAq+M,GAAGlkP,GAAA,IACNG,EAAIH,EAAE+Q,GACR7Q,EAAIF,EAAEktC,EACN9sC,EAAIJ,EAAE6sC,EAAA,OACR5sC,IAAW,EAAPD,EAAE6Q,KACF,GAAK3Q,GAAK,GAAKE,EAAU,GAC7BF,EAAIC,EAAE0d,GAAG7d,EAAGG,GAAA,MACJA,EAAE2d,IAAM3d,EAAE2d,GAAG9d,EAAGG,EAAGD,GAC3BC,EAAEsiB,IAAMviB,EACD,YAEAywP,GAAG3wP,GACVA,EAAE+Q,GAAG4qQ,OAAS,cAEP9qB,GAAG7wP,EAAGC,EAAGE,EAAGD,GAAA,OACf,IAAMa,EAAEf,EAAG,GAAW,GAC1BC,EAAE,GAAKc,EAAEf,EAAG,IAAM,EAClBG,EAAE,GAAKY,EAAEf,EAAG,IAAM,EAClBE,EAAE,GAAKa,EAAEf,EAAG,GACL,GAAKe,EAAEf,EAAG,GAAK,GAAKA,EAAEW,EAAA,UAEtBmwP,GAAG9wP,EAAGC,GAAA,GACT,EAAID,EAAG,OAAOA,EAAI,MAClBG,EAAKH,EAAI,GAAM,SACV,GAAS,EAAJA,IAAWG,GAAKY,EAAEd,EAAGE,GAAK,WAEjC4wP,GAAG/wP,EAAGC,GAAA,OACT,IAAMA,EAAUA,EAAI,IAGjB,IADLE,IADEA,EAAIy7Q,GAAG37Q,EAAI,KACH,GAAKD,GAAK,GAAS,GAAJG,KACXA,EAAI,MADlBA,CAAA,UAGK2uL,GAAG9uL,EAAGC,EAAGE,GAAA,IACZD,EAAIwI,EAAGvI,GAEPC,EAAIJ,EADRC,GAAS,IAAJC,GACQ4C,EAAI,WACb1C,IACDqD,EAAGtD,EAAGA,EAAEG,EAAI,GACZJ,EAAIwI,EAAGvI,GACPF,GAAKD,EAAEC,GAAGgM,MACVhM,GAAKC,GAAM,GAAKE,GAAK,GACxBqD,EAAGtD,EAAGA,EAAEG,EAAIN,EAAEC,GAAG6C,GACV9C,EAAEC,GAAGgM,KAAA,UAELklP,GAAGnxP,EAAGG,EAAGD,GAAA,OAChBA,EAAE4C,GAAK9C,EAAE8C,EACT5C,EAAE+L,OAAUjM,EAAEiM,OAAS9L,IAAO,EAC9BF,EAAE,GAAKC,EAAE4C,GACF9C,EAAE8C,CAAA,UAEFsuP,GAAGpxP,EAAGG,EAAGD,GAAA,IACZE,EAAIJ,EAAEkiB,GAAA,OAEVjiB,GADAE,EAAI,GAAKC,EAAI,EAAIJ,EAAEiiB,GAAGjiB,EAAE6lB,IAAM3lB,GAAKE,IAAMD,GAAKC,KACxCJ,EAAEgf,IACDhf,EAAE0V,GAAGvV,EAAA,UAELoxP,GAAGvxP,EAAGG,EAAGC,EAAGG,GAAA,IACfC,EAAIR,EAAEkW,GACR7V,EAAIL,EAAES,EAAIN,EACVM,EAAIT,EAAEwiB,EACRriB,EAAIM,EAAIN,EAAA,IACJG,EAAIF,EACNO,EAAIJ,EAAA,IACNA,EAAIP,EAAEyU,GACDrU,EAAIJ,EAAEoV,GAAI,EAAI5U,KAAO,KACpBK,EAAIb,EAAEwgB,GAAGhgB,GACXE,EAAID,EACJG,EAAIT,EACJoC,EAAIjC,EACJwC,EAAInC,EAGJW,GAFAX,EAAIJ,EACJD,EAAIF,EACAS,EAAE+R,IAAA,OACR3S,EAAES,EAAIE,GACNX,EAAEW,GAAKC,EAAEiiE,IACDjiE,EAAE6f,IAAA,KACH,EACHm7P,GAAGt5Q,EAAGO,GAAIlC,EAAIF,GAAKY,EAAGX,EAAGL,GAAA,WAEtB,MAEDqB,EAAIjB,EACJ0C,EAAIxC,EACJG,EAAIJ,EACJ6B,EAAIlC,EACJiiC,GALEv/B,EAAInC,GAKA+R,GAAA,GACHjR,IACFm6Q,GAAGv5Q,EAAGO,EAAG,KAAM,KAAM,EAAG/B,EAAGyB,GAC5B6qC,EAAG9qC,EAAGO,EAAI,EAAG,EAAG,EAAGy/B,EAAI,EAAGxhC,EAAGyB,EAAI,GAChCM,GAAKy/B,EACL//B,GAAK+/B,IACJ5gC,GAAA,IAEF,IAAI+G,EAAI,GAAK1F,EAAEI,EACb8F,EAAIR,EAAI,EACRjF,EAAIiM,EAAG6yB,EAAGv/B,EAAEI,GACZL,EAAIC,EAAEk7B,EACNl7B,EAAIA,EAAER,GAAKb,GAAKqB,EAAEI,GAAKK,EACzB9B,EAAIyB,GAEJ,KACIo/B,EAAIz/B,EACN4E,EAAI3E,EACJs3B,EAAI,MACDyhP,GAAGx5Q,EAAGO,EAAG/B,EAAGyB,EAAI+/B,EAAG,EAAGxhC,EAAGyB,GAAI83B,EAAIiI,GAAK,KAEvCtN,GAAKqF,GAAKpxB,GAAKR,EACjBusB,EAAIsN,IAAMtN,EAAIsN,IAAA,EAFNy5O,GAAIx5O,EAAE76B,MAAQ,EAAK,KAGzBpF,EAAGO,IAAKw3B,EAAGv5B,EAAGyB,EAAI83B,EAAIiI,EAAGtN,EAAIqF,EAAGv5B,EAAGyB,EAAI83B,GACzCA,EAAIrF,CAAA,CAENnyB,GAAKy/B,EACL//B,GAAK+/B,IACH5gC,EACEuH,IAAMlG,GAAKS,EAAA,CAEjB7C,GAAKC,EAAEiiE,IAAM5iE,EAAES,EAAGL,EAAIgB,EAAGX,EAAGL,GAAKM,EAAIF,EAAI,GAAKY,EAAGA,GAAA,WAE9C,MACHA,EAAIiB,EACJa,EAAIN,EAKJy/B,GAJAhgC,EAAI1B,EAAE+R,KAGNpQ,EAAID,IADJxB,GADA+B,EAAI,GAAKjC,EAAEuC,GACH,IAGRzB,EAAI+N,EAAGnN,EAAG1B,EAAEuC,GACZsF,EAAI7H,EAAEq9B,EACDr9B,EAAIA,EAAE2B,GAAK9B,GAAKG,EAAEuC,GAAKzB,EAAGjB,EAAIE,GAAK,KACtCsI,EAAIR,EACJjF,EAAI5C,EACJkC,EAAI,IAAI8pC,EACR7pC,EAAII,EAAIZ,EACHggC,EAAIp/B,EAAIb,EAAGa,EAAIJ,GAClBoH,EAAGlB,EAAEzF,KAAMV,GAAIk5Q,GAAGl5Q,EAAGzB,EAAG8B,EAAGN,EAAGnC,EAAGL,GAAK8C,GAAKN,EAAKxC,GAAKwC,EACvDM,EAAIo/B,IACDp4B,EAAGlB,EAAEzF,KAAMV,GAAIk5Q,GAAGl5Q,EAAGzB,EAAG8B,EAAGm/B,EAAG5hC,EAAGL,GAAK8C,GAAKm/B,EAAKjiC,GAAKiiC,KACtD7hC,EACEK,IAAMF,GAAKc,EAAA,YAGd,KACCY,GAAK5B,GAAKmC,GAAKxC,GAAK,EAAIO,EAAEuC,EAAG,KAG/BA,EAAIzC,EACJ4B,EAFAjB,EAAIhB,GAAKM,EAAIF,GAAKY,GADlBkB,GAAK5B,EAAIF,GAAKgP,EAAG7O,EAAE+R,GAAI/R,EAAEuC,IAIzBN,EAAInC,EACJI,EAAIT,EAEJqB,EAAI,GACCa,GAFL+/B,EAAI//B,GAES,EAAG,GAAKA,IAAKA,EAAGb,EAAEa,GAAKM,EAAE/B,EAAIyB,GAAA,IACrCA,EAAI+/B,EAAI,EAAG,GAAK//B,IAAKA,EAAGY,EAAEb,EAAIC,GAAKb,EAAEa,GAC1C05Q,GAAGr7Q,EAAGH,EAAGE,EAAGD,EAAGW,EAAGX,EAAGL,EAAA,MAChB47Q,GAAGr7Q,EAAGH,EAAGE,EAAG2B,EAAGO,EAAGnC,EAAGL,GAEhCA,EAAIC,EACJI,EAAIP,CAAA,CAENO,GAAKP,GAAKF,EAAEK,EAAGH,EAAGE,EAAGK,EAAGN,EAAA,UAEjBmxP,GAAGxxP,EAAGG,GAAA,IACTD,EAAIF,EAAEqtC,EACRjtC,EAAIJ,EAAEyS,GAAKzS,EAAES,EAAIT,EAAEwiB,EACnBjiB,EAAIJ,EAAIH,EAAEwiB,EAAA,GACZviB,EAAEE,GAAKH,EAAEa,EAAEL,GACXP,EAAE,IAAMM,GACJ,EAAIA,EAAG,KACLC,EAAIR,EAAEa,EACRR,EAAIL,EAAEyU,GACNhU,EAAIT,EAAEoV,GACN9U,EAAIE,EAAEorB,MAAA,GACR2lO,GAAGvxP,EAAGO,EAAGL,EAAGE,GAIZG,EAHAE,EAAI,CAACA,GAILR,GAHAC,EAAIF,EAAEwiB,IACNpiB,EAAID,IAGJF,EAAEO,EAAEmB,EAAInB,EAAE4R,IACVhS,EAAII,EAAEA,IAAMJ,EAAII,EAAEA,GACdN,EAAIM,EAAE2/D,EAAG,KACPx/D,EAAIH,EAAE2/D,EAAIjgE,EACZA,EAAIM,EAAE2/D,EACR5/D,EAAE,IAAMI,EAAIL,CAAA,IAEdJ,GAAKE,EACAF,EAAI,GACHK,EAAE,IAAM,EAAIC,EAAEmB,EACfnB,EAAEqQ,GAAK3Q,EAAIM,EAAE2/D,EACb3/D,EAAE0sC,EAAI1sC,EAAE4R,GAAK5R,EAAEmB,EACfnB,EAAEqsC,EAAIzsC,EAAIF,EACVA,EAAI,GACLA,EAAG,IACLO,EAAIA,EAAE,GAEF,IADJP,EAAIF,EAAEgQ,IACKjN,EAAG,CAEV,IAAIlC,EAAIX,EAAEQ,EAAEy6Q,KAKVz6Q,GAJAN,EAAIF,EAAE6C,EACNxC,EAAIC,EAAE0sC,EACN1sC,EAAIA,EAAEqsC,EACNlsC,EAAIE,EAAE0V,GACF1V,EAAEqI,GACNtI,EAAIJ,EAAA,IACJK,EAAIA,EAAE4V,GAAKzW,EAAEsT,GAAKzS,EAAEqI,EACtB,EAAItI,KAEJ,KACI2B,EAAIlC,EACNyC,EAAIrC,EACJa,EAAIf,EACJoB,EAAIhB,EACJyC,EAAIvC,EAAA,OACET,GAAA,KACD+7Q,GACHC,GAAG75Q,EAAGO,EAAGxB,EAAGK,EAAGyB,GAAA,WAEZo4Q,GACHa,GAAG95Q,EAAGO,EAAGxB,EAAGK,EAAGyB,GAAA,WAEZy3Q,GACHwB,GAAG95Q,EAAGO,EAAGxB,EAAGK,EAAGyB,GACfm4Q,GAAG55Q,EAAGyB,EAAG,EAAG9B,EAAG,EAAG,cAEfg7Q,GACHC,GAAGh6Q,EAAGO,EAAGxB,EAAGK,EAAGyB,GAAA,WAEZq4Q,GACHv0B,GAAG3kP,EAAGO,EAAGxB,EAAGK,EAAGyB,EAAG,cAEf03Q,GACH5zB,GAAG3kP,EAAGO,EAAGxB,EAAGK,EAAGyB,EAAG,GAClBm4Q,GAAG55Q,EAAGyB,EAAG,EAAG9B,EAAG,EAAG,cAEf+5Q,GACHn0B,GAAG3kP,EAAGO,EAAGxB,EAAGK,EAAGyB,EAAG,cAEf23Q,GACH7zB,GAAG3kP,EAAGO,EAAGxB,EAAGK,EAAGyB,EAAG,GAClBm4Q,GAAG55Q,EAAGyB,EAAG,EAAG9B,EAAG,EAAG,cAEfo6Q,GACH1zQ,GAAGzF,EAAGO,EAAGxB,EAAGK,EAAGyB,GAAA,WAEZ43Q,GACHhzQ,GAAGzF,EAAGO,EAAGxB,EAAGK,EAAGyB,GACfo5Q,GAAG76Q,EAAGyB,EAAG9B,EAAG,EAAG,cAEZm7Q,GACHC,GAAGn6Q,EAAGO,EAAGxB,EAAGK,EAAGyB,GAAA,cAGfnD,EAAE,GAENQ,GAAKH,EACLO,GAAKH,CAAA,CAEPV,EAAEsT,IAAM9S,CAAA,MACH8pN,MAAM,6BACbrqN,EAAED,EAAEsT,IAAMpT,EAAE2rB,OAAA,EAGhB7rB,EAAEwiB,EAAIriB,EACNF,EAAED,EAAEwiB,GAAKxiB,EAAEI,EAAA,UAEJuxP,GAAG3xP,GAAA,IACNC,EAAA,GACA,EAAID,EAAEkS,GAAI,OAAO,MAChBjS,EAAI,EAAGA,EAAID,EAAEgf,KAAM/e,EAAG,KACrBE,EAAIH,EAAE0V,GAAGzV,GAAGg4B,EACd/3B,EAAIF,EAAE0V,GAAGzV,GAAGwJ,EAAA,GAEZ,EAAItJ,EAAE,GAAGD,EAAE,GAAK,GAAG4C,GACnB,EAAI3C,EAAE,GAAGD,EAAE,GAAK,GAAG4C,GACnB,EAAI3C,EAAE,GAAGD,EAAE,GAAK,GAAG4C,EAEnB,OAAO,SAEJ,WAEAivP,GAAG/xP,EAAGG,EAAGD,EAAGE,EAAGG,EAAGC,GAAA,GACrB,GAAKR,EAAEuK,EAAG,KACRlK,EAAIL,EAAEmmB,GACR1lB,EAAIT,EAAEomB,GAAA,IACHnmB,EAAE,MAAQskC,GAAGvkC,EAAEuK,IAAKpK,EAAID,IAAKC,EAChCokC,GAAGvkC,EAAEuK,GAAGlK,EAAGI,EAAGL,EAAGG,EAAGH,EAAGG,EAAGC,GAAKH,EAAID,EAAKK,EAAIF,EAAKA,GAAKC,EACxDR,EAAEmmB,GAAK9lB,EACPL,EAAEomB,GAAK3lB,CAAA,WAGFgyP,GAAGzyP,EAAGG,GAAA,IACTD,EAAIF,EAAEa,EAAEkQ,GACV3Q,EAAI,GAAKF,EAAEqK,GAAK,GAAKrK,EAAEqK,EAAIvK,EAAEa,EAAEs/D,EAAIngE,EAAEwiB,EACjB,GAApBpiB,EAAIJ,EAAEwiB,EAAIpiB,EAAIA,EAAIJ,EAAEwiB,EACtBviB,EAAEE,GAAKH,EAAEa,EAAEL,GACPL,EAAIC,EAAG,KACLG,EAAIP,EAAEa,EAAE+qB,MACVprB,EAAIN,EAAE8P,GACN3P,EAAIH,EAAEqb,GAAKhb,EAAIH,EACfK,EAAIT,EAAEqtC,EACN/sC,EAAIN,EAAEyS,GAAKzS,EAAES,EAAIL,EACjBO,EAAIX,EAAEwgB,GACRvgB,EAAE,GAAKD,EAAEkW,IACTjW,EAAE,GAAKU,EAAE,GAAG+f,IACZi8P,GAAGh8Q,EAAE,GAAIP,EAAGD,EAAGM,EAAGH,EAAGE,EAAGH,GACxB0xP,GAAG7xP,EAAGE,EAAGD,EAAGK,EAAGH,EAAGE,EAAA,CAEpBP,EAAEwiB,EAAIxiB,EAAEsT,GAAKnT,CAAA,UAENuuP,GAAG1uP,EAAGG,EAAGD,EAAGE,EAAGG,EAAGC,EAAGH,GAAA,IACxBI,EAAIT,EAAEc,EAAIV,EACZE,EAAIN,EAAEc,EAAIV,EACVO,EAAIX,EAAEsB,EACNT,EAAIb,EAAEK,EACNK,EAAIR,EAAIF,EAAEc,EACVF,EAAIF,EACNH,EAAIL,EAAIE,EAAIG,EAAA,IACRgC,EAAIrC,EAAIE,EAAII,EACdsC,EAAI,IAAMjC,EAAEqR,GACZ5Q,EAAItB,EAAEue,GAAK9d,EAAI,SACfkB,EAAI,EAAId,EAAEqR,GAAKrR,EAAEwU,GAAK,KACtBjS,EAAIvC,EAAEowC,GACNlwC,EAAIL,EAAI6B,EAAI6uP,GAAGvwP,EAAGP,EAAGG,GAAK,KAC5BR,EAAED,EAAEwiB,EAAIhiB,GACRP,EAAEsC,GAAKhC,GAAA,IACHiC,GAAA,EACJxC,EAAG,OAAS,MACHwC,GAAK9B,EAAI6B,GAAK,KACfggC,EAAI,KACJ9hC,GAAKa,EAAG,KAER0B,EAAItC,EAAIR,EACVD,GAFIqB,EAAItB,GAEJue,IACJjd,EAAE0lB,GAAK1lB,EAAEA,EACTA,EAAE2lB,GAAKjkB,EAAA,EACH1B,EAAEjB,EAAE6R,IAAMgO,EAAG5e,EAAEjB,EAAEgV,GAAI/T,EAAEjB,EAAEoc,IAC7Bnb,EAAIb,EAAI2kC,EAAA,IAEV9kC,EAAI8C,IAAMrC,EAAIqwP,GAAGvwP,EAAGP,EAAGG,IACvBR,EAAE,MAAQc,GACVA,EAAEyd,KAAQre,EAAEO,GAAKK,EAAEia,GAAMxY,GAAA,IACpBA,EACH,GAAKO,EAAGpC,GAAII,EAAE+f,GAAK,CACbyhB,EAAI5hC,EACNqC,EAAI7C,EAAA,IACJqiC,EAAI9hC,EACJiH,EAAI5G,EAAEmlB,GAAGxd,EAAG65B,GAAMw/N,GAAK,GACzB9hQ,EAAEc,EAAE+f,IAAA,IACEnZ,EAAE7E,GACHW,EAAG8+B,EAAGA,EAAEjiC,EAAIqH,EAAE7E,GAAKE,EAAEw/B,GAAK76B,EAAEsE,MAASs2B,EAAI,IACzC9+B,EAAG8+B,EAAGA,EAAEjiC,EAAIqH,EAAE7E,EAAI,KAAM7C,EAAE,KAAO0H,EAAEsE,OAASs2B,EAAI56B,EAAEsE,OAAA,GAClDs2B,IAAM//B,GAAA,EAAI,MACV+/B,EAAIusJ,GAAG/tL,EAAEk3B,EAAE,GAAIl3B,EAAE0I,EAAE,GAAI9I,GAAA,GAC5BA,EAAEA,EAAG,SACL6B,GAAK,IAAM+/B,EAAG,KACX//B,EACH,GAAIzB,EAAE+kB,GAAI3lB,EAAEO,IAAMK,EAAEia,GAAMunB,GAAK,KAAQ,MAClC,IACHx/B,EAAGpC,GACH6B,EAAIssL,GAAG/tL,EAAEk3B,EAAE,GAAIl3B,EAAE0I,EAAE,GAAI9I,GACvBoC,EAAGpC,GACHqC,EAAI8rL,GAAG/tL,EAAEk3B,EAAE,GAAIl3B,EAAE0I,EAAE,GAAI9I,GACvB6hC,EAAIssJ,GAAG/tL,EAAEk3B,EAAE,GAAIl3B,EAAE0I,EAAE,GAAI9I,GACnBA,EAAEA,EAAG,MACTR,EAAEO,IAAO8hC,GAAK,GAAOhgC,GAAK,GAAO+/B,GAAK,EAAKv/B,KAAO,KAEtDR,GAAA,IACE9B,IACAJ,GAEKF,IACHE,EAAI,IACJG,EACF,MAAQJ,GAAKI,GAAKD,KAAOC,EAAI,KAAOJ,EAAEL,EAAGS,GACzC,MAAQkB,GAER,KAAOf,EAAIF,GACR6hC,EAAIpiC,EAAES,KACJe,EAAEysC,GAAI,UAAY7L,EAAK,cAAgB5gC,EAAEsc,IAAMskB,CAAA,MACjD,GAAI,IAAMA,EAAG,IAClBA,EAAIuuN,GAAGvuN,EAAI,IAAK5hC,GAChBqC,EAAI8rL,GAAG/tL,EAAEk3B,EAAE,GAAIl3B,EAAE0I,EAAE,GAAI9I,GACvBoC,EAAGpC,GAEHqC,EAAI+tP,GAAG3wP,EADP4C,EAAI8tP,GAAG9tP,EAAGrC,IAENA,EAAEA,EAAG,SACLD,EAAIR,EAAI8C,GAAKzC,EAAIG,EAAI6hC,EAAG,MAAMviC,EAC7B,IAAKwiC,EAAI,EAAGA,EAAID,IAAKC,EAAGriC,EAAEO,EAAI8hC,GAAKriC,EAAEO,EAAI8hC,EAAIx/B,GAAA,IAClDtC,GAAK6hC,EACAjiC,GAAKiiC,EAAGjiC,GAAKF,GACfE,GAAKF,IAAMK,EAAG,MAAQJ,GAAKI,GAAKD,KAAOC,EAAI,KAAOJ,EAAEL,EAAGS,GAAA,GAC1DR,EAAES,GAAKH,GACPD,EAAI8C,IAAMrC,EAAIqwP,GAAGvwP,EAAGP,EAAGG,IACnB,MAAQkB,EACV,KAAOf,EAAIF,GACR6hC,EAAIpiC,EAAES,KACJe,EAAEysC,GAAI,UAAY7L,EAAK,cAAgB5gC,EAAEsc,IAAMskB,CAAA,KACjD,MAAIA,EAAIz/B,GASR,MAAM9C,EAAA,IARXwC,EAAI+/B,EAAI,IACHtiC,EAAE,MAAQ0B,GAAIf,EAAIF,GACpB6hC,EAAIpiC,EAAES,KAAQe,EAAEysC,GAAI,UAAY7L,EAAK,cAAgB5gC,EAAEsc,IAAMskB,EAChEA,EAAI7hC,EAEJT,IAAIuC,KADJQ,EAAIrB,GACQ4T,KACZpV,EAAEoiC,GAAKv/B,EAAEorC,EAAE5rC,GACXA,GAAA,CAAI,CAENA,GAAKvC,EAAEU,EAAEA,GAAKuI,EAAGvI,GAAA,IAEfX,EAAEue,IAAM5d,EAAEA,GAAKD,EAAIH,EACrBN,EAAED,EAAEsB,EAAEX,GACHX,EAAEO,EAAI,EACNP,EAAEsB,EAAItB,EAAEgnB,GACRhnB,EAAEc,EAAId,EAAEinB,GACT,EAAIjnB,EAAEK,EAAE6R,IAAMgO,EAAGlgB,EAAEK,EAAEoc,GAAIzc,EAAEK,EAAEgV,QAC5B,IAAI1U,EAAEA,EAAG,MAAMX,EACf,MAAQK,GAAKA,EAAEL,EAAGS,EAAID,EAAIA,EAAIC,GAAKT,EAAEO,EAAI,EAAKP,EAAEc,EAAIJ,EAAIR,CAAA,QACtD,SAETF,EAAEO,EAAI,EACC,WAEAmyP,GAAG1yP,GACVC,EAAE,MAAQD,GACVA,EAAEiiB,GAAK,KACPjiB,EAAEmiB,GAAK,KACPniB,EAAE0V,GAAK,SACHvV,EAAIH,EAAEqV,GAAA,MACFlV,IAAMA,EAAEiuC,EAAI,MACpBpuC,EAAEyc,GAAK,KACPxc,EAAE,MAAQD,EAAA,UAEH2yP,KAAA,IACH1yP,EAAI,IAAI29P,GAAA,OACR,MAAQ39P,EAAU,MACtBA,EAAEM,EAAI,EACNN,EAAE2c,GAAKonB,GACPgsN,GAAG,YAAa,kBAChBA,GAAG,YAAa,oBAChBA,GAAG,eAAgB,qBACnBA,GAAG,eAAgB,uBACnB6rB,GAAK5jP,EACLgkP,GAAKjnP,EACLonP,GAAKl+O,EACLm+O,GAAK9xQ,EACLvC,GAAKlH,EACL47Q,GAAK/5Q,EACL45Q,GAAK98M,GACLz/D,EAAK48Q,gBAAkBC,GACvB78Q,EAAK88Q,eAAiBC,GACf98Q,EAAA,UAEA2yP,GAAG5yP,EAAGG,EAAGD,EAAGG,EAAGI,GAAA,IAClBH,EAAI,EACNI,EAAI,CAACV,GACLuC,EAAI,CAACpC,GACL2C,EAAIzC,EAAEiB,EACNA,EAAIjB,EAAEA,EACNsB,EAAI,KACJyB,EAAI,EACNpD,EAAG,OAAS,IACNE,EACF,KAAOI,GAAKS,EAAE+B,EAAG,IAAM,KACjBN,EAAI9B,EACN6hC,EAAIhgC,EACJ2G,EAAI7I,EACJ2C,EAAI,EACJw/B,EAAIt5B,EAAE5H,EACNqG,EAAIuB,EAAEsX,GAAGtX,EAAEgN,IACXokB,EAAIv5B,EAAEyhC,EAAG,MACPt5B,EAAEka,GAAM,GAAKkX,EAAIh6B,EAAI,MACpB,QACH4I,EAAEka,IAAM,GAAKkX,EACb3yB,EAAE+Y,GAAK4Z,EACP3yB,EAAEiL,GAAKpQ,EAAE,GACTmF,EAAEm7D,GAAKvgC,EAAE,GACT56B,EAAEu2B,EAAI,CAAC,QACLh1B,EAAEgN,GACJjW,EAAE,GAAKiJ,EAAEgN,IACDokB,GAAA,KACD,OACA,EACH3yB,EAAEvE,EAAIrC,EAAEyhC,EAAG,GAAK,EAChBx/B,EAAI4vP,GAAGljP,EAAG/H,EAAEiL,GAAIjL,EAAEvE,GAAIsM,EAAG/H,EAAEm7D,GAAIn7D,EAAEvE,GAAI,EAAG8F,EAAGvB,EAAEu2B,GAC7Cv2B,EAAEu2B,EAAIv2B,EAAEu2B,EAAE,cAEP,MAMDjJ,EALEzS,EAAIzhB,EAAEyhC,EAAG,GAAK,EAChB29B,EAAI,GAAK39C,EAAI,EAAI,EAAIA,EAAI,EAAI,EAAIA,EAAI,EAAI,KAC3ChgB,EAAE,GAAKkN,EAAG/H,EAAEiL,GAAIutD,GAChBx4D,EAAEvE,EAAI+8D,EAGDlrC,EAFDjyB,EAAI4vP,GAAGpwO,EAAG,EAAG,EAAGtZ,EAAGvB,EAAEu2B,GAEZ,KACPhe,EACFlf,EAAIwhB,EACJwV,EAAIrwB,EACJ68B,EAAI,IAAM,GAAKxM,EAAE50B,GACjBypC,EAAItsC,EAAEikC,GAAA,GACJ,MAAQqI,EAAG5X,EAAI,MACd,KACCiY,EAAIlV,EAAEkG,EAAE,GACVt8B,EAAIo2B,EAAEx1B,EAAA,IACRqqC,EAAE,GAAK7U,EAAEkG,EAAE,GAAG,GACThe,EAAI,EAAGA,EAAI,EAAIlf,IAAKkf,EAAG2sB,EAAE3sB,GAAKzd,EAAGyqC,EAAEtrC,EAAIse,GAAI2sB,EAAE3sB,EAAI,SAC/CA,EAAI,EAAIskB,IAAKtkB,EAAG2sB,EAAE3sB,GAAK,EAC9B8X,EAAEkG,EAAE,GAAK,KACTlG,EAAEkG,EAAE,GAAK2O,EACT5X,EAAI,GAGRjyB,EAAIiyB,EAAA,WAED,gBAGHh1B,EAAE,GAENK,EAAI0C,CAAA,KAGVtC,EAAIA,EAAE,GACN6B,EAAIA,EAAE,GACFjC,GAAKS,EAAE+B,EAAG,MAAuBxC,EAAI,IAAnB8C,EAAIrC,EAAE+B,EAAG,KAAoB,IAAMM,GAAS,CAChE/C,EAAEE,EAAI,QACAP,CAAA,KAEJyJ,EAAA,GACCA,EAAInJ,EACPL,EAAG,KAMCstC,EACAF,EAIApV,EAVE7tB,EAAI/J,EACN20B,EAAIt0B,EACJ0tC,EAAI7rC,EACJ27B,EAAI96B,EACJmH,EAAIrK,EAGJY,EAAIsJ,EAAE9I,EACNqB,EAAIyH,EAAE/J,EACNo/D,GAAI,CAAC,MAELynL,GAAI,EACJ8I,GAAK,EACLC,GAAK+sB,GAAG9+O,GACV/9B,EAAG,OAAS,IACNoK,GAAKxJ,EAAED,EAAG,GAAI,KACZgmP,GAAK/lP,EAAED,EAAG,GAAK,EACjBovP,GAAKxgP,EAAGslB,EAAG8xN,IACXqJ,GAAKzgP,EAAG0+B,EAAG04M,IACXhE,GAAKoN,GAAKC,GAAA,IACPyC,GAAG1C,GAAIC,GAAI,EAAG/lP,EAAGq1D,IAAI,MAAMt/D,EAAA,IAChCs/D,GAAIA,GAAE,GACN98D,EAAEuf,GAAK4kO,GACFv5M,EAAK,EAAGA,EAAKu1M,KAAMv1M,EAAI,KACtB6iN,GAAM3wL,GAAElyB,IAAO,EAAK,MACxBkyB,GAAElyB,GAAM6iN,GACRA,IAAMlJ,KAAMA,GAAIkJ,GAAK,OAGrBtvP,EAAEH,EAAG,MAAMR,EAAA,IACVktC,EAAK,EAAG,EAAIA,IAAMA,EAAI,KACrBwvN,GAAIogB,GAAG5vO,IACVA,GAAM,EAAInP,IAAM2+N,IAAK,GAAK3+N,GAC3B8xN,GAAK6M,KAAM7M,GAAK6M,GAAA,KAEdvM,GAAK9vP,EAAG0mP,GAAI+I,GAAIpvP,GAChBojP,GAAKiD,GACPsJ,GAAKhwP,EAAGyjP,GAAIrjP,GAAA,GACV,MAAQ4vP,GAAI,IAAItM,GAAK,UACpBjkP,EAAE,OAASgkP,IAAMC,GAAKsM,GAAA,IACvBG,GAAKpwP,EAAEyvP,IAAA,GACP,MAAQ9L,IAAM,MAAQyM,IAAM,MAAQL,GAAI,CAC1ClmP,EAAE7J,EAAI,QACAJ,CAAA,KAEJ0wP,GAAKP,GAAA,IACJ/iN,EAAKtV,EAAI,EAAGsV,EAAK25M,KAAK35M,EAAI,KACzBujN,GAAK5M,GAAG32M,GACVwjN,GAAKD,GAAG74N,EACR62J,GAAKgiE,GAAGrnP,EACR2nP,GAAK,EACLG,GAAK,EACLC,GAAK,MACFnkN,EAAK,EAAG,EAAIA,IAAMA,EAAI,CACzBwvN,GAAIogB,GAAG5vO,GACP0jN,GAAG1jN,GAAMwjN,GACT/hE,GAAGzhJ,GAAMpV,GACRoV,GAAM,EAAInP,IAAM2+N,IAAK,GAAK3+N,GAC3Bh+B,EAAG,KACGyxP,GACFI,GAAK8K,GACLpK,GAAKroP,EACLuoP,GAAKhC,GACLkC,GAAKhC,GACLiC,GAAK76N,EACL86N,GAAK,EACLC,GAAKP,GAAGnxP,EACR2xP,GAAKlyP,EAAEiyP,GAAI,MACb5yP,EAAEuyP,GAAI,EAAG,EAAGZ,IACRkB,GAAI,KACFC,GAAKnyP,EAAEiyP,GAAI,GAAK,EAClBG,GAAKpyP,EAAEiyP,GAAI,GACXI,GAAKryP,EAAEiyP,GAAI,GAAKG,GAAK,EAAI,GAC3BR,GAAGS,IAAM,KACJF,KAAyBP,GAAjBS,GAAKryP,EAAEiyP,GAAI,IAAe,OACnCK,GAAK,MACJ,KACDC,GAAK/yP,EAAE,IACTgzP,GAAKxyP,EAAEiyP,GAAI,GAAK,KACd,GAAKO,GAAI,CACXd,GAAGlyP,EAAI,MACHizP,GAAK,QACHtzP,CAAA,KAEHyxP,GAAK,EAAGA,GAAK4B,KAAM5B,GAAI2B,GAAG4pB,GAAGvrB,KAAO5wP,EAAEiyP,GAAI,OAC3CU,QAAA,EACFC,QAAA,EACAC,GAAKnB,GACLhE,GAAK6E,GACLsB,GAAK7C,GACL+C,GAAKnC,GACLsC,GAAK,EACLO,GAAK5B,GAAGtyP,EACRo0P,GAAK,EACLC,GAAKn1P,EAAG,IAAKK,GACfT,EAAG,KACIO,EAAEg1P,GAAI,EAAG,EAAGlH,GAAI,KADX,IAEN1tP,EAAEy0P,GAAI,GAAI,KACRK,GAAK,EAAI,EAAI90P,EAAEy0P,GAAI,OACrB9B,GAAK,EAAI3yP,EAAEy0P,GAAIK,KACRjB,GAAI,MAAMx0P,CAAA,MACdszP,GAAKkB,GAAA,IACPjB,GAAK,EAAGA,GAAKiB,IAAMlB,MAAQ,CAC9B3wP,EAAGyyP,IAAA,IACCQ,GAAKL,GAAG,GAAc,IAATjtP,EAAG8sP,MACpB/xP,EAAG+xP,GAAIA,GAAGl1P,EAAI01P,GAAGlzP,GAAA,IACbmsB,GAAK+mO,GAAG/pP,MAAA,GACR,GAAKgjB,GAAK6lO,GAAGnB,MAAQ1kO,GAAK,GAAKA,KAAOymO,GAAKzmO,QAC1C,KACCzB,GAAK,IAAMyB,GACbF,GAAKE,GAAK,GACVR,GAAK0uP,GAAGpuP,IACRnB,GAAK7sB,EAAEy0P,GAAI4nB,GAAGruP,KAAON,GAAA,GACnBklO,GAAK/lO,GAAKgnO,GAAI,MAAMx0P,EAEtB,IAAK,IAAI+sB,GAAKK,GAAKkoO,GAAK,EAAG,EAAI9nO,MAC7BknO,GAAGnB,MAAQxmO,EAAA,EAGnB8nO,GAAK,QACC70P,CAAA,CAER60P,KAAOrB,GAAGrzP,EAAI,GACd8yP,GAAK4B,EAAA,EAEN5B,GAAKA,KAAOL,GAAGryP,KAAOoyP,GAAKpyP,EAAEkyP,GAAIC,GAAI,EAAGH,GAAIZ,KAC7CsB,IAAM,GAAKN,GAAMS,GAAKT,IAAQN,GAAGlyP,EAAI,EAAKizP,GAAK,MAE7C,GAAKA,GAAI,MAAMrzP,EAAA,GACnBoxP,IAAM,GAAK8rB,GAAGhwO,KAAQkkN,GAAK,GAAKV,GAAG54N,GAAGn1B,GACtCsuP,IAAMP,GAAG54N,GAAGn1B,EACZm1B,GAAKu7N,GACD,GAAKnmN,EAAI,KAET3e,GADEM,GAAK2hO,GAAG,OAEPjiO,GAAK,EAAGA,GAAKmuO,KAAKnuO,GAAIiiO,GAAGjiO,IAAMM,KAAOA,GAAK2hO,GAAGjiO,KACnD8iO,IAAMxiO,EAAA,KAGV8hO,GAAGhrO,GAAKyrO,GACRT,GAAGtyO,GAAK,EACR+yO,KACIT,GAAG91O,IACD+1O,GAAG,GAAGjiE,GAAG,GAAK,GAAG7iL,OAAS,GACzB8kP,GAAG,GAAGjiE,GAAG,GAAK,GAAG7iL,OAAS,GAC3B8kP,GAAG,GAAGjiE,GAAG,GAAK,GAAG7iL,SACnB,EACF,GAAKmlP,IACH,IAAML,GAAG,GAAGjiE,GAAG,GAAK,GAAG7iL,QACrB6kP,GAAGtyO,GAAK,EAAKsyO,GAAG91O,IAAM+1O,GAAG,GAAGjiE,GAAG,GAAK,GAAG7iL,OAAS,IACtD6kP,GAAGhwO,IAAMgwO,GAAGtyO,IAAM,EAAIgzO,GAClBV,GAAGhwO,GAAI,KACLwM,GACF4B,GAAK4hO,GAAA,IACFxjO,GAAK,EAAGA,GAAKy0O,KAAMz0O,GAAI,KACtBK,GAAKL,GACPO,GAAKqB,GAAGhJ,GAAGyH,IACXF,GAAKyB,GAAG+I,EAAE,GAAG/I,GAAGzlB,EAAE,GAAKkkB,IAAA,KAClBF,GAAGxhB,OACJ4hB,GAAG/qB,EAAI2qB,GAAG3qB,EAAI,IAAO+qB,GAAG5hB,MAAQwhB,GAAGxhB,QACnC4hB,GAAG/qB,EAAI,EACR+qB,GAAG5hB,MAAQ,EACX0hB,KAAOwjO,GAAG1jO,GAAI,EAAGI,IACjBF,KAAOwjO,GAAGjiO,GAAG+I,EAAE,GAAG/I,GAAGzlB,EAAE,GAAKkkB,IAAK,GAAIE,IACrCF,KAAOwjO,GAAGjiO,GAAG+I,EAAE,GAAG/I,GAAGzlB,EAAE,GAAKkkB,IAAK,EAAGE,IACrCsjO,GAAGjiO,GAAG+I,EAAE,GAAG/I,GAAGzlB,EAAE,GAAKkkB,IAAK,GAAIE,IAAA,GAIxClrB,EAAEsf,GAAKw9C,GACP98D,EAAEqc,GAAKkoO,GACPvkP,EAAE+S,GAAKwuO,GACPvhP,EAAEwf,GAAKmuO,GACP7mP,EAAI,QACExJ,CAAA,CAERwJ,EAAI,OAERnJ,EAAImJ,GACI,CACNpJ,EAAEE,EAAI,QACAP,CAAA,IAEJ,EAAIoD,GAAA,GACA9B,EAAE4Q,GAAK,GAAK9O,GAAKH,EAAG3B,EAAE+T,GAAIjS,GAAK,CACnC/C,EAAEE,EAAI,EACND,EAAI,QACEN,CAAA,OAEHsB,EAAE4Q,GAAK,MACVqb,GAAKltB,EACPwuB,GAAKnuB,EACLgtB,GAAKnrB,EACLisB,GAAKjB,GAAGltB,EACR8uB,GAAKX,GAAGtM,GAAA,GACVqL,GAAG9sB,EAAIouB,GACPtB,GAAGntB,EAAIstB,GACPc,GAAG3I,GAAKnW,EAAGmf,GAAIM,IACfX,GAAGyiB,GAAK,GAAK9hB,IAAM,GAAK,GAAKA,IAAM,EAC/BjvB,EAAG,CACLG,EAAEuc,GAAKioB,GAAA,MACD7kC,CAAA,IAGJ,OADJ2B,EAAIpB,EAAEG,EAAI6B,IACK,CACblC,EAAEE,EAAI,EACND,EAAI,QACEN,CAAA,CAERM,GAAKA,EAAIouP,GAAGruP,EAAGsB,EAAG,EAAGjB,EAAG6B,EAAGA,EAAG,SAAWO,EAAEnC,EAAA,MACrCX,CAAA,QAERM,GACK,MAAQG,EAAKA,EAAE,GAAKkB,GAAM1B,EAAE,MAAQ0B,GAAI1B,EAAEC,IAAMG,EAAES,EAAI,EAAIZ,GAAKwyP,GAAGpxP,IACnEoxP,GAAGpxP,GACAhB,CAAA,UAEAuyP,GAAG7yP,EAAGG,GAAA,IACTD,EAAIF,EAAES,EAAIT,EAAEI,EACdA,EAAIF,EAAIC,EAAI,GAAKA,EAAA,OACnBF,EAAED,EAAES,GAAKN,GACTH,EAAEqtC,EAAI9sC,EAAEH,GACJ,MAAQJ,EAAEqtC,GAAWrtC,EAAEyU,GAAK,KAAQzU,EAAEoV,GAAK,EAAKpV,EAAEO,EAAI,EAAI,IAC9DP,EAAEyU,GAAKzU,EAAEqtC,EACTrtC,EAAEoV,GAAKpV,EAAEyS,GAAKvS,EAAIC,EACX,YAEA2yP,GAAG9yP,EAAGG,GAAA,IACTD,EAAIF,EAAEwiB,EACRpiB,EAAID,EAAID,EACRK,EAAIP,EAAEqtC,EACN7sC,EAAIR,EAAEyS,GAAKzS,EAAES,EAAIP,EAAA,IACdD,EAAEE,GAAKH,EAAEa,EAAEL,GAAI,EAAIJ,GAAK,KACvBC,EAAI,GAAKD,EAAI,GAAKA,EACpBK,EAAIT,EAAEa,EAAEkQ,GACRzQ,EAAIN,EAAEa,EAAE+qB,MACRjrB,EAAIL,EAAID,EACRQ,EAAIJ,EAAEuP,GACNtP,EAAID,EAAE8a,GAAKjb,EAAIJ,EACfU,EAAIZ,EAAEyU,GACNlS,EAAIvC,EAAEoV,GACRm8O,GAAGvxP,EAAGK,EAAGE,EAAGC,GACZwpD,GAAGppD,EAAG2B,EAAG1B,EAAGH,EAAGC,GACfoxP,GAAGtxP,EAAGP,EAAGA,EAAIG,EAAGQ,EAAGH,EAAGJ,GACtBF,GAAKC,EACLE,GAAKF,EAAIL,EAAES,EACXP,GAAKG,CAAA,CAEPJ,EAAEC,GAAKC,GACPH,EAAEwiB,EAAIxiB,EAAEsT,GAAKnT,CAAA,UAyBN4yP,KAAA,KACFv2O,GAAK5Y,KAAKsjB,GAAKtjB,KAAK8jB,GAAK9jB,KAAK6a,GAAK,WAEjCu0O,KAAA,KACFsqB,GAAK15Q,KAAKkmB,GAAKlmB,KAAK25Q,GAAK35Q,KAAK+nB,GAAK/nB,KAAKxD,EAAIwD,KAAKnD,EAAI,WAEnDwyP,KAAA,KACFv1O,GAAK9Z,KAAKwZ,GAAKxZ,KAAKyZ,GAAK,OACzB+B,GAAK7e,EAAE,QACPyd,GAAKzd,EAAE,YAEL2yP,KAAA,KACF1zO,GAAA,eAz5CHxf,EAAI,mBAPCA,EAAEC,EAAGE,EAAGD,GAAA,IACV,IAAIE,EAAIF,EAAEC,GAAII,EAAI,EAAGA,EAAIH,IAC5BH,EAAEwd,KAAKvd,EAAEsB,OAASrB,EAAI,EAAI,GAAK,KAC3BD,EAAEsB,OAASrB,EAAI,IAFYI,IAG/BP,EAAEC,EAAEM,GAAIJ,EAAI,EAAGD,EAAA,CAGX,CACNF,EAAG,EAAG,CAAC,EAAG,KACLA,CAAA,CAu5CA,EAAK,UAEHmzP,KAAA,KACFh8O,GAAK5W,EAAE,QACP4jB,GAAK9jB,EAAG,CAAC,EAAG,GAAI6yP,IAAA,KAChB3uO,GAAKlkB,EAAG,CAAC,EAAG,IAAK6yP,GAAA,UAEfE,KAAA,KACF9vO,GAAK1f,KAAK+Y,GAAK/Y,KAAK+a,GAAK/a,KAAK+kB,GAAK,OACnCb,GAAK,IAAIvnB,EAAE,QACXwlB,GAAK,IAAIxlB,EAAE,YAET8yP,KAAA,KACFztO,GAAKhiB,KAAKwP,GAAKxP,KAAKqhB,GAAKrhB,KAAK8d,GAAK,WAEjC4xO,KAAA,KACF7/O,GAAK7P,KAAKkN,GAAK,WAEbyiP,KAAA,KACF9vO,GAAK,CAAC,EAAG,QACTjG,GAAK,CAAC,EAAG,QACT+F,GAAK,CAAC,EAAG,QACThT,GAAK3M,KAAKqd,GAAK,WAEbuyO,KAAA,KACF3uO,GAAKtkB,EAAE,UACPwV,GAAK,OACLuI,GAAK/d,EAAE,SACPkf,GAAK7b,KAAKmkB,GAAKnkB,KAAK2M,GAAK3M,KAAKgf,GAAKhf,KAAKif,GAAKjf,KAAKwlB,GAAK,WAErDsqO,KAAA,KACF/xO,GAAK/d,KAAK5C,EAAI4C,KAAKwa,GAAK,OACxB/L,GAAK5Q,MAAM,IAAI4xP,IAAA,KACfjpP,EAAI,OACJkI,GAAK7Q,MAAM,IAAI+xP,IAAA,KACfzjP,GAAK,OACLlP,EAAI,IAAI+zP,EAAA,UAENjB,KAAA,KACF5yP,EAAIR,EAAE,SACNG,EAAIH,EAAE,QACN6P,GAAK7P,EAAE,YAELqzP,KAAA,KACFx9O,GAAKxS,KAAKrD,EAAI,OACdkhB,GAAK,QACLngB,EAAI,IAAIkB,EAAA,KACRsoB,GAAK,IAAIioO,GAAA,KACT/vO,GAAK,IAAIgwO,GAAA,KACT9tO,GAAK,IAAIkuO,GAAA,KACTj/O,GAAK,IAAI8+O,GAAA,KACTnwO,GAAKlf,KAAKghB,GAAKhhB,KAAK4O,GAAK,OACzB/P,EAAI,IAAIixP,GAAA,KACRv0O,GAAKvb,KAAK+Q,GAAK/Q,KAAKga,GAAKha,KAAKsZ,GAAKtZ,KAAKqZ,GAAKrZ,KAAKwwB,GAAKxwB,KAAK2O,GAAK,OACjEwQ,GAAKviB,EAAG,EAAGgC,GAAA,KACX+N,GAAK,OAEL6H,GAAK5X,EAAG,EAAG+yP,IAAA,KACXv/O,GAAK,IAAIm/O,GAAA,KACThqO,GAAKvlB,KAAKod,GAAK,OACfqB,GAAK,QACLowB,GAAK,OACLrwB,GAAK,CAAC,EAAG,EAAG,EAAG,QACfo7P,GAAK/7Q,MAAM,IAAIkyP,IAAA,KACfpqO,GAAK,OACLtO,GAAKxZ,MAAM,IAAI6xP,IAAA,KACfp4O,GAAK,OACL7I,GAAK5Q,MAAM,IAAI4xP,IAAA,KACfjpP,EAAI,OACJ8W,GAAK,QACLE,GAAK,OACL5P,GAAK,QACLC,GAAK,OACLG,GAAK,QACLL,GAAK,OACLwB,GAAK,QACLmN,EAAItc,KAAK4gC,EAAI5gC,KAAKoP,GAAK,OACvB0P,GAAK,QACL1hB,EAAI4C,KAAK+M,GAAK/M,KAAKgb,GAAKhb,KAAK+e,GAAK,OAClCrQ,GAAK7Q,MAAM,IAAI+xP,IAAA,KACf9qP,EAAI9E,KAAKmM,GAAK,OACdsV,GAAKhlB,EAAG,CAAC,EAAG,GAAIgzP,IAAA,KAChBoqB,GAAK,UACL5qQ,GAAK,QACL0P,GAAK3e,KAAKyd,GAAKzd,KAAK4+B,EAAI,OACxB7kB,GAAK,QACL6H,GAAK,OACLjO,GAAK,QACLC,GAAK,OACLgK,GAAK,QACL1O,GAAKlP,KAAKsgB,GAAK,WAEbuqO,GAAGzuP,EAAGC,GAAA,OACN,EAAID,EAAI,EAAIA,EAAIC,EAAIA,EAAID,CAAA,UAExB40P,KAAA,KACF/nN,EAAIjpC,KAAKspC,EAAItpC,KAAKiN,GAAKjN,KAAKioB,OAASjoB,KAAKgoB,MAAQ,OAClD7qB,EAAI,QACJL,EAAI,QACJ0P,GAAK,QACLoT,GAAK5f,KAAKyM,GAAKzM,KAAK2pC,EAAI3pC,KAAK2+B,EAAI3+B,KAAKX,EAAI,OAC1C8N,GAAK,YACL2sQ,IAAM,oBACNh+P,GAAK,sBACLE,GAAK,yBACLtP,GAAK1M,KAAKma,GAAK,OACfgM,KAAO,QACP9S,GAAKrT,KAAKsT,GAAKtT,KAAKsM,GAAKtM,KAAKpD,EAAIoD,KAAKu8D,EAAIv8D,KAAKwO,GAAKxO,KAAKjC,EAAIiC,KAAK+O,GAAK/O,KAAKoU,GAAKpU,KAAKpB,EAAI,OAC3FyyB,EAAI,QACJD,EAAI,WAEF8/N,KAAA,IACH90P,EAAI,IAAI4zP,GAAA,aACJ5zP,IACJA,EAAEO,EAAI,EAAKP,EAAEyhB,GAAK,KAAQzhB,EAAEoW,GAAK,EAAKpW,EAAEmf,GAAK,EAAIslB,KAAOA,GAAKkxN,KAC1D31P,CAAA,UAEAi1P,GAAEj1P,EAAGC,EAAGE,GAAA,UACVH,EAAEO,IAAOP,EAAEO,EAAIN,EAAKD,EAAEyhB,GAAKthB,EAAKH,EAAEoW,GAAK,GACrC,WAEAo/O,GAAGx1P,EAAGC,EAAGE,GAAA,OACT,GAAKA,GAAK,KAAOH,EAAEC,EAAI,IAAM,GAAKD,EAAEC,EAAI,IAAM,IAAMD,EAAEC,EAAI,YAE1Dy1P,GAAG11P,EAAGG,GAAA,GACT,MAAQH,EAAG,OAAO,KACtBA,EAAEO,EAAI,EACNP,EAAEyhB,GAAK,KACH,MAAQthB,EAAG,OAAO80P,GAAEj1P,EAAG,EAAG,4CAC1BE,EAAIC,EAAE4pB,KACNxpB,EAAIJ,EAAEqC,EACNhC,EAAIL,EAAEmQ,GAAA,GACN,EAAI9P,EAAG,OAAOy0P,GAAEj1P,EAAG,EAAG,yBACtBK,EAAIH,EAAEK,EAAI,GAAML,EAAEK,EAAI,IAAM,EAAML,EAAEK,EAAI,IAAM,GAC9CE,EAAIT,EAAE8qB,GAAA,GACVrqB,EAAEge,KAAW,EAAJpe,GACTI,EAAEinB,GAAMrnB,GAAK,EAAK,EAClBI,EAAEymB,GAAM7mB,GAAK,EAAK,EAClBI,EAAE+b,GAAKnc,GAAK,EACR,EAAII,EAAEinB,GAAI,OAAOutO,GAAEj1P,EAAG,EAAG,sCACxBS,EAAEymB,GAAI,OAAO+tO,GAAEj1P,EAAG,EAAG,0BAC1BO,GAAK,EACLC,GAAK,MACDF,EAAIN,EAAEgjB,GAAA,GACNviB,EAAEge,GAAI,IACJ,EAAIje,EAAG,OAAOy0P,GAAEj1P,EAAG,EAAG,mCACrBw1P,GAAGt1P,EAAGK,EAAGC,GAAI,OAAOy0P,GAAEj1P,EAAG,EAAG,iBACjCM,EAAEG,EAAmC,OAA7BP,EAAEK,EAAI,IAAM,EAAKL,EAAEK,EAAI,IAC/BD,EAAEqrB,GAAKzrB,EAAEK,EAAI,IAAM,EACnBD,EAAEF,EAAmC,OAA7BF,EAAEK,EAAI,IAAM,EAAKL,EAAEK,EAAI,IAC/BD,EAAEi9Q,GAAKr9Q,EAAEK,EAAI,IAAM,EACnBA,GAAK,EACLC,GAAK,EACLR,EAAEuS,GAAMjS,EAAEG,EAAI,IAAO,EACrBT,EAAEo0B,GAAM9zB,EAAEF,EAAI,IAAO,EACrBD,EAAEyrB,MAAQtrB,EAAEG,EACZN,EAAE0rB,OAASvrB,EAAEF,EACbD,EAAEwS,GAAK,EACPxS,EAAEggE,EAAI,EACNhgE,EAAEwB,EAAI,EACNxB,EAAEiS,GAAKjS,EAAEyrB,MACTzrB,EAAEK,EAAIL,EAAE0rB,OACR1rB,EAAE+P,GAAK,EACP/P,EAAE+W,GAAK/W,EAAEyrB,MACTzrB,EAAE8W,GAAK9W,EAAE0rB,OACT1rB,EAAE+sC,EAAI/sC,EAAEyrB,MACRzrB,EAAE0sC,EAAI1sC,EAAE0rB,OAERzrB,GADAC,EAAIL,EAAEgU,IACFmD,GAAI,EAAG,IAAK9W,EAAE8W,GAAG3V,QAErBvB,EAAE,OADFI,EAAIL,EAAEmU,KAEN9T,EAAEgd,GAAK,EACPhd,EAAE+c,GAAK,EACP/c,EAAEqd,GAAK,EACPtd,EAAEC,EAAE+e,GAAI,EAAG,EAAG/e,EAAE+e,GAAG5d,QACnBpB,EAAEC,EAAE2d,GAAI,EAAG,EAAG3d,EAAE2d,GAAA,IAEdvd,EAAE+b,GAAKhc,EAAG,OAAOy0P,GAAEj1P,EAAG,EAAG,wBAE7BuC,EADAlC,EAAIL,EAAEsB,EACApB,EAAGK,EAAGE,EAAE+b,IACdjc,GAAKE,EAAE+b,GACPhc,GAAKC,EAAE+b,GACP/b,EAAEge,KAAQne,EAAEwpB,GAAK0Y,EAAEniC,GAAMC,EAAEg9Q,GAAK96O,EAAEniC,IAClCC,EAAIN,EAAEmU,GAAA,IAEJxT,EADEE,EAAIb,EAAEgU,GAAA,GAEV/T,EAAE,MAAQI,GACVJ,EAAE,MAAQK,GACVA,EAAE+c,GAAKmlB,EAAEniC,GACLC,EAAE+c,GAAI,IACR/c,EAAE8c,GAAKolB,EAAEniC,GACLmiC,EAAEniC,GAAI,KACRC,EAAEod,GAAK8kB,EAAEniC,GACJM,EAAI,EAAG,EAAIA,IAAKA,EAAGL,EAAE8e,GAAGze,GAAK6hC,EAAEniC,GAAKiB,EAAGjB,EAAG,GAAK,MAC/CM,EAAI,EAAG,EAAIA,IAAKA,EAAGL,EAAE0d,GAAGrd,GAAK6hC,EAAEniC,GAAKiB,EAAGjB,EAAG,GAAK,KAElDC,EAAE8c,GAAI,IAAKzc,EAAI,EAAG,EAAIA,IAAKA,EAAGE,EAAEsW,GAAGxW,GAAK6hC,EAAEniC,GAAKyC,EAAGzC,EAAG,GAAK,SACzDC,EAAE8c,GAAK,KACV/c,EAAE8S,GAAI,OAAO8hP,GAAEj1P,EAAG,EAAG,mCACzBM,EAAIN,EAAEklB,IACJyD,GAAK6Z,EAAEniC,GACTC,EAAEqe,GAAK7b,EAAGzC,EAAG,GACbC,EAAEqc,GAAK7Z,EAAGzC,EAAG,GACbC,EAAEgjB,GAAKkf,EAAEniC,GACLC,EAAEgjB,IAAMkf,EAAEniC,GAAI,KACXQ,EAAI,EAAG,EAAIA,IAAKA,EAAG2hC,EAAEniC,KAAOC,EAAEwnB,GAAGjnB,GAAKS,EAAGjB,EAAG,QAC5CQ,EAAI,EAAG,EAAIA,IAAKA,EAAG2hC,EAAEniC,KAAOC,EAAEylB,GAAGllB,GAAKS,EAAGjB,EAAG,OAEnDL,EAAE0I,EAAI,GAAKpI,EAAEqe,GAAK,EAAIre,EAAEqoB,GAAK,EAAI,EAC7BtoB,EAAE8S,GAAI,OAAO8hP,GAAEj1P,EAAG,EAAG,kCAErBU,EAAIF,EAAA,GACRA,EAFAG,EAAIJ,EAGJA,EAAII,EAAID,EACRJ,EAAII,EACJV,EAAEmf,IAAM,GAAKrc,EAAG9C,EAAEsB,EAAG,IAAM,EAEvBZ,EAAI,GADRG,EAAIb,EAAEmf,IACSjf,EAAI,MACd,KACHS,GAAK,EAAIE,EACTP,GAAK,EAAIO,EACJH,EAAI,EAAGA,EAAIG,IAAKH,EAAG,KAClBE,EAAIV,EAAEM,EAAI,GAAMN,EAAEM,EAAI,IAAM,EAAMN,EAAEM,EAAI,IAAM,GAClDI,EAAIN,IAAMM,EAAIN,GACdiC,EAAGvC,EAAE+iB,IAAIriB,GAAIR,EAAGS,EAAGC,GACnBD,GAAKC,EACLN,GAAKM,EACLJ,GAAK,EAEP+B,EAAGvC,EAAE+iB,IAAIliB,GAAIX,EAAGS,EAAGL,GACnBJ,EAAIS,EAAIJ,EAAI,EAAI,KAEd,GAAKL,EAAG,OAAO+0P,GAAEj1P,EAAGE,EAAG,+BAE3BA,EAAI4C,EADJnC,EAAIX,EAAEsB,EACI,GACVd,EAAIgiC,EAAE7hC,GAAKW,EAAGX,EAAG,GAAK,EACtBJ,EAAIiiC,EAAE7hC,GAAKW,EAAGX,EAAG,GAAK,EACtBL,EAAIkiC,EAAE7hC,GAAKW,EAAGX,EAAG,GAAK,EACtBE,EAAI2hC,EAAE7hC,GAAKW,EAAGX,EAAG,GAAK,EACtBA,EAAI6hC,EAAE7hC,GAAKW,EAAGX,EAAG,GAAK,EACtBD,EAAIV,EAAEmU,GACDvT,EAAI,EAAG,EAAIA,IAAKA,EAAG,IAClBF,EAAE2c,GAAI,KACJ1b,EAAIjB,EAAE0e,GAAGxe,GACbF,EAAEgd,KAAO/b,GAAKzB,EAAA,KACT,IAAI,EAAIU,EAAG,CAChBZ,EAAEoY,GAAGxX,GAAKZ,EAAEoY,GAAG,YAEVzW,EAAIzB,CAAA,KACPkD,EAAIpD,EAAEoY,GAAGxX,GACbwC,EAAEqgB,GAAG,GAAK+f,GAAGirN,GAAG9sP,EAAInB,EAAG,MACvB4C,EAAEqgB,GAAG,GAAKshB,GAAG0pN,GAAG9sP,EAAI,EAAG,MACvByB,EAAEoa,GAAG,GAAK,EAAIgmB,GAAGirN,GAAG9sP,EAAIpB,EAAG,MAC3B6C,EAAEoa,GAAG,GAAM,OAASunB,GAAG0pN,GAAG9sP,EAAIrB,EAAG,OAAU,KACvC8C,EAAEoa,GAAG,KAAOpa,EAAEoa,GAAG,GAAK,GAC1Bpa,EAAEmgB,GAAG,GAAKigB,GAAGirN,GAAG9sP,EAAId,EAAG,MACvBuC,EAAEmgB,GAAG,GAAKwhB,GAAG0pN,GAAG9sP,EAAIhB,EAAG,MACvByC,EAAE6d,GAAKtf,EAAIhB,CAAA,KAERF,EAAEge,GAAI,OAAOw2O,GAAEj1P,EAAG,EAAG,wBAC1BwiC,EAAEniC,GACFI,EAAIT,EAAEgU,GACD9T,EAAI,EAAG,EAAIA,IAAKA,EAAG,KACjBM,EAAI,EAAG,EAAIA,IAAKA,EAAA,IACdD,EAAI,EAAG,EAAIA,IAAKA,EAAA,IACdD,EAAI,EAAG,GAAKA,IAAKA,EACnBO,EAAI8G,EAAEtH,EAAGglC,GAAGnlC,GAAGM,GAAGD,GAAGD,IAAMwC,EAAGzC,EAAG,GAAK8kC,GAAGjlC,GAAGM,GAAGD,GAAGD,GAChDG,EAAE0jB,GAAGjkB,GAAGM,GAAGgf,GAAGjf,GAAGD,GAAKO,EAAA,IAC1BL,EAAI,EAAG,GAAKA,IAAKA,EAAGC,EAAE8jB,GAAGrkB,GAAGM,GAAKC,EAAE0jB,GAAGjkB,GAAG+jC,GAAGzjC,GAAA,QAEnDR,EAAEghB,GAAKwhB,EAAEniC,GACTL,EAAEghB,KAAOhhB,EAAEmpB,GAAKrmB,EAAGzC,EAAG,IACdL,EAAEoW,GAAK,WAERu/O,GAAG31P,EAAGC,EAAGE,EAAGD,EAAGE,EAAGG,EAAGC,GAAA,IACxBH,EAAIJ,EAAEG,GAAGof,GAAGrf,GAAA,IACXA,EAAI,EAAG,GAAKC,IAAKA,EAAG,KAClBuH,EAAE3H,EAAGK,EAAEF,EAAI,IAAK,OAAOC,EAAA,MACpBuH,EAAE3H,EAAGK,EAAEF,EAAI,QACXE,EAAIJ,IAAIG,GAAGof,GAAG,GAAMrf,EAAI,EAAI,IAAMC,EAAI,OAAO,OACjDK,EAAIR,EAAEG,EAAI,GAAGof,GAAA,GACb7X,EAAE3H,EAAGK,EAAEF,EAAI,IAAK,KACdG,EAAIN,EAGJW,EAAI,KACJgH,EAAErH,GAHJI,EAAIL,IACJQ,EAAIV,GAES,OACTwH,EAAErH,EAAGI,EAAEG,EAAI,IAAK,KAClBR,EAAI,EAGJQ,EAAI,GAFJF,EAAIgH,EAAErH,EAAGI,EAAEG,EAAI,MACfH,EAAIiH,EAAErH,EAAGI,EAAEG,EAAI,EAAIF,KAEnBA,EAAI,EACCD,EAAIwjC,GAAGrjC,GAAIH,EAAEL,KAAMA,EAAGM,GAAKA,EAAIgH,EAAErH,EAAGI,EAAEL,IAC3CM,GAAK,GAAK,GAAKE,EAAA,MAEf8G,EAAErH,EAAGI,EAAEG,EAAI,KACLF,EAAI,EAAI,EAAIgH,EAAErH,EAAG,KAAQK,GAAKgH,EAAErH,EAAG,MACpCK,EAAI,EAAIgH,EAAErH,EAAG,UACCK,EAAlBgH,EAAErH,EAAGI,EAAEG,EAAI,IAAW,EAAI8G,EAAErH,EAAGI,EAAEG,EAAI,IAAY,EACtDR,EAAII,EAAE,QACAE,EAAI,EAAKN,EAAII,EAAE,GACvBA,EAAID,EAAI0iC,GAAG9iC,GAAA,GACXE,EAAIN,GACEoD,GAAKJ,EAAG1C,GAAA,IAEZO,EADEH,EAAIJ,EAAE8C,EAERxC,GADAC,EAAIP,EAAEoS,IAAM,IACFpS,EAAEg6B,GAAK55B,IAAO,KACxBJ,EAAE8C,EACJ9C,EAAEoS,IAAM9R,EACRN,EAAEoS,IAAM,EACRpS,EAAEg6B,IAAOz5B,EAAI,EAAKD,IAAMF,EACxBH,EAAEE,KAAOE,EAAIC,GAAKA,GAAKV,GAAG,EAAIE,GAAK,UAE9B,YAEAy1P,GAAG71P,GAAA,IACNC,EAAID,EAAEib,GAAGjb,EAAEkb,GAAK,GACpBjb,EAAE6Q,GAAK,EACP7Q,EAAEwT,GAAK,EACPrT,EAAEJ,EAAEoiB,GAAI,EAAG,EAAGpiB,EAAEoiB,GAAG5gB,QACnBxB,EAAE2Q,GAAK,WAoQAqlP,GAAGh2P,EAAGG,GAAA,GACT,MAAQH,EAAG,OAAO,KAClB,MAAQG,EAAG,OAAO80P,GAAEj1P,EAAG,EAAG,4CACzBA,EAAEoW,KAAOs/O,GAAG11P,EAAGG,GAAI,OAAO,KAC/BF,EAAED,EAAEoW,IACA,MAAQjW,EAAEuf,IAAMvf,EAAEuf,GAAGvf,GAAI,CAC3BA,EAAE6X,KAAOhY,EAAE0I,EAAI,OACXrI,EAAI8nC,GAAGnoC,EAAE0I,GAAA,MACR1I,EAAE0I,GACD1I,EAAEid,GAAK,EAAKjd,EAAEkd,GAAK,IACnBld,EAAEid,GAAM9c,EAAEwB,EAAItB,GAAM,EACrBL,EAAEkd,GAAM/c,EAAEggE,EAAI9/D,GAAM,EACrB,EAAIL,EAAEid,KAAOjd,EAAEid,GAAK,GACpB,EAAIjd,EAAEkd,KAAOld,EAAEkd,GAAK,IACxBld,EAAE2U,GAAMxU,EAAEK,EAAI,GAAKH,GAAM,EACzBL,EAAE4d,GAAMzd,EAAEiS,GAAK,GAAK/R,GAAM,EAC1BL,EAAE4d,GAAK5d,EAAEuS,KAAOvS,EAAE4d,GAAK5d,EAAEuS,IACzBvS,EAAE2U,GAAK3U,EAAEo0B,KAAOp0B,EAAE2U,GAAK3U,EAAEo0B,IACrB,EAAIp0B,EAAE0I,EAAG,KACPjI,EAAIT,EAAEklB,GAAA,IACL7kB,EAAI,EAAG,EAAIA,IAAKA,EAAG,KAClBC,EAAA,GACAN,EAAEmU,GAAGkJ,GAAI,KACP1c,EAAIX,EAAEmU,GAAG6J,GAAG3d,GAChBL,EAAEmU,GAAGuJ,KAAO/c,GAAKF,EAAEke,GAAA,MACdhe,EAAIF,EAAEke,GAAA,IACRre,EAAI,EAAG,GAAKA,IAAKA,EAAG,KACnBO,EAAIb,EAAEqlB,GAAGhlB,GAAGC,GACdI,EAAIC,EAAA,GACNF,EAAE6iB,KAAQ5iB,GAAKD,EAAEqnB,GAAG,GAAKxnB,IAAMI,GAAKD,EAAEslB,GAAG,KAErC,GADJrlB,EAAI,EAAIA,EAAI,EAAI,GAAKA,EAAI,GAAKA,GACnB,KACLE,EAAIF,EAAA,EACJD,EAAEkc,KACF/b,EAAI,EAAIH,EAAEkc,GAAK/b,GAAK,EAAIA,GAAK,GAC3B,EAAIH,EAAEkc,KAAO/b,EAAI,EAAIH,EAAEkc,IAAA,EACzB/b,IAAMA,EAAI,GACdC,EAAEokB,GAAKrkB,EACPC,EAAE6gB,GAAK,EAAIhhB,EAAIE,EACfC,EAAE+kB,GAAK,IAAMllB,EAAI,EAAI,IAAMA,EAAI,EAAI,OAC9BG,EAAE6gB,GAAK,EACd7gB,EAAEuS,GAAK9S,CAAA,GAIbD,EAAI,OACC40P,GAAEj1P,EAAG,EAAG,sBAAwBK,EAAIL,EAAEO,EAAA,GACxCF,EAAI,GAAKA,EAAI,IACZA,EAAG,CACLL,EAAE4kB,GAAK,IACH5kB,EAAEwS,KAAOxS,EAAE8iB,GAAK4lB,IACpB1oC,EAAG,CACDK,EAAIL,EAAE8iB,GAEJriB,EAAI,GADFG,EAAIZ,EAAEuS,IAAA,IAERhQ,EAAI,GAAK3B,EACTkC,EAAIlC,EAAI,EACRU,EAAI,EAAItB,EAAE0I,EAAI9H,GAAK,EAAIZ,EAAEwS,GAAK,EAAI,GAAK,EACvC7Q,GAAK,GAAK3B,EAAEwS,GAAK,EAAI,GAAK5R,EAAA,IAG5BC,EAAIJ,EAAI,KAFRH,EAAM,GAAK,GAAKD,EAAI8nC,GAAGnoC,EAAE0I,IAAO,EAAKnG,IACrC5B,EAAI,MAAQX,EAAE6S,IAAM,EAAI7S,EAAE6S,GAAGrR,OAASxB,EAAEgjB,GAAGviB,EAAIT,EAAEgjB,GAAG5iB,EAAI,KAE/CS,EAAGR,EAAI,MACX,IACCQ,EAAIb,EAAE4e,GAAI,IACZ5e,EAAE4e,GAAK,EACP5e,EAAE0iB,GAAKniB,EAAEM,GACTb,EAAE2iB,GAAK,EACH,MAAQ3iB,EAAE0iB,GAAI,CAChBriB,EAAI40P,GAAEj1P,EAAG,EAAG,gDACNA,CAAA,CAERA,EAAE4e,GAAK/d,CAAA,CAETA,EAAIb,EAAE0iB,GACNhiB,EAAIV,EAAE2iB,GACN3iB,EAAEqiB,GAAKxhB,EACPb,EAAEyyC,GAAK/xC,EACPA,GAAKD,EACLT,EAAEw9Q,GAAKh9Q,EAAG+B,EAAGoxP,IACb3zP,EAAEupB,GAAK,EACPvpB,EAAEib,GAAKza,EAAGsC,EAAI,EAAGwwP,IACjBtzP,EAAEkb,GAAK,EACPlb,EAAEqS,GAAK/Q,EAAId,EAAGc,EAAG+xP,IAAM,KACvBrzP,EAAEoK,EAAI,EACNpK,EAAEyC,EAAE2b,GAAK,EACTpe,EAAEyC,EAAE4P,GAAKrS,EAAEqS,GACXrS,EAAEyC,EAAE2H,EAAIpK,EAAEoK,EAAA,EACNpK,EAAEwS,KAAOxS,EAAEyC,EAAE2H,GAAKxJ,GACtBX,GAAA,GACAD,EAAEkhB,GAAKrgB,EACPb,EAAEohB,GAAK1gB,EACPA,GAAK,IACLV,EAAEsS,GAAK9R,EAAGmB,EAAG6xP,IACbxzP,EAAE+P,GAAK,EACP/P,EAAEyC,EAAE6P,GAAKtS,EAAEsS,GACXtS,EAAEyC,EAAEsN,GAAK/P,EAAE+P,GAAA,GACN/P,EAAEwS,KAAOxS,EAAEyC,EAAEsN,IAAMnP,GACxBZ,EAAEwkC,EAAI,GAAK5jC,EACXZ,EAAEkgB,EAAI,EAAItf,EAEVA,GADA2B,EAAI4lC,GAAGnoC,EAAE0I,IACD1I,EAAEwkC,EACVjiC,EAAKA,EAAI,EAAKvC,EAAEkgB,EAChBlgB,EAAEwR,GAAK3Q,EACPb,EAAEyR,GAAK/Q,EAAIE,EACXZ,EAAE4R,GAAK5R,EAAEwR,GACTxR,EAAEuR,GAAKvR,EAAEyR,GAAK,GAAKpR,EAAIL,EAAEwkC,EAAIjiC,EAC7BvC,EAAE+S,GAAK/S,EAAE4R,GACT5R,EAAEgT,GAAKhT,EAAEuR,GAAK,EAAIlR,EAAIL,EAAEkgB,EAAI3d,EAC5BvC,EAAE4kB,GAAK,EACPlkB,GAAKJ,EACLN,EAAEuX,GAAK5W,EAAIE,EAAI,KACfb,EAAEwX,GAAK7W,EAAID,EAAI,KACfT,EAAES,EAAIC,GAAKX,EAAE2iB,GAAK3iB,EAAE4e,IACpBi3O,GAAG71P,GACHI,EAAEJ,EAAEqiB,GAAIriB,EAAEyyC,GAAI,EAAGhyC,GACjBJ,EAAI,MAGJA,EAAG,IACLF,EAAE0Q,GAAK,EACP1Q,EAAEY,EAAIf,EAAEwR,GACRrR,EAAE8C,EAAIjD,EAAEyR,GACRtR,EAAEO,EAAIV,EAAE4R,GACRzR,EAAEoiC,EAAIviC,EAAEuR,GACRpR,EAAEiQ,GAAKpQ,EAAE+S,GACT5S,EAAEksB,GAAKrsB,EAAEgT,GACT7S,EAAEkQ,GAAKrQ,EAAEwkC,EACTrkC,EAAEqjB,GAAKxjB,EAAEkgB,EACT/f,EAAE80B,EAAI,KACN90B,EAAE60B,EAAI,GACD2oP,GAAI,KACFt9Q,GAAK,IAAK,KAAOA,IAAKA,EAAGu9Q,GAAG,IAAMv9Q,GAAK,EAAIA,GAAKA,EAAIA,EAAA,IACpDA,GAAK,KAAM,MAAQA,IAAKA,EAC3Bw9Q,GAAG,KAAOx9Q,IAAM,IAAMA,GAAK,IAAM,IAAMA,EAAI,IAAMA,EAAA,IAC9CA,GAAK,IAAK,KAAOA,IAAKA,EACzBy9Q,GAAG,IAAMz9Q,IAAM,GAAKA,GAAK,GAAK,GAAKA,EAAI,GAAKA,EAAA,IACzCA,GAAK,IAAK,KAAOA,IAAKA,EACzB09Q,GAAG,IAAM19Q,GAAK,EAAIA,EAAI,EAAI,IAAMA,EAAI,IAAMA,EAC5Cs9Q,GAAK,EAEPK,GAAK9uP,GACL6kC,GAAK5mC,GACL8wP,GAAKvvP,GACLwvP,GAAKlvP,GACLmvP,GAAK7wP,GACL8wP,GAAKxwP,GACLm3N,GAAK50N,GACL6oC,GAAK5lC,GACLirP,GAAK7qP,GACL8qP,GAAK7rP,GACL8rP,GAAKnuP,GACLouP,GAAKlrP,GACLmrP,GAAK55B,GACL65B,GAAKthB,GACLuhB,GAAKpvP,GACLqvP,GAAK3uP,GACL4uP,GAAK9rP,GACL+rP,GAAKhsP,GACL2Q,GAAE,GAAKpU,GACPoU,GAAE,GAAK5V,GACP4V,GAAE,GAAKnT,GACPmT,GAAE,GAAKhU,GACPgU,GAAE,GAAK9Q,GACP8Q,GAAE,GAAKjR,GACPiR,GAAE,GAAK+d,GACP/d,GAAE,GAAK5N,GACP4N,GAAE,GAAKzT,GACPyT,GAAE,GAAKvT,GACPoU,GAAE,GAAKnV,GACPmV,GAAE,GAAK/W,GACP+W,GAAE,GAAKzV,GACPyV,GAAE,GAAK5W,GACP4W,GAAE,GAAKlX,GACPkX,GAAE,GAAKhV,GACPgV,GAAE,GAAKlV,GACPmU,GAAG,GAAK5T,GACR4T,GAAG,GAAK9V,GACR8V,GAAG,GAAK3T,GACR2T,GAAG,GAAK5N,GACR4N,GAAG,GAAKxT,GACRwT,GAAG,GAAK9S,GACR8S,GAAG,GAAKzU,GACRzuB,EAAI,OACCA,EAAI,EAEbA,IAAMA,EAAA,SA5bEL,EAAGG,GAAA,IACRH,EAAEgB,EAAI,EAAGhB,EAAEgB,EAAIhB,EAAE2U,KAAM3U,EAAEgB,EAAG,KAI7BR,EAHEH,EAAIL,EAAE+iB,GAAG/iB,EAAEgB,EAAIhB,EAAEmf,IACnB1e,EAAIT,EAAEsB,EACNhB,EAAIN,EAAA,IAEDQ,EAAI,EAAGA,EAAIF,EAAEiS,KAAM/R,EAAG,KACrBG,EAAIF,EACJI,EAAIP,EACJI,EAAIG,EAAEwhB,GACRzhB,EAAIC,EAAE4xC,GAAK,EAAIjyC,EACf+B,EAAI1B,EAAEuhB,GACNtf,EAAIjC,EAAEyR,GAAGzR,EAAEkP,GAAKvP,GAAA,GAClBK,EAAEsT,GAAGiJ,GACAta,EAAE2c,GAAK9X,EAAEhH,EAAGE,EAAEmT,GAAGmD,GAAG,IACjB,EAAIxP,EAAEhH,EAAGE,EAAEmT,GAAGmD,GAAG,IACjBxP,EAAEhH,EAAGE,EAAEmT,GAAGmD,GAAG,IAChBrU,EAAE2c,GAAK,EACZ5e,EAAEmgB,KAAOle,EAAEilB,GAAKpgB,EAAEhH,EAAGE,EAAEsoB,KACvBrmB,EAAEiT,IAAMpO,EAAEhH,EAAG,KAAO,EAChBmC,EAAEiT,GAAI,KACJzU,EAAIwB,EAAEwb,GACR3c,EAAI,MACDd,EAAI,EAAG,EAAIA,IAAKA,EAAG,KAElBuC,EADArC,EAAIwB,EAAE,EAAI1B,GAAA,IAETuC,EAAI,EAAG,EAAIA,IAAKA,EAAG,CACtBrC,EAAIqiC,GAAG1iC,EAAEE,EAAIwC,IAAIrC,GAAA,IACZ,IAAIyB,EAAIoiC,GAAGj9B,EAAEhH,EAAGI,EAAE,KAAM,EAAIyB,GAC/BA,EAAIoiC,GAAG,EAAIpiC,EAAImF,EAAEhH,EAAGI,EAAEyB,KACxBzB,GAAKyB,EACL9B,EAAEE,EAAIwC,GAAKrC,CAAA,CAEbb,EAAEoB,EAAGK,EAAGjB,EAAGE,EAAG,GACde,GAAK,EACLY,EAAE,EAAI1B,GAAKE,CAAA,OAGZA,EAAI4G,EAAEhH,EAAG,KAAQgH,EAAEhH,EAAG,KAAO,EAAI,EAAKgH,EAAEhH,EAAG,KAAO,EAAI,EACpDmC,EAAEwb,GAAG,GAAKvd,EACXX,EAAEM,EAAGE,EAAGG,EAAG,GACXX,EAAEmC,EAAG,EAAGxB,EAAG,GACf+B,EAAEsmB,GAAKzhB,EAAEhH,EAAG,KAAQgH,EAAEhH,EAAG,KAAQgH,EAAEhH,EAAG,KAAO,EAAI,EAAK,EAAK,KAEzDL,EAAEgB,EAAE6R,GAAI,OAAO8hP,GAAEj1P,EAAG,EAAG,iDACpBA,EAAE2Q,GAAK3Q,EAAEuS,KAAMvS,EAAE2Q,GAAI,IAE1BrQ,EAAID,EACJM,GAFAF,EAAIT,GAEEib,GAAGxa,EAAEya,GAAK,GAChBxa,EAAID,EAAEwa,GAAGxa,EAAEya,GAAKza,EAAEkQ,IAClBnQ,EAAIC,EAAE6R,GAAG7R,EAAEsP,GAAKtP,EAAEkQ,IACb/P,EAAIH,EAAEugB,GAAKxgB,EAAEunB,GAAK,EACpBpnB,EAAEmQ,GAAKpQ,EAAEoQ,GAAK,EACbtQ,EAAEuV,KAAOpV,EAAE8S,GAAK/S,EAAE+S,GAAK,GACtBjT,EAAEqiB,GAAK,EACPriB,EAAEoiB,GAAK,EACPpiB,EAAE+P,GAAK,MACP,KACCgyB,EACF75B,EAKW,GAJX/H,EAAID,EACJA,EAAIJ,EACJM,EAAIH,EAAEuT,GAAGuQ,GACThiB,EAAI9B,EAAE6R,GAAG7R,EAAEsP,GAAKtP,EAAEkQ,IAClB7N,EAAIrC,EAAE2X,GAAG7V,EAAEkd,IACb5e,EAAI0B,EAAEsiB,GACNvjB,EAAI,EACJK,EAAIlB,EAAEwa,GAAGxa,EAAEya,GAAK,GAChBna,EAAIqC,EAAI,EACRhD,EAAES,EAAGS,EAAG,EAAG,KACPiB,EAAEwT,GAAA,IACA7M,EAAI,EACJzF,EAAI7C,EAAE,OACL,CACL4B,EAAIjC,EAAE,QACFwC,EAAIpC,EAAE8S,GAAK9R,EAAE8R,GAAA,GACjB1Q,EAAI0hC,GAAG/jC,EAAGE,EAAE,GAAImC,EAAGD,EAAE0a,GAAI,EAAGhb,EAAG,GAC/B7B,EAAE8S,GAAK9R,EAAE8R,IAAM,EAAI1Q,GAAK,EACpB,EAAIA,EAAGi7Q,GAAGx7Q,EAAG,EAAG3B,EAAGS,OAClB,KACC0B,EAAKR,EAAE,GAAK,GAAM,MACjBA,EAAI,EAAG,IAAMA,EAAGA,GAAK,GAAI3B,EAAES,EAAIkB,GAAKQ,CAAA,CAE3CkG,EAAI,EACJzF,EAAI7C,EAAE,OAEJ4hC,EAAW,GAAP7hC,EAAEmQ,GACNwpB,EAAW,GAAP34B,EAAEmP,GAAA,IACLtO,EAAI,EAAG,EAAIA,IAAKA,EAAG,KAClByyB,EAAQ,EAAJqF,EAAA,IACHt3B,EAAI0F,EAAI,EAAG,EAAI1F,IAAKA,EAIpBw/B,EAAKA,GAAK,GADVvN,GADAlyB,EAAI0hC,GAAG/jC,EAAG+C,EADZV,EAAIkyB,GAAS,EAAJuN,GACS1/B,EAAE2gB,GAAIva,EAAGrI,EAAGS,IACpB4H,IACa,EACrBR,EAAKA,GAAK,GAAM,EAAI3F,EAAI,EAAI,EAAIA,EAAI,EAAI,GAAKlC,EAAES,EAAI,IACnDA,GAAK,GACVkhC,IAAM,EACNlI,EAAKA,GAAK,EAAMrF,GAAK,EACrB7xB,GAAMA,GAAK,EAAKsF,KAAO,MAEzBjF,EAAI++B,EACJt5B,EAAIoxB,GAAK,EACJiI,EAAI,EAAG,EAAIA,EAAGA,GAAK,EAAG,KACzB75B,EAAI,EACJ85B,EAAI7hC,EAAEmQ,IAAO,EAAIyxB,EACjBjI,EAAI34B,EAAEmP,IAAO,EAAIyxB,EACZ//B,EAAI,EAAG,EAAIA,IAAKA,EAAG,KACtByyB,EAAQ,EAAJqF,EACCt3B,EAAI,EAAG,EAAIA,IAAKA,EAClBD,EAAIkyB,GAAS,EAAJuN,GAGPA,EAAKA,GAAK,GADVvN,EAAI,GADJlyB,EAAI0hC,GAAG/jC,EAAGE,EAAE,GAAImC,EAAGD,EAAEygB,GAAI,EAAG1iB,EAAGS,MAEV,EACrBoH,EAAKA,GAAK,GAAM,EAAI3F,EAAI,EAAI,EAAIA,EAAI,EAAI,GAAKlC,EAAES,EAAI,IACnDA,GAAK,GACVkhC,IAAM,EACNlI,EAAKA,GAAK,EAAMrF,GAAK,EAEvBl0B,GAAK2H,GAAM,EAAI65B,EACf9+B,GAAM++B,GAAK,GAAMD,EACjBr5B,IAAU,IAAJoxB,IAAYiI,CAAA,CAEpB5hC,EAAEmQ,GAAKrN,EACP9B,EAAEmP,GAAK5H,EACP3G,EAAEsgB,GAAKzf,EACPb,EAAEqgB,GAAK7hB,EACPwB,EAAEgO,GAAS,MAAJxP,EAAY,EAAI+B,EAAEyN,GACzB3P,IAAMwC,EAAIrC,EAAA,MAERN,EAAEiI,IACFjI,EAAE4R,GAAG5R,EAAE2J,EAAI3J,EAAEkQ,IAAMlQ,EAAE4kB,GAAG7kB,EAAEif,IAAIjf,EAAEuV,IACjCtV,EAAE4R,GAAG5R,EAAE2J,EAAI3J,EAAEkQ,IAAIyC,KAAOxS,GACvBN,EAAE6S,GAAI,OAAO8hP,GAAEj1P,EAAG,EAAG,yCAE3B61P,GAAG71P,GAEHS,EAAIN,EACJG,EAAI,EACJE,GAHAH,EAAIL,GAGEyC,EACN9B,EAAI,EAAIN,EAAEqI,GAAKrI,EAAEW,GAAKX,EAAE6c,IAAM7c,EAAEW,GAAKX,EAAEsU,GACnC,GAAKtU,EAAEmS,GACTxS,EAAG,IACAQ,EAAEQ,EAAIX,EAAEW,EAAKR,EAAEmhB,GAAKhhB,EAAI+gQ,GAAGrhQ,EAAGG,GAAKF,EAAI,EAExCE,GADAkI,EAAIrI,EAAEoC,GACA2b,GAENzd,GADAI,EAAIonC,GAAG9nC,EAAEqI,IACDrI,EAAEmkC,EACV9jC,EAAKK,EAAI,EAAKV,EAAE6f,EAChB1d,EAAI,GAAKhC,EAAIH,EAAEmkC,EACfxhC,EAAI,EAAIxC,EAAIH,EAAE6f,EACdtf,EAAIP,EAAEmR,GACNjP,EAAIlC,EAAEoR,GAAK9Q,EAAI6B,EACfM,EAAIzC,EAAEuR,GACN/Q,EAAIR,EAAEkR,GAAK7Q,EAAIsC,EACf1B,EAAIjB,EAAE0S,GACNpR,EAAItB,EAAE2S,GAAKtS,EAAIsC,EAEfs3B,EAAI,IADJkI,EAAI95B,EAAE1H,GAENoC,EAAIo/B,GAAKniC,EAAEsU,GAAK,KACXtU,EAAEmS,IAAMkvP,GAAGrhQ,EAAGqI,GACfA,EAAEiZ,GACJ,IAAYsT,GAAPlyB,EAAI1C,GAASoC,EAAEzB,EAAGf,EAAE8C,EAAEN,EAAEkf,IAAKjZ,EAAI3F,EAAEka,GAAIvU,EAAI3F,EAAE6a,KAAMlV,EAAG,CAEzDQ,EAAIR,EACJjF,EAAIwxB,EAAA,IAEFzS,GADE29C,GAHAjzB,EAAInqC,GAGEN,GACF2b,GACRmkB,EAAI2K,EAAE1I,EAAA,IACF27B,EAAIA,EAAE9tD,GAAG8tD,EAAE/1D,EAAIlB,GACjBjG,EAAIiqC,EAAE17B,GACN0O,EAAIgtB,EAAEz7B,GAAK,GAAK+Q,EAAI+f,EAAI,GAAKr5B,EAC7BlI,EAAIm/D,EAAEl7C,GACN+S,EAAImoC,EAAEz+C,GAAA,GACJ,GAAKsW,EACP,GAAK/3B,EAAE,GAAK+3B,GAAI,GAAKkV,EAAExkC,EACrB,EAAIQ,GAAK01Q,GAAG37Q,EAAGid,EAAGqiB,EAAGvK,EAAI,GACvBmoC,EAAE/sD,IAAM0rQ,GAAG77Q,EAAGid,EAAGqiB,EAAGvK,GACpB,EAAIv0B,GAAKk7Q,GAAG17Q,EAAGid,EAAGqiB,EAAGvK,EAAI,GACzBmoC,EAAE/sD,IAAMyrQ,GAAG57Q,EAAGid,EAAGqiB,EAAGvK,OACnB,KACCtoB,EAAIw9B,EAAEhtB,EACRzd,EAAIyqC,EAAEt7B,GACN4yB,EAAI0I,EAAE37B,GAAK,EAAIiR,EAAI9S,EAAI,EAAIxG,EAC3B2jC,EAAIK,EAAEn6B,GACNm6B,EAAIA,EAAEl6B,GAAK,EAAIwP,EAAI9S,EAAI,EAAIxG,EAC3BsZ,EAAI29C,EAAEv6C,GAAA,EACJ1c,IACD8vD,GAAG/1D,EAAGid,EAAGqiB,EAAGvK,EAAI,EAAGh3B,EAAGwhB,GACvB87P,GAAG77Q,EAAG+hC,EAAGqI,EAAGK,EAAGx9B,EAAGsoB,EAAI,EAAGh3B,EAAGwhB,IAC9B29C,EAAE/sD,KAAOorQ,GAAGv7Q,EAAGid,EAAGqiB,EAAGvK,EAAGh3B,EAAGwhB,GAAIk8P,GAAGj8Q,EAAG+hC,EAAGqI,EAAGK,EAAGx9B,EAAGsoB,EAAGh3B,EAAGwhB,IAAA,EACnD/e,IACDshP,GAAG9hP,EAAGid,EAAGqiB,EAAGvK,EAAI,EAAGh3B,EAAGwhB,GACvB67P,GAAG57Q,EAAG+hC,EAAGqI,EAAGK,EAAGx9B,EAAGsoB,EAAI,EAAGh3B,EAAGwhB,IAC9B29C,EAAE/sD,KAAOmrQ,GAAGt7Q,EAAGid,EAAGqiB,EAAGvK,EAAGh3B,EAAGwhB,GAAIi8P,GAAGh8Q,EAAG+hC,EAAGqI,EAAGK,EAAGx9B,EAAGsoB,EAAGh3B,EAAGwhB,GAAA,KAG/DniB,EAAEkQ,IAAM+5M,MAAM,kBACV,MAAQ7pN,EAAEi9Q,IAAK,IACjBh1Q,EAAI,GAAK85B,EACTA,EAAI,IAAMA,EAAI,GACdlI,GACM75B,EAAEM,EAAIV,EAAEmR,GACT/Q,EAAEwC,EAAI5C,EAAEoR,GAAKjP,EACb/B,EAAEC,EAAIL,EAAEuR,GACRnR,EAAE8hC,EAAIliC,EAAEkR,GAAKvO,EACbvC,EAAE2P,GAAK/P,EAAE0S,GACTtS,EAAE8sC,EAAIltC,EAAE2S,GAAKhQ,IACZ0F,GAAK3H,EACNN,EAAEM,EAAIH,EACNH,EAAEwC,EAAIV,EACN9B,EAAEC,EAAIoC,EACNrC,EAAE8hC,EAAI1hC,EACNJ,EAAE2P,GAAK9O,EACPb,EAAE8sC,EAAI5rC,GACXyB,IAAMo/B,GAAKzhC,GACXyhC,EAAI/hC,EAAED,IAAMgiC,EAAI/hC,EAAED,GAClBC,EAAEw0B,EAAI,KACNx0B,EAAEu0B,EAAI,KAEJ,MAAQ30B,EAAEwS,IACV,EAAIxS,EAAEwS,GAAGrR,QACTkH,EAAI85B,IACF/hC,EAAEu0B,EAAI06J,GAAGrvL,EAAGI,EAAGiI,EAAG85B,EAAI95B,GACvBjI,EAAEw0B,EAAI50B,EAAEkX,GACT,MAAQ9W,EAAEw0B,GAAK,GAAKx0B,EAAEw0B,EAAEzzB,QACxB,CACAlB,EAAI20P,GAAE50P,EAAG,EAAG,sCACNL,CAAA,CAER0I,EAAIjI,EAAE0/D,IACFp/D,EAAIN,EAAE0/D,EAAIz3D,EACXA,EAAIjI,EAAE0/D,EACPlgE,IAAQ,EAAJc,IACHN,EAAEwC,GAAK5C,EAAEmkC,EAAIzjC,EACbN,EAAE8hC,GAAKliC,EAAE6f,GAAKnf,GAAK,GACnBN,EAAE8sC,GAAKltC,EAAE6f,GAAKnf,GAAK,GACpB,MAAQN,EAAEw0B,IAAMx0B,EAAEu0B,GAAKv0B,EAAEmrB,MAAQ7qB,IACnC2H,EAAI85B,IACA/hC,EAAEwC,GAAKxC,EAAEkB,EACVlB,EAAE8hC,GAAK9hC,EAAEkB,GAAK,EACdlB,EAAE8sC,GAAK9sC,EAAEkB,GAAK,EACf,MAAQlB,EAAEw0B,IAAMx0B,EAAEu0B,GAAKv0B,EAAEkB,GACxBlB,EAAEoQ,GAAKnI,EAAIjI,EAAE0/D,EACb1/D,EAAEysC,EAAIzsC,EAAE2R,GAAK3R,EAAEkB,EACflB,EAAEosC,EAAIrK,EAAI95B,EACVpI,EAAIG,EAAEi9Q,IAAIj9Q,GAAA,CAEfD,EAAI,GAAKH,EAAEyiB,IACT1f,IACClD,EAAEG,EAAEmR,GAAInR,EAAEoR,GAAK9Q,EAAGC,EAAG2B,EAAI,GAAKlC,EAAEmkC,EAAG7jC,GACpCT,EAAEG,EAAEuR,GAAIvR,EAAEkR,GAAK7Q,EAAGoC,EAAGjC,EAAI,EAAIR,EAAE6f,EAAGxf,GAClCR,EAAEG,EAAE0S,GAAI1S,EAAE2S,GAAKtS,EAAGY,EAAGK,EAAI,EAAItB,EAAE6f,EAAGxf,GAAA,KAEnCJ,EAAG,OAAO20P,GAAEj1P,EAAG,EAAG,0BAElB,EA4LC,CAAOA,EAAGG,IAAA,MACRA,EAAEyf,IAAMzf,EAAEyf,GAAGzf,GACrBE,GAAK,SAEFA,GACLL,EAAEoW,GAAK,EACA/V,GAFQ,WAIR4uB,GAAGjvB,EAAGC,EAAGE,EAAGD,EAAGE,GACtBA,EAAIJ,EAAEC,EAAIE,EAAI,GAAKD,IAAME,GAAK,GAC9BJ,EAAEC,EAAIE,EAAI,GAAKD,IAAU,IAALE,EAAY,EAAIA,EAAI,EAAI,IAAOA,CAAA,UAE5CotB,GAAGxtB,EAAGC,EAAGE,EAAGD,EAAGE,EAAGG,GACzB0uB,GAAGjvB,EAAGC,EAAG,EAAGE,EAAGD,EAAIE,GACnB6uB,GAAGjvB,EAAGC,EAAG,EAAGE,EAAGD,EAAIK,GACnB0uB,GAAGjvB,EAAGC,EAAG,EAAGE,EAAGD,EAAIK,GACnB0uB,GAAGjvB,EAAGC,EAAG,EAAGE,EAAGD,EAAIE,EAAA,UAEZ2uB,GAAG/uB,GAAA,OACD,MAAQA,GAAM,IAAMA,CAAA,UAEtByuB,GAAGzuB,EAAGC,EAAGE,EAAGD,GAAA,IAEjBE,EADEI,EAAI,EAEJH,EAAIE,EAAE,QACLH,EAAI,EAAG,EAAIA,IAAKA,EAAG,KAClBK,EAAIT,EAAEC,EAAI,GAAKD,EAAEC,EAAI,GACrBK,EAAIN,EAAEC,EAAI,GAAKD,EAAEC,EAAI,GACrBU,GAAM,MAAQX,EAAEC,EAAI,IAAO,IAAM8uB,GAAG/uB,EAAEC,EAAI,KAC1CY,EAAIkuB,GAAG/uB,EAAEC,EAAI,KAAQ,MAAQD,EAAEC,EAAI,KAAQ,IAC/CI,EAAEG,EAAI,GAAKC,EAAII,EACfR,EAAEG,EAAI,GAAKF,EAAIK,EACfN,EAAEG,EAAI,GAAKF,EAAIK,EACfN,EAAEG,EAAI,GAAKC,EAAII,EACfL,GAAK,EACLP,GAAA,KAEGG,EAAII,EAAI,EAAG,EAAIJ,IAAKA,EAEpBK,GADFT,EAAIK,EAAEG,EAAI,GAAK,GACLH,EAAEG,EAAI,GACdF,EAAIN,EAAIK,EAAEG,EAAI,GACdG,GAAM,MAAQN,EAAEG,EAAI,IAAO,IAAMuuB,GAAG1uB,EAAEG,EAAI,KAE3CyuB,GAAG9uB,EAAGD,EAAG,EAAG,EAAGO,GADdI,EAAIkuB,GAAG1uB,EAAEG,EAAI,KAAQ,MAAQH,EAAEG,EAAI,KAAQ,MAE5CyuB,GAAG9uB,EAAGD,EAAG,EAAG,EAAGI,EAAIK,GACnBsuB,GAAG9uB,EAAGD,EAAG,EAAG,EAAGI,EAAIK,GACnBsuB,GAAG9uB,EAAGD,EAAG,EAAG,EAAGO,EAAII,GACnBL,IACCN,GAAK,YAEH0tB,GAAG5tB,EAAGC,EAAGE,EAAGD,GAAA,IACfE,EAAIJ,EAAEC,EAAI,GAAK,EACjBM,EAAK,MAAQP,EAAEC,EAAI,IAAO,GAC1BO,EAAIuuB,GAAG/uB,EAAEC,EAAI,IACbI,EAAK,MAAQL,EAAEC,EAAI,IAAO,GAE5ButB,GAAGrtB,EAAGD,EAAG,EAAGE,EAAII,EADhBR,EAAI+uB,GAAG/uB,EAAEC,EAAI,IACSI,GACtBmtB,GAAGrtB,EAAGD,EAAG,EAAGE,EAAIG,EAAGP,EAAGK,GACtBmtB,GAAGrtB,EAAGD,EAAG,EAAGE,EAAIG,EAAGP,EAAGK,GACtBmtB,GAAGrtB,EAAGD,EAAG,EAAGE,EAAII,EAAGR,EAAGK,EAAA,UAEf8sB,GAAGntB,EAAGC,EAAGE,EAAGD,EAAGE,GACtBquB,GAAGzuB,EAAGC,EAAGE,EAAGD,GACZE,GAAKquB,GAAGzuB,EAAGC,EAAI,GAAIE,EAAGD,EAAI,YAEnBwuB,GAAG1uB,EAAGC,EAAGE,EAAGD,GACnB6zD,GAAG/zD,EAAGC,EAAI,EAAGE,EAAGD,EAAG,GACnB6zD,GAAG/zD,EAAGC,EAAI,GAAIE,EAAGD,EAAI,IAAK,YAEnB8uB,GAAGhvB,EAAGC,EAAGE,EAAGD,GAAA,IAEfE,EAAA,IADJJ,EAAIA,EAAEC,EAAI,GAAK,EAEVG,EAAI,EAAG,EAAIA,IAAKA,EAAA,IAAQH,EAAI,EAAG,EAAIA,IAAKA,EAAGgvB,GAAG9uB,EAAGD,EAAGD,EAAGG,EAAGJ,EAAA,UAExDstB,GAAGttB,EAAGC,EAAGE,EAAGD,GACnBF,EAAEC,EAAI,IAAMi+Q,GAAGl+Q,EAAGC,EAAI,EAAGE,EAAGD,GAC5BF,EAAEC,EAAI,KAAOi+Q,GAAGl+Q,EAAGC,EAAI,GAAIE,EAAGD,EAAI,GAClCF,EAAEC,EAAI,KAAOi+Q,GAAGl+Q,EAAGC,EAAI,GAAIE,EAAGD,EAAI,KAClCF,EAAEC,EAAI,KAAOi+Q,GAAGl+Q,EAAGC,EAAI,GAAIE,EAAGD,EAAI,IAAM,YAEjCgvB,GAAGlvB,EAAGC,EAAGE,EAAGD,GAAA,IAEjBE,EADEI,EAAID,EAAE,QAELH,EAAI,EAAG,EAAIA,IAAKA,EAAG,KAClBC,EAAIL,EAAEC,EAAI,EAAIG,GAAKJ,EAAEC,EAAI,GAAKG,GAC9BK,EAAIT,EAAEC,EAAI,EAAIG,GAAKJ,EAAEC,EAAI,EAAIG,GAC7BE,EAAIN,EAAEC,EAAI,EAAIG,GAAKJ,EAAEC,EAAI,EAAIG,GAC7BO,EAAIX,EAAEC,EAAI,EAAIG,GAAKJ,EAAEC,EAAI,GAAKG,GAClCI,EAAE,EAAIJ,GAAKC,EAAII,EACfD,EAAE,EAAIJ,GAAKC,EAAII,EACfD,EAAE,EAAIJ,GAAKO,EAAIL,EACfE,EAAE,GAAKJ,GAAKO,EAAIL,CAAA,KAEbF,EAAI,EAAG,EAAIA,IAAKA,EAEhBC,GADFL,EAAIQ,EAAE,EAAI,EAAIJ,GAAK,GACTI,EAAE,EAAI,EAAIJ,GAClBK,EAAID,EAAE,EAAI,EAAIJ,GAAKI,EAAE,EAAI,EAAIJ,GAC7BE,EAAIE,EAAE,EAAI,EAAIJ,GAAKI,EAAE,EAAI,EAAIJ,GAC7BO,EAAIX,EAAIQ,EAAE,EAAI,EAAIJ,GAClBD,EAAED,EAAI,GAAMG,EAAII,GAAM,EACtBN,EAAED,EAAI,IAAOS,EAAIL,GAAM,EACvBH,EAAED,EAAI,IAAOG,EAAII,GAAM,EACvBN,EAAED,EAAI,IAAOS,EAAIL,GAAM,EACvBJ,GAAK,YAEHytB,GAAG3tB,EAAGC,EAAGE,GAAA,IAIdD,EAHEE,EAAIH,EAAI,GACVM,EAAIw+Q,GACJv+Q,EAAI,IAAMR,EAAEI,EAAI,OAEbF,EAAI,EAAGA,EAAIC,IAAKD,EAAG,KAGpBG,EAFEI,EAAIF,EACND,EAAIE,EAAIR,EAAEC,EAAI,OAEXI,EAAI,EAAGA,EAAIF,IAAKE,EAAGL,EAAEC,EAAII,GAAKI,EAAEH,EAAIN,EAAEI,EAAIC,IAC/CJ,GAAK,aAGA4tB,GAAG7tB,EAAGC,GACb0tB,GAAG3tB,EAAGC,EAAG,YAEFwtB,GAAGztB,EAAGC,GACb0tB,GAAG3tB,EAAGC,EAAG,YAEFstB,GAAGvtB,EAAGC,GACb0tB,GAAG3tB,EAAGC,EAAG,aAEF4uB,GAAG7uB,EAAGC,GAAA,IACTE,EAAA,IACCA,EAAI,EAAG,GAAKA,IAAKA,EAAGD,EAAEF,EAAGC,EAAI,GAAKE,EAAGH,EAAGC,EAAI,GAAI,aAE9CytB,GAAG1tB,EAAGC,GAAA,IACTE,EAAA,IACCA,EAAI,GAAI,EAAIA,IAAKA,EAAGC,EAAEJ,EAAGC,EAAGD,EAAEC,EAAI,GAAI,IAAMA,GAAK,YAE/CuuB,GAAGxuB,EAAGC,EAAGE,GAAA,IACZD,EAAA,IACCA,EAAI,EAAG,GAAKA,IAAKA,EAAGE,EAAEH,EAAGE,EAAI,GAAKD,EAAGF,EAAG,aAEtCmvB,GAAGnvB,EAAGC,GAAA,IAEXE,EADED,EAAI,OAEHC,EAAI,EAAG,GAAKA,IAAKA,EAAGD,GAAKF,EAAEC,EAAI,EAAI,GAAKE,GAAKH,EAAEC,EAAIE,EAAI,IAC5DquB,GAAGtuB,GAAK,EAAGF,EAAGC,EAAA,UAEPmtB,GAAGptB,EAAGC,GAAA,IAEXE,EADED,EAAI,MAEHC,EAAI,EAAG,GAAKA,IAAKA,EAAGD,GAAKF,EAAEC,EAAI,EAAI,GAAKE,GAC7CquB,GAAGtuB,GAAK,EAAGF,EAAGC,EAAA,UAEPqvB,GAAGtvB,EAAGC,GAAA,IAEXE,EADED,EAAI,MAEHC,EAAI,EAAG,GAAKA,IAAKA,EAAGD,GAAKF,EAAEC,EAAIE,EAAI,IACxCquB,GAAGtuB,GAAK,EAAGF,EAAGC,EAAA,UAEPmvB,GAAGpvB,EAAGC,GACbuuB,GAAG,IAAKxuB,EAAGC,EAAA,UAEJ4wB,GAAE7wB,EAAGC,EAAGE,GAAA,OACPH,EAAI,EAAIC,EAAIE,EAAI,GAAM,WAEvBmwB,GAAGtwB,EAAGC,GAAA,IAQXE,EAPEC,EAAIH,EAAI,GAKoB,IAJ9BG,EAAI,IAAI4tD,WAAW,CACjBn9B,GAAE7wB,EAAEI,EAAI,GAAIJ,EAAEI,EAAI,GAAIJ,EAAEI,EAAI,IAC5BywB,GAAE7wB,EAAEI,EAAI,GAAIJ,EAAEI,EAAI,GAAIJ,EAAEI,EAAI,IAC5BywB,GAAE7wB,EAAEI,EAAI,GAAIJ,EAAEI,EAAI,GAAIJ,EAAEI,EAAI,IAC5BywB,GAAE7wB,EAAEI,EAAI,GAAIJ,EAAEI,EAAI,GAAIJ,EAAEI,EAAI,MAG3BD,EAAI,EAAG,EAAIA,IAAKA,EAAGD,EAAEF,EAAGC,EAAI,GAAKE,EAAGC,EAAG,EAAGA,EAAEoB,OAAA,UAE1CiuB,GAAGzvB,EAAGC,GAAA,IACTE,EAAIH,EAAEC,EAAI,GACZC,EAAIF,EAAEC,EAAI,EAAI,IACdG,EAAIJ,EAAEC,EAAI,EAAI,IACdM,EAAIP,EAAEC,EAAI,EAAI,IAChBq6B,EAAGt6B,EAAGC,EAAI,EAAG,SAAW4wB,GAAE7wB,EAAEC,EAAI,EAAI,IAAKE,EAAGD,IAC5Co6B,EAAGt6B,EAAGC,EAAI,GAAI,SAAW4wB,GAAE1wB,EAAGD,EAAGE,IACjCk6B,EAAGt6B,EAAGC,EAAI,GAAI,SAAW4wB,GAAE3wB,EAAGE,EAAGG,IACjC+5B,EAAGt6B,EAAGC,EAAI,GAAI,SAAW4wB,GAAEzwB,EAAGG,EAAGA,GAAA,UAE1B8uB,GAAGrvB,EAAGC,GAAA,IAEXE,EADED,EAAI,MAEHC,EAAI,EAAG,EAAIA,IAAKA,EAAGD,GAAKF,EAAEC,EAAIE,EAAI,IAAMH,EAAEC,EAAI,EAAI,GAAKE,GAAA,IAC5DD,IAAM,EACDC,EAAI,EAAG,EAAIA,IAAKA,EAAGC,EAAEJ,EAAGC,EAAI,GAAKE,EAAGD,EAAG,YAErCyyB,GAAG3yB,EAAGC,GAAA,IACTE,EAAIH,EAAEC,EAAI,EAAI,GAChBC,EAAIF,EAAEC,EAAI,EAAI,IACdG,EAAIJ,EAAEC,EAAI,EAAI,IACdM,EAAIP,EAAEC,EAAI,EAAI,IACdO,EAAIR,EAAEC,EAAI,EAAI,IACdI,EAAIL,EAAEC,EAAI,EAAI,IACdQ,EAAIT,EAAEC,EAAI,EAAI,IACdK,EAAIN,EAAEC,EAAI,EAAI,IAChBD,EAAEC,EAAI,EAAI,IAAM4wB,GAAE3wB,EAAGE,EAAGJ,EAAEC,EAAI,EAAI,KAClCD,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAM4wB,GAAE1wB,EAAGD,EAAGE,GACxCJ,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAM4wB,GAAEtwB,EAAGJ,EAAGD,GACxDF,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,GAAK4wB,GAAErwB,EAAGD,EAAGJ,GACvEH,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,GAAK4wB,GAAExwB,EAAGG,EAAGD,GACvDP,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,GAAK4wB,GAAEpwB,EAAGJ,EAAGG,GACvCR,EAAEC,EAAI,EAAI,GAAK4wB,GAAEvwB,EAAGG,EAAGJ,EAAA,UAEhBmhD,GAAGxhD,EAAGC,GAAA,IACTE,EAAIH,EAAEC,EAAI,EAAI,IAChBC,EAAIF,EAAEC,EAAI,EAAI,IACdG,EAAIJ,EAAEC,EAAI,EAAI,IACdM,EAAIP,EAAEC,EAAI,EAAI,IACdO,EAAIR,EAAEC,EAAI,EAAI,IACdI,EAAIL,EAAEC,EAAI,EAAI,IACdQ,EAAIT,EAAEC,EAAI,EAAI,IAChBD,EAAEC,EAAI,EAAI,GAAK4wB,GAAE7wB,EAAEC,EAAI,EAAI,IAAKE,EAAGD,GACnCF,EAAEC,EAAI,EAAI,GAAKD,EAAEC,EAAI,EAAI,IAAM4wB,GAAE1wB,EAAGD,EAAGE,GACvCJ,EAAEC,EAAI,EAAI,GAAKD,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAM4wB,GAAE3wB,EAAGE,EAAGG,GACvDP,EAAEC,EAAI,EAAI,GAAKD,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAM4wB,GAAEzwB,EAAGG,EAAGC,GACvER,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAM4wB,GAAEtwB,EAAGC,EAAGH,GACxDL,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAM4wB,GAAErwB,EAAGH,EAAGI,GACxCT,EAAEC,EAAI,EAAI,IAAM4wB,GAAExwB,EAAGI,EAAGA,EAAA,UAEjB+xB,GAAGxyB,EAAGC,GAAA,IACTE,EAAIH,EAAEC,EAAI,EAAI,GAChBC,EAAIF,EAAEC,EAAI,EAAI,IACdG,EAAIJ,EAAEC,EAAI,EAAI,IACdM,EAAIP,EAAEC,EAAI,EAAI,IACdO,EAAIR,EAAEC,EAAI,EAAI,IACdI,EAAIL,EAAEC,EAAI,EAAI,IACdQ,EAAIT,EAAEC,EAAI,EAAI,IACdK,EAAIN,EAAEC,EAAI,EAAI,IAChBD,EAAEC,EAAI,EAAI,GAAKD,EAAEC,EAAI,EAAI,IAAOM,EAAIC,EAAI,GAAM,EAC9CR,EAAEC,EAAI,EAAI,GAAKD,EAAEC,EAAI,EAAI,IAAOO,EAAIH,EAAI,GAAM,EAC9CL,EAAEC,EAAI,EAAI,GAAKD,EAAEC,EAAI,EAAI,IAAOI,EAAII,EAAI,GAAM,EAC9CT,EAAEC,EAAI,EAAI,GAAMQ,EAAIH,EAAI,GAAM,EAC9BN,EAAEC,EAAI,EAAI,IAAM4wB,GAAEzwB,EAAGF,EAAGC,GACxBH,EAAEC,EAAI,EAAI,IAAM4wB,GAAE3wB,EAAGC,EAAGI,GACxBP,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAM4wB,GAAE1wB,EAAGI,EAAGC,GACxCR,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAM4wB,GAAEtwB,EAAGC,EAAGH,GACxCL,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAM4wB,GAAErwB,EAAGH,EAAGI,GACxCT,EAAEC,EAAI,EAAI,IAAM4wB,GAAExwB,EAAGI,EAAGH,EAAA,UAEjBu1B,GAAG71B,EAAGC,GAAA,IACTE,EAAIH,EAAEC,EAAI,EAAI,IAChBC,EAAIF,EAAEC,EAAI,EAAI,IACdG,EAAIJ,EAAEC,EAAI,EAAI,IACdM,EAAIP,EAAEC,EAAI,EAAI,IACdO,EAAIR,EAAEC,EAAI,EAAI,IACdI,EAAIL,EAAEC,EAAI,EAAI,IACdQ,EAAIT,EAAEC,EAAI,EAAI,IACdK,EAAIN,EAAEC,EAAI,EAAI,IAChBD,EAAEC,EAAI,EAAI,GAAME,EAAID,EAAI,GAAM,EAC9BF,EAAEC,EAAI,EAAI,GAAKD,EAAEC,EAAI,EAAI,IAAOC,EAAIE,EAAI,GAAM,EAC9CJ,EAAEC,EAAI,EAAI,GAAKD,EAAEC,EAAI,EAAI,IAAOG,EAAIG,EAAI,GAAM,EAC9CP,EAAEC,EAAI,EAAI,GAAKD,EAAEC,EAAI,EAAI,IAAOM,EAAIC,EAAI,GAAM,EAC9CR,EAAEC,EAAI,EAAI,IAAM4wB,GAAE1wB,EAAGD,EAAGE,GACxBJ,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAM4wB,GAAE3wB,EAAGE,EAAGG,GACxCP,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAM4wB,GAAEzwB,EAAGG,EAAGC,GACxCR,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAM4wB,GAAEtwB,EAAGC,EAAGH,GACxCL,EAAEC,EAAI,EAAI,IAAM4wB,GAAErwB,EAAGH,EAAGI,GACxBT,EAAEC,EAAI,EAAI,IAAM4wB,GAAExwB,EAAGI,EAAGH,EAAA,UAEjB4vB,GAAGlwB,EAAGC,GAAA,IACTE,EAAIH,EAAEC,EAAI,EAAI,GAChBC,EAAIF,EAAEC,EAAI,EAAI,IACdG,EAAIJ,EAAEC,EAAI,EAAI,IACdM,EAAIP,EAAEC,EAAI,EAAI,IAChBD,EAAEC,EAAI,EAAI,GAAME,EAAID,EAAI,GAAM,EAC9BF,EAAEC,EAAI,EAAI,GAAKD,EAAEC,EAAI,EAAI,IAAOC,EAAIE,EAAI,GAAM,EAC9CJ,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAOG,EAAIG,EAAI,GAAM,EAC/CP,EAAEC,EAAI,EAAI,GAAK4wB,GAAE1wB,EAAGD,EAAGE,GACvBJ,EAAEC,EAAI,EAAI,GAAKD,EAAEC,EAAI,EAAI,IAAM4wB,GAAE3wB,EAAGE,EAAGG,GACvCP,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAM4wB,GAAEzwB,EAAGG,EAAGA,GACxCP,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAMD,EAC9DC,EAAI,EAAI,IACND,EAAEC,EAAI,EAAI,IAAMM,CAAA,UAEbyvB,GAAGhwB,EAAGC,GAAA,IACTE,EAAIH,EAAEC,EAAI,EAAI,GAChBC,EAAIF,EAAEC,EAAI,EAAI,IACdG,EAAIJ,EAAEC,EAAI,EAAI,IACdM,EAAIP,EAAEC,EAAI,EAAI,IACdO,EAAIR,EAAEC,EAAI,EAAI,IACdI,EAAIL,EAAEC,EAAI,EAAI,IACdQ,EAAIT,EAAEC,EAAI,EAAI,IACdK,EAAIN,EAAEC,EAAI,EAAI,IAChBD,EAAEC,EAAI,EAAI,GAAKD,EAAEC,EAAI,EAAI,IAAOE,EAAIK,EAAI,GAAM,EAC9CR,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAOC,EAAIC,EAAI,GAAM,EAC/CH,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAOG,EAAIF,EAAI,GAAM,EAC/CF,EAAEC,EAAI,EAAI,IAAOM,EAAIH,EAAI,GAAM,EAC/BJ,EAAEC,EAAI,EAAI,GAAK4wB,GAAExwB,EAAGI,EAAGH,GACvBN,EAAEC,EAAI,EAAI,GAAK4wB,GAAErwB,EAAGH,EAAGI,GACvBT,EAAEC,EAAI,EAAI,GAAKD,EAAEC,EAAI,EAAI,IAAM4wB,GAAE1wB,EAAGK,EAAGH,GACvCL,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAM4wB,GAAE3wB,EAAGC,EAAGK,GACxCR,EAAEC,EAAI,EAAI,IAAMD,EAAEC,EAAI,EAAI,IAAM4wB,GAAEzwB,EAAGF,EAAGC,GACxCH,EAAEC,EAAI,EAAI,IAAM4wB,GAAEtwB,EAAGH,EAAGF,EAAA,UAEjB0vB,GAAG5vB,EAAGC,GAAA,IACTE,EAAA,IACCA,EAAI,EAAG,EAAIA,IAAKA,EAAGD,EAAEF,EAAGC,EAAI,GAAKE,EAAGH,EAAGC,EAAI,GAAI,YAE7C01B,GAAG31B,EAAGC,GAAA,IACTE,EAAA,IACCA,EAAI,EAAG,EAAIA,IAAKA,EAAGC,EAAEJ,EAAGC,EAAGD,EAAEC,EAAI,GAAI,GAAKA,GAAK,YAE7C8wB,GAAG/wB,EAAGC,EAAGE,GAAA,IACZD,EAAA,IACCA,EAAI,EAAG,EAAIA,IAAKA,EAAGE,EAAEH,EAAGE,EAAI,GAAKD,EAAGF,EAAG,YAErC2vB,GAAG3vB,EAAGC,GAAA,IAEXE,EADED,EAAI,MAEHC,EAAI,EAAG,EAAIA,IAAKA,EAAGD,GAAKF,EAAEC,EAAIE,EAAI,IAAMH,EAAEC,EAAI,EAAI,GAAKE,GAC5D4wB,GAAG7wB,GAAK,EAAGF,EAAGC,EAAA,UAEPwwB,GAAGzwB,EAAGC,GAAA,IAEXE,EADED,EAAI,MAEHC,EAAI,EAAG,EAAIA,IAAKA,EAAGD,GAAKF,EAAEC,EAAIE,EAAI,IACvC4wB,GAAG7wB,GAAK,EAAGF,EAAGC,EAAA,UAEP8vB,GAAG/vB,EAAGC,GAAA,IAEXE,EADED,EAAI,MAEHC,EAAI,EAAG,EAAIA,IAAKA,EAAGD,GAAKF,EAAEC,EAAI,EAAI,GAAKE,GAC5C4wB,GAAG7wB,GAAK,EAAGF,EAAGC,EAAA,UAEP6uB,GAAG9uB,EAAGC,GACb8wB,GAAG,IAAK/wB,EAAGC,EAAA,UAEJ6vB,GAAG9vB,EAAGC,EAAGE,GAAA,IACZD,EAAIF,EAAEC,EAAIE,GACZC,EAAIJ,EAAEC,EAAI,GACVM,EAAI,GAAKH,EAAIF,GAAK8+Q,GAAG,KAAOh/Q,EAAEC,EAAI,EAAIE,GAAKH,EAAEC,EAAIE,IACjDK,EAAIwmQ,GAAG,KAAQzmQ,EAAI,GAAM,IAC3BP,EAAEC,EAAIE,GAAK4+Q,GAAE,IAAM7+Q,EAAI8mQ,GAAG,KAAQzmQ,EAAI,GAAM,KAC5CP,EAAEC,EAAI,GAAK8+Q,GAAE,IAAM3+Q,EAAII,EAAA,UAEhBkyB,GAAG1yB,EAAGC,EAAGE,EAAGD,GAAA,IACfE,EAAIJ,EAAEC,EAAI,GACZM,EAAIP,EAAEC,EAAIE,GAAA,OACL8+Q,GAAE,IAAMj/Q,EAAEC,EAAI,EAAIE,GAAKH,EAAEC,EAAIE,IAAMD,GAAK++Q,GAAE,IAAM1+Q,EAAIH,GAAKF,CAAA,UAEzD0yB,GAAG5yB,EAAGC,EAAGE,EAAGD,GAAA,OAEjB,EAAI++Q,GAAE,IAAMj/Q,EAAEC,EAAIE,GAAKH,EAAEC,EAAI,IAAMg/Q,GAAE,IAAMj/Q,EAAEC,EAAI,EAAIE,GAAKH,EAAEC,EAAIE,KAAOD,CAAA,UAGlE2yB,GAAG7yB,EAAGC,EAAGE,EAAGD,EAAGE,GAAA,IAClBG,EAAIP,EAAEC,EAAI,EAAIE,GAChBK,EAAIR,EAAEC,EAAI,EAAIE,GACdE,EAAIL,EAAEC,EAAIE,GACVM,EAAIT,EAAEC,EAAI,GACVK,EAAIN,EAAEC,EAAIE,GACVQ,EAAIX,EAAEC,EAAI,EAAIE,GACdU,EAAIb,EAAEC,EAAI,EAAIE,GAAA,OACT,EAAI8+Q,GAAE,IAAM5+Q,EAAII,GAAKw+Q,GAAE,IAAMz+Q,EAAIF,GAAKJ,EACzC,EACA++Q,GAAE,IAAMj/Q,EAAEC,EAAI,EAAIE,GAAKI,IAAMH,GAC3B6+Q,GAAE,IAAM1+Q,EAAIC,IAAMJ,GAClB6+Q,GAAE,IAAMz+Q,EAAIH,IAAMD,GAClB6+Q,GAAE,IAAMp+Q,EAAIF,IAAMP,GAClB6+Q,GAAE,IAAMt+Q,EAAIL,IAAMF,GAClB6+Q,GAAE,IAAM3+Q,EAAIG,IAAML,CAAA,UAEjBmvB,GAAGvvB,EAAGC,EAAGE,EAAGD,GAAA,IACfE,EAAI,EAAIF,EAAI,MACXA,EAAI,EAAG,GAAKA,IAAKA,EAAG0yB,GAAG5yB,EAAGC,EAAIC,EAAGC,EAAGC,IAAM0vB,GAAG9vB,EAAGC,EAAIC,EAAGC,EAAA,UAErD8vB,GAAGjwB,EAAGC,EAAGE,EAAGD,GAAA,IACfE,EAAI,EAAIF,EAAI,MACXA,EAAI,EAAG,GAAKA,IAAKA,EAAG0yB,GAAG5yB,EAAGC,EAAIC,EAAIC,EAAG,EAAGC,IAAM0vB,GAAG9vB,EAAGC,EAAIC,EAAIC,EAAG,YAE7D4yB,GAAG/yB,EAAGC,EAAGE,EAAGD,GAAA,IACfE,EAAA,IACCA,EAAI,EAAG,EAAIA,IAAKA,EAAiBmvB,GAAGvvB,EAAhBC,GAAK,EAAIE,EAAaA,EAAGD,EAAA,UAE3C4yB,GAAG9yB,EAAGC,EAAGE,EAAGD,GAAA,IACfE,EAAA,IACCA,EAAI,EAAG,EAAIA,IAAKA,EAAa6vB,GAAGjwB,EAAZC,GAAK,EAAaE,EAAGD,EAAA,UAEvCy6P,GAAG36P,EAAGC,EAAGE,EAAGD,EAAGE,EAAGG,EAAGC,EAAGH,GAAA,IAC1BE,EAAI,EAAIA,EAAI,EAAG,EAAIH,KAAO,IACzByyB,GAAG7yB,EAAGC,EAAGE,EAAGI,EAAGC,GACjB,GAAIkyB,GAAG1yB,EAAGC,EAAGE,EAAGE,GAAIyvB,GAAG9vB,EAAGC,EAAGE,OACxB,KACCM,EAAIT,EACNM,EAAIL,EACJU,EAAIR,EACJU,EAAIJ,EAAEH,EAAI,EAAIK,GACdD,EAAID,EAAEH,EAAIK,GACVC,EAAIH,EAAEH,EAAI,GACViC,EAAI9B,EAAEH,EAAIK,GACVmC,EAAIrC,EAAEH,EAAI,EAAIK,GAEdW,EAAK,IADL8B,EAAI47Q,GAAG,KAAO,GAAKp+Q,EAAIF,GAAKs+Q,GAAG,KAAOn+Q,EAAI0B,KAC5B,IAAO,EACrBZ,EAAK,GAAKyB,EAAI,IAAO,EACrBA,EAAK,EAAIA,EAAI,IAAO,EACtB3C,EAAEH,EAAI,EAAIK,GAAKo+Q,GAAE,IAAMt+Q,EAAEH,EAAI,EAAIK,GAAKyC,GACtC3C,EAAEH,EAAI,EAAIK,GAAKo+Q,GAAE,IAAMl+Q,EAAIc,GAC3BlB,EAAEH,EAAIK,GAAKo+Q,GAAE,IAAMr+Q,EAAIY,GACvBb,EAAEH,EAAI,GAAKy+Q,GAAE,IAAMn+Q,EAAIU,GACvBb,EAAEH,EAAIK,GAAKo+Q,GAAE,IAAMx8Q,EAAIZ,GACvBlB,EAAEH,EAAI,EAAIK,GAAKo+Q,GAAE,IAAMj8Q,EAAIM,EAAA,CAE/BnD,GAAKC,CAAA,WAGAmzB,GAAGrzB,EAAGC,EAAGE,EAAGD,EAAGE,EAAGG,EAAGC,EAAGH,GAAA,IAC1BE,EAAI,EAAIA,EAAI,EAAG,EAAIH,KAAO,IACzByyB,GAAG7yB,EAAGC,EAAGE,EAAGI,EAAGC,GACjB,GAAIkyB,GAAG1yB,EAAGC,EAAGE,EAAGE,GAAIyvB,GAAG9vB,EAAGC,EAAGE,OACxB,KACCM,EAAIT,EACNM,EAAIL,EACJU,EAAIR,EACJU,EAAIJ,EAAEH,EAAIK,GACVD,EAAID,EAAEH,EAAI,GACVM,EAAIH,EAAEH,EAAIK,GAEV4B,EAAIykQ,GAAG,KAAY,GADnBlkQ,EAAI,GAAKpC,EAAIG,KACY,IACzBiC,EAAIkkQ,GAAG,KAAQlkQ,EAAI,GAAM,IACzBxB,EAAKiB,EAAI,GAAM,EACjB9B,EAAEH,EAAI,EAAIK,GAAKo+Q,GAAE,IAAMt+Q,EAAEH,EAAI,EAAIK,GAAKW,GACtCb,EAAEH,EAAIK,GAAKo+Q,GAAE,IAAMl+Q,EAAIiC,GACvBrC,EAAEH,EAAI,GAAKy+Q,GAAE,IAAMr+Q,EAAI6B,GACvB9B,EAAEH,EAAIK,GAAKo+Q,GAAE,IAAMn+Q,EAAIU,EAAA,CAE3BrB,GAAKC,CAAA,WAGAiwB,GAAGnwB,EAAGC,EAAGE,EAAGD,EAAGE,EAAGG,GACzBo6P,GAAG36P,EAAGC,EAAGE,EAAG,EAAG,GAAID,EAAGE,EAAGG,EAAA,UAElB6yB,GAAGpzB,EAAGC,EAAGE,EAAGD,EAAGE,EAAGG,GACzBo6P,GAAG36P,EAAGC,EAAG,EAAGE,EAAG,GAAID,EAAGE,EAAGG,EAAA,UAElB6vB,GAAGpwB,EAAGC,EAAGE,EAAGD,EAAGE,EAAGG,GAAA,IACrBC,EAAA,IACCA,EAAI,EAAG,EAAIA,IAAKA,EAAiB6yB,GAAGrzB,EAAhBC,GAAK,EAAIE,EAAaA,EAAG,EAAG,GAAID,EAAGE,EAAGG,EAAA,UAExD+yB,GAAGtzB,EAAGC,EAAGE,EAAGD,EAAGE,EAAGG,GAAA,IACrBC,EAAA,IACCA,EAAI,EAAG,EAAIA,IAAKA,EAAa6yB,GAAGrzB,EAAZC,GAAK,EAAa,EAAGE,EAAG,GAAID,EAAGE,EAAGG,EAAA,UAEpDizB,GAAGxzB,EAAGC,EAAGE,EAAGD,EAAGE,EAAGG,EAAGC,EAAGH,GAC/Bs6P,GAAG36P,EAAGC,EAAGG,EAAG,EAAG,EAAGG,EAAGC,EAAGH,GACxBs6P,GAAGx6P,EAAGD,EAAGE,EAAG,EAAG,EAAGG,EAAGC,EAAGH,EAAA,UAEjBoyB,GAAGzyB,EAAGC,EAAGE,EAAGD,EAAGE,EAAGG,EAAGC,EAAGH,GAC/Bs6P,GAAG36P,EAAGC,EAAG,EAAGG,EAAG,EAAGG,EAAGC,EAAGH,GACxBs6P,GAAGx6P,EAAGD,EAAG,EAAGE,EAAG,EAAGG,EAAGC,EAAGH,EAAA,UAEjBwkP,GAAG7kP,EAAGC,EAAGE,EAAGD,EAAGE,EAAGG,EAAGC,EAAGH,GAC/BgzB,GAAGrzB,EAAGC,EAAI,EAAIG,EAAGA,EAAG,EAAG,EAAGG,EAAGC,EAAGH,GAChCgzB,GAAGlzB,EAAGD,EAAI,EAAIE,EAAGA,EAAG,EAAG,EAAGG,EAAGC,EAAGH,EAAA,UAEzB+8P,GAAGp9P,EAAGC,EAAGE,EAAGD,EAAGE,EAAGG,EAAGC,EAAGH,GAC/BgzB,GAAGrzB,EAAGC,EAAI,EAAG,EAAGG,EAAG,EAAGG,EAAGC,EAAGH,GAC5BgzB,GAAGlzB,EAAGD,EAAI,EAAG,EAAGE,EAAG,EAAGG,EAAGC,EAAGH,EAAA,UAErBg9P,KAAA,KACF3nO,GAAK,IAAIy6N,GAAA,KACT/vO,GAAK,QACLN,GAAK,QACLoD,GAAK,QACLT,GAAK7e,KAAKuf,GAAKvf,KAAKoc,GAAKpc,KAAK0c,GAAK,OACnC5M,GAAK,IAAI08O,GAAA,KACTurB,OAAS,OACT99P,GAAK,kBACLC,GAAK,uBACL+M,GAAK,yBAEH6yO,KAAA,KACF3zO,KAAO,QACPhhB,OAASnF,KAAK+hB,GAAK/hB,KAAK0M,GAAK1M,KAAKpB,EAAI,OACtC+yB,GAAK,QACLC,GAAK5xB,KAAKkT,GAAKlT,KAAKqP,GAAKrP,KAAK4Q,GAAK5Q,KAAK4+B,EAAI,WAE1Cm7N,KAAA,KACF76L,GAAKl/D,KAAKgP,GAAKhP,KAAKR,EAAIQ,KAAK8c,GAAK,OAClCwd,EAAI,QACJ17B,EAAI,WAEFi7P,KAAA,KACFvrP,GAAK,OACLmD,GAAK,IAAIrU,EAAA,KACTyb,GAAK,IAAIzb,EAAA,KACT6kB,GAAKjiB,KAAKse,GAAKte,KAAKqtC,GAAK,OACzBhvB,GAAK,QACLjD,GAAK,OACLtJ,GAAK,IAAI9U,EAAA,KACTuhB,GAAK,IAAIthB,CAAA,UAEP+8P,KAAA,KACFhhP,GAAKhZ,KAAKrD,EAAI,OACdM,EAAI,IAAI+zP,GAAA,KACR5kP,GAAK,IAAImgP,GAAA,KACT9iN,EAAI,QACJ56B,GAAK,OACLgC,GAAK,QACLW,GAAK,OACL9T,EAAI,IAAIihC,EAAA,KACRhkB,GAAK,OACLyI,GAAK,IAAIub,EAAA,KACTjvB,GAAK1P,KAAK9C,EAAI8C,KAAK4e,EAAI5e,KAAKxD,EAAIwD,KAAKnD,EAAImD,KAAKqjB,GAAK,OACnD5mB,EAAI,IAAIo9P,GAAA,KACRvnP,GAAK,OACLsK,GAAKhgB,EAAG,EAAGm9P,IAAA,KACXv6O,GAAK,WAEH06O,KAAA,KACF76O,GAAKrf,KAAK2G,EAAI3G,KAAK6xB,GAAK7xB,KAAKxD,EAAIwD,KAAKnD,EAAI,OAC1CI,EAAI,IAAI+zP,GAAA,KACRh0O,GAAK,OACL5Q,GAAK,QACLuL,GAAK,OACL4K,GAAK,UACLC,GAAK,WAEH23O,GAAG/9P,EAAGC,EAAGE,EAAGD,EAAGE,EAAGG,EAAGC,GAAA,IAC5BR,EAAI,MAAQA,EAAI,EAAIA,EAAEC,EAAI,GACrBA,EAAI,EAAGA,EAAIO,IAAKP,EAAIG,EAAEG,EAAIN,GAAMD,EAAIG,EAAED,EAAID,GAAM,IAAOD,EAAII,EAAEG,EAAIN,EAAA,UAE/Dg+P,GAAGj+P,EAAGC,EAAGE,EAAGD,EAAGE,EAAGG,EAAGC,GAAA,IAGtBH,EAAA,GAFF,MAAQL,EAAG+9P,GAAG,KAAM,KAAM59P,EAAGD,EAAGE,EAAGG,EAAGC,QAAA,IAGnCH,EAAI,EAAGA,EAAIG,IAAKH,EAAGD,EAAEG,EAAIF,GAAML,EAAEC,EAAII,GAAKF,EAAED,EAAIG,GAAM,aAGtDyb,GAAG9b,EAAGC,EAAGE,EAAGD,EAAGE,EAAGG,EAAGC,GAAA,GACxB,MAAQR,EAAG+9P,GAAG,KAAM,KAAM59P,EAAGD,EAAGE,EAAGG,EAAGC,OACrC,KAIDH,EAHEI,EAAIT,EAAEC,EAAI,GACZK,EAAIG,EACJE,EAAIF,EAAA,IAEDJ,EAAI,EAAGA,EAAIG,IAAKH,EAEhBC,EAAIK,GADNF,EAAIT,EAAEC,EAAII,IACIC,EACZK,EAAKR,EAAED,EAAIG,KAAW,IAALC,EAAY,EAAIA,EAAI,EAAI,IAAOA,GAAM,IACtDA,EAAIG,EACJL,EAAEG,EAAIF,GAAKM,CAAA,WAGX+uL,GAAG1vL,EAAGG,EAAGC,EAAGI,GAAA,IACfH,EAAIF,EAAEyrB,MACRnrB,EAAIN,EAAEK,EAAA,GACRP,EAAE,MAAQD,GAAK,MAAQG,GACnB,EAAIC,GAAK,GAAKI,GAAKJ,EAAII,EAAIC,EAAG,OAAO,SACpCT,EAAEuiB,GAAI,IACL,MAAQviB,EAAEy9Q,GAAI,KAEZn9Q,EAAA,GADJN,EAAEy9Q,GAAK,IAAI3f,IAEVx9P,EAAI,MAAQN,EAAEy9Q,MACXn9Q,EAAIH,EAAEyrB,MAAQzrB,EAAEK,EAClBP,EAAE,GAAKD,EAAE2d,GAAGnc,QACXxB,EAAE2d,GAAKpd,EAAED,GACTN,EAAEwlB,GAAK,EACR,MAAQxlB,EAAE2d,GACLrd,EAAI,GACHN,EAAEuX,GAAKvX,EAAE2d,GAAM3d,EAAEwX,GAAKxX,EAAEwlB,GAAMxlB,EAAEwhB,GAAK,KAAQlhB,EAAI,GACtDA,GAAKA,IACHA,EAAG,CACNA,EAAIN,EAAEy9Q,GAAA,IACF98Q,EAAIX,EAAE6S,GACRhS,EAAIb,EAAEwiC,EACN9hC,EAAIV,EAAEqhB,GACNzgB,EAAIZ,EAAEuX,GACNhV,EAAIvC,EAAEwX,GACN1U,EAAIjC,EAAI,EACRS,EAAIZ,EAAI,EACR0C,EAAI9C,EAAEO,EAAA,GACRZ,EAAE,MAAQU,GAAK,MAAQC,GAAK,MAAQT,GACpCokC,GAAG,GAAK,KACRA,GAAG,GAAKw5N,GACRx5N,GAAG,GAAK05N,GACR15N,GAAG,GAAKzoB,GACRxb,EAAE0P,GAAKpP,EACPN,EAAEib,GAAKhZ,EACPjC,EAAEG,EAAIN,EAAEyrB,MACRtrB,EAAEF,EAAID,EAAE0rB,OACR5rB,EAAE,EAAIK,EAAEG,GAAK,EAAIH,EAAEF,GACf,GAAKM,EAAGP,EAAI,OACX,GACDG,EAAEm1B,GAAM90B,EAAEE,EAAI,IAAM,EAAK,EAC1BP,EAAEiK,EAAK5J,EAAEE,EAAI,IAAM,EAAK,EACxBP,EAAE2iB,GAAMtiB,EAAEE,EAAI,IAAM,EAAK,EACzBA,EAAKF,EAAEE,EAAI,IAAM,EAAK,EACvB,EAAIP,EAAEm1B,IAAM,EAAIn1B,EAAEm1B,IAAM,GAAKn1B,EAAEiK,GAAK,EAAIjK,EAAE2iB,IAAMpiB,EAEhDV,EAAI,OACD,GACDiD,EAAEs6Q,IAAMx5B,GACT9gP,EAAEsc,GAAK8wO,GACPptP,EAAEwc,GAAK+wO,GACPvtP,EAAE2N,GAAKzQ,EACP8C,EAAEwoB,MAAQzrB,EAAEyrB,MACZxoB,EAAEyoB,OAAS1rB,EAAE0rB,OACbzoB,EAAEuP,GAAKxS,EAAEwS,GACTvP,EAAEzB,EAAIxB,EAAEwB,EACRyB,EAAEgP,GAAKjS,EAAEiS,GACThP,EAAE+8D,EAAIhgE,EAAEggE,EACR/8D,EAAE5C,EAAIL,EAAEK,EACTF,EAAEm1B,GAEFz1B,EAAG,CACDC,EAAE,GAAKK,EAAEm1B,IAAMt1B,EAAIwyP,KACnB1yP,EAAG,OAAS,IACN,MAAQE,EAAG,CACbA,EAAI,QACEH,CAAA,IAERC,EAAE,MAAQK,GACVA,EAAEsyC,GAAKzyC,EACPA,EAAEM,EAAIH,EAAEG,EACRN,EAAEC,EAAIE,EAAEF,EACRD,EAAEU,EAAIP,EAAEO,EACRV,EAAEU,EAAEkQ,GAAKzQ,EACTH,EAAEU,EAAE+qB,MAAQtrB,EAAEG,EACdN,EAAEU,EAAEgrB,OAASvrB,EAAEF,EACfD,EAAEI,EAAI,EACNoB,EAAGxB,EAAEmB,EAAGX,EAAGmC,EAAGxB,IACTsxP,GAAGtyP,EAAEG,EAAGH,EAAEF,EAAG,EAAGD,EAAG,MAAO,MAAMF,EAAA,MAChCE,EAAE+V,IAAM,GAAK/V,EAAEqgB,GAAG,GAAGE,IAAMixO,GAAGxxP,EAAEE,IAC/BC,EAAEsgB,GAAK,EACRjgB,EAAIR,EAAEM,EAAIN,EAAEC,EACZD,EAAEsU,GAAK,KACPtU,EAAEiV,GAAK,EACPjV,EAAEktC,EAAI9sC,EAAEI,GACRR,EAAEsS,GAAK,EACR,MAAQtS,EAAEktC,GAAMltC,EAAEI,EAAI,EAAKJ,EAAI,GAAOA,EAAI,IACxCG,EAAEsgB,GAAK,EAAKzgB,EAAI0yP,GAAG1yP,EAAGG,EAAEG,KACzBN,EAAG,MAAMF,EACdE,EAAI,QACEH,CAAA,CAERM,EAAEsyC,GAAK,KACPzyC,EAAI,OAEHA,EAAImB,GAAKhB,EAAEG,EAAIH,EAAEF,EACtBE,GAAKH,CAAA,IAEHG,EAAG,OAAO,QACTN,EAAEy9Q,GAAGx6P,GAAMjjB,EAAE8S,GAAK,EAAMtS,EAAIC,EAAIL,CAAA,CAEvCH,EAAE,MAAQD,EAAEy9Q,IACZx9Q,EAAEG,EAAII,GAAKC,GACXT,EAAG,IAEDG,GADAQ,EAAIX,EAAEy9Q,IACAh9Q,EACNA,EAAIE,EAAEE,EAAEL,EACJ,GAAKG,EAAE80B,GAAI,IACb3yB,EAAI9C,EAAEwhB,GACNlgB,EAAItB,EAAEkkB,GACN9gB,EAAIpD,EAAE6S,GACNhS,EAAIb,EAAEwiC,EAAI,EAAIpiC,EAAID,EAClBO,EAAIV,EAAEuX,GACN3W,EAAIZ,EAAEwX,GAAKpX,EAAID,EACfF,EAAEY,GAAKb,EAAEwiC,EAAIxiC,EAAEqhB,IACX,GAAK1gB,EAAE4J,EACT,IAAKtK,EAAE,MAAQskC,GAAG5jC,EAAE4J,IAAKjK,EAAI,EAAGA,EAAIE,IAAKF,EACvCikC,GAAG5jC,EAAE4J,GAAGzH,EAAGxB,EAAG8B,EAAGvC,EAAGH,EAAGE,EAAGT,GACvB2C,EAAIpC,EACJY,EAAIV,EACJA,GAAKT,EACLU,GAAKV,OAEV,IAAKG,EAAI,EAAGA,EAAIE,IAAKF,EACnBJ,EAAEQ,EAAGE,EAAGwC,EAAGvC,EAAGV,GAAK2C,EAAIpC,EAAKY,EAAIV,EAAKA,GAAKT,EAAKU,GAAKV,EACxDH,EAAEwhB,GAAK1e,EACP9C,EAAEkkB,GAAK5iB,CAAA,KACF,IACLrB,EAAE,MAAQU,EAAEiyC,IACZzyC,EAAIC,EAAII,EAERP,EAAE,OADFK,EAAIK,EAAEiyC,KAEN3yC,EAAEE,GAAKG,EAAEF,GACLE,EAAEkiB,GAAKriB,EAAGA,EAAI,OACb,GAAKQ,EAAEigB,IAAMu+O,KAAMx+P,EAAEigB,GAAK,CACzBjgB,EAAIL,EAAE+sC,EACRvqC,EAAIxC,EAAEmS,GACNnR,EAAIhB,EAAEG,EAAA,IACNM,EAAIT,EAAEF,EAMNoC,GALAY,EAAI,EACJvC,EAAIP,EAAEQ,EAAIQ,EACVZ,EAAIJ,EAAEQ,EAAIQ,EACVV,EAAIN,EAAEgB,EACNiB,EAAIjC,EAAED,EACFC,EAAEQ,GACNyhC,EAAIjhC,EAAIP,EACR2H,EAAIpH,EAAInB,EACRsD,EAAIlB,EAAE0uC,GACNjuC,EAAIR,EAAIkG,EAAI0oP,GAAG7uP,EAAG7B,EAAGG,GAAK,KAC5BZ,EAAEuC,GAAK+/B,GACPtiC,EAAEE,GAAKY,GACPd,EAAE0xP,GAAGpvP,IACLtC,EAAG,OAAS,OACFW,EAAED,GAAK6B,EAAIkG,GAAK,IACtBhI,EAAI+C,IAAMT,EAAIouP,GAAG7uP,EAAG7B,EAAGG,IACvBZ,EAAE,MAAQ+C,GACVD,EAAGnC,GAEC,KADJG,EAAI+tL,GAAG9rL,EAAEi1B,EAAE,GAAIj1B,EAAEyG,EAAE,GAAI7I,IAEpBD,EAAEmC,EAAIN,GAAKzB,IACRyB,IACA9B,GACGY,IAAOZ,EAAI,IAAMG,GAAQV,KAAOU,EAAI,KAAO4xP,GAAGnyP,EAAGO,QACrD,MAAI,IAAME,GAiBR,CACLqC,EAAI,QACEnD,CAAA,CAlBFc,EAAI+vP,GAAG/vP,EAAI,IAAKH,GAAA,IAMd4hC,EALF76B,EAAImnL,GAAG9rL,EAAEi1B,EAAE,GAAIj1B,EAAEyG,EAAE,GAAI7I,GAAA,GAC3BmC,EAAGnC,KAGC4B,IADJmF,EAAIopP,GAAGzvP,EADPqG,EAAImpP,GAAGnpP,EAAG/G,MAEI2hC,EAAI//B,GAAKzB,GAGhB,CACLqC,EAAI,QACEnD,CAAA,KAHDuiC,EAAI,EAAGA,EAAIzhC,IAAKyhC,EAAG7hC,EAAEmC,EAAIN,EAAIggC,GAAK7hC,EAAEmC,EAAIN,EAAIggC,EAAI76B,GAAA,IAKvDnF,GAAKzB,EACAL,GAAKK,EAAGL,GAAKY,GACfZ,GAAKY,IAAMT,GAAQV,KAAOU,EAAI,KAAO4xP,GAAGnyP,EAAGO,GAC9C2B,EAAIkG,GAAKhI,EAAI+C,IAAMT,EAAIouP,GAAG7uP,EAAG7B,EAAGG,GAAA,CAKlCZ,EAAEW,EAAED,GAAKuI,EAAGtI,GAAA,CAEd6xP,GAAGnyP,EAAGO,EAAIV,EAAIA,EAAIU,GAAA,MACZZ,CAAA,EAEPmD,GAAMxC,EAAED,GAAK6B,EAAI+/B,GAAOn/B,EAAI,EAAK9C,EAAEC,EAAIK,EAAED,EAAI,EAAI,GAAOL,EAAEQ,EAAI0B,EAC/DrC,EAAIiD,CAAA,MACCjD,EAAIuuP,GAAGpuP,EAAGA,EAAE+sC,EAAG/sC,EAAEmS,GAAInS,EAAEG,EAAGH,EAAEF,EAAGD,EAAG2yP,IAAA,IACpC3yP,EAAG,CACNK,EAAI,QACER,CAAA,EAGVI,EAAII,GAAKC,IAAMT,EAAEuiB,GAAK,GACtB/hB,EAAI,MAEDA,EAAG,OAAO,QAEbR,EAAEuiB,KACW,OAAX/hB,EAAIR,EAAEy9Q,MAAmBj9Q,EAAEoyC,GAAK,MAAQ5yC,EAAEy9Q,GAAK,KAAO,EAAIz9Q,EAAE8S,IAE9D,OAAOw3M,MAAM,6BAA8B,YAExCtqN,EAAEwX,GAAKpX,EAAIC,CAAA,UAEX+4P,GAAGp5P,EAAGC,EAAGE,EAAGD,EAAGE,EAAGG,GAAA,KAClB,EAAIH,KAAO,KAKdI,EAJEH,EAAIL,EACNS,EAAIR,GAAKE,EAAI,EAAI,GACjBG,EAAIN,EACJW,EAAIV,GAAKE,EAAI,EAAI,OAEdK,EAAI,EAAGA,EAAIN,IAAKM,EAAG,KAClBK,EAAIP,EAAEK,EAAI,EAAIH,GAAA,KACXK,IACHA,GAAK,MACNR,EAAEI,EAAI,EAAID,EAAI,GAAMH,EAAEI,EAAI,EAAID,EAAI,GAAKK,GAAM,GAC7CR,EAAEI,EAAI,EAAID,EAAI,GAAMH,EAAEI,EAAI,EAAID,EAAI,GAAKK,GAAM,GAC7CR,EAAEI,EAAI,EAAID,EAAI,GAAMH,EAAEI,EAAI,EAAID,EAAI,GAAKK,GAAM,IAElDZ,GAAKM,CAAA,WAGAs+P,GAAG7+P,EAAGC,EAAGE,EAAGD,EAAGE,GAAA,KACf,EAAIF,KAAO,KACZK,EAAA,IACCA,EAAI,EAAGA,EAAIJ,IAAKI,EAAG,KAClBC,EAAIR,EAAEC,EAAI,EAAIM,EAAI,GAEpBF,EAAQ,IADRC,EAAIN,EAAEC,EAAI,EAAIM,EAAI,IAElBE,EAAI,KAAOJ,EACXC,GAAW,IAAJA,EAAYA,GAAK,GAAMG,GAAM,GACtCT,EAAEC,EAAI,EAAIM,EAAI,IACH,IAAJC,EAAYA,GAAK,GAAMC,GAAM,GAAM,KAC9B,GAAJD,EAAWA,GAAK,GAAMC,GAAM,IAAO,EAAK,GAChDT,EAAEC,EAAI,EAAIM,EAAI,GAAU,IAAJD,EAAWD,CAAA,CAEjCJ,GAAKG,CAAA,WAGA+4P,GAAGn5P,EAAGC,EAAGE,EAAGD,EAAGE,EAAGG,EAAGC,EAAGH,GAAA,IAE7BI,EACAH,EAFEK,EAAI,QAGHL,EAAI,EAAGA,EAAIF,IAAKE,EAAG,KACjBG,EAAI,EAAGA,EAAIP,IAAKO,EAAG,KAClBI,EAAIb,EAAEC,EAAIQ,GACdF,EAAEC,EAAI,EAAIC,GAAKI,EACfF,GAAKE,CAAA,CAEPZ,GAAKE,EACLK,GAAKH,CAAA,QAEA,KAAOM,CAAA,UAEPu+P,GAAGl/P,EAAGC,EAAGE,EAAGD,EAAGE,GAAA,IAClBG,EAAA,IACCA,EAAI,EAAGA,EAAIH,IAAKG,EAAGJ,EAAED,EAAIK,GAAKP,EAAEC,EAAIM,IAAM,WAExC4+P,KACPoc,GAAKniB,GACLojB,GAAK3d,GACLyc,GAAKniB,GACLnvM,GAAKk1M,EAAA,UAEEG,GAAGl/P,EAAGD,EAAGE,GAChBJ,EAAKG,GAAK,SAASH,EAAGG,EAAGI,EAAGC,EAAGH,EAAGI,EAAGH,EAAGK,EAAGE,EAAGH,EAAGE,EAAG2B,EAAGO,EAAGxB,EAAGK,EAAGyB,EAAGrC,GAAA,IAC7DyB,EACF+/B,EAAKxhC,EAAI,GAAM,EACb2H,EAAIrI,EAAEI,EAAI,GAAMH,EAAEK,EAAI,IAAM,GAC5BuI,EAAIrI,EAAEH,EAAI,GAAME,EAAE2B,EAAI,IAAM,GAChCtC,EAAE,MAAQD,GAAA,IACNyD,EAAK,EAAIiF,EAAIQ,EAAI,QAAW,MAChChJ,EAAEF,EAAEG,EAAI,GAAQ,IAAJsD,EAASA,GAAK,GAAIX,EAAGxB,GAAA,MACzBf,IACJkD,EAAK,EAAIyF,EAAIR,EAAI,QAAW,EAC9BxI,EAAEK,EAAEC,EAAI,GAAQ,IAAJiD,EAASA,GAAK,GAAI9B,EAAGyB,IAC9BZ,EAAI,EAAGA,GAAK+/B,IAAK//B,EAAG,KACnBO,EAAI1C,EAAEI,EAAI+B,GAAMlC,EAAEK,EAAI6B,IAAM,GAC5BQ,EAAInC,EAAEH,EAAI8B,GAAM5B,EAAE2B,EAAIC,IAAM,GAC5BggC,EAAI95B,EAAI3F,EAAImG,EAAIlG,EAAI,OACpB2E,EAAK66B,EAAI,GAAKz/B,EAAImG,IAAO,EAE7BzF,EAAKkE,EAAIe,GAAM,EACfA,GAFA85B,EAAKA,EAAI,GAAK95B,EAAI1F,IAAO,GAEhBD,GAAM,EACf7C,EAAEF,EAAEG,EAAI,EAAIqC,EAAI,GAAQ,IAAJiB,EAASA,GAAK,GAAIX,EAAGxB,GAAK,EAAIkB,EAAI,GAAKpC,GAC3DF,EAAEF,EAAEG,EAAI,EAAIqC,EAAI,GAAQ,IAAJkG,EAASA,GAAK,GAAI5F,EAAGxB,GAAK,EAAIkB,EAAI,GAAKpC,GAAA,MACnDG,IACJkD,EAAK++B,EAAIt5B,GAAM,EAChBR,EAAKf,EAAI3E,GAAM,EAChB9C,EAAEK,EAAEC,EAAI,EAAIgC,EAAI,GAAQ,IAAJiB,EAASA,GAAK,GAAI9B,EAAGyB,GAAK,EAAIZ,EAAI,GAAKpC,GAC3DF,EAAEK,EAAEC,EAAI,EAAIgC,EAAI,GAAQ,IAAJkG,EAASA,GAAK,GAAI/G,EAAGyB,GAAK,EAAIZ,EAAI,GAAKpC,IAC7DsI,EAAI3F,EACJmG,EAAIlG,CAAA,CAEF,EAAJjC,IACI0C,EAAK,EAAIiF,EAAIQ,EAAI,QAAW,EAC9BhJ,EAAEF,EAAEG,EAAIY,EAAI,GAAQ,IAAJ0C,EAASA,GAAK,GAAIX,EAAGxB,GAAKP,EAAI,GAAKX,GACnD,MAAQG,IACJkD,EAAK,EAAIyF,EAAIR,EAAI,QAAW,EAC9BxI,EAAEK,EAAEC,EAAIO,EAAI,GAAQ,IAAJ0C,EAASA,GAAK,GAAI9B,EAAGyB,GAAKrC,EAAI,GAAKX,IAAA,WAGlDub,KACP2pB,GAAE62O,IAAMh5O,GACRmC,GAAEk2O,IAAMj2O,GACRD,GAAEg3O,IAAM72O,GACRH,GAAEm2O,IAAM3zO,GACRxC,GAAE+1O,IAAM1zO,GACRrC,GAAEo2O,IAAM/1O,GACRL,GAAEm3O,IAAMj3O,GACRF,GAAEu1O,IAAMt1O,GACRD,GAAEw1O,IAAMhzO,GACRxC,GAAEy1O,IAAMpzO,GACRrC,GAAE01O,IAAMr1O,EAAA,UAEDg3N,GAAG38P,GAAA,OACHA,GAAKgmC,GAAM,EAAIhmC,EAAI,EAAI,IAAOA,GAAKmmC,EAAA,UAEnCs5N,GAAGz/P,EAAGC,GAAA,OACN08P,IAAK,MAAQ38P,GAAM,IAAO,MAAQC,GAAM,GAAK,gBAE7C0/P,GAAG3/P,EAAGC,EAAGE,GAAA,OACTw8P,IACH,MAAQ38P,GAAM,IAAO,KAAOC,GAAM,IAAO,MAAQE,GAAM,GAAK,eAGzDk5P,GAAGr5P,EAAGC,GAAA,OACN08P,IAAK,MAAQ38P,GAAM,IAAO,MAAQC,GAAM,GAAK,gBAE7CigQ,GAAGlgQ,EAAGC,EAAGE,EAAGD,EAAGE,GACtBF,EAAEE,EAAI,GAAKq/P,GAAGz/P,EAAGG,GACjBD,EAAEE,EAAI,GAAKu/P,GAAG3/P,EAAGC,EAAGE,GACpBD,EAAEE,EAAI,GAAKi5P,GAAGr5P,EAAGC,EAAA,UAEV68P,GAAG98P,EAAGC,EAAGE,EAAGD,EAAGE,GACtBF,EAAEE,EAAI,GAAKi5P,GAAGr5P,EAAGC,GACjBC,EAAEE,EAAI,GAAKu/P,GAAG3/P,EAAGC,EAAGE,GACpBD,EAAEE,EAAI,GAAKq/P,GAAGz/P,EAAGG,EAAA,UAEVkgQ,GAAGrgQ,EAAGC,EAAGE,EAAGD,EAAGE,GAAA,IAClBG,EAAIo/P,GAAG3/P,EAAGC,EAAGE,GACjBF,EAAMM,GAAK,EAAK,IAAQ84P,GAAGr5P,EAAGC,IAAM,EACpCC,EAAEE,EAAI,GAAiB,IAAXq/P,GAAGz/P,EAAGG,GAAaI,GAAK,EACpCL,EAAEE,EAAI,GAAKH,CAAA,UAEJg8P,GAAGj8P,EAAGC,EAAGE,EAAGD,EAAGE,GAAA,IAClBG,EAAgB,IAAX84P,GAAGr5P,EAAGC,GAAY,GAC3BC,EAAEE,EAAI,GAAiB,IAAXq/P,GAAGz/P,EAAGG,GAAaw/P,GAAG3/P,EAAGC,EAAGE,IAAM,EAC9CD,EAAEE,EAAI,GAAKG,CAAA,UAEJigQ,GAAGxgQ,EAAGC,EAAGE,EAAGD,EAAGE,GACtBF,EAAEE,EAAI,GAAK,IACX8/P,GAAGlgQ,EAAGC,EAAGE,EAAGD,EAAGE,EAAI,YAEZk5P,GAAGt5P,EAAGC,EAAGE,EAAGD,EAAGE,GACtB08P,GAAG98P,EAAGC,EAAGE,EAAGD,EAAGE,GACfF,EAAEE,EAAI,GAAK,aAEJm5P,GAAGv5P,EAAGC,EAAGE,EAAGD,EAAGE,GACtB8/P,GAAGlgQ,EAAGC,EAAGE,EAAGD,EAAGE,GACfF,EAAEE,EAAI,GAAK,aAEJquP,GAAGzuP,EAAGC,GAAA,OACN,EAAID,EAAI,EAAIA,EAAIC,EAAIA,EAAID,CAAA,UAExBuhQ,GAAGthQ,EAAGE,EAAGD,GAChBF,EAAKC,GAAK,SAASD,EAAGC,EAAGG,EAAGG,EAAGC,EAAGH,EAAGI,EAAGH,EAAGK,GAAA,IACpC,IAAIE,EAAIP,IAAU,EAALK,GAAUT,EAAGI,GAAKO,GAClCV,EAAEH,EAAEC,EAAI,GAAIG,EAAEG,EAAI,GAAIC,EAAEH,EAAI,GAAII,EAAGH,GACjCH,EAAEH,EAAEC,EAAI,GAAIG,EAAEG,EAAI,GAAIC,EAAEH,EAAI,GAAII,EAAGH,EAAIJ,GACtCD,GAAK,IACJM,IACAF,EACDC,GAAK,EAAIJ,EACV,EAAJS,GAASR,EAAEH,EAAEC,EAAI,GAAIG,EAAEG,EAAI,GAAIC,EAAEH,EAAI,GAAII,EAAGH,EAAA,WAGvCk0P,GAAGx0P,EAAGC,EAAGE,GAAA,OACT,GAAKA,EAAK,GAAKH,EAAK,GAAKC,EAAI,EAAI,EAAK,GAAKA,EAAI,EAAI,EAAKE,CAAA,UAExDu0P,GAAG10P,EAAGC,EAAGE,EAAGD,EAAGE,GAAA,OACdJ,IAAM,SACP,EACH+zD,GAAG9zD,EAAGE,EAAGD,EAAGE,EAAG,cAEZ,EACHg+Q,GAAGn+Q,EAAGE,EAAGD,EAAGE,GAAA,WAET,EACH89Q,GAAGj+Q,EAAGE,EAAGD,EAAGE,GAAA,UAGTshQ,GAAG1hQ,EAAGC,GAAA,IACTE,EACFI,EACAC,EAAIP,EAAEe,EACNX,EAAIJ,EAAEme,GACN3d,EAAIT,EAAEkhB,GACN5gB,EAAIN,EAAEohB,GAAK,GACXzgB,EAAIX,EAAEkhB,GACNrgB,EAAIb,EAAEohB,GAAK,IACX1gB,EAAIV,EAAEkhB,GACNtgB,EAAIZ,EAAEohB,GAAK,QACRjhB,EAAI,EAAG,GAAKA,IAAKA,EAAGM,EAAEH,EAAI,GAAKH,EAAI,GAAK,QACxCA,EAAI,EAAG,EAAIA,IAAKA,EAClBQ,EAAEE,EAAI,GAAKV,EAAI,GAAK,IAAOO,EAAEE,EAAI,GAAKT,EAAI,GAAK,UAC9CK,EACCC,EAAEH,EAAI,EAAI,IAAMK,EAAEE,EAAI,EAAI,IAAMH,EAAEE,EAAI,EAAI,IAAM,KAChDR,EAAEK,EAAGH,EAAI,GAAK,EAAG,IAAK,IACvBF,EAAEO,EAAGE,EAAI,GAAK,EAAG,IAAK,GACtBT,EAAEM,EAAGE,EAAI,GAAK,EAAG,IAAK,IACrBL,EAAI,EAAGA,EAAIP,EAAEuS,KAAMhS,EAAG,KACrBgC,EAAItC,EAAEqS,GAAGrS,EAAE8P,GAAKxP,GAAA,GAChB,EAAIA,EAAG,KACJJ,GAAK,EAAG,GAAKA,IAAKA,EAAGD,EAAEO,EAAGH,EAAI,GAAKH,EAAI,EAAGM,EAAGH,EAAI,GAAKH,EAAI,GAAI,OAC9DA,GAAK,EAAG,EAAIA,IAAKA,EACpBD,EAAES,EAAGE,EAAI,GAAKV,EAAI,EAAGQ,EAAGE,EAAI,GAAKV,EAAI,EAAG,GACtCD,EAAEQ,EAAGE,EAAI,GAAKT,EAAI,EAAGO,EAAGE,EAAI,GAAKT,EAAI,EAAG,OAE1C2C,EAAI9C,EAAEw9Q,GACRl8Q,EAAItB,EAAEupB,GAAKhpB,EACXoB,EAAIY,EAAEsiB,GACNzhB,EAAIb,EAAEsgB,GAAA,KACJriB,IACDN,EAAEO,EAAGH,EAAI,GAAIwC,EAAExB,GAAGP,EAAG,EAAG,IACzBb,EAAES,EAAGE,EAAI,GAAIiC,EAAExB,GAAGZ,EAAG,EAAG,GACxBR,EAAEQ,EAAGE,EAAI,GAAIkC,EAAExB,GAAG8O,GAAI,EAAG,IACvB7N,EAAEwT,GAAI,KACJhV,EAAIN,EACJ+B,EAAIlC,EAAI,GAAK,SACbE,IACDD,GAAKP,EAAEuS,GAAK,EACTnS,EAAEW,EAAGyB,EAAGM,EAAExB,GAAGP,EAAE,IAAK,GACpBb,EAAEa,EAAGyB,EAAGM,EAAExB,EAAI,GAAGP,EAAG,EAAG,IACxBZ,EAAI,EAAG,EAAIA,EAAGA,IACjBY,EAAEyB,EAAI,IAAMrC,GAAKY,EAAEyB,EAAI,IAAMrC,GAAKY,EAAEyB,EAAI,IAAMrC,GAAKY,EAAEyB,EAAI,EAAIrC,GAAA,IAC1DA,EAAI,EAAG,GAAKA,IAAKA,EAAGiD,IAAM,EAC5BrC,EAAIN,EAAK+B,EAAIlC,EAAIwlC,GAAG3lC,GAAKsjC,GAAElhC,EAAE+b,GAAGne,IAAIY,EAAGyB,GAAIkyP,GAAGtxP,EAAGzB,EAAG,IAAMxB,EAAGY,EAAGyB,EAAA,MAC9D,GAAMzB,EAAIyzP,GAAGj0P,EAAGC,EAAG+B,EAAE+b,GAAG,IAAMgmB,GAAEvjC,GAAGN,EAAGH,GAAI,GAAK8C,EACpD,IAAKjD,EAAI,EAAG,GAAKA,IAAKA,EAAGiD,IAAM,EAAGsxP,GAAGtxP,EAAGzB,EAAG,IAAMxB,EAAGM,EAAGH,EAAIwlC,GAAG3lC,IAAA,IAChEA,EAAIoC,EAAEqgB,GACN7hB,EAAIyzP,GAAGj0P,EAAGC,EAAG+B,EAAE6mB,IACfma,GAAGxiC,GAAGJ,EAAGE,GACT0iC,GAAGxiC,GAAGL,EAAGE,GAETwC,EAAIzB,EACJZ,EAAIJ,EACJ6B,EAAI3B,EACA,KAJJ0B,EAAIpC,GAAK,KAIO,IAAJoC,EAAU07Q,GAAG76Q,EAAG,IAAKrC,EAAGyB,GAAK27Q,GAAG/6Q,EAAG,IAAKrC,EAAGyB,IAEvDD,EAAI7B,EACJ0C,EAAIxC,EACA,KAHJT,IAAM,KAGU,IAAJA,EAAU89Q,GAAGt8Q,EAAG,IAAKY,EAAGa,GAAK+6Q,GAAGx8Q,EAAG,IAAKY,EAAGa,IACvD5C,EAAIR,EAAEo0B,GAAK,IACRl0B,EAAE4C,EAAExB,GAAGP,EAAG,EAAGN,EAAGH,EAAI,IAAK,IAC1BJ,EAAE4C,EAAExB,GAAGZ,EAAG,EAAGC,EAAGE,EAAI,IAAK,GACzBX,EAAE4C,EAAExB,GAAG8O,GAAI,EAAG1P,EAAGE,EAAI,IAAK,IAC5BT,EAAI,EAAIE,EAAIL,EAAEkgB,EACdpd,EAAI9C,EAAEwR,GACNlQ,EAAItB,EAAEyR,GAAK,GAAKlR,EAAI,GAAKF,EAAIL,EAAEwkC,EAC/B7iC,EAAI3B,EAAE4R,GACNrP,EAAIvC,EAAEuR,GAAK,EAAIhR,EAAIJ,EACnBiD,EAAIpD,EAAE+S,GACNhS,EAAIf,EAAEgT,GAAK,EAAIzS,EAAIJ,EACdA,EAAI,EAAG,GAAKA,IAAKA,EAAGD,EAAE4C,EAAGxB,EAAInB,EAAIH,EAAEwkC,EAAG/jC,EAAGH,EAAI,GAAKH,EAAG,QACrDA,EAAI,EAAG,EAAIA,IAAKA,EACnBD,EAAEyB,EAAGY,EAAIpC,EAAIH,EAAEkgB,EAAGvf,EAAGE,EAAI,GAAKV,EAAG,GAC/BD,EAAEkD,EAAGrC,EAAIZ,EAAIH,EAAEkgB,EAAGxf,EAAGE,EAAI,GAAKT,EAAG,aAGhCm1P,GAAGt1P,EAAGE,EAAGE,EAAGG,EAAGC,EAAGH,EAAGI,EAAGH,EAAGK,GAAA,IAC9BE,EAAI,CAAC,GACPH,EAAI,CAAC,GACLE,EAAI,EACJ2B,EAAI,MAAQ5B,EAAIA,EAAEglB,GAAK,EACvB7iB,EAAI,MAAQnC,EAAIA,EAAI,IAAI+8P,GAAA,GACtB,MAAQ19P,GAAK,GAAKI,EAAG,OAAO,EAChC0C,EAAEinB,KAAO/pB,EACT8C,EAAEN,EAAItC,EACN4C,EAAEwN,GAAKlQ,EACPF,EAAI,CAACA,GACLE,EAAI,CAACA,GACL0C,EAAEgU,GAAK,CAAChU,EAAEgU,IACV9W,EAAG,KACGsB,EAAIpB,EACJkD,EAAIhD,EACJW,EAAI+B,EAAEgU,GAAA,GACV7W,EAAE,MAAQD,GACVC,EAAE,MAAQmD,GACVnD,EAAE,MAAQc,GACVA,EAAE,GAAK,EACH,IAAMqC,EAAE,KAAOjD,EAAGH,EAAGsB,EAAE,GAAI,QAAS,IAClCnB,EAAGH,EAAGsB,EAAE,GAAK,EAAG,QAAS,CAC3BP,EAAI,QACEf,CAAA,KAEJwC,EAAI29D,EAAGngE,EAAGsB,EAAE,GAAK,MACjB,GAAKkB,GAAK,WAAaA,EAAG,CAC5BzB,EAAI,QACEf,CAAA,IAEJuC,GAAKC,EAAIY,EAAE,GAAK,EAAG,CACrBrC,EAAI,QACEf,CAAA,CAERe,EAAE,GAAKyB,EACPlB,EAAE,IAAM,GACR8B,EAAE,IAAM,GAEVrC,EAAI,KAEF,GAAKA,EAAG,OAAOA,EAAA,IACnByB,EAAI,EAAIM,EAAEgU,GAAG,GACR1W,EAAIA,EAAE,KAAQ,CAGjBJ,EAAG,KACG0I,EAAI1I,EACRoD,EAAIlD,EACJa,EAAIX,EAAA,IAEF8I,EAAIrI,EACJ4C,EAAI/C,EACJqC,EATJzB,EAAI,CAAC,OAMCqG,EALN/G,EAAI,CAACA,IASD,GAAK,EACH,EAAIG,EAAE,GAAIA,EAAI,MACb,KACEZ,EAAGuI,EAAGtF,EAAE,GAAI,QAAS,IACpB,IAAM+8D,EAAGz3D,EAAGtF,EAAE,GAAK,GAAI,CACzBrC,EAAI,QACEf,CAAA,IAEJ,GAAKe,EAAE,GAAI,CACbA,EAAI,QACEf,CAAA,KAEJgD,EAAIm9D,EAAGz3D,EAAGtF,EAAE,GAAK,GACjBo/B,EAAI,EAAIhgB,EAAG9Z,EAAGtF,EAAE,GAAK,OAErB,YAAco/B,GADlB95B,EAAI,EAAI8Z,EAAG9Z,EAAGtF,EAAE,GAAK,KACI,CACvBrC,EAAI,QACEf,CAAA,OAEA+C,IAAMA,EAAE,GAAKC,GAAA,MACbkG,IAAMA,EAAE,GAAKs5B,GAAA,MACb/+B,IAAMA,EAAE,GAAKiF,GACrBtF,EAAE,IAAM,GACRrC,EAAE,IAAM,GACR4G,EAAE,GAAK,EAET5G,EAAI,MAGRH,EAAIA,EAAE,GACNU,EAAIA,EAAE,GACF,GAAKP,EAAG,OAAOA,EAAA,GACnBqC,KAAW,EAAJ9B,IACFkB,GAAK5B,EAAG,OAAO,WACZP,IAAMA,EAAE,MAAY,GAAJiB,IAAA,MAChBb,IAAMA,EAAE,GAAK2C,GAAA,MACb9C,IAAMA,EAAE,GAAK,GACrBG,EAAII,EAAE,GACNS,EAAIZ,EAAE,GACFE,GAAKwC,GAAK,MAAQzC,EAAG,CACvBI,EAAI,WAGF,EAAIX,EAAG,CACTW,EAAI,WAGDyB,GAAK5B,IAAQ4B,IAAM5B,IAAMT,EAAGH,EAAGE,EAAE,GAAI,QAAU,CAClDE,EAAI,CAACA,GACL0C,EAAEyyB,GAAK,CAACzyB,EAAEyyB,IACVzyB,EAAE0/B,EAAI,CAAC1/B,EAAE0/B,GACT1/B,EAAE0R,GAAK,CAAC1R,EAAE0R,IACVxU,EAAG,CACDgD,EAAIhD,EACJe,EAAIb,EACJsC,EAAIpC,EAAA,IACAuH,EAAI7E,EAAEgU,GACR5N,EAAIpG,EAAEyyB,GACN9xB,EAAIX,EAAE0/B,EACNz/B,EAAID,EAAE0R,GACRguB,EAAI,GACJviC,EAAE,MAAQ+C,GACV/C,EAAE,MAAQuC,GACVkG,EAAI3H,EAAE,OACFu5B,EAAI93B,EAAE,OACVvC,EAAE,MAAQiJ,GACVjJ,EAAE,MAAQ8C,GACVmG,EAAE,GAAK,KACPzF,EAAE,GAAK,KACFV,EAAE,GAAK,IAAO,IACjBhC,EAAE,GAAK2H,EACPlG,EAAE,GAAK83B,EACH,EAAIA,EAAG,CACTv5B,EAAI,QACEf,CAAA,KAEJi1B,EAAIkrC,EAAGn9D,EAAG0F,EAAI,MACd,WAAausB,EAAG,CAClBl0B,EAAI,QACEf,CAAA,KAEJiD,EAAK,EAAIgyB,EAAI,GAAM,KACvBuN,GAAKv/B,EACD,EAAI0E,GAAK66B,EAAI76B,EAAG,CAClB5G,EAAI,QACEf,CAAA,KAEHG,EAAG6C,EAAG0F,EAAG,UAAYvI,EAAG6C,EAAG0F,EAAG,QAAS,CAC1C3H,EAAI,QACEf,CAAA,IAEJs6B,EAAE,GAAKr3B,EAAG,CACZlC,EAAI,QACEf,CAAA,CAERG,EAAG6C,EAAG0F,EAAG,UAAaQ,EAAE,GAAKlG,EAAKS,EAAE,GAAKiF,EAAI,EAAK3F,EAAE,GAAKkyB,GACzDvsB,GAAKzF,EACLq3B,GAAKr3B,CAAA,KAGT7C,EAAIA,EAAE,GACN0C,EAAEyyB,GAAKzyB,EAAEyyB,GAAG,GACZzyB,EAAE0/B,EAAI1/B,EAAE0/B,EAAE,GACV1/B,EAAE0R,GAAK1R,EAAE0R,GAAG,GACR,GAAKzT,EAAG,MAEdX,EAAI,CAACA,GACL0C,EAAEmQ,GAAK,CAACnQ,EAAEmQ,IACVnQ,EAAE0yB,GAAK,CAAC1yB,EAAE0yB,IACVx1B,EAAG,GACC2H,EAAI3H,EACLe,EAAIb,EACJsC,EAAIpC,EACJ8I,EAAIpG,EAAEgU,GAAG,GACTrT,EAAIX,EAAEmQ,GACNlQ,EAAID,EAAE0yB,GACNxyB,EAAIjC,EAAE,GACN2H,GAAKvI,EAAGwH,EAAG3E,EAAG,QACdw/B,GAAKriC,EAAGwH,EAAG3E,EAAG,QACf/C,EAAE,MAAQ0H,GACV1H,EAAE,MAAQuC,GACVvC,EAAE,MAAQwD,GACVxD,EAAE,MAAQ8C,GACV,EAAIP,EAAE,GAENzB,EAAI,MACD,IACC2H,GAAK85B,EAAG,IACV76B,EAAIw4D,EAAGx4D,EAAG3E,EAAI,GACV,IAAMkG,GAAKvB,EAAIuB,EAAI,GAAI,CACzBnI,EAAI,QACEf,CAAA,IAEJuC,GAAKoF,EAAInF,EAAE,GAAK,EAAG,CACrBzB,EAAI,QACEf,CAAA,CAERyD,EAAE,GAAKkE,EACP5G,EAAE,IAAM,EACRyB,EAAE,IAAM,EACRO,EAAE,GAAKy/B,CAAA,MAENz/B,EAAE,GAAK,GAAKP,EAAE,IAAM,IAAMmF,EAAE3E,EAAI,MAAQ2E,EAAE3E,EAAI,IAAM,GAClDS,EAAE,GAAKjB,EAAE,GACdzB,EAAI,KAENX,EAAIA,EAAE,GACN0C,EAAEmQ,GAAKnQ,EAAEmQ,GAAG,GACZnQ,EAAE0yB,GAAK1yB,EAAE0yB,GAAG,GACZt1B,EAAIA,EAAE,GACF,GAAKa,EAAG,SACR,WAAa+B,EAAEmQ,GAAI,OAAO,WACtB3S,GAAK8C,IAAM9C,EAAE,GAAKwC,EAAE0yB,GAAK,EAAI,GACrC/0B,EAAI,CAACA,GACLa,EAAI,CAACA,GACDwB,EAAE0yB,GAAI,IACJ,EAAIp1B,EAAG,CACTW,EAAI,QAGNT,EAAIG,EACJ8B,EAAIjB,EACJ8B,EAAI/C,EAAA,MACIL,GAAK,EAAII,EACZJ,EAAI,EACL,GAAKI,GAAK,IAAMJ,EAAEE,EAAI,MAAQF,EAAEE,EAAI,IAAM,IACxCsC,EAAI,CAAC,GACNmF,EAAI,CAAC,GACLuB,EAAI,CAAC,GAENvH,EADC8B,EAAI,IAAI8+B,EACHviC,EAAGE,EAAGE,GACZywP,GAAGptP,EAAGjB,EAAGmF,EAAGuB,IACP,MAAQ5I,IAAMA,EAAE,GAAKkC,EAAE,IACxB,MAAQD,IAAMA,EAAE,GAAKoF,EAAE,IACvB,MAAQvE,IAAMA,EAAE,GAAK8F,EAAE,IACtBlJ,EAAI,GACJA,EAAI,GACRA,EAAI,MACJ,IACD,GAAKI,EAAG,CACVW,EAAI,QAGNT,EAAIgB,EAAA,MACItB,GAAK,GAAKI,IAAMo1P,GAAGx1P,EAAGE,EAAI,EAAGE,EAAI,GACpCJ,EAAI,GACHuC,EAAIvC,EAAEE,EAAI,GAAMF,EAAEE,EAAI,IAAM,EAAMF,EAAEE,EAAI,IAAM,GAC/CkD,EAAmC,OAA7BpD,EAAEE,EAAI,IAAM,EAAKF,EAAEE,EAAI,IAC7BF,EAAmC,OAA7BA,EAAEE,EAAI,IAAM,EAAKF,EAAEE,EAAI,IAC1B,EAAJqC,GACA,GAAMA,GAAK,EAAK,MACbA,GAAK,EAAK,IACbA,GAAK,GAAKO,EAAEmQ,KACX7P,IACApD,EACIA,EAAI,GACJS,IAAMA,EAAE,GAAK2C,GAAI9C,IAAMA,EAAE,GAAKN,GAAKA,EAAI,QAE7CA,EAAG,OAAO,KACfS,EAAIA,EAAE,GACNa,EAAIA,EAAE,GACFV,IAAMC,EAAE,IAAMJ,GAAKC,EAAE,IAAMY,GAAI,OAAO,QAClCX,IACJA,EAAE,GAAKmC,EACRnC,EAAEoI,OAAS7I,EAAIS,EAAE6B,EAClBvC,EAAE,WAAaC,EAAIS,EAAE6B,GACrBvC,EAAEU,EAAEoI,QAAUpI,EAAE2P,GAAKlQ,IAAA,aAGlB,GAAKW,GAAM,GAAKA,GAAKH,GAAK,MAAQD,GACpC,MAAQN,IAAMA,EAAE,IAAM,MAAQyC,EAAEyyB,IAAM,EAAIzyB,EAAEyyB,GAAG/zB,QAChD,MAAQjB,IAAMA,EAAE,GAAKE,GACrB,MAAQD,IAAMA,EAAE,GAAKc,GACrB,GACAP,CAAA,UAEGqhQ,GAAGpiQ,EAAGC,EAAGE,GAAA,IACZD,EAAID,EAAE2rB,MACRxrB,EAAIH,EAAE4rB,OACNtrB,EAAI,EACJC,EAAI,EACJH,EAAIH,EACJO,EAAIL,EAAA,GACNH,EAAE0S,GAAK,MAAQ3S,GAAK,EAAIA,EAAE2S,GAExB1S,EAAE0S,KACAtS,EAAIL,EAAE+kB,GACPtkB,EAAIT,EAAE8kB,GACNvkB,EAAIP,EAAE2B,EACNnB,EAAIR,EAAEmgE,EACP,GAAKhgE,IAAOI,IAAM,EAAKC,IAAM,GAC7B,EAAID,GAAK,EAAIC,GAAK,GAAKH,GAAK,GAAKI,GAAKF,EAAIF,EAAIH,GAAKM,EAAIC,EAAIL,GAE3D,OAAO,KACTH,EAAE0B,EAAIpB,EACNN,EAAEkgE,EAAI3/D,EACNP,EAAEmS,GAAK7R,EAAIF,EACXJ,EAAEO,EAAIA,EAAIC,EACVR,EAAEitC,EAAI7sC,EACNJ,EAAE4sC,EAAIpsC,EACNR,EAAEiQ,GAAK,MAAQlQ,GAAK,EAAIA,EAAEkQ,GACtBjQ,EAAEiQ,GAAI,KAGH8nB,EAAG33B,EAAGI,EAFXN,EAAI,CAACH,EAAEkX,IACP3W,EAAI,CAACP,EAAEiX,KACc,OAAO,EAC5BhX,EAAEiX,GAAK/W,EAAE,GACTF,EAAEgX,GAAK1W,EAAE,UAEXN,EAAE+X,GAAK,MAAQhY,GAAKA,EAAEgY,GACtB/X,EAAE8d,GAAK,MAAQ/d,IAAMA,EAAEo7Q,GACvBn7Q,EAAEiQ,KAAQjQ,EAAE+X,GAAK/X,EAAEiX,GAAM,EAAIhX,EAAK,GAAKD,EAAEgX,GAAM,EAAI7W,EAAK,EAAKH,EAAE8d,GAAK,GAC7D,WAEAkkP,GAAGjiQ,GAAA,GACN,MAAQA,EAAG,OAAO,KAClB,GAAKA,EAAE+C,EAAG,KACR9C,EAAID,EAAEU,EAAEy6Q,KACZl7Q,EAAEwW,KAAOzW,EAAE6rB,OAAS,GAAK5rB,EAAEiJ,EAC3BjJ,EAAEiJ,GAAKjJ,EAAEiJ,CAAA,MAERjJ,EAAID,EAAEU,EAAE2W,GACNrX,EAAIA,EAAE6rB,OACN5rB,EAAEgD,IAAMjD,EAAI,GAAKC,EAAEoQ,GACnBpQ,EAAEoQ,IAAMpQ,EAAEoQ,GACVpQ,EAAEsiC,IAAOviC,EAAI,GAAM,GAAKC,EAAEkd,GAC1Bld,EAAEkd,IAAMld,EAAEkd,GACVld,EAAEstC,IAAOvtC,EAAI,GAAM,GAAKC,EAAEsd,GAC1Btd,EAAEsd,IAAMtd,EAAEsd,GACX,MAAQtd,EAAEg1B,IAAOh1B,EAAE+0B,IAAMh1B,EAAI,GAAKC,EAAEqX,GAAMrX,EAAEqX,IAAMrX,EAAEqX,IAAA,OACjD,WAEAuqP,GAAG7hQ,EAAGC,EAAGE,EAAGD,GAAA,GACf,MAAQA,GAAK,GAAKF,GAAK,GAAKC,EAAG,OAAO,KACtC,MAAQE,EAAG,IACTA,EAAEwS,GAAI,KACJvS,EAAID,EAAE4kB,GACRvkB,EAAIL,EAAE2kB,GACNzkB,GAAW,EAAPF,EAAEwB,EACNlB,GAAW,EAAPN,EAAEggE,EAAA,GACJ,EAAI9/D,GAAK,EAAII,GAAK,GAAKL,GAAK,GAAKI,GAAKH,EAAID,EAAIJ,GAAKS,EAAID,EAAIP,EAC7D,OAAO,EACTD,EAAII,EACJH,EAAIO,CAAA,IAEFL,EAAE+P,GAAI,KAGH8nB,EAAGh4B,EAAGC,EAFXG,EAAI,CAACD,EAAE+W,IACP1W,EAAI,CAACL,EAAE8W,KACc,OAAO,EAC5BjX,EAAII,EAAE,GACNH,EAAIO,EAAE,IAGVN,EAAE0rB,MAAQ5rB,EACVE,EAAE2rB,OAAS5rB,EACXD,EAAG,KACGM,EAAIJ,EAAE0rB,MACNjrB,EAAIT,EAAE2rB,OAAA,GACV7rB,EAAIE,EAAE6C,EACF,GAAKzC,GAAK,GAAKK,KAAOX,GAAKm8Q,IAAM,GAAKn8Q,GAAIA,EAAI,MAC7C,IACC,GAAKE,EAAEwrB,IAAM,MAAQxrB,EAAEinB,GAAI,CACzB9mB,EAAKG,EAAIJ,EAAIH,EAAI,MAEnBY,GADAJ,EAAIH,EAAIolC,GAAG1lC,IACHW,EAAA,MACLX,IAEFQ,GAAMG,EAAI,GAAK,GADdV,GAAKK,EAAI,GAAK,GAEhB,IAAMN,IAAgBK,GAATD,EAAIE,GAAaK,IAE5B,OADJA,EAAIJ,EAAEM,EAAI,EAAIL,EAAIH,IACH,CACbL,EAAI,QACEA,CAAA,CAERE,EAAEinB,GAAKxmB,EAAA,GACFX,IACCM,EAAIJ,EAAEQ,EAAEy6Q,MACP5kQ,GAAK5V,EACPL,EAAEmW,GAAK,EACPnW,EAAE4I,EAAIzI,EACNH,EAAEmsC,KAAO5rC,KACRP,EAAIJ,EAAEQ,EAAE2W,IACPtW,EAAIJ,EACNL,EAAE2C,EAAI,EACN3C,EAAE+P,GAAK5P,EACPH,EAAEgpB,GAAKzoB,EACPP,EAAEI,EAAIC,EACNL,EAAEiiC,EAAI,EAAI1hC,EACVP,EAAE6c,GAAKld,EACPK,EAAE46Q,GAAK16Q,EACPF,EAAE8P,GAAKzP,EACPL,EAAEitC,EAAI,EAAI1sC,EAAIL,EACdF,EAAEid,GAAKtd,EACPK,EAAE26Q,GAAKz6Q,EACR,IAAMR,IAAOM,EAAE20B,EAAIt0B,EAAKL,EAAE00B,EAAI,EAAIn0B,EAAI,EAAIL,GACzCF,EAAEsjB,GAAKvjB,EACPC,EAAEgX,GAAKlX,EAAA,IAEdH,EAAI,EACJG,EAAIF,EAAE6C,EACNvC,EAAIN,EAAE0rB,MACNvrB,EAAIH,EAAE2rB,OACFzrB,GAAK+7Q,IAAM,GAAK/7Q,EAAA,GACd,GAAKA,EACNJ,EAAIE,EAAEQ,EAAEy6Q,KAENl7Q,IADAQ,EAAIqB,KAAKC,IAAI/B,EAAEkJ,KACL7I,EAAI,GAAKG,GAAKR,EAAEysC,KAC1BxsC,GAAKQ,GAAKD,EAAIklC,GAAGtlC,GACjBH,GAAK,MAAQD,EAAEuW,OACf,CACHvW,EAAIE,EAAEQ,EAAE2W,GACR5W,GAAKD,EAAI,GAAK,EACdK,GAAKR,EAAI,GAAK,EACdC,EAAIwB,KAAKC,IAAI/B,EAAEqQ,IACX1P,EAAImB,KAAKC,IAAI/B,EAAEmd,IAAA,IACjBzc,EAAIoB,KAAKC,IAAI/B,EAAEud,IACf3c,EAAIkB,KAAKC,IAAI/B,EAAEsX,IACf/U,EAAI3B,GAAKP,EAAI,GAAKG,EACpBP,GAAKK,GAAKD,EAAI,GAAKG,GAAKR,EAAEspB,GAC1BrpB,GAAKU,GAAKE,EAAI,GAAKJ,GAAKT,EAAEk7Q,GAE1Bj7Q,GADAA,GAAKS,GAAKG,EAAI,GAAKJ,GAAKT,EAAEi7Q,IACjB36Q,GAAKE,EAAMG,GAAKF,EAAMC,GAAKD,EACpCR,GAAK,MAAQD,EAAEe,EACfd,GAAK,MAAQD,EAAEU,EACfT,GAAK,MAAQD,EAAEoQ,GAAA,IACThQ,IAAOH,GAAKW,GAAKJ,EAAKP,GAAKsC,GAAKvC,EAAE4jB,GAAM3jB,GAAK,MAAQD,EAAEi1B,EAAA,MAE5Dh1B,EAAI,EACTD,EAAIC,EAAI,EAAI,UAGZ,GAAKD,GAAA,MACDG,GAAKA,EAAEilB,KAAOplB,EAAIiiQ,GAAG/hQ,IADVF,CAAA,KAIjB+hQ,GAAK,GACPpT,GAAK,CACH,EACA,EACA,EACA,EACA,GACA,GACA,GACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,UAEFqT,GAAK,GACL0Y,GAAK,GACLC,GAAK,EACLC,GAAK,CACH,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA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CA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,EACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,GACA,GACA,IACA,EACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,IACA,GACA,GACA,EACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,KAEFoB,GAAK,CACH,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF53O,GAAK,EACL5B,GAAK,CACH,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEFuB,GAAK,CACH,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEFN,GAAK,KACLP,GAAK,CACH,CAAC,IAAK,IAAK,IAAK,GAChB,CAAC,IAAK,IAAK,IAAK,IAAK,GACrB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,GAC1B,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAE1DhB,GAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,IACxD0B,GAAK,EAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GACnEO,GAAK,CACH,CACE,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,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AK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAGvD,CACE,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAGvD,CACE,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAGvD,CACE,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,I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BF,GAEFoB,EAvZM,EAwZN3B,EAAOyD,EAASzD,EAAMC,EAAmBE,GACzCwB,EA1ZM,EA2ZNlB,GAAA,EACAT,EAAOyD,EAASzD,EAAMC,EAAmBE,GACzCM,EAAuBP,IAGvByB,EAhaM,EAiaN3B,EAAOyD,EAASzD,EAAMC,EAAmBE,GACzCH,EAAOuiC,EAAcviC,EAAMC,GAC3B0B,EAlaM,EAmaNlB,GAAA,EACAT,EAAOyD,EAASzD,EAAMC,EAAmBE,GACzCM,EAAuBP,EACvBF,EAAOuiC,EAAcviC,EAAMC,GAAA,OAxC7B0B,EA/XQ,EAgYR3B,EAAOyD,EAASzD,EAAMC,EAAmBE,QAdzCwB,EAAOpB,EAjXC,EADA,EAmXRP,EAAOyD,EAASzD,EAAMC,EAAmBE,GAAA,OAuDpCH,CAAA,OAcJyqR,eAAelpL,WAAa,SAASvhG,GACpCA,IACFI,EAAcJ,EAAQ8qR,cACtBtqR,EAAeR,EAAQ+qR,eACvBxqR,EAAWP,EAAQgrR,WACnB3qR,EAAYL,EAAQirR,YACpBxqR,EAAuBT,EAAQkrR,oBAAA,OAI9BT,eAAelpL,WAAWvhG,GACxB4D,KAAK6mR,cAAA,MAGVxqR,EA5jFmB,CACrB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,MACA,IACA,MACA,MACA,IACA,MACA,MACA,IACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,IACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,KACA,IACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KACA,IACA,IACA,IACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,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","sources":["../node_modules/dayjs/dayjs.min.js","../node_modules/dayjs/plugin/advancedFormat.js","../node_modules/dayjs/plugin/customParseFormat.js","../node_modules/dayjs/plugin/localeData.js","../node_modules/dayjs/plugin/weekOfYear.js","../node_modules/dayjs/plugin/weekYear.js","../node_modules/dayjs/plugin/weekday.js","../node_modules/invariant/browser.js","../node_modules/prop-types-extra/lib/all.js","../node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/rc-util/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/rc-util/node_modules/react-is/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-multi-carousel/index.js","../node_modules/react-multi-carousel/lib/Arrows.js","../node_modules/react-multi-carousel/lib/Carousel.js","../node_modules/react-multi-carousel/lib/CarouselItems.js","../node_modules/react-multi-carousel/lib/Dots.js","../node_modules/react-multi-carousel/lib/index.js","../node_modules/react-multi-carousel/lib/types.js","../node_modules/react-multi-carousel/lib/utils/clones.js","../node_modules/react-multi-carousel/lib/utils/common.js","../node_modules/react-multi-carousel/lib/utils/dots.js","../node_modules/react-multi-carousel/lib/utils/elementWidth.js","../node_modules/react-multi-carousel/lib/utils/index.js","../node_modules/react-multi-carousel/lib/utils/mouseOrTouchMove.js","../node_modules/react-multi-carousel/lib/utils/next.js","../node_modules/react-multi-carousel/lib/utils/previous.js","../node_modules/react-multi-carousel/lib/utils/throttle.js","../node_modules/react-multi-carousel/lib/utils/throwError.js","../node_modules/react-qr-scanner/dist/react-qr-scanner.umd.js","../node_modules/react-signature-canvas/build/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/trim-canvas/build/index.js","../node_modules/warning/warning.js","../node_modules/classnames/index.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/signature_pad/dist/signature_pad.mjs","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","logo.svg","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/react-bootstrap/esm/ThemeProvider.js","../node_modules/react-bootstrap/esm/Container.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/uncontrollable/lib/esm/utils.js","../node_modules/uncontrollable/lib/esm/hook.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/dom-helpers/esm/querySelectorAll.js","../node_modules/@restart/hooks/esm/useForceUpdate.js","../node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/@restart/ui/esm/NavContext.js","../node_modules/@restart/ui/esm/SelectableContext.js","../node_modules/@restart/ui/esm/TabContext.js","../node_modules/@restart/ui/esm/DataKey.js","../node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/@restart/ui/esm/Button.js","../node_modules/@restart/ui/esm/NavItem.js","../node_modules/@restart/ui/esm/Nav.js","../node_modules/react-bootstrap/esm/NavbarContext.js","../node_modules/react-bootstrap/esm/CardHeaderContext.js","../node_modules/react-bootstrap/esm/NavItem.js","../node_modules/@restart/hooks/esm/useCallbackRef.js","../node_modules/@restart/hooks/esm/useMounted.js","../node_modules/@restart/hooks/esm/usePrevious.js","../node_modules/@restart/hooks/esm/useIsomorphicEffect.js","../node_modules/@restart/hooks/esm/useResizeObserver.js","../node_modules/@restart/ui/esm/Anchor.js","../node_modules/react-bootstrap/esm/NavLink.js","../node_modules/react-bootstrap/esm/Nav.js","../node_modules/react-bootstrap/esm/NavbarBrand.js","../node_modules/dom-helpers/esm/ownerDocument.js","../node_modules/dom-helpers/esm/getComputedStyle.js","../node_modules/dom-helpers/esm/ownerWindow.js","../node_modules/dom-helpers/esm/hyphenate.js","../node_modules/dom-helpers/esm/hyphenateStyle.js","../node_modules/dom-helpers/esm/isTransform.js","../node_modules/dom-helpers/esm/css.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/dom-helpers/esm/canUseDOM.js","../node_modules/dom-helpers/esm/addEventListener.js","../node_modules/dom-helpers/esm/removeEventListener.js","../node_modules/dom-helpers/esm/listen.js","../node_modules/dom-helpers/esm/transitionEnd.js","../node_modules/dom-helpers/esm/triggerEvent.js","../node_modules/react-bootstrap/esm/transitionEndListener.js","../node_modules/react-bootstrap/esm/createChainedFunction.js","../node_modules/react-bootstrap/esm/triggerBrowserReflow.js","../node_modules/react-bootstrap/esm/TransitionWrapper.js","../node_modules/react-bootstrap/esm/safeFindDOMNode.js","../node_modules/react-bootstrap/esm/Collapse.js","../node_modules/react-bootstrap/esm/NavbarCollapse.js","../node_modules/react-bootstrap/esm/NavbarToggle.js","../node_modules/@restart/hooks/esm/useMediaQuery.js","../node_modules/@restart/hooks/esm/useBreakpoint.js","../node_modules/dom-helpers/esm/activeElement.js","../node_modules/dom-helpers/esm/contains.js","../node_modules/@restart/hooks/esm/useWillUnmount.js","../node_modules/@restart/hooks/esm/useUpdatedRef.js","../node_modules/@restart/ui/esm/ModalManager.js","../node_modules/@restart/ui/esm/getScrollbarWidth.js","../node_modules/@restart/ui/esm/useWindow.js","../node_modules/@restart/ui/esm/useWaitForDOMRef.js","../node_modules/@restart/ui/esm/NoopTransition.js","../node_modules/@restart/ui/esm/ImperativeTransition.js","../node_modules/@restart/ui/esm/Modal.js","../node_modules/@restart/ui/esm/utils.js","../node_modules/react-bootstrap/esm/Fade.js","../node_modules/react-bootstrap/esm/OffcanvasBody.js","../node_modules/react-bootstrap/esm/OffcanvasToggling.js","../node_modules/react-bootstrap/esm/ModalContext.js","../node_modules/react-bootstrap/esm/CloseButton.js","../node_modules/react-bootstrap/esm/AbstractModalHeader.js","../node_modules/react-bootstrap/esm/OffcanvasHeader.js","../node_modules/react-bootstrap/esm/divWithClassName.js","../node_modules/react-bootstrap/esm/OffcanvasTitle.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-bootstrap/esm/BootstrapModalManager.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/react-bootstrap/esm/Offcanvas.js","../node_modules/react-bootstrap/esm/NavbarOffcanvas.js","../node_modules/react-bootstrap/esm/NavbarText.js","../node_modules/react-bootstrap/esm/Navbar.js","../node_modules/@restart/ui/node_modules/uncontrollable/lib/esm/index.js","../node_modules/@restart/ui/esm/DropdownContext.js","../node_modules/dequal/dist/index.mjs","../node_modules/@restart/hooks/esm/useSafeState.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@restart/ui/esm/popper.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@restart/ui/esm/usePopper.js","../node_modules/@restart/ui/esm/useClickOutside.js","../node_modules/@restart/ui/esm/mergeOptionsWithPopperConfig.js","../node_modules/@restart/ui/esm/DropdownMenu.js","../packages/@react-aria/ssr/src/SSRProvider.tsx","../node_modules/@restart/ui/esm/DropdownToggle.js","../node_modules/@restart/ui/esm/DropdownItem.js","../node_modules/@restart/ui/esm/Dropdown.js","../node_modules/@restart/hooks/esm/useEventListener.js","../node_modules/react-bootstrap/esm/DropdownContext.js","../node_modules/react-bootstrap/esm/DropdownDivider.js","../node_modules/react-bootstrap/esm/DropdownHeader.js","../node_modules/react-bootstrap/esm/DropdownItem.js","../node_modules/react-bootstrap/esm/DropdownItemText.js","../node_modules/react-bootstrap/esm/InputGroupContext.js","../node_modules/react-bootstrap/esm/useWrappedRefWithWarning.js","../node_modules/react-bootstrap/esm/DropdownMenu.js","../node_modules/react-bootstrap/esm/Button.js","../node_modules/react-bootstrap/esm/DropdownToggle.js","../node_modules/react-bootstrap/esm/Dropdown.js","../node_modules/react-bootstrap/esm/NavDropdown.js","Screens/Customer/Home/Menus/Menus.js","Reusable/Caroseuls.js","Reusable/Headings/Heading.js","../node_modules/react-icons/lib/iconsManifest.mjs","../node_modules/react-icons/lib/iconContext.mjs","../node_modules/react-icons/lib/iconBase.mjs","../node_modules/react-icons/fa/index.mjs","Screens/Customer/Services/ServiceHistory/ServiceHistory.js","Screens/Customer/Home/Home.js","../node_modules/@ant-design/icons-svg/es/asn/UserOutlined.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@ctrl/tinycolor/dist/module/util.js","../node_modules/@ctrl/tinycolor/dist/module/conversion.js","../node_modules/@ctrl/tinycolor/dist/module/css-color-names.js","../node_modules/@ctrl/tinycolor/dist/module/format-input.js","../node_modules/@ant-design/colors/es/generate.js","../node_modules/@ant-design/colors/es/index.js","../node_modules/@ant-design/icons/es/components/Context.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/rc-util/es/Dom/canUseDom.js","../node_modules/rc-util/es/Dom/dynamicCSS.js","../node_modules/rc-util/es/Dom/contains.js","../node_modules/rc-util/es/Dom/shadow.js","../node_modules/rc-util/es/warning.js","../node_modules/@ant-design/icons/es/utils.js","../node_modules/@ant-design/icons/es/components/IconBase.js","../node_modules/@ant-design/icons/es/components/twoTonePrimaryColor.js","../node_modules/@ant-design/icons/es/components/AntdIcon.js","../node_modules/@ant-design/icons/es/icons/UserOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/LockOutlined.js","../node_modules/@ant-design/icons/es/icons/LockOutlined.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/rc-util/es/Dom/findDOMNode.js","../node_modules/rc-util/es/hooks/useMemo.js","../node_modules/rc-util/es/ref.js","../node_modules/rc-motion/es/context.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/rc-motion/es/DomWrapper.js","../node_modules/rc-util/es/hooks/useState.js","../node_modules/rc-motion/es/interface.js","../node_modules/rc-motion/es/util/motion.js","../node_modules/rc-motion/es/hooks/useDomMotionEvents.js","../node_modules/rc-motion/es/hooks/useIsomorphicLayoutEffect.js","../node_modules/rc-util/es/raf.js","../node_modules/rc-motion/es/hooks/useStepQueue.js","../node_modules/rc-motion/es/hooks/useNextFrame.js","../node_modules/rc-motion/es/CSSMotion.js","../node_modules/rc-motion/es/hooks/useStatus.js","../node_modules/rc-motion/es/util/diff.js","../node_modules/rc-motion/es/CSSMotionList.js","../node_modules/rc-motion/es/index.js","../node_modules/antd/es/_util/motion.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/rc-util/es/Children/toArray.js","../node_modules/rc-util/es/isEqual.js","../node_modules/rc-field-form/es/FieldContext.js","../node_modules/rc-field-form/es/ListContext.js","../node_modules/rc-field-form/es/utils/typeUtil.js","../node_modules/src/util.ts","../node_modules/src/rule/required.ts","../node_modules/src/rule/url.ts","../node_modules/src/rule/type.ts","../node_modules/src/rule/enum.ts","../node_modules/src/rule/index.ts","../node_modules/src/rule/whitespace.ts","../node_modules/src/rule/range.ts","../node_modules/src/rule/pattern.ts","../node_modules/src/validator/type.ts","../node_modules/src/validator/index.ts","../node_modules/src/validator/string.ts","../node_modules/src/validator/method.ts","../node_modules/src/validator/number.ts","../node_modules/src/validator/boolean.ts","../node_modules/src/validator/regexp.ts","../node_modules/src/validator/integer.ts","../node_modules/src/validator/float.ts","../node_modules/src/validator/array.ts","../node_modules/src/validator/object.ts","../node_modules/src/validator/enum.ts","../node_modules/src/validator/pattern.ts","../node_modules/src/validator/date.ts","../node_modules/src/validator/required.ts","../node_modules/src/validator/any.ts","../node_modules/src/messages.ts","../node_modules/src/index.ts","../node_modules/rc-field-form/es/utils/messages.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/rc-util/es/utils/get.js","../node_modules/rc-util/es/utils/set.js","../node_modules/rc-field-form/es/utils/validateUtil.js","../node_modules/rc-field-form/es/utils/valueUtil.js","../node_modules/rc-field-form/es/Field.js","../node_modules/rc-field-form/es/List.js","../node_modules/rc-field-form/es/utils/NameMap.js","../node_modules/rc-field-form/es/useForm.js","../node_modules/rc-field-form/es/utils/asyncUtil.js","../node_modules/rc-field-form/es/FormContext.js","../node_modules/rc-field-form/es/Form.js","../node_modules/rc-field-form/es/useWatch.js","../node_modules/rc-field-form/es/index.js","../node_modules/rc-util/es/omit.js","../node_modules/antd/es/form/context.js","../node_modules/antd/es/form/hooks/useDebounce.js","../node_modules/@emotion/hash/dist/hash.browser.esm.js","../node_modules/@ant-design/cssinjs/es/Cache.js","../node_modules/@ant-design/cssinjs/es/StyleContext.js","../node_modules/@ant-design/cssinjs/es/theme/ThemeCache.js","../node_modules/@ant-design/cssinjs/es/theme/Theme.js","../node_modules/@ant-design/cssinjs/es/theme/createTheme.js","../node_modules/@ant-design/cssinjs/es/util/index.js","../node_modules/@ant-design/cssinjs/es/util/css-variables.js","../node_modules/rc-util/es/hooks/useLayoutEffect.js","../node_modules/@ant-design/cssinjs/es/hooks/useCompatibleInsertionEffect.js","../node_modules/@ant-design/cssinjs/es/hooks/useEffectCleanupRegister.js","../node_modules/@ant-design/cssinjs/es/hooks/useHMR.js","../node_modules/@ant-design/cssinjs/es/hooks/useGlobalCache.js","../node_modules/@ant-design/cssinjs/es/hooks/useCacheToken.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Parser.js","../node_modules/@ant-design/cssinjs/es/util/cacheMapUtil.js","../node_modules/@ant-design/cssinjs/es/hooks/useStyleRegister.js","../node_modules/@ant-design/cssinjs/es/hooks/useCSSVarRegister.js","../node_modules/@ant-design/cssinjs/es/extractStyle.js","../node_modules/@ant-design/cssinjs/es/Keyframes.js","../node_modules/@ant-design/cssinjs/es/transformers/legacyLogicalProperties.js","../node_modules/antd/es/style/index.js","../node_modules/antd/es/style/motion/motion.js","../node_modules/antd/es/style/motion/zoom.js","../node_modules/antd/es/style/motion/collapse.js","../node_modules/antd/es/theme/util/statistic.js","../node_modules/rc-util/es/hooks/useEvent.js","../node_modules/rc-util/es/hooks/useMergedState.js","../node_modules/antd/es/config-provider/context.js","../node_modules/antd/es/version/index.js","../node_modules/antd/es/version/version.js","../node_modules/antd/es/theme/themes/shared/genControlHeight.js","../node_modules/antd/es/theme/themes/seed.js","../node_modules/@ctrl/tinycolor/dist/module/index.js","../node_modules/antd/es/theme/themes/shared/genRadius.js","../node_modules/antd/es/theme/themes/default/colorAlgorithm.js","../node_modules/antd/es/theme/themes/default/colors.js","../node_modules/antd/es/theme/themes/shared/genFontSizes.js","../node_modules/antd/es/theme/themes/shared/genFontMapToken.js","../node_modules/antd/es/theme/context.js","../node_modules/antd/es/theme/themes/default/index.js","../node_modules/antd/es/theme/themes/shared/genColorMapToken.js","../node_modules/antd/es/theme/themes/shared/genSizeMapToken.js","../node_modules/antd/es/theme/themes/shared/genCommonMapToken.js","../node_modules/antd/es/theme/util/getAlphaColor.js","../node_modules/antd/es/theme/util/alias.js","../node_modules/antd/es/theme/useToken.js","../node_modules/antd/es/theme/util/calc/calculator.js","../node_modules/antd/es/theme/util/calc/NumCalculator.js","../node_modules/antd/es/theme/util/calc/CSSCalculator.js","../node_modules/antd/es/theme/util/calc/index.js","../node_modules/antd/es/theme/util/useResetIconStyle.js","../node_modules/antd/es/theme/util/genComponentStyleHook.js","../node_modules/antd/es/theme/util/maxmin.js","../node_modules/antd/es/form/style/explain.js","../node_modules/antd/es/form/style/index.js","../node_modules/antd/es/config-provider/hooks/useCSSVarCls.js","../node_modules/antd/es/form/ErrorList.js","../node_modules/antd/es/config-provider/DisabledContext.js","../node_modules/antd/es/config-provider/SizeContext.js","../node_modules/antd/es/config-provider/hooks/useSize.js","../node_modules/compute-scroll-into-view/src/index.ts","../node_modules/scroll-into-view-if-needed/src/index.ts","../node_modules/antd/es/form/util.js","../node_modules/antd/es/form/hooks/useForm.js","../node_modules/antd/es/form/validateMessagesContext.js","../node_modules/antd/es/form/Form.js","../node_modules/antd/es/_util/reactNode.js","../node_modules/antd/es/_util/warning.js","../node_modules/antd/es/form/hooks/useFormItemStatus.js","../node_modules/rc-util/es/Dom/isVisible.js","../node_modules/antd/es/_util/responsiveObserver.js","../node_modules/antd/es/grid/RowContext.js","../node_modules/antd/es/grid/style/index.js","../node_modules/antd/es/grid/row.js","../node_modules/antd/es/grid/col.js","../node_modules/antd/es/form/style/fallbackCmp.js","../node_modules/antd/es/form/FormItemInput.js","../node_modules/@ant-design/icons-svg/es/asn/QuestionCircleOutlined.js","../node_modules/@ant-design/icons/es/icons/QuestionCircleOutlined.js","../node_modules/rc-pagination/es/locale/en_US.js","../node_modules/rc-picker/es/locale/en_US.js","../node_modules/antd/es/time-picker/locale/en_US.js","../node_modules/antd/es/date-picker/locale/en_US.js","../node_modules/antd/es/locale/en_US.js","../node_modules/antd/es/calendar/locale/en_US.js","../node_modules/antd/es/locale/context.js","../node_modules/antd/es/locale/useLocale.js","../node_modules/rc-tooltip/es/Popup.js","../node_modules/@rc-component/portal/es/Context.js","../node_modules/@rc-component/portal/es/useDom.js","../node_modules/rc-util/es/getScrollBarSize.js","../node_modules/@rc-component/portal/es/useScrollLocker.js","../node_modules/@rc-component/portal/es/util.js","../node_modules/@rc-component/portal/es/mock.js","../node_modules/@rc-component/portal/es/Portal.js","../node_modules/@rc-component/portal/es/index.js","../node_modules/rc-resize-observer/es/Collection.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/rc-resize-observer/es/utils/observerUtil.js","../node_modules/rc-resize-observer/es/SingleObserver/DomWrapper.js","../node_modules/rc-resize-observer/es/SingleObserver/index.js","../node_modules/rc-resize-observer/es/index.js","../node_modules/rc-util/es/hooks/useId.js","../node_modules/rc-util/es/isMobile.js","../node_modules/@rc-component/trigger/es/Popup/Arrow.js","../node_modules/@rc-component/trigger/es/Popup/Mask.js","../node_modules/@rc-component/trigger/es/Popup/PopupContent.js","../node_modules/@rc-component/trigger/es/Popup/index.js","../node_modules/@rc-component/trigger/es/TriggerWrapper.js","../node_modules/@rc-component/trigger/es/context.js","../node_modules/@rc-component/trigger/es/hooks/useAction.js","../node_modules/@rc-component/trigger/es/util.js","../node_modules/@rc-component/trigger/es/hooks/useAlign.js","../node_modules/@rc-component/trigger/es/index.js","../node_modules/@rc-component/trigger/es/hooks/useWatch.js","../node_modules/@rc-component/trigger/es/hooks/useWinClick.js","../node_modules/rc-tooltip/es/placements.js","../node_modules/rc-tooltip/es/Tooltip.js","../node_modules/rc-tooltip/es/index.js","../node_modules/antd/es/_util/zindexContext.js","../node_modules/antd/es/_util/hooks/useZIndex.js","../node_modules/antd/es/style/roundedArrow.js","../node_modules/antd/es/style/placementArrow.js","../node_modules/antd/es/_util/placements.js","../node_modules/antd/es/space/style/compact.js","../node_modules/antd/es/space/style/index.js","../node_modules/antd/es/space/Compact.js","../node_modules/antd/es/theme/interface/presetColors.js","../node_modules/antd/es/theme/util/genPresetColor.js","../node_modules/antd/es/tooltip/style/index.js","../node_modules/antd/es/_util/colors.js","../node_modules/antd/es/tooltip/util.js","../node_modules/antd/es/tooltip/PurePanel.js","../node_modules/antd/es/tooltip/index.js","../node_modules/antd/es/form/FormItemLabel.js","../node_modules/@ant-design/icons-svg/es/asn/CheckCircleFilled.js","../node_modules/@ant-design/icons/es/icons/CheckCircleFilled.js","../node_modules/@ant-design/icons-svg/es/asn/CloseCircleFilled.js","../node_modules/@ant-design/icons/es/icons/CloseCircleFilled.js","../node_modules/@ant-design/icons-svg/es/asn/ExclamationCircleFilled.js","../node_modules/@ant-design/icons/es/icons/ExclamationCircleFilled.js","../node_modules/@ant-design/icons-svg/es/asn/LoadingOutlined.js","../node_modules/@ant-design/icons/es/icons/LoadingOutlined.js","../node_modules/antd/es/form/FormItem/StatusProvider.js","../node_modules/antd/es/form/FormItem/ItemHolder.js","../node_modules/antd/es/form/FormItem/index.js","../node_modules/antd/es/form/hooks/useChildren.js","../node_modules/antd/es/form/hooks/useFrameState.js","../node_modules/antd/es/form/hooks/useItemRef.js","../node_modules/antd/es/form/FormList.js","../node_modules/antd/es/form/index.js","../node_modules/antd/es/form/hooks/useFormInstance.js","../node_modules/antd/es/style/compact-item.js","../node_modules/antd/es/input/style/token.js","../node_modules/antd/es/input/style/variants.js","../node_modules/antd/es/input/style/index.js","../node_modules/antd/es/input/Group.js","../node_modules/rc-input/es/utils/commonUtils.js","../node_modules/rc-input/es/BaseInput.js","../node_modules/rc-input/es/hooks/useCount.js","../node_modules/rc-input/es/Input.js","../node_modules/rc-input/es/index.js","../node_modules/antd/es/_util/statusUtils.js","../node_modules/antd/es/input/hooks/useRemovePasswordTimeout.js","../node_modules/antd/es/form/hooks/useVariants.js","../node_modules/antd/es/_util/getAllowClear.js","../node_modules/antd/es/input/Input.js","../node_modules/antd/es/input/utils.js","../node_modules/@ant-design/icons-svg/es/asn/EyeInvisibleOutlined.js","../node_modules/@ant-design/icons/es/icons/EyeInvisibleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/EyeOutlined.js","../node_modules/@ant-design/icons/es/icons/EyeOutlined.js","../node_modules/antd/es/input/Password.js","../node_modules/@ant-design/icons-svg/es/asn/SearchOutlined.js","../node_modules/@ant-design/icons/es/icons/SearchOutlined.js","../node_modules/antd/es/_util/wave/style.js","../node_modules/rc-util/es/React/render.js","../node_modules/antd/es/_util/wave/util.js","../node_modules/antd/es/_util/wave/interface.js","../node_modules/antd/es/_util/wave/WaveEffect.js","../node_modules/antd/es/_util/wave/index.js","../node_modules/antd/es/_util/wave/useWave.js","../node_modules/antd/es/button/button-group.js","../node_modules/antd/es/button/buttonHelpers.js","../node_modules/antd/es/button/IconWrapper.js","../node_modules/antd/es/button/LoadingIcon.js","../node_modules/antd/es/button/style/group.js","../node_modules/antd/es/button/style/token.js","../node_modules/antd/es/button/style/index.js","../node_modules/antd/es/style/compact-item-vertical.js","../node_modules/antd/es/button/style/compactCmp.js","../node_modules/antd/es/button/button.js","../node_modules/antd/es/button/index.js","../node_modules/antd/es/input/Search.js","../node_modules/rc-textarea/es/calculateNodeHeight.js","../node_modules/rc-textarea/es/ResizableTextArea.js","../node_modules/rc-textarea/es/TextArea.js","../node_modules/rc-textarea/es/index.js","../node_modules/antd/es/input/TextArea.js","../node_modules/antd/es/input/index.js","../node_modules/rc-checkbox/es/index.js","../node_modules/antd/es/checkbox/GroupContext.js","../node_modules/antd/es/checkbox/style/index.js","../node_modules/antd/es/checkbox/Checkbox.js","../node_modules/antd/es/checkbox/Group.js","../node_modules/antd/es/checkbox/index.js","../node_modules/clsx/dist/clsx.mjs","Screens/Login/Login.js","../node_modules/react-icons/io/index.mjs","../node_modules/antd/es/_util/gapSize.js","../node_modules/antd/es/space/context.js","../node_modules/antd/es/space/Item.js","../node_modules/antd/es/space/index.js","../node_modules/rc-picker/es/generate/dayjs.js","../node_modules/antd/es/modal/locale.js","../node_modules/antd/es/locale/index.js","../node_modules/antd/es/config-provider/cssVariables.js","../node_modules/antd/es/config-provider/hooks/useConfig.js","../node_modules/antd/es/config-provider/hooks/useThemeKey.js","../node_modules/antd/es/config-provider/MotionWrapper.js","../node_modules/antd/es/config-provider/PropWarning.js","../node_modules/antd/es/config-provider/index.js","../node_modules/antd/es/config-provider/hooks/useTheme.js","../node_modules/antd/es/_util/PurePanel.js","../node_modules/@ant-design/icons-svg/es/asn/CalendarOutlined.js","../node_modules/@ant-design/icons/es/icons/CalendarOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/ClockCircleOutlined.js","../node_modules/@ant-design/icons/es/icons/ClockCircleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/SwapRightOutlined.js","../node_modules/@ant-design/icons/es/icons/SwapRightOutlined.js","../node_modules/rc-util/es/pickAttrs.js","../node_modules/rc-picker/es/panels/DecadePanel/constant.js","../node_modules/rc-picker/es/utils/dateUtil.js","../node_modules/rc-picker/es/hooks/useValueTexts.js","../node_modules/rc-picker/es/hooks/useHoverValue.js","../node_modules/rc-util/es/KeyCode.js","../node_modules/rc-picker/es/utils/uiUtil.js","../node_modules/rc-picker/es/hooks/usePickerInput.js","../node_modules/rc-picker/es/hooks/usePresets.js","../node_modules/rc-picker/es/hooks/useTextValueMapping.js","../node_modules/rc-picker/es/PanelContext.js","../node_modules/rc-picker/es/hooks/useCellRender.js","../node_modules/rc-picker/es/utils/miscUtil.js","../node_modules/rc-picker/es/hooks/useCellClassName.js","../node_modules/rc-picker/es/RangeContext.js","../node_modules/rc-picker/es/utils/timeUtil.js","../node_modules/rc-picker/es/panels/PanelBody.js","../node_modules/rc-picker/es/panels/DatePanel/DateBody.js","../node_modules/rc-picker/es/panels/Header.js","../node_modules/rc-picker/es/panels/DatePanel/DateHeader.js","../node_modules/rc-picker/es/panels/DatePanel/index.js","../node_modules/rc-picker/es/panels/TimePanel/TimeUnitColumn.js","../node_modules/rc-picker/es/panels/TimePanel/TimeBody.js","../node_modules/rc-picker/es/hooks/useTimeSelection.js","../node_modules/rc-picker/es/panels/TimePanel/TimeHeader.js","../node_modules/rc-picker/es/panels/TimePanel/index.js","../node_modules/rc-picker/es/panels/DatetimePanel/index.js","../node_modules/rc-picker/es/panels/DecadePanel/DecadeHeader.js","../node_modules/rc-picker/es/panels/DecadePanel/DecadeBody.js","../node_modules/rc-picker/es/panels/DecadePanel/index.js","../node_modules/rc-picker/es/panels/MonthPanel/MonthHeader.js","../node_modules/rc-picker/es/panels/MonthPanel/MonthBody.js","../node_modules/rc-picker/es/panels/MonthPanel/index.js","../node_modules/rc-picker/es/panels/QuarterPanel/QuarterHeader.js","../node_modules/rc-picker/es/panels/QuarterPanel/QuarterBody.js","../node_modules/rc-picker/es/panels/QuarterPanel/index.js","../node_modules/rc-picker/es/panels/WeekPanel/index.js","../node_modules/rc-picker/es/panels/YearPanel/constant.js","../node_modules/rc-picker/es/panels/YearPanel/YearHeader.js","../node_modules/rc-picker/es/panels/YearPanel/YearBody.js","../node_modules/rc-picker/es/panels/YearPanel/index.js","../node_modules/rc-picker/es/utils/getExtraFooter.js","../node_modules/rc-picker/es/utils/getRanges.js","../node_modules/rc-picker/es/PickerPanel.js","../node_modules/rc-picker/es/PickerTrigger.js","../node_modules/rc-picker/es/PresetPanel.js","../node_modules/rc-picker/es/utils/getClearIcon.js","../node_modules/rc-picker/es/Picker.js","../node_modules/rc-picker/es/hooks/useRangeViewDates.js","../node_modules/rc-picker/es/RangePicker.js","../node_modules/rc-picker/es/hooks/useRangeOpen.js","../node_modules/rc-picker/es/hooks/useRangeDisabled.js","../node_modules/rc-picker/es/index.js","../node_modules/antd/es/style/motion/slide.js","../node_modules/antd/es/style/motion/move.js","../node_modules/antd/es/date-picker/style/variants.js","../node_modules/antd/es/date-picker/style/index.js","../node_modules/antd/es/date-picker/style/token.js","../node_modules/antd/es/date-picker/util.js","../node_modules/antd/es/date-picker/generatePicker/Components.js","../node_modules/antd/es/date-picker/PickerButton.js","../node_modules/antd/es/date-picker/generatePicker/generateRangePicker.js","../node_modules/antd/es/date-picker/generatePicker/generateSinglePicker.js","../node_modules/antd/es/date-picker/generatePicker/index.js","../node_modules/antd/es/date-picker/index.js","Screens/Customer/Services/ServiceHistory/AllServicesHistory/AllServicesHistory.js","../node_modules/fflate/esm/browser.js","../node_modules/jspdf/src/libs/globalObject.js","../node_modules/jspdf/src/libs/console.js","../node_modules/jspdf/src/libs/FileSaver.js","../node_modules/jspdf/src/libs/AtobBtoa.js","../node_modules/jspdf/src/libs/rgbcolor.js","../node_modules/jspdf/src/libs/md5.js","../node_modules/jspdf/src/libs/rc4.js","../node_modules/jspdf/src/libs/pdfsecurity.js","../node_modules/jspdf/src/libs/pdfname.js","../node_modules/jspdf/src/jspdf.js","../node_modules/jspdf/src/modules/acroform.js","../node_modules/jspdf/src/libs/fontFace.js","../node_modules/jspdf/src/modules/addimage.js","../node_modules/jspdf/src/modules/annotations.js","../node_modules/jspdf/src/modules/arabic.js","../node_modules/jspdf/src/modules/autoprint.js","../node_modules/jspdf/src/modules/canvas.js","../node_modules/jspdf/src/modules/cell.js","../node_modules/jspdf/src/modules/javascript.js","../node_modules/jspdf/src/modules/context2d.js","../node_modules/jspdf/src/modules/filters.js","../node_modules/jspdf/src/modules/fileloading.js","../node_modules/jspdf/src/modules/html.js","../node_modules/jspdf/src/modules/outline.js","../node_modules/jspdf/src/modules/jpeg_support.js","../node_modules/jspdf/src/libs/png.js","../node_modules/jspdf/src/modules/split_text_to_size.js","../node_modules/jspdf/src/libs/omggif.js","../node_modules/jspdf/src/libs/JPEGEncoder.js","../node_modules/jspdf/src/libs/BMPDecoder.js","../node_modules/jspdf/src/libs/WebPDecoder.js","../node_modules/jspdf/src/modules/png_support.js","../node_modules/jspdf/src/modules/gif_support.js","../node_modules/jspdf/src/modules/bmp_support.js","../node_modules/jspdf/src/modules/webp_support.js","../node_modules/jspdf/src/modules/rgba_support.js","../node_modules/jspdf/src/modules/setlanguage.js","../node_modules/jspdf/src/modules/standard_fonts_metrics.js","../node_modules/jspdf/src/modules/ttfsupport.js","../node_modules/jspdf/src/modules/svg.js","../node_modules/jspdf/src/modules/total_pages.js","../node_modules/jspdf/src/modules/viewerpreferences.js","../node_modules/jspdf/src/modules/xmp_metadata.js","../node_modules/jspdf/src/modules/utf8.js","../node_modules/jspdf/src/modules/vfs.js","../node_modules/jspdf/src/libs/bidiEngine.js","../node_modules/jspdf/src/libs/ttffont.js","../node_modules/react-bootstrap/esm/types.js","../node_modules/react-bootstrap/esm/DropdownButton.js","Screens/Customer/Services/ServiceHistory/SpecificHistory/SpecificHistory.js","Screens/Customer/Services/OurServices/InsideServices/InsideServices.js","Technician/Task/MyTask.js","Technician/Task/MyTaskList.js","../node_modules/dom-helpers/esm/scrollbarSize.js","../node_modules/react-bootstrap/esm/ModalBody.js","../node_modules/react-bootstrap/esm/ModalDialog.js","../node_modules/react-bootstrap/esm/ModalFooter.js","../node_modules/react-bootstrap/esm/ModalHeader.js","../node_modules/react-bootstrap/esm/ModalTitle.js","../node_modules/react-bootstrap/esm/Modal.js","Reusable/Model.js","Technician/TaskDetails/TaskDetails.js","Assets/Images/success.svg","Assets/Images/qr-frame.svg","Technician/ScanQrCode/ScanQrCode.js","Technician/StartTask/StartTask.js","Technician/SignaturePage/SignnaturePage.js","../node_modules/antd/es/radio/context.js","../node_modules/antd/es/radio/style/index.js","../node_modules/antd/es/radio/radio.js","../node_modules/antd/es/radio/group.js","../node_modules/antd/es/radio/radioButton.js","../node_modules/antd/es/radio/index.js","../node_modules/antd/es/divider/style/index.js","../node_modules/antd/es/divider/index.js","../node_modules/rc-table/es/constant.js","../node_modules/@rc-component/context/es/context.js","../node_modules/@rc-component/context/es/Immutable.js","../node_modules/@rc-component/context/es/index.js","../node_modules/rc-table/es/context/TableContext.js","../node_modules/rc-table/es/hooks/useRenderTimes.js","../node_modules/rc-table/es/context/PerfContext.js","../node_modules/rc-table/es/utils/valueUtil.js","../node_modules/rc-table/es/Cell/useCellRender.js","../node_modules/rc-table/es/Cell/index.js","../node_modules/rc-table/es/Cell/useHoverState.js","../node_modules/rc-table/es/utils/fixUtil.js","../node_modules/rc-table/es/Footer/SummaryContext.js","../node_modules/rc-table/es/Footer/Row.js","../node_modules/rc-table/es/Footer/Summary.js","../node_modules/rc-table/es/Footer/Cell.js","../node_modules/rc-table/es/Footer/index.js","../node_modules/rc-util/es/Dom/styleChecker.js","../node_modules/rc-table/es/hooks/useFlattenRecords.js","../node_modules/rc-table/es/hooks/useRowInfo.js","../node_modules/rc-table/es/Body/ExpandedRow.js","../node_modules/rc-table/es/Body/BodyRow.js","../node_modules/rc-table/es/Body/MeasureCell.js","../node_modules/rc-table/es/Body/MeasureRow.js","../node_modules/rc-table/es/Body/index.js","../node_modules/rc-table/es/utils/legacyUtil.js","../node_modules/rc-table/es/ColGroup.js","../node_modules/rc-table/es/FixedHolder/index.js","../node_modules/rc-table/es/Header/HeaderRow.js","../node_modules/rc-table/es/Header/Header.js","../node_modules/rc-table/es/hooks/useColumns/useWidthColumns.js","../node_modules/rc-table/es/hooks/useColumns/index.js","../node_modules/rc-table/es/utils/expandUtil.js","../node_modules/rc-table/es/hooks/useExpand.js","../node_modules/rc-table/es/hooks/useFrame.js","../node_modules/rc-table/es/hooks/useSticky.js","../node_modules/rc-table/es/hooks/useStickyOffsets.js","../node_modules/rc-table/es/Panel/index.js","../node_modules/rc-util/es/Dom/addEventListener.js","../node_modules/rc-util/es/Dom/css.js","../node_modules/rc-table/es/stickyScrollBar.js","../node_modules/rc-table/es/sugar/Column.js","../node_modules/rc-table/es/sugar/ColumnGroup.js","../node_modules/rc-table/es/Table.js","../node_modules/rc-table/es/hooks/useHover.js","../node_modules/rc-table/es/hooks/useFixedInfo.js","../node_modules/rc-virtual-list/es/Filler.js","../node_modules/rc-virtual-list/es/ScrollBar.js","../node_modules/rc-virtual-list/es/Item.js","../node_modules/rc-virtual-list/es/utils/CacheMap.js","../node_modules/rc-virtual-list/es/hooks/useScrollTo.js","../node_modules/rc-virtual-list/es/hooks/useDiffItem.js","../node_modules/rc-virtual-list/es/utils/algorithmUtil.js","../node_modules/rc-virtual-list/es/utils/isFirefox.js","../node_modules/rc-virtual-list/es/hooks/useOriginScroll.js","../node_modules/rc-virtual-list/es/hooks/useFrameWheel.js","../node_modules/rc-virtual-list/es/hooks/useMobileTouchMove.js","../node_modules/rc-virtual-list/es/utils/scrollbarUtil.js","../node_modules/rc-virtual-list/es/List.js","../node_modules/rc-virtual-list/es/hooks/useHeights.js","../node_modules/rc-virtual-list/es/hooks/useGetSize.js","../node_modules/rc-virtual-list/es/hooks/useChildren.js","../node_modules/rc-virtual-list/es/index.js","../node_modules/rc-table/es/VirtualTable/context.js","../node_modules/rc-table/es/VirtualTable/VirtualCell.js","../node_modules/rc-table/es/VirtualTable/BodyLine.js","../node_modules/rc-table/es/VirtualTable/BodyGrid.js","../node_modules/rc-table/es/VirtualTable/index.js","../node_modules/antd/es/table/Column.js","../node_modules/antd/es/table/ColumnGroup.js","../node_modules/@ant-design/icons-svg/es/asn/DownOutlined.js","../node_modules/@ant-design/icons/es/icons/DownOutlined.js","../node_modules/rc-tree/es/contextTypes.js","../node_modules/rc-tree/es/Indent.js","../node_modules/rc-tree/es/utils/keyUtil.js","../node_modules/rc-tree/es/utils/treeUtil.js","../node_modules/rc-tree/es/TreeNode.js","../node_modules/rc-tree/es/util.js","../node_modules/rc-tree/es/utils/conductUtil.js","../node_modules/@ant-design/icons-svg/es/asn/RightOutlined.js","../node_modules/@ant-design/icons/es/icons/RightOutlined.js","../node_modules/rc-dropdown/es/hooks/useAccessibility.js","../node_modules/rc-dropdown/es/Overlay.js","../node_modules/rc-dropdown/es/placements.js","../node_modules/rc-dropdown/es/Dropdown.js","../node_modules/rc-dropdown/es/index.js","../node_modules/rc-overflow/es/Item.js","../node_modules/rc-overflow/es/hooks/useEffectState.js","../node_modules/rc-overflow/es/hooks/channelUpdate.js","../node_modules/rc-overflow/es/context.js","../node_modules/rc-overflow/es/RawItem.js","../node_modules/rc-overflow/es/Overflow.js","../node_modules/rc-overflow/es/index.js","../node_modules/rc-menu/es/context/IdContext.js","../node_modules/rc-menu/es/context/MenuContext.js","../node_modules/rc-menu/es/context/PathContext.js","../node_modules/rc-menu/es/context/PrivateContext.js","../node_modules/rc-util/es/Dom/focus.js","../node_modules/rc-menu/es/hooks/useAccessibility.js","../node_modules/rc-menu/es/hooks/useKeyRecords.js","../node_modules/rc-menu/es/utils/timeUtil.js","../node_modules/rc-menu/es/hooks/useMemoCallback.js","../node_modules/rc-menu/es/hooks/useUUID.js","../node_modules/rc-menu/es/hooks/useActive.js","../node_modules/rc-menu/es/hooks/useDirectionStyle.js","../node_modules/rc-menu/es/Icon.js","../node_modules/rc-menu/es/utils/warnUtil.js","../node_modules/rc-menu/es/MenuItem.js","../node_modules/rc-menu/es/SubMenu/SubMenuList.js","../node_modules/rc-menu/es/utils/commonUtil.js","../node_modules/rc-menu/es/placements.js","../node_modules/rc-menu/es/utils/motionUtil.js","../node_modules/rc-menu/es/SubMenu/PopupTrigger.js","../node_modules/rc-menu/es/SubMenu/InlineSubMenuList.js","../node_modules/rc-menu/es/SubMenu/index.js","../node_modules/rc-menu/es/MenuItemGroup.js","../node_modules/rc-menu/es/Divider.js","../node_modules/rc-menu/es/utils/nodeUtil.js","../node_modules/rc-menu/es/Menu.js","../node_modules/rc-menu/es/index.js","../node_modules/antd/es/layout/Sider.js","../node_modules/@ant-design/icons-svg/es/asn/EllipsisOutlined.js","../node_modules/@ant-design/icons/es/icons/EllipsisOutlined.js","../node_modules/antd/es/menu/MenuDivider.js","../node_modules/antd/es/menu/MenuContext.js","../node_modules/antd/es/menu/MenuItem.js","../node_modules/antd/es/menu/SubMenu.js","../node_modules/antd/es/menu/hooks/useItems.js","../node_modules/antd/es/menu/OverrideContext.js","../node_modules/antd/es/menu/style/horizontal.js","../node_modules/antd/es/menu/style/rtl.js","../node_modules/antd/es/menu/style/theme.js","../node_modules/antd/es/menu/style/vertical.js","../node_modules/antd/es/menu/style/index.js","../node_modules/antd/es/menu/menu.js","../node_modules/antd/es/menu/index.js","../node_modules/antd/es/dropdown/style/status.js","../node_modules/antd/es/dropdown/style/index.js","../node_modules/antd/es/dropdown/dropdown.js","../node_modules/antd/es/dropdown/dropdown-button.js","../node_modules/antd/es/dropdown/index.js","../node_modules/antd/es/table/hooks/useSelection.js","../node_modules/antd/es/_util/hooks/useMultipleSelect.js","../node_modules/antd/es/_util/hooks/useProxyImperativeHandle.js","../node_modules/antd/es/_util/getScroll.js","../node_modules/antd/es/_util/scrollTo.js","../node_modules/antd/es/_util/easings.js","../node_modules/antd/es/empty/empty.js","../node_modules/antd/es/empty/simple.js","../node_modules/antd/es/empty/style/index.js","../node_modules/antd/es/empty/index.js","../node_modules/antd/es/config-provider/defaultRenderEmpty.js","../node_modules/antd/es/_util/hooks/useForceUpdate.js","../node_modules/antd/es/grid/hooks/useBreakpoint.js","../node_modules/@ant-design/icons-svg/es/asn/DoubleLeftOutlined.js","../node_modules/@ant-design/icons/es/icons/DoubleLeftOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DoubleRightOutlined.js","../node_modules/@ant-design/icons/es/icons/DoubleRightOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/LeftOutlined.js","../node_modules/@ant-design/icons/es/icons/LeftOutlined.js","../node_modules/rc-pagination/es/locale/zh_CN.js","../node_modules/rc-pagination/es/Options.js","../node_modules/rc-pagination/es/Pager.js","../node_modules/rc-pagination/es/Pagination.js","../node_modules/rc-select/es/TransBtn.js","../node_modules/rc-select/es/hooks/useAllowClear.js","../node_modules/rc-select/es/hooks/useBaseProps.js","../node_modules/rc-select/es/hooks/useLock.js","../node_modules/rc-select/es/Selector/Input.js","../node_modules/rc-select/es/utils/commonUtil.js","../node_modules/rc-select/es/Selector/MultipleSelector.js","../node_modules/rc-select/es/hooks/useLayoutEffect.js","../node_modules/rc-select/es/Selector/SingleSelector.js","../node_modules/rc-select/es/Selector/index.js","../node_modules/rc-select/es/utils/keyUtil.js","../node_modules/rc-select/es/SelectTrigger.js","../node_modules/rc-select/es/utils/valueUtil.js","../node_modules/rc-select/es/SelectContext.js","../node_modules/rc-select/es/BaseSelect.js","../node_modules/rc-select/es/hooks/useDelayReset.js","../node_modules/rc-select/es/hooks/useSelectTriggerControl.js","../node_modules/rc-select/es/OptGroup.js","../node_modules/rc-select/es/Option.js","../node_modules/rc-select/es/OptionList.js","../node_modules/rc-select/es/utils/platformUtil.js","../node_modules/rc-select/es/hooks/useFilterOptions.js","../node_modules/rc-select/es/hooks/useId.js","../node_modules/rc-select/es/utils/legacyUtil.js","../node_modules/rc-select/es/hooks/useOptions.js","../node_modules/rc-select/es/hooks/useRefFunc.js","../node_modules/rc-select/es/Select.js","../node_modules/rc-select/es/hooks/useCache.js","../node_modules/rc-select/es/index.js","../node_modules/antd/es/select/mergedBuiltinPlacements.js","../node_modules/antd/es/select/style/dropdown.js","../node_modules/antd/es/select/style/multiple.js","../node_modules/antd/es/select/style/single.js","../node_modules/antd/es/select/style/token.js","../node_modules/antd/es/select/style/variants.js","../node_modules/antd/es/select/style/index.js","../node_modules/@ant-design/icons-svg/es/asn/CheckOutlined.js","../node_modules/@ant-design/icons/es/icons/CheckOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CloseOutlined.js","../node_modules/@ant-design/icons/es/icons/CloseOutlined.js","../node_modules/antd/es/select/index.js","../node_modules/antd/es/select/useShowArrow.js","../node_modules/antd/es/select/useIcons.js","../node_modules/antd/es/pagination/Select.js","../node_modules/antd/es/pagination/style/index.js","../node_modules/antd/es/pagination/style/bordered.js","../node_modules/antd/es/pagination/Pagination.js","../node_modules/antd/es/pagination/index.js","../node_modules/throttle-debounce/debounce.js","../node_modules/throttle-debounce/throttle.js","../node_modules/antd/es/spin/style/index.js","../node_modules/antd/es/spin/index.js","../node_modules/antd/es/table/ExpandIcon.js","../node_modules/antd/es/table/util.js","../node_modules/@ant-design/icons-svg/es/asn/FilterFilled.js","../node_modules/@ant-design/icons/es/icons/FilterFilled.js","../node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js","../node_modules/rc-tree/es/MotionTreeNode.js","../node_modules/rc-tree/es/useUnmount.js","../node_modules/rc-tree/es/utils/diffUtil.js","../node_modules/rc-tree/es/NodeList.js","../node_modules/rc-tree/es/Tree.js","../node_modules/rc-tree/es/DropIndicator.js","../node_modules/rc-tree/es/index.js","../node_modules/@ant-design/icons-svg/es/asn/FileOutlined.js","../node_modules/@ant-design/icons/es/icons/FileOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/FolderOpenOutlined.js","../node_modules/@ant-design/icons/es/icons/FolderOpenOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/FolderOutlined.js","../node_modules/@ant-design/icons/es/icons/FolderOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/HolderOutlined.js","../node_modules/@ant-design/icons/es/icons/HolderOutlined.js","../node_modules/antd/es/tree/style/index.js","../node_modules/antd/es/tree/utils/dropIndicator.js","../node_modules/@ant-design/icons-svg/es/asn/CaretDownFilled.js","../node_modules/@ant-design/icons/es/icons/CaretDownFilled.js","../node_modules/@ant-design/icons-svg/es/asn/MinusSquareOutlined.js","../node_modules/@ant-design/icons/es/icons/MinusSquareOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/PlusSquareOutlined.js","../node_modules/@ant-design/icons/es/icons/PlusSquareOutlined.js","../node_modules/antd/es/tree/utils/iconUtil.js","../node_modules/antd/es/tree/Tree.js","../node_modules/antd/es/tree/utils/dictUtil.js","../node_modules/antd/es/tree/DirectoryTree.js","../node_modules/antd/es/tree/index.js","../node_modules/antd/es/table/hooks/useFilter/FilterSearch.js","../node_modules/antd/es/table/hooks/useFilter/FilterWrapper.js","../node_modules/antd/es/table/hooks/useFilter/FilterDropdown.js","../node_modules/antd/es/_util/hooks/useSyncState.js","../node_modules/antd/es/table/hooks/useFilter/index.js","../node_modules/antd/es/_util/extendsObject.js","../node_modules/antd/es/table/hooks/usePagination.js","../node_modules/@ant-design/icons-svg/es/asn/CaretDownOutlined.js","../node_modules/@ant-design/icons/es/icons/CaretDownOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CaretUpOutlined.js","../node_modules/@ant-design/icons/es/icons/CaretUpOutlined.js","../node_modules/antd/es/table/hooks/useSorter.js","../node_modules/antd/es/table/hooks/useTitleColumns.js","../node_modules/antd/es/table/RcTable/index.js","../node_modules/antd/es/table/RcTable/VirtualTable.js","../node_modules/antd/es/table/style/bordered.js","../node_modules/antd/es/table/style/ellipsis.js","../node_modules/antd/es/table/style/empty.js","../node_modules/antd/es/style/operationUnit.js","../node_modules/antd/es/table/style/expand.js","../node_modules/antd/es/table/style/filter.js","../node_modules/antd/es/table/style/fixed.js","../node_modules/antd/es/table/style/pagination.js","../node_modules/antd/es/table/style/radius.js","../node_modules/antd/es/table/style/rtl.js","../node_modules/antd/es/table/style/selection.js","../node_modules/antd/es/table/style/size.js","../node_modules/antd/es/table/style/sorter.js","../node_modules/antd/es/table/style/sticky.js","../node_modules/antd/es/table/style/summary.js","../node_modules/antd/es/table/style/virtual.js","../node_modules/antd/es/table/style/index.js","../node_modules/antd/es/table/InternalTable.js","../node_modules/antd/es/table/hooks/useContainerWidth.js","../node_modules/antd/es/table/hooks/useLazyKVMap.js","../node_modules/antd/es/table/Table.js","../node_modules/antd/es/table/index.js","Technician/chemicalspage/Chemicals.js","Technician/Profile/Profile.js","Technician/Home.js","Routes/Routers.js","App.js","reportWebVitals.js","index.js"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)68?1900:2e3)};var a=function(e){return function(t){this[e]=+t}},f=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],h=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},u=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},d={A:[i,function(e){this.afternoon=u(e,!1)}],a:[i,function(e){this.afternoon=u(e,!0)}],S:[/\\d/,function(e){this.milliseconds=100*+e}],SS:[n,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[r,a(\"seconds\")],ss:[r,a(\"seconds\")],m:[r,a(\"minutes\")],mm:[r,a(\"minutes\")],H:[r,a(\"hours\")],h:[r,a(\"hours\")],HH:[r,a(\"hours\")],hh:[r,a(\"hours\")],D:[r,a(\"day\")],DD:[n,a(\"day\")],Do:[i,function(e){var t=o.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],M:[r,a(\"month\")],MM:[n,a(\"month\")],MMM:[i,function(e){var t=h(\"months\"),n=(h(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(e){var t=h(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,a(\"year\")],YY:[n,function(e){this.year=s(e)}],YYYY:[/\\d{4}/,a(\"year\")],Z:f,ZZ:f};function c(n){var r,i;r=n,i=o&&o.formats;for(var s=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=s.length,f=0;f-1)return new Date((\"X\"===t?1e3:1)*e);var r=c(t)(e),i=r.year,o=r.month,s=r.day,a=r.hours,f=r.minutes,h=r.seconds,u=r.milliseconds,d=r.zone,l=new Date,m=s||(i||o?1:l.getDate()),M=i||l.getFullYear(),Y=0;i&&!o||(Y=o>0?o-1:l.getMonth());var p=a||0,v=f||0,D=h||0,g=u||0;return d?new Date(Date.UTC(M,Y,m,p,v,D,g+60*d.offset*1e3)):n?new Date(Date.UTC(M,Y,m,p,v,D,g)):new Date(M,Y,m,p,v,D,g)}catch(e){return new Date(\"\")}}(t,a,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),o={}}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var M=n.apply(this,s);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===l&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","!function(n,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(n=\"undefined\"!=typeof globalThis?globalThis:n||self).dayjs_plugin_localeData=e()}(this,(function(){\"use strict\";return function(n,e,t){var r=e.prototype,o=function(n){return n&&(n.indexOf?n:n.s)},u=function(n,e,t,r,u){var i=n.name?n:n.$locale(),a=o(i[e]),s=o(i[t]),f=a||s.map((function(n){return n.slice(0,r)}));if(!u)return f;var d=i.weekStart;return f.map((function(n,e){return f[(e+(d||0))%7]}))},i=function(){return t.Ls[t.locale()]},a=function(n,e){return n.formats[e]||function(n){return n.replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(n,e,t){return e||t.slice(1)}))}(n.formats[e.toUpperCase()])},s=function(){var n=this;return{months:function(e){return e?e.format(\"MMMM\"):u(n,\"months\")},monthsShort:function(e){return e?e.format(\"MMM\"):u(n,\"monthsShort\",\"months\",3)},firstDayOfWeek:function(){return n.$locale().weekStart||0},weekdays:function(e){return e?e.format(\"dddd\"):u(n,\"weekdays\")},weekdaysMin:function(e){return e?e.format(\"dd\"):u(n,\"weekdaysMin\",\"weekdays\",2)},weekdaysShort:function(e){return e?e.format(\"ddd\"):u(n,\"weekdaysShort\",\"weekdays\",3)},longDateFormat:function(e){return a(n.$locale(),e)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};r.localeData=function(){return s.bind(this)()},t.localeData=function(){var n=i();return{firstDayOfWeek:function(){return n.weekStart||0},weekdays:function(){return t.weekdays()},weekdaysShort:function(){return t.weekdaysShort()},weekdaysMin:function(){return t.weekdaysMin()},months:function(){return t.months()},monthsShort:function(){return t.monthsShort()},longDateFormat:function(e){return a(n,e)},meridiem:n.meridiem,ordinal:n.ordinal}},t.months=function(){return u(i(),\"months\")},t.monthsShort=function(){return u(i(),\"monthsShort\",\"months\",3)},t.weekdays=function(n){return u(i(),\"weekdays\",null,null,n)},t.weekdaysShort=function(n){return u(i(),\"weekdaysShort\",\"weekdays\",3,n)},t.weekdaysMin=function(n){return u(i(),\"weekdaysMin\",\"weekdays\",2,n)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekOfYear=t()}(this,(function(){\"use strict\";var e=\"week\",t=\"year\";return function(i,n,r){var f=n.prototype;f.week=function(i){if(void 0===i&&(i=null),null!==i)return this.add(7*(i-this.week()),\"day\");var n=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var f=r(this).startOf(t).add(1,t).date(n),s=r(this).endOf(e);if(f.isBefore(s))return 1}var a=r(this).startOf(t).date(n).startOf(e).subtract(1,\"millisecond\"),o=this.diff(a,e,!0);return o<0?r(this).startOf(\"week\").week():Math.ceil(o)},f.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekYear=t()}(this,(function(){\"use strict\";return function(e,t){t.prototype.weekYear=function(){var e=this.month(),t=this.week(),n=this.year();return 1===t&&11===e?n+1:0===e&&t>=52?n-1:n}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekday=t()}(this,(function(){\"use strict\";return function(e,t){t.prototype.weekday=function(e){var t=this.$locale().weekStart||0,i=this.$W,n=(i>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n if (isRequired) {\n return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n }\n\n return null;\n }\n\n for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n args[_key - 6] = arguments[_key];\n }\n\n return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\nmodule.exports = exports['default'];","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3Math.abs(diffY)))return;var _b=utils_1.populateSlidesOnMouseTouchMove(this.state,this.props,this.initialX,this.lastX,clientX,this.transformPlaceHolder),direction=_b.direction,nextPosition=_b.nextPosition,canContinue=_b.canContinue;direction&&(this.direction=direction,canContinue&&void 0!==nextPosition&&this.setTransformDirectly(nextPosition)),this.lastX=clientX}}},Carousel.prototype.handleOut=function(e){this.props.autoPlay&&!this.autoPlay&&(this.autoPlay=setInterval(this.next,this.props.autoPlaySpeed));var shouldDisableOnMobile=\"touchend\"===e.type&&!this.props.swipeable,shouldDisableOnDesktop=(\"mouseleave\"===e.type||\"mouseup\"===e.type)&&!this.props.draggable;if(!shouldDisableOnMobile&&!shouldDisableOnDesktop&&this.onMove){if(this.setAnimationDirectly(!0),\"right\"===this.direction)if(this.initialX-this.lastX>=this.props.minimumTouchDrag){var slidesHavePassed=Math.round((this.initialX-this.lastX)/this.state.itemWidth);this.next(slidesHavePassed)}else this.correctItemsPosition(this.state.itemWidth,!0,!0);if(\"left\"===this.direction)if(this.lastX-this.initialX>this.props.minimumTouchDrag){slidesHavePassed=Math.round((this.lastX-this.initialX)/this.state.itemWidth);this.previous(slidesHavePassed)}else this.correctItemsPosition(this.state.itemWidth,!0,!0);this.resetMoveStatus()}},Carousel.prototype.isInViewport=function(el){var _a=el.getBoundingClientRect(),_b=_a.top,top=void 0===_b?0:_b,_c=_a.left,left=void 0===_c?0:_c,_d=_a.bottom,bottom=void 0===_d?0:_d,_e=_a.right,right=void 0===_e?0:_e;return 0<=top&&0<=left&&bottom<=(window.innerHeight||document.documentElement.clientHeight)&&right<=(window.innerWidth||document.documentElement.clientWidth)},Carousel.prototype.isChildOfCarousel=function(el){return!!(el instanceof Element&&this.listRef&&this.listRef.current)&&this.listRef.current.contains(el)},Carousel.prototype.onKeyUp=function(e){var target=e.target;switch(e.keyCode){case 37:if(this.isChildOfCarousel(target))return this.previous();break;case 39:if(this.isChildOfCarousel(target))return this.next();break;case 9:if(this.isChildOfCarousel(target)&&target instanceof HTMLInputElement&&this.isInViewport(target))return this.next()}},Carousel.prototype.handleEnter=function(e){types_1.isMouseMoveEvent(e)&&this.autoPlay&&this.props.autoPlay&&this.props.pauseOnHover&&(clearInterval(this.autoPlay),this.autoPlay=void 0)},Carousel.prototype.goToSlide=function(slide,skipCallbacks,animationAllowed){var _this=this;if(void 0===animationAllowed&&(animationAllowed=!0),!this.isInThrottle){var itemWidth=this.state.itemWidth,_a=this.props,afterChange=_a.afterChange,beforeChange=_a.beforeChange,previousSlide=this.state.currentSlide;\"function\"!=typeof beforeChange||skipCallbacks&&(\"object\"!=typeof skipCallbacks||skipCallbacks.skipBeforeChange)||beforeChange(slide,this.getState()),this.isAnimationAllowed=animationAllowed,this.props.shouldResetAutoplay&&this.resetAutoplayInterval(),this.setState({currentSlide:slide,transform:-itemWidth*slide},function(){_this.props.infinite&&_this.correctClonesPosition({domLoaded:!0}),\"function\"!=typeof afterChange||skipCallbacks&&(\"object\"!=typeof skipCallbacks||skipCallbacks.skipAfterChange)||(Carousel.afterChangeTimeout3=setTimeout(function(){afterChange(previousSlide,_this.getState())},_this.props.transitionDuration||defaultTransitionDuration))})}},Carousel.prototype.getState=function(){return this.state},Carousel.prototype.renderLeftArrow=function(disbaled){var _this=this,_a=this.props,customLeftArrow=_a.customLeftArrow,rtl=_a.rtl;return React.createElement(Arrows_1.LeftArrow,{customLeftArrow:customLeftArrow,getState:function(){return _this.getState()},previous:this.previous,disabled:disbaled,rtl:rtl})},Carousel.prototype.renderRightArrow=function(disbaled){var _this=this,_a=this.props,customRightArrow=_a.customRightArrow,rtl=_a.rtl;return React.createElement(Arrows_1.RightArrow,{customRightArrow:customRightArrow,getState:function(){return _this.getState()},next:this.next,disabled:disbaled,rtl:rtl})},Carousel.prototype.renderButtonGroups=function(){var _this=this,customButtonGroup=this.props.customButtonGroup;return customButtonGroup?React.cloneElement(customButtonGroup,{previous:function(){return _this.previous()},next:function(){return _this.next()},goToSlide:function(slideIndex,skipCallbacks){return _this.goToSlide(slideIndex,skipCallbacks)},carouselState:this.getState()}):null},Carousel.prototype.renderDotsList=function(){var _this=this;return React.createElement(Dots_1.default,{state:this.state,props:this.props,goToSlide:this.goToSlide,getState:function(){return _this.getState()}})},Carousel.prototype.renderCarouselItems=function(){var clones=[];if(this.props.infinite){var childrenArr=React.Children.toArray(this.props.children);clones=utils_1.getClones(this.state.slidesToShow,childrenArr)}return React.createElement(CarouselItems_1.default,{clones:clones,goToSlide:this.goToSlide,state:this.state,notEnoughChildren:utils_1.notEnoughChildren(this.state),props:this.props})},Carousel.prototype.render=function(){var _a=this.props,deviceType=_a.deviceType,arrows=_a.arrows,renderArrowsWhenDisabled=_a.renderArrowsWhenDisabled,removeArrowOnDeviceType=_a.removeArrowOnDeviceType,infinite=_a.infinite,containerClass=_a.containerClass,sliderClass=_a.sliderClass,customTransition=_a.customTransition,additionalTransfrom=_a.additionalTransfrom,renderDotsOutside=_a.renderDotsOutside,renderButtonGroupOutside=_a.renderButtonGroupOutside,className=_a.className,rtl=_a.rtl;\"production\"!==process.env.NODE_ENV&&utils_1.throwError(this.state,this.props);var _b=utils_1.getInitialState(this.state,this.props),shouldRenderOnSSR=_b.shouldRenderOnSSR,shouldRenderAtAll=_b.shouldRenderAtAll,isLeftEndReach=utils_1.isInLeftEnd(this.state),isRightEndReach=utils_1.isInRightEnd(this.state),shouldShowArrows=arrows&&!(removeArrowOnDeviceType&&(deviceType&&-12*slidesToShow?index+2*slidesToShow:currentSlide>=childrenArr.length?childrenArr.length+index:index}function getOriginalIndexLookupTableByClones(slidesToShow,childrenArr){if(childrenArr.length>2*slidesToShow){for(var table={},firstBeginningOfClones=childrenArr.length-2*slidesToShow,firstEndOfClones=childrenArr.length-firstBeginningOfClones,firstCount=firstBeginningOfClones,i=0;i2*slidesToShow?childrenArr.slice(childrenArr.length-2*slidesToShow,childrenArr.length).concat(childrenArr,childrenArr.slice(0,2*slidesToShow)):childrenArr.concat(childrenArr,childrenArr)}function getInitialSlideInInfiniteMode(slidesToShow,childrenArr){return childrenArr.length>2*slidesToShow?2*slidesToShow:childrenArr.length}function checkClonesPosition(_a,childrenArr,props){var isReachingTheEnd,currentSlide=_a.currentSlide,slidesToShow=_a.slidesToShow,itemWidth=_a.itemWidth,totalItems=_a.totalItems,nextSlide=0,nextPosition=0,isReachingTheStart=0===currentSlide,originalFirstSlide=childrenArr.length-(childrenArr.length-2*slidesToShow);return childrenArr.length2*slidesToShow?((isReachingTheEnd=currentSlide>=originalFirstSlide+childrenArr.length)&&(nextPosition=-itemWidth*(nextSlide=currentSlide-childrenArr.length)),isReachingTheStart&&(nextPosition=-itemWidth*(nextSlide=originalFirstSlide+(childrenArr.length-2*slidesToShow)))):((isReachingTheEnd=currentSlide>=2*childrenArr.length)&&(nextPosition=-itemWidth*(nextSlide=currentSlide-childrenArr.length)),isReachingTheStart&&(nextPosition=props.showDots?-itemWidth*(nextSlide=childrenArr.length):-itemWidth*(nextSlide=totalItems/3))),{isReachingTheEnd:isReachingTheEnd,isReachingTheStart:isReachingTheStart,nextSlide:nextSlide,nextPosition:nextPosition}}Object.defineProperty(exports,\"__esModule\",{value:!0}),exports.getOriginalCounterPart=getOriginalCounterPart,exports.getOriginalIndexLookupTableByClones=getOriginalIndexLookupTableByClones,exports.getClones=getClones,exports.getInitialSlideInInfiniteMode=getInitialSlideInInfiniteMode,exports.checkClonesPosition=checkClonesPosition;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});var elementWidth_1=require(\"./elementWidth\");function notEnoughChildren(state){var slidesToShow=state.slidesToShow;return state.totalItems=min&&window.innerWidth<=max&&(slidesToScroll=slidesToSlide)}),slidesToScroll}exports.notEnoughChildren=notEnoughChildren,exports.getInitialState=getInitialState,exports.getIfSlideIsVisbile=getIfSlideIsVisbile,exports.getTransformForCenterMode=getTransformForCenterMode,exports.isInLeftEnd=isInLeftEnd,exports.isInRightEnd=isInRightEnd,exports.getTransformForPartialVsibile=getTransformForPartialVsibile,exports.parsePosition=parsePosition,exports.getTransform=getTransform,exports.getSlidesToSlide=getSlidesToSlide;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});var clones_1=require(\"./clones\"),common_1=require(\"./common\");function getLookupTableForNextSlides(numberOfDotsToShow,state,props,childrenArr){var table={},slidesToSlide=common_1.getSlidesToSlide(state,props);return Array(numberOfDotsToShow).fill(0).forEach(function(_,i){var nextSlide=clones_1.getOriginalCounterPart(i,state,childrenArr);if(0===i)table[0]=nextSlide;else{var now=table[i-1]+slidesToSlide;table[i]=now}}),table}exports.getLookupTableForNextSlides=getLookupTableForNextSlides;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});var hasWarnAboutTypo=!1;function getPartialVisibilityGutter(responsive,partialVisible,serverSideDeviceType,clientSideDeviceType){var gutter=0,deviceType=clientSideDeviceType||serverSideDeviceType;return partialVisible&&deviceType&&(!hasWarnAboutTypo&&\"production\"!==process.env.NODE_ENV&&responsive[deviceType].paritialVisibilityGutter&&(hasWarnAboutTypo=!0,console.warn(\"You appear to be using paritialVisibilityGutter instead of partialVisibilityGutter which will be moved to partialVisibilityGutter in the future completely\")),gutter=responsive[deviceType].partialVisibilityGutter||responsive[deviceType].paritialVisibilityGutter),gutter}function getWidthFromDeviceType(deviceType,responsive){var itemWidth;responsive[deviceType]&&(itemWidth=(100/responsive[deviceType].items).toFixed(1));return itemWidth}function getItemClientSideWidth(props,slidesToShow,containerWidth){return Math.round(containerWidth/(slidesToShow+(props.centerMode?1:0)))}exports.getPartialVisibilityGutter=getPartialVisibilityGutter,exports.getWidthFromDeviceType=getWidthFromDeviceType,exports.getItemClientSideWidth=getItemClientSideWidth;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});var clones_1=require(\"./clones\");exports.getOriginalCounterPart=clones_1.getOriginalCounterPart,exports.getClones=clones_1.getClones,exports.checkClonesPosition=clones_1.checkClonesPosition,exports.getInitialSlideInInfiniteMode=clones_1.getInitialSlideInInfiniteMode;var elementWidth_1=require(\"./elementWidth\");exports.getWidthFromDeviceType=elementWidth_1.getWidthFromDeviceType,exports.getPartialVisibilityGutter=elementWidth_1.getPartialVisibilityGutter,exports.getItemClientSideWidth=elementWidth_1.getItemClientSideWidth;var common_1=require(\"./common\");exports.getInitialState=common_1.getInitialState,exports.getIfSlideIsVisbile=common_1.getIfSlideIsVisbile,exports.getTransformForCenterMode=common_1.getTransformForCenterMode,exports.getTransformForPartialVsibile=common_1.getTransformForPartialVsibile,exports.isInLeftEnd=common_1.isInLeftEnd,exports.isInRightEnd=common_1.isInRightEnd,exports.notEnoughChildren=common_1.notEnoughChildren,exports.getSlidesToSlide=common_1.getSlidesToSlide;var throttle_1=require(\"./throttle\");exports.throttle=throttle_1.default;var throwError_1=require(\"./throwError\");exports.throwError=throwError_1.default;var next_1=require(\"./next\");exports.populateNextSlides=next_1.populateNextSlides;var previous_1=require(\"./previous\");exports.populatePreviousSlides=previous_1.populatePreviousSlides;var mouseOrTouchMove_1=require(\"./mouseOrTouchMove\");exports.populateSlidesOnMouseTouchMove=mouseOrTouchMove_1.populateSlidesOnMouseTouchMove;","\"use strict\";function populateSlidesOnMouseTouchMove(state,props,initialX,lastX,clientX,transformPlaceHolder){var direction,nextPosition,itemWidth=state.itemWidth,slidesToShow=state.slidesToShow,totalItems=state.totalItems,currentSlide=state.currentSlide,infinite=props.infinite,canContinue=!1,slidesHavePassedRight=Math.round((initialX-lastX)/itemWidth),slidesHavePassedLeft=Math.round((lastX-initialX)/itemWidth),isMovingLeft=initialX arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n }\n\n function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n }\n\n function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n }\n\n var propTypes = {exports: {}};\n\n var reactIs = {exports: {}};\n\n var reactIs_production_min = {};\n\n /** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\n Symbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\n function z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}reactIs_production_min.AsyncMode=l;reactIs_production_min.ConcurrentMode=m;reactIs_production_min.ContextConsumer=k;reactIs_production_min.ContextProvider=h;reactIs_production_min.Element=c;reactIs_production_min.ForwardRef=n;reactIs_production_min.Fragment=e;reactIs_production_min.Lazy=t;reactIs_production_min.Memo=r;reactIs_production_min.Portal=d;\n reactIs_production_min.Profiler=g;reactIs_production_min.StrictMode=f;reactIs_production_min.Suspense=p;reactIs_production_min.isAsyncMode=function(a){return A(a)||z(a)===l};reactIs_production_min.isConcurrentMode=A;reactIs_production_min.isContextConsumer=function(a){return z(a)===k};reactIs_production_min.isContextProvider=function(a){return z(a)===h};reactIs_production_min.isElement=function(a){return \"object\"===typeof a&&null!==a&&a.$$typeof===c};reactIs_production_min.isForwardRef=function(a){return z(a)===n};reactIs_production_min.isFragment=function(a){return z(a)===e};reactIs_production_min.isLazy=function(a){return z(a)===t};\n reactIs_production_min.isMemo=function(a){return z(a)===r};reactIs_production_min.isPortal=function(a){return z(a)===d};reactIs_production_min.isProfiler=function(a){return z(a)===g};reactIs_production_min.isStrictMode=function(a){return z(a)===f};reactIs_production_min.isSuspense=function(a){return z(a)===p};\n reactIs_production_min.isValidElementType=function(a){return \"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};reactIs_production_min.typeOf=z;\n\n var reactIs_development = {};\n\n /** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\n if (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n // The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n // nor polyfill, then a plain number is used for performance.\n var hasSymbol = typeof Symbol === 'function' && Symbol.for;\n var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\n var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\n var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\n var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\n var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\n var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\n var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n // (unstable) APIs that have been removed. Can we remove the symbols?\n\n var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\n var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\n var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\n var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\n var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\n var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\n var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\n var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\n var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\n var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\n function isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n }\n\n function typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n } // AsyncMode is deprecated along with isAsyncMode\n\n var AsyncMode = REACT_ASYNC_MODE_TYPE;\n var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\n var ContextConsumer = REACT_CONTEXT_TYPE;\n var ContextProvider = REACT_PROVIDER_TYPE;\n var Element = REACT_ELEMENT_TYPE;\n var ForwardRef = REACT_FORWARD_REF_TYPE;\n var Fragment = REACT_FRAGMENT_TYPE;\n var Lazy = REACT_LAZY_TYPE;\n var Memo = REACT_MEMO_TYPE;\n var Portal = REACT_PORTAL_TYPE;\n var Profiler = REACT_PROFILER_TYPE;\n var StrictMode = REACT_STRICT_MODE_TYPE;\n var Suspense = REACT_SUSPENSE_TYPE;\n var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\n function isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n }\n function isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n }\n function isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n }\n function isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n }\n function isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n function isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n }\n function isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n }\n function isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n }\n function isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n }\n function isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n }\n function isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n }\n function isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n }\n function isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n }\n\n reactIs_development.AsyncMode = AsyncMode;\n reactIs_development.ConcurrentMode = ConcurrentMode;\n reactIs_development.ContextConsumer = ContextConsumer;\n reactIs_development.ContextProvider = ContextProvider;\n reactIs_development.Element = Element;\n reactIs_development.ForwardRef = ForwardRef;\n reactIs_development.Fragment = Fragment;\n reactIs_development.Lazy = Lazy;\n reactIs_development.Memo = Memo;\n reactIs_development.Portal = Portal;\n reactIs_development.Profiler = Profiler;\n reactIs_development.StrictMode = StrictMode;\n reactIs_development.Suspense = Suspense;\n reactIs_development.isAsyncMode = isAsyncMode;\n reactIs_development.isConcurrentMode = isConcurrentMode;\n reactIs_development.isContextConsumer = isContextConsumer;\n reactIs_development.isContextProvider = isContextProvider;\n reactIs_development.isElement = isElement;\n reactIs_development.isForwardRef = isForwardRef;\n reactIs_development.isFragment = isFragment;\n reactIs_development.isLazy = isLazy;\n reactIs_development.isMemo = isMemo;\n reactIs_development.isPortal = isPortal;\n reactIs_development.isProfiler = isProfiler;\n reactIs_development.isStrictMode = isStrictMode;\n reactIs_development.isSuspense = isSuspense;\n reactIs_development.isValidElementType = isValidElementType;\n reactIs_development.typeOf = typeOf;\n })();\n }\n\n if (process.env.NODE_ENV === 'production') {\n reactIs.exports = reactIs_production_min;\n } else {\n reactIs.exports = reactIs_development;\n }\n\n /*\n object-assign\n (c) Sindre Sorhus\n @license MIT\n */\n /* eslint-disable no-unused-vars */\n var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\n function toObject(val) {\n \tif (val === null || val === undefined) {\n \t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n \t}\n\n \treturn Object(val);\n }\n\n function shouldUseNative() {\n \ttry {\n \t\tif (!Object.assign) {\n \t\t\treturn false;\n \t\t}\n\n \t\t// Detect buggy property enumeration order in older V8 versions.\n\n \t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n \t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n \t\ttest1[5] = 'de';\n \t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n \t\t\treturn false;\n \t\t}\n\n \t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n \t\tvar test2 = {};\n \t\tfor (var i = 0; i < 10; i++) {\n \t\t\ttest2['_' + String.fromCharCode(i)] = i;\n \t\t}\n \t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n \t\t\treturn test2[n];\n \t\t});\n \t\tif (order2.join('') !== '0123456789') {\n \t\t\treturn false;\n \t\t}\n\n \t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n \t\tvar test3 = {};\n \t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n \t\t\ttest3[letter] = letter;\n \t\t});\n \t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n \t\t\t\t'abcdefghijklmnopqrst') {\n \t\t\treturn false;\n \t\t}\n\n \t\treturn true;\n \t} catch (err) {\n \t\t// We don't expect any of the above to throw, but better to be safe.\n \t\treturn false;\n \t}\n }\n\n var objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n \tvar from;\n \tvar to = toObject(target);\n \tvar symbols;\n\n \tfor (var s = 1; s < arguments.length; s++) {\n \t\tfrom = Object(arguments[s]);\n\n \t\tfor (var key in from) {\n \t\t\tif (hasOwnProperty.call(from, key)) {\n \t\t\t\tto[key] = from[key];\n \t\t\t}\n \t\t}\n\n \t\tif (getOwnPropertySymbols) {\n \t\t\tsymbols = getOwnPropertySymbols(from);\n \t\t\tfor (var i = 0; i < symbols.length; i++) {\n \t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n \t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n \t\t\t\t}\n \t\t\t}\n \t\t}\n \t}\n\n \treturn to;\n };\n\n /**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n var ReactPropTypesSecret$3 = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\n var ReactPropTypesSecret_1 = ReactPropTypesSecret$3;\n\n var has$2 = Function.call.bind(Object.prototype.hasOwnProperty);\n\n /**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n var printWarning$1 = function() {};\n\n if (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret$2 = ReactPropTypesSecret_1;\n var loggedTypeFailures = {};\n var has$1 = has$2;\n\n printWarning$1 = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n }\n\n /**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\n function checkPropTypes$1(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has$1(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$2);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning$1(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning$1(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n }\n\n /**\n * Resets warning cache when testing.\n *\n * @private\n */\n checkPropTypes$1.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n };\n\n var checkPropTypes_1 = checkPropTypes$1;\n\n /**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n var ReactIs$1 = reactIs.exports;\n var assign = objectAssign;\n\n var ReactPropTypesSecret$1 = ReactPropTypesSecret_1;\n var has = has$2;\n var checkPropTypes = checkPropTypes_1;\n\n var printWarning = function() {};\n\n if (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n }\n\n function emptyFunctionThatReturnsNull() {\n return null;\n }\n\n var factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret$1) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret$1);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs$1.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret$1);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret$1);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret$1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret$1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n };\n\n /**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n var ReactPropTypesSecret = ReactPropTypesSecret_1;\n\n function emptyFunction() {}\n function emptyFunctionWithReset() {}\n emptyFunctionWithReset.resetWarningCache = emptyFunction;\n\n var factoryWithThrowingShims = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n };\n\n /**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n if (process.env.NODE_ENV !== 'production') {\n var ReactIs = reactIs.exports;\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n propTypes.exports = factoryWithTypeCheckers(ReactIs.isElement, throwOnDirectAccess);\n } else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n propTypes.exports = factoryWithThrowingShims();\n }\n\n var PropTypes = propTypes.exports;\n\n function decodeBase64(base64, enableUnicode) {\n var binaryString = atob(base64);\n if (enableUnicode) {\n var binaryView = new Uint8Array(binaryString.length);\n for (var i = 0, n = binaryString.length; i < n; ++i) {\n binaryView[i] = binaryString.charCodeAt(i);\n }\n return String.fromCharCode.apply(null, new Uint16Array(binaryView.buffer));\n }\n return binaryString;\n }\n\n function createURL(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n var blob = new Blob([body], { type: 'application/javascript' });\n return URL.createObjectURL(blob);\n }\n\n function createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var url;\n return function WorkerFactory(options) {\n url = url || createURL(base64, sourcemapArg, enableUnicodeArg);\n return new Worker(url, options);\n };\n }\n\n var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewoJJ3VzZSBzdHJpY3QnOwoKCXZhciBjb21tb25qc0dsb2JhbCA9IHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbFRoaXMgOiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHt9OwoKCWZ1bmN0aW9uIGdldEF1Z21lbnRlZE5hbWVzcGFjZShuKSB7CgkJaWYgKG4uX19lc01vZHVsZSkgcmV0dXJuIG47CgkJdmFyIGEgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdfX2VzTW9kdWxlJywge3ZhbHVlOiB0cnVlfSk7CgkJT2JqZWN0LmtleXMobikuZm9yRWFjaChmdW5jdGlvbiAoaykgewoJCQl2YXIgZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobiwgayk7CgkJCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCBrLCBkLmdldCA/IGQgOiB7CgkJCQllbnVtZXJhYmxlOiB0cnVlLAoJCQkJZ2V0OiBmdW5jdGlvbiAoKSB7CgkJCQkJcmV0dXJuIG5ba107CgkJCQl9CgkJCX0pOwoJCX0pOwoJCXJldHVybiBhOwoJfQoKCXZhciBCaW5hcnlCaXRtYXAkMSA9IHt9OwoKCXZhciBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24kMSA9IHt9OwoKCXZhciBFeGNlcHRpb24kMSA9IHt9OwoKCWZ1bmN0aW9uIGZpeFByb3RvKHRhcmdldCwgcHJvdG90eXBlKSB7CgkgIHZhciBzZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZjsKCSAgc2V0UHJvdG90eXBlT2YgPyBzZXRQcm90b3R5cGVPZih0YXJnZXQsIHByb3RvdHlwZSkgOiB0YXJnZXQuX19wcm90b19fID0gcHJvdG90eXBlOwoJfQoJZnVuY3Rpb24gZml4U3RhY2sodGFyZ2V0LCBmbikgewoJICBpZiAoZm4gPT09IHZvaWQgMCkgewoJICAgIGZuID0gdGFyZ2V0LmNvbnN0cnVjdG9yOwoJICB9CgoJICB2YXIgY2FwdHVyZVN0YWNrVHJhY2UgPSBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZTsKCSAgY2FwdHVyZVN0YWNrVHJhY2UgJiYgY2FwdHVyZVN0YWNrVHJhY2UodGFyZ2V0LCBmbik7Cgl9CgoJdmFyIF9fZXh0ZW5kcyRrID0gZnVuY3Rpb24gKCkgewoJICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7CgkgICAgICBfX3Byb3RvX186IFtdCgkgICAgfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICBkLl9fcHJvdG9fXyA9IGI7CgkgICAgfSB8fCBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgZm9yICh2YXIgcCBpbiBiKSB7IGlmIChiLmhhc093blByb3BlcnR5KHApKSB7IGRbcF0gPSBiW3BdOyB9IH0KCSAgICB9OwoKCSAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgfTsKCgkgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgoJICAgIGZ1bmN0aW9uIF9fKCkgewoJICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7CgkgICAgfQoKCSAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgIH07Cgl9KCk7CgoJdmFyIEN1c3RvbUVycm9yID0gZnVuY3Rpb24gKF9zdXBlcikgewoJICBfX2V4dGVuZHMkayhDdXN0b21FcnJvciwgX3N1cGVyKTsKCgkgIGZ1bmN0aW9uIEN1c3RvbUVycm9yKG1lc3NhZ2UpIHsKCSAgICB2YXIgX25ld1RhcmdldCA9IHRoaXMuY29uc3RydWN0b3I7CgoJICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIG1lc3NhZ2UpIHx8IHRoaXM7CgoJICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfdGhpcywgJ25hbWUnLCB7CgkgICAgICB2YWx1ZTogX25ld1RhcmdldC5uYW1lLAoJICAgICAgZW51bWVyYWJsZTogZmFsc2UsCgkgICAgICBjb25maWd1cmFibGU6IHRydWUKCSAgICB9KTsKCSAgICBmaXhQcm90byhfdGhpcywgX25ld1RhcmdldC5wcm90b3R5cGUpOwoJICAgIGZpeFN0YWNrKF90aGlzKTsKCSAgICByZXR1cm4gX3RoaXM7CgkgIH0KCgkgIHJldHVybiBDdXN0b21FcnJvcjsKCX0oRXJyb3IpOwoKCXZhciBfX3NwcmVhZEFycmF5cyA9IGZ1bmN0aW9uICgpIHsKCSAgdmFyIGFyZ3VtZW50cyQxID0gYXJndW1lbnRzOwoKCSAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSB7IHMgKz0gYXJndW1lbnRzJDFbaV0ubGVuZ3RoOyB9CgoJICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspIHsgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspIHsgcltrXSA9IGFbal07IH0gfQoKCSAgcmV0dXJuIHI7Cgl9OwoJZnVuY3Rpb24gY3VzdG9tRXJyb3JGYWN0b3J5KGZuLCBwYXJlbnQpIHsKCSAgaWYgKHBhcmVudCA9PT0gdm9pZCAwKSB7CgkgICAgcGFyZW50ID0gRXJyb3I7CgkgIH0KCgkgIGZ1bmN0aW9uIEN1c3RvbUVycm9yKCkgewoJICAgIHZhciBhcmd1bWVudHMkMSA9IGFyZ3VtZW50czsKCgkgICAgdmFyIGFyZ3MgPSBbXTsKCgkgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHsKCSAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzJDFbX2ldOwoJICAgIH0KCgkgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEN1c3RvbUVycm9yKSkgeyByZXR1cm4gbmV3IChDdXN0b21FcnJvci5iaW5kLmFwcGx5KEN1c3RvbUVycm9yLCBfX3NwcmVhZEFycmF5cyhbdm9pZCAwXSwgYXJncykpKSgpOyB9CgkgICAgcGFyZW50LmFwcGx5KHRoaXMsIGFyZ3MpOwoJICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnbmFtZScsIHsKCSAgICAgIHZhbHVlOiBmbi5uYW1lIHx8IHBhcmVudC5uYW1lLAoJICAgICAgZW51bWVyYWJsZTogZmFsc2UsCgkgICAgICBjb25maWd1cmFibGU6IHRydWUKCSAgICB9KTsKCSAgICBmbi5hcHBseSh0aGlzLCBhcmdzKTsKCSAgICBmaXhTdGFjayh0aGlzLCBDdXN0b21FcnJvcik7CgkgIH0KCgkgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhDdXN0b21FcnJvciwgewoJICAgIHByb3RvdHlwZTogewoJICAgICAgdmFsdWU6IE9iamVjdC5jcmVhdGUocGFyZW50LnByb3RvdHlwZSwgewoJICAgICAgICBjb25zdHJ1Y3RvcjogewoJICAgICAgICAgIHZhbHVlOiBDdXN0b21FcnJvciwKCSAgICAgICAgICB3cml0YWJsZTogdHJ1ZSwKCSAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUKCSAgICAgICAgfQoJICAgICAgfSkKCSAgICB9CgkgIH0pOwoJfQoKCXZhciBjdXN0b21FcnJvciA9IC8qI19fUFVSRV9fKi9PYmplY3QuZnJlZXplKHsKCQlfX3Byb3RvX186IG51bGwsCgkJQ3VzdG9tRXJyb3I6IEN1c3RvbUVycm9yLAoJCWN1c3RvbUVycm9yRmFjdG9yeTogY3VzdG9tRXJyb3JGYWN0b3J5Cgl9KTsKCgl2YXIgcmVxdWlyZSQkMCA9IC8qQF9fUFVSRV9fKi9nZXRBdWdtZW50ZWROYW1lc3BhY2UoY3VzdG9tRXJyb3IpOwoKCXZhciBfX2V4dGVuZHMkaiA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShFeGNlcHRpb24kMSwgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJdmFyIHRzX2N1c3RvbV9lcnJvcl8xID0gcmVxdWlyZSQkMDsKCS8qKgoJICogQ3VzdG9tIEVycm9yIGNsYXNzIG9mIHR5cGUgRXhjZXB0aW9uLgoJICovCgl2YXIgRXhjZXB0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyRqKEV4Y2VwdGlvbiwgX3N1cGVyKTsKCSAgICAvKioKCSAgICAgKiBBbGxvd3MgRXhjZXB0aW9uIHRvIGJlIGNvbnN0cnVjdGVkIGRpcmVjdGx5CgkgICAgICogd2l0aCBzb21lIG1lc3NhZ2UgYW5kIHByb3RvdHlwZSBkZWZpbml0aW9uLgoJICAgICAqLwoJICAgIGZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlKSB7CgkgICAgICAgIGlmIChtZXNzYWdlID09PSB2b2lkIDApIHsgbWVzc2FnZSA9IHVuZGVmaW5lZDsgfQoJICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBtZXNzYWdlKSB8fCB0aGlzOwoJICAgICAgICBfdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKCSAgICAgICAgcmV0dXJuIF90aGlzOwoJICAgIH0KCSAgICBFeGNlcHRpb24ucHJvdG90eXBlLmdldEtpbmQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHZhciBleCA9IHRoaXMuY29uc3RydWN0b3I7CgkgICAgICAgIHJldHVybiBleC5raW5kOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogSXQncyB0eXBlZCBhcyBzdHJpbmcgc28gaXQgY2FuIGJlIGV4dGVuZGVkIGFuZCBvdmVycmlkZW4uCgkgICAgICovCgkgICAgRXhjZXB0aW9uLmtpbmQgPSAnRXhjZXB0aW9uJzsKCSAgICByZXR1cm4gRXhjZXB0aW9uOwoJfSh0c19jdXN0b21fZXJyb3JfMS5DdXN0b21FcnJvcikpOwoJRXhjZXB0aW9uJDEuZGVmYXVsdCA9IEV4Y2VwdGlvbjsKCgl2YXIgX19leHRlbmRzJGkgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uJDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCXZhciBFeGNlcHRpb25fMSQ5ID0gRXhjZXB0aW9uJDE7CgkvKioKCSAqIEN1c3RvbSBFcnJvciBjbGFzcyBvZiB0eXBlIEV4Y2VwdGlvbi4KCSAqLwoJdmFyIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMkaShJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCkgewoJICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7CgkgICAgfQoJICAgIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbi5raW5kID0gJ0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbic7CgkgICAgcmV0dXJuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjsKCX0oRXhjZXB0aW9uXzEkOS5kZWZhdWx0KSk7CglJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24kMS5kZWZhdWx0ID0gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uOwoKCS8qCgkgKiBDb3B5cmlnaHQgMjAwOSBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoQmluYXJ5Qml0bWFwJDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCXZhciBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSRhID0gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uJDE7Cgl2YXIgQmluYXJ5Qml0bWFwID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIEJpbmFyeUJpdG1hcChiaW5hcml6ZXIpIHsKCSAgICAgICAgdGhpcy5iaW5hcml6ZXIgPSBiaW5hcml6ZXI7CgkgICAgICAgIGlmIChiaW5hcml6ZXIgPT09IG51bGwpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSRhLmRlZmF1bHQoJ0JpbmFyaXplciBtdXN0IGJlIG5vbi1udWxsLicpOwoJICAgICAgICB9CgkgICAgfQoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gVGhlIHdpZHRoIG9mIHRoZSBiaXRtYXAuCgkgICAgICovCgkgICAgQmluYXJ5Qml0bWFwLnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuYmluYXJpemVyLmdldFdpZHRoKCk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIFRoZSBoZWlnaHQgb2YgdGhlIGJpdG1hcC4KCSAgICAgKi8KCSAgICBCaW5hcnlCaXRtYXAucHJvdG90eXBlLmdldEhlaWdodCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuYmluYXJpemVyLmdldEhlaWdodCgpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQ29udmVydHMgb25lIHJvdyBvZiBsdW1pbmFuY2UgZGF0YSB0byAxIGJpdCBkYXRhLiBNYXkgYWN0dWFsbHkgZG8gdGhlIGNvbnZlcnNpb24sIG9yIHJldHVybgoJICAgICAqIGNhY2hlZCBkYXRhLiBDYWxsZXJzIHNob3VsZCBhc3N1bWUgdGhpcyBtZXRob2QgaXMgZXhwZW5zaXZlIGFuZCBjYWxsIGl0IGFzIHNlbGRvbSBhcyBwb3NzaWJsZS4KCSAgICAgKiBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCBmb3IgZGVjb2RpbmcgMUQgYmFyY29kZXMgYW5kIG1heSBjaG9vc2UgdG8gYXBwbHkgc2hhcnBlbmluZy4KCSAgICAgKgoJICAgICAqIEBwYXJhbSB5IFRoZSByb3cgdG8gZmV0Y2gsIHdoaWNoIG11c3QgYmUgaW4gWzAsIGJpdG1hcCBoZWlnaHQpCgkgICAgICogQHBhcmFtIHJvdyBBbiBvcHRpb25hbCBwcmVhbGxvY2F0ZWQgYXJyYXkuIElmIG51bGwgb3IgdG9vIHNtYWxsLCBpdCB3aWxsIGJlIGlnbm9yZWQuCgkgICAgICogICAgICAgICAgICBJZiB1c2VkLCB0aGUgQmluYXJpemVyIHdpbGwgY2FsbCBCaXRBcnJheS5jbGVhcigpLiBBbHdheXMgdXNlIHRoZSByZXR1cm5lZCBvYmplY3QuCgkgICAgICogQHJldHVybiBUaGUgYXJyYXkgb2YgYml0cyBmb3IgdGhpcyByb3cgKHRydWUgbWVhbnMgYmxhY2spLgoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgcm93IGNhbid0IGJlIGJpbmFyaXplZAoJICAgICAqLwoJICAgIEJpbmFyeUJpdG1hcC5wcm90b3R5cGUuZ2V0QmxhY2tSb3cgPSBmdW5jdGlvbiAoeSAvKmludCovLCByb3cpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuYmluYXJpemVyLmdldEJsYWNrUm93KHksIHJvdyk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBDb252ZXJ0cyBhIDJEIGFycmF5IG9mIGx1bWluYW5jZSBkYXRhIHRvIDEgYml0LiBBcyBhYm92ZSwgYXNzdW1lIHRoaXMgbWV0aG9kIGlzIGV4cGVuc2l2ZQoJICAgICAqIGFuZCBkbyBub3QgY2FsbCBpdCByZXBlYXRlZGx5LiBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCBmb3IgZGVjb2RpbmcgMkQgYmFyY29kZXMgYW5kIG1heSBvcgoJICAgICAqIG1heSBub3QgYXBwbHkgc2hhcnBlbmluZy4gVGhlcmVmb3JlLCBhIHJvdyBmcm9tIHRoaXMgbWF0cml4IG1heSBub3QgYmUgaWRlbnRpY2FsIHRvIG9uZQoJICAgICAqIGZldGNoZWQgdXNpbmcgZ2V0QmxhY2tSb3coKSwgc28gZG9uJ3QgbWl4IGFuZCBtYXRjaCBiZXR3ZWVuIHRoZW0uCgkgICAgICoKCSAgICAgKiBAcmV0dXJuIFRoZSAyRCBhcnJheSBvZiBiaXRzIGZvciB0aGUgaW1hZ2UgKHRydWUgbWVhbnMgYmxhY2spLgoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgaW1hZ2UgY2FuJ3QgYmUgYmluYXJpemVkIHRvIG1ha2UgYSBtYXRyaXgKCSAgICAgKi8KCSAgICBCaW5hcnlCaXRtYXAucHJvdG90eXBlLmdldEJsYWNrTWF0cml4ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICAvLyBUaGUgbWF0cml4IGlzIGNyZWF0ZWQgb24gZGVtYW5kIHRoZSBmaXJzdCB0aW1lIGl0IGlzIHJlcXVlc3RlZCwgdGhlbiBjYWNoZWQuIFRoZXJlIGFyZSB0d28KCSAgICAgICAgLy8gcmVhc29ucyBmb3IgdGhpczoKCSAgICAgICAgLy8gMS4gVGhpcyB3b3JrIHdpbGwgbmV2ZXIgYmUgZG9uZSBpZiB0aGUgY2FsbGVyIG9ubHkgaW5zdGFsbHMgMUQgUmVhZGVyIG9iamVjdHMsIG9yIGlmIGEKCSAgICAgICAgLy8gICAgMUQgUmVhZGVyIGZpbmRzIGEgYmFyY29kZSBiZWZvcmUgdGhlIDJEIFJlYWRlcnMgcnVuLgoJICAgICAgICAvLyAyLiBUaGlzIHdvcmsgd2lsbCBvbmx5IGJlIGRvbmUgb25jZSBldmVuIGlmIHRoZSBjYWxsZXIgaW5zdGFsbHMgbXVsdGlwbGUgMkQgUmVhZGVycy4KCSAgICAgICAgaWYgKHRoaXMubWF0cml4ID09PSBudWxsIHx8IHRoaXMubWF0cml4ID09PSB1bmRlZmluZWQpIHsKCSAgICAgICAgICAgIHRoaXMubWF0cml4ID0gdGhpcy5iaW5hcml6ZXIuZ2V0QmxhY2tNYXRyaXgoKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdGhpcy5tYXRyaXg7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIFdoZXRoZXIgdGhpcyBiaXRtYXAgY2FuIGJlIGNyb3BwZWQuCgkgICAgICovCgkgICAgQmluYXJ5Qml0bWFwLnByb3RvdHlwZS5pc0Nyb3BTdXBwb3J0ZWQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmJpbmFyaXplci5nZXRMdW1pbmFuY2VTb3VyY2UoKS5pc0Nyb3BTdXBwb3J0ZWQoKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFJldHVybnMgYSBuZXcgb2JqZWN0IHdpdGggY3JvcHBlZCBpbWFnZSBkYXRhLiBJbXBsZW1lbnRhdGlvbnMgbWF5IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlCgkgICAgICogb3JpZ2luYWwgZGF0YSByYXRoZXIgdGhhbiBhIGNvcHkuIE9ubHkgY2FsbGFibGUgaWYgaXNDcm9wU3VwcG9ydGVkKCkgaXMgdHJ1ZS4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBsZWZ0IFRoZSBsZWZ0IGNvb3JkaW5hdGUsIHdoaWNoIG11c3QgYmUgaW4gWzAsZ2V0V2lkdGgoKSkKCSAgICAgKiBAcGFyYW0gdG9wIFRoZSB0b3AgY29vcmRpbmF0ZSwgd2hpY2ggbXVzdCBiZSBpbiBbMCxnZXRIZWlnaHQoKSkKCSAgICAgKiBAcGFyYW0gd2lkdGggVGhlIHdpZHRoIG9mIHRoZSByZWN0YW5nbGUgdG8gY3JvcC4KCSAgICAgKiBAcGFyYW0gaGVpZ2h0IFRoZSBoZWlnaHQgb2YgdGhlIHJlY3RhbmdsZSB0byBjcm9wLgoJICAgICAqIEByZXR1cm4gQSBjcm9wcGVkIHZlcnNpb24gb2YgdGhpcyBvYmplY3QuCgkgICAgICovCgkgICAgQmluYXJ5Qml0bWFwLnByb3RvdHlwZS5jcm9wID0gZnVuY3Rpb24gKGxlZnQgLyppbnQqLywgdG9wIC8qaW50Ki8sIHdpZHRoIC8qaW50Ki8sIGhlaWdodCAvKmludCovKSB7CgkgICAgICAgIHZhciBuZXdTb3VyY2UgPSB0aGlzLmJpbmFyaXplci5nZXRMdW1pbmFuY2VTb3VyY2UoKS5jcm9wKGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCk7CgkgICAgICAgIHJldHVybiBuZXcgQmluYXJ5Qml0bWFwKHRoaXMuYmluYXJpemVyLmNyZWF0ZUJpbmFyaXplcihuZXdTb3VyY2UpKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gV2hldGhlciB0aGlzIGJpdG1hcCBzdXBwb3J0cyBjb3VudGVyLWNsb2Nrd2lzZSByb3RhdGlvbi4KCSAgICAgKi8KCSAgICBCaW5hcnlCaXRtYXAucHJvdG90eXBlLmlzUm90YXRlU3VwcG9ydGVkID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5iaW5hcml6ZXIuZ2V0THVtaW5hbmNlU291cmNlKCkuaXNSb3RhdGVTdXBwb3J0ZWQoKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFJldHVybnMgYSBuZXcgb2JqZWN0IHdpdGggcm90YXRlZCBpbWFnZSBkYXRhIGJ5IDkwIGRlZ3JlZXMgY291bnRlcmNsb2Nrd2lzZS4KCSAgICAgKiBPbmx5IGNhbGxhYmxlIGlmIHtAbGluayAjaXNSb3RhdGVTdXBwb3J0ZWQoKX0gaXMgdHJ1ZS4KCSAgICAgKgoJICAgICAqIEByZXR1cm4gQSByb3RhdGVkIHZlcnNpb24gb2YgdGhpcyBvYmplY3QuCgkgICAgICovCgkgICAgQmluYXJ5Qml0bWFwLnByb3RvdHlwZS5yb3RhdGVDb3VudGVyQ2xvY2t3aXNlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgbmV3U291cmNlID0gdGhpcy5iaW5hcml6ZXIuZ2V0THVtaW5hbmNlU291cmNlKCkucm90YXRlQ291bnRlckNsb2Nrd2lzZSgpOwoJICAgICAgICByZXR1cm4gbmV3IEJpbmFyeUJpdG1hcCh0aGlzLmJpbmFyaXplci5jcmVhdGVCaW5hcml6ZXIobmV3U291cmNlKSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCB3aXRoIHJvdGF0ZWQgaW1hZ2UgZGF0YSBieSA0NSBkZWdyZWVzIGNvdW50ZXJjbG9ja3dpc2UuCgkgICAgICogT25seSBjYWxsYWJsZSBpZiB7QGxpbmsgI2lzUm90YXRlU3VwcG9ydGVkKCl9IGlzIHRydWUuCgkgICAgICoKCSAgICAgKiBAcmV0dXJuIEEgcm90YXRlZCB2ZXJzaW9uIG9mIHRoaXMgb2JqZWN0LgoJICAgICAqLwoJICAgIEJpbmFyeUJpdG1hcC5wcm90b3R5cGUucm90YXRlQ291bnRlckNsb2Nrd2lzZTQ1ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgbmV3U291cmNlID0gdGhpcy5iaW5hcml6ZXIuZ2V0THVtaW5hbmNlU291cmNlKCkucm90YXRlQ291bnRlckNsb2Nrd2lzZTQ1KCk7CgkgICAgICAgIHJldHVybiBuZXcgQmluYXJ5Qml0bWFwKHRoaXMuYmluYXJpemVyLmNyZWF0ZUJpbmFyaXplcihuZXdTb3VyY2UpKTsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBCaW5hcnlCaXRtYXAucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QmxhY2tNYXRyaXgoKS50b1N0cmluZygpOwoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlIC8qOiBOb3RGb3VuZEV4Y2VwdGlvbiovKSB7CgkgICAgICAgICAgICByZXR1cm4gJyc7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHJldHVybiBCaW5hcnlCaXRtYXA7Cgl9KCkpOwoJdmFyIF9kZWZhdWx0JDMgPSBCaW5hcnlCaXRtYXAkMS5kZWZhdWx0ID0gQmluYXJ5Qml0bWFwOwoKCXZhciBIeWJyaWRCaW5hcml6ZXIkMSA9IHt9OwoKCXZhciBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIkMSA9IHt9OwoKCXZhciBCaW5hcml6ZXIkMSA9IHt9OwoKCS8qCgkgKiBDb3B5cmlnaHQgMjAwOSBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoQmluYXJpemVyJDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qKgoJICogVGhpcyBjbGFzcyBoaWVyYXJjaHkgcHJvdmlkZXMgYSBzZXQgb2YgbWV0aG9kcyB0byBjb252ZXJ0IGx1bWluYW5jZSBkYXRhIHRvIDEgYml0IGRhdGEuCgkgKiBJdCBhbGxvd3MgdGhlIGFsZ29yaXRobSB0byB2YXJ5IHBvbHltb3JwaGljYWxseSwgZm9yIGV4YW1wbGUgYWxsb3dpbmcgYSB2ZXJ5IGV4cGVuc2l2ZQoJICogdGhyZXNob2xkaW5nIHRlY2huaXF1ZSBmb3Igc2VydmVycyBhbmQgYSBmYXN0IG9uZSBmb3IgbW9iaWxlLiBJdCBhbHNvIHBlcm1pdHMgdGhlIGltcGxlbWVudGF0aW9uCgkgKiB0byB2YXJ5LCBlLmcuIGEgSk5JIHZlcnNpb24gZm9yIEFuZHJvaWQgYW5kIGEgSmF2YSBmYWxsYmFjayB2ZXJzaW9uIGZvciBvdGhlciBwbGF0Zm9ybXMuCgkgKgoJICogQGF1dGhvciBkc3dpdGtpbkBnb29nbGUuY29tIChEYW5pZWwgU3dpdGtpbikKCSAqLwoJdmFyIEJpbmFyaXplciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBCaW5hcml6ZXIoc291cmNlKSB7CgkgICAgICAgIHRoaXMuc291cmNlID0gc291cmNlOwoJICAgIH0KCSAgICBCaW5hcml6ZXIucHJvdG90eXBlLmdldEx1bWluYW5jZVNvdXJjZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlOwoJICAgIH07CgkgICAgQmluYXJpemVyLnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlLmdldFdpZHRoKCk7CgkgICAgfTsKCSAgICBCaW5hcml6ZXIucHJvdG90eXBlLmdldEhlaWdodCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlLmdldEhlaWdodCgpOwoJICAgIH07CgkgICAgcmV0dXJuIEJpbmFyaXplcjsKCX0oKSk7CglCaW5hcml6ZXIkMS5kZWZhdWx0ID0gQmluYXJpemVyOwoKCXZhciBCaXRBcnJheSQxID0ge307CgoJdmFyIEFycmF5cyQxID0ge307CgoJdmFyIFN5c3RlbSQxID0ge307CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KFN5c3RlbSQxLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7Cgl2YXIgU3lzdGVtID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIFN5c3RlbSgpIHsKCSAgICB9CgkgICAgLy8gcHVibGljIHN0YXRpYyB2b2lkIGFycmF5Y29weShPYmplY3Qgc3JjLCBpbnQgc3JjUG9zLCBPYmplY3QgZGVzdCwgaW50IGRlc3RQb3MsIGludCBsZW5ndGgpCgkgICAgLyoqCgkgICAgICogTWFrZXMgYSBjb3B5IG9mIGEgYXJyYXkuCgkgICAgICovCgkgICAgU3lzdGVtLmFycmF5Y29weSA9IGZ1bmN0aW9uIChzcmMsIHNyY1BvcywgZGVzdCwgZGVzdFBvcywgbGVuZ3RoKSB7CgkgICAgICAgIC8vIFRPRE86IGJldHRlciB1c2Ugc3BsaXQgb3Igc2V0PwoJICAgICAgICB3aGlsZSAobGVuZ3RoLS0pIHsKCSAgICAgICAgICAgIGRlc3RbZGVzdFBvcysrXSA9IHNyY1tzcmNQb3MrK107CgkgICAgICAgIH0KCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdGltZSBpbiBtaWxsaXNlY29uZHMuCgkgICAgICovCgkgICAgU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gRGF0ZS5ub3coKTsKCSAgICB9OwoJICAgIHJldHVybiBTeXN0ZW07Cgl9KCkpOwoJU3lzdGVtJDEuZGVmYXVsdCA9IFN5c3RlbTsKCgl2YXIgQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uJDEgPSB7fTsKCgl2YXIgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiQxID0ge307CgoJdmFyIF9fZXh0ZW5kcyRoID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24kMSwgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJdmFyIEV4Y2VwdGlvbl8xJDggPSBFeGNlcHRpb24kMTsKCS8qKgoJICogQ3VzdG9tIEVycm9yIGNsYXNzIG9mIHR5cGUgRXhjZXB0aW9uLgoJICovCgl2YXIgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMkaChJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLCBfc3VwZXIpOwoJICAgIGZ1bmN0aW9uIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24oKSB7CgkgICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpczsKCSAgICB9CgkgICAgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbi5raW5kID0gJ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24nOwoJICAgIHJldHVybiBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uOwoJfShFeGNlcHRpb25fMSQ4LmRlZmF1bHQpKTsKCUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24kMS5kZWZhdWx0ID0gSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbjsKCgl2YXIgX19leHRlbmRzJGcgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uJDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCXZhciBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uXzEgPSBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uJDE7CgkvKioKCSAqIEN1c3RvbSBFcnJvciBjbGFzcyBvZiB0eXBlIEV4Y2VwdGlvbi4KCSAqLwoJdmFyIEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMkZyhBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24sIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKGluZGV4LCBtZXNzYWdlKSB7CgkgICAgICAgIGlmIChpbmRleCA9PT0gdm9pZCAwKSB7IGluZGV4ID0gdW5kZWZpbmVkOyB9CgkgICAgICAgIGlmIChtZXNzYWdlID09PSB2b2lkIDApIHsgbWVzc2FnZSA9IHVuZGVmaW5lZDsgfQoJICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBtZXNzYWdlKSB8fCB0aGlzOwoJICAgICAgICBfdGhpcy5pbmRleCA9IGluZGV4OwoJICAgICAgICBfdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKCSAgICAgICAgcmV0dXJuIF90aGlzOwoJICAgIH0KCSAgICBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24ua2luZCA9ICdBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24nOwoJICAgIHJldHVybiBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb247Cgl9KEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb25fMS5kZWZhdWx0KSk7CglBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24kMS5kZWZhdWx0ID0gQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uOwoKCXZhciBfX3ZhbHVlcyQ3ID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7CgkgICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7CgkgICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7CgkgICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSAibnVtYmVyIikgcmV0dXJuIHsKCSAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDsKCSAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gIk9iamVjdCBpcyBub3QgaXRlcmFibGUuIiA6ICJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7Cgl9OwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5cyQxLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7Cgl2YXIgU3lzdGVtXzEkNSA9IFN5c3RlbSQxOwoJdmFyIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xJDkgPSBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24kMTsKCXZhciBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb25fMSA9IEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiQxOwoJdmFyIEFycmF5cyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBBcnJheXMoKSB7CgkgICAgfQoJICAgIC8qKgoJICAgICAqIEFzc2lnbnMgdGhlIHNwZWNpZmllZCBpbnQgdmFsdWUgdG8gZWFjaCBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQgYXJyYXkKCSAgICAgKiBvZiBpbnRzLgoJICAgICAqCgkgICAgICogQHBhcmFtIGEgdGhlIGFycmF5IHRvIGJlIGZpbGxlZAoJICAgICAqIEBwYXJhbSB2YWwgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiBhbGwgZWxlbWVudHMgb2YgdGhlIGFycmF5CgkgICAgICovCgkgICAgQXJyYXlzLmZpbGwgPSBmdW5jdGlvbiAoYSwgdmFsKSB7CgkgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhLmxlbmd0aDsgaSA8IGxlbjsgaSsrKQoJICAgICAgICAgICAgYVtpXSA9IHZhbDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEFzc2lnbnMgdGhlIHNwZWNpZmllZCBpbnQgdmFsdWUgdG8gZWFjaCBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQKCSAgICAgKiByYW5nZSBvZiB0aGUgc3BlY2lmaWVkIGFycmF5IG9mIGludHMuICBUaGUgcmFuZ2UgdG8gYmUgZmlsbGVkCgkgICAgICogZXh0ZW5kcyBmcm9tIGluZGV4IHtAY29kZSBmcm9tSW5kZXh9LCBpbmNsdXNpdmUsIHRvIGluZGV4CgkgICAgICoge0Bjb2RlIHRvSW5kZXh9LCBleGNsdXNpdmUuICAoSWYge0Bjb2RlIGZyb21JbmRleD09dG9JbmRleH0sIHRoZQoJICAgICAqIHJhbmdlIHRvIGJlIGZpbGxlZCBpcyBlbXB0eS4pCgkgICAgICoKCSAgICAgKiBAcGFyYW0gYSB0aGUgYXJyYXkgdG8gYmUgZmlsbGVkCgkgICAgICogQHBhcmFtIGZyb21JbmRleCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGVsZW1lbnQgKGluY2x1c2l2ZSkgdG8gYmUKCSAgICAgKiAgICAgICAgZmlsbGVkIHdpdGggdGhlIHNwZWNpZmllZCB2YWx1ZQoJICAgICAqIEBwYXJhbSB0b0luZGV4IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBlbGVtZW50IChleGNsdXNpdmUpIHRvIGJlCgkgICAgICogICAgICAgIGZpbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgdmFsdWUKCSAgICAgKiBAcGFyYW0gdmFsIHRoZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gYWxsIGVsZW1lbnRzIG9mIHRoZSBhcnJheQoJICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHtAY29kZSBmcm9tSW5kZXggPiB0b0luZGV4fQoJICAgICAqIEB0aHJvd3MgQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGlmIHtAY29kZSBmcm9tSW5kZXggPCAwfSBvcgoJICAgICAqICAgICAgICAge0Bjb2RlIHRvSW5kZXggPiBhLmxlbmd0aH0KCSAgICAgKi8KCSAgICBBcnJheXMuZmlsbFdpdGhpbiA9IGZ1bmN0aW9uIChhLCBmcm9tSW5kZXgsIHRvSW5kZXgsIHZhbCkgewoJICAgICAgICBBcnJheXMucmFuZ2VDaGVjayhhLmxlbmd0aCwgZnJvbUluZGV4LCB0b0luZGV4KTsKCSAgICAgICAgZm9yICh2YXIgaSA9IGZyb21JbmRleDsgaSA8IHRvSW5kZXg7IGkrKykKCSAgICAgICAgICAgIGFbaV0gPSB2YWw7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBDaGVja3MgdGhhdCB7QGNvZGUgZnJvbUluZGV4fSBhbmQge0Bjb2RlIHRvSW5kZXh9IGFyZSBpbgoJICAgICAqIHRoZSByYW5nZSBhbmQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiB0aGV5IGFyZW4ndC4KCSAgICAgKi8KCSAgICBBcnJheXMucmFuZ2VDaGVjayA9IGZ1bmN0aW9uIChhcnJheUxlbmd0aCwgZnJvbUluZGV4LCB0b0luZGV4KSB7CgkgICAgICAgIGlmIChmcm9tSW5kZXggPiB0b0luZGV4KSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEkOS5kZWZhdWx0KCdmcm9tSW5kZXgoJyArIGZyb21JbmRleCArICcpID4gdG9JbmRleCgnICsgdG9JbmRleCArICcpJyk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGZyb21JbmRleCA8IDApIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb25fMS5kZWZhdWx0KGZyb21JbmRleCk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHRvSW5kZXggPiBhcnJheUxlbmd0aCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbl8xLmRlZmF1bHQodG9JbmRleCk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIEFycmF5cy5hc0xpc3QgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHZhciBhcmdzID0gW107CgkgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7CgkgICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGFyZ3M7CgkgICAgfTsKCSAgICBBcnJheXMuY3JlYXRlID0gZnVuY3Rpb24gKHJvd3MsIGNvbHMsIHZhbHVlKSB7CgkgICAgICAgIHZhciBhcnIgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiByb3dzIH0pOwoJICAgICAgICByZXR1cm4gYXJyLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogY29scyB9KS5maWxsKHZhbHVlKTsgfSk7CgkgICAgfTsKCSAgICBBcnJheXMuY3JlYXRlSW50MzJBcnJheSA9IGZ1bmN0aW9uIChyb3dzLCBjb2xzLCB2YWx1ZSkgewoJICAgICAgICB2YXIgYXJyID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogcm93cyB9KTsKCSAgICAgICAgcmV0dXJuIGFyci5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIEludDMyQXJyYXkuZnJvbSh7IGxlbmd0aDogY29scyB9KS5maWxsKHZhbHVlKTsgfSk7CgkgICAgfTsKCSAgICBBcnJheXMuZXF1YWxzID0gZnVuY3Rpb24gKGZpcnN0LCBzZWNvbmQpIHsKCSAgICAgICAgaWYgKCFmaXJzdCkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIGlmICghc2Vjb25kKSB7CgkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKCFmaXJzdC5sZW5ndGgpIHsKCSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoIXNlY29uZC5sZW5ndGgpIHsKCSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoZmlyc3QubGVuZ3RoICE9PSBzZWNvbmQubGVuZ3RoKSB7CgkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgIH0KCSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aF8xID0gZmlyc3QubGVuZ3RoOyBpIDwgbGVuZ3RoXzE7IGkrKykgewoJICAgICAgICAgICAgaWYgKGZpcnN0W2ldICE9PSBzZWNvbmRbaV0pIHsKCSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRydWU7CgkgICAgfTsKCSAgICBBcnJheXMuaGFzaENvZGUgPSBmdW5jdGlvbiAoYSkgewoJICAgICAgICB2YXIgZV8xLCBfYTsKCSAgICAgICAgaWYgKGEgPT09IG51bGwpIHsKCSAgICAgICAgICAgIHJldHVybiAwOwoJICAgICAgICB9CgkgICAgICAgIHZhciByZXN1bHQgPSAxOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgYV8xID0gX192YWx1ZXMkNyhhKSwgYV8xXzEgPSBhXzEubmV4dCgpOyAhYV8xXzEuZG9uZTsgYV8xXzEgPSBhXzEubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBhXzFfMS52YWx1ZTsKCSAgICAgICAgICAgICAgICByZXN1bHQgPSAzMSAqIHJlc3VsdCArIGVsZW1lbnQ7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChhXzFfMSAmJiAhYV8xXzEuZG9uZSAmJiAoX2EgPSBhXzEucmV0dXJuKSkgX2EuY2FsbChhXzEpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByZXN1bHQ7CgkgICAgfTsKCSAgICBBcnJheXMuZmlsbFVpbnQ4QXJyYXkgPSBmdW5jdGlvbiAoYSwgdmFsdWUpIHsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgIT09IGEubGVuZ3RoOyBpKyspIHsKCSAgICAgICAgICAgIGFbaV0gPSB2YWx1ZTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgQXJyYXlzLmNvcHlPZiA9IGZ1bmN0aW9uIChvcmlnaW5hbCwgbmV3TGVuZ3RoKSB7CgkgICAgICAgIHJldHVybiBvcmlnaW5hbC5zbGljZSgwLCBuZXdMZW5ndGgpOwoJICAgIH07CgkgICAgQXJyYXlzLmNvcHlPZlVpbnQ4QXJyYXkgPSBmdW5jdGlvbiAob3JpZ2luYWwsIG5ld0xlbmd0aCkgewoJICAgICAgICBpZiAob3JpZ2luYWwubGVuZ3RoIDw9IG5ld0xlbmd0aCkgewoJICAgICAgICAgICAgdmFyIG5ld0FycmF5ID0gbmV3IFVpbnQ4QXJyYXkobmV3TGVuZ3RoKTsKCSAgICAgICAgICAgIG5ld0FycmF5LnNldChvcmlnaW5hbCk7CgkgICAgICAgICAgICByZXR1cm4gbmV3QXJyYXk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG9yaWdpbmFsLnNsaWNlKDAsIG5ld0xlbmd0aCk7CgkgICAgfTsKCSAgICBBcnJheXMuY29weU9mUmFuZ2UgPSBmdW5jdGlvbiAob3JpZ2luYWwsIGZyb20sIHRvKSB7CgkgICAgICAgIHZhciBuZXdMZW5ndGggPSB0byAtIGZyb207CgkgICAgICAgIHZhciBjb3B5ID0gbmV3IEludDMyQXJyYXkobmV3TGVuZ3RoKTsKCSAgICAgICAgU3lzdGVtXzEkNS5kZWZhdWx0LmFycmF5Y29weShvcmlnaW5hbCwgZnJvbSwgY29weSwgMCwgbmV3TGVuZ3RoKTsKCSAgICAgICAgcmV0dXJuIGNvcHk7CgkgICAgfTsKCSAgICAvKgoJICAgICogUmV0dXJucyB0aGUgaW5kZXggb2Ygb2YgdGhlIGVsZW1lbnQgaW4gYSBzb3J0ZWQgYXJyYXkgb3IgKC1uLTEpIHdoZXJlIG4gaXMgdGhlIGluc2VydGlvbiBwb2ludAoJICAgICogZm9yIHRoZSBuZXcgZWxlbWVudC4KCSAgICAqIFBhcmFtZXRlcnM6CgkgICAgKiAgICAgYXIgLSBBIHNvcnRlZCBhcnJheQoJICAgICogICAgIGVsIC0gQW4gZWxlbWVudCB0byBzZWFyY2ggZm9yCgkgICAgKiAgICAgY29tcGFyYXRvciAtIEEgY29tcGFyYXRvciBmdW5jdGlvbi4gVGhlIGZ1bmN0aW9uIHRha2VzIHR3byBhcmd1bWVudHM6IChhLCBiKSBhbmQgcmV0dXJuczoKCSAgICAqICAgICAgICBhIG5lZ2F0aXZlIG51bWJlciAgaWYgYSBpcyBsZXNzIHRoYW4gYjsKCSAgICAqICAgICAgICAwIGlmIGEgaXMgZXF1YWwgdG8gYjsKCSAgICAqICAgICAgICBhIHBvc2l0aXZlIG51bWJlciBvZiBhIGlzIGdyZWF0ZXIgdGhhbiBiLgoJICAgICogVGhlIGFycmF5IG1heSBjb250YWluIGR1cGxpY2F0ZSBlbGVtZW50cy4gSWYgdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUgZXF1YWwgZWxlbWVudHMgaW4gdGhlIGFycmF5LAoJICAgICogdGhlIHJldHVybmVkIHZhbHVlIGNhbiBiZSB0aGUgaW5kZXggb2YgYW55IG9uZSBvZiB0aGUgZXF1YWwgZWxlbWVudHMuCgkgICAgKgoJICAgICogaHR0cDovL2pzZmlkZGxlLm5ldC9hcnl6aG92L3BrZnN0NTUwLwoJICAgICovCgkgICAgQXJyYXlzLmJpbmFyeVNlYXJjaCA9IGZ1bmN0aW9uIChhciwgZWwsIGNvbXBhcmF0b3IpIHsKCSAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gY29tcGFyYXRvcikgewoJICAgICAgICAgICAgY29tcGFyYXRvciA9IEFycmF5cy5udW1iZXJDb21wYXJhdG9yOwoJICAgICAgICB9CgkgICAgICAgIHZhciBtID0gMDsKCSAgICAgICAgdmFyIG4gPSBhci5sZW5ndGggLSAxOwoJICAgICAgICB3aGlsZSAobSA8PSBuKSB7CgkgICAgICAgICAgICB2YXIgayA9IChuICsgbSkgPj4gMTsKCSAgICAgICAgICAgIHZhciBjbXAgPSBjb21wYXJhdG9yKGVsLCBhcltrXSk7CgkgICAgICAgICAgICBpZiAoY21wID4gMCkgewoJICAgICAgICAgICAgICAgIG0gPSBrICsgMTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgaWYgKGNtcCA8IDApIHsKCSAgICAgICAgICAgICAgICBuID0gayAtIDE7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICByZXR1cm4gazsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gLW0gLSAxOwoJICAgIH07CgkgICAgQXJyYXlzLm51bWJlckNvbXBhcmF0b3IgPSBmdW5jdGlvbiAoYSwgYikgewoJICAgICAgICByZXR1cm4gYSAtIGI7CgkgICAgfTsKCSAgICByZXR1cm4gQXJyYXlzOwoJfSgpKTsKCUFycmF5cyQxLmRlZmF1bHQgPSBBcnJheXM7CgoJdmFyIEludGVnZXIkMSA9IHt9OwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShJbnRlZ2VyJDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qKgoJICogUG9ueWZpbGwgZm9yIEphdmEncyBJbnRlZ2VyIGNsYXNzLgoJICovCgl2YXIgSW50ZWdlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBJbnRlZ2VyKCkgewoJICAgIH0KCSAgICBJbnRlZ2VyLm51bWJlck9mVHJhaWxpbmdaZXJvcyA9IGZ1bmN0aW9uIChpKSB7CgkgICAgICAgIHZhciB5OwoJICAgICAgICBpZiAoaSA9PT0gMCkKCSAgICAgICAgICAgIHJldHVybiAzMjsKCSAgICAgICAgdmFyIG4gPSAzMTsKCSAgICAgICAgeSA9IGkgPDwgMTY7CgkgICAgICAgIGlmICh5ICE9PSAwKSB7CgkgICAgICAgICAgICBuIC09IDE2OwoJICAgICAgICAgICAgaSA9IHk7CgkgICAgICAgIH0KCSAgICAgICAgeSA9IGkgPDwgODsKCSAgICAgICAgaWYgKHkgIT09IDApIHsKCSAgICAgICAgICAgIG4gLT0gODsKCSAgICAgICAgICAgIGkgPSB5OwoJICAgICAgICB9CgkgICAgICAgIHkgPSBpIDw8IDQ7CgkgICAgICAgIGlmICh5ICE9PSAwKSB7CgkgICAgICAgICAgICBuIC09IDQ7CgkgICAgICAgICAgICBpID0geTsKCSAgICAgICAgfQoJICAgICAgICB5ID0gaSA8PCAyOwoJICAgICAgICBpZiAoeSAhPT0gMCkgewoJICAgICAgICAgICAgbiAtPSAyOwoJICAgICAgICAgICAgaSA9IHk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG4gLSAoKGkgPDwgMSkgPj4+IDMxKTsKCSAgICB9OwoJICAgIEludGVnZXIubnVtYmVyT2ZMZWFkaW5nWmVyb3MgPSBmdW5jdGlvbiAoaSkgewoJICAgICAgICAvLyBIRCwgRmlndXJlIDUtNgoJICAgICAgICBpZiAoaSA9PT0gMCkgewoJICAgICAgICAgICAgcmV0dXJuIDMyOwoJICAgICAgICB9CgkgICAgICAgIHZhciBuID0gMTsKCSAgICAgICAgaWYgKGkgPj4+IDE2ID09PSAwKSB7CgkgICAgICAgICAgICBuICs9IDE2OwoJICAgICAgICAgICAgaSA8PD0gMTY7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGkgPj4+IDI0ID09PSAwKSB7CgkgICAgICAgICAgICBuICs9IDg7CgkgICAgICAgICAgICBpIDw8PSA4OwoJICAgICAgICB9CgkgICAgICAgIGlmIChpID4+PiAyOCA9PT0gMCkgewoJICAgICAgICAgICAgbiArPSA0OwoJICAgICAgICAgICAgaSA8PD0gNDsKCSAgICAgICAgfQoJICAgICAgICBpZiAoaSA+Pj4gMzAgPT09IDApIHsKCSAgICAgICAgICAgIG4gKz0gMjsKCSAgICAgICAgICAgIGkgPDw9IDI7CgkgICAgICAgIH0KCSAgICAgICAgbiAtPSBpID4+PiAzMTsKCSAgICAgICAgcmV0dXJuIG47CgkgICAgfTsKCSAgICBJbnRlZ2VyLnRvSGV4U3RyaW5nID0gZnVuY3Rpb24gKGkpIHsKCSAgICAgICAgcmV0dXJuIGkudG9TdHJpbmcoMTYpOwoJICAgIH07CgkgICAgSW50ZWdlci50b0JpbmFyeVN0cmluZyA9IGZ1bmN0aW9uIChpbnROdW1iZXIpIHsKCSAgICAgICAgcmV0dXJuIFN0cmluZyhwYXJzZUludChTdHJpbmcoaW50TnVtYmVyKSwgMikpOwoJICAgIH07CgkgICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIG9uZS1iaXRzIGluIHRoZSB0d28ncyBjb21wbGVtZW50IGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3BlY2lmaWVkIGludCB2YWx1ZS4gVGhpcyBmdW5jdGlvbiBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgdGhlIHBvcHVsYXRpb24gY291bnQuCgkgICAgLy8gUmV0dXJuczoKCSAgICAvLyB0aGUgbnVtYmVyIG9mIG9uZS1iaXRzIGluIHRoZSB0d28ncyBjb21wbGVtZW50IGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3BlY2lmaWVkIGludCB2YWx1ZS4KCSAgICBJbnRlZ2VyLmJpdENvdW50ID0gZnVuY3Rpb24gKGkpIHsKCSAgICAgICAgLy8gSEQsIEZpZ3VyZSA1LTIKCSAgICAgICAgaSA9IGkgLSAoKGkgPj4+IDEpICYgMHg1NTU1NTU1NSk7CgkgICAgICAgIGkgPSAoaSAmIDB4MzMzMzMzMzMpICsgKChpID4+PiAyKSAmIDB4MzMzMzMzMzMpOwoJICAgICAgICBpID0gKGkgKyAoaSA+Pj4gNCkpICYgMHgwZjBmMGYwZjsKCSAgICAgICAgaSA9IGkgKyAoaSA+Pj4gOCk7CgkgICAgICAgIGkgPSBpICsgKGkgPj4+IDE2KTsKCSAgICAgICAgcmV0dXJuIGkgJiAweDNmOwoJICAgIH07CgkgICAgSW50ZWdlci50cnVuY0RpdmlzaW9uID0gZnVuY3Rpb24gKGRpdmlkZW5kLCBkaXZpc29yKSB7CgkgICAgICAgIHJldHVybiBNYXRoLnRydW5jKGRpdmlkZW5kIC8gZGl2aXNvcik7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBDb252ZXJ0cyBBIHN0cmluZyB0byBhbiBpbnRlZ2VyLgoJICAgICAqIEBwYXJhbSBzIEEgc3RyaW5nIHRvIGNvbnZlcnQgaW50byBhIG51bWJlci4KCSAgICAgKiBAcGFyYW0gcmFkaXggQSB2YWx1ZSBiZXR3ZWVuIDIgYW5kIDM2IHRoYXQgc3BlY2lmaWVzIHRoZSBiYXNlIG9mIHRoZSBudW1iZXIgaW4gbnVtU3RyaW5nLiBJZiB0aGlzIGFyZ3VtZW50IGlzIG5vdCBzdXBwbGllZCwgc3RyaW5ncyB3aXRoIGEgcHJlZml4IG9mICcweCcgYXJlIGNvbnNpZGVyZWQgaGV4YWRlY2ltYWwuIEFsbCBvdGhlciBzdHJpbmdzIGFyZSBjb25zaWRlcmVkIGRlY2ltYWwuCgkgICAgICovCgkgICAgSW50ZWdlci5wYXJzZUludCA9IGZ1bmN0aW9uIChudW0sIHJhZGl4KSB7CgkgICAgICAgIGlmIChyYWRpeCA9PT0gdm9pZCAwKSB7IHJhZGl4ID0gdW5kZWZpbmVkOyB9CgkgICAgICAgIHJldHVybiBwYXJzZUludChudW0sIHJhZGl4KTsKCSAgICB9OwoJICAgIEludGVnZXIuTUlOX1ZBTFVFXzMyX0JJVFMgPSAtMjE0NzQ4MzY0ODsKCSAgICBJbnRlZ2VyLk1BWF9WQUxVRSA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSOwoJICAgIHJldHVybiBJbnRlZ2VyOwoJfSgpKTsKCUludGVnZXIkMS5kZWZhdWx0ID0gSW50ZWdlcjsKCgkvKgoJICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KEJpdEFycmF5JDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcuY29tbW9uIHsqLwoJLyppbXBvcnQgamF2YS51dGlsLkFycmF5czsqLwoJdmFyIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xJDggPSBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24kMTsKCXZhciBBcnJheXNfMSQxID0gQXJyYXlzJDE7Cgl2YXIgSW50ZWdlcl8xJDIgPSBJbnRlZ2VyJDE7Cgl2YXIgU3lzdGVtXzEkNCA9IFN5c3RlbSQxOwoJLyoqCgkgKiA8cD5BIHNpbXBsZSwgZmFzdCBhcnJheSBvZiBiaXRzLCByZXByZXNlbnRlZCBjb21wYWN0bHkgYnkgYW4gYXJyYXkgb2YgaW50cyBpbnRlcm5hbGx5LjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgQml0QXJyYXkgLyppbXBsZW1lbnRzIENsb25lYWJsZSovID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIC8vIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHsKCSAgICAvLyAgIHRoaXMuc2l6ZSA9IDAKCSAgICAvLyAgIHRoaXMuYml0cyA9IG5ldyBJbnQzMkFycmF5KDEpCgkgICAgLy8gfQoJICAgIC8vIHB1YmxpYyBjb25zdHJ1Y3RvcihzaXplPzogbnVtYmVyIC8qaW50Ki8pIHsKCSAgICAvLyAgIGlmICh1bmRlZmluZWQgPT09IHNpemUpIHsKCSAgICAvLyAgICAgdGhpcy5zaXplID0gMAoJICAgIC8vICAgfSBlbHNlIHsKCSAgICAvLyAgICAgdGhpcy5zaXplID0gc2l6ZQoJICAgIC8vICAgfQoJICAgIC8vICAgdGhpcy5iaXRzID0gdGhpcy5tYWtlQXJyYXkoc2l6ZSkKCSAgICAvLyB9CgkgICAgLy8gRm9yIHRlc3Rpbmcgb25seQoJICAgIGZ1bmN0aW9uIEJpdEFycmF5KHNpemUgLyppbnQqLywgYml0cykgewoJICAgICAgICBpZiAodW5kZWZpbmVkID09PSBzaXplKSB7CgkgICAgICAgICAgICB0aGlzLnNpemUgPSAwOwoJICAgICAgICAgICAgdGhpcy5iaXRzID0gbmV3IEludDMyQXJyYXkoMSk7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICB0aGlzLnNpemUgPSBzaXplOwoJICAgICAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gYml0cyB8fCBudWxsID09PSBiaXRzKSB7CgkgICAgICAgICAgICAgICAgdGhpcy5iaXRzID0gQml0QXJyYXkubWFrZUFycmF5KHNpemUpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgdGhpcy5iaXRzID0gYml0czsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgIH0KCSAgICBCaXRBcnJheS5wcm90b3R5cGUuZ2V0U2l6ZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZTsKCSAgICB9OwoJICAgIEJpdEFycmF5LnByb3RvdHlwZS5nZXRTaXplSW5CeXRlcyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoKHRoaXMuc2l6ZSArIDcpIC8gOCk7CgkgICAgfTsKCSAgICBCaXRBcnJheS5wcm90b3R5cGUuZW5zdXJlQ2FwYWNpdHkgPSBmdW5jdGlvbiAoc2l6ZSAvKmludCovKSB7CgkgICAgICAgIGlmIChzaXplID4gdGhpcy5iaXRzLmxlbmd0aCAqIDMyKSB7CgkgICAgICAgICAgICB2YXIgbmV3Qml0cyA9IEJpdEFycmF5Lm1ha2VBcnJheShzaXplKTsKCSAgICAgICAgICAgIFN5c3RlbV8xJDQuZGVmYXVsdC5hcnJheWNvcHkodGhpcy5iaXRzLCAwLCBuZXdCaXRzLCAwLCB0aGlzLmJpdHMubGVuZ3RoKTsKCSAgICAgICAgICAgIHRoaXMuYml0cyA9IG5ld0JpdHM7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEBwYXJhbSBpIGJpdCB0byBnZXQKCSAgICAgKiBAcmV0dXJuIHRydWUgaWZmIGJpdCBpIGlzIHNldAoJICAgICAqLwoJICAgIEJpdEFycmF5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoaSAvKmludCovKSB7CgkgICAgICAgIHJldHVybiAodGhpcy5iaXRzW01hdGguZmxvb3IoaSAvIDMyKV0gJiAoMSA8PCAoaSAmIDB4MUYpKSkgIT09IDA7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBTZXRzIGJpdCBpLgoJICAgICAqCgkgICAgICogQHBhcmFtIGkgYml0IHRvIHNldAoJICAgICAqLwoJICAgIEJpdEFycmF5LnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoaSAvKmludCovKSB7CgkgICAgICAgIHRoaXMuYml0c1tNYXRoLmZsb29yKGkgLyAzMildIHw9IDEgPDwgKGkgJiAweDFGKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEZsaXBzIGJpdCBpLgoJICAgICAqCgkgICAgICogQHBhcmFtIGkgYml0IHRvIHNldAoJICAgICAqLwoJICAgIEJpdEFycmF5LnByb3RvdHlwZS5mbGlwID0gZnVuY3Rpb24gKGkgLyppbnQqLykgewoJICAgICAgICB0aGlzLmJpdHNbTWF0aC5mbG9vcihpIC8gMzIpXSBePSAxIDw8IChpICYgMHgxRik7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcGFyYW0gZnJvbSBmaXJzdCBiaXQgdG8gY2hlY2sKCSAgICAgKiBAcmV0dXJuIGluZGV4IG9mIGZpcnN0IGJpdCB0aGF0IGlzIHNldCwgc3RhcnRpbmcgZnJvbSB0aGUgZ2l2ZW4gaW5kZXgsIG9yIHNpemUgaWYgbm9uZSBhcmUgc2V0CgkgICAgICogIGF0IG9yIGJleW9uZCB0aGlzIGdpdmVuIGluZGV4CgkgICAgICogQHNlZSAjZ2V0TmV4dFVuc2V0KGludCkKCSAgICAgKi8KCSAgICBCaXRBcnJheS5wcm90b3R5cGUuZ2V0TmV4dFNldCA9IGZ1bmN0aW9uIChmcm9tIC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIHNpemUgPSB0aGlzLnNpemU7CgkgICAgICAgIGlmIChmcm9tID49IHNpemUpIHsKCSAgICAgICAgICAgIHJldHVybiBzaXplOwoJICAgICAgICB9CgkgICAgICAgIHZhciBiaXRzID0gdGhpcy5iaXRzOwoJICAgICAgICB2YXIgYml0c09mZnNldCA9IE1hdGguZmxvb3IoZnJvbSAvIDMyKTsKCSAgICAgICAgdmFyIGN1cnJlbnRCaXRzID0gYml0c1tiaXRzT2Zmc2V0XTsKCSAgICAgICAgLy8gbWFzayBvZmYgbGVzc2VyIGJpdHMgZmlyc3QKCSAgICAgICAgY3VycmVudEJpdHMgJj0gfigoMSA8PCAoZnJvbSAmIDB4MUYpKSAtIDEpOwoJICAgICAgICB2YXIgbGVuZ3RoID0gYml0cy5sZW5ndGg7CgkgICAgICAgIHdoaWxlIChjdXJyZW50Qml0cyA9PT0gMCkgewoJICAgICAgICAgICAgaWYgKCsrYml0c09mZnNldCA9PT0gbGVuZ3RoKSB7CgkgICAgICAgICAgICAgICAgcmV0dXJuIHNpemU7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBjdXJyZW50Qml0cyA9IGJpdHNbYml0c09mZnNldF07CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHJlc3VsdCA9IChiaXRzT2Zmc2V0ICogMzIpICsgSW50ZWdlcl8xJDIuZGVmYXVsdC5udW1iZXJPZlRyYWlsaW5nWmVyb3MoY3VycmVudEJpdHMpOwoJICAgICAgICByZXR1cm4gcmVzdWx0ID4gc2l6ZSA/IHNpemUgOiByZXN1bHQ7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcGFyYW0gZnJvbSBpbmRleCB0byBzdGFydCBsb29raW5nIGZvciB1bnNldCBiaXQKCSAgICAgKiBAcmV0dXJuIGluZGV4IG9mIG5leHQgdW5zZXQgYml0LCBvciB7QGNvZGUgc2l6ZX0gaWYgbm9uZSBhcmUgdW5zZXQgdW50aWwgdGhlIGVuZAoJICAgICAqIEBzZWUgI2dldE5leHRTZXQoaW50KQoJICAgICAqLwoJICAgIEJpdEFycmF5LnByb3RvdHlwZS5nZXROZXh0VW5zZXQgPSBmdW5jdGlvbiAoZnJvbSAvKmludCovKSB7CgkgICAgICAgIHZhciBzaXplID0gdGhpcy5zaXplOwoJICAgICAgICBpZiAoZnJvbSA+PSBzaXplKSB7CgkgICAgICAgICAgICByZXR1cm4gc2l6ZTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgYml0cyA9IHRoaXMuYml0czsKCSAgICAgICAgdmFyIGJpdHNPZmZzZXQgPSBNYXRoLmZsb29yKGZyb20gLyAzMik7CgkgICAgICAgIHZhciBjdXJyZW50Qml0cyA9IH5iaXRzW2JpdHNPZmZzZXRdOwoJICAgICAgICAvLyBtYXNrIG9mZiBsZXNzZXIgYml0cyBmaXJzdAoJICAgICAgICBjdXJyZW50Qml0cyAmPSB+KCgxIDw8IChmcm9tICYgMHgxRikpIC0gMSk7CgkgICAgICAgIHZhciBsZW5ndGggPSBiaXRzLmxlbmd0aDsKCSAgICAgICAgd2hpbGUgKGN1cnJlbnRCaXRzID09PSAwKSB7CgkgICAgICAgICAgICBpZiAoKytiaXRzT2Zmc2V0ID09PSBsZW5ndGgpIHsKCSAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGN1cnJlbnRCaXRzID0gfmJpdHNbYml0c09mZnNldF07CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHJlc3VsdCA9IChiaXRzT2Zmc2V0ICogMzIpICsgSW50ZWdlcl8xJDIuZGVmYXVsdC5udW1iZXJPZlRyYWlsaW5nWmVyb3MoY3VycmVudEJpdHMpOwoJICAgICAgICByZXR1cm4gcmVzdWx0ID4gc2l6ZSA/IHNpemUgOiByZXN1bHQ7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBTZXRzIGEgYmxvY2sgb2YgMzIgYml0cywgc3RhcnRpbmcgYXQgYml0IGkuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gaSBmaXJzdCBiaXQgdG8gc2V0CgkgICAgICogQHBhcmFtIG5ld0JpdHMgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgbmV4dCAzMiBiaXRzLiBOb3RlIGFnYWluIHRoYXQgdGhlIGxlYXN0LXNpZ25pZmljYW50IGJpdAoJICAgICAqIGNvcnJlc3BvbmRzIHRvIGJpdCBpLCB0aGUgbmV4dC1sZWFzdC1zaWduaWZpY2FudCB0byBpKzEsIGFuZCBzbyBvbi4KCSAgICAgKi8KCSAgICBCaXRBcnJheS5wcm90b3R5cGUuc2V0QnVsayA9IGZ1bmN0aW9uIChpIC8qaW50Ki8sIG5ld0JpdHMgLyppbnQqLykgewoJICAgICAgICB0aGlzLmJpdHNbTWF0aC5mbG9vcihpIC8gMzIpXSA9IG5ld0JpdHM7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBTZXRzIGEgcmFuZ2Ugb2YgYml0cy4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBzdGFydCBzdGFydCBvZiByYW5nZSwgaW5jbHVzaXZlLgoJICAgICAqIEBwYXJhbSBlbmQgZW5kIG9mIHJhbmdlLCBleGNsdXNpdmUKCSAgICAgKi8KCSAgICBCaXRBcnJheS5wcm90b3R5cGUuc2V0UmFuZ2UgPSBmdW5jdGlvbiAoc3RhcnQgLyppbnQqLywgZW5kIC8qaW50Ki8pIHsKCSAgICAgICAgaWYgKGVuZCA8IHN0YXJ0IHx8IHN0YXJ0IDwgMCB8fCBlbmQgPiB0aGlzLnNpemUpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSQ4LmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoZW5kID09PSBzdGFydCkgewoJICAgICAgICAgICAgcmV0dXJuOwoJICAgICAgICB9CgkgICAgICAgIGVuZC0tOyAvLyB3aWxsIGJlIGVhc2llciB0byB0cmVhdCB0aGlzIGFzIHRoZSBsYXN0IGFjdHVhbGx5IHNldCBiaXQgLS0gaW5jbHVzaXZlCgkgICAgICAgIHZhciBmaXJzdEludCA9IE1hdGguZmxvb3Ioc3RhcnQgLyAzMik7CgkgICAgICAgIHZhciBsYXN0SW50ID0gTWF0aC5mbG9vcihlbmQgLyAzMik7CgkgICAgICAgIHZhciBiaXRzID0gdGhpcy5iaXRzOwoJICAgICAgICBmb3IgKHZhciBpID0gZmlyc3RJbnQ7IGkgPD0gbGFzdEludDsgaSsrKSB7CgkgICAgICAgICAgICB2YXIgZmlyc3RCaXQgPSBpID4gZmlyc3RJbnQgPyAwIDogc3RhcnQgJiAweDFGOwoJICAgICAgICAgICAgdmFyIGxhc3RCaXQgPSBpIDwgbGFzdEludCA/IDMxIDogZW5kICYgMHgxRjsKCSAgICAgICAgICAgIC8vIE9uZXMgZnJvbSBmaXJzdEJpdCB0byBsYXN0Qml0LCBpbmNsdXNpdmUKCSAgICAgICAgICAgIHZhciBtYXNrID0gKDIgPDwgbGFzdEJpdCkgLSAoMSA8PCBmaXJzdEJpdCk7CgkgICAgICAgICAgICBiaXRzW2ldIHw9IG1hc2s7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIC8qKgoJICAgICAqIENsZWFycyBhbGwgYml0cyAoc2V0cyB0byBmYWxzZSkuCgkgICAgICovCgkgICAgQml0QXJyYXkucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgbWF4ID0gdGhpcy5iaXRzLmxlbmd0aDsKCSAgICAgICAgdmFyIGJpdHMgPSB0aGlzLmJpdHM7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF4OyBpKyspIHsKCSAgICAgICAgICAgIGJpdHNbaV0gPSAwOwoJICAgICAgICB9CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBFZmZpY2llbnQgbWV0aG9kIHRvIGNoZWNrIGlmIGEgcmFuZ2Ugb2YgYml0cyBpcyBzZXQsIG9yIG5vdCBzZXQuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gc3RhcnQgc3RhcnQgb2YgcmFuZ2UsIGluY2x1c2l2ZS4KCSAgICAgKiBAcGFyYW0gZW5kIGVuZCBvZiByYW5nZSwgZXhjbHVzaXZlCgkgICAgICogQHBhcmFtIHZhbHVlIGlmIHRydWUsIGNoZWNrcyB0aGF0IGJpdHMgaW4gcmFuZ2UgYXJlIHNldCwgb3RoZXJ3aXNlIGNoZWNrcyB0aGF0IHRoZXkgYXJlIG5vdCBzZXQKCSAgICAgKiBAcmV0dXJuIHRydWUgaWZmIGFsbCBiaXRzIGFyZSBzZXQgb3Igbm90IHNldCBpbiByYW5nZSwgYWNjb3JkaW5nIHRvIHZhbHVlIGFyZ3VtZW50CgkgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgZW5kIGlzIGxlc3MgdGhhbiBzdGFydCBvciB0aGUgcmFuZ2UgaXMgbm90IGNvbnRhaW5lZCBpbiB0aGUgYXJyYXkKCSAgICAgKi8KCSAgICBCaXRBcnJheS5wcm90b3R5cGUuaXNSYW5nZSA9IGZ1bmN0aW9uIChzdGFydCAvKmludCovLCBlbmQgLyppbnQqLywgdmFsdWUpIHsKCSAgICAgICAgaWYgKGVuZCA8IHN0YXJ0IHx8IHN0YXJ0IDwgMCB8fCBlbmQgPiB0aGlzLnNpemUpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSQ4LmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoZW5kID09PSBzdGFydCkgewoJICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIGVtcHR5IHJhbmdlIG1hdGNoZXMKCSAgICAgICAgfQoJICAgICAgICBlbmQtLTsgLy8gd2lsbCBiZSBlYXNpZXIgdG8gdHJlYXQgdGhpcyBhcyB0aGUgbGFzdCBhY3R1YWxseSBzZXQgYml0IC0tIGluY2x1c2l2ZQoJICAgICAgICB2YXIgZmlyc3RJbnQgPSBNYXRoLmZsb29yKHN0YXJ0IC8gMzIpOwoJICAgICAgICB2YXIgbGFzdEludCA9IE1hdGguZmxvb3IoZW5kIC8gMzIpOwoJICAgICAgICB2YXIgYml0cyA9IHRoaXMuYml0czsKCSAgICAgICAgZm9yICh2YXIgaSA9IGZpcnN0SW50OyBpIDw9IGxhc3RJbnQ7IGkrKykgewoJICAgICAgICAgICAgdmFyIGZpcnN0Qml0ID0gaSA+IGZpcnN0SW50ID8gMCA6IHN0YXJ0ICYgMHgxRjsKCSAgICAgICAgICAgIHZhciBsYXN0Qml0ID0gaSA8IGxhc3RJbnQgPyAzMSA6IGVuZCAmIDB4MUY7CgkgICAgICAgICAgICAvLyBPbmVzIGZyb20gZmlyc3RCaXQgdG8gbGFzdEJpdCwgaW5jbHVzaXZlCgkgICAgICAgICAgICB2YXIgbWFzayA9ICgyIDw8IGxhc3RCaXQpIC0gKDEgPDwgZmlyc3RCaXQpICYgMHhGRkZGRkZGRjsKCSAgICAgICAgICAgIC8vIFRZUEVTQ1JJUFRQT1JUOiAmIDB4RkZGRkZGRkYgYWRkZWQgdG8gZGlzY2FyZCBhbnl0aGluZyBhZnRlciAzMiBiaXRzLCBhcyBFUyBoYXMgNTMgYml0cwoJICAgICAgICAgICAgLy8gUmV0dXJuIGZhbHNlIGlmIHdlJ3JlIGxvb2tpbmcgZm9yIDFzIGFuZCB0aGUgbWFza2VkIGJpdHNbaV0gaXNuJ3QgYWxsIDFzIChpczogdGhhdCwKCSAgICAgICAgICAgIC8vIGVxdWFscyB0aGUgbWFzaywgb3Igd2UncmUgbG9va2luZyBmb3IgMHMgYW5kIHRoZSBtYXNrZWQgcG9ydGlvbiBpcyBub3QgYWxsIDBzCgkgICAgICAgICAgICBpZiAoKGJpdHNbaV0gJiBtYXNrKSAhPT0gKHZhbHVlID8gbWFzayA6IDApKSB7CgkgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiB0cnVlOwoJICAgIH07CgkgICAgQml0QXJyYXkucHJvdG90eXBlLmFwcGVuZEJpdCA9IGZ1bmN0aW9uIChiaXQpIHsKCSAgICAgICAgdGhpcy5lbnN1cmVDYXBhY2l0eSh0aGlzLnNpemUgKyAxKTsKCSAgICAgICAgaWYgKGJpdCkgewoJICAgICAgICAgICAgdGhpcy5iaXRzW01hdGguZmxvb3IodGhpcy5zaXplIC8gMzIpXSB8PSAxIDw8ICh0aGlzLnNpemUgJiAweDFGKTsKCSAgICAgICAgfQoJICAgICAgICB0aGlzLnNpemUrKzsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEFwcGVuZHMgdGhlIGxlYXN0LXNpZ25pZmljYW50IGJpdHMsIGZyb20gdmFsdWUsIGluIG9yZGVyIGZyb20gbW9zdC1zaWduaWZpY2FudCB0bwoJICAgICAqIGxlYXN0LXNpZ25pZmljYW50LiBGb3IgZXhhbXBsZSwgYXBwZW5kaW5nIDYgYml0cyBmcm9tIDB4MDAwMDAxRSB3aWxsIGFwcGVuZCB0aGUgYml0cwoJICAgICAqIDAsIDEsIDEsIDEsIDEsIDAgaW4gdGhhdCBvcmRlci4KCSAgICAgKgoJICAgICAqIEBwYXJhbSB2YWx1ZSB7QGNvZGUgaW50fSBjb250YWluaW5nIGJpdHMgdG8gYXBwZW5kCgkgICAgICogQHBhcmFtIG51bUJpdHMgYml0cyBmcm9tIHZhbHVlIHRvIGFwcGVuZAoJICAgICAqLwoJICAgIEJpdEFycmF5LnByb3RvdHlwZS5hcHBlbmRCaXRzID0gZnVuY3Rpb24gKHZhbHVlIC8qaW50Ki8sIG51bUJpdHMgLyppbnQqLykgewoJICAgICAgICBpZiAobnVtQml0cyA8IDAgfHwgbnVtQml0cyA+IDMyKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEkOC5kZWZhdWx0KCdOdW0gYml0cyBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMzInKTsKCSAgICAgICAgfQoJICAgICAgICB0aGlzLmVuc3VyZUNhcGFjaXR5KHRoaXMuc2l6ZSArIG51bUJpdHMpOwoJICAgICAgICAvLyBjb25zdCBhcHBlbmRCaXQgPSB0aGlzLmFwcGVuZEJpdDsKCSAgICAgICAgZm9yICh2YXIgbnVtQml0c0xlZnQgPSBudW1CaXRzOyBudW1CaXRzTGVmdCA+IDA7IG51bUJpdHNMZWZ0LS0pIHsKCSAgICAgICAgICAgIHRoaXMuYXBwZW5kQml0KCgodmFsdWUgPj4gKG51bUJpdHNMZWZ0IC0gMSkpICYgMHgwMSkgPT09IDEpOwoJICAgICAgICB9CgkgICAgfTsKCSAgICBCaXRBcnJheS5wcm90b3R5cGUuYXBwZW5kQml0QXJyYXkgPSBmdW5jdGlvbiAob3RoZXIpIHsKCSAgICAgICAgdmFyIG90aGVyU2l6ZSA9IG90aGVyLnNpemU7CgkgICAgICAgIHRoaXMuZW5zdXJlQ2FwYWNpdHkodGhpcy5zaXplICsgb3RoZXJTaXplKTsKCSAgICAgICAgLy8gY29uc3QgYXBwZW5kQml0ID0gdGhpcy5hcHBlbmRCaXQ7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3RoZXJTaXplOyBpKyspIHsKCSAgICAgICAgICAgIHRoaXMuYXBwZW5kQml0KG90aGVyLmdldChpKSk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIEJpdEFycmF5LnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiAob3RoZXIpIHsKCSAgICAgICAgaWYgKHRoaXMuc2l6ZSAhPT0gb3RoZXIuc2l6ZSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xJDguZGVmYXVsdCgnU2l6ZXMgZG9uXCd0IG1hdGNoJyk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGJpdHMgPSB0aGlzLmJpdHM7CgkgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGhfMSA9IGJpdHMubGVuZ3RoOyBpIDwgbGVuZ3RoXzE7IGkrKykgewoJICAgICAgICAgICAgLy8gVGhlIGxhc3QgaW50IGNvdWxkIGJlIGluY29tcGxldGUgKGkuZS4gbm90IGhhdmUgMzIgYml0cyBpbgoJICAgICAgICAgICAgLy8gaXQpIGJ1dCB0aGVyZSBpcyBubyBwcm9ibGVtIHNpbmNlIDAgWE9SIDAgPT0gMC4KCSAgICAgICAgICAgIGJpdHNbaV0gXj0gb3RoZXIuYml0c1tpXTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgLyoqCgkgICAgICoKCSAgICAgKiBAcGFyYW0gYml0T2Zmc2V0IGZpcnN0IGJpdCB0byBzdGFydCB3cml0aW5nCgkgICAgICogQHBhcmFtIGFycmF5IGFycmF5IHRvIHdyaXRlIGludG8uIEJ5dGVzIGFyZSB3cml0dGVuIG1vc3Qtc2lnbmlmaWNhbnQgYnl0ZSBmaXJzdC4gVGhpcyBpcyB0aGUgb3Bwb3NpdGUKCSAgICAgKiAgb2YgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uLCB3aGljaCBpcyBleHBvc2VkIGJ5IHtAbGluayAjZ2V0Qml0QXJyYXkoKX0KCSAgICAgKiBAcGFyYW0gb2Zmc2V0IHBvc2l0aW9uIGluIGFycmF5IHRvIHN0YXJ0IHdyaXRpbmcKCSAgICAgKiBAcGFyYW0gbnVtQnl0ZXMgaG93IG1hbnkgYnl0ZXMgdG8gd3JpdGUKCSAgICAgKi8KCSAgICBCaXRBcnJheS5wcm90b3R5cGUudG9CeXRlcyA9IGZ1bmN0aW9uIChiaXRPZmZzZXQgLyppbnQqLywgYXJyYXksIG9mZnNldCAvKmludCovLCBudW1CeXRlcyAvKmludCovKSB7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQnl0ZXM7IGkrKykgewoJICAgICAgICAgICAgdmFyIHRoZUJ5dGUgPSAwOwoJICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHsKCSAgICAgICAgICAgICAgICBpZiAodGhpcy5nZXQoYml0T2Zmc2V0KSkgewoJICAgICAgICAgICAgICAgICAgICB0aGVCeXRlIHw9IDEgPDwgKDcgLSBqKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgYml0T2Zmc2V0Kys7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBhcnJheVtvZmZzZXQgKyBpXSA9IC8qKGJ5dGUpKi8gdGhlQnl0ZTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiB1bmRlcmx5aW5nIGFycmF5IG9mIGludHMuIFRoZSBmaXJzdCBlbGVtZW50IGhvbGRzIHRoZSBmaXJzdCAzMiBiaXRzLCBhbmQgdGhlIGxlYXN0CgkgICAgICogICAgICAgICBzaWduaWZpY2FudCBiaXQgaXMgYml0IDAuCgkgICAgICovCgkgICAgQml0QXJyYXkucHJvdG90eXBlLmdldEJpdEFycmF5ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5iaXRzOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogUmV2ZXJzZXMgYWxsIGJpdHMgaW4gdGhlIGFycmF5LgoJICAgICAqLwoJICAgIEJpdEFycmF5LnByb3RvdHlwZS5yZXZlcnNlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgbmV3Qml0cyA9IG5ldyBJbnQzMkFycmF5KHRoaXMuYml0cy5sZW5ndGgpOwoJICAgICAgICAvLyByZXZlcnNlIGFsbCBpbnQncyBmaXJzdAoJICAgICAgICB2YXIgbGVuID0gTWF0aC5mbG9vcigodGhpcy5zaXplIC0gMSkgLyAzMik7CgkgICAgICAgIHZhciBvbGRCaXRzTGVuID0gbGVuICsgMTsKCSAgICAgICAgdmFyIGJpdHMgPSB0aGlzLmJpdHM7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2xkQml0c0xlbjsgaSsrKSB7CgkgICAgICAgICAgICB2YXIgeCA9IGJpdHNbaV07CgkgICAgICAgICAgICB4ID0gKCh4ID4+IDEpICYgMHg1NTU1NTU1NSkgfCAoKHggJiAweDU1NTU1NTU1KSA8PCAxKTsKCSAgICAgICAgICAgIHggPSAoKHggPj4gMikgJiAweDMzMzMzMzMzKSB8ICgoeCAmIDB4MzMzMzMzMzMpIDw8IDIpOwoJICAgICAgICAgICAgeCA9ICgoeCA+PiA0KSAmIDB4MGYwZjBmMGYpIHwgKCh4ICYgMHgwZjBmMGYwZikgPDwgNCk7CgkgICAgICAgICAgICB4ID0gKCh4ID4+IDgpICYgMHgwMGZmMDBmZikgfCAoKHggJiAweDAwZmYwMGZmKSA8PCA4KTsKCSAgICAgICAgICAgIHggPSAoKHggPj4gMTYpICYgMHgwMDAwZmZmZikgfCAoKHggJiAweDAwMDBmZmZmKSA8PCAxNik7CgkgICAgICAgICAgICBuZXdCaXRzW2xlbiAtIGldID0gLyooaW50KSovIHg7CgkgICAgICAgIH0KCSAgICAgICAgLy8gbm93IGNvcnJlY3QgdGhlIGludCdzIGlmIHRoZSBiaXQgc2l6ZSBpc24ndCBhIG11bHRpcGxlIG9mIDMyCgkgICAgICAgIGlmICh0aGlzLnNpemUgIT09IG9sZEJpdHNMZW4gKiAzMikgewoJICAgICAgICAgICAgdmFyIGxlZnRPZmZzZXQgPSBvbGRCaXRzTGVuICogMzIgLSB0aGlzLnNpemU7CgkgICAgICAgICAgICB2YXIgY3VycmVudEludCA9IG5ld0JpdHNbMF0gPj4+IGxlZnRPZmZzZXQ7CgkgICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IG9sZEJpdHNMZW47IGkrKykgewoJICAgICAgICAgICAgICAgIHZhciBuZXh0SW50ID0gbmV3Qml0c1tpXTsKCSAgICAgICAgICAgICAgICBjdXJyZW50SW50IHw9IG5leHRJbnQgPDwgKDMyIC0gbGVmdE9mZnNldCk7CgkgICAgICAgICAgICAgICAgbmV3Qml0c1tpIC0gMV0gPSBjdXJyZW50SW50OwoJICAgICAgICAgICAgICAgIGN1cnJlbnRJbnQgPSBuZXh0SW50ID4+PiBsZWZ0T2Zmc2V0OwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgbmV3Qml0c1tvbGRCaXRzTGVuIC0gMV0gPSBjdXJyZW50SW50OwoJICAgICAgICB9CgkgICAgICAgIHRoaXMuYml0cyA9IG5ld0JpdHM7CgkgICAgfTsKCSAgICBCaXRBcnJheS5tYWtlQXJyYXkgPSBmdW5jdGlvbiAoc2l6ZSAvKmludCovKSB7CgkgICAgICAgIHJldHVybiBuZXcgSW50MzJBcnJheShNYXRoLmZsb29yKChzaXplICsgMzEpIC8gMzIpKTsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBCaXRBcnJheS5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gKG8pIHsKCSAgICAgICAgaWYgKCEobyBpbnN0YW5jZW9mIEJpdEFycmF5KSkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIHZhciBvdGhlciA9IG87CgkgICAgICAgIHJldHVybiB0aGlzLnNpemUgPT09IG90aGVyLnNpemUgJiYgQXJyYXlzXzEkMS5kZWZhdWx0LmVxdWFscyh0aGlzLmJpdHMsIG90aGVyLmJpdHMpOwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIEJpdEFycmF5LnByb3RvdHlwZS5oYXNoQ29kZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIDMxICogdGhpcy5zaXplICsgQXJyYXlzXzEkMS5kZWZhdWx0Lmhhc2hDb2RlKHRoaXMuYml0cyk7CgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgQml0QXJyYXkucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgcmVzdWx0ID0gJyc7CgkgICAgICAgIGZvciAodmFyIGkgPSAwLCBzaXplID0gdGhpcy5zaXplOyBpIDwgc2l6ZTsgaSsrKSB7CgkgICAgICAgICAgICBpZiAoKGkgJiAweDA3KSA9PT0gMCkgewoJICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnICc7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICByZXN1bHQgKz0gdGhpcy5nZXQoaSkgPyAnWCcgOiAnLic7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJlc3VsdDsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBCaXRBcnJheS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiBuZXcgQml0QXJyYXkodGhpcy5zaXplLCB0aGlzLmJpdHMuc2xpY2UoKSk7CgkgICAgfTsKCSAgICByZXR1cm4gQml0QXJyYXk7Cgl9KCkpOwoJQml0QXJyYXkkMS5kZWZhdWx0ID0gQml0QXJyYXk7CgoJdmFyIEJpdE1hdHJpeCQxID0ge307CgoJdmFyIFN0cmluZ0J1aWxkZXIkMSA9IHt9OwoKCXZhciBTdHJpbmdVdGlscyQxID0ge307CgoJdmFyIERlY29kZUhpbnRUeXBlJDEgPSB7fTsKCgkvKgoJICogQ29weXJpZ2h0IDIwMDkgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KERlY29kZUhpbnRUeXBlJDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcgeyovCgkvKioKCSAqIEVuY2Fwc3VsYXRlcyBhIHR5cGUgb2YgaGludCB0aGF0IGEgY2FsbGVyIG1heSBwYXNzIHRvIGEgYmFyY29kZSByZWFkZXIgdG8gaGVscCBpdAoJICogbW9yZSBxdWlja2x5IG9yIGFjY3VyYXRlbHkgZGVjb2RlIGl0LiBJdCBpcyB1cCB0byBpbXBsZW1lbnRhdGlvbnMgdG8gZGVjaWRlIHdoYXQsCgkgKiBpZiBhbnl0aGluZywgdG8gZG8gd2l0aCB0aGUgaW5mb3JtYXRpb24gdGhhdCBpcyBzdXBwbGllZC4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICogQGF1dGhvciBkc3dpdGtpbkBnb29nbGUuY29tIChEYW5pZWwgU3dpdGtpbikKCSAqIEBzZWUgUmVhZGVyI2RlY29kZShCaW5hcnlCaXRtYXAsamF2YS51dGlsLk1hcCkKCSAqLwoJdmFyIERlY29kZUhpbnRUeXBlOwoJKGZ1bmN0aW9uIChEZWNvZGVIaW50VHlwZSkgewoJICAgIC8qKgoJICAgICAqIFVuc3BlY2lmaWVkLCBhcHBsaWNhdGlvbi1zcGVjaWZpYyBoaW50LiBNYXBzIHRvIGFuIHVuc3BlY2lmaWVkIHtAbGluayBPYmplY3R9LgoJICAgICAqLwoJICAgIERlY29kZUhpbnRUeXBlW0RlY29kZUhpbnRUeXBlWyJPVEhFUiJdID0gMF0gPSAiT1RIRVIiOyAvKihPYmplY3QuY2xhc3MpKi8KCSAgICAvKioKCSAgICAgKiBJbWFnZSBpcyBhIHB1cmUgbW9ub2Nocm9tZSBpbWFnZSBvZiBhIGJhcmNvZGUuIERvZXNuJ3QgbWF0dGVyIHdoYXQgaXQgbWFwcyB0bzsKCSAgICAgKiB1c2Uge0BsaW5rIEJvb2xlYW4jVFJVRX0uCgkgICAgICovCgkgICAgRGVjb2RlSGludFR5cGVbRGVjb2RlSGludFR5cGVbIlBVUkVfQkFSQ09ERSJdID0gMV0gPSAiUFVSRV9CQVJDT0RFIjsgLyooVm9pZC5jbGFzcykqLwoJICAgIC8qKgoJICAgICAqIEltYWdlIGlzIGtub3duIHRvIGJlIG9mIG9uZSBvZiBhIGZldyBwb3NzaWJsZSBmb3JtYXRzLgoJICAgICAqIE1hcHMgdG8gYSB7QGxpbmsgTGlzdH0gb2Yge0BsaW5rIEJhcmNvZGVGb3JtYXR9cy4KCSAgICAgKi8KCSAgICBEZWNvZGVIaW50VHlwZVtEZWNvZGVIaW50VHlwZVsiUE9TU0lCTEVfRk9STUFUUyJdID0gMl0gPSAiUE9TU0lCTEVfRk9STUFUUyI7IC8qKExpc3QuY2xhc3MpKi8KCSAgICAvKioKCSAgICAgKiBTcGVuZCBtb3JlIHRpbWUgdG8gdHJ5IHRvIGZpbmQgYSBiYXJjb2RlOyBvcHRpbWl6ZSBmb3IgYWNjdXJhY3ksIG5vdCBzcGVlZC4KCSAgICAgKiBEb2Vzbid0IG1hdHRlciB3aGF0IGl0IG1hcHMgdG87IHVzZSB7QGxpbmsgQm9vbGVhbiNUUlVFfS4KCSAgICAgKi8KCSAgICBEZWNvZGVIaW50VHlwZVtEZWNvZGVIaW50VHlwZVsiVFJZX0hBUkRFUiJdID0gM10gPSAiVFJZX0hBUkRFUiI7IC8qKFZvaWQuY2xhc3MpKi8KCSAgICAvKioKCSAgICAgKiBTcGVjaWZpZXMgd2hhdCBjaGFyYWN0ZXIgZW5jb2RpbmcgdG8gdXNlIHdoZW4gZGVjb2RpbmcsIHdoZXJlIGFwcGxpY2FibGUgKHR5cGUgU3RyaW5nKQoJICAgICAqLwoJICAgIERlY29kZUhpbnRUeXBlW0RlY29kZUhpbnRUeXBlWyJDSEFSQUNURVJfU0VUIl0gPSA0XSA9ICJDSEFSQUNURVJfU0VUIjsgLyooU3RyaW5nLmNsYXNzKSovCgkgICAgLyoqCgkgICAgICogQWxsb3dlZCBsZW5ndGhzIG9mIGVuY29kZWQgZGF0YSAtLSByZWplY3QgYW55dGhpbmcgZWxzZS4gTWFwcyB0byBhbiB7QGNvZGUgSW50MzJBcnJheX0uCgkgICAgICovCgkgICAgRGVjb2RlSGludFR5cGVbRGVjb2RlSGludFR5cGVbIkFMTE9XRURfTEVOR1RIUyJdID0gNV0gPSAiQUxMT1dFRF9MRU5HVEhTIjsgLyooSW50MzJBcnJheS5jbGFzcykqLwoJICAgIC8qKgoJICAgICAqIEFzc3VtZSBDb2RlIDM5IGNvZGVzIGVtcGxveSBhIGNoZWNrIGRpZ2l0LiBEb2Vzbid0IG1hdHRlciB3aGF0IGl0IG1hcHMgdG87CgkgICAgICogdXNlIHtAbGluayBCb29sZWFuI1RSVUV9LgoJICAgICAqLwoJICAgIERlY29kZUhpbnRUeXBlW0RlY29kZUhpbnRUeXBlWyJBU1NVTUVfQ09ERV8zOV9DSEVDS19ESUdJVCJdID0gNl0gPSAiQVNTVU1FX0NPREVfMzlfQ0hFQ0tfRElHSVQiOyAvKihWb2lkLmNsYXNzKSovCgkgICAgLyoqCgkgICAgICogQXNzdW1lIHRoZSBiYXJjb2RlIGlzIGJlaW5nIHByb2Nlc3NlZCBhcyBhIEdTMSBiYXJjb2RlLCBhbmQgbW9kaWZ5IGJlaGF2aW9yIGFzIG5lZWRlZC4KCSAgICAgKiBGb3IgZXhhbXBsZSB0aGlzIGFmZmVjdHMgRk5DMSBoYW5kbGluZyBmb3IgQ29kZSAxMjggKGFrYSBHUzEtMTI4KS4gRG9lc24ndCBtYXR0ZXIgd2hhdCBpdCBtYXBzIHRvOwoJICAgICAqIHVzZSB7QGxpbmsgQm9vbGVhbiNUUlVFfS4KCSAgICAgKi8KCSAgICBEZWNvZGVIaW50VHlwZVtEZWNvZGVIaW50VHlwZVsiQVNTVU1FX0dTMSJdID0gN10gPSAiQVNTVU1FX0dTMSI7IC8qKFZvaWQuY2xhc3MpKi8KCSAgICAvKioKCSAgICAgKiBJZiB0cnVlLCByZXR1cm4gdGhlIHN0YXJ0IGFuZCBlbmQgZGlnaXRzIGluIGEgQ29kYWJhciBiYXJjb2RlIGluc3RlYWQgb2Ygc3RyaXBwaW5nIHRoZW0uIFRoZXkKCSAgICAgKiBhcmUgYWxwaGEsIHdoZXJlYXMgdGhlIHJlc3QgYXJlIG51bWVyaWMuIEJ5IGRlZmF1bHQsIHRoZXkgYXJlIHN0cmlwcGVkLCBidXQgdGhpcyBjYXVzZXMgdGhlbQoJICAgICAqIHRvIG5vdCBiZS4gRG9lc24ndCBtYXR0ZXIgd2hhdCBpdCBtYXBzIHRvOyB1c2Uge0BsaW5rIEJvb2xlYW4jVFJVRX0uCgkgICAgICovCgkgICAgRGVjb2RlSGludFR5cGVbRGVjb2RlSGludFR5cGVbIlJFVFVSTl9DT0RBQkFSX1NUQVJUX0VORCJdID0gOF0gPSAiUkVUVVJOX0NPREFCQVJfU1RBUlRfRU5EIjsgLyooVm9pZC5jbGFzcykqLwoJICAgIC8qKgoJICAgICAqIFRoZSBjYWxsZXIgbmVlZHMgdG8gYmUgbm90aWZpZWQgdmlhIGNhbGxiYWNrIHdoZW4gYSBwb3NzaWJsZSB7QGxpbmsgUmVzdWx0UG9pbnR9CgkgICAgICogaXMgZm91bmQuIE1hcHMgdG8gYSB7QGxpbmsgUmVzdWx0UG9pbnRDYWxsYmFja30uCgkgICAgICovCgkgICAgRGVjb2RlSGludFR5cGVbRGVjb2RlSGludFR5cGVbIk5FRURfUkVTVUxUX1BPSU5UX0NBTExCQUNLIl0gPSA5XSA9ICJORUVEX1JFU1VMVF9QT0lOVF9DQUxMQkFDSyI7IC8qKFJlc3VsdFBvaW50Q2FsbGJhY2suY2xhc3MpKi8KCSAgICAvKioKCSAgICAgKiBBbGxvd2VkIGV4dGVuc2lvbiBsZW5ndGhzIGZvciBFQU4gb3IgVVBDIGJhcmNvZGVzLiBPdGhlciBmb3JtYXRzIHdpbGwgaWdub3JlIHRoaXMuCgkgICAgICogTWFwcyB0byBhbiB7QGNvZGUgSW50MzJBcnJheX0gb2YgdGhlIGFsbG93ZWQgZXh0ZW5zaW9uIGxlbmd0aHMsIGZvciBleGFtcGxlIFsyXSwgWzVdLCBvciBbMiwgNV0uCgkgICAgICogSWYgaXQgaXMgb3B0aW9uYWwgdG8gaGF2ZSBhbiBleHRlbnNpb24sIGRvIG5vdCBzZXQgdGhpcyBoaW50LiBJZiB0aGlzIGlzIHNldCwKCSAgICAgKiBhbmQgYSBVUEMgb3IgRUFOIGJhcmNvZGUgaXMgZm91bmQgYnV0IGFuIGV4dGVuc2lvbiBpcyBub3QsIHRoZW4gbm8gcmVzdWx0IHdpbGwgYmUgcmV0dXJuZWQKCSAgICAgKiBhdCBhbGwuCgkgICAgICovCgkgICAgRGVjb2RlSGludFR5cGVbRGVjb2RlSGludFR5cGVbIkFMTE9XRURfRUFOX0VYVEVOU0lPTlMiXSA9IDEwXSA9ICJBTExPV0VEX0VBTl9FWFRFTlNJT05TIjsgLyooSW50MzJBcnJheS5jbGFzcykqLwoJICAgIC8vIEVuZCBvZiBlbnVtZXJhdGlvbiB2YWx1ZXMuCgkgICAgLyoqCgkgICAgICogRGF0YSB0eXBlIHRoZSBoaW50IGlzIGV4cGVjdGluZy4KCSAgICAgKiBBbW9uZyB0aGUgcG9zc2libGUgdmFsdWVzIHRoZSB7QGxpbmsgVm9pZH0gc3RhbmRzIG91dCBhcyBiZWluZyB1c2VkIGZvcgoJICAgICAqIGhpbnRzIHRoYXQgZG8gbm90IGV4cGVjdCBhIHZhbHVlIHRvIGJlIHN1cHBsaWVkIChmbGFnIGhpbnRzKS4gU3VjaCBoaW50cwoJICAgICAqIHdpbGwgcG9zc2libHkgaGF2ZSB0aGVpciB2YWx1ZSBpZ25vcmVkLCBvciByZXBsYWNlZCBieSBhCgkgICAgICoge0BsaW5rIEJvb2xlYW4jVFJVRX0uIEhpbnQgc3VwcGxpZXJzIHNob3VsZCBwcm9iYWJseSB1c2UKCSAgICAgKiB7QGxpbmsgQm9vbGVhbiNUUlVFfSBhcyBkaXJlY3RlZCBieSB0aGUgYWN0dWFsIGhpbnQgZG9jdW1lbnRhdGlvbi4KCSAgICAgKi8KCSAgICAvLyBwcml2YXRlIHZhbHVlVHlwZTogQ2xhc3M8Pz4KCSAgICAvLyBEZWNvZGVIaW50VHlwZSh2YWx1ZVR5cGU6IENsYXNzPD8+KSB7CgkgICAgLy8gICB0aGlzLnZhbHVlVHlwZSA9IHZhbHVlVHlwZQoJICAgIC8vIH0KCSAgICAvLyBwdWJsaWMgZ2V0VmFsdWVUeXBlKCk6IENsYXNzPD8+IHsKCSAgICAvLyAgIHJldHVybiB2YWx1ZVR5cGUKCSAgICAvLyB9Cgl9KShEZWNvZGVIaW50VHlwZSB8fCAoRGVjb2RlSGludFR5cGUgPSB7fSkpOwoJRGVjb2RlSGludFR5cGUkMS5kZWZhdWx0ID0gRGVjb2RlSGludFR5cGU7CgoJdmFyIENoYXJhY3RlclNldEVDSSA9IHt9OwoKCXZhciBGb3JtYXRFeGNlcHRpb24kMSA9IHt9OwoKCXZhciBfX2V4dGVuZHMkZiA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShGb3JtYXRFeGNlcHRpb24kMSwgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJdmFyIEV4Y2VwdGlvbl8xJDcgPSBFeGNlcHRpb24kMTsKCS8qKgoJICogQ3VzdG9tIEVycm9yIGNsYXNzIG9mIHR5cGUgRXhjZXB0aW9uLgoJICovCgl2YXIgRm9ybWF0RXhjZXB0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyRmKEZvcm1hdEV4Y2VwdGlvbiwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBGb3JtYXRFeGNlcHRpb24oKSB7CgkgICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpczsKCSAgICB9CgkgICAgRm9ybWF0RXhjZXB0aW9uLmdldEZvcm1hdEluc3RhbmNlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gbmV3IEZvcm1hdEV4Y2VwdGlvbigpOwoJICAgIH07CgkgICAgRm9ybWF0RXhjZXB0aW9uLmtpbmQgPSAnRm9ybWF0RXhjZXB0aW9uJzsKCSAgICByZXR1cm4gRm9ybWF0RXhjZXB0aW9uOwoJfShFeGNlcHRpb25fMSQ3LmRlZmF1bHQpKTsKCUZvcm1hdEV4Y2VwdGlvbiQxLmRlZmF1bHQgPSBGb3JtYXRFeGNlcHRpb247CgoJKGZ1bmN0aW9uIChleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMDggWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJdmFyIF9fdmFsdWVzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7CgkgICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7CgkgICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7CgkgICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSAibnVtYmVyIikgcmV0dXJuIHsKCSAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDsKCSAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gIk9iamVjdCBpcyBub3QgaXRlcmFibGUuIiA6ICJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7Cgl9OwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCWV4cG9ydHMuQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycyA9IHZvaWQgMDsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcuY29tbW9uIHsqLwoJdmFyIEZvcm1hdEV4Y2VwdGlvbl8xID0gRm9ybWF0RXhjZXB0aW9uJDE7CgkvKmltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsqLwoJLyppbXBvcnQgamF2YS51dGlsLk1hcDsqLwoJdmFyIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnM7CgkoZnVuY3Rpb24gKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMpIHsKCSAgICBDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW0NoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbIkNwNDM3Il0gPSAwXSA9ICJDcDQzNyI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzEiXSA9IDFdID0gIklTTzg4NTlfMSI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzIiXSA9IDJdID0gIklTTzg4NTlfMiI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzMiXSA9IDNdID0gIklTTzg4NTlfMyI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzQiXSA9IDRdID0gIklTTzg4NTlfNCI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzUiXSA9IDVdID0gIklTTzg4NTlfNSI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzYiXSA9IDZdID0gIklTTzg4NTlfNiI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzciXSA9IDddID0gIklTTzg4NTlfNyI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzgiXSA9IDhdID0gIklTTzg4NTlfOCI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzkiXSA9IDldID0gIklTTzg4NTlfOSI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzEwIl0gPSAxMF0gPSAiSVNPODg1OV8xMCI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzExIl0gPSAxMV0gPSAiSVNPODg1OV8xMSI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzEzIl0gPSAxMl0gPSAiSVNPODg1OV8xMyI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzE0Il0gPSAxM10gPSAiSVNPODg1OV8xNCI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzE1Il0gPSAxNF0gPSAiSVNPODg1OV8xNSI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzE2Il0gPSAxNV0gPSAiSVNPODg1OV8xNiI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJTSklTIl0gPSAxNl0gPSAiU0pJUyI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJDcDEyNTAiXSA9IDE3XSA9ICJDcDEyNTAiOwoJICAgIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1siQ3AxMjUxIl0gPSAxOF0gPSAiQ3AxMjUxIjsKCSAgICBDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW0NoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbIkNwMTI1MiJdID0gMTldID0gIkNwMTI1MiI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJDcDEyNTYiXSA9IDIwXSA9ICJDcDEyNTYiOwoJICAgIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1siVW5pY29kZUJpZ1VubWFya2VkIl0gPSAyMV0gPSAiVW5pY29kZUJpZ1VubWFya2VkIjsKCSAgICBDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW0NoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbIlVURjgiXSA9IDIyXSA9ICJVVEY4IjsKCSAgICBDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW0NoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbIkFTQ0lJIl0gPSAyM10gPSAiQVNDSUkiOwoJICAgIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1siQmlnNSJdID0gMjRdID0gIkJpZzUiOwoJICAgIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1siR0IxODAzMCJdID0gMjVdID0gIkdCMTgwMzAiOwoJICAgIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1siRVVDX0tSIl0gPSAyNl0gPSAiRVVDX0tSIjsKCX0pKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMgPSBleHBvcnRzLkNoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMgfHwgKGV4cG9ydHMuQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycyA9IHt9KSk7CgkvKioKCSAqIEVuY2Fwc3VsYXRlcyBhIENoYXJhY3RlciBTZXQgRUNJLCBhY2NvcmRpbmcgdG8gIkV4dGVuZGVkIENoYW5uZWwgSW50ZXJwcmV0YXRpb25zIiA1LjMuMS4xCgkgKiBvZiBJU08gMTgwMDQuCgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIENoYXJhY3RlclNldEVDSSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBDaGFyYWN0ZXJTZXRFQ0kodmFsdWVJZGVudGlmaWVyLCB2YWx1ZXNQYXJhbSwgbmFtZSkgewoJICAgICAgICB2YXIgZV8xLCBfYTsKCSAgICAgICAgdmFyIG90aGVyRW5jb2RpbmdOYW1lcyA9IFtdOwoJICAgICAgICBmb3IgKHZhciBfaSA9IDM7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykgewoJICAgICAgICAgICAgb3RoZXJFbmNvZGluZ05hbWVzW19pIC0gM10gPSBhcmd1bWVudHNbX2ldOwoJICAgICAgICB9CgkgICAgICAgIHRoaXMudmFsdWVJZGVudGlmaWVyID0gdmFsdWVJZGVudGlmaWVyOwoJICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOwoJICAgICAgICBpZiAodHlwZW9mIHZhbHVlc1BhcmFtID09PSAnbnVtYmVyJykgewoJICAgICAgICAgICAgdGhpcy52YWx1ZXMgPSBJbnQzMkFycmF5LmZyb20oW3ZhbHVlc1BhcmFtXSk7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICB0aGlzLnZhbHVlcyA9IHZhbHVlc1BhcmFtOwoJICAgICAgICB9CgkgICAgICAgIHRoaXMub3RoZXJFbmNvZGluZ05hbWVzID0gb3RoZXJFbmNvZGluZ05hbWVzOwoJICAgICAgICBDaGFyYWN0ZXJTZXRFQ0kuVkFMVUVfSURFTlRJRklFUl9UT19FQ0kuc2V0KHZhbHVlSWRlbnRpZmllciwgdGhpcyk7CgkgICAgICAgIENoYXJhY3RlclNldEVDSS5OQU1FX1RPX0VDSS5zZXQobmFtZSwgdGhpcyk7CgkgICAgICAgIHZhciB2YWx1ZXMgPSB0aGlzLnZhbHVlczsKCSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aF8xID0gdmFsdWVzLmxlbmd0aDsgaSAhPT0gbGVuZ3RoXzE7IGkrKykgewoJICAgICAgICAgICAgdmFyIHYgPSB2YWx1ZXNbaV07CgkgICAgICAgICAgICBDaGFyYWN0ZXJTZXRFQ0kuVkFMVUVTX1RPX0VDSS5zZXQodiwgdGhpcyk7CgkgICAgICAgIH0KCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIG90aGVyRW5jb2RpbmdOYW1lc18xID0gX192YWx1ZXMob3RoZXJFbmNvZGluZ05hbWVzKSwgb3RoZXJFbmNvZGluZ05hbWVzXzFfMSA9IG90aGVyRW5jb2RpbmdOYW1lc18xLm5leHQoKTsgIW90aGVyRW5jb2RpbmdOYW1lc18xXzEuZG9uZTsgb3RoZXJFbmNvZGluZ05hbWVzXzFfMSA9IG90aGVyRW5jb2RpbmdOYW1lc18xLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciBvdGhlck5hbWUgPSBvdGhlckVuY29kaW5nTmFtZXNfMV8xLnZhbHVlOwoJICAgICAgICAgICAgICAgIENoYXJhY3RlclNldEVDSS5OQU1FX1RPX0VDSS5zZXQob3RoZXJOYW1lLCB0aGlzKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfQoJICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgaWYgKG90aGVyRW5jb2RpbmdOYW1lc18xXzEgJiYgIW90aGVyRW5jb2RpbmdOYW1lc18xXzEuZG9uZSAmJiAoX2EgPSBvdGhlckVuY29kaW5nTmFtZXNfMS5yZXR1cm4pKSBfYS5jYWxsKG90aGVyRW5jb2RpbmdOYW1lc18xKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgIH0KCSAgICAvLyBDaGFyYWN0ZXJTZXRFQ0kodmFsdWU6IG51bWJlciAvKmludCovKSB7CgkgICAgLy8gICB0aGlzKG5ldyBJbnQzMkFycmF5IHt2YWx1ZX0pCgkgICAgLy8gfQoJICAgIC8vIENoYXJhY3RlclNldEVDSSh2YWx1ZTogbnVtYmVyIC8qaW50Ki8sIFN0cmluZy4uLiBvdGhlckVuY29kaW5nTmFtZXMpIHsKCSAgICAvLyAgIHRoaXMudmFsdWVzID0gbmV3IEludDMyQXJyYXkge3ZhbHVlfQoJICAgIC8vICAgdGhpcy5vdGhlckVuY29kaW5nTmFtZXMgPSBvdGhlckVuY29kaW5nTmFtZXMKCSAgICAvLyB9CgkgICAgLy8gQ2hhcmFjdGVyU2V0RUNJKHZhbHVlczogSW50MzJBcnJheSwgU3RyaW5nLi4uIG90aGVyRW5jb2RpbmdOYW1lcykgewoJICAgIC8vICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXMKCSAgICAvLyAgIHRoaXMub3RoZXJFbmNvZGluZ05hbWVzID0gb3RoZXJFbmNvZGluZ05hbWVzCgkgICAgLy8gfQoJICAgIENoYXJhY3RlclNldEVDSS5wcm90b3R5cGUuZ2V0VmFsdWVJZGVudGlmaWVyID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy52YWx1ZUlkZW50aWZpZXI7CgkgICAgfTsKCSAgICBDaGFyYWN0ZXJTZXRFQ0kucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLm5hbWU7CgkgICAgfTsKCSAgICBDaGFyYWN0ZXJTZXRFQ0kucHJvdG90eXBlLmdldFZhbHVlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXNbMF07CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcGFyYW0gdmFsdWUgY2hhcmFjdGVyIHNldCBFQ0kgdmFsdWUKCSAgICAgKiBAcmV0dXJuIHtAY29kZSBDaGFyYWN0ZXJTZXRFQ0l9IHJlcHJlc2VudGluZyBFQ0kgb2YgZ2l2ZW4gdmFsdWUsIG9yIG51bGwgaWYgaXQgaXMgbGVnYWwgYnV0CgkgICAgICogICB1bnN1cHBvcnRlZAoJICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uIGlmIEVDSSB2YWx1ZSBpcyBpbnZhbGlkCgkgICAgICovCgkgICAgQ2hhcmFjdGVyU2V0RUNJLmdldENoYXJhY3RlclNldEVDSUJ5VmFsdWUgPSBmdW5jdGlvbiAodmFsdWUgLyppbnQqLykgewoJICAgICAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID49IDkwMCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ2luY29yZWN0IHZhbHVlJyk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGNoYXJhY3RlclNldCA9IENoYXJhY3RlclNldEVDSS5WQUxVRVNfVE9fRUNJLmdldCh2YWx1ZSk7CgkgICAgICAgIGlmICh1bmRlZmluZWQgPT09IGNoYXJhY3RlclNldCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ2luY29yZWN0IHZhbHVlJyk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGNoYXJhY3RlclNldDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEBwYXJhbSBuYW1lIGNoYXJhY3RlciBzZXQgRUNJIGVuY29kaW5nIG5hbWUKCSAgICAgKiBAcmV0dXJuIENoYXJhY3RlclNldEVDSSByZXByZXNlbnRpbmcgRUNJIGZvciBjaGFyYWN0ZXIgZW5jb2RpbmcsIG9yIG51bGwgaWYgaXQgaXMgbGVnYWwKCSAgICAgKiAgIGJ1dCB1bnN1cHBvcnRlZAoJICAgICAqLwoJICAgIENoYXJhY3RlclNldEVDSS5nZXRDaGFyYWN0ZXJTZXRFQ0lCeU5hbWUgPSBmdW5jdGlvbiAobmFtZSkgewoJICAgICAgICB2YXIgY2hhcmFjdGVyU2V0ID0gQ2hhcmFjdGVyU2V0RUNJLk5BTUVfVE9fRUNJLmdldChuYW1lKTsKCSAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gY2hhcmFjdGVyU2V0KSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgnaW5jb3JlY3QgdmFsdWUnKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gY2hhcmFjdGVyU2V0OwoJICAgIH07CgkgICAgQ2hhcmFjdGVyU2V0RUNJLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAobykgewoJICAgICAgICBpZiAoIShvIGluc3RhbmNlb2YgQ2hhcmFjdGVyU2V0RUNJKSkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIHZhciBvdGhlciA9IG87CgkgICAgICAgIHJldHVybiB0aGlzLmdldE5hbWUoKSA9PT0gb3RoZXIuZ2V0TmFtZSgpOwoJICAgIH07CgkgICAgQ2hhcmFjdGVyU2V0RUNJLlZBTFVFX0lERU5USUZJRVJfVE9fRUNJID0gbmV3IE1hcCgpOwoJICAgIENoYXJhY3RlclNldEVDSS5WQUxVRVNfVE9fRUNJID0gbmV3IE1hcCgpOwoJICAgIENoYXJhY3RlclNldEVDSS5OQU1FX1RPX0VDSSA9IG5ldyBNYXAoKTsKCSAgICAvLyBFbnVtIG5hbWUgaXMgYSBKYXZhIGVuY29kaW5nIHZhbGlkIGZvciBqYXZhLmxhbmcgYW5kIGphdmEuaW8KCSAgICAvLyBUWVBFU0NSSVBUUE9SVDogY2hhbmdlZCB0aGUgbWFpbiBsYWJlbCBmb3IgSVNPIGFzIHRoZSBUZXh0RW5jb2RlciBkaWQgbm90IHJlY29nbml6ZWQgdGhlbSBpbiB0aGUgZm9ybSBmcm9tIGphdmEKCSAgICAvLyAoZWcgSVNPODg1OV8xIG11c3QgYmUgSVNPODg1OTEgb3IgSVNPODg1OS0xIG9yIElTTy04ODU5LTEpCgkgICAgLy8gbGF0ZXIgb246IHdlbGwsIGV4Y2VwdCAxNiB3aWNoIGRvZXMgbm90IHdvcmsgd2l0aCBJU084ODU5MTYgc28gdXNlZCBJU08tODg1OS0xIGZvcm0gZm9yIGRlZmF1bHQKCSAgICBDaGFyYWN0ZXJTZXRFQ0kuQ3A0MzcgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuQ3A0MzcsIEludDMyQXJyYXkuZnJvbShbMCwgMl0pLCAnQ3A0MzcnKTsKCSAgICBDaGFyYWN0ZXJTZXRFQ0kuSVNPODg1OV8xID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLklTTzg4NTlfMSwgSW50MzJBcnJheS5mcm9tKFsxLCAzXSksICdJU08tODg1OS0xJywgJ0lTTzg4NTkxJywgJ0lTTzg4NTlfMScpOwoJICAgIENoYXJhY3RlclNldEVDSS5JU084ODU5XzIgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuSVNPODg1OV8yLCA0LCAnSVNPLTg4NTktMicsICdJU084ODU5MicsICdJU084ODU5XzInKTsKCSAgICBDaGFyYWN0ZXJTZXRFQ0kuSVNPODg1OV8zID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLklTTzg4NTlfMywgNSwgJ0lTTy04ODU5LTMnLCAnSVNPODg1OTMnLCAnSVNPODg1OV8zJyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLklTTzg4NTlfNCA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5JU084ODU5XzQsIDYsICdJU08tODg1OS00JywgJ0lTTzg4NTk0JywgJ0lTTzg4NTlfNCcpOwoJICAgIENoYXJhY3RlclNldEVDSS5JU084ODU5XzUgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuSVNPODg1OV81LCA3LCAnSVNPLTg4NTktNScsICdJU084ODU5NScsICdJU084ODU5XzUnKTsKCSAgICBDaGFyYWN0ZXJTZXRFQ0kuSVNPODg1OV82ID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLklTTzg4NTlfNiwgOCwgJ0lTTy04ODU5LTYnLCAnSVNPODg1OTYnLCAnSVNPODg1OV82Jyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLklTTzg4NTlfNyA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5JU084ODU5XzcsIDksICdJU08tODg1OS03JywgJ0lTTzg4NTk3JywgJ0lTTzg4NTlfNycpOwoJICAgIENoYXJhY3RlclNldEVDSS5JU084ODU5XzggPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuSVNPODg1OV84LCAxMCwgJ0lTTy04ODU5LTgnLCAnSVNPODg1OTgnLCAnSVNPODg1OV84Jyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLklTTzg4NTlfOSA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5JU084ODU5XzksIDExLCAnSVNPLTg4NTktOScsICdJU084ODU5OScsICdJU084ODU5XzknKTsKCSAgICBDaGFyYWN0ZXJTZXRFQ0kuSVNPODg1OV8xMCA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5JU084ODU5XzEwLCAxMiwgJ0lTTy04ODU5LTEwJywgJ0lTTzg4NTkxMCcsICdJU084ODU5XzEwJyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLklTTzg4NTlfMTEgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuSVNPODg1OV8xMSwgMTMsICdJU08tODg1OS0xMScsICdJU084ODU5MTEnLCAnSVNPODg1OV8xMScpOwoJICAgIENoYXJhY3RlclNldEVDSS5JU084ODU5XzEzID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLklTTzg4NTlfMTMsIDE1LCAnSVNPLTg4NTktMTMnLCAnSVNPODg1OTEzJywgJ0lTTzg4NTlfMTMnKTsKCSAgICBDaGFyYWN0ZXJTZXRFQ0kuSVNPODg1OV8xNCA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5JU084ODU5XzE0LCAxNiwgJ0lTTy04ODU5LTE0JywgJ0lTTzg4NTkxNCcsICdJU084ODU5XzE0Jyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLklTTzg4NTlfMTUgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuSVNPODg1OV8xNSwgMTcsICdJU08tODg1OS0xNScsICdJU084ODU5MTUnLCAnSVNPODg1OV8xNScpOwoJICAgIENoYXJhY3RlclNldEVDSS5JU084ODU5XzE2ID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLklTTzg4NTlfMTYsIDE4LCAnSVNPLTg4NTktMTYnLCAnSVNPODg1OTE2JywgJ0lTTzg4NTlfMTYnKTsKCSAgICBDaGFyYWN0ZXJTZXRFQ0kuU0pJUyA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5TSklTLCAyMCwgJ1NKSVMnLCAnU2hpZnRfSklTJyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLkNwMTI1MCA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5DcDEyNTAsIDIxLCAnQ3AxMjUwJywgJ3dpbmRvd3MtMTI1MCcpOwoJICAgIENoYXJhY3RlclNldEVDSS5DcDEyNTEgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuQ3AxMjUxLCAyMiwgJ0NwMTI1MScsICd3aW5kb3dzLTEyNTEnKTsKCSAgICBDaGFyYWN0ZXJTZXRFQ0kuQ3AxMjUyID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLkNwMTI1MiwgMjMsICdDcDEyNTInLCAnd2luZG93cy0xMjUyJyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLkNwMTI1NiA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5DcDEyNTYsIDI0LCAnQ3AxMjU2JywgJ3dpbmRvd3MtMTI1NicpOwoJICAgIENoYXJhY3RlclNldEVDSS5Vbmljb2RlQmlnVW5tYXJrZWQgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuVW5pY29kZUJpZ1VubWFya2VkLCAyNSwgJ1VuaWNvZGVCaWdVbm1hcmtlZCcsICdVVEYtMTZCRScsICdVbmljb2RlQmlnJyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLlVURjggPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuVVRGOCwgMjYsICdVVEY4JywgJ1VURi04Jyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLkFTQ0lJID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLkFTQ0lJLCBJbnQzMkFycmF5LmZyb20oWzI3LCAxNzBdKSwgJ0FTQ0lJJywgJ1VTLUFTQ0lJJyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLkJpZzUgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuQmlnNSwgMjgsICdCaWc1Jyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLkdCMTgwMzAgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuR0IxODAzMCwgMjksICdHQjE4MDMwJywgJ0dCMjMxMicsICdFVUNfQ04nLCAnR0JLJyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLkVVQ19LUiA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5FVUNfS1IsIDMwLCAnRVVDX0tSJywgJ0VVQy1LUicpOwoJICAgIHJldHVybiBDaGFyYWN0ZXJTZXRFQ0k7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gQ2hhcmFjdGVyU2V0RUNJOwoKCX0oQ2hhcmFjdGVyU2V0RUNJKSk7CgoJdmFyIFN0cmluZ0VuY29kaW5nJDEgPSB7fTsKCgl2YXIgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24kMSA9IHt9OwoKCXZhciBfX2V4dGVuZHMkZSA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiQxLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7Cgl2YXIgRXhjZXB0aW9uXzEkNiA9IEV4Y2VwdGlvbiQxOwoJLyoqCgkgKiBDdXN0b20gRXJyb3IgY2xhc3Mgb2YgdHlwZSBFeGNlcHRpb24uCgkgKi8KCXZhciBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMkZShVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpIHsKCSAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzOwoJICAgIH0KCSAgICBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbi5raW5kID0gJ1Vuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uJzsKCSAgICByZXR1cm4gVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb247Cgl9KEV4Y2VwdGlvbl8xJDYuZGVmYXVsdCkpOwoJVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24kMS5kZWZhdWx0ID0gVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb247CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KFN0cmluZ0VuY29kaW5nJDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCXZhciBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbl8xJDEgPSBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiQxOwoJdmFyIENoYXJhY3RlclNldEVDSV8xJDIgPSBDaGFyYWN0ZXJTZXRFQ0k7CgkvKioKCSAqIFJlc3BvbnNpYmxlIGZvciBlbi9kZWNvZGluZyBzdHJpbmdzLgoJICovCgl2YXIgU3RyaW5nRW5jb2RpbmcgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gU3RyaW5nRW5jb2RpbmcoKSB7CgkgICAgfQoJICAgIC8qKgoJICAgICAqIERlY29kZXMgc29tZSBVaW50OEFycmF5IHRvIGEgc3RyaW5nIGZvcm1hdC4KCSAgICAgKi8KCSAgICBTdHJpbmdFbmNvZGluZy5kZWNvZGUgPSBmdW5jdGlvbiAoYnl0ZXMsIGVuY29kaW5nKSB7CgkgICAgICAgIHZhciBlbmNvZGluZ05hbWUgPSB0aGlzLmVuY29kaW5nTmFtZShlbmNvZGluZyk7CgkgICAgICAgIGlmICh0aGlzLmN1c3RvbURlY29kZXIpIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzLmN1c3RvbURlY29kZXIoYnl0ZXMsIGVuY29kaW5nTmFtZSk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gSW5jcmVhc2VzIGJyb3dzZXIgc3VwcG9ydC4KCSAgICAgICAgaWYgKHR5cGVvZiBUZXh0RGVjb2RlciA9PT0gJ3VuZGVmaW5lZCcgfHwgdGhpcy5zaG91bGREZWNvZGVPbkZhbGxiYWNrKGVuY29kaW5nTmFtZSkpIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzLmRlY29kZUZhbGxiYWNrKGJ5dGVzLCBlbmNvZGluZ05hbWUpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBuZXcgVGV4dERlY29kZXIoZW5jb2RpbmdOYW1lKS5kZWNvZGUoYnl0ZXMpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQ2hlY2tzIGlmIHRoZSBkZWNvZGluZyBtZXRob2Qgc2hvdWxkIHVzZSB0aGUgZmFsbGJhY2sgZm9yIGRlY29kaW5nCgkgICAgICogb25jZSBOb2RlIFRleHREZWNvZGVyIGRvZXNuJ3Qgc3VwcG9ydCBhbGwgZW5jb2RpbmcgZm9ybWF0cy4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBlbmNvZGluZ05hbWUKCSAgICAgKi8KCSAgICBTdHJpbmdFbmNvZGluZy5zaG91bGREZWNvZGVPbkZhbGxiYWNrID0gZnVuY3Rpb24gKGVuY29kaW5nTmFtZSkgewoJICAgICAgICByZXR1cm4gIVN0cmluZ0VuY29kaW5nLmlzQnJvd3NlcigpICYmIGVuY29kaW5nTmFtZSA9PT0gJ0lTTy04ODU5LTEnOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogRW5jb2RlcyBzb21lIHN0cmluZyBpbnRvIGEgVWludDhBcnJheS4KCSAgICAgKi8KCSAgICBTdHJpbmdFbmNvZGluZy5lbmNvZGUgPSBmdW5jdGlvbiAocywgZW5jb2RpbmcpIHsKCSAgICAgICAgdmFyIGVuY29kaW5nTmFtZSA9IHRoaXMuZW5jb2RpbmdOYW1lKGVuY29kaW5nKTsKCSAgICAgICAgaWYgKHRoaXMuY3VzdG9tRW5jb2RlcikgewoJICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tRW5jb2RlcihzLCBlbmNvZGluZ05hbWUpOwoJICAgICAgICB9CgkgICAgICAgIC8vIEluY3JlYXNlcyBicm93c2VyIHN1cHBvcnQuCgkgICAgICAgIGlmICh0eXBlb2YgVGV4dEVuY29kZXIgPT09ICd1bmRlZmluZWQnKSB7CgkgICAgICAgICAgICByZXR1cm4gdGhpcy5lbmNvZGVGYWxsYmFjayhzKTsKCSAgICAgICAgfQoJICAgICAgICAvLyBUZXh0RW5jb2RlciBvbmx5IGVuY29kZXMgdG8gVVRGOCBieSBkZWZhdWx0IGFzIHNwZWNpZmllZCBieSBlbmNvZGluZy5zcGVjLndoYXR3Zy5vcmcKCSAgICAgICAgcmV0dXJuIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShzKTsKCSAgICB9OwoJICAgIFN0cmluZ0VuY29kaW5nLmlzQnJvd3NlciA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB7fS50b1N0cmluZy5jYWxsKHdpbmRvdykgPT09ICdbb2JqZWN0IFdpbmRvd10nKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFJldHVybnMgdGhlIHN0cmluZyB2YWx1ZSBmcm9tIHNvbWUgZW5jb2RpbmcgY2hhcmFjdGVyIHNldC4KCSAgICAgKi8KCSAgICBTdHJpbmdFbmNvZGluZy5lbmNvZGluZ05hbWUgPSBmdW5jdGlvbiAoZW5jb2RpbmcpIHsKCSAgICAgICAgcmV0dXJuIHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycKCSAgICAgICAgICAgID8gZW5jb2RpbmcKCSAgICAgICAgICAgIDogZW5jb2RpbmcuZ2V0TmFtZSgpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogUmV0dXJucyBjaGFyYWN0ZXIgc2V0IGZyb20gc29tZSBlbmNvZGluZyBjaGFyYWN0ZXIgc2V0LgoJICAgICAqLwoJICAgIFN0cmluZ0VuY29kaW5nLmVuY29kaW5nQ2hhcmFjdGVyU2V0ID0gZnVuY3Rpb24gKGVuY29kaW5nKSB7CgkgICAgICAgIGlmIChlbmNvZGluZyBpbnN0YW5jZW9mIENoYXJhY3RlclNldEVDSV8xJDIuZGVmYXVsdCkgewoJICAgICAgICAgICAgcmV0dXJuIGVuY29kaW5nOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBDaGFyYWN0ZXJTZXRFQ0lfMSQyLmRlZmF1bHQuZ2V0Q2hhcmFjdGVyU2V0RUNJQnlOYW1lKGVuY29kaW5nKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFJ1bnMgYSBmYWxsYmFjayBmb3IgdGhlIG5hdGl2ZSBkZWNvZGluZyBmdW5jaW9uLgoJICAgICAqLwoJICAgIFN0cmluZ0VuY29kaW5nLmRlY29kZUZhbGxiYWNrID0gZnVuY3Rpb24gKGJ5dGVzLCBlbmNvZGluZykgewoJICAgICAgICB2YXIgY2hhcmFjdGVyU2V0ID0gdGhpcy5lbmNvZGluZ0NoYXJhY3RlclNldChlbmNvZGluZyk7CgkgICAgICAgIGlmIChTdHJpbmdFbmNvZGluZy5pc0RlY29kZUZhbGxiYWNrU3VwcG9ydGVkKGNoYXJhY3RlclNldCkpIHsKCSAgICAgICAgICAgIHZhciBzID0gJyc7CgkgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoXzEgPSBieXRlcy5sZW5ndGg7IGkgPCBsZW5ndGhfMTsgaSsrKSB7CgkgICAgICAgICAgICAgICAgdmFyIGggPSBieXRlc1tpXS50b1N0cmluZygxNik7CgkgICAgICAgICAgICAgICAgaWYgKGgubGVuZ3RoIDwgMikgewoJICAgICAgICAgICAgICAgICAgICBoID0gJzAnICsgaDsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgcyArPSAnJScgKyBoOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChzKTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoY2hhcmFjdGVyU2V0LmVxdWFscyhDaGFyYWN0ZXJTZXRFQ0lfMSQyLmRlZmF1bHQuVW5pY29kZUJpZ1VubWFya2VkKSkgewoJICAgICAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgbmV3IFVpbnQxNkFycmF5KGJ5dGVzLmJ1ZmZlcikpOwoJICAgICAgICB9CgkgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbl8xJDEuZGVmYXVsdCgiRW5jb2RpbmcgIiArIHRoaXMuZW5jb2RpbmdOYW1lKGVuY29kaW5nKSArICIgbm90IHN1cHBvcnRlZCBieSBmYWxsYmFjay4iKTsKCSAgICB9OwoJICAgIFN0cmluZ0VuY29kaW5nLmlzRGVjb2RlRmFsbGJhY2tTdXBwb3J0ZWQgPSBmdW5jdGlvbiAoY2hhcmFjdGVyU2V0KSB7CgkgICAgICAgIHJldHVybiBjaGFyYWN0ZXJTZXQuZXF1YWxzKENoYXJhY3RlclNldEVDSV8xJDIuZGVmYXVsdC5VVEY4KSB8fAoJICAgICAgICAgICAgY2hhcmFjdGVyU2V0LmVxdWFscyhDaGFyYWN0ZXJTZXRFQ0lfMSQyLmRlZmF1bHQuSVNPODg1OV8xKSB8fAoJICAgICAgICAgICAgY2hhcmFjdGVyU2V0LmVxdWFscyhDaGFyYWN0ZXJTZXRFQ0lfMSQyLmRlZmF1bHQuQVNDSUkpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogUnVucyBhIGZhbGxiYWNrIGZvciB0aGUgbmF0aXZlIGVuY29kaW5nIGZ1bmNpb24uCgkgICAgICoKCSAgICAgKiBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xNzE5Mjg0NS80MzY3NjgzCgkgICAgICovCgkgICAgU3RyaW5nRW5jb2RpbmcuZW5jb2RlRmFsbGJhY2sgPSBmdW5jdGlvbiAocykgewoJICAgICAgICB2YXIgZW5jb2RlZFVSSXN0cmluZyA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHMpKSk7CgkgICAgICAgIHZhciBjaGFyTGlzdCA9IGVuY29kZWRVUklzdHJpbmcuc3BsaXQoJycpOwoJICAgICAgICB2YXIgdWludEFycmF5ID0gW107CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hhckxpc3QubGVuZ3RoOyBpKyspIHsKCSAgICAgICAgICAgIHVpbnRBcnJheS5wdXNoKGNoYXJMaXN0W2ldLmNoYXJDb2RlQXQoMCkpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheSh1aW50QXJyYXkpOwoJICAgIH07CgkgICAgcmV0dXJuIFN0cmluZ0VuY29kaW5nOwoJfSgpKTsKCVN0cmluZ0VuY29kaW5nJDEuZGVmYXVsdCA9IFN0cmluZ0VuY29kaW5nOwoKCS8qCgkgKiBDb3B5cmlnaHQgKEMpIDIwMTAgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KFN0cmluZ1V0aWxzJDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcuY29tbW9uIHsqLwoJLyppbXBvcnQgamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0OyovCgkvKmltcG9ydCBqYXZhLnV0aWwuTWFwOyovCgl2YXIgRGVjb2RlSGludFR5cGVfMSQzID0gRGVjb2RlSGludFR5cGUkMTsKCXZhciBDaGFyYWN0ZXJTZXRFQ0lfMSQxID0gQ2hhcmFjdGVyU2V0RUNJOwoJdmFyIFN0cmluZ0VuY29kaW5nXzEkMSA9IFN0cmluZ0VuY29kaW5nJDE7CgkvKioKCSAqIENvbW1vbiBzdHJpbmctcmVsYXRlZCBmdW5jdGlvbnMuCgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqIEBhdXRob3IgQWxleCBEdXByZQoJICovCgl2YXIgU3RyaW5nVXRpbHMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gU3RyaW5nVXRpbHMoKSB7CgkgICAgfQoJICAgIC8vIFNISUZUX0pJUy5lcXVhbHNJZ25vcmVDYXNlKFBMQVRGT1JNX0RFRkFVTFRfRU5DT0RJTkcpIHx8CgkgICAgLy8gRVVDX0pQLmVxdWFsc0lnbm9yZUNhc2UoUExBVEZPUk1fREVGQVVMVF9FTkNPRElORyk7CgkgICAgU3RyaW5nVXRpbHMuY2FzdEFzTm9uVXRmOENoYXIgPSBmdW5jdGlvbiAoY29kZSwgZW5jb2RpbmcpIHsKCSAgICAgICAgaWYgKGVuY29kaW5nID09PSB2b2lkIDApIHsgZW5jb2RpbmcgPSBudWxsOyB9CgkgICAgICAgIC8vIElTTyA4ODU5LTEgaXMgdGhlIEphdmEgZGVmYXVsdCBhcyBVVEYtOCBpcyBKYXZhU2NyaXB0cwoJICAgICAgICAvLyB5b3UgY2FuIHNlZSB0aGlzIG1ldGhvZCBhcyBhIEphdmEgdmVyc2lvbiBvZiBTdHJpbmcuZnJvbUNoYXJDb2RlCgkgICAgICAgIHZhciBlID0gZW5jb2RpbmcgPyBlbmNvZGluZy5nZXROYW1lKCkgOiB0aGlzLklTTzg4NTkxOwoJICAgICAgICAvLyB1c2UgcGFzc2VkIGZvcm1hdCAoZnJvbUNoYXJDb2RlIHdpbGwgcmV0dXJuIFVURjggZW5jb2RpbmcpCgkgICAgICAgIHJldHVybiBTdHJpbmdFbmNvZGluZ18xJDEuZGVmYXVsdC5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoW2NvZGVdKSwgZSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcGFyYW0gYnl0ZXMgYnl0ZXMgZW5jb2RpbmcgYSBzdHJpbmcsIHdob3NlIGVuY29kaW5nIHNob3VsZCBiZSBndWVzc2VkCgkgICAgICogQHBhcmFtIGhpbnRzIGRlY29kZSBoaW50cyBpZiBhcHBsaWNhYmxlCgkgICAgICogQHJldHVybiBuYW1lIG9mIGd1ZXNzZWQgZW5jb2Rpbmc7IGF0IHRoZSBtb21lbnQgd2lsbCBvbmx5IGd1ZXNzIG9uZSBvZjoKCSAgICAgKiAge0BsaW5rICNTSElGVF9KSVN9LCB7QGxpbmsgI1VURjh9LCB7QGxpbmsgI0lTTzg4NTkxfSwgb3IgdGhlIHBsYXRmb3JtCgkgICAgICogIGRlZmF1bHQgZW5jb2RpbmcgaWYgbm9uZSBvZiB0aGVzZSBjYW4gcG9zc2libHkgYmUgY29ycmVjdAoJICAgICAqLwoJICAgIFN0cmluZ1V0aWxzLmd1ZXNzRW5jb2RpbmcgPSBmdW5jdGlvbiAoYnl0ZXMsIGhpbnRzKSB7CgkgICAgICAgIGlmIChoaW50cyAhPT0gbnVsbCAmJiBoaW50cyAhPT0gdW5kZWZpbmVkICYmIHVuZGVmaW5lZCAhPT0gaGludHMuZ2V0KERlY29kZUhpbnRUeXBlXzEkMy5kZWZhdWx0LkNIQVJBQ1RFUl9TRVQpKSB7CgkgICAgICAgICAgICByZXR1cm4gaGludHMuZ2V0KERlY29kZUhpbnRUeXBlXzEkMy5kZWZhdWx0LkNIQVJBQ1RFUl9TRVQpLnRvU3RyaW5nKCk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gRm9yIG5vdywgbWVyZWx5IHRyaWVzIHRvIGRpc3Rpbmd1aXNoIElTTy04ODU5LTEsIFVURi04IGFuZCBTaGlmdF9KSVMsCgkgICAgICAgIC8vIHdoaWNoIHNob3VsZCBiZSBieSBmYXIgdGhlIG1vc3QgY29tbW9uIGVuY29kaW5ncy4KCSAgICAgICAgdmFyIGxlbmd0aCA9IGJ5dGVzLmxlbmd0aDsKCSAgICAgICAgdmFyIGNhbkJlSVNPODg1OTEgPSB0cnVlOwoJICAgICAgICB2YXIgY2FuQmVTaGlmdEpJUyA9IHRydWU7CgkgICAgICAgIHZhciBjYW5CZVVURjggPSB0cnVlOwoJICAgICAgICB2YXIgdXRmOEJ5dGVzTGVmdCA9IDA7CgkgICAgICAgIC8vIGludCB1dGY4TG93Q2hhcnMgPSAwCgkgICAgICAgIHZhciB1dGYyQnl0ZXNDaGFycyA9IDA7CgkgICAgICAgIHZhciB1dGYzQnl0ZXNDaGFycyA9IDA7CgkgICAgICAgIHZhciB1dGY0Qnl0ZXNDaGFycyA9IDA7CgkgICAgICAgIHZhciBzamlzQnl0ZXNMZWZ0ID0gMDsKCSAgICAgICAgLy8gaW50IHNqaXNMb3dDaGFycyA9IDAKCSAgICAgICAgdmFyIHNqaXNLYXRha2FuYUNoYXJzID0gMDsKCSAgICAgICAgLy8gaW50IHNqaXNEb3VibGVCeXRlc0NoYXJzID0gMAoJICAgICAgICB2YXIgc2ppc0N1ckthdGFrYW5hV29yZExlbmd0aCA9IDA7CgkgICAgICAgIHZhciBzamlzQ3VyRG91YmxlQnl0ZXNXb3JkTGVuZ3RoID0gMDsKCSAgICAgICAgdmFyIHNqaXNNYXhLYXRha2FuYVdvcmRMZW5ndGggPSAwOwoJICAgICAgICB2YXIgc2ppc01heERvdWJsZUJ5dGVzV29yZExlbmd0aCA9IDA7CgkgICAgICAgIC8vIGludCBpc29Mb3dDaGFycyA9IDAKCSAgICAgICAgLy8gaW50IGlzb0hpZ2hDaGFycyA9IDAKCSAgICAgICAgdmFyIGlzb0hpZ2hPdGhlciA9IDA7CgkgICAgICAgIHZhciB1dGY4Ym9tID0gYnl0ZXMubGVuZ3RoID4gMyAmJgoJICAgICAgICAgICAgYnl0ZXNbMF0gPT09IC8qKGJ5dGUpICovIDB4RUYgJiYKCSAgICAgICAgICAgIGJ5dGVzWzFdID09PSAvKihieXRlKSAqLyAweEJCICYmCgkgICAgICAgICAgICBieXRlc1syXSA9PT0gLyooYnl0ZSkgKi8gMHhCRjsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGggJiYgKGNhbkJlSVNPODg1OTEgfHwgY2FuQmVTaGlmdEpJUyB8fCBjYW5CZVVURjgpOyBpKyspIHsKCSAgICAgICAgICAgIHZhciB2YWx1ZSA9IGJ5dGVzW2ldICYgMHhGRjsKCSAgICAgICAgICAgIC8vIFVURi04IHN0dWZmCgkgICAgICAgICAgICBpZiAoY2FuQmVVVEY4KSB7CgkgICAgICAgICAgICAgICAgaWYgKHV0ZjhCeXRlc0xlZnQgPiAwKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmICgodmFsdWUgJiAweDgwKSA9PT0gMCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgY2FuQmVVVEY4ID0gZmFsc2U7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICB1dGY4Qnl0ZXNMZWZ0LS07CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSBpZiAoKHZhbHVlICYgMHg4MCkgIT09IDApIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKCh2YWx1ZSAmIDB4NDApID09PSAwKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBjYW5CZVVURjggPSBmYWxzZTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHV0ZjhCeXRlc0xlZnQrKzsKCSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodmFsdWUgJiAweDIwKSA9PT0gMCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0ZjJCeXRlc0NoYXJzKys7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGY4Qnl0ZXNMZWZ0Kys7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh2YWx1ZSAmIDB4MTApID09PSAwKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0ZjNCeXRlc0NoYXJzKys7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGY4Qnl0ZXNMZWZ0Kys7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodmFsdWUgJiAweDA4KSA9PT0gMCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRmNEJ5dGVzQ2hhcnMrKzsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbkJlVVRGOCA9IGZhbHNlOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfSAvLyBlbHNlIHsKCSAgICAgICAgICAgICAgICAvLyB1dGY4TG93Q2hhcnMrKwoJICAgICAgICAgICAgICAgIC8vIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIC8vIElTTy04ODU5LTEgc3R1ZmYKCSAgICAgICAgICAgIGlmIChjYW5CZUlTTzg4NTkxKSB7CgkgICAgICAgICAgICAgICAgaWYgKHZhbHVlID4gMHg3RiAmJiB2YWx1ZSA8IDB4QTApIHsKCSAgICAgICAgICAgICAgICAgICAgY2FuQmVJU084ODU5MSA9IGZhbHNlOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA+IDB4OUYpIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlIDwgMHhDMCB8fCB2YWx1ZSA9PT0gMHhENyB8fCB2YWx1ZSA9PT0gMHhGNykgewoJICAgICAgICAgICAgICAgICAgICAgICAgaXNvSGlnaE90aGVyKys7CgkgICAgICAgICAgICAgICAgICAgIH0gLy8gZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgIC8vIGlzb0hpZ2hDaGFycysrCgkgICAgICAgICAgICAgICAgICAgIC8vIH0KCSAgICAgICAgICAgICAgICB9IC8vIGVsc2UgewoJICAgICAgICAgICAgICAgIC8vIGlzb0xvd0NoYXJzKysKCSAgICAgICAgICAgICAgICAvLyB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICAvLyBTaGlmdF9KSVMgc3R1ZmYKCSAgICAgICAgICAgIGlmIChjYW5CZVNoaWZ0SklTKSB7CgkgICAgICAgICAgICAgICAgaWYgKHNqaXNCeXRlc0xlZnQgPiAwKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA8IDB4NDAgfHwgdmFsdWUgPT09IDB4N0YgfHwgdmFsdWUgPiAweEZDKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBjYW5CZVNoaWZ0SklTID0gZmFsc2U7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBzamlzQnl0ZXNMZWZ0LS07CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09IDB4ODAgfHwgdmFsdWUgPT09IDB4QTAgfHwgdmFsdWUgPiAweEVGKSB7CgkgICAgICAgICAgICAgICAgICAgIGNhbkJlU2hpZnRKSVMgPSBmYWxzZTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPiAweEEwICYmIHZhbHVlIDwgMHhFMCkgewoJICAgICAgICAgICAgICAgICAgICBzamlzS2F0YWthbmFDaGFycysrOwoJICAgICAgICAgICAgICAgICAgICBzamlzQ3VyRG91YmxlQnl0ZXNXb3JkTGVuZ3RoID0gMDsKCSAgICAgICAgICAgICAgICAgICAgc2ppc0N1ckthdGFrYW5hV29yZExlbmd0aCsrOwoJICAgICAgICAgICAgICAgICAgICBpZiAoc2ppc0N1ckthdGFrYW5hV29yZExlbmd0aCA+IHNqaXNNYXhLYXRha2FuYVdvcmRMZW5ndGgpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHNqaXNNYXhLYXRha2FuYVdvcmRMZW5ndGggPSBzamlzQ3VyS2F0YWthbmFXb3JkTGVuZ3RoOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID4gMHg3RikgewoJICAgICAgICAgICAgICAgICAgICBzamlzQnl0ZXNMZWZ0Kys7CgkgICAgICAgICAgICAgICAgICAgIC8vIHNqaXNEb3VibGVCeXRlc0NoYXJzKysKCSAgICAgICAgICAgICAgICAgICAgc2ppc0N1ckthdGFrYW5hV29yZExlbmd0aCA9IDA7CgkgICAgICAgICAgICAgICAgICAgIHNqaXNDdXJEb3VibGVCeXRlc1dvcmRMZW5ndGgrKzsKCSAgICAgICAgICAgICAgICAgICAgaWYgKHNqaXNDdXJEb3VibGVCeXRlc1dvcmRMZW5ndGggPiBzamlzTWF4RG91YmxlQnl0ZXNXb3JkTGVuZ3RoKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBzamlzTWF4RG91YmxlQnl0ZXNXb3JkTGVuZ3RoID0gc2ppc0N1ckRvdWJsZUJ5dGVzV29yZExlbmd0aDsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgLy8gc2ppc0xvd0NoYXJzKysKCSAgICAgICAgICAgICAgICAgICAgc2ppc0N1ckthdGFrYW5hV29yZExlbmd0aCA9IDA7CgkgICAgICAgICAgICAgICAgICAgIHNqaXNDdXJEb3VibGVCeXRlc1dvcmRMZW5ndGggPSAwOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBpZiAoY2FuQmVVVEY4ICYmIHV0ZjhCeXRlc0xlZnQgPiAwKSB7CgkgICAgICAgICAgICBjYW5CZVVURjggPSBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoY2FuQmVTaGlmdEpJUyAmJiBzamlzQnl0ZXNMZWZ0ID4gMCkgewoJICAgICAgICAgICAgY2FuQmVTaGlmdEpJUyA9IGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIC8vIEVhc3kgLS0gaWYgdGhlcmUgaXMgQk9NIG9yIGF0IGxlYXN0IDEgdmFsaWQgbm90LXNpbmdsZSBieXRlIGNoYXJhY3RlciAoYW5kIG5vIGV2aWRlbmNlIGl0IGNhbid0IGJlIFVURi04KSwgZG9uZQoJICAgICAgICBpZiAoY2FuQmVVVEY4ICYmICh1dGY4Ym9tIHx8IHV0ZjJCeXRlc0NoYXJzICsgdXRmM0J5dGVzQ2hhcnMgKyB1dGY0Qnl0ZXNDaGFycyA+IDApKSB7CgkgICAgICAgICAgICByZXR1cm4gU3RyaW5nVXRpbHMuVVRGODsKCSAgICAgICAgfQoJICAgICAgICAvLyBFYXN5IC0tIGlmIGFzc3VtaW5nIFNoaWZ0X0pJUyBvciBhdCBsZWFzdCAzIHZhbGlkIGNvbnNlY3V0aXZlIG5vdC1hc2NpaSBjaGFyYWN0ZXJzIChhbmQgbm8gZXZpZGVuY2UgaXQgY2FuJ3QgYmUpLCBkb25lCgkgICAgICAgIGlmIChjYW5CZVNoaWZ0SklTICYmIChTdHJpbmdVdGlscy5BU1NVTUVfU0hJRlRfSklTIHx8IHNqaXNNYXhLYXRha2FuYVdvcmRMZW5ndGggPj0gMyB8fCBzamlzTWF4RG91YmxlQnl0ZXNXb3JkTGVuZ3RoID49IDMpKSB7CgkgICAgICAgICAgICByZXR1cm4gU3RyaW5nVXRpbHMuU0hJRlRfSklTOwoJICAgICAgICB9CgkgICAgICAgIC8vIERpc3Rpbmd1aXNoaW5nIFNoaWZ0X0pJUyBhbmQgSVNPLTg4NTktMSBjYW4gYmUgYSBsaXR0bGUgdG91Z2ggZm9yIHNob3J0IHdvcmRzLiBUaGUgY3J1ZGUgaGV1cmlzdGljIGlzOgoJICAgICAgICAvLyAtIElmIHdlIHNhdwoJICAgICAgICAvLyAgIC0gb25seSB0d28gY29uc2VjdXRpdmUga2F0YWthbmEgY2hhcnMgaW4gdGhlIHdob2xlIHRleHQsIG9yCgkgICAgICAgIC8vICAgLSBhdCBsZWFzdCAxMCUgb2YgYnl0ZXMgdGhhdCBjb3VsZCBiZSAidXBwZXIiIG5vdC1hbHBoYW51bWVyaWMgTGF0aW4xLAoJICAgICAgICAvLyAtIHRoZW4gd2UgY29uY2x1ZGUgU2hpZnRfSklTLCBlbHNlIElTTy04ODU5LTEKCSAgICAgICAgaWYgKGNhbkJlSVNPODg1OTEgJiYgY2FuQmVTaGlmdEpJUykgewoJICAgICAgICAgICAgcmV0dXJuIChzamlzTWF4S2F0YWthbmFXb3JkTGVuZ3RoID09PSAyICYmIHNqaXNLYXRha2FuYUNoYXJzID09PSAyKSB8fCBpc29IaWdoT3RoZXIgKiAxMCA+PSBsZW5ndGgKCSAgICAgICAgICAgICAgICA/IFN0cmluZ1V0aWxzLlNISUZUX0pJUyA6IFN0cmluZ1V0aWxzLklTTzg4NTkxOwoJICAgICAgICB9CgkgICAgICAgIC8vIE90aGVyd2lzZSwgdHJ5IGluIG9yZGVyIElTTy04ODU5LTEsIFNoaWZ0IEpJUywgVVRGLTggYW5kIGZhbGwgYmFjayB0byBkZWZhdWx0IHBsYXRmb3JtIGVuY29kaW5nCgkgICAgICAgIGlmIChjYW5CZUlTTzg4NTkxKSB7CgkgICAgICAgICAgICByZXR1cm4gU3RyaW5nVXRpbHMuSVNPODg1OTE7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGNhbkJlU2hpZnRKSVMpIHsKCSAgICAgICAgICAgIHJldHVybiBTdHJpbmdVdGlscy5TSElGVF9KSVM7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGNhbkJlVVRGOCkgewoJICAgICAgICAgICAgcmV0dXJuIFN0cmluZ1V0aWxzLlVURjg7CgkgICAgICAgIH0KCSAgICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSB0YWtlIGEgd2lsZCBndWVzcyB3aXRoIHBsYXRmb3JtIGVuY29kaW5nCgkgICAgICAgIHJldHVybiBTdHJpbmdVdGlscy5QTEFURk9STV9ERUZBVUxUX0VOQ09ESU5HOwoJICAgIH07CgkgICAgLyoqCgkgICAgICoKCSAgICAgKiBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xMzQzOTcxMS80MzY3NjgzCgkgICAgICoKCSAgICAgKiBAcGFyYW0gYXBwZW5kIFRoZSBuZXcgc3RyaW5nIHRvIGFwcGVuZC4KCSAgICAgKiBAcGFyYW0gYXJncyBBcmd1bWV0cyB2YWx1ZXMgdG8gYmUgZm9ybWF0ZWQuCgkgICAgICovCgkgICAgU3RyaW5nVXRpbHMuZm9ybWF0ID0gZnVuY3Rpb24gKGFwcGVuZCkgewoJICAgICAgICB2YXIgYXJncyA9IFtdOwoJICAgICAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykgewoJICAgICAgICAgICAgYXJnc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgaSA9IC0xOwoJICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhleHAsIHAwLCBwMSwgcDIsIHAzLCBwNCkgewoJICAgICAgICAgICAgaWYgKGV4cCA9PT0gJyUlJykKCSAgICAgICAgICAgICAgICByZXR1cm4gJyUnOwoJICAgICAgICAgICAgaWYgKGFyZ3NbKytpXSA9PT0gdW5kZWZpbmVkKQoJICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CgkgICAgICAgICAgICBleHAgPSBwMiA/IHBhcnNlSW50KHAyLnN1YnN0cigxKSkgOiB1bmRlZmluZWQ7CgkgICAgICAgICAgICB2YXIgYmFzZSA9IHAzID8gcGFyc2VJbnQocDMuc3Vic3RyKDEpKSA6IHVuZGVmaW5lZDsKCSAgICAgICAgICAgIHZhciB2YWw7CgkgICAgICAgICAgICBzd2l0Y2ggKHA0KSB7CgkgICAgICAgICAgICAgICAgY2FzZSAncyc6CgkgICAgICAgICAgICAgICAgICAgIHZhbCA9IGFyZ3NbaV07CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIGNhc2UgJ2MnOgoJICAgICAgICAgICAgICAgICAgICB2YWwgPSBhcmdzW2ldWzBdOwoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICBjYXNlICdmJzoKCSAgICAgICAgICAgICAgICAgICAgdmFsID0gcGFyc2VGbG9hdChhcmdzW2ldKS50b0ZpeGVkKGV4cCk7CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIGNhc2UgJ3AnOgoJICAgICAgICAgICAgICAgICAgICB2YWwgPSBwYXJzZUZsb2F0KGFyZ3NbaV0pLnRvUHJlY2lzaW9uKGV4cCk7CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIGNhc2UgJ2UnOgoJICAgICAgICAgICAgICAgICAgICB2YWwgPSBwYXJzZUZsb2F0KGFyZ3NbaV0pLnRvRXhwb25lbnRpYWwoZXhwKTsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSAneCc6CgkgICAgICAgICAgICAgICAgICAgIHZhbCA9IHBhcnNlSW50KGFyZ3NbaV0pLnRvU3RyaW5nKGJhc2UgPyBiYXNlIDogMTYpOwoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICBjYXNlICdkJzoKCSAgICAgICAgICAgICAgICAgICAgdmFsID0gcGFyc2VGbG9hdChwYXJzZUludChhcmdzW2ldLCBiYXNlID8gYmFzZSA6IDEwKS50b1ByZWNpc2lvbihleHApKS50b0ZpeGVkKDApOwoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHZhbCA9IHR5cGVvZiB2YWwgPT09ICdvYmplY3QnID8gSlNPTi5zdHJpbmdpZnkodmFsKSA6ICgrdmFsKS50b1N0cmluZyhiYXNlKTsKCSAgICAgICAgICAgIHZhciBzaXplID0gcGFyc2VJbnQocDEpOyAvKiBwYWRkaW5nIHNpemUgKi8KCSAgICAgICAgICAgIHZhciBjaCA9IHAxICYmIChwMVswXSArICcnKSA9PT0gJzAnID8gJzAnIDogJyAnOyAvKiBpc251bGw/ICovCgkgICAgICAgICAgICB3aGlsZSAodmFsLmxlbmd0aCA8IHNpemUpCgkgICAgICAgICAgICAgICAgdmFsID0gcDAgIT09IHVuZGVmaW5lZCA/IHZhbCArIGNoIDogY2ggKyB2YWw7IC8qIGlzbWludXM/ICovCgkgICAgICAgICAgICByZXR1cm4gdmFsOwoJICAgICAgICB9CgkgICAgICAgIHZhciByZWdleCA9IC8lKC0pPygwP1swLTldKyk/KFsuXVswLTldKyk/KFsjXVswLTldKyk/KFtzY2ZwZXhkJV0pL2c7CgkgICAgICAgIHJldHVybiBhcHBlbmQucmVwbGFjZShyZWdleCwgY2FsbGJhY2spOwoJICAgIH07CgkgICAgLyoqCgkgICAgICoKCSAgICAgKi8KCSAgICBTdHJpbmdVdGlscy5nZXRCeXRlcyA9IGZ1bmN0aW9uIChzdHIsIGVuY29kaW5nKSB7CgkgICAgICAgIHJldHVybiBTdHJpbmdFbmNvZGluZ18xJDEuZGVmYXVsdC5lbmNvZGUoc3RyLCBlbmNvZGluZyk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBSZXR1cm5zIHRoZSBjaGFyY29kZSBhdCB0aGUgc3BlY2lmaWVkIGluZGV4IG9yIGF0IGluZGV4IHplcm8uCgkgICAgICovCgkgICAgU3RyaW5nVXRpbHMuZ2V0Q2hhckNvZGUgPSBmdW5jdGlvbiAoc3RyLCBpbmRleCkgewoJICAgICAgICBpZiAoaW5kZXggPT09IHZvaWQgMCkgeyBpbmRleCA9IDA7IH0KCSAgICAgICAgcmV0dXJuIHN0ci5jaGFyQ29kZUF0KGluZGV4KTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFJldHVybnMgY2hhciBmb3IgZ2l2ZW4gY2hhcmNvZGUKCSAgICAgKi8KCSAgICBTdHJpbmdVdGlscy5nZXRDaGFyQXQgPSBmdW5jdGlvbiAoY2hhckNvZGUpIHsKCSAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUpOwoJICAgIH07CgkgICAgU3RyaW5nVXRpbHMuU0hJRlRfSklTID0gQ2hhcmFjdGVyU2V0RUNJXzEkMS5kZWZhdWx0LlNKSVMuZ2V0TmFtZSgpOyAvLyAiU0pJUyIKCSAgICBTdHJpbmdVdGlscy5HQjIzMTIgPSAnR0IyMzEyJzsKCSAgICBTdHJpbmdVdGlscy5JU084ODU5MSA9IENoYXJhY3RlclNldEVDSV8xJDEuZGVmYXVsdC5JU084ODU5XzEuZ2V0TmFtZSgpOyAvLyAiSVNPODg1OV8xIgoJICAgIFN0cmluZ1V0aWxzLkVVQ19KUCA9ICdFVUNfSlAnOwoJICAgIFN0cmluZ1V0aWxzLlVURjggPSBDaGFyYWN0ZXJTZXRFQ0lfMSQxLmRlZmF1bHQuVVRGOC5nZXROYW1lKCk7IC8vICJVVEY4IgoJICAgIFN0cmluZ1V0aWxzLlBMQVRGT1JNX0RFRkFVTFRfRU5DT0RJTkcgPSBTdHJpbmdVdGlscy5VVEY4OyAvLyAiVVRGOCIvL0NoYXJzZXQuZGVmYXVsdENoYXJzZXQoKS5uYW1lKCkKCSAgICBTdHJpbmdVdGlscy5BU1NVTUVfU0hJRlRfSklTID0gZmFsc2U7CgkgICAgcmV0dXJuIFN0cmluZ1V0aWxzOwoJfSgpKTsKCVN0cmluZ1V0aWxzJDEuZGVmYXVsdCA9IFN0cmluZ1V0aWxzOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShTdHJpbmdCdWlsZGVyJDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCXZhciBTdHJpbmdVdGlsc18xJDEgPSBTdHJpbmdVdGlscyQxOwoJdmFyIFN0cmluZ0J1aWxkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gU3RyaW5nQnVpbGRlcih2YWx1ZSkgewoJICAgICAgICBpZiAodmFsdWUgPT09IHZvaWQgMCkgeyB2YWx1ZSA9ICcnOyB9CgkgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKCSAgICB9CgkgICAgU3RyaW5nQnVpbGRlci5wcm90b3R5cGUuZW5hYmxlRGVjb2RpbmcgPSBmdW5jdGlvbiAoZW5jb2RpbmcpIHsKCSAgICAgICAgdGhpcy5lbmNvZGluZyA9IGVuY29kaW5nOwoJICAgICAgICByZXR1cm4gdGhpczsKCSAgICB9OwoJICAgIFN0cmluZ0J1aWxkZXIucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIChzKSB7CgkgICAgICAgIGlmICh0eXBlb2YgcyA9PT0gJ3N0cmluZycpIHsKCSAgICAgICAgICAgIHRoaXMudmFsdWUgKz0gcy50b1N0cmluZygpOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgaWYgKHRoaXMuZW5jb2RpbmcpIHsKCSAgICAgICAgICAgIC8vIHVzZSBwYXNzZWQgZm9ybWF0IChmcm9tQ2hhckNvZGUgd2lsbCByZXR1cm4gVVRGOCBlbmNvZGluZykKCSAgICAgICAgICAgIHRoaXMudmFsdWUgKz0gU3RyaW5nVXRpbHNfMSQxLmRlZmF1bHQuY2FzdEFzTm9uVXRmOENoYXIocywgdGhpcy5lbmNvZGluZyk7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAvLyBjb3JyZWN0bHkgY29udmVydHMgZnJvbSBVVEYtOCwgYnV0IG5vdCBvdGhlciBlbmNvZGluZ3MKCSAgICAgICAgICAgIHRoaXMudmFsdWUgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShzKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdGhpczsKCSAgICB9OwoJICAgIFN0cmluZ0J1aWxkZXIucHJvdG90eXBlLmFwcGVuZENoYXJzID0gZnVuY3Rpb24gKHN0ciwgb2Zmc2V0LCBsZW4pIHsKCSAgICAgICAgZm9yICh2YXIgaSA9IG9mZnNldDsgb2Zmc2V0IDwgb2Zmc2V0ICsgbGVuOyBpKyspIHsKCSAgICAgICAgICAgIHRoaXMuYXBwZW5kKHN0cltpXSk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRoaXM7CgkgICAgfTsKCSAgICBTdHJpbmdCdWlsZGVyLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnZhbHVlLmxlbmd0aDsKCSAgICB9OwoJICAgIFN0cmluZ0J1aWxkZXIucHJvdG90eXBlLmNoYXJBdCA9IGZ1bmN0aW9uIChuKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnZhbHVlLmNoYXJBdChuKTsKCSAgICB9OwoJICAgIFN0cmluZ0J1aWxkZXIucHJvdG90eXBlLmRlbGV0ZUNoYXJBdCA9IGZ1bmN0aW9uIChuKSB7CgkgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLnN1YnN0cigwLCBuKSArIHRoaXMudmFsdWUuc3Vic3RyaW5nKG4gKyAxKTsKCSAgICB9OwoJICAgIFN0cmluZ0J1aWxkZXIucHJvdG90eXBlLnNldENoYXJBdCA9IGZ1bmN0aW9uIChuLCBjKSB7CgkgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLnN1YnN0cigwLCBuKSArIGMgKyB0aGlzLnZhbHVlLnN1YnN0cihuICsgMSk7CgkgICAgfTsKCSAgICBTdHJpbmdCdWlsZGVyLnByb3RvdHlwZS5zdWJzdHJpbmcgPSBmdW5jdGlvbiAoc3RhcnQsIGVuZCkgewoJICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAbm90ZSBoZWxwZXIgbWV0aG9kIGZvciBSU1MgRXhwYW5kZWQKCSAgICAgKi8KCSAgICBTdHJpbmdCdWlsZGVyLnByb3RvdHlwZS5zZXRMZW5ndGhUb1plcm8gPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHRoaXMudmFsdWUgPSAnJzsKCSAgICB9OwoJICAgIFN0cmluZ0J1aWxkZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTsKCSAgICB9OwoJICAgIFN0cmluZ0J1aWxkZXIucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uIChuLCBjKSB7CgkgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLnN1YnN0cigwLCBuKSArIGMgKyB0aGlzLnZhbHVlLnN1YnN0cihuICsgYy5sZW5ndGgpOwoJICAgIH07CgkgICAgcmV0dXJuIFN0cmluZ0J1aWxkZXI7Cgl9KCkpOwoJU3RyaW5nQnVpbGRlciQxLmRlZmF1bHQgPSBTdHJpbmdCdWlsZGVyOwoKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoQml0TWF0cml4JDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcuY29tbW9uIHsqLwoJLyppbXBvcnQgamF2YS51dGlsLkFycmF5czsqLwoJdmFyIEJpdEFycmF5XzEkMSA9IEJpdEFycmF5JDE7Cgl2YXIgU3lzdGVtXzEkMyA9IFN5c3RlbSQxOwoJdmFyIEFycmF5c18xID0gQXJyYXlzJDE7Cgl2YXIgU3RyaW5nQnVpbGRlcl8xJDIgPSBTdHJpbmdCdWlsZGVyJDE7Cgl2YXIgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEkNyA9IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiQxOwoJLyoqCgkgKiA8cD5SZXByZXNlbnRzIGEgMkQgbWF0cml4IG9mIGJpdHMuIEluIGZ1bmN0aW9uIGFyZ3VtZW50cyBiZWxvdywgYW5kIHRocm91Z2hvdXQgdGhlIGNvbW1vbgoJICogbW9kdWxlLCB4IGlzIHRoZSBjb2x1bW4gcG9zaXRpb24sIGFuZCB5IGlzIHRoZSByb3cgcG9zaXRpb24uIFRoZSBvcmRlcmluZyBpcyBhbHdheXMgeCwgeS4KCSAqIFRoZSBvcmlnaW4gaXMgYXQgdGhlIHRvcC1sZWZ0LjwvcD4KCSAqCgkgKiA8cD5JbnRlcm5hbGx5IHRoZSBiaXRzIGFyZSByZXByZXNlbnRlZCBpbiBhIDEtRCBhcnJheSBvZiAzMi1iaXQgaW50cy4gSG93ZXZlciwgZWFjaCByb3cgYmVnaW5zCgkgKiB3aXRoIGEgbmV3IGludC4gVGhpcyBpcyBkb25lIGludGVudGlvbmFsbHkgc28gdGhhdCB3ZSBjYW4gY29weSBvdXQgYSByb3cgaW50byBhIEJpdEFycmF5IHZlcnkKCSAqIGVmZmljaWVudGx5LjwvcD4KCSAqCgkgKiA8cD5UaGUgb3JkZXJpbmcgb2YgYml0cyBpcyByb3ctbWFqb3IuIFdpdGhpbiBlYWNoIGludCwgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgYXJlIHVzZWQgZmlyc3QsCgkgKiBtZWFuaW5nIHRoZXkgcmVwcmVzZW50IGxvd2VyIHggdmFsdWVzLiBUaGlzIGlzIGNvbXBhdGlibGUgd2l0aCBCaXRBcnJheSdzIGltcGxlbWVudGF0aW9uLjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICogQGF1dGhvciBkc3dpdGtpbkBnb29nbGUuY29tIChEYW5pZWwgU3dpdGtpbikKCSAqLwoJdmFyIEJpdE1hdHJpeCAvKmltcGxlbWVudHMgQ2xvbmVhYmxlKi8gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgLyoqCgkgICAgICogQ3JlYXRlcyBhbiBlbXB0eSBzcXVhcmUge0BsaW5rIEJpdE1hdHJpeH0uCgkgICAgICoKCSAgICAgKiBAcGFyYW0gZGltZW5zaW9uIGhlaWdodCBhbmQgd2lkdGgKCSAgICAgKi8KCSAgICAvLyBwdWJsaWMgY29uc3RydWN0b3IoZGltZW5zaW9uOiBudW1iZXIgLyppbnQqLykgewoJICAgIC8vICAgdGhpcyhkaW1lbnNpb24sIGRpbWVuc2lvbikKCSAgICAvLyB9CgkgICAgLyoqCgkgICAgICogQ3JlYXRlcyBhbiBlbXB0eSB7QGxpbmsgQml0TWF0cml4fS4KCSAgICAgKgoJICAgICAqIEBwYXJhbSB3aWR0aCBiaXQgbWF0cml4IHdpZHRoCgkgICAgICogQHBhcmFtIGhlaWdodCBiaXQgbWF0cml4IGhlaWdodAoJICAgICAqLwoJICAgIC8vIHB1YmxpYyBjb25zdHJ1Y3Rvcih3aWR0aDogbnVtYmVyIC8qaW50Ki8sIGhlaWdodDogbnVtYmVyIC8qaW50Ki8pIHsKCSAgICAvLyAgIGlmICh3aWR0aCA8IDEgfHwgaGVpZ2h0IDwgMSkgewoJICAgIC8vICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJCb3RoIGRpbWVuc2lvbnMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCIpCgkgICAgLy8gICB9CgkgICAgLy8gICB0aGlzLndpZHRoID0gd2lkdGgKCSAgICAvLyAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0CgkgICAgLy8gICB0aGlzLnJvd1NpemUgPSAod2lkdGggKyAzMSkgLyAzMgoJICAgIC8vICAgYml0cyA9IG5ldyBpbnRbcm93U2l6ZSAqIGhlaWdodF07CgkgICAgLy8gfQoJICAgIGZ1bmN0aW9uIEJpdE1hdHJpeCh3aWR0aCAvKmludCovLCBoZWlnaHQgLyppbnQqLywgcm93U2l6ZSAvKmludCovLCBiaXRzKSB7CgkgICAgICAgIHRoaXMud2lkdGggPSB3aWR0aDsKCSAgICAgICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7CgkgICAgICAgIHRoaXMucm93U2l6ZSA9IHJvd1NpemU7CgkgICAgICAgIHRoaXMuYml0cyA9IGJpdHM7CgkgICAgICAgIGlmICh1bmRlZmluZWQgPT09IGhlaWdodCB8fCBudWxsID09PSBoZWlnaHQpIHsKCSAgICAgICAgICAgIGhlaWdodCA9IHdpZHRoOwoJICAgICAgICB9CgkgICAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0OwoJICAgICAgICBpZiAod2lkdGggPCAxIHx8IGhlaWdodCA8IDEpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSQ3LmRlZmF1bHQoJ0JvdGggZGltZW5zaW9ucyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwJyk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gcm93U2l6ZSB8fCBudWxsID09PSByb3dTaXplKSB7CgkgICAgICAgICAgICByb3dTaXplID0gTWF0aC5mbG9vcigod2lkdGggKyAzMSkgLyAzMik7CgkgICAgICAgIH0KCSAgICAgICAgdGhpcy5yb3dTaXplID0gcm93U2l6ZTsKCSAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gYml0cyB8fCBudWxsID09PSBiaXRzKSB7CgkgICAgICAgICAgICB0aGlzLmJpdHMgPSBuZXcgSW50MzJBcnJheSh0aGlzLnJvd1NpemUgKiB0aGlzLmhlaWdodCk7CgkgICAgICAgIH0KCSAgICB9CgkgICAgLyoqCgkgICAgICogSW50ZXJwcmV0cyBhIDJEIGFycmF5IG9mIGJvb2xlYW5zIGFzIGEge0BsaW5rIEJpdE1hdHJpeH0sIHdoZXJlICJ0cnVlIiBtZWFucyBhbiAib24iIGJpdC4KCSAgICAgKgoJICAgICAqIEBmdW5jdGlvbiBwYXJzZQoJICAgICAqIEBwYXJhbSBpbWFnZSBiaXRzIG9mIHRoZSBpbWFnZSwgYXMgYSByb3ctbWFqb3IgMkQgYXJyYXkuIEVsZW1lbnRzIGFyZSBhcnJheXMgcmVwcmVzZW50aW5nIHJvd3MKCSAgICAgKiBAcmV0dXJuIHtAbGluayBCaXRNYXRyaXh9IHJlcHJlc2VudGF0aW9uIG9mIGltYWdlCgkgICAgICovCgkgICAgQml0TWF0cml4LnBhcnNlRnJvbUJvb2xlYW5BcnJheSA9IGZ1bmN0aW9uIChpbWFnZSkgewoJICAgICAgICB2YXIgaGVpZ2h0ID0gaW1hZ2UubGVuZ3RoOwoJICAgICAgICB2YXIgd2lkdGggPSBpbWFnZVswXS5sZW5ndGg7CgkgICAgICAgIHZhciBiaXRzID0gbmV3IEJpdE1hdHJpeCh3aWR0aCwgaGVpZ2h0KTsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoZWlnaHQ7IGkrKykgewoJICAgICAgICAgICAgdmFyIGltYWdlSSA9IGltYWdlW2ldOwoJICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7CgkgICAgICAgICAgICAgICAgaWYgKGltYWdlSVtqXSkgewoJICAgICAgICAgICAgICAgICAgICBiaXRzLnNldChqLCBpKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGJpdHM7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKgoJICAgICAqIEBmdW5jdGlvbiBwYXJzZQoJICAgICAqIEBwYXJhbSBzdHJpbmdSZXByZXNlbnRhdGlvbgoJICAgICAqIEBwYXJhbSBzZXRTdHJpbmcKCSAgICAgKiBAcGFyYW0gdW5zZXRTdHJpbmcKCSAgICAgKi8KCSAgICBCaXRNYXRyaXgucGFyc2VGcm9tU3RyaW5nID0gZnVuY3Rpb24gKHN0cmluZ1JlcHJlc2VudGF0aW9uLCBzZXRTdHJpbmcsIHVuc2V0U3RyaW5nKSB7CgkgICAgICAgIGlmIChzdHJpbmdSZXByZXNlbnRhdGlvbiA9PT0gbnVsbCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xJDcuZGVmYXVsdCgnc3RyaW5nUmVwcmVzZW50YXRpb24gY2Fubm90IGJlIG51bGwnKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgYml0cyA9IG5ldyBBcnJheShzdHJpbmdSZXByZXNlbnRhdGlvbi5sZW5ndGgpOwoJICAgICAgICB2YXIgYml0c1BvcyA9IDA7CgkgICAgICAgIHZhciByb3dTdGFydFBvcyA9IDA7CgkgICAgICAgIHZhciByb3dMZW5ndGggPSAtMTsKCSAgICAgICAgdmFyIG5Sb3dzID0gMDsKCSAgICAgICAgdmFyIHBvcyA9IDA7CgkgICAgICAgIHdoaWxlIChwb3MgPCBzdHJpbmdSZXByZXNlbnRhdGlvbi5sZW5ndGgpIHsKCSAgICAgICAgICAgIGlmIChzdHJpbmdSZXByZXNlbnRhdGlvbi5jaGFyQXQocG9zKSA9PT0gJ1xuJyB8fAoJICAgICAgICAgICAgICAgIHN0cmluZ1JlcHJlc2VudGF0aW9uLmNoYXJBdChwb3MpID09PSAnXHInKSB7CgkgICAgICAgICAgICAgICAgaWYgKGJpdHNQb3MgPiByb3dTdGFydFBvcykgewoJICAgICAgICAgICAgICAgICAgICBpZiAocm93TGVuZ3RoID09PSAtMSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgcm93TGVuZ3RoID0gYml0c1BvcyAtIHJvd1N0YXJ0UG9zOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJpdHNQb3MgLSByb3dTdGFydFBvcyAhPT0gcm93TGVuZ3RoKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEkNy5kZWZhdWx0KCdyb3cgbGVuZ3RocyBkbyBub3QgbWF0Y2gnKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICByb3dTdGFydFBvcyA9IGJpdHNQb3M7CgkgICAgICAgICAgICAgICAgICAgIG5Sb3dzKys7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIHBvcysrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSBpZiAoc3RyaW5nUmVwcmVzZW50YXRpb24uc3Vic3RyaW5nKHBvcywgcG9zICsgc2V0U3RyaW5nLmxlbmd0aCkgPT09IHNldFN0cmluZykgewoJICAgICAgICAgICAgICAgIHBvcyArPSBzZXRTdHJpbmcubGVuZ3RoOwoJICAgICAgICAgICAgICAgIGJpdHNbYml0c1Bvc10gPSB0cnVlOwoJICAgICAgICAgICAgICAgIGJpdHNQb3MrKzsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgaWYgKHN0cmluZ1JlcHJlc2VudGF0aW9uLnN1YnN0cmluZyhwb3MsIHBvcyArIHVuc2V0U3RyaW5nLmxlbmd0aCkgPT09IHVuc2V0U3RyaW5nKSB7CgkgICAgICAgICAgICAgICAgcG9zICs9IHVuc2V0U3RyaW5nLmxlbmd0aDsKCSAgICAgICAgICAgICAgICBiaXRzW2JpdHNQb3NdID0gZmFsc2U7CgkgICAgICAgICAgICAgICAgYml0c1BvcysrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xJDcuZGVmYXVsdCgnaWxsZWdhbCBjaGFyYWN0ZXIgZW5jb3VudGVyZWQ6ICcgKyBzdHJpbmdSZXByZXNlbnRhdGlvbi5zdWJzdHJpbmcocG9zKSk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgLy8gbm8gRU9MIGF0IGVuZD8KCSAgICAgICAgaWYgKGJpdHNQb3MgPiByb3dTdGFydFBvcykgewoJICAgICAgICAgICAgaWYgKHJvd0xlbmd0aCA9PT0gLTEpIHsKCSAgICAgICAgICAgICAgICByb3dMZW5ndGggPSBiaXRzUG9zIC0gcm93U3RhcnRQb3M7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIGlmIChiaXRzUG9zIC0gcm93U3RhcnRQb3MgIT09IHJvd0xlbmd0aCkgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSQ3LmRlZmF1bHQoJ3JvdyBsZW5ndGhzIGRvIG5vdCBtYXRjaCcpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgblJvd3MrKzsKCSAgICAgICAgfQoJICAgICAgICB2YXIgbWF0cml4ID0gbmV3IEJpdE1hdHJpeChyb3dMZW5ndGgsIG5Sb3dzKTsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiaXRzUG9zOyBpKyspIHsKCSAgICAgICAgICAgIGlmIChiaXRzW2ldKSB7CgkgICAgICAgICAgICAgICAgbWF0cml4LnNldChNYXRoLmZsb29yKGkgJSByb3dMZW5ndGgpLCBNYXRoLmZsb29yKGkgLyByb3dMZW5ndGgpKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbWF0cml4OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogPHA+R2V0cyB0aGUgcmVxdWVzdGVkIGJpdCwgd2hlcmUgdHJ1ZSBtZWFucyBibGFjay48L3A+CgkgICAgICoKCSAgICAgKiBAcGFyYW0geCBUaGUgaG9yaXpvbnRhbCBjb21wb25lbnQgKGkuZS4gd2hpY2ggY29sdW1uKQoJICAgICAqIEBwYXJhbSB5IFRoZSB2ZXJ0aWNhbCBjb21wb25lbnQgKGkuZS4gd2hpY2ggcm93KQoJICAgICAqIEByZXR1cm4gdmFsdWUgb2YgZ2l2ZW4gYml0IGluIG1hdHJpeAoJICAgICAqLwoJICAgIEJpdE1hdHJpeC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKHggLyppbnQqLywgeSAvKmludCovKSB7CgkgICAgICAgIHZhciBvZmZzZXQgPSB5ICogdGhpcy5yb3dTaXplICsgTWF0aC5mbG9vcih4IC8gMzIpOwoJICAgICAgICByZXR1cm4gKCh0aGlzLmJpdHNbb2Zmc2V0XSA+Pj4gKHggJiAweDFmKSkgJiAxKSAhPT0gMDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPlNldHMgdGhlIGdpdmVuIGJpdCB0byB0cnVlLjwvcD4KCSAgICAgKgoJICAgICAqIEBwYXJhbSB4IFRoZSBob3Jpem9udGFsIGNvbXBvbmVudCAoaS5lLiB3aGljaCBjb2x1bW4pCgkgICAgICogQHBhcmFtIHkgVGhlIHZlcnRpY2FsIGNvbXBvbmVudCAoaS5lLiB3aGljaCByb3cpCgkgICAgICovCgkgICAgQml0TWF0cml4LnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoeCAvKmludCovLCB5IC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIG9mZnNldCA9IHkgKiB0aGlzLnJvd1NpemUgKyBNYXRoLmZsb29yKHggLyAzMik7CgkgICAgICAgIHRoaXMuYml0c1tvZmZzZXRdIHw9ICgxIDw8ICh4ICYgMHgxZikpICYgMHhGRkZGRkZGRjsKCSAgICB9OwoJICAgIEJpdE1hdHJpeC5wcm90b3R5cGUudW5zZXQgPSBmdW5jdGlvbiAoeCAvKmludCovLCB5IC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIG9mZnNldCA9IHkgKiB0aGlzLnJvd1NpemUgKyBNYXRoLmZsb29yKHggLyAzMik7CgkgICAgICAgIHRoaXMuYml0c1tvZmZzZXRdICY9IH4oKDEgPDwgKHggJiAweDFmKSkgJiAweEZGRkZGRkZGKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPkZsaXBzIHRoZSBnaXZlbiBiaXQuPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIHggVGhlIGhvcml6b250YWwgY29tcG9uZW50IChpLmUuIHdoaWNoIGNvbHVtbikKCSAgICAgKiBAcGFyYW0geSBUaGUgdmVydGljYWwgY29tcG9uZW50IChpLmUuIHdoaWNoIHJvdykKCSAgICAgKi8KCSAgICBCaXRNYXRyaXgucHJvdG90eXBlLmZsaXAgPSBmdW5jdGlvbiAoeCAvKmludCovLCB5IC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIG9mZnNldCA9IHkgKiB0aGlzLnJvd1NpemUgKyBNYXRoLmZsb29yKHggLyAzMik7CgkgICAgICAgIHRoaXMuYml0c1tvZmZzZXRdIF49ICgoMSA8PCAoeCAmIDB4MWYpKSAmIDB4RkZGRkZGRkYpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogRXhjbHVzaXZlLW9yIChYT1IpOiBGbGlwIHRoZSBiaXQgaW4gdGhpcyB7QGNvZGUgQml0TWF0cml4fSBpZiB0aGUgY29ycmVzcG9uZGluZwoJICAgICAqIG1hc2sgYml0IGlzIHNldC4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBtYXNrIFhPUiBtYXNrCgkgICAgICovCgkgICAgQml0TWF0cml4LnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiAobWFzaykgewoJICAgICAgICBpZiAodGhpcy53aWR0aCAhPT0gbWFzay5nZXRXaWR0aCgpIHx8IHRoaXMuaGVpZ2h0ICE9PSBtYXNrLmdldEhlaWdodCgpCgkgICAgICAgICAgICB8fCB0aGlzLnJvd1NpemUgIT09IG1hc2suZ2V0Um93U2l6ZSgpKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEkNy5kZWZhdWx0KCdpbnB1dCBtYXRyaXggZGltZW5zaW9ucyBkbyBub3QgbWF0Y2gnKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgcm93QXJyYXkgPSBuZXcgQml0QXJyYXlfMSQxLmRlZmF1bHQoTWF0aC5mbG9vcih0aGlzLndpZHRoIC8gMzIpICsgMSk7CgkgICAgICAgIHZhciByb3dTaXplID0gdGhpcy5yb3dTaXplOwoJICAgICAgICB2YXIgYml0cyA9IHRoaXMuYml0czsKCSAgICAgICAgZm9yICh2YXIgeSA9IDAsIGhlaWdodCA9IHRoaXMuaGVpZ2h0OyB5IDwgaGVpZ2h0OyB5KyspIHsKCSAgICAgICAgICAgIHZhciBvZmZzZXQgPSB5ICogcm93U2l6ZTsKCSAgICAgICAgICAgIHZhciByb3cgPSBtYXNrLmdldFJvdyh5LCByb3dBcnJheSkuZ2V0Qml0QXJyYXkoKTsKCSAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgcm93U2l6ZTsgeCsrKSB7CgkgICAgICAgICAgICAgICAgYml0c1tvZmZzZXQgKyB4XSBePSByb3dbeF07CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICB9OwoJICAgIC8qKgoJICAgICAqIENsZWFycyBhbGwgYml0cyAoc2V0cyB0byBmYWxzZSkuCgkgICAgICovCgkgICAgQml0TWF0cml4LnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIGJpdHMgPSB0aGlzLmJpdHM7CgkgICAgICAgIHZhciBtYXggPSBiaXRzLmxlbmd0aDsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXg7IGkrKykgewoJICAgICAgICAgICAgYml0c1tpXSA9IDA7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPlNldHMgYSBzcXVhcmUgcmVnaW9uIG9mIHRoZSBiaXQgbWF0cml4IHRvIHRydWUuPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIGxlZnQgVGhlIGhvcml6b250YWwgcG9zaXRpb24gdG8gYmVnaW4gYXQgKGluY2x1c2l2ZSkKCSAgICAgKiBAcGFyYW0gdG9wIFRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiB0byBiZWdpbiBhdCAoaW5jbHVzaXZlKQoJICAgICAqIEBwYXJhbSB3aWR0aCBUaGUgd2lkdGggb2YgdGhlIHJlZ2lvbgoJICAgICAqIEBwYXJhbSBoZWlnaHQgVGhlIGhlaWdodCBvZiB0aGUgcmVnaW9uCgkgICAgICovCgkgICAgQml0TWF0cml4LnByb3RvdHlwZS5zZXRSZWdpb24gPSBmdW5jdGlvbiAobGVmdCAvKmludCovLCB0b3AgLyppbnQqLywgd2lkdGggLyppbnQqLywgaGVpZ2h0IC8qaW50Ki8pIHsKCSAgICAgICAgaWYgKHRvcCA8IDAgfHwgbGVmdCA8IDApIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSQ3LmRlZmF1bHQoJ0xlZnQgYW5kIHRvcCBtdXN0IGJlIG5vbm5lZ2F0aXZlJyk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGhlaWdodCA8IDEgfHwgd2lkdGggPCAxKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEkNy5kZWZhdWx0KCdIZWlnaHQgYW5kIHdpZHRoIG11c3QgYmUgYXQgbGVhc3QgMScpOwoJICAgICAgICB9CgkgICAgICAgIHZhciByaWdodCA9IGxlZnQgKyB3aWR0aDsKCSAgICAgICAgdmFyIGJvdHRvbSA9IHRvcCArIGhlaWdodDsKCSAgICAgICAgaWYgKGJvdHRvbSA+IHRoaXMuaGVpZ2h0IHx8IHJpZ2h0ID4gdGhpcy53aWR0aCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xJDcuZGVmYXVsdCgnVGhlIHJlZ2lvbiBtdXN0IGZpdCBpbnNpZGUgdGhlIG1hdHJpeCcpOwoJICAgICAgICB9CgkgICAgICAgIHZhciByb3dTaXplID0gdGhpcy5yb3dTaXplOwoJICAgICAgICB2YXIgYml0cyA9IHRoaXMuYml0czsKCSAgICAgICAgZm9yICh2YXIgeSA9IHRvcDsgeSA8IGJvdHRvbTsgeSsrKSB7CgkgICAgICAgICAgICB2YXIgb2Zmc2V0ID0geSAqIHJvd1NpemU7CgkgICAgICAgICAgICBmb3IgKHZhciB4ID0gbGVmdDsgeCA8IHJpZ2h0OyB4KyspIHsKCSAgICAgICAgICAgICAgICBiaXRzW29mZnNldCArIE1hdGguZmxvb3IoeCAvIDMyKV0gfD0gKCgxIDw8ICh4ICYgMHgxZikpICYgMHhGRkZGRkZGRik7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEEgZmFzdCBtZXRob2QgdG8gcmV0cmlldmUgb25lIHJvdyBvZiBkYXRhIGZyb20gdGhlIG1hdHJpeCBhcyBhIEJpdEFycmF5LgoJICAgICAqCgkgICAgICogQHBhcmFtIHkgVGhlIHJvdyB0byByZXRyaWV2ZQoJICAgICAqIEBwYXJhbSByb3cgQW4gb3B0aW9uYWwgY2FsbGVyLWFsbG9jYXRlZCBCaXRBcnJheSwgd2lsbCBiZSBhbGxvY2F0ZWQgaWYgbnVsbCBvciB0b28gc21hbGwKCSAgICAgKiBAcmV0dXJuIFRoZSByZXN1bHRpbmcgQml0QXJyYXkgLSB0aGlzIHJlZmVyZW5jZSBzaG91bGQgYWx3YXlzIGJlIHVzZWQgZXZlbiB3aGVuIHBhc3NpbmcKCSAgICAgKiAgICAgICAgIHlvdXIgb3duIHJvdwoJICAgICAqLwoJICAgIEJpdE1hdHJpeC5wcm90b3R5cGUuZ2V0Um93ID0gZnVuY3Rpb24gKHkgLyppbnQqLywgcm93KSB7CgkgICAgICAgIGlmIChyb3cgPT09IG51bGwgfHwgcm93ID09PSB1bmRlZmluZWQgfHwgcm93LmdldFNpemUoKSA8IHRoaXMud2lkdGgpIHsKCSAgICAgICAgICAgIHJvdyA9IG5ldyBCaXRBcnJheV8xJDEuZGVmYXVsdCh0aGlzLndpZHRoKTsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIHJvdy5jbGVhcigpOwoJICAgICAgICB9CgkgICAgICAgIHZhciByb3dTaXplID0gdGhpcy5yb3dTaXplOwoJICAgICAgICB2YXIgYml0cyA9IHRoaXMuYml0czsKCSAgICAgICAgdmFyIG9mZnNldCA9IHkgKiByb3dTaXplOwoJICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHJvd1NpemU7IHgrKykgewoJICAgICAgICAgICAgcm93LnNldEJ1bGsoeCAqIDMyLCBiaXRzW29mZnNldCArIHhdKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gcm93OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHBhcmFtIHkgcm93IHRvIHNldAoJICAgICAqIEBwYXJhbSByb3cge0BsaW5rIEJpdEFycmF5fSB0byBjb3B5IGZyb20KCSAgICAgKi8KCSAgICBCaXRNYXRyaXgucHJvdG90eXBlLnNldFJvdyA9IGZ1bmN0aW9uICh5IC8qaW50Ki8sIHJvdykgewoJICAgICAgICBTeXN0ZW1fMSQzLmRlZmF1bHQuYXJyYXljb3B5KHJvdy5nZXRCaXRBcnJheSgpLCAwLCB0aGlzLmJpdHMsIHkgKiB0aGlzLnJvd1NpemUsIHRoaXMucm93U2l6ZSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBNb2RpZmllcyB0aGlzIHtAY29kZSBCaXRNYXRyaXh9IHRvIHJlcHJlc2VudCB0aGUgc2FtZSBidXQgcm90YXRlZCAxODAgZGVncmVlcwoJICAgICAqLwoJICAgIEJpdE1hdHJpeC5wcm90b3R5cGUucm90YXRlMTgwID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgd2lkdGggPSB0aGlzLmdldFdpZHRoKCk7CgkgICAgICAgIHZhciBoZWlnaHQgPSB0aGlzLmdldEhlaWdodCgpOwoJICAgICAgICB2YXIgdG9wUm93ID0gbmV3IEJpdEFycmF5XzEkMS5kZWZhdWx0KHdpZHRoKTsKCSAgICAgICAgdmFyIGJvdHRvbVJvdyA9IG5ldyBCaXRBcnJheV8xJDEuZGVmYXVsdCh3aWR0aCk7CgkgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGhfMSA9IE1hdGguZmxvb3IoKGhlaWdodCArIDEpIC8gMik7IGkgPCBsZW5ndGhfMTsgaSsrKSB7CgkgICAgICAgICAgICB0b3BSb3cgPSB0aGlzLmdldFJvdyhpLCB0b3BSb3cpOwoJICAgICAgICAgICAgYm90dG9tUm93ID0gdGhpcy5nZXRSb3coaGVpZ2h0IC0gMSAtIGksIGJvdHRvbVJvdyk7CgkgICAgICAgICAgICB0b3BSb3cucmV2ZXJzZSgpOwoJICAgICAgICAgICAgYm90dG9tUm93LnJldmVyc2UoKTsKCSAgICAgICAgICAgIHRoaXMuc2V0Um93KGksIGJvdHRvbVJvdyk7CgkgICAgICAgICAgICB0aGlzLnNldFJvdyhoZWlnaHQgLSAxIC0gaSwgdG9wUm93KTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgLyoqCgkgICAgICogVGhpcyBpcyB1c2VmdWwgaW4gZGV0ZWN0aW5nIHRoZSBlbmNsb3NpbmcgcmVjdGFuZ2xlIG9mIGEgJ3B1cmUnIGJhcmNvZGUuCgkgICAgICoKCSAgICAgKiBAcmV0dXJuIHtAY29kZSBsZWZ0LHRvcCx3aWR0aCxoZWlnaHR9IGVuY2xvc2luZyByZWN0YW5nbGUgb2YgYWxsIDEgYml0cywgb3IgbnVsbCBpZiBpdCBpcyBhbGwgd2hpdGUKCSAgICAgKi8KCSAgICBCaXRNYXRyaXgucHJvdG90eXBlLmdldEVuY2xvc2luZ1JlY3RhbmdsZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIHdpZHRoID0gdGhpcy53aWR0aDsKCSAgICAgICAgdmFyIGhlaWdodCA9IHRoaXMuaGVpZ2h0OwoJICAgICAgICB2YXIgcm93U2l6ZSA9IHRoaXMucm93U2l6ZTsKCSAgICAgICAgdmFyIGJpdHMgPSB0aGlzLmJpdHM7CgkgICAgICAgIHZhciBsZWZ0ID0gd2lkdGg7CgkgICAgICAgIHZhciB0b3AgPSBoZWlnaHQ7CgkgICAgICAgIHZhciByaWdodCA9IC0xOwoJICAgICAgICB2YXIgYm90dG9tID0gLTE7CgkgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKCSAgICAgICAgICAgIGZvciAodmFyIHgzMiA9IDA7IHgzMiA8IHJvd1NpemU7IHgzMisrKSB7CgkgICAgICAgICAgICAgICAgdmFyIHRoZUJpdHMgPSBiaXRzW3kgKiByb3dTaXplICsgeDMyXTsKCSAgICAgICAgICAgICAgICBpZiAodGhlQml0cyAhPT0gMCkgewoJICAgICAgICAgICAgICAgICAgICBpZiAoeSA8IHRvcCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgdG9wID0geTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBpZiAoeSA+IGJvdHRvbSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tID0geTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBpZiAoeDMyICogMzIgPCBsZWZ0KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYml0ID0gMDsKCSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgoKHRoZUJpdHMgPDwgKDMxIC0gYml0KSkgJiAweEZGRkZGRkZGKSA9PT0gMCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdCsrOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh4MzIgKiAzMiArIGJpdCkgPCBsZWZ0KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IHgzMiAqIDMyICsgYml0OwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGlmICh4MzIgKiAzMiArIDMxID4gcmlnaHQpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiaXQgPSAzMTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgodGhlQml0cyA+Pj4gYml0KSA9PT0gMCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdC0tOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh4MzIgKiAzMiArIGJpdCkgPiByaWdodCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0geDMyICogMzIgKyBiaXQ7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHJpZ2h0IDwgbGVmdCB8fCBib3R0b20gPCB0b3ApIHsKCSAgICAgICAgICAgIHJldHVybiBudWxsOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBJbnQzMkFycmF5LmZyb20oW2xlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0ICsgMSwgYm90dG9tIC0gdG9wICsgMV0pOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogVGhpcyBpcyB1c2VmdWwgaW4gZGV0ZWN0aW5nIGEgY29ybmVyIG9mIGEgJ3B1cmUnIGJhcmNvZGUuCgkgICAgICoKCSAgICAgKiBAcmV0dXJuIHtAY29kZSB4LHl9IGNvb3JkaW5hdGUgb2YgdG9wLWxlZnQtbW9zdCAxIGJpdCwgb3IgbnVsbCBpZiBpdCBpcyBhbGwgd2hpdGUKCSAgICAgKi8KCSAgICBCaXRNYXRyaXgucHJvdG90eXBlLmdldFRvcExlZnRPbkJpdCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIHJvd1NpemUgPSB0aGlzLnJvd1NpemU7CgkgICAgICAgIHZhciBiaXRzID0gdGhpcy5iaXRzOwoJICAgICAgICB2YXIgYml0c09mZnNldCA9IDA7CgkgICAgICAgIHdoaWxlIChiaXRzT2Zmc2V0IDwgYml0cy5sZW5ndGggJiYgYml0c1tiaXRzT2Zmc2V0XSA9PT0gMCkgewoJICAgICAgICAgICAgYml0c09mZnNldCsrOwoJICAgICAgICB9CgkgICAgICAgIGlmIChiaXRzT2Zmc2V0ID09PSBiaXRzLmxlbmd0aCkgewoJICAgICAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHkgPSBiaXRzT2Zmc2V0IC8gcm93U2l6ZTsKCSAgICAgICAgdmFyIHggPSAoYml0c09mZnNldCAlIHJvd1NpemUpICogMzI7CgkgICAgICAgIHZhciB0aGVCaXRzID0gYml0c1tiaXRzT2Zmc2V0XTsKCSAgICAgICAgdmFyIGJpdCA9IDA7CgkgICAgICAgIHdoaWxlICgoKHRoZUJpdHMgPDwgKDMxIC0gYml0KSkgJiAweEZGRkZGRkZGKSA9PT0gMCkgewoJICAgICAgICAgICAgYml0Kys7CgkgICAgICAgIH0KCSAgICAgICAgeCArPSBiaXQ7CgkgICAgICAgIHJldHVybiBJbnQzMkFycmF5LmZyb20oW3gsIHldKTsKCSAgICB9OwoJICAgIEJpdE1hdHJpeC5wcm90b3R5cGUuZ2V0Qm90dG9tUmlnaHRPbkJpdCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIHJvd1NpemUgPSB0aGlzLnJvd1NpemU7CgkgICAgICAgIHZhciBiaXRzID0gdGhpcy5iaXRzOwoJICAgICAgICB2YXIgYml0c09mZnNldCA9IGJpdHMubGVuZ3RoIC0gMTsKCSAgICAgICAgd2hpbGUgKGJpdHNPZmZzZXQgPj0gMCAmJiBiaXRzW2JpdHNPZmZzZXRdID09PSAwKSB7CgkgICAgICAgICAgICBiaXRzT2Zmc2V0LS07CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGJpdHNPZmZzZXQgPCAwKSB7CgkgICAgICAgICAgICByZXR1cm4gbnVsbDsKCSAgICAgICAgfQoJICAgICAgICB2YXIgeSA9IE1hdGguZmxvb3IoYml0c09mZnNldCAvIHJvd1NpemUpOwoJICAgICAgICB2YXIgeCA9IE1hdGguZmxvb3IoYml0c09mZnNldCAlIHJvd1NpemUpICogMzI7CgkgICAgICAgIHZhciB0aGVCaXRzID0gYml0c1tiaXRzT2Zmc2V0XTsKCSAgICAgICAgdmFyIGJpdCA9IDMxOwoJICAgICAgICB3aGlsZSAoKHRoZUJpdHMgPj4+IGJpdCkgPT09IDApIHsKCSAgICAgICAgICAgIGJpdC0tOwoJICAgICAgICB9CgkgICAgICAgIHggKz0gYml0OwoJICAgICAgICByZXR1cm4gSW50MzJBcnJheS5mcm9tKFt4LCB5XSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIFRoZSB3aWR0aCBvZiB0aGUgbWF0cml4CgkgICAgICovCgkgICAgQml0TWF0cml4LnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMud2lkdGg7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIFRoZSBoZWlnaHQgb2YgdGhlIG1hdHJpeAoJICAgICAqLwoJICAgIEJpdE1hdHJpeC5wcm90b3R5cGUuZ2V0SGVpZ2h0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5oZWlnaHQ7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIFRoZSByb3cgc2l6ZSBvZiB0aGUgbWF0cml4CgkgICAgICovCgkgICAgQml0TWF0cml4LnByb3RvdHlwZS5nZXRSb3dTaXplID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5yb3dTaXplOwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIEJpdE1hdHJpeC5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gKG8pIHsKCSAgICAgICAgaWYgKCEobyBpbnN0YW5jZW9mIEJpdE1hdHJpeCkpIHsKCSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgb3RoZXIgPSBvOwoJICAgICAgICByZXR1cm4gdGhpcy53aWR0aCA9PT0gb3RoZXIud2lkdGggJiYgdGhpcy5oZWlnaHQgPT09IG90aGVyLmhlaWdodCAmJiB0aGlzLnJvd1NpemUgPT09IG90aGVyLnJvd1NpemUgJiYKCSAgICAgICAgICAgIEFycmF5c18xLmRlZmF1bHQuZXF1YWxzKHRoaXMuYml0cywgb3RoZXIuYml0cyk7CgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgQml0TWF0cml4LnByb3RvdHlwZS5oYXNoQ29kZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIGhhc2ggPSB0aGlzLndpZHRoOwoJICAgICAgICBoYXNoID0gMzEgKiBoYXNoICsgdGhpcy53aWR0aDsKCSAgICAgICAgaGFzaCA9IDMxICogaGFzaCArIHRoaXMuaGVpZ2h0OwoJICAgICAgICBoYXNoID0gMzEgKiBoYXNoICsgdGhpcy5yb3dTaXplOwoJICAgICAgICBoYXNoID0gMzEgKiBoYXNoICsgQXJyYXlzXzEuZGVmYXVsdC5oYXNoQ29kZSh0aGlzLmJpdHMpOwoJICAgICAgICByZXR1cm4gaGFzaDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIHVzaW5nICJYIiBmb3Igc2V0IGFuZCAiICIgZm9yIHVuc2V0IGJpdHMKCSAgICAgKi8KCSAgICAvKkBPdmVycmlkZSovCgkgICAgLy8gcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7CgkgICAgLy8gICByZXR1cm4gdG9TdHJpbmcoIjogIlgsICIgICIpCgkgICAgLy8gfQoJICAgIC8qKgoJICAgICAqIEBwYXJhbSBzZXRTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBzZXQgYml0CgkgICAgICogQHBhcmFtIHVuc2V0U3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIHVuc2V0IGJpdAoJICAgICAqIEByZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGVudGlyZSBtYXRyaXggdXRpbGl6aW5nIGdpdmVuIHN0cmluZ3MKCSAgICAgKi8KCSAgICAvLyBwdWJsaWMgdG9TdHJpbmcoc2V0U3RyaW5nOiBzdHJpbmcgPSAiWCAiLCB1bnNldFN0cmluZzogc3RyaW5nID0gIiAgIik6IHN0cmluZyB7CgkgICAgLy8gICByZXR1cm4gdGhpcy5idWlsZFRvU3RyaW5nKHNldFN0cmluZywgdW5zZXRTdHJpbmcsICJcbiIpCgkgICAgLy8gfQoJICAgIC8qKgoJICAgICAqIEBwYXJhbSBzZXRTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBzZXQgYml0CgkgICAgICogQHBhcmFtIHVuc2V0U3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIHVuc2V0IGJpdAoJICAgICAqIEBwYXJhbSBsaW5lU2VwYXJhdG9yIG5ld2xpbmUgY2hhcmFjdGVyIGluIHN0cmluZyByZXByZXNlbnRhdGlvbgoJICAgICAqIEByZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGVudGlyZSBtYXRyaXggdXRpbGl6aW5nIGdpdmVuIHN0cmluZ3MgYW5kIGxpbmUgc2VwYXJhdG9yCgkgICAgICogQGRlcHJlY2F0ZWQgY2FsbCB7QGxpbmsgI3RvU3RyaW5nKFN0cmluZyxTdHJpbmcpfSBvbmx5LCB3aGljaCB1c2VzIFxuIGxpbmUgc2VwYXJhdG9yIGFsd2F5cwoJICAgICAqLwoJICAgIC8vIEBEZXByZWNhdGVkCgkgICAgQml0TWF0cml4LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChzZXRTdHJpbmcsIHVuc2V0U3RyaW5nLCBsaW5lU2VwYXJhdG9yKSB7CgkgICAgICAgIGlmIChzZXRTdHJpbmcgPT09IHZvaWQgMCkgeyBzZXRTdHJpbmcgPSAnWCAnOyB9CgkgICAgICAgIGlmICh1bnNldFN0cmluZyA9PT0gdm9pZCAwKSB7IHVuc2V0U3RyaW5nID0gJyAgJzsgfQoJICAgICAgICBpZiAobGluZVNlcGFyYXRvciA9PT0gdm9pZCAwKSB7IGxpbmVTZXBhcmF0b3IgPSAnXG4nOyB9CgkgICAgICAgIHJldHVybiB0aGlzLmJ1aWxkVG9TdHJpbmcoc2V0U3RyaW5nLCB1bnNldFN0cmluZywgbGluZVNlcGFyYXRvcik7CgkgICAgfTsKCSAgICBCaXRNYXRyaXgucHJvdG90eXBlLmJ1aWxkVG9TdHJpbmcgPSBmdW5jdGlvbiAoc2V0U3RyaW5nLCB1bnNldFN0cmluZywgbGluZVNlcGFyYXRvcikgewoJICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1aWxkZXJfMSQyLmRlZmF1bHQoKTsKCSAgICAgICAgLy8gcmVzdWx0LmFwcGVuZChsaW5lU2VwYXJhdG9yKTsKCSAgICAgICAgZm9yICh2YXIgeSA9IDAsIGhlaWdodCA9IHRoaXMuaGVpZ2h0OyB5IDwgaGVpZ2h0OyB5KyspIHsKCSAgICAgICAgICAgIGZvciAodmFyIHggPSAwLCB3aWR0aCA9IHRoaXMud2lkdGg7IHggPCB3aWR0aDsgeCsrKSB7CgkgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0aGlzLmdldCh4LCB5KSA/IHNldFN0cmluZyA6IHVuc2V0U3RyaW5nKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobGluZVNlcGFyYXRvcik7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIEJpdE1hdHJpeC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiBuZXcgQml0TWF0cml4KHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0LCB0aGlzLnJvd1NpemUsIHRoaXMuYml0cy5zbGljZSgpKTsKCSAgICB9OwoJICAgIHJldHVybiBCaXRNYXRyaXg7Cgl9KCkpOwoJQml0TWF0cml4JDEuZGVmYXVsdCA9IEJpdE1hdHJpeDsKCgl2YXIgTm90Rm91bmRFeGNlcHRpb24kMSA9IHt9OwoKCXZhciBfX2V4dGVuZHMkZCA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb3RGb3VuZEV4Y2VwdGlvbiQxLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7Cgl2YXIgRXhjZXB0aW9uXzEkNSA9IEV4Y2VwdGlvbiQxOwoJLyoqCgkgKiBDdXN0b20gRXJyb3IgY2xhc3Mgb2YgdHlwZSBFeGNlcHRpb24uCgkgKi8KCXZhciBOb3RGb3VuZEV4Y2VwdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMkZChOb3RGb3VuZEV4Y2VwdGlvbiwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBOb3RGb3VuZEV4Y2VwdGlvbigpIHsKCSAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzOwoJICAgIH0KCSAgICBOb3RGb3VuZEV4Y2VwdGlvbi5nZXROb3RGb3VuZEluc3RhbmNlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gbmV3IE5vdEZvdW5kRXhjZXB0aW9uKCk7CgkgICAgfTsKCSAgICBOb3RGb3VuZEV4Y2VwdGlvbi5raW5kID0gJ05vdEZvdW5kRXhjZXB0aW9uJzsKCSAgICByZXR1cm4gTm90Rm91bmRFeGNlcHRpb247Cgl9KEV4Y2VwdGlvbl8xJDUuZGVmYXVsdCkpOwoJTm90Rm91bmRFeGNlcHRpb24kMS5kZWZhdWx0ID0gTm90Rm91bmRFeGNlcHRpb247CgoJLyoKCSAqIENvcHlyaWdodCAyMDA5IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX2V4dGVuZHMkYyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIkMSwgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5jb21tb24geyovCgl2YXIgQmluYXJpemVyXzEgPSBCaW5hcml6ZXIkMTsKCXZhciBCaXRBcnJheV8xID0gQml0QXJyYXkkMTsKCXZhciBCaXRNYXRyaXhfMSQ1ID0gQml0TWF0cml4JDE7Cgl2YXIgTm90Rm91bmRFeGNlcHRpb25fMSQ2ID0gTm90Rm91bmRFeGNlcHRpb24kMTsKCS8qKgoJICogVGhpcyBCaW5hcml6ZXIgaW1wbGVtZW50YXRpb24gdXNlcyB0aGUgb2xkIFpYaW5nIGdsb2JhbCBoaXN0b2dyYW0gYXBwcm9hY2guIEl0IGlzIHN1aXRhYmxlCgkgKiBmb3IgbG93LWVuZCBtb2JpbGUgZGV2aWNlcyB3aGljaCBkb24ndCBoYXZlIGVub3VnaCBDUFUgb3IgbWVtb3J5IHRvIHVzZSBhIGxvY2FsIHRocmVzaG9sZGluZwoJICogYWxnb3JpdGhtLiBIb3dldmVyLCBiZWNhdXNlIGl0IHBpY2tzIGEgZ2xvYmFsIGJsYWNrIHBvaW50LCBpdCBjYW5ub3QgaGFuZGxlIGRpZmZpY3VsdCBzaGFkb3dzCgkgKiBhbmQgZ3JhZGllbnRzLgoJICoKCSAqIEZhc3RlciBtb2JpbGUgZGV2aWNlcyBhbmQgYWxsIGRlc2t0b3AgYXBwbGljYXRpb25zIHNob3VsZCBwcm9iYWJseSB1c2UgSHlicmlkQmluYXJpemVyIGluc3RlYWQuCgkgKgoJICogQGF1dGhvciBkc3dpdGtpbkBnb29nbGUuY29tIChEYW5pZWwgU3dpdGtpbikKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKi8KCXZhciBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzJGMoR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLCBfc3VwZXIpOwoJICAgIGZ1bmN0aW9uIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplcihzb3VyY2UpIHsKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgc291cmNlKSB8fCB0aGlzOwoJICAgICAgICBfdGhpcy5sdW1pbmFuY2VzID0gR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLkVNUFRZOwoJICAgICAgICBfdGhpcy5idWNrZXRzID0gbmV3IEludDMyQXJyYXkoR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLkxVTUlOQU5DRV9CVUNLRVRTKTsKCSAgICAgICAgcmV0dXJuIF90aGlzOwoJICAgIH0KCSAgICAvLyBBcHBsaWVzIHNpbXBsZSBzaGFycGVuaW5nIHRvIHRoZSByb3cgZGF0YSB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIG9mIHRoZSAxRCBSZWFkZXJzLgoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIucHJvdG90eXBlLmdldEJsYWNrUm93ID0gZnVuY3Rpb24gKHkgLyppbnQqLywgcm93KSB7CgkgICAgICAgIHZhciBzb3VyY2UgPSB0aGlzLmdldEx1bWluYW5jZVNvdXJjZSgpOwoJICAgICAgICB2YXIgd2lkdGggPSBzb3VyY2UuZ2V0V2lkdGgoKTsKCSAgICAgICAgaWYgKHJvdyA9PT0gdW5kZWZpbmVkIHx8IHJvdyA9PT0gbnVsbCB8fCByb3cuZ2V0U2l6ZSgpIDwgd2lkdGgpIHsKCSAgICAgICAgICAgIHJvdyA9IG5ldyBCaXRBcnJheV8xLmRlZmF1bHQod2lkdGgpOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgcm93LmNsZWFyKCk7CgkgICAgICAgIH0KCSAgICAgICAgdGhpcy5pbml0QXJyYXlzKHdpZHRoKTsKCSAgICAgICAgdmFyIGxvY2FsTHVtaW5hbmNlcyA9IHNvdXJjZS5nZXRSb3coeSwgdGhpcy5sdW1pbmFuY2VzKTsKCSAgICAgICAgdmFyIGxvY2FsQnVja2V0cyA9IHRoaXMuYnVja2V0czsKCSAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CgkgICAgICAgICAgICBsb2NhbEJ1Y2tldHNbKGxvY2FsTHVtaW5hbmNlc1t4XSAmIDB4ZmYpID4+IEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5MVU1JTkFOQ0VfU0hJRlRdKys7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGJsYWNrUG9pbnQgPSBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIuZXN0aW1hdGVCbGFja1BvaW50KGxvY2FsQnVja2V0cyk7CgkgICAgICAgIGlmICh3aWR0aCA8IDMpIHsKCSAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgdmVyeSBzbWFsbCBpbWFnZXMKCSAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgd2lkdGg7IHgrKykgewoJICAgICAgICAgICAgICAgIGlmICgobG9jYWxMdW1pbmFuY2VzW3hdICYgMHhmZikgPCBibGFja1BvaW50KSB7CgkgICAgICAgICAgICAgICAgICAgIHJvdy5zZXQoeCk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgdmFyIGxlZnQgPSBsb2NhbEx1bWluYW5jZXNbMF0gJiAweGZmOwoJICAgICAgICAgICAgdmFyIGNlbnRlciA9IGxvY2FsTHVtaW5hbmNlc1sxXSAmIDB4ZmY7CgkgICAgICAgICAgICBmb3IgKHZhciB4ID0gMTsgeCA8IHdpZHRoIC0gMTsgeCsrKSB7CgkgICAgICAgICAgICAgICAgdmFyIHJpZ2h0ID0gbG9jYWxMdW1pbmFuY2VzW3ggKyAxXSAmIDB4ZmY7CgkgICAgICAgICAgICAgICAgLy8gQSBzaW1wbGUgLTEgNCAtMSBib3ggZmlsdGVyIHdpdGggYSB3ZWlnaHQgb2YgMi4KCSAgICAgICAgICAgICAgICBpZiAoKChjZW50ZXIgKiA0KSAtIGxlZnQgLSByaWdodCkgLyAyIDwgYmxhY2tQb2ludCkgewoJICAgICAgICAgICAgICAgICAgICByb3cuc2V0KHgpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBsZWZ0ID0gY2VudGVyOwoJICAgICAgICAgICAgICAgIGNlbnRlciA9IHJpZ2h0OwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByb3c7CgkgICAgfTsKCSAgICAvLyBEb2VzIG5vdCBzaGFycGVuIHRoZSBkYXRhLCBhcyB0aGlzIGNhbGwgaXMgaW50ZW5kZWQgdG8gb25seSBiZSB1c2VkIGJ5IDJEIFJlYWRlcnMuCgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5wcm90b3R5cGUuZ2V0QmxhY2tNYXRyaXggPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHZhciBzb3VyY2UgPSB0aGlzLmdldEx1bWluYW5jZVNvdXJjZSgpOwoJICAgICAgICB2YXIgd2lkdGggPSBzb3VyY2UuZ2V0V2lkdGgoKTsKCSAgICAgICAgdmFyIGhlaWdodCA9IHNvdXJjZS5nZXRIZWlnaHQoKTsKCSAgICAgICAgdmFyIG1hdHJpeCA9IG5ldyBCaXRNYXRyaXhfMSQ1LmRlZmF1bHQod2lkdGgsIGhlaWdodCk7CgkgICAgICAgIC8vIFF1aWNrbHkgY2FsY3VsYXRlcyB0aGUgaGlzdG9ncmFtIGJ5IHNhbXBsaW5nIGZvdXIgcm93cyBmcm9tIHRoZSBpbWFnZS4gVGhpcyBwcm92ZWQgdG8gYmUKCSAgICAgICAgLy8gbW9yZSByb2J1c3Qgb24gdGhlIGJsYWNrYm94IHRlc3RzIHRoYW4gc2FtcGxpbmcgYSBkaWFnb25hbCBhcyB3ZSB1c2VkIHRvIGRvLgoJICAgICAgICB0aGlzLmluaXRBcnJheXMod2lkdGgpOwoJICAgICAgICB2YXIgbG9jYWxCdWNrZXRzID0gdGhpcy5idWNrZXRzOwoJICAgICAgICBmb3IgKHZhciB5ID0gMTsgeSA8IDU7IHkrKykgewoJICAgICAgICAgICAgdmFyIHJvdyA9IE1hdGguZmxvb3IoKGhlaWdodCAqIHkpIC8gNSk7CgkgICAgICAgICAgICB2YXIgbG9jYWxMdW1pbmFuY2VzXzEgPSBzb3VyY2UuZ2V0Um93KHJvdywgdGhpcy5sdW1pbmFuY2VzKTsKCSAgICAgICAgICAgIHZhciByaWdodCA9IE1hdGguZmxvb3IoKHdpZHRoICogNCkgLyA1KTsKCSAgICAgICAgICAgIGZvciAodmFyIHggPSBNYXRoLmZsb29yKHdpZHRoIC8gNSk7IHggPCByaWdodDsgeCsrKSB7CgkgICAgICAgICAgICAgICAgdmFyIHBpeGVsID0gbG9jYWxMdW1pbmFuY2VzXzFbeF0gJiAweGZmOwoJICAgICAgICAgICAgICAgIGxvY2FsQnVja2V0c1twaXhlbCA+PiBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIuTFVNSU5BTkNFX1NISUZUXSsrOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHZhciBibGFja1BvaW50ID0gR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLmVzdGltYXRlQmxhY2tQb2ludChsb2NhbEJ1Y2tldHMpOwoJICAgICAgICAvLyBXZSBkZWxheSByZWFkaW5nIHRoZSBlbnRpcmUgaW1hZ2UgbHVtaW5hbmNlIHVudGlsIHRoZSBibGFjayBwb2ludCBlc3RpbWF0aW9uIHN1Y2NlZWRzLgoJICAgICAgICAvLyBBbHRob3VnaCB3ZSBlbmQgdXAgcmVhZGluZyBmb3VyIHJvd3MgdHdpY2UsIGl0IGlzIGNvbnNpc3RlbnQgd2l0aCBvdXIgbW90dG8gb2YKCSAgICAgICAgLy8gImZhaWwgcXVpY2tseSIgd2hpY2ggaXMgbmVjZXNzYXJ5IGZvciBjb250aW51b3VzIHNjYW5uaW5nLgoJICAgICAgICB2YXIgbG9jYWxMdW1pbmFuY2VzID0gc291cmNlLmdldE1hdHJpeCgpOwoJICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7CgkgICAgICAgICAgICB2YXIgb2Zmc2V0ID0geSAqIHdpZHRoOwoJICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CgkgICAgICAgICAgICAgICAgdmFyIHBpeGVsID0gbG9jYWxMdW1pbmFuY2VzW29mZnNldCArIHhdICYgMHhmZjsKCSAgICAgICAgICAgICAgICBpZiAocGl4ZWwgPCBibGFja1BvaW50KSB7CgkgICAgICAgICAgICAgICAgICAgIG1hdHJpeC5zZXQoeCwgeSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBtYXRyaXg7CgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLnByb3RvdHlwZS5jcmVhdGVCaW5hcml6ZXIgPSBmdW5jdGlvbiAoc291cmNlKSB7CgkgICAgICAgIHJldHVybiBuZXcgR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyKHNvdXJjZSk7CgkgICAgfTsKCSAgICBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIucHJvdG90eXBlLmluaXRBcnJheXMgPSBmdW5jdGlvbiAobHVtaW5hbmNlU2l6ZSAvKmludCovKSB7CgkgICAgICAgIGlmICh0aGlzLmx1bWluYW5jZXMubGVuZ3RoIDwgbHVtaW5hbmNlU2l6ZSkgewoJICAgICAgICAgICAgdGhpcy5sdW1pbmFuY2VzID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGx1bWluYW5jZVNpemUpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBidWNrZXRzID0gdGhpcy5idWNrZXRzOwoJICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5MVU1JTkFOQ0VfQlVDS0VUUzsgeCsrKSB7CgkgICAgICAgICAgICBidWNrZXRzW3hdID0gMDsKCSAgICAgICAgfQoJICAgIH07CgkgICAgR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLmVzdGltYXRlQmxhY2tQb2ludCA9IGZ1bmN0aW9uIChidWNrZXRzKSB7CgkgICAgICAgIC8vIEZpbmQgdGhlIHRhbGxlc3QgcGVhayBpbiB0aGUgaGlzdG9ncmFtLgoJICAgICAgICB2YXIgbnVtQnVja2V0cyA9IGJ1Y2tldHMubGVuZ3RoOwoJICAgICAgICB2YXIgbWF4QnVja2V0Q291bnQgPSAwOwoJICAgICAgICB2YXIgZmlyc3RQZWFrID0gMDsKCSAgICAgICAgdmFyIGZpcnN0UGVha1NpemUgPSAwOwoJICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IG51bUJ1Y2tldHM7IHgrKykgewoJICAgICAgICAgICAgaWYgKGJ1Y2tldHNbeF0gPiBmaXJzdFBlYWtTaXplKSB7CgkgICAgICAgICAgICAgICAgZmlyc3RQZWFrID0geDsKCSAgICAgICAgICAgICAgICBmaXJzdFBlYWtTaXplID0gYnVja2V0c1t4XTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmIChidWNrZXRzW3hdID4gbWF4QnVja2V0Q291bnQpIHsKCSAgICAgICAgICAgICAgICBtYXhCdWNrZXRDb3VudCA9IGJ1Y2tldHNbeF07CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgLy8gRmluZCB0aGUgc2Vjb25kLXRhbGxlc3QgcGVhayB3aGljaCBpcyBzb21ld2hhdCBmYXIgZnJvbSB0aGUgdGFsbGVzdCBwZWFrLgoJICAgICAgICB2YXIgc2Vjb25kUGVhayA9IDA7CgkgICAgICAgIHZhciBzZWNvbmRQZWFrU2NvcmUgPSAwOwoJICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IG51bUJ1Y2tldHM7IHgrKykgewoJICAgICAgICAgICAgdmFyIGRpc3RhbmNlVG9CaWdnZXN0ID0geCAtIGZpcnN0UGVhazsKCSAgICAgICAgICAgIC8vIEVuY291cmFnZSBtb3JlIGRpc3RhbnQgc2Vjb25kIHBlYWtzIGJ5IG11bHRpcGx5aW5nIGJ5IHNxdWFyZSBvZiBkaXN0YW5jZS4KCSAgICAgICAgICAgIHZhciBzY29yZSA9IGJ1Y2tldHNbeF0gKiBkaXN0YW5jZVRvQmlnZ2VzdCAqIGRpc3RhbmNlVG9CaWdnZXN0OwoJICAgICAgICAgICAgaWYgKHNjb3JlID4gc2Vjb25kUGVha1Njb3JlKSB7CgkgICAgICAgICAgICAgICAgc2Vjb25kUGVhayA9IHg7CgkgICAgICAgICAgICAgICAgc2Vjb25kUGVha1Njb3JlID0gc2NvcmU7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgLy8gTWFrZSBzdXJlIGZpcnN0UGVhayBjb3JyZXNwb25kcyB0byB0aGUgYmxhY2sgcGVhay4KCSAgICAgICAgaWYgKGZpcnN0UGVhayA+IHNlY29uZFBlYWspIHsKCSAgICAgICAgICAgIHZhciB0ZW1wID0gZmlyc3RQZWFrOwoJICAgICAgICAgICAgZmlyc3RQZWFrID0gc2Vjb25kUGVhazsKCSAgICAgICAgICAgIHNlY29uZFBlYWsgPSB0ZW1wOwoJICAgICAgICB9CgkgICAgICAgIC8vIElmIHRoZXJlIGlzIHRvbyBsaXR0bGUgY29udHJhc3QgaW4gdGhlIGltYWdlIHRvIHBpY2sgYSBtZWFuaW5nZnVsIGJsYWNrIHBvaW50LCB0aHJvdyByYXRoZXIKCSAgICAgICAgLy8gdGhhbiB3YXN0ZSB0aW1lIHRyeWluZyB0byBkZWNvZGUgdGhlIGltYWdlLCBhbmQgcmlzayBmYWxzZSBwb3NpdGl2ZXMuCgkgICAgICAgIGlmIChzZWNvbmRQZWFrIC0gZmlyc3RQZWFrIDw9IG51bUJ1Y2tldHMgLyAxNikgewoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEkNi5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gRmluZCBhIHZhbGxleSBiZXR3ZWVuIHRoZW0gdGhhdCBpcyBsb3cgYW5kIGNsb3NlciB0byB0aGUgd2hpdGUgcGVhay4KCSAgICAgICAgdmFyIGJlc3RWYWxsZXkgPSBzZWNvbmRQZWFrIC0gMTsKCSAgICAgICAgdmFyIGJlc3RWYWxsZXlTY29yZSA9IC0xOwoJICAgICAgICBmb3IgKHZhciB4ID0gc2Vjb25kUGVhayAtIDE7IHggPiBmaXJzdFBlYWs7IHgtLSkgewoJICAgICAgICAgICAgdmFyIGZyb21GaXJzdCA9IHggLSBmaXJzdFBlYWs7CgkgICAgICAgICAgICB2YXIgc2NvcmUgPSBmcm9tRmlyc3QgKiBmcm9tRmlyc3QgKiAoc2Vjb25kUGVhayAtIHgpICogKG1heEJ1Y2tldENvdW50IC0gYnVja2V0c1t4XSk7CgkgICAgICAgICAgICBpZiAoc2NvcmUgPiBiZXN0VmFsbGV5U2NvcmUpIHsKCSAgICAgICAgICAgICAgICBiZXN0VmFsbGV5ID0geDsKCSAgICAgICAgICAgICAgICBiZXN0VmFsbGV5U2NvcmUgPSBzY29yZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gYmVzdFZhbGxleSA8PCBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIuTFVNSU5BTkNFX1NISUZUOwoJICAgIH07CgkgICAgR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLkxVTUlOQU5DRV9CSVRTID0gNTsKCSAgICBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIuTFVNSU5BTkNFX1NISUZUID0gOCAtIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5MVU1JTkFOQ0VfQklUUzsKCSAgICBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIuTFVNSU5BTkNFX0JVQ0tFVFMgPSAxIDw8IEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5MVU1JTkFOQ0VfQklUUzsKCSAgICBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIuRU1QVFkgPSBVaW50OENsYW1wZWRBcnJheS5mcm9tKFswXSk7CgkgICAgcmV0dXJuIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplcjsKCX0oQmluYXJpemVyXzEuZGVmYXVsdCkpOwoJR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyJDEuZGVmYXVsdCA9IEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplcjsKCgkvKgoJICogQ29weXJpZ2h0IDIwMDkgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJdmFyIF9fZXh0ZW5kcyRiID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KEh5YnJpZEJpbmFyaXplciQxLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7Cgl2YXIgR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyXzEgPSBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIkMTsKCXZhciBCaXRNYXRyaXhfMSQ0ID0gQml0TWF0cml4JDE7CgkvKioKCSAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIGxvY2FsIHRocmVzaG9sZGluZyBhbGdvcml0aG0sIHdoaWNoIHdoaWxlIHNsb3dlciB0aGFuIHRoZQoJICogR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLCBpcyBmYWlybHkgZWZmaWNpZW50IGZvciB3aGF0IGl0IGRvZXMuIEl0IGlzIGRlc2lnbmVkIGZvcgoJICogaGlnaCBmcmVxdWVuY3kgaW1hZ2VzIG9mIGJhcmNvZGVzIHdpdGggYmxhY2sgZGF0YSBvbiB3aGl0ZSBiYWNrZ3JvdW5kcy4gRm9yIHRoaXMgYXBwbGljYXRpb24sCgkgKiBpdCBkb2VzIGEgbXVjaCBiZXR0ZXIgam9iIHRoYW4gYSBnbG9iYWwgYmxhY2twb2ludCB3aXRoIHNldmVyZSBzaGFkb3dzIGFuZCBncmFkaWVudHMuCgkgKiBIb3dldmVyIGl0IHRlbmRzIHRvIHByb2R1Y2UgYXJ0aWZhY3RzIG9uIGxvd2VyIGZyZXF1ZW5jeSBpbWFnZXMgYW5kIGlzIHRoZXJlZm9yZSBub3QKCSAqIGEgZ29vZCBnZW5lcmFsIHB1cnBvc2UgYmluYXJpemVyIGZvciB1c2VzIG91dHNpZGUgWlhpbmcuCgkgKgoJICogVGhpcyBjbGFzcyBleHRlbmRzIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplciwgdXNpbmcgdGhlIG9sZGVyIGhpc3RvZ3JhbSBhcHByb2FjaCBmb3IgMUQgcmVhZGVycywKCSAqIGFuZCB0aGUgbmV3ZXIgbG9jYWwgYXBwcm9hY2ggZm9yIDJEIHJlYWRlcnMuIDFEIGRlY29kaW5nIHVzaW5nIGEgcGVyLXJvdyBoaXN0b2dyYW0gaXMgYWxyZWFkeQoJICogaW5oZXJlbnRseSBsb2NhbCwgYW5kIG9ubHkgZmFpbHMgZm9yIGhvcml6b250YWwgZ3JhZGllbnRzLiBXZSBjYW4gcmV2aXNpdCB0aGF0IHByb2JsZW0gbGF0ZXIsCgkgKiBidXQgZm9yIG5vdyBpdCB3YXMgbm90IGEgd2luIHRvIHVzZSBsb2NhbCBibG9ja3MgZm9yIDFELgoJICoKCSAqIFRoaXMgQmluYXJpemVyIGlzIHRoZSBkZWZhdWx0IGZvciB0aGUgdW5pdCB0ZXN0cyBhbmQgdGhlIHJlY29tbWVuZGVkIGNsYXNzIGZvciBsaWJyYXJ5IHVzZXJzLgoJICoKCSAqIEBhdXRob3IgZHN3aXRraW5AZ29vZ2xlLmNvbSAoRGFuaWVsIFN3aXRraW4pCgkgKi8KCXZhciBIeWJyaWRCaW5hcml6ZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzJGIoSHlicmlkQmluYXJpemVyLCBfc3VwZXIpOwoJICAgIGZ1bmN0aW9uIEh5YnJpZEJpbmFyaXplcihzb3VyY2UpIHsKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgc291cmNlKSB8fCB0aGlzOwoJICAgICAgICBfdGhpcy5tYXRyaXggPSBudWxsOwoJICAgICAgICByZXR1cm4gX3RoaXM7CgkgICAgfQoJICAgIC8qKgoJICAgICAqIENhbGN1bGF0ZXMgdGhlIGZpbmFsIEJpdE1hdHJpeCBvbmNlIGZvciBhbGwgcmVxdWVzdHMuIFRoaXMgY291bGQgYmUgY2FsbGVkIG9uY2UgZnJvbSB0aGUKCSAgICAgKiBjb25zdHJ1Y3RvciBpbnN0ZWFkLCBidXQgdGhlcmUgYXJlIHNvbWUgYWR2YW50YWdlcyB0byBkb2luZyBpdCBsYXppbHksIHN1Y2ggYXMgbWFraW5nCgkgICAgICogcHJvZmlsaW5nIGVhc2llciwgYW5kIG5vdCBkb2luZyBoZWF2eSBsaWZ0aW5nIHdoZW4gY2FsbGVycyBkb24ndCBleHBlY3QgaXQuCgkgICAgICovCgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIEh5YnJpZEJpbmFyaXplci5wcm90b3R5cGUuZ2V0QmxhY2tNYXRyaXggPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIGlmICh0aGlzLm1hdHJpeCAhPT0gbnVsbCkgewoJICAgICAgICAgICAgcmV0dXJuIHRoaXMubWF0cml4OwoJICAgICAgICB9CgkgICAgICAgIHZhciBzb3VyY2UgPSB0aGlzLmdldEx1bWluYW5jZVNvdXJjZSgpOwoJICAgICAgICB2YXIgd2lkdGggPSBzb3VyY2UuZ2V0V2lkdGgoKTsKCSAgICAgICAgdmFyIGhlaWdodCA9IHNvdXJjZS5nZXRIZWlnaHQoKTsKCSAgICAgICAgaWYgKHdpZHRoID49IEh5YnJpZEJpbmFyaXplci5NSU5JTVVNX0RJTUVOU0lPTiAmJiBoZWlnaHQgPj0gSHlicmlkQmluYXJpemVyLk1JTklNVU1fRElNRU5TSU9OKSB7CgkgICAgICAgICAgICB2YXIgbHVtaW5hbmNlcyA9IHNvdXJjZS5nZXRNYXRyaXgoKTsKCSAgICAgICAgICAgIHZhciBzdWJXaWR0aCA9IHdpZHRoID4+IEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFX1BPV0VSOwoJICAgICAgICAgICAgaWYgKCh3aWR0aCAmIEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFX01BU0spICE9PSAwKSB7CgkgICAgICAgICAgICAgICAgc3ViV2lkdGgrKzsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHZhciBzdWJIZWlnaHQgPSBoZWlnaHQgPj4gSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkVfUE9XRVI7CgkgICAgICAgICAgICBpZiAoKGhlaWdodCAmIEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFX01BU0spICE9PSAwKSB7CgkgICAgICAgICAgICAgICAgc3ViSGVpZ2h0Kys7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB2YXIgYmxhY2tQb2ludHMgPSBIeWJyaWRCaW5hcml6ZXIuY2FsY3VsYXRlQmxhY2tQb2ludHMobHVtaW5hbmNlcywgc3ViV2lkdGgsIHN1YkhlaWdodCwgd2lkdGgsIGhlaWdodCk7CgkgICAgICAgICAgICB2YXIgbmV3TWF0cml4ID0gbmV3IEJpdE1hdHJpeF8xJDQuZGVmYXVsdCh3aWR0aCwgaGVpZ2h0KTsKCSAgICAgICAgICAgIEh5YnJpZEJpbmFyaXplci5jYWxjdWxhdGVUaHJlc2hvbGRGb3JCbG9jayhsdW1pbmFuY2VzLCBzdWJXaWR0aCwgc3ViSGVpZ2h0LCB3aWR0aCwgaGVpZ2h0LCBibGFja1BvaW50cywgbmV3TWF0cml4KTsKCSAgICAgICAgICAgIHRoaXMubWF0cml4ID0gbmV3TWF0cml4OwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGlzIHRvbyBzbWFsbCwgZmFsbCBiYWNrIHRvIHRoZSBnbG9iYWwgaGlzdG9ncmFtIGFwcHJvYWNoLgoJICAgICAgICAgICAgdGhpcy5tYXRyaXggPSBfc3VwZXIucHJvdG90eXBlLmdldEJsYWNrTWF0cml4LmNhbGwodGhpcyk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRoaXMubWF0cml4OwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIEh5YnJpZEJpbmFyaXplci5wcm90b3R5cGUuY3JlYXRlQmluYXJpemVyID0gZnVuY3Rpb24gKHNvdXJjZSkgewoJICAgICAgICByZXR1cm4gbmV3IEh5YnJpZEJpbmFyaXplcihzb3VyY2UpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogRm9yIGVhY2ggYmxvY2sgaW4gdGhlIGltYWdlLCBjYWxjdWxhdGUgdGhlIGF2ZXJhZ2UgYmxhY2sgcG9pbnQgdXNpbmcgYSA1eDUgZ3JpZAoJICAgICAqIG9mIHRoZSBibG9ja3MgYXJvdW5kIGl0LiBBbHNvIGhhbmRsZXMgdGhlIGNvcm5lciBjYXNlcyAoZnJhY3Rpb25hbCBibG9ja3MgYXJlIGNvbXB1dGVkIGJhc2VkCgkgICAgICogb24gdGhlIGxhc3QgcGl4ZWxzIGluIHRoZSByb3cvY29sdW1uIHdoaWNoIGFyZSBhbHNvIHVzZWQgaW4gdGhlIHByZXZpb3VzIGJsb2NrKS4KCSAgICAgKi8KCSAgICBIeWJyaWRCaW5hcml6ZXIuY2FsY3VsYXRlVGhyZXNob2xkRm9yQmxvY2sgPSBmdW5jdGlvbiAobHVtaW5hbmNlcywgc3ViV2lkdGggLyppbnQqLywgc3ViSGVpZ2h0IC8qaW50Ki8sIHdpZHRoIC8qaW50Ki8sIGhlaWdodCAvKmludCovLCBibGFja1BvaW50cywgbWF0cml4KSB7CgkgICAgICAgIHZhciBtYXhZT2Zmc2V0ID0gaGVpZ2h0IC0gSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkU7CgkgICAgICAgIHZhciBtYXhYT2Zmc2V0ID0gd2lkdGggLSBIeWJyaWRCaW5hcml6ZXIuQkxPQ0tfU0laRTsKCSAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBzdWJIZWlnaHQ7IHkrKykgewoJICAgICAgICAgICAgdmFyIHlvZmZzZXQgPSB5IDw8IEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFX1BPV0VSOwoJICAgICAgICAgICAgaWYgKHlvZmZzZXQgPiBtYXhZT2Zmc2V0KSB7CgkgICAgICAgICAgICAgICAgeW9mZnNldCA9IG1heFlPZmZzZXQ7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB2YXIgdG9wXzEgPSBIeWJyaWRCaW5hcml6ZXIuY2FwKHksIDIsIHN1YkhlaWdodCAtIDMpOwoJICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBzdWJXaWR0aDsgeCsrKSB7CgkgICAgICAgICAgICAgICAgdmFyIHhvZmZzZXQgPSB4IDw8IEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFX1BPV0VSOwoJICAgICAgICAgICAgICAgIGlmICh4b2Zmc2V0ID4gbWF4WE9mZnNldCkgewoJICAgICAgICAgICAgICAgICAgICB4b2Zmc2V0ID0gbWF4WE9mZnNldDsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgdmFyIGxlZnQgPSBIeWJyaWRCaW5hcml6ZXIuY2FwKHgsIDIsIHN1YldpZHRoIC0gMyk7CgkgICAgICAgICAgICAgICAgdmFyIHN1bSA9IDA7CgkgICAgICAgICAgICAgICAgZm9yICh2YXIgeiA9IC0yOyB6IDw9IDI7IHorKykgewoJICAgICAgICAgICAgICAgICAgICB2YXIgYmxhY2tSb3cgPSBibGFja1BvaW50c1t0b3BfMSArIHpdOwoJICAgICAgICAgICAgICAgICAgICBzdW0gKz0gYmxhY2tSb3dbbGVmdCAtIDJdICsgYmxhY2tSb3dbbGVmdCAtIDFdICsgYmxhY2tSb3dbbGVmdF0gKyBibGFja1Jvd1tsZWZ0ICsgMV0gKyBibGFja1Jvd1tsZWZ0ICsgMl07CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIHZhciBhdmVyYWdlID0gc3VtIC8gMjU7CgkgICAgICAgICAgICAgICAgSHlicmlkQmluYXJpemVyLnRocmVzaG9sZEJsb2NrKGx1bWluYW5jZXMsIHhvZmZzZXQsIHlvZmZzZXQsIGF2ZXJhZ2UsIHdpZHRoLCBtYXRyaXgpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfTsKCSAgICBIeWJyaWRCaW5hcml6ZXIuY2FwID0gZnVuY3Rpb24gKHZhbHVlIC8qaW50Ki8sIG1pbiAvKmludCovLCBtYXggLyppbnQqLykgewoJICAgICAgICByZXR1cm4gdmFsdWUgPCBtaW4gPyBtaW4gOiB2YWx1ZSA+IG1heCA/IG1heCA6IHZhbHVlOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQXBwbGllcyBhIHNpbmdsZSB0aHJlc2hvbGQgdG8gYSBibG9jayBvZiBwaXhlbHMuCgkgICAgICovCgkgICAgSHlicmlkQmluYXJpemVyLnRocmVzaG9sZEJsb2NrID0gZnVuY3Rpb24gKGx1bWluYW5jZXMsIHhvZmZzZXQgLyppbnQqLywgeW9mZnNldCAvKmludCovLCB0aHJlc2hvbGQgLyppbnQqLywgc3RyaWRlIC8qaW50Ki8sIG1hdHJpeCkgewoJICAgICAgICBmb3IgKHZhciB5ID0gMCwgb2Zmc2V0ID0geW9mZnNldCAqIHN0cmlkZSArIHhvZmZzZXQ7IHkgPCBIeWJyaWRCaW5hcml6ZXIuQkxPQ0tfU0laRTsgeSsrLCBvZmZzZXQgKz0gc3RyaWRlKSB7CgkgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFOyB4KyspIHsKCSAgICAgICAgICAgICAgICAvLyBDb21wYXJpc29uIG5lZWRzIHRvIGJlIDw9IHNvIHRoYXQgYmxhY2sgPT0gMCBwaXhlbHMgYXJlIGJsYWNrIGV2ZW4gaWYgdGhlIHRocmVzaG9sZCBpcyAwLgoJICAgICAgICAgICAgICAgIGlmICgobHVtaW5hbmNlc1tvZmZzZXQgKyB4XSAmIDB4RkYpIDw9IHRocmVzaG9sZCkgewoJICAgICAgICAgICAgICAgICAgICBtYXRyaXguc2V0KHhvZmZzZXQgKyB4LCB5b2Zmc2V0ICsgeSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBDYWxjdWxhdGVzIGEgc2luZ2xlIGJsYWNrIHBvaW50IGZvciBlYWNoIGJsb2NrIG9mIHBpeGVscyBhbmQgc2F2ZXMgaXQgYXdheS4KCSAgICAgKiBTZWUgdGhlIGZvbGxvd2luZyB0aHJlYWQgZm9yIGEgZGlzY3Vzc2lvbiBvZiB0aGlzIGFsZ29yaXRobToKCSAgICAgKiAgaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL3p4aW5nL2Jyb3dzZV90aHJlYWQvdGhyZWFkL2QwNmVmYTJjMzVhN2RkYzAKCSAgICAgKi8KCSAgICBIeWJyaWRCaW5hcml6ZXIuY2FsY3VsYXRlQmxhY2tQb2ludHMgPSBmdW5jdGlvbiAobHVtaW5hbmNlcywgc3ViV2lkdGggLyppbnQqLywgc3ViSGVpZ2h0IC8qaW50Ki8sIHdpZHRoIC8qaW50Ki8sIGhlaWdodCAvKmludCovKSB7CgkgICAgICAgIHZhciBtYXhZT2Zmc2V0ID0gaGVpZ2h0IC0gSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkU7CgkgICAgICAgIHZhciBtYXhYT2Zmc2V0ID0gd2lkdGggLSBIeWJyaWRCaW5hcml6ZXIuQkxPQ0tfU0laRTsKCSAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOndoaXRlc3BhY2UKCSAgICAgICAgdmFyIGJsYWNrUG9pbnRzID0gbmV3IEFycmF5KHN1YkhlaWdodCk7IC8vIHN1YldpZHRoCgkgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgc3ViSGVpZ2h0OyB5KyspIHsKCSAgICAgICAgICAgIGJsYWNrUG9pbnRzW3ldID0gbmV3IEludDMyQXJyYXkoc3ViV2lkdGgpOwoJICAgICAgICAgICAgdmFyIHlvZmZzZXQgPSB5IDw8IEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFX1BPV0VSOwoJICAgICAgICAgICAgaWYgKHlvZmZzZXQgPiBtYXhZT2Zmc2V0KSB7CgkgICAgICAgICAgICAgICAgeW9mZnNldCA9IG1heFlPZmZzZXQ7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHN1YldpZHRoOyB4KyspIHsKCSAgICAgICAgICAgICAgICB2YXIgeG9mZnNldCA9IHggPDwgSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkVfUE9XRVI7CgkgICAgICAgICAgICAgICAgaWYgKHhvZmZzZXQgPiBtYXhYT2Zmc2V0KSB7CgkgICAgICAgICAgICAgICAgICAgIHhvZmZzZXQgPSBtYXhYT2Zmc2V0OwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB2YXIgc3VtID0gMDsKCSAgICAgICAgICAgICAgICB2YXIgbWluID0gMHhGRjsKCSAgICAgICAgICAgICAgICB2YXIgbWF4ID0gMDsKCSAgICAgICAgICAgICAgICBmb3IgKHZhciB5eSA9IDAsIG9mZnNldCA9IHlvZmZzZXQgKiB3aWR0aCArIHhvZmZzZXQ7IHl5IDwgSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkU7IHl5KyssIG9mZnNldCArPSB3aWR0aCkgewoJICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB4eCA9IDA7IHh4IDwgSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkU7IHh4KyspIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwaXhlbCA9IGx1bWluYW5jZXNbb2Zmc2V0ICsgeHhdICYgMHhGRjsKCSAgICAgICAgICAgICAgICAgICAgICAgIHN1bSArPSBwaXhlbDsKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0aWxsIGxvb2tpbmcgZm9yIGdvb2QgY29udHJhc3QKCSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwaXhlbCA8IG1pbikgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA9IHBpeGVsOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBpeGVsID4gbWF4KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4ID0gcGl4ZWw7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgLy8gc2hvcnQtY2lyY3VpdCBtaW4vbWF4IHRlc3RzIG9uY2UgZHluYW1pYyByYW5nZSBpcyBtZXQKCSAgICAgICAgICAgICAgICAgICAgaWYgKG1heCAtIG1pbiA+IEh5YnJpZEJpbmFyaXplci5NSU5fRFlOQU1JQ19SQU5HRSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmluaXNoIHRoZSByZXN0IG9mIHRoZSByb3dzIHF1aWNrbHkKCSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoeXkrKywgb2Zmc2V0ICs9IHdpZHRoOyB5eSA8IEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFOyB5eSsrLCBvZmZzZXQgKz0gd2lkdGgpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB4eCA9IDA7IHh4IDwgSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkU7IHh4KyspIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtICs9IGx1bWluYW5jZXNbb2Zmc2V0ICsgeHhdICYgMHhGRjsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgLy8gVGhlIGRlZmF1bHQgZXN0aW1hdGUgaXMgdGhlIGF2ZXJhZ2Ugb2YgdGhlIHZhbHVlcyBpbiB0aGUgYmxvY2suCgkgICAgICAgICAgICAgICAgdmFyIGF2ZXJhZ2UgPSBzdW0gPj4gKEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFX1BPV0VSICogMik7CgkgICAgICAgICAgICAgICAgaWYgKG1heCAtIG1pbiA8PSBIeWJyaWRCaW5hcml6ZXIuTUlOX0RZTkFNSUNfUkFOR0UpIHsKCSAgICAgICAgICAgICAgICAgICAgLy8gSWYgdmFyaWF0aW9uIHdpdGhpbiB0aGUgYmxvY2sgaXMgbG93LCBhc3N1bWUgdGhpcyBpcyBhIGJsb2NrIHdpdGggb25seSBsaWdodCBvciBvbmx5CgkgICAgICAgICAgICAgICAgICAgIC8vIGRhcmsgcGl4ZWxzLiBJbiB0aGF0IGNhc2Ugd2UgZG8gbm90IHdhbnQgdG8gdXNlIHRoZSBhdmVyYWdlLCBhcyBpdCB3b3VsZCBkaXZpZGUgdGhpcwoJICAgICAgICAgICAgICAgICAgICAvLyBsb3cgY29udHJhc3QgYXJlYSBpbnRvIGJsYWNrIGFuZCB3aGl0ZSBwaXhlbHMsIGVzc2VudGlhbGx5IGNyZWF0aW5nIGRhdGEgb3V0IG9mIG5vaXNlLgoJICAgICAgICAgICAgICAgICAgICAvLwoJICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZGVmYXVsdCBhc3N1bXB0aW9uIGlzIHRoYXQgdGhlIGJsb2NrIGlzIGxpZ2h0L2JhY2tncm91bmQuIFNpbmNlIG5vIGVzdGltYXRlIGZvcgoJICAgICAgICAgICAgICAgICAgICAvLyB0aGUgbGV2ZWwgb2YgZGFyayBwaXhlbHMgZXhpc3RzIGxvY2FsbHksIHVzZSBoYWxmIHRoZSBtaW4gZm9yIHRoZSBibG9jay4KCSAgICAgICAgICAgICAgICAgICAgYXZlcmFnZSA9IG1pbiAvIDI7CgkgICAgICAgICAgICAgICAgICAgIGlmICh5ID4gMCAmJiB4ID4gMCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29ycmVjdCB0aGUgIndoaXRlIGJhY2tncm91bmQiIGFzc3VtcHRpb24gZm9yIGJsb2NrcyB0aGF0IGhhdmUgbmVpZ2hib3JzIGJ5IGNvbXBhcmluZwoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHBpeGVscyBpbiB0aGlzIGJsb2NrIHRvIHRoZSBwcmV2aW91c2x5IGNhbGN1bGF0ZWQgYmxhY2sgcG9pbnRzLiBUaGlzIGlzIGJhc2VkIG9uCgkgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgZmFjdCB0aGF0IGRhcmsgYmFyY29kZSBzeW1ib2xvZ3kgaXMgYWx3YXlzIHN1cnJvdW5kZWQgYnkgc29tZSBhbW91bnQgb2YgbGlnaHQKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJhY2tncm91bmQgZm9yIHdoaWNoIHJlYXNvbmFibGUgYmxhY2sgcG9pbnQgZXN0aW1hdGVzIHdlcmUgbWFkZS4gVGhlIGJwIGVzdGltYXRlZCBhdAoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGJvdW5kYXJpZXMgaXMgdXNlZCBmb3IgdGhlIGludGVyaW9yLgoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIChtaW4gPCBicCkgaXMgYXJiaXRyYXJ5IGJ1dCB3b3JrcyBiZXR0ZXIgdGhhbiBvdGhlciBoZXVyaXN0aWNzIHRoYXQgd2VyZSB0cmllZC4KCSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdmVyYWdlTmVpZ2hib3JCbGFja1BvaW50ID0gKGJsYWNrUG9pbnRzW3kgLSAxXVt4XSArICgyICogYmxhY2tQb2ludHNbeV1beCAtIDFdKSArIGJsYWNrUG9pbnRzW3kgLSAxXVt4IC0gMV0pIC8gNDsKCSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaW4gPCBhdmVyYWdlTmVpZ2hib3JCbGFja1BvaW50KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZlcmFnZSA9IGF2ZXJhZ2VOZWlnaGJvckJsYWNrUG9pbnQ7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgYmxhY2tQb2ludHNbeV1beF0gPSBhdmVyYWdlOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBibGFja1BvaW50czsKCSAgICB9OwoJICAgIC8vIFRoaXMgY2xhc3MgdXNlcyA1eDUgYmxvY2tzIHRvIGNvbXB1dGUgbG9jYWwgbHVtaW5hbmNlLCB3aGVyZSBlYWNoIGJsb2NrIGlzIDh4OCBwaXhlbHMuCgkgICAgLy8gU28gdGhpcyBpcyB0aGUgc21hbGxlc3QgZGltZW5zaW9uIGluIGVhY2ggYXhpcyB3ZSBjYW4gYWNjZXB0LgoJICAgIEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFX1BPV0VSID0gMzsKCSAgICBIeWJyaWRCaW5hcml6ZXIuQkxPQ0tfU0laRSA9IDEgPDwgSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkVfUE9XRVI7IC8vIC4uLjAxMDAuLi4wMAoJICAgIEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFX01BU0sgPSBIeWJyaWRCaW5hcml6ZXIuQkxPQ0tfU0laRSAtIDE7IC8vIC4uLjAwMTEuLi4xMQoJICAgIEh5YnJpZEJpbmFyaXplci5NSU5JTVVNX0RJTUVOU0lPTiA9IEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFICogNTsKCSAgICBIeWJyaWRCaW5hcml6ZXIuTUlOX0RZTkFNSUNfUkFOR0UgPSAyNDsKCSAgICByZXR1cm4gSHlicmlkQmluYXJpemVyOwoJfShHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXJfMS5kZWZhdWx0KSk7Cgl2YXIgX2RlZmF1bHQkMiA9IEh5YnJpZEJpbmFyaXplciQxLmRlZmF1bHQgPSBIeWJyaWRCaW5hcml6ZXI7CgoJdmFyIFJHQkx1bWluYW5jZVNvdXJjZSQxID0ge307CgoJdmFyIEludmVydGVkTHVtaW5hbmNlU291cmNlJDEgPSB7fTsKCgl2YXIgTHVtaW5hbmNlU291cmNlJDEgPSB7fTsKCgkvKgoJICogQ29weXJpZ2h0IDIwMDkgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KEx1bWluYW5jZVNvdXJjZSQxLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7Cgl2YXIgU3RyaW5nQnVpbGRlcl8xJDEgPSBTdHJpbmdCdWlsZGVyJDE7Cgl2YXIgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb25fMSA9IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uJDE7CgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nIHsqLwoJLyoqCgkgKiBUaGUgcHVycG9zZSBvZiB0aGlzIGNsYXNzIGhpZXJhcmNoeSBpcyB0byBhYnN0cmFjdCBkaWZmZXJlbnQgYml0bWFwIGltcGxlbWVudGF0aW9ucyBhY3Jvc3MKCSAqIHBsYXRmb3JtcyBpbnRvIGEgc3RhbmRhcmQgaW50ZXJmYWNlIGZvciByZXF1ZXN0aW5nIGdyZXlzY2FsZSBsdW1pbmFuY2UgdmFsdWVzLiBUaGUgaW50ZXJmYWNlCgkgKiBvbmx5IHByb3ZpZGVzIGltbXV0YWJsZSBtZXRob2RzOyB0aGVyZWZvcmUgY3JvcCBhbmQgcm90YXRpb24gY3JlYXRlIGNvcGllcy4gVGhpcyBpcyB0byBlbnN1cmUKCSAqIHRoYXQgb25lIFJlYWRlciBkb2VzIG5vdCBtb2RpZnkgdGhlIG9yaWdpbmFsIGx1bWluYW5jZSBzb3VyY2UgYW5kIGxlYXZlIGl0IGluIGFuIHVua25vd24gc3RhdGUKCSAqIGZvciBvdGhlciBSZWFkZXJzIGluIHRoZSBjaGFpbi4KCSAqCgkgKiBAYXV0aG9yIGRzd2l0a2luQGdvb2dsZS5jb20gKERhbmllbCBTd2l0a2luKQoJICovCgl2YXIgTHVtaW5hbmNlU291cmNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIEx1bWluYW5jZVNvdXJjZSh3aWR0aCAvKmludCovLCBoZWlnaHQgLyppbnQqLykgewoJICAgICAgICB0aGlzLndpZHRoID0gd2lkdGg7CgkgICAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0OwoJICAgIH0KCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIFRoZSB3aWR0aCBvZiB0aGUgYml0bWFwLgoJICAgICAqLwoJICAgIEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuZ2V0V2lkdGggPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLndpZHRoOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiBUaGUgaGVpZ2h0IG9mIHRoZSBiaXRtYXAuCgkgICAgICovCgkgICAgTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5nZXRIZWlnaHQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmhlaWdodDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gV2hldGhlciB0aGlzIHN1YmNsYXNzIHN1cHBvcnRzIGNyb3BwaW5nLgoJICAgICAqLwoJICAgIEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuaXNDcm9wU3VwcG9ydGVkID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCB3aXRoIGNyb3BwZWQgaW1hZ2UgZGF0YS4gSW1wbGVtZW50YXRpb25zIG1heSBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZQoJICAgICAqIG9yaWdpbmFsIGRhdGEgcmF0aGVyIHRoYW4gYSBjb3B5LiBPbmx5IGNhbGxhYmxlIGlmIGlzQ3JvcFN1cHBvcnRlZCgpIGlzIHRydWUuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gbGVmdCBUaGUgbGVmdCBjb29yZGluYXRlLCB3aGljaCBtdXN0IGJlIGluIFswLGdldFdpZHRoKCkpCgkgICAgICogQHBhcmFtIHRvcCBUaGUgdG9wIGNvb3JkaW5hdGUsIHdoaWNoIG11c3QgYmUgaW4gWzAsZ2V0SGVpZ2h0KCkpCgkgICAgICogQHBhcmFtIHdpZHRoIFRoZSB3aWR0aCBvZiB0aGUgcmVjdGFuZ2xlIHRvIGNyb3AuCgkgICAgICogQHBhcmFtIGhlaWdodCBUaGUgaGVpZ2h0IG9mIHRoZSByZWN0YW5nbGUgdG8gY3JvcC4KCSAgICAgKiBAcmV0dXJuIEEgY3JvcHBlZCB2ZXJzaW9uIG9mIHRoaXMgb2JqZWN0LgoJICAgICAqLwoJICAgIEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuY3JvcCA9IGZ1bmN0aW9uIChsZWZ0IC8qaW50Ki8sIHRvcCAvKmludCovLCB3aWR0aCAvKmludCovLCBoZWlnaHQgLyppbnQqLykgewoJICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb25fMS5kZWZhdWx0KCdUaGlzIGx1bWluYW5jZSBzb3VyY2UgZG9lcyBub3Qgc3VwcG9ydCBjcm9wcGluZy4nKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gV2hldGhlciB0aGlzIHN1YmNsYXNzIHN1cHBvcnRzIGNvdW50ZXItY2xvY2t3aXNlIHJvdGF0aW9uLgoJICAgICAqLwoJICAgIEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuaXNSb3RhdGVTdXBwb3J0ZWQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFJldHVybnMgYSBuZXcgb2JqZWN0IHdpdGggcm90YXRlZCBpbWFnZSBkYXRhIGJ5IDkwIGRlZ3JlZXMgY291bnRlcmNsb2Nrd2lzZS4KCSAgICAgKiBPbmx5IGNhbGxhYmxlIGlmIHtAbGluayAjaXNSb3RhdGVTdXBwb3J0ZWQoKX0gaXMgdHJ1ZS4KCSAgICAgKgoJICAgICAqIEByZXR1cm4gQSByb3RhdGVkIHZlcnNpb24gb2YgdGhpcyBvYmplY3QuCgkgICAgICovCgkgICAgTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5yb3RhdGVDb3VudGVyQ2xvY2t3aXNlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb25fMS5kZWZhdWx0KCdUaGlzIGx1bWluYW5jZSBzb3VyY2UgZG9lcyBub3Qgc3VwcG9ydCByb3RhdGlvbiBieSA5MCBkZWdyZWVzLicpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogUmV0dXJucyBhIG5ldyBvYmplY3Qgd2l0aCByb3RhdGVkIGltYWdlIGRhdGEgYnkgNDUgZGVncmVlcyBjb3VudGVyY2xvY2t3aXNlLgoJICAgICAqIE9ubHkgY2FsbGFibGUgaWYge0BsaW5rICNpc1JvdGF0ZVN1cHBvcnRlZCgpfSBpcyB0cnVlLgoJICAgICAqCgkgICAgICogQHJldHVybiBBIHJvdGF0ZWQgdmVyc2lvbiBvZiB0aGlzIG9iamVjdC4KCSAgICAgKi8KCSAgICBMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLnJvdGF0ZUNvdW50ZXJDbG9ja3dpc2U0NSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uXzEuZGVmYXVsdCgnVGhpcyBsdW1pbmFuY2Ugc291cmNlIGRvZXMgbm90IHN1cHBvcnQgcm90YXRpb24gYnkgNDUgZGVncmVlcy4nKTsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgcm93ID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHRoaXMud2lkdGgpOwoJICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1aWxkZXJfMSQxLmRlZmF1bHQoKTsKCSAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCB0aGlzLmhlaWdodDsgeSsrKSB7CgkgICAgICAgICAgICB2YXIgc291cmNlUm93ID0gdGhpcy5nZXRSb3coeSwgcm93KTsKCSAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgdGhpcy53aWR0aDsgeCsrKSB7CgkgICAgICAgICAgICAgICAgdmFyIGx1bWluYW5jZSA9IHNvdXJjZVJvd1t4XSAmIDB4RkY7CgkgICAgICAgICAgICAgICAgdmFyIGMgPSB2b2lkIDA7CgkgICAgICAgICAgICAgICAgaWYgKGx1bWluYW5jZSA8IDB4NDApIHsKCSAgICAgICAgICAgICAgICAgICAgYyA9ICcjJzsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSBpZiAobHVtaW5hbmNlIDwgMHg4MCkgewoJICAgICAgICAgICAgICAgICAgICBjID0gJysnOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIGlmIChsdW1pbmFuY2UgPCAweEMwKSB7CgkgICAgICAgICAgICAgICAgICAgIGMgPSAnLic7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICBjID0gJyAnOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGMpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CgkgICAgfTsKCSAgICByZXR1cm4gTHVtaW5hbmNlU291cmNlOwoJfSgpKTsKCUx1bWluYW5jZVNvdXJjZSQxLmRlZmF1bHQgPSBMdW1pbmFuY2VTb3VyY2U7CgoJLyoKCSAqIENvcHlyaWdodCAyMDA5IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX2V4dGVuZHMkYSA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShJbnZlcnRlZEx1bWluYW5jZVNvdXJjZSQxLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7Cgl2YXIgTHVtaW5hbmNlU291cmNlXzEkMSA9IEx1bWluYW5jZVNvdXJjZSQxOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZyB7Ki8KCS8qKgoJICogQSB3cmFwcGVyIGltcGxlbWVudGF0aW9uIG9mIHtAbGluayBMdW1pbmFuY2VTb3VyY2V9IHdoaWNoIGludmVydHMgdGhlIGx1bWluYW5jZXMgaXQgcmV0dXJucyAtLSBibGFjayBiZWNvbWVzCgkgKiB3aGl0ZSBhbmQgdmljZSB2ZXJzYSwgYW5kIGVhY2ggdmFsdWUgYmVjb21lcyAoMjU1LXZhbHVlKS4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzJGEoSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2UsIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2UoZGVsZWdhdGUpIHsKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGVsZWdhdGUuZ2V0V2lkdGgoKSwgZGVsZWdhdGUuZ2V0SGVpZ2h0KCkpIHx8IHRoaXM7CgkgICAgICAgIF90aGlzLmRlbGVnYXRlID0gZGVsZWdhdGU7CgkgICAgICAgIHJldHVybiBfdGhpczsKCSAgICB9CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIEludmVydGVkTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5nZXRSb3cgPSBmdW5jdGlvbiAoeSAvKmludCovLCByb3cpIHsKCSAgICAgICAgdmFyIHNvdXJjZVJvdyA9IHRoaXMuZGVsZWdhdGUuZ2V0Um93KHksIHJvdyk7CgkgICAgICAgIHZhciB3aWR0aCA9IHRoaXMuZ2V0V2lkdGgoKTsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3aWR0aDsgaSsrKSB7CgkgICAgICAgICAgICBzb3VyY2VSb3dbaV0gPSAvKihieXRlKSovICgyNTUgLSAoc291cmNlUm93W2ldICYgMHhGRikpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBzb3VyY2VSb3c7CgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLmdldE1hdHJpeCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIG1hdHJpeCA9IHRoaXMuZGVsZWdhdGUuZ2V0TWF0cml4KCk7CgkgICAgICAgIHZhciBsZW5ndGggPSB0aGlzLmdldFdpZHRoKCkgKiB0aGlzLmdldEhlaWdodCgpOwoJICAgICAgICB2YXIgaW52ZXJ0ZWRNYXRyaXggPSBuZXcgVWludDhDbGFtcGVkQXJyYXkobGVuZ3RoKTsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewoJICAgICAgICAgICAgaW52ZXJ0ZWRNYXRyaXhbaV0gPSAvKihieXRlKSovICgyNTUgLSAobWF0cml4W2ldICYgMHhGRikpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBpbnZlcnRlZE1hdHJpeDsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBJbnZlcnRlZEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuaXNDcm9wU3VwcG9ydGVkID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5pc0Nyb3BTdXBwb3J0ZWQoKTsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBJbnZlcnRlZEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuY3JvcCA9IGZ1bmN0aW9uIChsZWZ0IC8qaW50Ki8sIHRvcCAvKmludCovLCB3aWR0aCAvKmludCovLCBoZWlnaHQgLyppbnQqLykgewoJICAgICAgICByZXR1cm4gbmV3IEludmVydGVkTHVtaW5hbmNlU291cmNlKHRoaXMuZGVsZWdhdGUuY3JvcChsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQpKTsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBJbnZlcnRlZEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuaXNSb3RhdGVTdXBwb3J0ZWQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmlzUm90YXRlU3VwcG9ydGVkKCk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIG9yaWdpbmFsIGRlbGVnYXRlIHtAbGluayBMdW1pbmFuY2VTb3VyY2V9IHNpbmNlIGludmVydCB1bmRvZXMgaXRzZWxmCgkgICAgICovCgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIEludmVydGVkTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5pbnZlcnQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmRlbGVnYXRlOwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIEludmVydGVkTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5yb3RhdGVDb3VudGVyQ2xvY2t3aXNlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gbmV3IEludmVydGVkTHVtaW5hbmNlU291cmNlKHRoaXMuZGVsZWdhdGUucm90YXRlQ291bnRlckNsb2Nrd2lzZSgpKTsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBJbnZlcnRlZEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUucm90YXRlQ291bnRlckNsb2Nrd2lzZTQ1ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gbmV3IEludmVydGVkTHVtaW5hbmNlU291cmNlKHRoaXMuZGVsZWdhdGUucm90YXRlQ291bnRlckNsb2Nrd2lzZTQ1KCkpOwoJICAgIH07CgkgICAgcmV0dXJuIEludmVydGVkTHVtaW5hbmNlU291cmNlOwoJfShMdW1pbmFuY2VTb3VyY2VfMSQxLmRlZmF1bHQpKTsKCUludmVydGVkTHVtaW5hbmNlU291cmNlJDEuZGVmYXVsdCA9IEludmVydGVkTHVtaW5hbmNlU291cmNlOwoKCS8qCgkgKiBDb3B5cmlnaHQgMjAwOSBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCgl2YXIgX19leHRlbmRzJDkgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoUkdCTHVtaW5hbmNlU291cmNlJDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcgeyovCgkgLy8gcmVxdWlyZWQgYmVjYXVzZSBvZiBjaXJjdWxhciBkZXBlbmRlbmNpZXMgYmV0d2VlbiBMdW1pbmFuY2VTb3VyY2UgYW5kIEludmVydGVkTHVtaW5hbmNlU291cmNlCgl2YXIgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2VfMSA9IEludmVydGVkTHVtaW5hbmNlU291cmNlJDE7Cgl2YXIgTHVtaW5hbmNlU291cmNlXzEgPSBMdW1pbmFuY2VTb3VyY2UkMTsKCXZhciBTeXN0ZW1fMSQyID0gU3lzdGVtJDE7Cgl2YXIgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEkNiA9IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiQxOwoJLyoqCgkgKiBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gaGVscCBkZWNvZGUgaW1hZ2VzIGZyb20gZmlsZXMgd2hpY2ggYXJyaXZlIGFzIFJHQiBkYXRhIGZyb20KCSAqIGFuIEFSR0IgcGl4ZWwgYXJyYXkuIEl0IGRvZXMgbm90IHN1cHBvcnQgcm90YXRpb24uCgkgKgoJICogQGF1dGhvciBkc3dpdGtpbkBnb29nbGUuY29tIChEYW5pZWwgU3dpdGtpbikKCSAqIEBhdXRob3IgQmV0YW1pbm9zCgkgKi8KCXZhciBSR0JMdW1pbmFuY2VTb3VyY2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzJDkoUkdCTHVtaW5hbmNlU291cmNlLCBfc3VwZXIpOwoJICAgIGZ1bmN0aW9uIFJHQkx1bWluYW5jZVNvdXJjZShsdW1pbmFuY2VzLCB3aWR0aCAvKmludCovLCBoZWlnaHQgLyppbnQqLywgZGF0YVdpZHRoIC8qaW50Ki8sIGRhdGFIZWlnaHQgLyppbnQqLywgbGVmdCAvKmludCovLCB0b3AgLyppbnQqLykgewoJICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCB3aWR0aCwgaGVpZ2h0KSB8fCB0aGlzOwoJICAgICAgICBfdGhpcy5kYXRhV2lkdGggPSBkYXRhV2lkdGg7CgkgICAgICAgIF90aGlzLmRhdGFIZWlnaHQgPSBkYXRhSGVpZ2h0OwoJICAgICAgICBfdGhpcy5sZWZ0ID0gbGVmdDsKCSAgICAgICAgX3RoaXMudG9wID0gdG9wOwoJICAgICAgICBpZiAobHVtaW5hbmNlcy5CWVRFU19QRVJfRUxFTUVOVCA9PT0gNCkgeyAvLyBJbnQzMkFycmF5CgkgICAgICAgICAgICB2YXIgc2l6ZSA9IHdpZHRoICogaGVpZ2h0OwoJICAgICAgICAgICAgdmFyIGx1bWluYW5jZXNVaW50OEFycmF5ID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHNpemUpOwoJICAgICAgICAgICAgZm9yICh2YXIgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgc2l6ZTsgb2Zmc2V0KyspIHsKCSAgICAgICAgICAgICAgICB2YXIgcGl4ZWwgPSBsdW1pbmFuY2VzW29mZnNldF07CgkgICAgICAgICAgICAgICAgdmFyIHIgPSAocGl4ZWwgPj4gMTYpICYgMHhmZjsgLy8gcmVkCgkgICAgICAgICAgICAgICAgdmFyIGcyID0gKHBpeGVsID4+IDcpICYgMHgxZmU7IC8vIDIgKiBncmVlbgoJICAgICAgICAgICAgICAgIHZhciBiID0gcGl4ZWwgJiAweGZmOyAvLyBibHVlCgkgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIGdyZWVuLWZhdm91cmluZyBhdmVyYWdlIGNoZWFwbHkKCSAgICAgICAgICAgICAgICBsdW1pbmFuY2VzVWludDhBcnJheVtvZmZzZXRdID0gLyooYnl0ZSkgKi8gKChyICsgZzIgKyBiKSAvIDQpICYgMHhGRjsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIF90aGlzLmx1bWluYW5jZXMgPSBsdW1pbmFuY2VzVWludDhBcnJheTsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIF90aGlzLmx1bWluYW5jZXMgPSBsdW1pbmFuY2VzOwoJICAgICAgICB9CgkgICAgICAgIGlmICh1bmRlZmluZWQgPT09IGRhdGFXaWR0aCkgewoJICAgICAgICAgICAgX3RoaXMuZGF0YVdpZHRoID0gd2lkdGg7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gZGF0YUhlaWdodCkgewoJICAgICAgICAgICAgX3RoaXMuZGF0YUhlaWdodCA9IGhlaWdodDsKCSAgICAgICAgfQoJICAgICAgICBpZiAodW5kZWZpbmVkID09PSBsZWZ0KSB7CgkgICAgICAgICAgICBfdGhpcy5sZWZ0ID0gMDsKCSAgICAgICAgfQoJICAgICAgICBpZiAodW5kZWZpbmVkID09PSB0b3ApIHsKCSAgICAgICAgICAgIF90aGlzLnRvcCA9IDA7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKF90aGlzLmxlZnQgKyB3aWR0aCA+IF90aGlzLmRhdGFXaWR0aCB8fCBfdGhpcy50b3AgKyBoZWlnaHQgPiBfdGhpcy5kYXRhSGVpZ2h0KSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEkNi5kZWZhdWx0KCdDcm9wIHJlY3RhbmdsZSBkb2VzIG5vdCBmaXQgd2l0aGluIGltYWdlIGRhdGEuJyk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIF90aGlzOwoJICAgIH0KCSAgICAvKkBPdmVycmlkZSovCgkgICAgUkdCTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5nZXRSb3cgPSBmdW5jdGlvbiAoeSAvKmludCovLCByb3cpIHsKCSAgICAgICAgaWYgKHkgPCAwIHx8IHkgPj0gdGhpcy5nZXRIZWlnaHQoKSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xJDYuZGVmYXVsdCgnUmVxdWVzdGVkIHJvdyBpcyBvdXRzaWRlIHRoZSBpbWFnZTogJyArIHkpOwoJICAgICAgICB9CgkgICAgICAgIHZhciB3aWR0aCA9IHRoaXMuZ2V0V2lkdGgoKTsKCSAgICAgICAgaWYgKHJvdyA9PT0gbnVsbCB8fCByb3cgPT09IHVuZGVmaW5lZCB8fCByb3cubGVuZ3RoIDwgd2lkdGgpIHsKCSAgICAgICAgICAgIHJvdyA9IG5ldyBVaW50OENsYW1wZWRBcnJheSh3aWR0aCk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIG9mZnNldCA9ICh5ICsgdGhpcy50b3ApICogdGhpcy5kYXRhV2lkdGggKyB0aGlzLmxlZnQ7CgkgICAgICAgIFN5c3RlbV8xJDIuZGVmYXVsdC5hcnJheWNvcHkodGhpcy5sdW1pbmFuY2VzLCBvZmZzZXQsIHJvdywgMCwgd2lkdGgpOwoJICAgICAgICByZXR1cm4gcm93OwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIFJHQkx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuZ2V0TWF0cml4ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgd2lkdGggPSB0aGlzLmdldFdpZHRoKCk7CgkgICAgICAgIHZhciBoZWlnaHQgPSB0aGlzLmdldEhlaWdodCgpOwoJICAgICAgICAvLyBJZiB0aGUgY2FsbGVyIGFza3MgZm9yIHRoZSBlbnRpcmUgdW5kZXJseWluZyBpbWFnZSwgc2F2ZSB0aGUgY29weSBhbmQgZ2l2ZSB0aGVtIHRoZQoJICAgICAgICAvLyBvcmlnaW5hbCBkYXRhLiBUaGUgZG9jcyBzcGVjaWZpY2FsbHkgd2FybiB0aGF0IHJlc3VsdC5sZW5ndGggbXVzdCBiZSBpZ25vcmVkLgoJICAgICAgICBpZiAod2lkdGggPT09IHRoaXMuZGF0YVdpZHRoICYmIGhlaWdodCA9PT0gdGhpcy5kYXRhSGVpZ2h0KSB7CgkgICAgICAgICAgICByZXR1cm4gdGhpcy5sdW1pbmFuY2VzOwoJICAgICAgICB9CgkgICAgICAgIHZhciBhcmVhID0gd2lkdGggKiBoZWlnaHQ7CgkgICAgICAgIHZhciBtYXRyaXggPSBuZXcgVWludDhDbGFtcGVkQXJyYXkoYXJlYSk7CgkgICAgICAgIHZhciBpbnB1dE9mZnNldCA9IHRoaXMudG9wICogdGhpcy5kYXRhV2lkdGggKyB0aGlzLmxlZnQ7CgkgICAgICAgIC8vIElmIHRoZSB3aWR0aCBtYXRjaGVzIHRoZSBmdWxsIHdpZHRoIG9mIHRoZSB1bmRlcmx5aW5nIGRhdGEsIHBlcmZvcm0gYSBzaW5nbGUgY29weS4KCSAgICAgICAgaWYgKHdpZHRoID09PSB0aGlzLmRhdGFXaWR0aCkgewoJICAgICAgICAgICAgU3lzdGVtXzEkMi5kZWZhdWx0LmFycmF5Y29weSh0aGlzLmx1bWluYW5jZXMsIGlucHV0T2Zmc2V0LCBtYXRyaXgsIDAsIGFyZWEpOwoJICAgICAgICAgICAgcmV0dXJuIG1hdHJpeDsKCSAgICAgICAgfQoJICAgICAgICAvLyBPdGhlcndpc2UgY29weSBvbmUgY3JvcHBlZCByb3cgYXQgYSB0aW1lLgoJICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7CgkgICAgICAgICAgICB2YXIgb3V0cHV0T2Zmc2V0ID0geSAqIHdpZHRoOwoJICAgICAgICAgICAgU3lzdGVtXzEkMi5kZWZhdWx0LmFycmF5Y29weSh0aGlzLmx1bWluYW5jZXMsIGlucHV0T2Zmc2V0LCBtYXRyaXgsIG91dHB1dE9mZnNldCwgd2lkdGgpOwoJICAgICAgICAgICAgaW5wdXRPZmZzZXQgKz0gdGhpcy5kYXRhV2lkdGg7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG1hdHJpeDsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBSR0JMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLmlzQ3JvcFN1cHBvcnRlZCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRydWU7CgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgUkdCTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5jcm9wID0gZnVuY3Rpb24gKGxlZnQgLyppbnQqLywgdG9wIC8qaW50Ki8sIHdpZHRoIC8qaW50Ki8sIGhlaWdodCAvKmludCovKSB7CgkgICAgICAgIHJldHVybiBuZXcgUkdCTHVtaW5hbmNlU291cmNlKHRoaXMubHVtaW5hbmNlcywgd2lkdGgsIGhlaWdodCwgdGhpcy5kYXRhV2lkdGgsIHRoaXMuZGF0YUhlaWdodCwgdGhpcy5sZWZ0ICsgbGVmdCwgdGhpcy50b3AgKyB0b3ApOwoJICAgIH07CgkgICAgUkdCTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5pbnZlcnQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiBuZXcgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2VfMS5kZWZhdWx0KHRoaXMpOwoJICAgIH07CgkgICAgcmV0dXJuIFJHQkx1bWluYW5jZVNvdXJjZTsKCX0oTHVtaW5hbmNlU291cmNlXzEuZGVmYXVsdCkpOwoJdmFyIF9kZWZhdWx0JDEgPSBSR0JMdW1pbmFuY2VTb3VyY2UkMS5kZWZhdWx0ID0gUkdCTHVtaW5hbmNlU291cmNlOwoKCXZhciBRUkNvZGVSZWFkZXIkMSA9IHt9OwoKCXZhciBCYXJjb2RlRm9ybWF0JDEgPSB7fTsKCgkvKgoJICogRGlyZWN0IHBvcnQgdG8gVHlwZVNjcmlwdCBvZiBaWGluZyBieSBBZHJpYW4gVG/ImWPEgwoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoQmFyY29kZUZvcm1hdCQxLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKgoJICogQ29weXJpZ2h0IDIwMDkgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZyB7Ki8KCS8qKgoJICogRW51bWVyYXRlcyBiYXJjb2RlIGZvcm1hdHMga25vd24gdG8gdGhpcyBwYWNrYWdlLiBQbGVhc2Uga2VlcCBhbHBoYWJldGl6ZWQuCgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIEJhcmNvZGVGb3JtYXQ7CgkoZnVuY3Rpb24gKEJhcmNvZGVGb3JtYXQpIHsKCSAgICAvKiogQXp0ZWMgMkQgYmFyY29kZSBmb3JtYXQuICovCgkgICAgQmFyY29kZUZvcm1hdFtCYXJjb2RlRm9ybWF0WyJBWlRFQyJdID0gMF0gPSAiQVpURUMiOwoJICAgIC8qKiBDT0RBQkFSIDFEIGZvcm1hdC4gKi8KCSAgICBCYXJjb2RlRm9ybWF0W0JhcmNvZGVGb3JtYXRbIkNPREFCQVIiXSA9IDFdID0gIkNPREFCQVIiOwoJICAgIC8qKiBDb2RlIDM5IDFEIGZvcm1hdC4gKi8KCSAgICBCYXJjb2RlRm9ybWF0W0JhcmNvZGVGb3JtYXRbIkNPREVfMzkiXSA9IDJdID0gIkNPREVfMzkiOwoJICAgIC8qKiBDb2RlIDkzIDFEIGZvcm1hdC4gKi8KCSAgICBCYXJjb2RlRm9ybWF0W0JhcmNvZGVGb3JtYXRbIkNPREVfOTMiXSA9IDNdID0gIkNPREVfOTMiOwoJICAgIC8qKiBDb2RlIDEyOCAxRCBmb3JtYXQuICovCgkgICAgQmFyY29kZUZvcm1hdFtCYXJjb2RlRm9ybWF0WyJDT0RFXzEyOCJdID0gNF0gPSAiQ09ERV8xMjgiOwoJICAgIC8qKiBEYXRhIE1hdHJpeCAyRCBiYXJjb2RlIGZvcm1hdC4gKi8KCSAgICBCYXJjb2RlRm9ybWF0W0JhcmNvZGVGb3JtYXRbIkRBVEFfTUFUUklYIl0gPSA1XSA9ICJEQVRBX01BVFJJWCI7CgkgICAgLyoqIEVBTi04IDFEIGZvcm1hdC4gKi8KCSAgICBCYXJjb2RlRm9ybWF0W0JhcmNvZGVGb3JtYXRbIkVBTl84Il0gPSA2XSA9ICJFQU5fOCI7CgkgICAgLyoqIEVBTi0xMyAxRCBmb3JtYXQuICovCgkgICAgQmFyY29kZUZvcm1hdFtCYXJjb2RlRm9ybWF0WyJFQU5fMTMiXSA9IDddID0gIkVBTl8xMyI7CgkgICAgLyoqIElURiAoSW50ZXJsZWF2ZWQgVHdvIG9mIEZpdmUpIDFEIGZvcm1hdC4gKi8KCSAgICBCYXJjb2RlRm9ybWF0W0JhcmNvZGVGb3JtYXRbIklURiJdID0gOF0gPSAiSVRGIjsKCSAgICAvKiogTWF4aUNvZGUgMkQgYmFyY29kZSBmb3JtYXQuICovCgkgICAgQmFyY29kZUZvcm1hdFtCYXJjb2RlRm9ybWF0WyJNQVhJQ09ERSJdID0gOV0gPSAiTUFYSUNPREUiOwoJICAgIC8qKiBQREY0MTcgZm9ybWF0LiAqLwoJICAgIEJhcmNvZGVGb3JtYXRbQmFyY29kZUZvcm1hdFsiUERGXzQxNyJdID0gMTBdID0gIlBERl80MTciOwoJICAgIC8qKiBRUiBDb2RlIDJEIGJhcmNvZGUgZm9ybWF0LiAqLwoJICAgIEJhcmNvZGVGb3JtYXRbQmFyY29kZUZvcm1hdFsiUVJfQ09ERSJdID0gMTFdID0gIlFSX0NPREUiOwoJICAgIC8qKiBSU1MgMTQgKi8KCSAgICBCYXJjb2RlRm9ybWF0W0JhcmNvZGVGb3JtYXRbIlJTU18xNCJdID0gMTJdID0gIlJTU18xNCI7CgkgICAgLyoqIFJTUyBFWFBBTkRFRCAqLwoJICAgIEJhcmNvZGVGb3JtYXRbQmFyY29kZUZvcm1hdFsiUlNTX0VYUEFOREVEIl0gPSAxM10gPSAiUlNTX0VYUEFOREVEIjsKCSAgICAvKiogVVBDLUEgMUQgZm9ybWF0LiAqLwoJICAgIEJhcmNvZGVGb3JtYXRbQmFyY29kZUZvcm1hdFsiVVBDX0EiXSA9IDE0XSA9ICJVUENfQSI7CgkgICAgLyoqIFVQQy1FIDFEIGZvcm1hdC4gKi8KCSAgICBCYXJjb2RlRm9ybWF0W0JhcmNvZGVGb3JtYXRbIlVQQ19FIl0gPSAxNV0gPSAiVVBDX0UiOwoJICAgIC8qKiBVUEMvRUFOIGV4dGVuc2lvbiBmb3JtYXQuIE5vdCBhIHN0YW5kLWFsb25lIGZvcm1hdC4gKi8KCSAgICBCYXJjb2RlRm9ybWF0W0JhcmNvZGVGb3JtYXRbIlVQQ19FQU5fRVhURU5TSU9OIl0gPSAxNl0gPSAiVVBDX0VBTl9FWFRFTlNJT04iOwoJfSkoQmFyY29kZUZvcm1hdCB8fCAoQmFyY29kZUZvcm1hdCA9IHt9KSk7CglCYXJjb2RlRm9ybWF0JDEuZGVmYXVsdCA9IEJhcmNvZGVGb3JtYXQ7CgoJdmFyIFJlc3VsdCQxID0ge307CgoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZXN1bHQkMSwgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJdmFyIFN5c3RlbV8xJDEgPSBTeXN0ZW0kMTsKCS8qKgoJICogPHA+RW5jYXBzdWxhdGVzIHRoZSByZXN1bHQgb2YgZGVjb2RpbmcgYSBiYXJjb2RlIHdpdGhpbiBhbiBpbWFnZS48L3A+CgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIFJlc3VsdCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICAvLyBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSB0ZXh0OiBzdHJpbmcsCgkgICAgLy8gICAgICAgICAgICAgICBVaW50OEFycmF5IHJhd0J5dGVzLAoJICAgIC8vICAgICAgICAgICAgICAgUmVzdWx0UG9jb25zdCByZXN1bHRQb2ludHM6IEludDMyQXJyYXksCgkgICAgLy8gICAgICAgICAgICAgICBCYXJjb2RlRm9ybWF0IGZvcm1hdCkgewoJICAgIC8vICAgdGhpcyh0ZXh0LCByYXdCeXRlcywgcmVzdWx0UG9pbnRzLCBmb3JtYXQsIFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpKQoJICAgIC8vIH0KCSAgICAvLyBwdWJsaWMgY29uc3RydWN0b3IodGV4dDogc3RyaW5nLAoJICAgIC8vICAgICAgICAgICAgICAgVWludDhBcnJheSByYXdCeXRlcywKCSAgICAvLyAgICAgICAgICAgICAgIFJlc3VsdFBvY29uc3QgcmVzdWx0UG9pbnRzOiBJbnQzMkFycmF5LAoJICAgIC8vICAgICAgICAgICAgICAgQmFyY29kZUZvcm1hdCBmb3JtYXQsCgkgICAgLy8gICAgICAgICAgICAgICBsb25nIHRpbWVzdGFtcCkgewoJICAgIC8vICAgdGhpcyh0ZXh0LCByYXdCeXRlcywgcmF3Qnl0ZXMgPT0gbnVsbCA/IDAgOiA4ICogcmF3Qnl0ZXMubGVuZ3RoLAoJICAgIC8vICAgICAgICByZXN1bHRQb2ludHMsIGZvcm1hdCwgdGltZXN0YW1wKQoJICAgIC8vIH0KCSAgICBmdW5jdGlvbiBSZXN1bHQodGV4dCwgcmF3Qnl0ZXMsIG51bUJpdHMsIHJlc3VsdFBvaW50cywgZm9ybWF0LCB0aW1lc3RhbXApIHsKCSAgICAgICAgaWYgKG51bUJpdHMgPT09IHZvaWQgMCkgeyBudW1CaXRzID0gcmF3Qnl0ZXMgPT0gbnVsbCA/IDAgOiA4ICogcmF3Qnl0ZXMubGVuZ3RoOyB9CgkgICAgICAgIGlmICh0aW1lc3RhbXAgPT09IHZvaWQgMCkgeyB0aW1lc3RhbXAgPSBTeXN0ZW1fMSQxLmRlZmF1bHQuY3VycmVudFRpbWVNaWxsaXMoKTsgfQoJICAgICAgICB0aGlzLnRleHQgPSB0ZXh0OwoJICAgICAgICB0aGlzLnJhd0J5dGVzID0gcmF3Qnl0ZXM7CgkgICAgICAgIHRoaXMubnVtQml0cyA9IG51bUJpdHM7CgkgICAgICAgIHRoaXMucmVzdWx0UG9pbnRzID0gcmVzdWx0UG9pbnRzOwoJICAgICAgICB0aGlzLmZvcm1hdCA9IGZvcm1hdDsKCSAgICAgICAgdGhpcy50aW1lc3RhbXAgPSB0aW1lc3RhbXA7CgkgICAgICAgIHRoaXMudGV4dCA9IHRleHQ7CgkgICAgICAgIHRoaXMucmF3Qnl0ZXMgPSByYXdCeXRlczsKCSAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gbnVtQml0cyB8fCBudWxsID09PSBudW1CaXRzKSB7CgkgICAgICAgICAgICB0aGlzLm51bUJpdHMgPSAocmF3Qnl0ZXMgPT09IG51bGwgfHwgcmF3Qnl0ZXMgPT09IHVuZGVmaW5lZCkgPyAwIDogOCAqIHJhd0J5dGVzLmxlbmd0aDsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIHRoaXMubnVtQml0cyA9IG51bUJpdHM7CgkgICAgICAgIH0KCSAgICAgICAgdGhpcy5yZXN1bHRQb2ludHMgPSByZXN1bHRQb2ludHM7CgkgICAgICAgIHRoaXMuZm9ybWF0ID0gZm9ybWF0OwoJICAgICAgICB0aGlzLnJlc3VsdE1ldGFkYXRhID0gbnVsbDsKCSAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gdGltZXN0YW1wIHx8IG51bGwgPT09IHRpbWVzdGFtcCkgewoJICAgICAgICAgICAgdGhpcy50aW1lc3RhbXAgPSBTeXN0ZW1fMSQxLmRlZmF1bHQuY3VycmVudFRpbWVNaWxsaXMoKTsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIHRoaXMudGltZXN0YW1wID0gdGltZXN0YW1wOwoJICAgICAgICB9CgkgICAgfQoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gcmF3IHRleHQgZW5jb2RlZCBieSB0aGUgYmFyY29kZQoJICAgICAqLwoJICAgIFJlc3VsdC5wcm90b3R5cGUuZ2V0VGV4dCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMudGV4dDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gcmF3IGJ5dGVzIGVuY29kZWQgYnkgdGhlIGJhcmNvZGUsIGlmIGFwcGxpY2FibGUsIG90aGVyd2lzZSB7QGNvZGUgbnVsbH0KCSAgICAgKi8KCSAgICBSZXN1bHQucHJvdG90eXBlLmdldFJhd0J5dGVzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5yYXdCeXRlczsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gaG93IG1hbnkgYml0cyBvZiB7QGxpbmsgI2dldFJhd0J5dGVzKCl9IGFyZSB2YWxpZDsgdHlwaWNhbGx5IDggdGltZXMgaXRzIGxlbmd0aAoJICAgICAqIEBzaW5jZSAzLjMuMAoJICAgICAqLwoJICAgIFJlc3VsdC5wcm90b3R5cGUuZ2V0TnVtQml0cyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMubnVtQml0czsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gcG9pbnRzIHJlbGF0ZWQgdG8gdGhlIGJhcmNvZGUgaW4gdGhlIGltYWdlLiBUaGVzZSBhcmUgdHlwaWNhbGx5IHBvaW50cwoJICAgICAqICAgICAgICAgaWRlbnRpZnlpbmcgZmluZGVyIHBhdHRlcm5zIG9yIHRoZSBjb3JuZXJzIG9mIHRoZSBiYXJjb2RlLiBUaGUgZXhhY3QgbWVhbmluZyBpcwoJICAgICAqICAgICAgICAgc3BlY2lmaWMgdG8gdGhlIHR5cGUgb2YgYmFyY29kZSB0aGF0IHdhcyBkZWNvZGVkLgoJICAgICAqLwoJICAgIFJlc3VsdC5wcm90b3R5cGUuZ2V0UmVzdWx0UG9pbnRzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHRQb2ludHM7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIHtAbGluayBCYXJjb2RlRm9ybWF0fSByZXByZXNlbnRpbmcgdGhlIGZvcm1hdCBvZiB0aGUgYmFyY29kZSB0aGF0IHdhcyBkZWNvZGVkCgkgICAgICovCgkgICAgUmVzdWx0LnByb3RvdHlwZS5nZXRCYXJjb2RlRm9ybWF0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXQ7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIHtAbGluayBNYXB9IG1hcHBpbmcge0BsaW5rIFJlc3VsdE1ldGFkYXRhVHlwZX0ga2V5cyB0byB2YWx1ZXMuIE1heSBiZQoJICAgICAqICAge0Bjb2RlIG51bGx9LiBUaGlzIGNvbnRhaW5zIG9wdGlvbmFsIG1ldGFkYXRhIGFib3V0IHdoYXQgd2FzIGRldGVjdGVkIGFib3V0IHRoZSBiYXJjb2RlLAoJICAgICAqICAgbGlrZSBvcmllbnRhdGlvbi4KCSAgICAgKi8KCSAgICBSZXN1bHQucHJvdG90eXBlLmdldFJlc3VsdE1ldGFkYXRhID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHRNZXRhZGF0YTsKCSAgICB9OwoJICAgIFJlc3VsdC5wcm90b3R5cGUucHV0TWV0YWRhdGEgPSBmdW5jdGlvbiAodHlwZSwgdmFsdWUpIHsKCSAgICAgICAgaWYgKHRoaXMucmVzdWx0TWV0YWRhdGEgPT09IG51bGwpIHsKCSAgICAgICAgICAgIHRoaXMucmVzdWx0TWV0YWRhdGEgPSBuZXcgTWFwKCk7CgkgICAgICAgIH0KCSAgICAgICAgdGhpcy5yZXN1bHRNZXRhZGF0YS5zZXQodHlwZSwgdmFsdWUpOwoJICAgIH07CgkgICAgUmVzdWx0LnByb3RvdHlwZS5wdXRBbGxNZXRhZGF0YSA9IGZ1bmN0aW9uIChtZXRhZGF0YSkgewoJICAgICAgICBpZiAobWV0YWRhdGEgIT09IG51bGwpIHsKCSAgICAgICAgICAgIGlmICh0aGlzLnJlc3VsdE1ldGFkYXRhID09PSBudWxsKSB7CgkgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRNZXRhZGF0YSA9IG1ldGFkYXRhOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRNZXRhZGF0YSA9IG5ldyBNYXAobWV0YWRhdGEpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfTsKCSAgICBSZXN1bHQucHJvdG90eXBlLmFkZFJlc3VsdFBvaW50cyA9IGZ1bmN0aW9uIChuZXdQb2ludHMpIHsKCSAgICAgICAgdmFyIG9sZFBvaW50cyA9IHRoaXMucmVzdWx0UG9pbnRzOwoJICAgICAgICBpZiAob2xkUG9pbnRzID09PSBudWxsKSB7CgkgICAgICAgICAgICB0aGlzLnJlc3VsdFBvaW50cyA9IG5ld1BvaW50czsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIGlmIChuZXdQb2ludHMgIT09IG51bGwgJiYgbmV3UG9pbnRzLmxlbmd0aCA+IDApIHsKCSAgICAgICAgICAgIHZhciBhbGxQb2ludHMgPSBuZXcgQXJyYXkob2xkUG9pbnRzLmxlbmd0aCArIG5ld1BvaW50cy5sZW5ndGgpOwoJICAgICAgICAgICAgU3lzdGVtXzEkMS5kZWZhdWx0LmFycmF5Y29weShvbGRQb2ludHMsIDAsIGFsbFBvaW50cywgMCwgb2xkUG9pbnRzLmxlbmd0aCk7CgkgICAgICAgICAgICBTeXN0ZW1fMSQxLmRlZmF1bHQuYXJyYXljb3B5KG5ld1BvaW50cywgMCwgYWxsUG9pbnRzLCBvbGRQb2ludHMubGVuZ3RoLCBuZXdQb2ludHMubGVuZ3RoKTsKCSAgICAgICAgICAgIHRoaXMucmVzdWx0UG9pbnRzID0gYWxsUG9pbnRzOwoJICAgICAgICB9CgkgICAgfTsKCSAgICBSZXN1bHQucHJvdG90eXBlLmdldFRpbWVzdGFtcCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMudGltZXN0YW1wOwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIFJlc3VsdC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnRleHQ7CgkgICAgfTsKCSAgICByZXR1cm4gUmVzdWx0OwoJfSgpKTsKCVJlc3VsdCQxLmRlZmF1bHQgPSBSZXN1bHQ7CgoJdmFyIFJlc3VsdE1ldGFkYXRhVHlwZSQxID0ge307CgoJLyoKCSAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZXN1bHRNZXRhZGF0YVR5cGUkMSwgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZyB7Ki8KCS8qKgoJICogUmVwcmVzZW50cyBzb21lIHR5cGUgb2YgbWV0YWRhdGEgYWJvdXQgdGhlIHJlc3VsdCBvZiB0aGUgZGVjb2RpbmcgdGhhdCB0aGUgZGVjb2RlcgoJICogd2lzaGVzIHRvIGNvbW11bmljYXRlIGJhY2sgdG8gdGhlIGNhbGxlci4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgUmVzdWx0TWV0YWRhdGFUeXBlOwoJKGZ1bmN0aW9uIChSZXN1bHRNZXRhZGF0YVR5cGUpIHsKCSAgICAvKioKCSAgICAgKiBVbnNwZWNpZmllZCwgYXBwbGljYXRpb24tc3BlY2lmaWMgbWV0YWRhdGEuIE1hcHMgdG8gYW4gdW5zcGVjaWZpZWQge0BsaW5rIE9iamVjdH0uCgkgICAgICovCgkgICAgUmVzdWx0TWV0YWRhdGFUeXBlW1Jlc3VsdE1ldGFkYXRhVHlwZVsiT1RIRVIiXSA9IDBdID0gIk9USEVSIjsKCSAgICAvKioKCSAgICAgKiBEZW5vdGVzIHRoZSBsaWtlbHkgYXBwcm94aW1hdGUgb3JpZW50YXRpb24gb2YgdGhlIGJhcmNvZGUgaW4gdGhlIGltYWdlLiBUaGlzIHZhbHVlCgkgICAgICogaXMgZ2l2ZW4gYXMgZGVncmVlcyByb3RhdGVkIGNsb2Nrd2lzZSBmcm9tIHRoZSBub3JtYWwsIHVwcmlnaHQgb3JpZW50YXRpb24uCgkgICAgICogRm9yIGV4YW1wbGUgYSAxRCBiYXJjb2RlIHdoaWNoIHdhcyBmb3VuZCBieSByZWFkaW5nIHRvcC10by1ib3R0b20gd291bGQgYmUKCSAgICAgKiBzYWlkIHRvIGhhdmUgb3JpZW50YXRpb24gIjkwIi4gVGhpcyBrZXkgbWFwcyB0byBhbiB7QGxpbmsgSW50ZWdlcn0gd2hvc2UKCSAgICAgKiB2YWx1ZSBpcyBpbiB0aGUgcmFuZ2UgWzAsMzYwKS4KCSAgICAgKi8KCSAgICBSZXN1bHRNZXRhZGF0YVR5cGVbUmVzdWx0TWV0YWRhdGFUeXBlWyJPUklFTlRBVElPTiJdID0gMV0gPSAiT1JJRU5UQVRJT04iOwoJICAgIC8qKgoJICAgICAqIDxwPjJEIGJhcmNvZGUgZm9ybWF0cyB0eXBpY2FsbHkgZW5jb2RlIHRleHQsIGJ1dCBhbGxvdyBmb3IgYSBzb3J0IG9mICdieXRlIG1vZGUnCgkgICAgICogd2hpY2ggaXMgc29tZXRpbWVzIHVzZWQgdG8gZW5jb2RlIGJpbmFyeSBkYXRhLiBXaGlsZSB7QGxpbmsgUmVzdWx0fSBtYWtlcyBhdmFpbGFibGUKCSAgICAgKiB0aGUgY29tcGxldGUgcmF3IGJ5dGVzIGluIHRoZSBiYXJjb2RlIGZvciB0aGVzZSBmb3JtYXRzLCBpdCBkb2VzIG5vdCBvZmZlciB0aGUgYnl0ZXMKCSAgICAgKiBmcm9tIHRoZSBieXRlIHNlZ21lbnRzIGFsb25lLjwvcD4KCSAgICAgKgoJICAgICAqIDxwPlRoaXMgbWFwcyB0byBhIHtAbGluayBqYXZhLnV0aWwuTGlzdH0gb2YgYnl0ZSBhcnJheXMgY29ycmVzcG9uZGluZyB0byB0aGUKCSAgICAgKiByYXcgYnl0ZXMgaW4gdGhlIGJ5dGUgc2VnbWVudHMgaW4gdGhlIGJhcmNvZGUsIGluIG9yZGVyLjwvcD4KCSAgICAgKi8KCSAgICBSZXN1bHRNZXRhZGF0YVR5cGVbUmVzdWx0TWV0YWRhdGFUeXBlWyJCWVRFX1NFR01FTlRTIl0gPSAyXSA9ICJCWVRFX1NFR01FTlRTIjsKCSAgICAvKioKCSAgICAgKiBFcnJvciBjb3JyZWN0aW9uIGxldmVsIHVzZWQsIGlmIGFwcGxpY2FibGUuIFRoZSB2YWx1ZSB0eXBlIGRlcGVuZHMgb24gdGhlCgkgICAgICogZm9ybWF0LCBidXQgaXMgdHlwaWNhbGx5IGEgU3RyaW5nLgoJICAgICAqLwoJICAgIFJlc3VsdE1ldGFkYXRhVHlwZVtSZXN1bHRNZXRhZGF0YVR5cGVbIkVSUk9SX0NPUlJFQ1RJT05fTEVWRUwiXSA9IDNdID0gIkVSUk9SX0NPUlJFQ1RJT05fTEVWRUwiOwoJICAgIC8qKgoJICAgICAqIEZvciBzb21lIHBlcmlvZGljYWxzLCBpbmRpY2F0ZXMgdGhlIGlzc3VlIG51bWJlciBhcyBhbiB7QGxpbmsgSW50ZWdlcn0uCgkgICAgICovCgkgICAgUmVzdWx0TWV0YWRhdGFUeXBlW1Jlc3VsdE1ldGFkYXRhVHlwZVsiSVNTVUVfTlVNQkVSIl0gPSA0XSA9ICJJU1NVRV9OVU1CRVIiOwoJICAgIC8qKgoJICAgICAqIEZvciBzb21lIHByb2R1Y3RzLCBpbmRpY2F0ZXMgdGhlIHN1Z2dlc3RlZCByZXRhaWwgcHJpY2UgaW4gdGhlIGJhcmNvZGUgYXMgYQoJICAgICAqIGZvcm1hdHRlZCB7QGxpbmsgU3RyaW5nfS4KCSAgICAgKi8KCSAgICBSZXN1bHRNZXRhZGF0YVR5cGVbUmVzdWx0TWV0YWRhdGFUeXBlWyJTVUdHRVNURURfUFJJQ0UiXSA9IDVdID0gIlNVR0dFU1RFRF9QUklDRSI7CgkgICAgLyoqCgkgICAgICogRm9yIHNvbWUgcHJvZHVjdHMsIHRoZSBwb3NzaWJsZSBjb3VudHJ5IG9mIG1hbnVmYWN0dXJlIGFzIGEge0BsaW5rIFN0cmluZ30gZGVub3RpbmcgdGhlCgkgICAgICogSVNPIGNvdW50cnkgY29kZS4gU29tZSBtYXAgdG8gbXVsdGlwbGUgcG9zc2libGUgY291bnRyaWVzLCBsaWtlICJVUy9DQSIuCgkgICAgICovCgkgICAgUmVzdWx0TWV0YWRhdGFUeXBlW1Jlc3VsdE1ldGFkYXRhVHlwZVsiUE9TU0lCTEVfQ09VTlRSWSJdID0gNl0gPSAiUE9TU0lCTEVfQ09VTlRSWSI7CgkgICAgLyoqCgkgICAgICogRm9yIHNvbWUgcHJvZHVjdHMsIHRoZSBleHRlbnNpb24gdGV4dAoJICAgICAqLwoJICAgIFJlc3VsdE1ldGFkYXRhVHlwZVtSZXN1bHRNZXRhZGF0YVR5cGVbIlVQQ19FQU5fRVhURU5TSU9OIl0gPSA3XSA9ICJVUENfRUFOX0VYVEVOU0lPTiI7CgkgICAgLyoqCgkgICAgICogUERGNDE3LXNwZWNpZmljIG1ldGFkYXRhCgkgICAgICovCgkgICAgUmVzdWx0TWV0YWRhdGFUeXBlW1Jlc3VsdE1ldGFkYXRhVHlwZVsiUERGNDE3X0VYVFJBX01FVEFEQVRBIl0gPSA4XSA9ICJQREY0MTdfRVhUUkFfTUVUQURBVEEiOwoJICAgIC8qKgoJICAgICAqIElmIHRoZSBjb2RlIGZvcm1hdCBzdXBwb3J0cyBzdHJ1Y3R1cmVkIGFwcGVuZCBhbmQgdGhlIGN1cnJlbnQgc2Nhbm5lZCBjb2RlIGlzIHBhcnQgb2Ygb25lIHRoZW4gdGhlCgkgICAgICogc2VxdWVuY2UgbnVtYmVyIGlzIGdpdmVuIHdpdGggaXQuCgkgICAgICovCgkgICAgUmVzdWx0TWV0YWRhdGFUeXBlW1Jlc3VsdE1ldGFkYXRhVHlwZVsiU1RSVUNUVVJFRF9BUFBFTkRfU0VRVUVOQ0UiXSA9IDldID0gIlNUUlVDVFVSRURfQVBQRU5EX1NFUVVFTkNFIjsKCSAgICAvKioKCSAgICAgKiBJZiB0aGUgY29kZSBmb3JtYXQgc3VwcG9ydHMgc3RydWN0dXJlZCBhcHBlbmQgYW5kIHRoZSBjdXJyZW50IHNjYW5uZWQgY29kZSBpcyBwYXJ0IG9mIG9uZSB0aGVuIHRoZQoJICAgICAqIHBhcml0eSBpcyBnaXZlbiB3aXRoIGl0LgoJICAgICAqLwoJICAgIFJlc3VsdE1ldGFkYXRhVHlwZVtSZXN1bHRNZXRhZGF0YVR5cGVbIlNUUlVDVFVSRURfQVBQRU5EX1BBUklUWSJdID0gMTBdID0gIlNUUlVDVFVSRURfQVBQRU5EX1BBUklUWSI7Cgl9KShSZXN1bHRNZXRhZGF0YVR5cGUgfHwgKFJlc3VsdE1ldGFkYXRhVHlwZSA9IHt9KSk7CglSZXN1bHRNZXRhZGF0YVR5cGUkMS5kZWZhdWx0ID0gUmVzdWx0TWV0YWRhdGFUeXBlOwoKCXZhciBEZWNvZGVyJDEgPSB7fTsKCgl2YXIgQ2hlY2tzdW1FeGNlcHRpb24kMSA9IHt9OwoKCXZhciBfX2V4dGVuZHMkOCA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShDaGVja3N1bUV4Y2VwdGlvbiQxLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7Cgl2YXIgRXhjZXB0aW9uXzEkNCA9IEV4Y2VwdGlvbiQxOwoJLyoqCgkgKiBDdXN0b20gRXJyb3IgY2xhc3Mgb2YgdHlwZSBFeGNlcHRpb24uCgkgKi8KCXZhciBDaGVja3N1bUV4Y2VwdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMkOChDaGVja3N1bUV4Y2VwdGlvbiwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBDaGVja3N1bUV4Y2VwdGlvbigpIHsKCSAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzOwoJICAgIH0KCSAgICBDaGVja3N1bUV4Y2VwdGlvbi5nZXRDaGVja3N1bUluc3RhbmNlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gbmV3IENoZWNrc3VtRXhjZXB0aW9uKCk7CgkgICAgfTsKCSAgICBDaGVja3N1bUV4Y2VwdGlvbi5raW5kID0gJ0NoZWNrc3VtRXhjZXB0aW9uJzsKCSAgICByZXR1cm4gQ2hlY2tzdW1FeGNlcHRpb247Cgl9KEV4Y2VwdGlvbl8xJDQuZGVmYXVsdCkpOwoJQ2hlY2tzdW1FeGNlcHRpb24kMS5kZWZhdWx0ID0gQ2hlY2tzdW1FeGNlcHRpb247CgoJdmFyIEdlbmVyaWNHRiQxID0ge307CgoJdmFyIEdlbmVyaWNHRlBvbHkkMSA9IHt9OwoKCXZhciBBYnN0cmFjdEdlbmVyaWNHRiQxID0ge307CgoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShBYnN0cmFjdEdlbmVyaWNHRiQxLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7Cgl2YXIgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEkNSA9IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiQxOwoJLyoqCgkgKiA8cD5UaGlzIGNsYXNzIGNvbnRhaW5zIHV0aWxpdHkgbWV0aG9kcyBmb3IgcGVyZm9ybWluZyBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBvdmVyCgkgKiB0aGUgR2Fsb2lzIEZpZWxkcy4gT3BlcmF0aW9ucyB1c2UgYSBnaXZlbiBwcmltaXRpdmUgcG9seW5vbWlhbCBpbiBjYWxjdWxhdGlvbnMuPC9wPgoJICoKCSAqIDxwPlRocm91Z2hvdXQgdGhpcyBwYWNrYWdlLCBlbGVtZW50cyBvZiB0aGUgR0YgYXJlIHJlcHJlc2VudGVkIGFzIGFuIHtAY29kZSBpbnR9CgkgKiBmb3IgY29udmVuaWVuY2UgYW5kIHNwZWVkIChidXQgYXQgdGhlIGNvc3Qgb2YgbWVtb3J5KS4KCSAqIDwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICogQGF1dGhvciBEYXZpZCBPbGl2aWVyCgkgKi8KCXZhciBBYnN0cmFjdEdlbmVyaWNHRiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBBYnN0cmFjdEdlbmVyaWNHRigpIHsKCSAgICB9CgkgICAgLyoqCgkgICAgICogQHJldHVybiAyIHRvIHRoZSBwb3dlciBvZiBhIGluIEdGKHNpemUpCgkgICAgICovCgkgICAgQWJzdHJhY3RHZW5lcmljR0YucHJvdG90eXBlLmV4cCA9IGZ1bmN0aW9uIChhKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmV4cFRhYmxlW2FdOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiBiYXNlIDIgbG9nIG9mIGEgaW4gR0Yoc2l6ZSkKCSAgICAgKi8KCSAgICBBYnN0cmFjdEdlbmVyaWNHRi5wcm90b3R5cGUubG9nID0gZnVuY3Rpb24gKGEgLyppbnQqLykgewoJICAgICAgICBpZiAoYSA9PT0gMCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xJDUuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiB0aGlzLmxvZ1RhYmxlW2FdOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogSW1wbGVtZW50cyBib3RoIGFkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbiAtLSB0aGV5IGFyZSB0aGUgc2FtZSBpbiBHRihzaXplKS4KCSAgICAgKgoJICAgICAqIEByZXR1cm4gc3VtL2RpZmZlcmVuY2Ugb2YgYSBhbmQgYgoJICAgICAqLwoJICAgIEFic3RyYWN0R2VuZXJpY0dGLmFkZE9yU3VidHJhY3QgPSBmdW5jdGlvbiAoYSAvKmludCovLCBiIC8qaW50Ki8pIHsKCSAgICAgICAgcmV0dXJuIGEgXiBiOwoJICAgIH07CgkgICAgcmV0dXJuIEFic3RyYWN0R2VuZXJpY0dGOwoJfSgpKTsKCUFic3RyYWN0R2VuZXJpY0dGJDEuZGVmYXVsdCA9IEFic3RyYWN0R2VuZXJpY0dGOwoKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoR2VuZXJpY0dGUG9seSQxLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbi5yZWVkc29sb21vbiB7Ki8KCXZhciBBYnN0cmFjdEdlbmVyaWNHRl8xJDEgPSBBYnN0cmFjdEdlbmVyaWNHRiQxOwoJdmFyIFN5c3RlbV8xID0gU3lzdGVtJDE7Cgl2YXIgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEkNCA9IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiQxOwoJLyoqCgkgKiA8cD5SZXByZXNlbnRzIGEgcG9seW5vbWlhbCB3aG9zZSBjb2VmZmljaWVudHMgYXJlIGVsZW1lbnRzIG9mIGEgR0YuCgkgKiBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBhcmUgaW1tdXRhYmxlLjwvcD4KCSAqCgkgKiA8cD5NdWNoIGNyZWRpdCBpcyBkdWUgdG8gV2lsbGlhbSBSdWNrbGlkZ2Ugc2luY2UgcG9ydGlvbnMgb2YgdGhpcyBjb2RlIGFyZSBhbiBpbmRpcmVjdAoJICogcG9ydCBvZiBoaXMgQysrIFJlZWQtU29sb21vbiBpbXBsZW1lbnRhdGlvbi48L3A+CgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIEdlbmVyaWNHRlBvbHkgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgLyoqCgkgICAgICogQHBhcmFtIGZpZWxkIHRoZSB7QGxpbmsgR2VuZXJpY0dGfSBpbnN0YW5jZSByZXByZXNlbnRpbmcgdGhlIGZpZWxkIHRvIHVzZQoJICAgICAqIHRvIHBlcmZvcm0gY29tcHV0YXRpb25zCgkgICAgICogQHBhcmFtIGNvZWZmaWNpZW50cyBjb2VmZmljaWVudHMgYXMgaW50cyByZXByZXNlbnRpbmcgZWxlbWVudHMgb2YgR0Yoc2l6ZSksIGFycmFuZ2VkCgkgICAgICogZnJvbSBtb3N0IHNpZ25pZmljYW50IChoaWdoZXN0LXBvd2VyIHRlcm0pIGNvZWZmaWNpZW50IHRvIGxlYXN0IHNpZ25pZmljYW50CgkgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgYXJndW1lbnQgaXMgbnVsbCBvciBlbXB0eSwKCSAgICAgKiBvciBpZiBsZWFkaW5nIGNvZWZmaWNpZW50IGlzIDAgYW5kIHRoaXMgaXMgbm90IGEKCSAgICAgKiBjb25zdGFudCBwb2x5bm9taWFsICh0aGF0IGlzLCBpdCBpcyBub3QgdGhlIG1vbm9taWFsICIwIikKCSAgICAgKi8KCSAgICBmdW5jdGlvbiBHZW5lcmljR0ZQb2x5KGZpZWxkLCBjb2VmZmljaWVudHMpIHsKCSAgICAgICAgaWYgKGNvZWZmaWNpZW50cy5sZW5ndGggPT09IDApIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSQ0LmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICB0aGlzLmZpZWxkID0gZmllbGQ7CgkgICAgICAgIHZhciBjb2VmZmljaWVudHNMZW5ndGggPSBjb2VmZmljaWVudHMubGVuZ3RoOwoJICAgICAgICBpZiAoY29lZmZpY2llbnRzTGVuZ3RoID4gMSAmJiBjb2VmZmljaWVudHNbMF0gPT09IDApIHsKCSAgICAgICAgICAgIC8vIExlYWRpbmcgdGVybSBtdXN0IGJlIG5vbi16ZXJvIGZvciBhbnl0aGluZyBleGNlcHQgdGhlIGNvbnN0YW50IHBvbHlub21pYWwgIjAiCgkgICAgICAgICAgICB2YXIgZmlyc3ROb25aZXJvID0gMTsKCSAgICAgICAgICAgIHdoaWxlIChmaXJzdE5vblplcm8gPCBjb2VmZmljaWVudHNMZW5ndGggJiYgY29lZmZpY2llbnRzW2ZpcnN0Tm9uWmVyb10gPT09IDApIHsKCSAgICAgICAgICAgICAgICBmaXJzdE5vblplcm8rKzsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmIChmaXJzdE5vblplcm8gPT09IGNvZWZmaWNpZW50c0xlbmd0aCkgewoJICAgICAgICAgICAgICAgIHRoaXMuY29lZmZpY2llbnRzID0gSW50MzJBcnJheS5mcm9tKFswXSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICB0aGlzLmNvZWZmaWNpZW50cyA9IG5ldyBJbnQzMkFycmF5KGNvZWZmaWNpZW50c0xlbmd0aCAtIGZpcnN0Tm9uWmVybyk7CgkgICAgICAgICAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkoY29lZmZpY2llbnRzLCBmaXJzdE5vblplcm8sIHRoaXMuY29lZmZpY2llbnRzLCAwLCB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGgpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgdGhpcy5jb2VmZmljaWVudHMgPSBjb2VmZmljaWVudHM7CgkgICAgICAgIH0KCSAgICB9CgkgICAgR2VuZXJpY0dGUG9seS5wcm90b3R5cGUuZ2V0Q29lZmZpY2llbnRzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5jb2VmZmljaWVudHM7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIGRlZ3JlZSBvZiB0aGlzIHBvbHlub21pYWwKCSAgICAgKi8KCSAgICBHZW5lcmljR0ZQb2x5LnByb3RvdHlwZS5nZXREZWdyZWUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGggLSAxOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiB0cnVlIGlmZiB0aGlzIHBvbHlub21pYWwgaXMgdGhlIG1vbm9taWFsICIwIgoJICAgICAqLwoJICAgIEdlbmVyaWNHRlBvbHkucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuY29lZmZpY2llbnRzWzBdID09PSAwOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiBjb2VmZmljaWVudCBvZiB4XmRlZ3JlZSB0ZXJtIGluIHRoaXMgcG9seW5vbWlhbAoJICAgICAqLwoJICAgIEdlbmVyaWNHRlBvbHkucHJvdG90eXBlLmdldENvZWZmaWNpZW50ID0gZnVuY3Rpb24gKGRlZ3JlZSAvKmludCovKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmNvZWZmaWNpZW50c1t0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGggLSAxIC0gZGVncmVlXTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gZXZhbHVhdGlvbiBvZiB0aGlzIHBvbHlub21pYWwgYXQgYSBnaXZlbiBwb2ludAoJICAgICAqLwoJICAgIEdlbmVyaWNHRlBvbHkucHJvdG90eXBlLmV2YWx1YXRlQXQgPSBmdW5jdGlvbiAoYSAvKmludCovKSB7CgkgICAgICAgIGlmIChhID09PSAwKSB7CgkgICAgICAgICAgICAvLyBKdXN0IHJldHVybiB0aGUgeF4wIGNvZWZmaWNpZW50CgkgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDb2VmZmljaWVudCgwKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgY29lZmZpY2llbnRzID0gdGhpcy5jb2VmZmljaWVudHM7CgkgICAgICAgIHZhciByZXN1bHQ7CgkgICAgICAgIGlmIChhID09PSAxKSB7CgkgICAgICAgICAgICAvLyBKdXN0IHRoZSBzdW0gb2YgdGhlIGNvZWZmaWNpZW50cwoJICAgICAgICAgICAgcmVzdWx0ID0gMDsKCSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGhfMSA9IGNvZWZmaWNpZW50cy5sZW5ndGg7IGkgIT09IGxlbmd0aF8xOyBpKyspIHsKCSAgICAgICAgICAgICAgICB2YXIgY29lZmZpY2llbnQgPSBjb2VmZmljaWVudHNbaV07CgkgICAgICAgICAgICAgICAgcmVzdWx0ID0gQWJzdHJhY3RHZW5lcmljR0ZfMSQxLmRlZmF1bHQuYWRkT3JTdWJ0cmFjdChyZXN1bHQsIGNvZWZmaWNpZW50KTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CgkgICAgICAgIH0KCSAgICAgICAgcmVzdWx0ID0gY29lZmZpY2llbnRzWzBdOwoJICAgICAgICB2YXIgc2l6ZSA9IGNvZWZmaWNpZW50cy5sZW5ndGg7CgkgICAgICAgIHZhciBmaWVsZCA9IHRoaXMuZmllbGQ7CgkgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgc2l6ZTsgaSsrKSB7CgkgICAgICAgICAgICByZXN1bHQgPSBBYnN0cmFjdEdlbmVyaWNHRl8xJDEuZGVmYXVsdC5hZGRPclN1YnRyYWN0KGZpZWxkLm11bHRpcGx5KGEsIHJlc3VsdCksIGNvZWZmaWNpZW50c1tpXSk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJlc3VsdDsKCSAgICB9OwoJICAgIEdlbmVyaWNHRlBvbHkucHJvdG90eXBlLmFkZE9yU3VidHJhY3QgPSBmdW5jdGlvbiAob3RoZXIpIHsKCSAgICAgICAgaWYgKCF0aGlzLmZpZWxkLmVxdWFscyhvdGhlci5maWVsZCkpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSQ0LmRlZmF1bHQoJ0dlbmVyaWNHRlBvbHlzIGRvIG5vdCBoYXZlIHNhbWUgR2VuZXJpY0dGIGZpZWxkJyk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHsKCSAgICAgICAgICAgIHJldHVybiBvdGhlcjsKCSAgICAgICAgfQoJICAgICAgICBpZiAob3RoZXIuaXNaZXJvKCkpIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzOwoJICAgICAgICB9CgkgICAgICAgIHZhciBzbWFsbGVyQ29lZmZpY2llbnRzID0gdGhpcy5jb2VmZmljaWVudHM7CgkgICAgICAgIHZhciBsYXJnZXJDb2VmZmljaWVudHMgPSBvdGhlci5jb2VmZmljaWVudHM7CgkgICAgICAgIGlmIChzbWFsbGVyQ29lZmZpY2llbnRzLmxlbmd0aCA+IGxhcmdlckNvZWZmaWNpZW50cy5sZW5ndGgpIHsKCSAgICAgICAgICAgIHZhciB0ZW1wID0gc21hbGxlckNvZWZmaWNpZW50czsKCSAgICAgICAgICAgIHNtYWxsZXJDb2VmZmljaWVudHMgPSBsYXJnZXJDb2VmZmljaWVudHM7CgkgICAgICAgICAgICBsYXJnZXJDb2VmZmljaWVudHMgPSB0ZW1wOwoJICAgICAgICB9CgkgICAgICAgIHZhciBzdW1EaWZmID0gbmV3IEludDMyQXJyYXkobGFyZ2VyQ29lZmZpY2llbnRzLmxlbmd0aCk7CgkgICAgICAgIHZhciBsZW5ndGhEaWZmID0gbGFyZ2VyQ29lZmZpY2llbnRzLmxlbmd0aCAtIHNtYWxsZXJDb2VmZmljaWVudHMubGVuZ3RoOwoJICAgICAgICAvLyBDb3B5IGhpZ2gtb3JkZXIgdGVybXMgb25seSBmb3VuZCBpbiBoaWdoZXItZGVncmVlIHBvbHlub21pYWwncyBjb2VmZmljaWVudHMKCSAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkobGFyZ2VyQ29lZmZpY2llbnRzLCAwLCBzdW1EaWZmLCAwLCBsZW5ndGhEaWZmKTsKCSAgICAgICAgZm9yICh2YXIgaSA9IGxlbmd0aERpZmY7IGkgPCBsYXJnZXJDb2VmZmljaWVudHMubGVuZ3RoOyBpKyspIHsKCSAgICAgICAgICAgIHN1bURpZmZbaV0gPSBBYnN0cmFjdEdlbmVyaWNHRl8xJDEuZGVmYXVsdC5hZGRPclN1YnRyYWN0KHNtYWxsZXJDb2VmZmljaWVudHNbaSAtIGxlbmd0aERpZmZdLCBsYXJnZXJDb2VmZmljaWVudHNbaV0pOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBuZXcgR2VuZXJpY0dGUG9seSh0aGlzLmZpZWxkLCBzdW1EaWZmKTsKCSAgICB9OwoJICAgIEdlbmVyaWNHRlBvbHkucHJvdG90eXBlLm11bHRpcGx5ID0gZnVuY3Rpb24gKG90aGVyKSB7CgkgICAgICAgIGlmICghdGhpcy5maWVsZC5lcXVhbHMob3RoZXIuZmllbGQpKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEkNC5kZWZhdWx0KCdHZW5lcmljR0ZQb2x5cyBkbyBub3QgaGF2ZSBzYW1lIEdlbmVyaWNHRiBmaWVsZCcpOwoJICAgICAgICB9CgkgICAgICAgIGlmICh0aGlzLmlzWmVybygpIHx8IG90aGVyLmlzWmVybygpKSB7CgkgICAgICAgICAgICByZXR1cm4gdGhpcy5maWVsZC5nZXRaZXJvKCk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGFDb2VmZmljaWVudHMgPSB0aGlzLmNvZWZmaWNpZW50czsKCSAgICAgICAgdmFyIGFMZW5ndGggPSBhQ29lZmZpY2llbnRzLmxlbmd0aDsKCSAgICAgICAgdmFyIGJDb2VmZmljaWVudHMgPSBvdGhlci5jb2VmZmljaWVudHM7CgkgICAgICAgIHZhciBiTGVuZ3RoID0gYkNvZWZmaWNpZW50cy5sZW5ndGg7CgkgICAgICAgIHZhciBwcm9kdWN0ID0gbmV3IEludDMyQXJyYXkoYUxlbmd0aCArIGJMZW5ndGggLSAxKTsKCSAgICAgICAgdmFyIGZpZWxkID0gdGhpcy5maWVsZDsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhTGVuZ3RoOyBpKyspIHsKCSAgICAgICAgICAgIHZhciBhQ29lZmYgPSBhQ29lZmZpY2llbnRzW2ldOwoJICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBiTGVuZ3RoOyBqKyspIHsKCSAgICAgICAgICAgICAgICBwcm9kdWN0W2kgKyBqXSA9IEFic3RyYWN0R2VuZXJpY0dGXzEkMS5kZWZhdWx0LmFkZE9yU3VidHJhY3QocHJvZHVjdFtpICsgal0sIGZpZWxkLm11bHRpcGx5KGFDb2VmZiwgYkNvZWZmaWNpZW50c1tqXSkpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBuZXcgR2VuZXJpY0dGUG9seShmaWVsZCwgcHJvZHVjdCk7CgkgICAgfTsKCSAgICBHZW5lcmljR0ZQb2x5LnByb3RvdHlwZS5tdWx0aXBseVNjYWxhciA9IGZ1bmN0aW9uIChzY2FsYXIgLyppbnQqLykgewoJICAgICAgICBpZiAoc2NhbGFyID09PSAwKSB7CgkgICAgICAgICAgICByZXR1cm4gdGhpcy5maWVsZC5nZXRaZXJvKCk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHNjYWxhciA9PT0gMSkgewoJICAgICAgICAgICAgcmV0dXJuIHRoaXM7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHNpemUgPSB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGg7CgkgICAgICAgIHZhciBmaWVsZCA9IHRoaXMuZmllbGQ7CgkgICAgICAgIHZhciBwcm9kdWN0ID0gbmV3IEludDMyQXJyYXkoc2l6ZSk7CgkgICAgICAgIHZhciBjb2VmZmljaWVudHMgPSB0aGlzLmNvZWZmaWNpZW50czsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKCSAgICAgICAgICAgIHByb2R1Y3RbaV0gPSBmaWVsZC5tdWx0aXBseShjb2VmZmljaWVudHNbaV0sIHNjYWxhcik7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG5ldyBHZW5lcmljR0ZQb2x5KGZpZWxkLCBwcm9kdWN0KTsKCSAgICB9OwoJICAgIEdlbmVyaWNHRlBvbHkucHJvdG90eXBlLm11bHRpcGx5QnlNb25vbWlhbCA9IGZ1bmN0aW9uIChkZWdyZWUgLyppbnQqLywgY29lZmZpY2llbnQgLyppbnQqLykgewoJICAgICAgICBpZiAoZGVncmVlIDwgMCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xJDQuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIGlmIChjb2VmZmljaWVudCA9PT0gMCkgewoJICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQuZ2V0WmVybygpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBjb2VmZmljaWVudHMgPSB0aGlzLmNvZWZmaWNpZW50czsKCSAgICAgICAgdmFyIHNpemUgPSBjb2VmZmljaWVudHMubGVuZ3RoOwoJICAgICAgICB2YXIgcHJvZHVjdCA9IG5ldyBJbnQzMkFycmF5KHNpemUgKyBkZWdyZWUpOwoJICAgICAgICB2YXIgZmllbGQgPSB0aGlzLmZpZWxkOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykgewoJICAgICAgICAgICAgcHJvZHVjdFtpXSA9IGZpZWxkLm11bHRpcGx5KGNvZWZmaWNpZW50c1tpXSwgY29lZmZpY2llbnQpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBuZXcgR2VuZXJpY0dGUG9seShmaWVsZCwgcHJvZHVjdCk7CgkgICAgfTsKCSAgICBHZW5lcmljR0ZQb2x5LnByb3RvdHlwZS5kaXZpZGUgPSBmdW5jdGlvbiAob3RoZXIpIHsKCSAgICAgICAgaWYgKCF0aGlzLmZpZWxkLmVxdWFscyhvdGhlci5maWVsZCkpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSQ0LmRlZmF1bHQoJ0dlbmVyaWNHRlBvbHlzIGRvIG5vdCBoYXZlIHNhbWUgR2VuZXJpY0dGIGZpZWxkJyk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKG90aGVyLmlzWmVybygpKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEkNC5kZWZhdWx0KCdEaXZpZGUgYnkgMCcpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBmaWVsZCA9IHRoaXMuZmllbGQ7CgkgICAgICAgIHZhciBxdW90aWVudCA9IGZpZWxkLmdldFplcm8oKTsKCSAgICAgICAgdmFyIHJlbWFpbmRlciA9IHRoaXM7CgkgICAgICAgIHZhciBkZW5vbWluYXRvckxlYWRpbmdUZXJtID0gb3RoZXIuZ2V0Q29lZmZpY2llbnQob3RoZXIuZ2V0RGVncmVlKCkpOwoJICAgICAgICB2YXIgaW52ZXJzZURlbm9taW5hdG9yTGVhZGluZ1Rlcm0gPSBmaWVsZC5pbnZlcnNlKGRlbm9taW5hdG9yTGVhZGluZ1Rlcm0pOwoJICAgICAgICB3aGlsZSAocmVtYWluZGVyLmdldERlZ3JlZSgpID49IG90aGVyLmdldERlZ3JlZSgpICYmICFyZW1haW5kZXIuaXNaZXJvKCkpIHsKCSAgICAgICAgICAgIHZhciBkZWdyZWVEaWZmZXJlbmNlID0gcmVtYWluZGVyLmdldERlZ3JlZSgpIC0gb3RoZXIuZ2V0RGVncmVlKCk7CgkgICAgICAgICAgICB2YXIgc2NhbGUgPSBmaWVsZC5tdWx0aXBseShyZW1haW5kZXIuZ2V0Q29lZmZpY2llbnQocmVtYWluZGVyLmdldERlZ3JlZSgpKSwgaW52ZXJzZURlbm9taW5hdG9yTGVhZGluZ1Rlcm0pOwoJICAgICAgICAgICAgdmFyIHRlcm0gPSBvdGhlci5tdWx0aXBseUJ5TW9ub21pYWwoZGVncmVlRGlmZmVyZW5jZSwgc2NhbGUpOwoJICAgICAgICAgICAgdmFyIGl0ZXJhdGlvblF1b3RpZW50ID0gZmllbGQuYnVpbGRNb25vbWlhbChkZWdyZWVEaWZmZXJlbmNlLCBzY2FsZSk7CgkgICAgICAgICAgICBxdW90aWVudCA9IHF1b3RpZW50LmFkZE9yU3VidHJhY3QoaXRlcmF0aW9uUXVvdGllbnQpOwoJICAgICAgICAgICAgcmVtYWluZGVyID0gcmVtYWluZGVyLmFkZE9yU3VidHJhY3QodGVybSk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIFtxdW90aWVudCwgcmVtYWluZGVyXTsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBHZW5lcmljR0ZQb2x5LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIHJlc3VsdCA9ICcnOwoJICAgICAgICBmb3IgKHZhciBkZWdyZWUgPSB0aGlzLmdldERlZ3JlZSgpOyBkZWdyZWUgPj0gMDsgZGVncmVlLS0pIHsKCSAgICAgICAgICAgIHZhciBjb2VmZmljaWVudCA9IHRoaXMuZ2V0Q29lZmZpY2llbnQoZGVncmVlKTsKCSAgICAgICAgICAgIGlmIChjb2VmZmljaWVudCAhPT0gMCkgewoJICAgICAgICAgICAgICAgIGlmIChjb2VmZmljaWVudCA8IDApIHsKCSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICcgLSAnOwoJICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudCA9IC1jb2VmZmljaWVudDsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICcgKyAnOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGlmIChkZWdyZWUgPT09IDAgfHwgY29lZmZpY2llbnQgIT09IDEpIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIGFscGhhUG93ZXIgPSB0aGlzLmZpZWxkLmxvZyhjb2VmZmljaWVudCk7CgkgICAgICAgICAgICAgICAgICAgIGlmIChhbHBoYVBvd2VyID09PSAwKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJzEnOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFscGhhUG93ZXIgPT09IDEpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnYSc7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2FeJzsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBhbHBoYVBvd2VyOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGlmIChkZWdyZWUgIT09IDApIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGRlZ3JlZSA9PT0gMSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICd4JzsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAneF4nOwoJICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGRlZ3JlZTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gcmVzdWx0OwoJICAgIH07CgkgICAgcmV0dXJuIEdlbmVyaWNHRlBvbHk7Cgl9KCkpOwoJR2VuZXJpY0dGUG9seSQxLmRlZmF1bHQgPSBHZW5lcmljR0ZQb2x5OwoKCXZhciBBcml0aG1ldGljRXhjZXB0aW9uJDEgPSB7fTsKCgl2YXIgX19leHRlbmRzJDcgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoQXJpdGhtZXRpY0V4Y2VwdGlvbiQxLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7Cgl2YXIgRXhjZXB0aW9uXzEkMyA9IEV4Y2VwdGlvbiQxOwoJLyoqCgkgKiBDdXN0b20gRXJyb3IgY2xhc3Mgb2YgdHlwZSBFeGNlcHRpb24uCgkgKi8KCXZhciBBcml0aG1ldGljRXhjZXB0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyQ3KEFyaXRobWV0aWNFeGNlcHRpb24sIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gQXJpdGhtZXRpY0V4Y2VwdGlvbigpIHsKCSAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzOwoJICAgIH0KCSAgICBBcml0aG1ldGljRXhjZXB0aW9uLmtpbmQgPSAnQXJpdGhtZXRpY0V4Y2VwdGlvbic7CgkgICAgcmV0dXJuIEFyaXRobWV0aWNFeGNlcHRpb247Cgl9KEV4Y2VwdGlvbl8xJDMuZGVmYXVsdCkpOwoJQXJpdGhtZXRpY0V4Y2VwdGlvbiQxLmRlZmF1bHQgPSBBcml0aG1ldGljRXhjZXB0aW9uOwoKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCgl2YXIgX19leHRlbmRzJDYgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoR2VuZXJpY0dGJDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcuY29tbW9uLnJlZWRzb2xvbW9uIHsqLwoJdmFyIEdlbmVyaWNHRlBvbHlfMSQxID0gR2VuZXJpY0dGUG9seSQxOwoJdmFyIEFic3RyYWN0R2VuZXJpY0dGXzEgPSBBYnN0cmFjdEdlbmVyaWNHRiQxOwoJdmFyIEludGVnZXJfMSQxID0gSW50ZWdlciQxOwoJdmFyIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xJDMgPSBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24kMTsKCXZhciBBcml0aG1ldGljRXhjZXB0aW9uXzEgPSBBcml0aG1ldGljRXhjZXB0aW9uJDE7CgkvKioKCSAqIDxwPlRoaXMgY2xhc3MgY29udGFpbnMgdXRpbGl0eSBtZXRob2RzIGZvciBwZXJmb3JtaW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zIG92ZXIKCSAqIHRoZSBHYWxvaXMgRmllbGRzLiBPcGVyYXRpb25zIHVzZSBhIGdpdmVuIHByaW1pdGl2ZSBwb2x5bm9taWFsIGluIGNhbGN1bGF0aW9ucy48L3A+CgkgKgoJICogPHA+VGhyb3VnaG91dCB0aGlzIHBhY2thZ2UsIGVsZW1lbnRzIG9mIHRoZSBHRiBhcmUgcmVwcmVzZW50ZWQgYXMgYW4ge0Bjb2RlIGludH0KCSAqIGZvciBjb252ZW5pZW5jZSBhbmQgc3BlZWQgKGJ1dCBhdCB0aGUgY29zdCBvZiBtZW1vcnkpLgoJICogPC9wPgoJICoKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKiBAYXV0aG9yIERhdmlkIE9saXZpZXIKCSAqLwoJdmFyIEdlbmVyaWNHRiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMkNihHZW5lcmljR0YsIF9zdXBlcik7CgkgICAgLyoqCgkgICAgICogQ3JlYXRlIGEgcmVwcmVzZW50YXRpb24gb2YgR0Yoc2l6ZSkgdXNpbmcgdGhlIGdpdmVuIHByaW1pdGl2ZSBwb2x5bm9taWFsLgoJICAgICAqCgkgICAgICogQHBhcmFtIHByaW1pdGl2ZSBpcnJlZHVjaWJsZSBwb2x5bm9taWFsIHdob3NlIGNvZWZmaWNpZW50cyBhcmUgcmVwcmVzZW50ZWQgYnkKCSAgICAgKiAgdGhlIGJpdHMgb2YgYW4gaW50LCB3aGVyZSB0aGUgbGVhc3Qtc2lnbmlmaWNhbnQgYml0IHJlcHJlc2VudHMgdGhlIGNvbnN0YW50CgkgICAgICogIGNvZWZmaWNpZW50CgkgICAgICogQHBhcmFtIHNpemUgdGhlIHNpemUgb2YgdGhlIGZpZWxkCgkgICAgICogQHBhcmFtIGIgdGhlIGZhY3RvciBiIGluIHRoZSBnZW5lcmF0b3IgcG9seW5vbWlhbCBjYW4gYmUgMC0gb3IgMS1iYXNlZAoJICAgICAqICAoZyh4KSA9ICh4K2FeYikoeCthXihiKzEpKS4uLih4K2FeKGIrMnQtMSkpKS4KCSAgICAgKiAgSW4gbW9zdCBjYXNlcyBpdCBzaG91bGQgYmUgMSwgYnV0IGZvciBRUiBjb2RlIGl0IGlzIDAuCgkgICAgICovCgkgICAgZnVuY3Rpb24gR2VuZXJpY0dGKHByaW1pdGl2ZSAvKmludCovLCBzaXplIC8qaW50Ki8sIGdlbmVyYXRvckJhc2UgLyppbnQqLykgewoJICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzOwoJICAgICAgICBfdGhpcy5wcmltaXRpdmUgPSBwcmltaXRpdmU7CgkgICAgICAgIF90aGlzLnNpemUgPSBzaXplOwoJICAgICAgICBfdGhpcy5nZW5lcmF0b3JCYXNlID0gZ2VuZXJhdG9yQmFzZTsKCSAgICAgICAgdmFyIGV4cFRhYmxlID0gbmV3IEludDMyQXJyYXkoc2l6ZSk7CgkgICAgICAgIHZhciB4ID0gMTsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKCSAgICAgICAgICAgIGV4cFRhYmxlW2ldID0geDsKCSAgICAgICAgICAgIHggKj0gMjsgLy8gd2UncmUgYXNzdW1pbmcgdGhlIGdlbmVyYXRvciBhbHBoYSBpcyAyCgkgICAgICAgICAgICBpZiAoeCA+PSBzaXplKSB7CgkgICAgICAgICAgICAgICAgeCBePSBwcmltaXRpdmU7CgkgICAgICAgICAgICAgICAgeCAmPSBzaXplIC0gMTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBfdGhpcy5leHBUYWJsZSA9IGV4cFRhYmxlOwoJICAgICAgICB2YXIgbG9nVGFibGUgPSBuZXcgSW50MzJBcnJheShzaXplKTsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplIC0gMTsgaSsrKSB7CgkgICAgICAgICAgICBsb2dUYWJsZVtleHBUYWJsZVtpXV0gPSBpOwoJICAgICAgICB9CgkgICAgICAgIF90aGlzLmxvZ1RhYmxlID0gbG9nVGFibGU7CgkgICAgICAgIC8vIGxvZ1RhYmxlWzBdID09IDAgYnV0IHRoaXMgc2hvdWxkIG5ldmVyIGJlIHVzZWQKCSAgICAgICAgX3RoaXMuemVybyA9IG5ldyBHZW5lcmljR0ZQb2x5XzEkMS5kZWZhdWx0KF90aGlzLCBJbnQzMkFycmF5LmZyb20oWzBdKSk7CgkgICAgICAgIF90aGlzLm9uZSA9IG5ldyBHZW5lcmljR0ZQb2x5XzEkMS5kZWZhdWx0KF90aGlzLCBJbnQzMkFycmF5LmZyb20oWzFdKSk7CgkgICAgICAgIHJldHVybiBfdGhpczsKCSAgICB9CgkgICAgR2VuZXJpY0dGLnByb3RvdHlwZS5nZXRaZXJvID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy56ZXJvOwoJICAgIH07CgkgICAgR2VuZXJpY0dGLnByb3RvdHlwZS5nZXRPbmUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLm9uZTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gdGhlIG1vbm9taWFsIHJlcHJlc2VudGluZyBjb2VmZmljaWVudCAqIHheZGVncmVlCgkgICAgICovCgkgICAgR2VuZXJpY0dGLnByb3RvdHlwZS5idWlsZE1vbm9taWFsID0gZnVuY3Rpb24gKGRlZ3JlZSAvKmludCovLCBjb2VmZmljaWVudCAvKmludCovKSB7CgkgICAgICAgIGlmIChkZWdyZWUgPCAwKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEkMy5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGNvZWZmaWNpZW50ID09PSAwKSB7CgkgICAgICAgICAgICByZXR1cm4gdGhpcy56ZXJvOwoJICAgICAgICB9CgkgICAgICAgIHZhciBjb2VmZmljaWVudHMgPSBuZXcgSW50MzJBcnJheShkZWdyZWUgKyAxKTsKCSAgICAgICAgY29lZmZpY2llbnRzWzBdID0gY29lZmZpY2llbnQ7CgkgICAgICAgIHJldHVybiBuZXcgR2VuZXJpY0dGUG9seV8xJDEuZGVmYXVsdCh0aGlzLCBjb2VmZmljaWVudHMpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiBtdWx0aXBsaWNhdGl2ZSBpbnZlcnNlIG9mIGEKCSAgICAgKi8KCSAgICBHZW5lcmljR0YucHJvdG90eXBlLmludmVyc2UgPSBmdW5jdGlvbiAoYSAvKmludCovKSB7CgkgICAgICAgIGlmIChhID09PSAwKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgQXJpdGhtZXRpY0V4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdGhpcy5leHBUYWJsZVt0aGlzLnNpemUgLSB0aGlzLmxvZ1RhYmxlW2FdIC0gMV07CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIHByb2R1Y3Qgb2YgYSBhbmQgYiBpbiBHRihzaXplKQoJICAgICAqLwoJICAgIEdlbmVyaWNHRi5wcm90b3R5cGUubXVsdGlwbHkgPSBmdW5jdGlvbiAoYSAvKmludCovLCBiIC8qaW50Ki8pIHsKCSAgICAgICAgaWYgKGEgPT09IDAgfHwgYiA9PT0gMCkgewoJICAgICAgICAgICAgcmV0dXJuIDA7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRoaXMuZXhwVGFibGVbKHRoaXMubG9nVGFibGVbYV0gKyB0aGlzLmxvZ1RhYmxlW2JdKSAlICh0aGlzLnNpemUgLSAxKV07CgkgICAgfTsKCSAgICBHZW5lcmljR0YucHJvdG90eXBlLmdldFNpemUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnNpemU7CgkgICAgfTsKCSAgICBHZW5lcmljR0YucHJvdG90eXBlLmdldEdlbmVyYXRvckJhc2UgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRvckJhc2U7CgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgR2VuZXJpY0dGLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuICgnR0YoMHgnICsgSW50ZWdlcl8xJDEuZGVmYXVsdC50b0hleFN0cmluZyh0aGlzLnByaW1pdGl2ZSkgKyAnLCcgKyB0aGlzLnNpemUgKyAnKScpOwoJICAgIH07CgkgICAgR2VuZXJpY0dGLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAobykgewoJICAgICAgICByZXR1cm4gbyA9PT0gdGhpczsKCSAgICB9OwoJICAgIEdlbmVyaWNHRi5BWlRFQ19EQVRBXzEyID0gbmV3IEdlbmVyaWNHRigweDEwNjksIDQwOTYsIDEpOyAvLyB4XjEyICsgeF42ICsgeF41ICsgeF4zICsgMQoJICAgIEdlbmVyaWNHRi5BWlRFQ19EQVRBXzEwID0gbmV3IEdlbmVyaWNHRigweDQwOSwgMTAyNCwgMSk7IC8vIHheMTAgKyB4XjMgKyAxCgkgICAgR2VuZXJpY0dGLkFaVEVDX0RBVEFfNiA9IG5ldyBHZW5lcmljR0YoMHg0MywgNjQsIDEpOyAvLyB4XjYgKyB4ICsgMQoJICAgIEdlbmVyaWNHRi5BWlRFQ19QQVJBTSA9IG5ldyBHZW5lcmljR0YoMHgxMywgMTYsIDEpOyAvLyB4XjQgKyB4ICsgMQoJICAgIEdlbmVyaWNHRi5RUl9DT0RFX0ZJRUxEXzI1NiA9IG5ldyBHZW5lcmljR0YoMHgwMTFkLCAyNTYsIDApOyAvLyB4XjggKyB4XjQgKyB4XjMgKyB4XjIgKyAxCgkgICAgR2VuZXJpY0dGLkRBVEFfTUFUUklYX0ZJRUxEXzI1NiA9IG5ldyBHZW5lcmljR0YoMHgwMTJkLCAyNTYsIDEpOyAvLyB4XjggKyB4XjUgKyB4XjMgKyB4XjIgKyAxCgkgICAgR2VuZXJpY0dGLkFaVEVDX0RBVEFfOCA9IEdlbmVyaWNHRi5EQVRBX01BVFJJWF9GSUVMRF8yNTY7CgkgICAgR2VuZXJpY0dGLk1BWElDT0RFX0ZJRUxEXzY0ID0gR2VuZXJpY0dGLkFaVEVDX0RBVEFfNjsKCSAgICByZXR1cm4gR2VuZXJpY0dGOwoJfShBYnN0cmFjdEdlbmVyaWNHRl8xLmRlZmF1bHQpKTsKCUdlbmVyaWNHRiQxLmRlZmF1bHQgPSBHZW5lcmljR0Y7CgoJdmFyIFJlZWRTb2xvbW9uRGVjb2RlciQxID0ge307CgoJdmFyIFJlZWRTb2xvbW9uRXhjZXB0aW9uJDEgPSB7fTsKCgl2YXIgX19leHRlbmRzJDUgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVlZFNvbG9tb25FeGNlcHRpb24kMSwgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJdmFyIEV4Y2VwdGlvbl8xJDIgPSBFeGNlcHRpb24kMTsKCS8qKgoJICogQ3VzdG9tIEVycm9yIGNsYXNzIG9mIHR5cGUgRXhjZXB0aW9uLgoJICovCgl2YXIgUmVlZFNvbG9tb25FeGNlcHRpb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzJDUoUmVlZFNvbG9tb25FeGNlcHRpb24sIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gUmVlZFNvbG9tb25FeGNlcHRpb24oKSB7CgkgICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpczsKCSAgICB9CgkgICAgUmVlZFNvbG9tb25FeGNlcHRpb24ua2luZCA9ICdSZWVkU29sb21vbkV4Y2VwdGlvbic7CgkgICAgcmV0dXJuIFJlZWRTb2xvbW9uRXhjZXB0aW9uOwoJfShFeGNlcHRpb25fMSQyLmRlZmF1bHQpKTsKCVJlZWRTb2xvbW9uRXhjZXB0aW9uJDEuZGVmYXVsdCA9IFJlZWRTb2xvbW9uRXhjZXB0aW9uOwoKCXZhciBJbGxlZ2FsU3RhdGVFeGNlcHRpb24kMSA9IHt9OwoKCXZhciBfX2V4dGVuZHMkNCA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShJbGxlZ2FsU3RhdGVFeGNlcHRpb24kMSwgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJdmFyIEV4Y2VwdGlvbl8xJDEgPSBFeGNlcHRpb24kMTsKCS8qKgoJICogQ3VzdG9tIEVycm9yIGNsYXNzIG9mIHR5cGUgRXhjZXB0aW9uLgoJICovCgl2YXIgSWxsZWdhbFN0YXRlRXhjZXB0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyQ0KElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oKSB7CgkgICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpczsKCSAgICB9CgkgICAgSWxsZWdhbFN0YXRlRXhjZXB0aW9uLmtpbmQgPSAnSWxsZWdhbFN0YXRlRXhjZXB0aW9uJzsKCSAgICByZXR1cm4gSWxsZWdhbFN0YXRlRXhjZXB0aW9uOwoJfShFeGNlcHRpb25fMSQxLmRlZmF1bHQpKTsKCUlsbGVnYWxTdGF0ZUV4Y2VwdGlvbiQxLmRlZmF1bHQgPSBJbGxlZ2FsU3RhdGVFeGNlcHRpb247CgoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWVkU29sb21vbkRlY29kZXIkMSwgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5jb21tb24ucmVlZHNvbG9tb24geyovCgl2YXIgR2VuZXJpY0dGXzEkMSA9IEdlbmVyaWNHRiQxOwoJdmFyIEdlbmVyaWNHRlBvbHlfMSA9IEdlbmVyaWNHRlBvbHkkMTsKCXZhciBSZWVkU29sb21vbkV4Y2VwdGlvbl8xID0gUmVlZFNvbG9tb25FeGNlcHRpb24kMTsKCXZhciBJbGxlZ2FsU3RhdGVFeGNlcHRpb25fMSA9IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiQxOwoJLyoqCgkgKiA8cD5JbXBsZW1lbnRzIFJlZWQtU29sb21vbiBkZWNvZGluZywgYXMgdGhlIG5hbWUgaW1wbGllcy48L3A+CgkgKgoJICogPHA+VGhlIGFsZ29yaXRobSB3aWxsIG5vdCBiZSBleHBsYWluZWQgaGVyZSwgYnV0IHRoZSBmb2xsb3dpbmcgcmVmZXJlbmNlcyB3ZXJlIGhlbHBmdWwKCSAqIGluIGNyZWF0aW5nIHRoaXMgaW1wbGVtZW50YXRpb246PC9wPgoJICoKCSAqIDx1bD4KCSAqIDxsaT5CcnVjZSBNYWdncy4KCSAqIDxhIGhyZWY9Imh0dHA6Ly93d3cuY3MuY211LmVkdS9hZnMvY3MuY211LmVkdS9wcm9qZWN0L3BzY2ljby1ndXliL3JlYWx3b3JsZC93d3cvcnNfZGVjb2RlLnBzIj4KCSAqICJEZWNvZGluZyBSZWVkLVNvbG9tb24gQ29kZXMiPC9hPiAoc2VlIGRpc2N1c3Npb24gb2YgRm9ybmV5J3MgRm9ybXVsYSk8L2xpPgoJICogPGxpPkouSS4gSGFsbC4gPGEgaHJlZj0id3d3Lm10aC5tc3UuZWR1L35qaGFsbC9jbGFzc2VzL2NvZGVub3Rlcy9HUlMucGRmIj4KCSAqICJDaGFwdGVyIDUuIEdlbmVyYWxpemVkIFJlZWQtU29sb21vbiBDb2RlcyI8L2E+CgkgKiAoc2VlIGRpc2N1c3Npb24gb2YgRXVjbGlkZWFuIGFsZ29yaXRobSk8L2xpPgoJICogPC91bD4KCSAqCgkgKiA8cD5NdWNoIGNyZWRpdCBpcyBkdWUgdG8gV2lsbGlhbSBSdWNrbGlkZ2Ugc2luY2UgcG9ydGlvbnMgb2YgdGhpcyBjb2RlIGFyZSBhbiBpbmRpcmVjdAoJICogcG9ydCBvZiBoaXMgQysrIFJlZWQtU29sb21vbiBpbXBsZW1lbnRhdGlvbi48L3A+CgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqIEBhdXRob3IgV2lsbGlhbSBSdWNrbGlkZ2UKCSAqIEBhdXRob3Igc2FuZm9yZHNxdWlyZXMKCSAqLwoJdmFyIFJlZWRTb2xvbW9uRGVjb2RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBSZWVkU29sb21vbkRlY29kZXIoZmllbGQpIHsKCSAgICAgICAgdGhpcy5maWVsZCA9IGZpZWxkOwoJICAgIH0KCSAgICAvKioKCSAgICAgKiA8cD5EZWNvZGVzIGdpdmVuIHNldCBvZiByZWNlaXZlZCBjb2Rld29yZHMsIHdoaWNoIGluY2x1ZGUgYm90aCBkYXRhIGFuZCBlcnJvci1jb3JyZWN0aW9uCgkgICAgICogY29kZXdvcmRzLiBSZWFsbHksIHRoaXMgbWVhbnMgaXQgdXNlcyBSZWVkLVNvbG9tb24gdG8gZGV0ZWN0IGFuZCBjb3JyZWN0IGVycm9ycywgaW4tcGxhY2UsCgkgICAgICogaW4gdGhlIGlucHV0LjwvcD4KCSAgICAgKgoJICAgICAqIEBwYXJhbSByZWNlaXZlZCBkYXRhIGFuZCBlcnJvci1jb3JyZWN0aW9uIGNvZGV3b3JkcwoJICAgICAqIEBwYXJhbSB0d29TIG51bWJlciBvZiBlcnJvci1jb3JyZWN0aW9uIGNvZGV3b3JkcyBhdmFpbGFibGUKCSAgICAgKiBAdGhyb3dzIFJlZWRTb2xvbW9uRXhjZXB0aW9uIGlmIGRlY29kaW5nIGZhaWxzIGZvciBhbnkgcmVhc29uCgkgICAgICovCgkgICAgUmVlZFNvbG9tb25EZWNvZGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiAocmVjZWl2ZWQsIHR3b1MgLyppbnQqLykgewoJICAgICAgICB2YXIgZmllbGQgPSB0aGlzLmZpZWxkOwoJICAgICAgICB2YXIgcG9seSA9IG5ldyBHZW5lcmljR0ZQb2x5XzEuZGVmYXVsdChmaWVsZCwgcmVjZWl2ZWQpOwoJICAgICAgICB2YXIgc3luZHJvbWVDb2VmZmljaWVudHMgPSBuZXcgSW50MzJBcnJheSh0d29TKTsKCSAgICAgICAgdmFyIG5vRXJyb3IgPSB0cnVlOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR3b1M7IGkrKykgewoJICAgICAgICAgICAgdmFyIGV2YWxSZXN1bHQgPSBwb2x5LmV2YWx1YXRlQXQoZmllbGQuZXhwKGkgKyBmaWVsZC5nZXRHZW5lcmF0b3JCYXNlKCkpKTsKCSAgICAgICAgICAgIHN5bmRyb21lQ29lZmZpY2llbnRzW3N5bmRyb21lQ29lZmZpY2llbnRzLmxlbmd0aCAtIDEgLSBpXSA9IGV2YWxSZXN1bHQ7CgkgICAgICAgICAgICBpZiAoZXZhbFJlc3VsdCAhPT0gMCkgewoJICAgICAgICAgICAgICAgIG5vRXJyb3IgPSBmYWxzZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBpZiAobm9FcnJvcikgewoJICAgICAgICAgICAgcmV0dXJuOwoJICAgICAgICB9CgkgICAgICAgIHZhciBzeW5kcm9tZSA9IG5ldyBHZW5lcmljR0ZQb2x5XzEuZGVmYXVsdChmaWVsZCwgc3luZHJvbWVDb2VmZmljaWVudHMpOwoJICAgICAgICB2YXIgc2lnbWFPbWVnYSA9IHRoaXMucnVuRXVjbGlkZWFuQWxnb3JpdGhtKGZpZWxkLmJ1aWxkTW9ub21pYWwodHdvUywgMSksIHN5bmRyb21lLCB0d29TKTsKCSAgICAgICAgdmFyIHNpZ21hID0gc2lnbWFPbWVnYVswXTsKCSAgICAgICAgdmFyIG9tZWdhID0gc2lnbWFPbWVnYVsxXTsKCSAgICAgICAgdmFyIGVycm9yTG9jYXRpb25zID0gdGhpcy5maW5kRXJyb3JMb2NhdGlvbnMoc2lnbWEpOwoJICAgICAgICB2YXIgZXJyb3JNYWduaXR1ZGVzID0gdGhpcy5maW5kRXJyb3JNYWduaXR1ZGVzKG9tZWdhLCBlcnJvckxvY2F0aW9ucyk7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXJyb3JMb2NhdGlvbnMubGVuZ3RoOyBpKyspIHsKCSAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHJlY2VpdmVkLmxlbmd0aCAtIDEgLSBmaWVsZC5sb2coZXJyb3JMb2NhdGlvbnNbaV0pOwoJICAgICAgICAgICAgaWYgKHBvc2l0aW9uIDwgMCkgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBSZWVkU29sb21vbkV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0JhZCBlcnJvciBsb2NhdGlvbicpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmVjZWl2ZWRbcG9zaXRpb25dID0gR2VuZXJpY0dGXzEkMS5kZWZhdWx0LmFkZE9yU3VidHJhY3QocmVjZWl2ZWRbcG9zaXRpb25dLCBlcnJvck1hZ25pdHVkZXNbaV0pOwoJICAgICAgICB9CgkgICAgfTsKCSAgICBSZWVkU29sb21vbkRlY29kZXIucHJvdG90eXBlLnJ1bkV1Y2xpZGVhbkFsZ29yaXRobSA9IGZ1bmN0aW9uIChhLCBiLCBSIC8qaW50Ki8pIHsKCSAgICAgICAgLy8gQXNzdW1lIGEncyBkZWdyZWUgaXMgPj0gYidzCgkgICAgICAgIGlmIChhLmdldERlZ3JlZSgpIDwgYi5nZXREZWdyZWUoKSkgewoJICAgICAgICAgICAgdmFyIHRlbXAgPSBhOwoJICAgICAgICAgICAgYSA9IGI7CgkgICAgICAgICAgICBiID0gdGVtcDsKCSAgICAgICAgfQoJICAgICAgICB2YXIgZmllbGQgPSB0aGlzLmZpZWxkOwoJICAgICAgICB2YXIgckxhc3QgPSBhOwoJICAgICAgICB2YXIgciA9IGI7CgkgICAgICAgIHZhciB0TGFzdCA9IGZpZWxkLmdldFplcm8oKTsKCSAgICAgICAgdmFyIHQgPSBmaWVsZC5nZXRPbmUoKTsKCSAgICAgICAgLy8gUnVuIEV1Y2xpZGVhbiBhbGdvcml0aG0gdW50aWwgcidzIGRlZ3JlZSBpcyBsZXNzIHRoYW4gUi8yCgkgICAgICAgIHdoaWxlIChyLmdldERlZ3JlZSgpID49IChSIC8gMiB8IDApKSB7CgkgICAgICAgICAgICB2YXIgckxhc3RMYXN0ID0gckxhc3Q7CgkgICAgICAgICAgICB2YXIgdExhc3RMYXN0ID0gdExhc3Q7CgkgICAgICAgICAgICByTGFzdCA9IHI7CgkgICAgICAgICAgICB0TGFzdCA9IHQ7CgkgICAgICAgICAgICAvLyBEaXZpZGUgckxhc3RMYXN0IGJ5IHJMYXN0LCB3aXRoIHF1b3RpZW50IGluIHEgYW5kIHJlbWFpbmRlciBpbiByCgkgICAgICAgICAgICBpZiAockxhc3QuaXNaZXJvKCkpIHsKCSAgICAgICAgICAgICAgICAvLyBPb3BzLCBFdWNsaWRlYW4gYWxnb3JpdGhtIGFscmVhZHkgdGVybWluYXRlZD8KCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmVlZFNvbG9tb25FeGNlcHRpb25fMS5kZWZhdWx0KCdyX3tpLTF9IHdhcyB6ZXJvJyk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICByID0gckxhc3RMYXN0OwoJICAgICAgICAgICAgdmFyIHEgPSBmaWVsZC5nZXRaZXJvKCk7CgkgICAgICAgICAgICB2YXIgZGVub21pbmF0b3JMZWFkaW5nVGVybSA9IHJMYXN0LmdldENvZWZmaWNpZW50KHJMYXN0LmdldERlZ3JlZSgpKTsKCSAgICAgICAgICAgIHZhciBkbHRJbnZlcnNlID0gZmllbGQuaW52ZXJzZShkZW5vbWluYXRvckxlYWRpbmdUZXJtKTsKCSAgICAgICAgICAgIHdoaWxlIChyLmdldERlZ3JlZSgpID49IHJMYXN0LmdldERlZ3JlZSgpICYmICFyLmlzWmVybygpKSB7CgkgICAgICAgICAgICAgICAgdmFyIGRlZ3JlZURpZmYgPSByLmdldERlZ3JlZSgpIC0gckxhc3QuZ2V0RGVncmVlKCk7CgkgICAgICAgICAgICAgICAgdmFyIHNjYWxlID0gZmllbGQubXVsdGlwbHkoci5nZXRDb2VmZmljaWVudChyLmdldERlZ3JlZSgpKSwgZGx0SW52ZXJzZSk7CgkgICAgICAgICAgICAgICAgcSA9IHEuYWRkT3JTdWJ0cmFjdChmaWVsZC5idWlsZE1vbm9taWFsKGRlZ3JlZURpZmYsIHNjYWxlKSk7CgkgICAgICAgICAgICAgICAgciA9IHIuYWRkT3JTdWJ0cmFjdChyTGFzdC5tdWx0aXBseUJ5TW9ub21pYWwoZGVncmVlRGlmZiwgc2NhbGUpKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHQgPSBxLm11bHRpcGx5KHRMYXN0KS5hZGRPclN1YnRyYWN0KHRMYXN0TGFzdCk7CgkgICAgICAgICAgICBpZiAoci5nZXREZWdyZWUoKSA+PSByTGFzdC5nZXREZWdyZWUoKSkgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb25fMS5kZWZhdWx0KCdEaXZpc2lvbiBhbGdvcml0aG0gZmFpbGVkIHRvIHJlZHVjZSBwb2x5bm9taWFsPycpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHZhciBzaWdtYVRpbGRlQXRaZXJvID0gdC5nZXRDb2VmZmljaWVudCgwKTsKCSAgICAgICAgaWYgKHNpZ21hVGlsZGVBdFplcm8gPT09IDApIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBSZWVkU29sb21vbkV4Y2VwdGlvbl8xLmRlZmF1bHQoJ3NpZ21hVGlsZGUoMCkgd2FzIHplcm8nKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgaW52ZXJzZSA9IGZpZWxkLmludmVyc2Uoc2lnbWFUaWxkZUF0WmVybyk7CgkgICAgICAgIHZhciBzaWdtYSA9IHQubXVsdGlwbHlTY2FsYXIoaW52ZXJzZSk7CgkgICAgICAgIHZhciBvbWVnYSA9IHIubXVsdGlwbHlTY2FsYXIoaW52ZXJzZSk7CgkgICAgICAgIHJldHVybiBbc2lnbWEsIG9tZWdhXTsKCSAgICB9OwoJICAgIFJlZWRTb2xvbW9uRGVjb2Rlci5wcm90b3R5cGUuZmluZEVycm9yTG9jYXRpb25zID0gZnVuY3Rpb24gKGVycm9yTG9jYXRvcikgewoJICAgICAgICAvLyBUaGlzIGlzIGEgZGlyZWN0IGFwcGxpY2F0aW9uIG9mIENoaWVuJ3Mgc2VhcmNoCgkgICAgICAgIHZhciBudW1FcnJvcnMgPSBlcnJvckxvY2F0b3IuZ2V0RGVncmVlKCk7CgkgICAgICAgIGlmIChudW1FcnJvcnMgPT09IDEpIHsgLy8gc2hvcnRjdXQKCSAgICAgICAgICAgIHJldHVybiBJbnQzMkFycmF5LmZyb20oW2Vycm9yTG9jYXRvci5nZXRDb2VmZmljaWVudCgxKV0pOwoJICAgICAgICB9CgkgICAgICAgIHZhciByZXN1bHQgPSBuZXcgSW50MzJBcnJheShudW1FcnJvcnMpOwoJICAgICAgICB2YXIgZSA9IDA7CgkgICAgICAgIHZhciBmaWVsZCA9IHRoaXMuZmllbGQ7CgkgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgZmllbGQuZ2V0U2l6ZSgpICYmIGUgPCBudW1FcnJvcnM7IGkrKykgewoJICAgICAgICAgICAgaWYgKGVycm9yTG9jYXRvci5ldmFsdWF0ZUF0KGkpID09PSAwKSB7CgkgICAgICAgICAgICAgICAgcmVzdWx0W2VdID0gZmllbGQuaW52ZXJzZShpKTsKCSAgICAgICAgICAgICAgICBlKys7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGUgIT09IG51bUVycm9ycykgewoJICAgICAgICAgICAgdGhyb3cgbmV3IFJlZWRTb2xvbW9uRXhjZXB0aW9uXzEuZGVmYXVsdCgnRXJyb3IgbG9jYXRvciBkZWdyZWUgZG9lcyBub3QgbWF0Y2ggbnVtYmVyIG9mIHJvb3RzJyk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJlc3VsdDsKCSAgICB9OwoJICAgIFJlZWRTb2xvbW9uRGVjb2Rlci5wcm90b3R5cGUuZmluZEVycm9yTWFnbml0dWRlcyA9IGZ1bmN0aW9uIChlcnJvckV2YWx1YXRvciwgZXJyb3JMb2NhdGlvbnMpIHsKCSAgICAgICAgLy8gVGhpcyBpcyBkaXJlY3RseSBhcHBseWluZyBGb3JuZXkncyBGb3JtdWxhCgkgICAgICAgIHZhciBzID0gZXJyb3JMb2NhdGlvbnMubGVuZ3RoOwoJICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEludDMyQXJyYXkocyk7CgkgICAgICAgIHZhciBmaWVsZCA9IHRoaXMuZmllbGQ7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7CgkgICAgICAgICAgICB2YXIgeGlJbnZlcnNlID0gZmllbGQuaW52ZXJzZShlcnJvckxvY2F0aW9uc1tpXSk7CgkgICAgICAgICAgICB2YXIgZGVub21pbmF0b3IgPSAxOwoJICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzOyBqKyspIHsKCSAgICAgICAgICAgICAgICBpZiAoaSAhPT0gaikgewoJICAgICAgICAgICAgICAgICAgICAvLyBkZW5vbWluYXRvciA9IGZpZWxkLm11bHRpcGx5KGRlbm9taW5hdG9yLAoJICAgICAgICAgICAgICAgICAgICAvLyAgICBHZW5lcmljR0YuYWRkT3JTdWJ0cmFjdCgxLCBmaWVsZC5tdWx0aXBseShlcnJvckxvY2F0aW9uc1tqXSwgeGlJbnZlcnNlKSkpCgkgICAgICAgICAgICAgICAgICAgIC8vIEFib3ZlIHNob3VsZCB3b3JrIGJ1dCBmYWlscyBvbiBzb21lIEFwcGxlIGFuZCBMaW51eCBKREtzIGR1ZSB0byBhIEhvdHNwb3QgYnVnLgoJICAgICAgICAgICAgICAgICAgICAvLyBCZWxvdyBpcyBhIGZ1bm55LWxvb2tpbmcgd29ya2Fyb3VuZCBmcm9tIFN0ZXZlbiBQYXJrZXMKCSAgICAgICAgICAgICAgICAgICAgdmFyIHRlcm0gPSBmaWVsZC5tdWx0aXBseShlcnJvckxvY2F0aW9uc1tqXSwgeGlJbnZlcnNlKTsKCSAgICAgICAgICAgICAgICAgICAgdmFyIHRlcm1QbHVzMSA9ICh0ZXJtICYgMHgxKSA9PT0gMCA/IHRlcm0gfCAxIDogdGVybSAmIH4xOwoJICAgICAgICAgICAgICAgICAgICBkZW5vbWluYXRvciA9IGZpZWxkLm11bHRpcGx5KGRlbm9taW5hdG9yLCB0ZXJtUGx1czEpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHJlc3VsdFtpXSA9IGZpZWxkLm11bHRpcGx5KGVycm9yRXZhbHVhdG9yLmV2YWx1YXRlQXQoeGlJbnZlcnNlKSwgZmllbGQuaW52ZXJzZShkZW5vbWluYXRvcikpOwoJICAgICAgICAgICAgaWYgKGZpZWxkLmdldEdlbmVyYXRvckJhc2UoKSAhPT0gMCkgewoJICAgICAgICAgICAgICAgIHJlc3VsdFtpXSA9IGZpZWxkLm11bHRpcGx5KHJlc3VsdFtpXSwgeGlJbnZlcnNlKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gcmVzdWx0OwoJICAgIH07CgkgICAgcmV0dXJuIFJlZWRTb2xvbW9uRGVjb2RlcjsKCX0oKSk7CglSZWVkU29sb21vbkRlY29kZXIkMS5kZWZhdWx0ID0gUmVlZFNvbG9tb25EZWNvZGVyOwoKCXZhciBCaXRNYXRyaXhQYXJzZXIkMSA9IHt9OwoKCXZhciBWZXJzaW9uJDEgPSB7fTsKCgl2YXIgRm9ybWF0SW5mb3JtYXRpb24kMSA9IHt9OwoKCXZhciBFcnJvckNvcnJlY3Rpb25MZXZlbCA9IHt9OwoKCXZhciBBcmd1bWVudEV4Y2VwdGlvbiQxID0ge307CgoJdmFyIF9fZXh0ZW5kcyQzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KEFyZ3VtZW50RXhjZXB0aW9uJDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCXZhciBFeGNlcHRpb25fMSA9IEV4Y2VwdGlvbiQxOwoJLyoqCgkgKiBDdXN0b20gRXJyb3IgY2xhc3Mgb2YgdHlwZSBFeGNlcHRpb24uCgkgKi8KCXZhciBBcmd1bWVudEV4Y2VwdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMkMyhBcmd1bWVudEV4Y2VwdGlvbiwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBBcmd1bWVudEV4Y2VwdGlvbigpIHsKCSAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzOwoJICAgIH0KCSAgICBBcmd1bWVudEV4Y2VwdGlvbi5raW5kID0gJ0FyZ3VtZW50RXhjZXB0aW9uJzsKCSAgICByZXR1cm4gQXJndW1lbnRFeGNlcHRpb247Cgl9KEV4Y2VwdGlvbl8xLmRlZmF1bHQpKTsKCUFyZ3VtZW50RXhjZXB0aW9uJDEuZGVmYXVsdCA9IEFyZ3VtZW50RXhjZXB0aW9uOwoKCShmdW5jdGlvbiAoZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CglleHBvcnRzLkVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzID0gdm9pZCAwOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5xcmNvZGUuZGVjb2RlciB7Ki8KCXZhciBBcmd1bWVudEV4Y2VwdGlvbl8xID0gQXJndW1lbnRFeGNlcHRpb24kMTsKCXZhciBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSA9IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiQxOwoJdmFyIEVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzOwoJKGZ1bmN0aW9uIChFcnJvckNvcnJlY3Rpb25MZXZlbFZhbHVlcykgewoJICAgIEVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzW0Vycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzWyJMIl0gPSAwXSA9ICJMIjsKCSAgICBFcnJvckNvcnJlY3Rpb25MZXZlbFZhbHVlc1tFcnJvckNvcnJlY3Rpb25MZXZlbFZhbHVlc1siTSJdID0gMV0gPSAiTSI7CgkgICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWxWYWx1ZXNbRXJyb3JDb3JyZWN0aW9uTGV2ZWxWYWx1ZXNbIlEiXSA9IDJdID0gIlEiOwoJICAgIEVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzW0Vycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzWyJIIl0gPSAzXSA9ICJIIjsKCX0pKEVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzID0gZXhwb3J0cy5FcnJvckNvcnJlY3Rpb25MZXZlbFZhbHVlcyB8fCAoZXhwb3J0cy5FcnJvckNvcnJlY3Rpb25MZXZlbFZhbHVlcyA9IHt9KSk7CgkvKioKCSAqIDxwPlNlZSBJU08gMTgwMDQ6MjAwNiwgNi41LjEuIFRoaXMgZW51bSBlbmNhcHN1bGF0ZXMgdGhlIGZvdXIgZXJyb3IgY29ycmVjdGlvbiBsZXZlbHMKCSAqIGRlZmluZWQgYnkgdGhlIFFSIGNvZGUgc3RhbmRhcmQuPC9wPgoJICoKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKi8KCXZhciBFcnJvckNvcnJlY3Rpb25MZXZlbCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBFcnJvckNvcnJlY3Rpb25MZXZlbCh2YWx1ZSwgc3RyaW5nVmFsdWUsIGJpdHMgLyppbnQqLykgewoJICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CgkgICAgICAgIHRoaXMuc3RyaW5nVmFsdWUgPSBzdHJpbmdWYWx1ZTsKCSAgICAgICAgdGhpcy5iaXRzID0gYml0czsKCSAgICAgICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWwuRk9SX0JJVFMuc2V0KGJpdHMsIHRoaXMpOwoJICAgICAgICBFcnJvckNvcnJlY3Rpb25MZXZlbC5GT1JfVkFMVUUuc2V0KHZhbHVlLCB0aGlzKTsKCSAgICB9CgkgICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWwucHJvdG90eXBlLmdldFZhbHVlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTsKCSAgICB9OwoJICAgIEVycm9yQ29ycmVjdGlvbkxldmVsLnByb3RvdHlwZS5nZXRCaXRzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5iaXRzOwoJICAgIH07CgkgICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWwuZnJvbVN0cmluZyA9IGZ1bmN0aW9uIChzKSB7CgkgICAgICAgIHN3aXRjaCAocykgewoJICAgICAgICAgICAgY2FzZSAnTCc6IHJldHVybiBFcnJvckNvcnJlY3Rpb25MZXZlbC5MOwoJICAgICAgICAgICAgY2FzZSAnTSc6IHJldHVybiBFcnJvckNvcnJlY3Rpb25MZXZlbC5NOwoJICAgICAgICAgICAgY2FzZSAnUSc6IHJldHVybiBFcnJvckNvcnJlY3Rpb25MZXZlbC5ROwoJICAgICAgICAgICAgY2FzZSAnSCc6IHJldHVybiBFcnJvckNvcnJlY3Rpb25MZXZlbC5IOwoJICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdChzICsgJ25vdCBhdmFpbGFibGUnKTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWwucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmdWYWx1ZTsKCSAgICB9OwoJICAgIEVycm9yQ29ycmVjdGlvbkxldmVsLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAobykgewoJICAgICAgICBpZiAoIShvIGluc3RhbmNlb2YgRXJyb3JDb3JyZWN0aW9uTGV2ZWwpKSB7CgkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIG90aGVyID0gbzsKCSAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPT09IG90aGVyLnZhbHVlOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHBhcmFtIGJpdHMgaW50IGNvbnRhaW5pbmcgdGhlIHR3byBiaXRzIGVuY29kaW5nIGEgUVIgQ29kZSdzIGVycm9yIGNvcnJlY3Rpb24gbGV2ZWwKCSAgICAgKiBAcmV0dXJuIEVycm9yQ29ycmVjdGlvbkxldmVsIHJlcHJlc2VudGluZyB0aGUgZW5jb2RlZCBlcnJvciBjb3JyZWN0aW9uIGxldmVsCgkgICAgICovCgkgICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWwuZm9yQml0cyA9IGZ1bmN0aW9uIChiaXRzIC8qaW50Ki8pIHsKCSAgICAgICAgaWYgKGJpdHMgPCAwIHx8IGJpdHMgPj0gRXJyb3JDb3JyZWN0aW9uTGV2ZWwuRk9SX0JJVFMuc2l6ZSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gRXJyb3JDb3JyZWN0aW9uTGV2ZWwuRk9SX0JJVFMuZ2V0KGJpdHMpOwoJICAgIH07CgkgICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWwuRk9SX0JJVFMgPSBuZXcgTWFwKCk7CgkgICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWwuRk9SX1ZBTFVFID0gbmV3IE1hcCgpOwoJICAgIC8qKiBMID0gfjclIGNvcnJlY3Rpb24gKi8KCSAgICBFcnJvckNvcnJlY3Rpb25MZXZlbC5MID0gbmV3IEVycm9yQ29ycmVjdGlvbkxldmVsKEVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzLkwsICdMJywgMHgwMSk7CgkgICAgLyoqIE0gPSB+MTUlIGNvcnJlY3Rpb24gKi8KCSAgICBFcnJvckNvcnJlY3Rpb25MZXZlbC5NID0gbmV3IEVycm9yQ29ycmVjdGlvbkxldmVsKEVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzLk0sICdNJywgMHgwMCk7CgkgICAgLyoqIFEgPSB+MjUlIGNvcnJlY3Rpb24gKi8KCSAgICBFcnJvckNvcnJlY3Rpb25MZXZlbC5RID0gbmV3IEVycm9yQ29ycmVjdGlvbkxldmVsKEVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzLlEsICdRJywgMHgwMyk7CgkgICAgLyoqIEggPSB+MzAlIGNvcnJlY3Rpb24gKi8KCSAgICBFcnJvckNvcnJlY3Rpb25MZXZlbC5IID0gbmV3IEVycm9yQ29ycmVjdGlvbkxldmVsKEVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzLkgsICdIJywgMHgwMik7CgkgICAgcmV0dXJuIEVycm9yQ29ycmVjdGlvbkxldmVsOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEVycm9yQ29ycmVjdGlvbkxldmVsOwoKCX0oRXJyb3JDb3JyZWN0aW9uTGV2ZWwpKTsKCgkvKgoJICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJdmFyIF9fdmFsdWVzJDYgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHsKCSAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDsKCSAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTsKCSAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09ICJudW1iZXIiKSByZXR1cm4gewoJICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwOwoJICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9OwoJICAgICAgICB9CgkgICAgfTsKCSAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyAiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4iIDogIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTsKCX07CglPYmplY3QuZGVmaW5lUHJvcGVydHkoRm9ybWF0SW5mb3JtYXRpb24kMSwgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5xcmNvZGUuZGVjb2RlciB7Ki8KCXZhciBFcnJvckNvcnJlY3Rpb25MZXZlbF8xID0gRXJyb3JDb3JyZWN0aW9uTGV2ZWw7Cgl2YXIgSW50ZWdlcl8xID0gSW50ZWdlciQxOwoJLyoqCgkgKiA8cD5FbmNhcHN1bGF0ZXMgYSBRUiBDb2RlJ3MgZm9ybWF0IGluZm9ybWF0aW9uLCBpbmNsdWRpbmcgdGhlIGRhdGEgbWFzayB1c2VkIGFuZAoJICogZXJyb3IgY29ycmVjdGlvbiBsZXZlbC48L3A+CgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqIEBzZWUgRGF0YU1hc2sKCSAqIEBzZWUgRXJyb3JDb3JyZWN0aW9uTGV2ZWwKCSAqLwoJdmFyIEZvcm1hdEluZm9ybWF0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIEZvcm1hdEluZm9ybWF0aW9uKGZvcm1hdEluZm8gLyppbnQqLykgewoJICAgICAgICAvLyBCaXRzIDMsNAoJICAgICAgICB0aGlzLmVycm9yQ29ycmVjdGlvbkxldmVsID0gRXJyb3JDb3JyZWN0aW9uTGV2ZWxfMS5kZWZhdWx0LmZvckJpdHMoKGZvcm1hdEluZm8gPj4gMykgJiAweDAzKTsKCSAgICAgICAgLy8gQm90dG9tIDMgYml0cwoJICAgICAgICB0aGlzLmRhdGFNYXNrID0gLyooYnl0ZSkgKi8gKGZvcm1hdEluZm8gJiAweDA3KTsKCSAgICB9CgkgICAgRm9ybWF0SW5mb3JtYXRpb24ubnVtQml0c0RpZmZlcmluZyA9IGZ1bmN0aW9uIChhIC8qaW50Ki8sIGIgLyppbnQqLykgewoJICAgICAgICByZXR1cm4gSW50ZWdlcl8xLmRlZmF1bHQuYml0Q291bnQoYSBeIGIpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHBhcmFtIG1hc2tlZEZvcm1hdEluZm8xIGZvcm1hdCBpbmZvIGluZGljYXRvciwgd2l0aCBtYXNrIHN0aWxsIGFwcGxpZWQKCSAgICAgKiBAcGFyYW0gbWFza2VkRm9ybWF0SW5mbzIgc2Vjb25kIGNvcHkgb2Ygc2FtZSBpbmZvOyBib3RoIGFyZSBjaGVja2VkIGF0IHRoZSBzYW1lIHRpbWUKCSAgICAgKiAgdG8gZXN0YWJsaXNoIGJlc3QgbWF0Y2gKCSAgICAgKiBAcmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmb3JtYXQgaXQgc3BlY2lmaWVzLCBvciB7QGNvZGUgbnVsbH0KCSAgICAgKiAgaWYgZG9lc24ndCBzZWVtIHRvIG1hdGNoIGFueSBrbm93biBwYXR0ZXJuCgkgICAgICovCgkgICAgRm9ybWF0SW5mb3JtYXRpb24uZGVjb2RlRm9ybWF0SW5mb3JtYXRpb24gPSBmdW5jdGlvbiAobWFza2VkRm9ybWF0SW5mbzEgLyppbnQqLywgbWFza2VkRm9ybWF0SW5mbzIgLyppbnQqLykgewoJICAgICAgICB2YXIgZm9ybWF0SW5mbyA9IEZvcm1hdEluZm9ybWF0aW9uLmRvRGVjb2RlRm9ybWF0SW5mb3JtYXRpb24obWFza2VkRm9ybWF0SW5mbzEsIG1hc2tlZEZvcm1hdEluZm8yKTsKCSAgICAgICAgaWYgKGZvcm1hdEluZm8gIT09IG51bGwpIHsKCSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOwoJICAgICAgICB9CgkgICAgICAgIC8vIFNob3VsZCByZXR1cm4gbnVsbCwgYnV0LCBzb21lIFFSIGNvZGVzIGFwcGFyZW50bHkKCSAgICAgICAgLy8gZG8gbm90IG1hc2sgdGhpcyBpbmZvLiBUcnkgYWdhaW4gYnkgYWN0dWFsbHkgbWFza2luZyB0aGUgcGF0dGVybgoJICAgICAgICAvLyBmaXJzdAoJICAgICAgICByZXR1cm4gRm9ybWF0SW5mb3JtYXRpb24uZG9EZWNvZGVGb3JtYXRJbmZvcm1hdGlvbihtYXNrZWRGb3JtYXRJbmZvMSBeIEZvcm1hdEluZm9ybWF0aW9uLkZPUk1BVF9JTkZPX01BU0tfUVIsIG1hc2tlZEZvcm1hdEluZm8yIF4gRm9ybWF0SW5mb3JtYXRpb24uRk9STUFUX0lORk9fTUFTS19RUik7CgkgICAgfTsKCSAgICBGb3JtYXRJbmZvcm1hdGlvbi5kb0RlY29kZUZvcm1hdEluZm9ybWF0aW9uID0gZnVuY3Rpb24gKG1hc2tlZEZvcm1hdEluZm8xIC8qaW50Ki8sIG1hc2tlZEZvcm1hdEluZm8yIC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIGVfMSwgX2E7CgkgICAgICAgIC8vIEZpbmQgdGhlIGludCBpbiBGT1JNQVRfSU5GT19ERUNPREVfTE9PS1VQIHdpdGggZmV3ZXN0IGJpdHMgZGlmZmVyaW5nCgkgICAgICAgIHZhciBiZXN0RGlmZmVyZW5jZSA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSOwoJICAgICAgICB2YXIgYmVzdEZvcm1hdEluZm8gPSAwOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyQ2KEZvcm1hdEluZm9ybWF0aW9uLkZPUk1BVF9JTkZPX0RFQ09ERV9MT09LVVApLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgdmFyIGRlY29kZUluZm8gPSBfYy52YWx1ZTsKCSAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0SW5mbyA9IGRlY29kZUluZm9bMF07CgkgICAgICAgICAgICAgICAgaWYgKHRhcmdldEluZm8gPT09IG1hc2tlZEZvcm1hdEluZm8xIHx8IHRhcmdldEluZm8gPT09IG1hc2tlZEZvcm1hdEluZm8yKSB7CgkgICAgICAgICAgICAgICAgICAgIC8vIEZvdW5kIGFuIGV4YWN0IG1hdGNoCgkgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRm9ybWF0SW5mb3JtYXRpb24oZGVjb2RlSW5mb1sxXSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIHZhciBiaXRzRGlmZmVyZW5jZSA9IEZvcm1hdEluZm9ybWF0aW9uLm51bUJpdHNEaWZmZXJpbmcobWFza2VkRm9ybWF0SW5mbzEsIHRhcmdldEluZm8pOwoJICAgICAgICAgICAgICAgIGlmIChiaXRzRGlmZmVyZW5jZSA8IGJlc3REaWZmZXJlbmNlKSB7CgkgICAgICAgICAgICAgICAgICAgIGJlc3RGb3JtYXRJbmZvID0gZGVjb2RlSW5mb1sxXTsKCSAgICAgICAgICAgICAgICAgICAgYmVzdERpZmZlcmVuY2UgPSBiaXRzRGlmZmVyZW5jZTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgaWYgKG1hc2tlZEZvcm1hdEluZm8xICE9PSBtYXNrZWRGb3JtYXRJbmZvMikgewoJICAgICAgICAgICAgICAgICAgICAvLyBhbHNvIHRyeSB0aGUgb3RoZXIgb3B0aW9uCgkgICAgICAgICAgICAgICAgICAgIGJpdHNEaWZmZXJlbmNlID0gRm9ybWF0SW5mb3JtYXRpb24ubnVtQml0c0RpZmZlcmluZyhtYXNrZWRGb3JtYXRJbmZvMiwgdGFyZ2V0SW5mbyk7CgkgICAgICAgICAgICAgICAgICAgIGlmIChiaXRzRGlmZmVyZW5jZSA8IGJlc3REaWZmZXJlbmNlKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBiZXN0Rm9ybWF0SW5mbyA9IGRlY29kZUluZm9bMV07CgkgICAgICAgICAgICAgICAgICAgICAgICBiZXN0RGlmZmVyZW5jZSA9IGJpdHNEaWZmZXJlbmNlOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9CgkgICAgICAgIH0KCSAgICAgICAgLy8gSGFtbWluZyBkaXN0YW5jZSBvZiB0aGUgMzIgbWFza2VkIGNvZGVzIGlzIDcsIGJ5IGNvbnN0cnVjdGlvbiwgc28gPD0gMyBiaXRzCgkgICAgICAgIC8vIGRpZmZlcmluZyBtZWFucyB3ZSBmb3VuZCBhIG1hdGNoCgkgICAgICAgIGlmIChiZXN0RGlmZmVyZW5jZSA8PSAzKSB7CgkgICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1hdEluZm9ybWF0aW9uKGJlc3RGb3JtYXRJbmZvKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbnVsbDsKCSAgICB9OwoJICAgIEZvcm1hdEluZm9ybWF0aW9uLnByb3RvdHlwZS5nZXRFcnJvckNvcnJlY3Rpb25MZXZlbCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JDb3JyZWN0aW9uTGV2ZWw7CgkgICAgfTsKCSAgICBGb3JtYXRJbmZvcm1hdGlvbi5wcm90b3R5cGUuZ2V0RGF0YU1hc2sgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmRhdGFNYXNrOwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIEZvcm1hdEluZm9ybWF0aW9uLnByb3RvdHlwZS5oYXNoQ29kZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuICh0aGlzLmVycm9yQ29ycmVjdGlvbkxldmVsLmdldEJpdHMoKSA8PCAzKSB8IHRoaXMuZGF0YU1hc2s7CgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgRm9ybWF0SW5mb3JtYXRpb24ucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIChvKSB7CgkgICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBGb3JtYXRJbmZvcm1hdGlvbikpIHsKCSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgb3RoZXIgPSBvOwoJICAgICAgICByZXR1cm4gdGhpcy5lcnJvckNvcnJlY3Rpb25MZXZlbCA9PT0gb3RoZXIuZXJyb3JDb3JyZWN0aW9uTGV2ZWwgJiYKCSAgICAgICAgICAgIHRoaXMuZGF0YU1hc2sgPT09IG90aGVyLmRhdGFNYXNrOwoJICAgIH07CgkgICAgRm9ybWF0SW5mb3JtYXRpb24uRk9STUFUX0lORk9fTUFTS19RUiA9IDB4NTQxMjsKCSAgICAvKioKCSAgICAgKiBTZWUgSVNPIDE4MDA0OjIwMDYsIEFubmV4IEMsIFRhYmxlIEMuMQoJICAgICAqLwoJICAgIEZvcm1hdEluZm9ybWF0aW9uLkZPUk1BVF9JTkZPX0RFQ09ERV9MT09LVVAgPSBbCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg1NDEyLCAweDAwXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg1MTI1LCAweDAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg1RTdDLCAweDAyXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg1QjRCLCAweDAzXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg0NUY5LCAweDA0XSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg0MENFLCAweDA1XSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg0Rjk3LCAweDA2XSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg0QUEwLCAweDA3XSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg3N0M0LCAweDA4XSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg3MkYzLCAweDA5XSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg3REFBLCAweDBBXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg3ODlELCAweDBCXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg2NjJGLCAweDBDXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg2MzE4LCAweDBEXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg2QzQxLCAweDBFXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg2OTc2LCAweDBGXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgxNjg5LCAweDEwXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgxM0JFLCAweDExXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgxQ0U3LCAweDEyXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgxOUQwLCAweDEzXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgwNzYyLCAweDE0XSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgwMjU1LCAweDE1XSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgwRDBDLCAweDE2XSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgwODNCLCAweDE3XSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgzNTVGLCAweDE4XSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgzMDY4LCAweDE5XSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgzRjMxLCAweDFBXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgzQTA2LCAweDFCXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgyNEI0LCAweDFDXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgyMTgzLCAweDFEXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgyRURBLCAweDFFXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgyQkVELCAweDFGXSksCgkgICAgXTsKCSAgICByZXR1cm4gRm9ybWF0SW5mb3JtYXRpb247Cgl9KCkpOwoJRm9ybWF0SW5mb3JtYXRpb24kMS5kZWZhdWx0ID0gRm9ybWF0SW5mb3JtYXRpb247CgoJdmFyIEVDQmxvY2tzJDEgPSB7fTsKCgl2YXIgX192YWx1ZXMkNSA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShFQ0Jsb2NrcyQxLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKioKCSAqIDxwPkVuY2Fwc3VsYXRlcyBhIHNldCBvZiBlcnJvci1jb3JyZWN0aW9uIGJsb2NrcyBpbiBvbmUgc3ltYm9sIHZlcnNpb24uIE1vc3QgdmVyc2lvbnMgd2lsbAoJICogdXNlIGJsb2NrcyBvZiBkaWZmZXJpbmcgc2l6ZXMgd2l0aGluIG9uZSB2ZXJzaW9uLCBzbywgdGhpcyBlbmNhcHN1bGF0ZXMgdGhlIHBhcmFtZXRlcnMgZm9yCgkgKiBlYWNoIHNldCBvZiBibG9ja3MuIEl0IGFsc28gaG9sZHMgdGhlIG51bWJlciBvZiBlcnJvci1jb3JyZWN0aW9uIGNvZGV3b3JkcyBwZXIgYmxvY2sgc2luY2UgaXQKCSAqIHdpbGwgYmUgdGhlIHNhbWUgYWNyb3NzIGFsbCBibG9ja3Mgd2l0aGluIG9uZSB2ZXJzaW9uLjwvcD4KCSAqLwoJdmFyIEVDQmxvY2tzID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIEVDQmxvY2tzKGVjQ29kZXdvcmRzUGVyQmxvY2sgLyppbnQqLykgewoJICAgICAgICB2YXIgZWNCbG9ja3MgPSBbXTsKCSAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHsKCSAgICAgICAgICAgIGVjQmxvY2tzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldOwoJICAgICAgICB9CgkgICAgICAgIHRoaXMuZWNDb2Rld29yZHNQZXJCbG9jayA9IGVjQ29kZXdvcmRzUGVyQmxvY2s7CgkgICAgICAgIHRoaXMuZWNCbG9ja3MgPSBlY0Jsb2NrczsKCSAgICB9CgkgICAgRUNCbG9ja3MucHJvdG90eXBlLmdldEVDQ29kZXdvcmRzUGVyQmxvY2sgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmVjQ29kZXdvcmRzUGVyQmxvY2s7CgkgICAgfTsKCSAgICBFQ0Jsb2Nrcy5wcm90b3R5cGUuZ2V0TnVtQmxvY2tzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgZV8xLCBfYTsKCSAgICAgICAgdmFyIHRvdGFsID0gMDsKCSAgICAgICAgdmFyIGVjQmxvY2tzID0gdGhpcy5lY0Jsb2NrczsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIGVjQmxvY2tzXzEgPSBfX3ZhbHVlcyQ1KGVjQmxvY2tzKSwgZWNCbG9ja3NfMV8xID0gZWNCbG9ja3NfMS5uZXh0KCk7ICFlY0Jsb2Nrc18xXzEuZG9uZTsgZWNCbG9ja3NfMV8xID0gZWNCbG9ja3NfMS5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgZWNCbG9jayA9IGVjQmxvY2tzXzFfMS52YWx1ZTsKCSAgICAgICAgICAgICAgICB0b3RhbCArPSBlY0Jsb2NrLmdldENvdW50KCk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChlY0Jsb2Nrc18xXzEgJiYgIWVjQmxvY2tzXzFfMS5kb25lICYmIChfYSA9IGVjQmxvY2tzXzEucmV0dXJuKSkgX2EuY2FsbChlY0Jsb2Nrc18xKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdG90YWw7CgkgICAgfTsKCSAgICBFQ0Jsb2Nrcy5wcm90b3R5cGUuZ2V0VG90YWxFQ0NvZGV3b3JkcyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZWNDb2Rld29yZHNQZXJCbG9jayAqIHRoaXMuZ2V0TnVtQmxvY2tzKCk7CgkgICAgfTsKCSAgICBFQ0Jsb2Nrcy5wcm90b3R5cGUuZ2V0RUNCbG9ja3MgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmVjQmxvY2tzOwoJICAgIH07CgkgICAgcmV0dXJuIEVDQmxvY2tzOwoJfSgpKTsKCUVDQmxvY2tzJDEuZGVmYXVsdCA9IEVDQmxvY2tzOwoKCXZhciBFQ0IkMSA9IHt9OwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShFQ0IkMSwgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLyoqCgkgKiA8cD5FbmNhcHN1bGF0ZXMgdGhlIHBhcmFtZXRlcnMgZm9yIG9uZSBlcnJvci1jb3JyZWN0aW9uIGJsb2NrIGluIG9uZSBzeW1ib2wgdmVyc2lvbi4KCSAqIFRoaXMgaW5jbHVkZXMgdGhlIG51bWJlciBvZiBkYXRhIGNvZGV3b3JkcywgYW5kIHRoZSBudW1iZXIgb2YgdGltZXMgYSBibG9jayB3aXRoIHRoZXNlCgkgKiBwYXJhbWV0ZXJzIGlzIHVzZWQgY29uc2VjdXRpdmVseSBpbiB0aGUgUVIgY29kZSB2ZXJzaW9uJ3MgZm9ybWF0LjwvcD4KCSAqLwoJdmFyIEVDQiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBFQ0IoY291bnQgLyppbnQqLywgZGF0YUNvZGV3b3JkcyAvKmludCovKSB7CgkgICAgICAgIHRoaXMuY291bnQgPSBjb3VudDsKCSAgICAgICAgdGhpcy5kYXRhQ29kZXdvcmRzID0gZGF0YUNvZGV3b3JkczsKCSAgICB9CgkgICAgRUNCLnByb3RvdHlwZS5nZXRDb3VudCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuY291bnQ7CgkgICAgfTsKCSAgICBFQ0IucHJvdG90eXBlLmdldERhdGFDb2Rld29yZHMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmRhdGFDb2Rld29yZHM7CgkgICAgfTsKCSAgICByZXR1cm4gRUNCOwoJfSgpKTsKCUVDQiQxLmRlZmF1bHQgPSBFQ0I7CgoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX3ZhbHVlcyQ0ID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7CgkgICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7CgkgICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7CgkgICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSAibnVtYmVyIikgcmV0dXJuIHsKCSAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDsKCSAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gIk9iamVjdCBpcyBub3QgaXRlcmFibGUuIiA6ICJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7Cgl9OwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KFZlcnNpb24kMSwgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5xcmNvZGUuZGVjb2RlciB7Ki8KCXZhciBCaXRNYXRyaXhfMSQzID0gQml0TWF0cml4JDE7Cgl2YXIgRm9ybWF0SW5mb3JtYXRpb25fMSQxID0gRm9ybWF0SW5mb3JtYXRpb24kMTsKCXZhciBFQ0Jsb2Nrc18xID0gRUNCbG9ja3MkMTsKCXZhciBFQ0JfMSA9IEVDQiQxOwoJdmFyIEZvcm1hdEV4Y2VwdGlvbl8xJDIgPSBGb3JtYXRFeGNlcHRpb24kMTsKCXZhciBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSQyID0gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uJDE7CgkvKioKCSAqIFNlZSBJU08gMTgwMDQ6MjAwNiBBbm5leCBECgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIFZlcnNpb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gVmVyc2lvbih2ZXJzaW9uTnVtYmVyIC8qaW50Ki8sIGFsaWdubWVudFBhdHRlcm5DZW50ZXJzKSB7CgkgICAgICAgIHZhciBlXzEsIF9hOwoJICAgICAgICB2YXIgZWNCbG9ja3MgPSBbXTsKCSAgICAgICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHsKCSAgICAgICAgICAgIGVjQmxvY2tzW19pIC0gMl0gPSBhcmd1bWVudHNbX2ldOwoJICAgICAgICB9CgkgICAgICAgIHRoaXMudmVyc2lvbk51bWJlciA9IHZlcnNpb25OdW1iZXI7CgkgICAgICAgIHRoaXMuYWxpZ25tZW50UGF0dGVybkNlbnRlcnMgPSBhbGlnbm1lbnRQYXR0ZXJuQ2VudGVyczsKCSAgICAgICAgdGhpcy5lY0Jsb2NrcyA9IGVjQmxvY2tzOwoJICAgICAgICB2YXIgdG90YWwgPSAwOwoJICAgICAgICB2YXIgZWNDb2Rld29yZHMgPSBlY0Jsb2Nrc1swXS5nZXRFQ0NvZGV3b3Jkc1BlckJsb2NrKCk7CgkgICAgICAgIHZhciBlY2JBcnJheSA9IGVjQmxvY2tzWzBdLmdldEVDQmxvY2tzKCk7CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICBmb3IgKHZhciBlY2JBcnJheV8xID0gX192YWx1ZXMkNChlY2JBcnJheSksIGVjYkFycmF5XzFfMSA9IGVjYkFycmF5XzEubmV4dCgpOyAhZWNiQXJyYXlfMV8xLmRvbmU7IGVjYkFycmF5XzFfMSA9IGVjYkFycmF5XzEubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgdmFyIGVjQmxvY2sgPSBlY2JBcnJheV8xXzEudmFsdWU7CgkgICAgICAgICAgICAgICAgdG90YWwgKz0gZWNCbG9jay5nZXRDb3VudCgpICogKGVjQmxvY2suZ2V0RGF0YUNvZGV3b3JkcygpICsgZWNDb2Rld29yZHMpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAoZWNiQXJyYXlfMV8xICYmICFlY2JBcnJheV8xXzEuZG9uZSAmJiAoX2EgPSBlY2JBcnJheV8xLnJldHVybikpIF9hLmNhbGwoZWNiQXJyYXlfMSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9CgkgICAgICAgIH0KCSAgICAgICAgdGhpcy50b3RhbENvZGV3b3JkcyA9IHRvdGFsOwoJICAgIH0KCSAgICBWZXJzaW9uLnByb3RvdHlwZS5nZXRWZXJzaW9uTnVtYmVyID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy52ZXJzaW9uTnVtYmVyOwoJICAgIH07CgkgICAgVmVyc2lvbi5wcm90b3R5cGUuZ2V0QWxpZ25tZW50UGF0dGVybkNlbnRlcnMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmFsaWdubWVudFBhdHRlcm5DZW50ZXJzOwoJICAgIH07CgkgICAgVmVyc2lvbi5wcm90b3R5cGUuZ2V0VG90YWxDb2Rld29yZHMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnRvdGFsQ29kZXdvcmRzOwoJICAgIH07CgkgICAgVmVyc2lvbi5wcm90b3R5cGUuZ2V0RGltZW5zaW9uRm9yVmVyc2lvbiA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIDE3ICsgNCAqIHRoaXMudmVyc2lvbk51bWJlcjsKCSAgICB9OwoJICAgIFZlcnNpb24ucHJvdG90eXBlLmdldEVDQmxvY2tzRm9yTGV2ZWwgPSBmdW5jdGlvbiAoZWNMZXZlbCkgewoJICAgICAgICByZXR1cm4gdGhpcy5lY0Jsb2Nrc1tlY0xldmVsLmdldFZhbHVlKCldOwoJICAgICAgICAvLyBUWVBFU0NSSVBUUE9SVDogb3JpZ2luYWwgd2FzIHVzaW5nIG9yZGluYWwsIGFuZCB1c2luZyB0aGUgb3JkZXIgb2YgbGV2ZWxzIGFzIGRlZmluZWQgaW4gRXJyb3JDb3JyZWN0aW9uTGV2ZWwgZW51bSAoTE1RSCkKCSAgICAgICAgLy8gSSB3aWxsIHVzZSB0aGUgZGlyZWN0IHZhbHVlIGZyb20gRXJyb3JDb3JyZWN0aW9uTGV2ZWxWYWx1ZXMgZW51bSB3aGljaCBpbiB0eXBlc2NyaXB0IGdvZXMgdG8gYSBudW1iZXIKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPkRlZHVjZXMgdmVyc2lvbiBpbmZvcm1hdGlvbiBwdXJlbHkgZnJvbSBRUiBDb2RlIGRpbWVuc2lvbnMuPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIGRpbWVuc2lvbiBkaW1lbnNpb24gaW4gbW9kdWxlcwoJICAgICAqIEByZXR1cm4gVmVyc2lvbiBmb3IgYSBRUiBDb2RlIG9mIHRoYXQgZGltZW5zaW9uCgkgICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgZGltZW5zaW9uIGlzIG5vdCAxIG1vZCA0CgkgICAgICovCgkgICAgVmVyc2lvbi5nZXRQcm92aXNpb25hbFZlcnNpb25Gb3JEaW1lbnNpb24gPSBmdW5jdGlvbiAoZGltZW5zaW9uIC8qaW50Ki8pIHsKCSAgICAgICAgaWYgKGRpbWVuc2lvbiAlIDQgIT09IDEpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMSQyLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmVyc2lvbkZvck51bWJlcigoZGltZW5zaW9uIC0gMTcpIC8gNCk7CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGlnbm9yZWQgLyo6IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiovKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEkMi5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIFZlcnNpb24uZ2V0VmVyc2lvbkZvck51bWJlciA9IGZ1bmN0aW9uICh2ZXJzaW9uTnVtYmVyIC8qaW50Ki8pIHsKCSAgICAgICAgaWYgKHZlcnNpb25OdW1iZXIgPCAxIHx8IHZlcnNpb25OdW1iZXIgPiA0MCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xJDIuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBWZXJzaW9uLlZFUlNJT05TW3ZlcnNpb25OdW1iZXIgLSAxXTsKCSAgICB9OwoJICAgIFZlcnNpb24uZGVjb2RlVmVyc2lvbkluZm9ybWF0aW9uID0gZnVuY3Rpb24gKHZlcnNpb25CaXRzIC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIGJlc3REaWZmZXJlbmNlID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7CgkgICAgICAgIHZhciBiZXN0VmVyc2lvbiA9IDA7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgVmVyc2lvbi5WRVJTSU9OX0RFQ09ERV9JTkZPLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgICAgICB2YXIgdGFyZ2V0VmVyc2lvbiA9IFZlcnNpb24uVkVSU0lPTl9ERUNPREVfSU5GT1tpXTsKCSAgICAgICAgICAgIC8vIERvIHRoZSB2ZXJzaW9uIGluZm8gYml0cyBtYXRjaCBleGFjdGx5PyBkb25lLgoJICAgICAgICAgICAgaWYgKHRhcmdldFZlcnNpb24gPT09IHZlcnNpb25CaXRzKSB7CgkgICAgICAgICAgICAgICAgcmV0dXJuIFZlcnNpb24uZ2V0VmVyc2lvbkZvck51bWJlcihpICsgNyk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICAvLyBPdGhlcndpc2Ugc2VlIGlmIHRoaXMgaXMgdGhlIGNsb3Nlc3QgdG8gYSByZWFsIHZlcnNpb24gaW5mbyBiaXQgc3RyaW5nCgkgICAgICAgICAgICAvLyB3ZSBoYXZlIHNlZW4gc28gZmFyCgkgICAgICAgICAgICB2YXIgYml0c0RpZmZlcmVuY2UgPSBGb3JtYXRJbmZvcm1hdGlvbl8xJDEuZGVmYXVsdC5udW1CaXRzRGlmZmVyaW5nKHZlcnNpb25CaXRzLCB0YXJnZXRWZXJzaW9uKTsKCSAgICAgICAgICAgIGlmIChiaXRzRGlmZmVyZW5jZSA8IGJlc3REaWZmZXJlbmNlKSB7CgkgICAgICAgICAgICAgICAgYmVzdFZlcnNpb24gPSBpICsgNzsKCSAgICAgICAgICAgICAgICBiZXN0RGlmZmVyZW5jZSA9IGJpdHNEaWZmZXJlbmNlOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIC8vIFdlIGNhbiB0b2xlcmF0ZSB1cCB0byAzIGJpdHMgb2YgZXJyb3Igc2luY2Ugbm8gdHdvIHZlcnNpb24gaW5mbyBjb2Rld29yZHMgd2lsbAoJICAgICAgICAvLyBkaWZmZXIgaW4gbGVzcyB0aGFuIDggYml0cy4KCSAgICAgICAgaWYgKGJlc3REaWZmZXJlbmNlIDw9IDMpIHsKCSAgICAgICAgICAgIHJldHVybiBWZXJzaW9uLmdldFZlcnNpb25Gb3JOdW1iZXIoYmVzdFZlcnNpb24pOwoJICAgICAgICB9CgkgICAgICAgIC8vIElmIHdlIGRpZG4ndCBmaW5kIGEgY2xvc2UgZW5vdWdoIG1hdGNoLCBmYWlsCgkgICAgICAgIHJldHVybiBudWxsOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogU2VlIElTTyAxODAwNDoyMDA2IEFubmV4IEUKCSAgICAgKi8KCSAgICBWZXJzaW9uLnByb3RvdHlwZS5idWlsZEZ1bmN0aW9uUGF0dGVybiA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIGRpbWVuc2lvbiA9IHRoaXMuZ2V0RGltZW5zaW9uRm9yVmVyc2lvbigpOwoJICAgICAgICB2YXIgYml0TWF0cml4ID0gbmV3IEJpdE1hdHJpeF8xJDMuZGVmYXVsdChkaW1lbnNpb24pOwoJICAgICAgICAvLyBUb3AgbGVmdCBmaW5kZXIgcGF0dGVybiArIHNlcGFyYXRvciArIGZvcm1hdAoJICAgICAgICBiaXRNYXRyaXguc2V0UmVnaW9uKDAsIDAsIDksIDkpOwoJICAgICAgICAvLyBUb3AgcmlnaHQgZmluZGVyIHBhdHRlcm4gKyBzZXBhcmF0b3IgKyBmb3JtYXQKCSAgICAgICAgYml0TWF0cml4LnNldFJlZ2lvbihkaW1lbnNpb24gLSA4LCAwLCA4LCA5KTsKCSAgICAgICAgLy8gQm90dG9tIGxlZnQgZmluZGVyIHBhdHRlcm4gKyBzZXBhcmF0b3IgKyBmb3JtYXQKCSAgICAgICAgYml0TWF0cml4LnNldFJlZ2lvbigwLCBkaW1lbnNpb24gLSA4LCA5LCA4KTsKCSAgICAgICAgLy8gQWxpZ25tZW50IHBhdHRlcm5zCgkgICAgICAgIHZhciBtYXggPSB0aGlzLmFsaWdubWVudFBhdHRlcm5DZW50ZXJzLmxlbmd0aDsKCSAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBtYXg7IHgrKykgewoJICAgICAgICAgICAgdmFyIGkgPSB0aGlzLmFsaWdubWVudFBhdHRlcm5DZW50ZXJzW3hdIC0gMjsKCSAgICAgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgbWF4OyB5KyspIHsKCSAgICAgICAgICAgICAgICBpZiAoKHggPT09IDAgJiYgKHkgPT09IDAgfHwgeSA9PT0gbWF4IC0gMSkpIHx8ICh4ID09PSBtYXggLSAxICYmIHkgPT09IDApKSB7CgkgICAgICAgICAgICAgICAgICAgIC8vIE5vIGFsaWdubWVudCBwYXR0ZXJucyBuZWFyIHRoZSB0aHJlZSBmaW5kZXIgcGF0dGVybnMKCSAgICAgICAgICAgICAgICAgICAgY29udGludWU7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGJpdE1hdHJpeC5zZXRSZWdpb24odGhpcy5hbGlnbm1lbnRQYXR0ZXJuQ2VudGVyc1t5XSAtIDIsIGksIDUsIDUpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIC8vIFZlcnRpY2FsIHRpbWluZyBwYXR0ZXJuCgkgICAgICAgIGJpdE1hdHJpeC5zZXRSZWdpb24oNiwgOSwgMSwgZGltZW5zaW9uIC0gMTcpOwoJICAgICAgICAvLyBIb3Jpem9udGFsIHRpbWluZyBwYXR0ZXJuCgkgICAgICAgIGJpdE1hdHJpeC5zZXRSZWdpb24oOSwgNiwgZGltZW5zaW9uIC0gMTcsIDEpOwoJICAgICAgICBpZiAodGhpcy52ZXJzaW9uTnVtYmVyID4gNikgewoJICAgICAgICAgICAgLy8gVmVyc2lvbiBpbmZvLCB0b3AgcmlnaHQKCSAgICAgICAgICAgIGJpdE1hdHJpeC5zZXRSZWdpb24oZGltZW5zaW9uIC0gMTEsIDAsIDMsIDYpOwoJICAgICAgICAgICAgLy8gVmVyc2lvbiBpbmZvLCBib3R0b20gbGVmdAoJICAgICAgICAgICAgYml0TWF0cml4LnNldFJlZ2lvbigwLCBkaW1lbnNpb24gLSAxMSwgNiwgMyk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGJpdE1hdHJpeDsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBWZXJzaW9uLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuICcnICsgdGhpcy52ZXJzaW9uTnVtYmVyOwoJICAgIH07CgkgICAgLyoqCgkgICAgICAgKiBTZWUgSVNPIDE4MDA0OjIwMDYgQW5uZXggRC4KCSAgICAgICAqIEVsZW1lbnQgaSByZXByZXNlbnRzIHRoZSByYXcgdmVyc2lvbiBiaXRzIHRoYXQgc3BlY2lmeSB2ZXJzaW9uIGkgKyA3CgkgICAgICAgKi8KCSAgICBWZXJzaW9uLlZFUlNJT05fREVDT0RFX0lORk8gPSBJbnQzMkFycmF5LmZyb20oWwoJICAgICAgICAweDA3Qzk0LCAweDA4NUJDLCAweDA5QTk5LCAweDBBNEQzLCAweDBCQkY2LAoJICAgICAgICAweDBDNzYyLCAweDBEODQ3LCAweDBFNjBELCAweDBGOTI4LCAweDEwQjc4LAoJICAgICAgICAweDExNDVELCAweDEyQTE3LCAweDEzNTMyLCAweDE0OUE2LCAweDE1NjgzLAoJICAgICAgICAweDE2OEM5LCAweDE3N0VDLCAweDE4RUM0LCAweDE5MUUxLCAweDFBRkFCLAoJICAgICAgICAweDFCMDhFLCAweDFDQzFBLCAweDFEMzNGLCAweDFFRDc1LCAweDFGMjUwLAoJICAgICAgICAweDIwOUQ1LCAweDIxNkYwLCAweDIyOEJBLCAweDIzNzlGLCAweDI0QjBCLAoJICAgICAgICAweDI1NDJFLCAweDI2QTY0LCAweDI3NTQxLCAweDI4QzY5CgkgICAgXSk7CgkgICAgLyoqCgkgICAgICAgKiBTZWUgSVNPIDE4MDA0OjIwMDYgNi41LjEgVGFibGUgOQoJICAgICAgICovCgkgICAgVmVyc2lvbi5WRVJTSU9OUyA9IFsKCSAgICAgICAgbmV3IFZlcnNpb24oMSwgbmV3IEludDMyQXJyYXkoMCksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoNywgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMTkpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgxMCwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMTYpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgxMywgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMTMpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgxNywgbmV3IEVDQl8xLmRlZmF1bHQoMSwgOSkpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMiwgSW50MzJBcnJheS5mcm9tKFs2LCAxOF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDEwLCBuZXcgRUNCXzEuZGVmYXVsdCgxLCAzNCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDE2LCBuZXcgRUNCXzEuZGVmYXVsdCgxLCAyOCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDIyLCBuZXcgRUNCXzEuZGVmYXVsdCgxLCAyMikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgxLCAxNikpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMywgSW50MzJBcnJheS5mcm9tKFs2LCAyMl0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDE1LCBuZXcgRUNCXzEuZGVmYXVsdCgxLCA1NSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI2LCBuZXcgRUNCXzEuZGVmYXVsdCgxLCA0NCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDE4LCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAxNykpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDIyLCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAxMykpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oNCwgSW50MzJBcnJheS5mcm9tKFs2LCAyNl0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDIwLCBuZXcgRUNCXzEuZGVmYXVsdCgxLCA4MCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDE4LCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAzMikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI2LCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAyNCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDE2LCBuZXcgRUNCXzEuZGVmYXVsdCg0LCA5KSkpLAoJICAgICAgICBuZXcgVmVyc2lvbig1LCBJbnQzMkFycmF5LmZyb20oWzYsIDMwXSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjYsIG5ldyBFQ0JfMS5kZWZhdWx0KDEsIDEwOCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI0LCBuZXcgRUNCXzEuZGVmYXVsdCgyLCA0MykpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDE4LCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDE2KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjIsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDExKSwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMTIpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDYsIEludDMyQXJyYXkuZnJvbShbNiwgMzRdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgxOCwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgNjgpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgxNiwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMjcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNCwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTkpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTUpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDcsIEludDMyQXJyYXkuZnJvbShbNiwgMjIsIDM4XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjAsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDc4KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMTgsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDMxKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMTgsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDE0KSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNiwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTMpLCBuZXcgRUNCXzEuZGVmYXVsdCgxLCAxNCkpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oOCwgSW50MzJBcnJheS5mcm9tKFs2LCAyNCwgNDJdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNCwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgOTcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyMiwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMzgpLCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAzOSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDIyLCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAxOCksIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDE5KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjYsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDE0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMTUpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDksIEludDMyQXJyYXkuZnJvbShbNiwgMjYsIDQ2XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDExNikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDIyLCBuZXcgRUNCXzEuZGVmYXVsdCgzLCAzNiksIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDM3KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjAsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDE2KSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNCwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTIpLCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAxMykpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMTAsIEludDMyQXJyYXkuZnJvbShbNiwgMjgsIDUwXSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMTgsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDY4KSwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgNjkpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNiwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgNDMpLCBuZXcgRUNCXzEuZGVmYXVsdCgxLCA0NCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI0LCBuZXcgRUNCXzEuZGVmYXVsdCg2LCAxOSksIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDIwKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDYsIDE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMTYpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDExLCBJbnQzMkFycmF5LmZyb20oWzYsIDMwLCA1NF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDIwLCBuZXcgRUNCXzEuZGVmYXVsdCg0LCA4MSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgxLCA1MCksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDUxKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDIyKSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMjMpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNCwgbmV3IEVDQl8xLmRlZmF1bHQoMywgMTIpLCBuZXcgRUNCXzEuZGVmYXVsdCg4LCAxMykpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMTIsIEludDMyQXJyYXkuZnJvbShbNiwgMzIsIDU4XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjQsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDkyKSwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgOTMpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyMiwgbmV3IEVDQl8xLmRlZmF1bHQoNiwgMzYpLCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAzNykpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI2LCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAyMCksIG5ldyBFQ0JfMS5kZWZhdWx0KDYsIDIxKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDcsIDE0KSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTUpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDEzLCBJbnQzMkFycmF5LmZyb20oWzYsIDM0LCA2Ml0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI2LCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAxMDcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyMiwgbmV3IEVDQl8xLmRlZmF1bHQoOCwgMzcpLCBuZXcgRUNCXzEuZGVmYXVsdCgxLCAzOCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI0LCBuZXcgRUNCXzEuZGVmYXVsdCg4LCAyMCksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDIxKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjIsIG5ldyBFQ0JfMS5kZWZhdWx0KDEyLCAxMSksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDEyKSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigxNCwgSW50MzJBcnJheS5mcm9tKFs2LCAyNiwgNDYsIDY2XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDMsIDExNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDEsIDExNikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI0LCBuZXcgRUNCXzEuZGVmYXVsdCg0LCA0MCksIG5ldyBFQ0JfMS5kZWZhdWx0KDUsIDQxKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjAsIG5ldyBFQ0JfMS5kZWZhdWx0KDExLCAxNiksIG5ldyBFQ0JfMS5kZWZhdWx0KDUsIDE3KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjQsIG5ldyBFQ0JfMS5kZWZhdWx0KDExLCAxMiksIG5ldyBFQ0JfMS5kZWZhdWx0KDUsIDEzKSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigxNSwgSW50MzJBcnJheS5mcm9tKFs2LCAyNiwgNDgsIDcwXSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjIsIG5ldyBFQ0JfMS5kZWZhdWx0KDUsIDg3KSwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgODgpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNCwgbmV3IEVDQl8xLmRlZmF1bHQoNSwgNDEpLCBuZXcgRUNCXzEuZGVmYXVsdCg1LCA0MikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg1LCAyNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDcsIDI1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjQsIG5ldyBFQ0JfMS5kZWZhdWx0KDExLCAxMiksIG5ldyBFQ0JfMS5kZWZhdWx0KDcsIDEzKSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigxNiwgSW50MzJBcnJheS5mcm9tKFs2LCAyNiwgNTAsIDc0XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjQsIG5ldyBFQ0JfMS5kZWZhdWx0KDUsIDk4KSwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgOTkpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoNywgNDUpLCBuZXcgRUNCXzEuZGVmYXVsdCgzLCA0NikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI0LCBuZXcgRUNCXzEuZGVmYXVsdCgxNSwgMTkpLCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAyMCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgzLCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDEzLCAxNikpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMTcsIEludDMyQXJyYXkuZnJvbShbNiwgMzAsIDU0LCA3OF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgxLCAxMDcpLCBuZXcgRUNCXzEuZGVmYXVsdCg1LCAxMDgpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMTAsIDQ2KSwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgNDcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMjIpLCBuZXcgRUNCXzEuZGVmYXVsdCgxNSwgMjMpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMTQpLCBuZXcgRUNCXzEuZGVmYXVsdCgxNywgMTUpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDE4LCBJbnQzMkFycmF5LmZyb20oWzYsIDMwLCA1NiwgODJdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoNSwgMTIwKSwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMTIxKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjYsIG5ldyBFQ0JfMS5kZWZhdWx0KDksIDQzKSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgNDQpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMTcsIDIyKSwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMjMpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMTQpLCBuZXcgRUNCXzEuZGVmYXVsdCgxOSwgMTUpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDE5LCBJbnQzMkFycmF5LmZyb20oWzYsIDMwLCA1OCwgODZdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMywgMTEzKSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTE0KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjYsIG5ldyBFQ0JfMS5kZWZhdWx0KDMsIDQ0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMTEsIDQ1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjYsIG5ldyBFQ0JfMS5kZWZhdWx0KDE3LCAyMSksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDIyKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjYsIG5ldyBFQ0JfMS5kZWZhdWx0KDksIDEzKSwgbmV3IEVDQl8xLmRlZmF1bHQoMTYsIDE0KSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigyMCwgSW50MzJBcnJheS5mcm9tKFs2LCAzNCwgNjIsIDkwXSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDMsIDEwNyksIG5ldyBFQ0JfMS5kZWZhdWx0KDUsIDEwOCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI2LCBuZXcgRUNCXzEuZGVmYXVsdCgzLCA0MSksIG5ldyBFQ0JfMS5kZWZhdWx0KDEzLCA0MikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgxNSwgMjQpLCBuZXcgRUNCXzEuZGVmYXVsdCg1LCAyNSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgxNSwgMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCgxMCwgMTYpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDIxLCBJbnQzMkFycmF5LmZyb20oWzYsIDI4LCA1MCwgNzIsIDk0XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDExNiksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDExNykpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI2LCBuZXcgRUNCXzEuZGVmYXVsdCgxNywgNDIpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMTcsIDIyKSwgbmV3IEVDQl8xLmRlZmF1bHQoNiwgMjMpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTksIDE2KSwgbmV3IEVDQl8xLmRlZmF1bHQoNiwgMTcpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDIyLCBJbnQzMkFycmF5LmZyb20oWzYsIDI2LCA1MCwgNzQsIDk4XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDExMSksIG5ldyBFQ0JfMS5kZWZhdWx0KDcsIDExMikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgxNywgNDYpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoNywgMjQpLCBuZXcgRUNCXzEuZGVmYXVsdCgxNiwgMjUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNCwgbmV3IEVDQl8xLmRlZmF1bHQoMzQsIDEzKSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigyMywgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTQsIDc4LCAxMDJdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTIxKSwgbmV3IEVDQl8xLmRlZmF1bHQoNSwgMTIyKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDQ3KSwgbmV3IEVDQl8xLmRlZmF1bHQoMTQsIDQ4KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDExLCAyNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDE0LCAyNSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgxNiwgMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCgxNCwgMTYpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDI0LCBJbnQzMkFycmF5LmZyb20oWzYsIDI4LCA1NCwgODAsIDEwNl0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg2LCAxMTcpLCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAxMTgpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoNiwgNDUpLCBuZXcgRUNCXzEuZGVmYXVsdCgxNCwgNDYpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTEsIDI0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMTYsIDI1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDMwLCAxNiksIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDE3KSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigyNSwgSW50MzJBcnJheS5mcm9tKFs2LCAzMiwgNTgsIDg0LCAxMTBdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNiwgbmV3IEVDQl8xLmRlZmF1bHQoOCwgMTA2KSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTA3KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDgsIDQ3KSwgbmV3IEVDQl8xLmRlZmF1bHQoMTMsIDQ4KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDcsIDI0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMjIsIDI1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDIyLCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDEzLCAxNikpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMjYsIEludDMyQXJyYXkuZnJvbShbNiwgMzAsIDU4LCA4NiwgMTE0XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDEwLCAxMTQpLCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAxMTUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMTksIDQ2KSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgNDcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMjgsIDIyKSwgbmV3IEVDQl8xLmRlZmF1bHQoNiwgMjMpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMzMsIDE2KSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTcpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDI3LCBJbnQzMkFycmF5LmZyb20oWzYsIDM0LCA2MiwgOTAsIDExOF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg4LCAxMjIpLCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAxMjMpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMjIsIDQ1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMywgNDYpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoOCwgMjMpLCBuZXcgRUNCXzEuZGVmYXVsdCgyNiwgMjQpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTIsIDE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMjgsIDE2KSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigyOCwgSW50MzJBcnJheS5mcm9tKFs2LCAyNiwgNTAsIDc0LCA5OCwgMTIyXSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDMsIDExNyksIG5ldyBFQ0JfMS5kZWZhdWx0KDEwLCAxMTgpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMywgNDUpLCBuZXcgRUNCXzEuZGVmYXVsdCgyMywgNDYpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMjQpLCBuZXcgRUNCXzEuZGVmYXVsdCgzMSwgMjUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTEsIDE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMzEsIDE2KSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigyOSwgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTQsIDc4LCAxMDIsIDEyNl0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg3LCAxMTYpLCBuZXcgRUNCXzEuZGVmYXVsdCg3LCAxMTcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMjEsIDQ1KSwgbmV3IEVDQl8xLmRlZmF1bHQoNywgNDYpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMjMpLCBuZXcgRUNCXzEuZGVmYXVsdCgzNywgMjQpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTksIDE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMjYsIDE2KSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigzMCwgSW50MzJBcnJheS5mcm9tKFs2LCAyNiwgNTIsIDc4LCAxMDQsIDEzMF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg1LCAxMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCgxMCwgMTE2KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDE5LCA0NyksIG5ldyBFQ0JfMS5kZWZhdWx0KDEwLCA0OCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgxNSwgMjQpLCBuZXcgRUNCXzEuZGVmYXVsdCgyNSwgMjUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMjMsIDE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMjUsIDE2KSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigzMSwgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTYsIDgyLCAxMDgsIDEzNF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgxMywgMTE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMywgMTE2KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDQ2KSwgbmV3IEVDQl8xLmRlZmF1bHQoMjksIDQ3KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDQyLCAyNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDEsIDI1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDIzLCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDI4LCAxNikpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMzIsIEludDMyQXJyYXkuZnJvbShbNiwgMzQsIDYwLCA4NiwgMTEyLCAxMzhdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTcsIDExNSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgxMCwgNDYpLCBuZXcgRUNCXzEuZGVmYXVsdCgyMywgNDcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTAsIDI0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMzUsIDI1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDE5LCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDM1LCAxNikpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMzMsIEludDMyQXJyYXkuZnJvbShbNiwgMzAsIDU4LCA4NiwgMTE0LCAxNDJdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTcsIDExNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDEsIDExNikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgxNCwgNDYpLCBuZXcgRUNCXzEuZGVmYXVsdCgyMSwgNDcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMjksIDI0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMTksIDI1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDExLCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDQ2LCAxNikpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMzQsIEludDMyQXJyYXkuZnJvbShbNiwgMzQsIDYyLCA5MCwgMTE4LCAxNDZdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTMsIDExNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDYsIDExNikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgxNCwgNDYpLCBuZXcgRUNCXzEuZGVmYXVsdCgyMywgNDcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoNDQsIDI0KSwgbmV3IEVDQl8xLmRlZmF1bHQoNywgMjUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoNTksIDE2KSwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMTcpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDM1LCBJbnQzMkFycmF5LmZyb20oWzYsIDMwLCA1NCwgNzgsIDEwMiwgMTI2LCAxNTBdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTIsIDEyMSksIG5ldyBFQ0JfMS5kZWZhdWx0KDcsIDEyMikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgxMiwgNDcpLCBuZXcgRUNCXzEuZGVmYXVsdCgyNiwgNDgpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMzksIDI0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMTQsIDI1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDIyLCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDQxLCAxNikpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMzYsIEludDMyQXJyYXkuZnJvbShbNiwgMjQsIDUwLCA3NiwgMTAyLCAxMjgsIDE1NF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg2LCAxMjEpLCBuZXcgRUNCXzEuZGVmYXVsdCgxNCwgMTIyKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDYsIDQ3KSwgbmV3IEVDQl8xLmRlZmF1bHQoMzQsIDQ4KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDQ2LCAyNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDEwLCAyNSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDY0LCAxNikpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMzcsIEludDMyQXJyYXkuZnJvbShbNiwgMjgsIDU0LCA4MCwgMTA2LCAxMzIsIDE1OF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgxNywgMTIyKSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTIzKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDI5LCA0NiksIG5ldyBFQ0JfMS5kZWZhdWx0KDE0LCA0NykpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg0OSwgMjQpLCBuZXcgRUNCXzEuZGVmYXVsdCgxMCwgMjUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMjQsIDE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoNDYsIDE2KSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigzOCwgSW50MzJBcnJheS5mcm9tKFs2LCAzMiwgNTgsIDg0LCAxMTAsIDEzNiwgMTYyXSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDEyMiksIG5ldyBFQ0JfMS5kZWZhdWx0KDE4LCAxMjMpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMTMsIDQ2KSwgbmV3IEVDQl8xLmRlZmF1bHQoMzIsIDQ3KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDQ4LCAyNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDE0LCAyNSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg0MiwgMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCgzMiwgMTYpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDM5LCBJbnQzMkFycmF5LmZyb20oWzYsIDI2LCA1NCwgODIsIDExMCwgMTM4LCAxNjZdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMjAsIDExNyksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDExOCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCg0MCwgNDcpLCBuZXcgRUNCXzEuZGVmYXVsdCg3LCA0OCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg0MywgMjQpLCBuZXcgRUNCXzEuZGVmYXVsdCgyMiwgMjUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTAsIDE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoNjcsIDE2KSkpLAoJICAgICAgICBuZXcgVmVyc2lvbig0MCwgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTgsIDg2LCAxMTQsIDE0MiwgMTcwXSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDE5LCAxMTgpLCBuZXcgRUNCXzEuZGVmYXVsdCg2LCAxMTkpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMTgsIDQ3KSwgbmV3IEVDQl8xLmRlZmF1bHQoMzEsIDQ4KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDM0LCAyNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDM0LCAyNSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgyMCwgMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCg2MSwgMTYpKSkKCSAgICBdOwoJICAgIHJldHVybiBWZXJzaW9uOwoJfSgpKTsKCVZlcnNpb24kMS5kZWZhdWx0ID0gVmVyc2lvbjsKCgl2YXIgRGF0YU1hc2sgPSB7fTsKCgkoZnVuY3Rpb24gKGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJZXhwb3J0cy5EYXRhTWFza1ZhbHVlcyA9IHZvaWQgMDsKCXZhciBEYXRhTWFza1ZhbHVlczsKCShmdW5jdGlvbiAoRGF0YU1hc2tWYWx1ZXMpIHsKCSAgICBEYXRhTWFza1ZhbHVlc1tEYXRhTWFza1ZhbHVlc1siREFUQV9NQVNLXzAwMCJdID0gMF0gPSAiREFUQV9NQVNLXzAwMCI7CgkgICAgRGF0YU1hc2tWYWx1ZXNbRGF0YU1hc2tWYWx1ZXNbIkRBVEFfTUFTS18wMDEiXSA9IDFdID0gIkRBVEFfTUFTS18wMDEiOwoJICAgIERhdGFNYXNrVmFsdWVzW0RhdGFNYXNrVmFsdWVzWyJEQVRBX01BU0tfMDEwIl0gPSAyXSA9ICJEQVRBX01BU0tfMDEwIjsKCSAgICBEYXRhTWFza1ZhbHVlc1tEYXRhTWFza1ZhbHVlc1siREFUQV9NQVNLXzAxMSJdID0gM10gPSAiREFUQV9NQVNLXzAxMSI7CgkgICAgRGF0YU1hc2tWYWx1ZXNbRGF0YU1hc2tWYWx1ZXNbIkRBVEFfTUFTS18xMDAiXSA9IDRdID0gIkRBVEFfTUFTS18xMDAiOwoJICAgIERhdGFNYXNrVmFsdWVzW0RhdGFNYXNrVmFsdWVzWyJEQVRBX01BU0tfMTAxIl0gPSA1XSA9ICJEQVRBX01BU0tfMTAxIjsKCSAgICBEYXRhTWFza1ZhbHVlc1tEYXRhTWFza1ZhbHVlc1siREFUQV9NQVNLXzExMCJdID0gNl0gPSAiREFUQV9NQVNLXzExMCI7CgkgICAgRGF0YU1hc2tWYWx1ZXNbRGF0YU1hc2tWYWx1ZXNbIkRBVEFfTUFTS18xMTEiXSA9IDddID0gIkRBVEFfTUFTS18xMTEiOwoJfSkoRGF0YU1hc2tWYWx1ZXMgPSBleHBvcnRzLkRhdGFNYXNrVmFsdWVzIHx8IChleHBvcnRzLkRhdGFNYXNrVmFsdWVzID0ge30pKTsKCS8qKgoJICogPHA+RW5jYXBzdWxhdGVzIGRhdGEgbWFza3MgZm9yIHRoZSBkYXRhIGJpdHMgaW4gYSBRUiBjb2RlLCBwZXIgSVNPIDE4MDA0OjIwMDYgNi44LiBJbXBsZW1lbnRhdGlvbnMKCSAqIG9mIHRoaXMgY2xhc3MgY2FuIHVuLW1hc2sgYSByYXcgQml0TWF0cml4LiBGb3Igc2ltcGxpY2l0eSwgdGhleSB3aWxsIHVubWFzayB0aGUgZW50aXJlIEJpdE1hdHJpeCwKCSAqIGluY2x1ZGluZyBhcmVhcyB1c2VkIGZvciBmaW5kZXIgcGF0dGVybnMsIHRpbWluZyBwYXR0ZXJucywgZXRjLiBUaGVzZSBhcmVhcyBzaG91bGQgYmUgdW51c2VkCgkgKiBhZnRlciB0aGUgcG9pbnQgdGhleSBhcmUgdW5tYXNrZWQgYW55d2F5LjwvcD4KCSAqCgkgKiA8cD5Ob3RlIHRoYXQgdGhlIGRpYWdyYW0gaW4gc2VjdGlvbiA2LjguMSBpcyBtaXNsZWFkaW5nIHNpbmNlIGl0IGluZGljYXRlcyB0aGF0IGkgaXMgY29sdW1uIHBvc2l0aW9uCgkgKiBhbmQgaiBpcyByb3cgcG9zaXRpb24uIEluIGZhY3QsIGFzIHRoZSB0ZXh0IHNheXMsIGkgaXMgcm93IHBvc2l0aW9uIGFuZCBqIGlzIGNvbHVtbiBwb3NpdGlvbi48L3A+CgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIERhdGFNYXNrID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIC8vIFNlZSBJU08gMTgwMDQ6MjAwNiA2LjguMQoJICAgIGZ1bmN0aW9uIERhdGFNYXNrKHZhbHVlLCBpc01hc2tlZCkgewoJICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CgkgICAgICAgIHRoaXMuaXNNYXNrZWQgPSBpc01hc2tlZDsKCSAgICB9CgkgICAgLy8gRW5kIG9mIGVudW0gY29uc3RhbnRzLgoJICAgIC8qKgoJICAgICAqIDxwPkltcGxlbWVudGF0aW9ucyBvZiB0aGlzIG1ldGhvZCByZXZlcnNlIHRoZSBkYXRhIG1hc2tpbmcgcHJvY2VzcyBhcHBsaWVkIHRvIGEgUVIgQ29kZSBhbmQKCSAgICAgKiBtYWtlIGl0cyBiaXRzIHJlYWR5IHRvIHJlYWQuPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIGJpdHMgcmVwcmVzZW50YXRpb24gb2YgUVIgQ29kZSBiaXRzCgkgICAgICogQHBhcmFtIGRpbWVuc2lvbiBkaW1lbnNpb24gb2YgUVIgQ29kZSwgcmVwcmVzZW50ZWQgYnkgYml0cywgYmVpbmcgdW5tYXNrZWQKCSAgICAgKi8KCSAgICBEYXRhTWFzay5wcm90b3R5cGUudW5tYXNrQml0TWF0cml4ID0gZnVuY3Rpb24gKGJpdHMsIGRpbWVuc2lvbiAvKmludCovKSB7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGltZW5zaW9uOyBpKyspIHsKCSAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZGltZW5zaW9uOyBqKyspIHsKCSAgICAgICAgICAgICAgICBpZiAodGhpcy5pc01hc2tlZChpLCBqKSkgewoJICAgICAgICAgICAgICAgICAgICBiaXRzLmZsaXAoaiwgaSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfTsKCSAgICBEYXRhTWFzay52YWx1ZXMgPSBuZXcgTWFwKFsKCSAgICAgICAgLyoqCgkgICAgICAgICAqIDAwMDogbWFzayBiaXRzIGZvciB3aGljaCAoeCArIHkpIG1vZCAyID09IDAKCSAgICAgICAgICovCgkgICAgICAgIFtEYXRhTWFza1ZhbHVlcy5EQVRBX01BU0tfMDAwLCBuZXcgRGF0YU1hc2soRGF0YU1hc2tWYWx1ZXMuREFUQV9NQVNLXzAwMCwgZnVuY3Rpb24gKGkgLyppbnQqLywgaiAvKmludCovKSB7IHJldHVybiAoKGkgKyBqKSAmIDB4MDEpID09PSAwOyB9KV0sCgkgICAgICAgIC8qKgoJICAgICAgICAgKiAwMDE6IG1hc2sgYml0cyBmb3Igd2hpY2ggeCBtb2QgMiA9PSAwCgkgICAgICAgICAqLwoJICAgICAgICBbRGF0YU1hc2tWYWx1ZXMuREFUQV9NQVNLXzAwMSwgbmV3IERhdGFNYXNrKERhdGFNYXNrVmFsdWVzLkRBVEFfTUFTS18wMDEsIGZ1bmN0aW9uIChpIC8qaW50Ki8sIGogLyppbnQqLykgeyByZXR1cm4gKGkgJiAweDAxKSA9PT0gMDsgfSldLAoJICAgICAgICAvKioKCSAgICAgICAgICogMDEwOiBtYXNrIGJpdHMgZm9yIHdoaWNoIHkgbW9kIDMgPT0gMAoJICAgICAgICAgKi8KCSAgICAgICAgW0RhdGFNYXNrVmFsdWVzLkRBVEFfTUFTS18wMTAsIG5ldyBEYXRhTWFzayhEYXRhTWFza1ZhbHVlcy5EQVRBX01BU0tfMDEwLCBmdW5jdGlvbiAoaSAvKmludCovLCBqIC8qaW50Ki8pIHsgcmV0dXJuIGogJSAzID09PSAwOyB9KV0sCgkgICAgICAgIC8qKgoJICAgICAgICAgKiAwMTE6IG1hc2sgYml0cyBmb3Igd2hpY2ggKHggKyB5KSBtb2QgMyA9PSAwCgkgICAgICAgICAqLwoJICAgICAgICBbRGF0YU1hc2tWYWx1ZXMuREFUQV9NQVNLXzAxMSwgbmV3IERhdGFNYXNrKERhdGFNYXNrVmFsdWVzLkRBVEFfTUFTS18wMTEsIGZ1bmN0aW9uIChpIC8qaW50Ki8sIGogLyppbnQqLykgeyByZXR1cm4gKGkgKyBqKSAlIDMgPT09IDA7IH0pXSwKCSAgICAgICAgLyoqCgkgICAgICAgICAqIDEwMDogbWFzayBiaXRzIGZvciB3aGljaCAoeC8yICsgeS8zKSBtb2QgMiA9PSAwCgkgICAgICAgICAqLwoJICAgICAgICBbRGF0YU1hc2tWYWx1ZXMuREFUQV9NQVNLXzEwMCwgbmV3IERhdGFNYXNrKERhdGFNYXNrVmFsdWVzLkRBVEFfTUFTS18xMDAsIGZ1bmN0aW9uIChpIC8qaW50Ki8sIGogLyppbnQqLykgeyByZXR1cm4gKChNYXRoLmZsb29yKGkgLyAyKSArIE1hdGguZmxvb3IoaiAvIDMpKSAmIDB4MDEpID09PSAwOyB9KV0sCgkgICAgICAgIC8qKgoJICAgICAgICAgKiAxMDE6IG1hc2sgYml0cyBmb3Igd2hpY2ggeHkgbW9kIDIgKyB4eSBtb2QgMyA9PSAwCgkgICAgICAgICAqIGVxdWl2YWxlbnRseSwgc3VjaCB0aGF0IHh5IG1vZCA2ID09IDAKCSAgICAgICAgICovCgkgICAgICAgIFtEYXRhTWFza1ZhbHVlcy5EQVRBX01BU0tfMTAxLCBuZXcgRGF0YU1hc2soRGF0YU1hc2tWYWx1ZXMuREFUQV9NQVNLXzEwMSwgZnVuY3Rpb24gKGkgLyppbnQqLywgaiAvKmludCovKSB7IHJldHVybiAoaSAqIGopICUgNiA9PT0gMDsgfSldLAoJICAgICAgICAvKioKCSAgICAgICAgICogMTEwOiBtYXNrIGJpdHMgZm9yIHdoaWNoICh4eSBtb2QgMiArIHh5IG1vZCAzKSBtb2QgMiA9PSAwCgkgICAgICAgICAqIGVxdWl2YWxlbnRseSwgc3VjaCB0aGF0IHh5IG1vZCA2IDwgMwoJICAgICAgICAgKi8KCSAgICAgICAgW0RhdGFNYXNrVmFsdWVzLkRBVEFfTUFTS18xMTAsIG5ldyBEYXRhTWFzayhEYXRhTWFza1ZhbHVlcy5EQVRBX01BU0tfMTEwLCBmdW5jdGlvbiAoaSAvKmludCovLCBqIC8qaW50Ki8pIHsgcmV0dXJuICgoaSAqIGopICUgNikgPCAzOyB9KV0sCgkgICAgICAgIC8qKgoJICAgICAgICAgKiAxMTE6IG1hc2sgYml0cyBmb3Igd2hpY2ggKCh4K3kpbW9kIDIgKyB4eSBtb2QgMykgbW9kIDIgPT0gMAoJICAgICAgICAgKiBlcXVpdmFsZW50bHksIHN1Y2ggdGhhdCAoeCArIHkgKyB4eSBtb2QgMykgbW9kIDIgPT0gMAoJICAgICAgICAgKi8KCSAgICAgICAgW0RhdGFNYXNrVmFsdWVzLkRBVEFfTUFTS18xMTEsIG5ldyBEYXRhTWFzayhEYXRhTWFza1ZhbHVlcy5EQVRBX01BU0tfMTExLCBmdW5jdGlvbiAoaSAvKmludCovLCBqIC8qaW50Ki8pIHsgcmV0dXJuICgoaSArIGogKyAoKGkgKiBqKSAlIDMpKSAmIDB4MDEpID09PSAwOyB9KV0sCgkgICAgXSk7CgkgICAgcmV0dXJuIERhdGFNYXNrOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IERhdGFNYXNrOwoKCX0oRGF0YU1hc2spKTsKCgkvKgoJICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KEJpdE1hdHJpeFBhcnNlciQxLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7Cgl2YXIgVmVyc2lvbl8xJDEgPSBWZXJzaW9uJDE7Cgl2YXIgRm9ybWF0SW5mb3JtYXRpb25fMSA9IEZvcm1hdEluZm9ybWF0aW9uJDE7Cgl2YXIgRGF0YU1hc2tfMSA9IERhdGFNYXNrOwoJdmFyIEZvcm1hdEV4Y2VwdGlvbl8xJDEgPSBGb3JtYXRFeGNlcHRpb24kMTsKCS8qKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIEJpdE1hdHJpeFBhcnNlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICAvKioKCSAgICAgKiBAcGFyYW0gYml0TWF0cml4IHtAbGluayBCaXRNYXRyaXh9IHRvIHBhcnNlCgkgICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgZGltZW5zaW9uIGlzIG5vdCA+PSAyMSBhbmQgMSBtb2QgNAoJICAgICAqLwoJICAgIGZ1bmN0aW9uIEJpdE1hdHJpeFBhcnNlcihiaXRNYXRyaXgpIHsKCSAgICAgICAgdmFyIGRpbWVuc2lvbiA9IGJpdE1hdHJpeC5nZXRIZWlnaHQoKTsKCSAgICAgICAgaWYgKGRpbWVuc2lvbiA8IDIxIHx8IChkaW1lbnNpb24gJiAweDAzKSAhPT0gMSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xJDEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHRoaXMuYml0TWF0cml4ID0gYml0TWF0cml4OwoJICAgIH0KCSAgICAvKioKCSAgICAgKiA8cD5SZWFkcyBmb3JtYXQgaW5mb3JtYXRpb24gZnJvbSBvbmUgb2YgaXRzIHR3byBsb2NhdGlvbnMgd2l0aGluIHRoZSBRUiBDb2RlLjwvcD4KCSAgICAgKgoJICAgICAqIEByZXR1cm4ge0BsaW5rIEZvcm1hdEluZm9ybWF0aW9ufSBlbmNhcHN1bGF0aW5nIHRoZSBRUiBDb2RlJ3MgZm9ybWF0IGluZm8KCSAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbiBpZiBib3RoIGZvcm1hdCBpbmZvcm1hdGlvbiBsb2NhdGlvbnMgY2Fubm90IGJlIHBhcnNlZCBhcwoJICAgICAqIHRoZSB2YWxpZCBlbmNvZGluZyBvZiBmb3JtYXQgaW5mb3JtYXRpb24KCSAgICAgKi8KCSAgICBCaXRNYXRyaXhQYXJzZXIucHJvdG90eXBlLnJlYWRGb3JtYXRJbmZvcm1hdGlvbiA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgaWYgKHRoaXMucGFyc2VkRm9ybWF0SW5mbyAhPT0gbnVsbCAmJiB0aGlzLnBhcnNlZEZvcm1hdEluZm8gIT09IHVuZGVmaW5lZCkgewoJICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VkRm9ybWF0SW5mbzsKCSAgICAgICAgfQoJICAgICAgICAvLyBSZWFkIHRvcC1sZWZ0IGZvcm1hdCBpbmZvIGJpdHMKCSAgICAgICAgdmFyIGZvcm1hdEluZm9CaXRzMSA9IDA7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7CgkgICAgICAgICAgICBmb3JtYXRJbmZvQml0czEgPSB0aGlzLmNvcHlCaXQoaSwgOCwgZm9ybWF0SW5mb0JpdHMxKTsKCSAgICAgICAgfQoJICAgICAgICAvLyAuLiBhbmQgc2tpcCBhIGJpdCBpbiB0aGUgdGltaW5nIHBhdHRlcm4gLi4uCgkgICAgICAgIGZvcm1hdEluZm9CaXRzMSA9IHRoaXMuY29weUJpdCg3LCA4LCBmb3JtYXRJbmZvQml0czEpOwoJICAgICAgICBmb3JtYXRJbmZvQml0czEgPSB0aGlzLmNvcHlCaXQoOCwgOCwgZm9ybWF0SW5mb0JpdHMxKTsKCSAgICAgICAgZm9ybWF0SW5mb0JpdHMxID0gdGhpcy5jb3B5Qml0KDgsIDcsIGZvcm1hdEluZm9CaXRzMSk7CgkgICAgICAgIC8vIC4uIGFuZCBza2lwIGEgYml0IGluIHRoZSB0aW1pbmcgcGF0dGVybiAuLi4KCSAgICAgICAgZm9yICh2YXIgaiA9IDU7IGogPj0gMDsgai0tKSB7CgkgICAgICAgICAgICBmb3JtYXRJbmZvQml0czEgPSB0aGlzLmNvcHlCaXQoOCwgaiwgZm9ybWF0SW5mb0JpdHMxKTsKCSAgICAgICAgfQoJICAgICAgICAvLyBSZWFkIHRoZSB0b3AtcmlnaHQvYm90dG9tLWxlZnQgcGF0dGVybiB0b28KCSAgICAgICAgdmFyIGRpbWVuc2lvbiA9IHRoaXMuYml0TWF0cml4LmdldEhlaWdodCgpOwoJICAgICAgICB2YXIgZm9ybWF0SW5mb0JpdHMyID0gMDsKCSAgICAgICAgdmFyIGpNaW4gPSBkaW1lbnNpb24gLSA3OwoJICAgICAgICBmb3IgKHZhciBqID0gZGltZW5zaW9uIC0gMTsgaiA+PSBqTWluOyBqLS0pIHsKCSAgICAgICAgICAgIGZvcm1hdEluZm9CaXRzMiA9IHRoaXMuY29weUJpdCg4LCBqLCBmb3JtYXRJbmZvQml0czIpOwoJICAgICAgICB9CgkgICAgICAgIGZvciAodmFyIGkgPSBkaW1lbnNpb24gLSA4OyBpIDwgZGltZW5zaW9uOyBpKyspIHsKCSAgICAgICAgICAgIGZvcm1hdEluZm9CaXRzMiA9IHRoaXMuY29weUJpdChpLCA4LCBmb3JtYXRJbmZvQml0czIpOwoJICAgICAgICB9CgkgICAgICAgIHRoaXMucGFyc2VkRm9ybWF0SW5mbyA9IEZvcm1hdEluZm9ybWF0aW9uXzEuZGVmYXVsdC5kZWNvZGVGb3JtYXRJbmZvcm1hdGlvbihmb3JtYXRJbmZvQml0czEsIGZvcm1hdEluZm9CaXRzMik7CgkgICAgICAgIGlmICh0aGlzLnBhcnNlZEZvcm1hdEluZm8gIT09IG51bGwpIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlZEZvcm1hdEluZm87CgkgICAgICAgIH0KCSAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xJDEuZGVmYXVsdCgpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogPHA+UmVhZHMgdmVyc2lvbiBpbmZvcm1hdGlvbiBmcm9tIG9uZSBvZiBpdHMgdHdvIGxvY2F0aW9ucyB3aXRoaW4gdGhlIFFSIENvZGUuPC9wPgoJICAgICAqCgkgICAgICogQHJldHVybiB7QGxpbmsgVmVyc2lvbn0gZW5jYXBzdWxhdGluZyB0aGUgUVIgQ29kZSdzIHZlcnNpb24KCSAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbiBpZiBib3RoIHZlcnNpb24gaW5mb3JtYXRpb24gbG9jYXRpb25zIGNhbm5vdCBiZSBwYXJzZWQgYXMKCSAgICAgKiB0aGUgdmFsaWQgZW5jb2Rpbmcgb2YgdmVyc2lvbiBpbmZvcm1hdGlvbgoJICAgICAqLwoJICAgIEJpdE1hdHJpeFBhcnNlci5wcm90b3R5cGUucmVhZFZlcnNpb24gPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIGlmICh0aGlzLnBhcnNlZFZlcnNpb24gIT09IG51bGwgJiYgdGhpcy5wYXJzZWRWZXJzaW9uICE9PSB1bmRlZmluZWQpIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlZFZlcnNpb247CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGRpbWVuc2lvbiA9IHRoaXMuYml0TWF0cml4LmdldEhlaWdodCgpOwoJICAgICAgICB2YXIgcHJvdmlzaW9uYWxWZXJzaW9uID0gTWF0aC5mbG9vcigoZGltZW5zaW9uIC0gMTcpIC8gNCk7CgkgICAgICAgIGlmIChwcm92aXNpb25hbFZlcnNpb24gPD0gNikgewoJICAgICAgICAgICAgcmV0dXJuIFZlcnNpb25fMSQxLmRlZmF1bHQuZ2V0VmVyc2lvbkZvck51bWJlcihwcm92aXNpb25hbFZlcnNpb24pOwoJICAgICAgICB9CgkgICAgICAgIC8vIFJlYWQgdG9wLXJpZ2h0IHZlcnNpb24gaW5mbzogMyB3aWRlIGJ5IDYgdGFsbAoJICAgICAgICB2YXIgdmVyc2lvbkJpdHMgPSAwOwoJICAgICAgICB2YXIgaWpNaW4gPSBkaW1lbnNpb24gLSAxMTsKCSAgICAgICAgZm9yICh2YXIgaiA9IDU7IGogPj0gMDsgai0tKSB7CgkgICAgICAgICAgICBmb3IgKHZhciBpID0gZGltZW5zaW9uIC0gOTsgaSA+PSBpak1pbjsgaS0tKSB7CgkgICAgICAgICAgICAgICAgdmVyc2lvbkJpdHMgPSB0aGlzLmNvcHlCaXQoaSwgaiwgdmVyc2lvbkJpdHMpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHZhciB0aGVQYXJzZWRWZXJzaW9uID0gVmVyc2lvbl8xJDEuZGVmYXVsdC5kZWNvZGVWZXJzaW9uSW5mb3JtYXRpb24odmVyc2lvbkJpdHMpOwoJICAgICAgICBpZiAodGhlUGFyc2VkVmVyc2lvbiAhPT0gbnVsbCAmJiB0aGVQYXJzZWRWZXJzaW9uLmdldERpbWVuc2lvbkZvclZlcnNpb24oKSA9PT0gZGltZW5zaW9uKSB7CgkgICAgICAgICAgICB0aGlzLnBhcnNlZFZlcnNpb24gPSB0aGVQYXJzZWRWZXJzaW9uOwoJICAgICAgICAgICAgcmV0dXJuIHRoZVBhcnNlZFZlcnNpb247CgkgICAgICAgIH0KCSAgICAgICAgLy8gSG1tLCBmYWlsZWQuIFRyeSBib3R0b20gbGVmdDogNiB3aWRlIGJ5IDMgdGFsbAoJICAgICAgICB2ZXJzaW9uQml0cyA9IDA7CgkgICAgICAgIGZvciAodmFyIGkgPSA1OyBpID49IDA7IGktLSkgewoJICAgICAgICAgICAgZm9yICh2YXIgaiA9IGRpbWVuc2lvbiAtIDk7IGogPj0gaWpNaW47IGotLSkgewoJICAgICAgICAgICAgICAgIHZlcnNpb25CaXRzID0gdGhpcy5jb3B5Qml0KGksIGosIHZlcnNpb25CaXRzKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICB0aGVQYXJzZWRWZXJzaW9uID0gVmVyc2lvbl8xJDEuZGVmYXVsdC5kZWNvZGVWZXJzaW9uSW5mb3JtYXRpb24odmVyc2lvbkJpdHMpOwoJICAgICAgICBpZiAodGhlUGFyc2VkVmVyc2lvbiAhPT0gbnVsbCAmJiB0aGVQYXJzZWRWZXJzaW9uLmdldERpbWVuc2lvbkZvclZlcnNpb24oKSA9PT0gZGltZW5zaW9uKSB7CgkgICAgICAgICAgICB0aGlzLnBhcnNlZFZlcnNpb24gPSB0aGVQYXJzZWRWZXJzaW9uOwoJICAgICAgICAgICAgcmV0dXJuIHRoZVBhcnNlZFZlcnNpb247CgkgICAgICAgIH0KCSAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xJDEuZGVmYXVsdCgpOwoJICAgIH07CgkgICAgQml0TWF0cml4UGFyc2VyLnByb3RvdHlwZS5jb3B5Qml0ID0gZnVuY3Rpb24gKGkgLyppbnQqLywgaiAvKmludCovLCB2ZXJzaW9uQml0cyAvKmludCovKSB7CgkgICAgICAgIHZhciBiaXQgPSB0aGlzLmlzTWlycm9yID8gdGhpcy5iaXRNYXRyaXguZ2V0KGosIGkpIDogdGhpcy5iaXRNYXRyaXguZ2V0KGksIGopOwoJICAgICAgICByZXR1cm4gYml0ID8gKHZlcnNpb25CaXRzIDw8IDEpIHwgMHgxIDogdmVyc2lvbkJpdHMgPDwgMTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPlJlYWRzIHRoZSBiaXRzIGluIHRoZSB7QGxpbmsgQml0TWF0cml4fSByZXByZXNlbnRpbmcgdGhlIGZpbmRlciBwYXR0ZXJuIGluIHRoZQoJICAgICAqIGNvcnJlY3Qgb3JkZXIgaW4gb3JkZXIgdG8gcmVjb25zdHJ1Y3QgdGhlIGNvZGV3b3JkcyBieXRlcyBjb250YWluZWQgd2l0aGluIHRoZQoJICAgICAqIFFSIENvZGUuPC9wPgoJICAgICAqCgkgICAgICogQHJldHVybiBieXRlcyBlbmNvZGVkIHdpdGhpbiB0aGUgUVIgQ29kZQoJICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uIGlmIHRoZSBleGFjdCBudW1iZXIgb2YgYnl0ZXMgZXhwZWN0ZWQgaXMgbm90IHJlYWQKCSAgICAgKi8KCSAgICBCaXRNYXRyaXhQYXJzZXIucHJvdG90eXBlLnJlYWRDb2Rld29yZHMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHZhciBmb3JtYXRJbmZvID0gdGhpcy5yZWFkRm9ybWF0SW5mb3JtYXRpb24oKTsKCSAgICAgICAgdmFyIHZlcnNpb24gPSB0aGlzLnJlYWRWZXJzaW9uKCk7CgkgICAgICAgIC8vIEdldCB0aGUgZGF0YSBtYXNrIGZvciB0aGUgZm9ybWF0IHVzZWQgaW4gdGhpcyBRUiBDb2RlLiBUaGlzIHdpbGwgZXhjbHVkZQoJICAgICAgICAvLyBzb21lIGJpdHMgZnJvbSByZWFkaW5nIGFzIHdlIHdpbmQgdGhyb3VnaCB0aGUgYml0IG1hdHJpeC4KCSAgICAgICAgdmFyIGRhdGFNYXNrID0gRGF0YU1hc2tfMS5kZWZhdWx0LnZhbHVlcy5nZXQoZm9ybWF0SW5mby5nZXREYXRhTWFzaygpKTsKCSAgICAgICAgdmFyIGRpbWVuc2lvbiA9IHRoaXMuYml0TWF0cml4LmdldEhlaWdodCgpOwoJICAgICAgICBkYXRhTWFzay51bm1hc2tCaXRNYXRyaXgodGhpcy5iaXRNYXRyaXgsIGRpbWVuc2lvbik7CgkgICAgICAgIHZhciBmdW5jdGlvblBhdHRlcm4gPSB2ZXJzaW9uLmJ1aWxkRnVuY3Rpb25QYXR0ZXJuKCk7CgkgICAgICAgIHZhciByZWFkaW5nVXAgPSB0cnVlOwoJICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkodmVyc2lvbi5nZXRUb3RhbENvZGV3b3JkcygpKTsKCSAgICAgICAgdmFyIHJlc3VsdE9mZnNldCA9IDA7CgkgICAgICAgIHZhciBjdXJyZW50Qnl0ZSA9IDA7CgkgICAgICAgIHZhciBiaXRzUmVhZCA9IDA7CgkgICAgICAgIC8vIFJlYWQgY29sdW1ucyBpbiBwYWlycywgZnJvbSByaWdodCB0byBsZWZ0CgkgICAgICAgIGZvciAodmFyIGogPSBkaW1lbnNpb24gLSAxOyBqID4gMDsgaiAtPSAyKSB7CgkgICAgICAgICAgICBpZiAoaiA9PT0gNikgewoJICAgICAgICAgICAgICAgIC8vIFNraXAgd2hvbGUgY29sdW1uIHdpdGggdmVydGljYWwgYWxpZ25tZW50IHBhdHRlcm4KCSAgICAgICAgICAgICAgICAvLyBzYXZlcyB0aW1lIGFuZCBtYWtlcyB0aGUgb3RoZXIgY29kZSBwcm9jZWVkIG1vcmUgY2xlYW5seQoJICAgICAgICAgICAgICAgIGotLTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIC8vIFJlYWQgYWx0ZXJuYXRpbmdseSBmcm9tIGJvdHRvbSB0byB0b3AgdGhlbiB0b3AgdG8gYm90dG9tCgkgICAgICAgICAgICBmb3IgKHZhciBjb3VudCA9IDA7IGNvdW50IDwgZGltZW5zaW9uOyBjb3VudCsrKSB7CgkgICAgICAgICAgICAgICAgdmFyIGkgPSByZWFkaW5nVXAgPyBkaW1lbnNpb24gLSAxIC0gY291bnQgOiBjb3VudDsKCSAgICAgICAgICAgICAgICBmb3IgKHZhciBjb2wgPSAwOyBjb2wgPCAyOyBjb2wrKykgewoJICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgYml0cyBjb3ZlcmVkIGJ5IHRoZSBmdW5jdGlvbiBwYXR0ZXJuCgkgICAgICAgICAgICAgICAgICAgIGlmICghZnVuY3Rpb25QYXR0ZXJuLmdldChqIC0gY29sLCBpKSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVhZCBhIGJpdAoJICAgICAgICAgICAgICAgICAgICAgICAgYml0c1JlYWQrKzsKCSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxOwoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYml0TWF0cml4LmdldChqIC0gY29sLCBpKSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSd2ZSBtYWRlIGEgd2hvbGUgYnl0ZSwgc2F2ZSBpdCBvZmYKCSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiaXRzUmVhZCA9PT0gOCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtyZXN1bHRPZmZzZXQrK10gPSAvKihieXRlKSAqLyBjdXJyZW50Qnl0ZTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzUmVhZCA9IDA7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEJ5dGUgPSAwOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmVhZGluZ1VwID0gIXJlYWRpbmdVcDsgLy8gcmVhZGluZ1VwIF49IHRydWU7IC8vIHJlYWRpbmdVcCA9ICFyZWFkaW5nVXA7IC8vIHN3aXRjaCBkaXJlY3Rpb25zCgkgICAgICAgIH0KCSAgICAgICAgaWYgKHJlc3VsdE9mZnNldCAhPT0gdmVyc2lvbi5nZXRUb3RhbENvZGV3b3JkcygpKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEkMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJlc3VsdDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFJldmVydCB0aGUgbWFzayByZW1vdmFsIGRvbmUgd2hpbGUgcmVhZGluZyB0aGUgY29kZSB3b3Jkcy4gVGhlIGJpdCBtYXRyaXggc2hvdWxkIHJldmVydCB0byBpdHMgb3JpZ2luYWwgc3RhdGUuCgkgICAgICovCgkgICAgQml0TWF0cml4UGFyc2VyLnByb3RvdHlwZS5yZW1hc2sgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIGlmICh0aGlzLnBhcnNlZEZvcm1hdEluZm8gPT09IG51bGwpIHsKCSAgICAgICAgICAgIHJldHVybjsgLy8gV2UgaGF2ZSBubyBmb3JtYXQgaW5mb3JtYXRpb24sIGFuZCBoYXZlIG5vIGRhdGEgbWFzawoJICAgICAgICB9CgkgICAgICAgIHZhciBkYXRhTWFzayA9IERhdGFNYXNrXzEuZGVmYXVsdC52YWx1ZXNbdGhpcy5wYXJzZWRGb3JtYXRJbmZvLmdldERhdGFNYXNrKCldOwoJICAgICAgICB2YXIgZGltZW5zaW9uID0gdGhpcy5iaXRNYXRyaXguZ2V0SGVpZ2h0KCk7CgkgICAgICAgIGRhdGFNYXNrLnVubWFza0JpdE1hdHJpeCh0aGlzLmJpdE1hdHJpeCwgZGltZW5zaW9uKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFByZXBhcmUgdGhlIHBhcnNlciBmb3IgYSBtaXJyb3JlZCBvcGVyYXRpb24uCgkgICAgICogVGhpcyBmbGFnIGhhcyBlZmZlY3Qgb25seSBvbiB0aGUge0BsaW5rICNyZWFkRm9ybWF0SW5mb3JtYXRpb24oKX0gYW5kIHRoZQoJICAgICAqIHtAbGluayAjcmVhZFZlcnNpb24oKX0uIEJlZm9yZSBwcm9jZWVkaW5nIHdpdGgge0BsaW5rICNyZWFkQ29kZXdvcmRzKCl9IHRoZQoJICAgICAqIHtAbGluayAjbWlycm9yKCl9IG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkLgoJICAgICAqCgkgICAgICogQHBhcmFtIG1pcnJvciBXaGV0aGVyIHRvIHJlYWQgdmVyc2lvbiBhbmQgZm9ybWF0IGluZm9ybWF0aW9uIG1pcnJvcmVkLgoJICAgICAqLwoJICAgIEJpdE1hdHJpeFBhcnNlci5wcm90b3R5cGUuc2V0TWlycm9yID0gZnVuY3Rpb24gKGlzTWlycm9yKSB7CgkgICAgICAgIHRoaXMucGFyc2VkVmVyc2lvbiA9IG51bGw7CgkgICAgICAgIHRoaXMucGFyc2VkRm9ybWF0SW5mbyA9IG51bGw7CgkgICAgICAgIHRoaXMuaXNNaXJyb3IgPSBpc01pcnJvcjsKCSAgICB9OwoJICAgIC8qKiBNaXJyb3IgdGhlIGJpdCBtYXRyaXggaW4gb3JkZXIgdG8gYXR0ZW1wdCBhIHNlY29uZCByZWFkaW5nLiAqLwoJICAgIEJpdE1hdHJpeFBhcnNlci5wcm90b3R5cGUubWlycm9yID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgYml0TWF0cml4ID0gdGhpcy5iaXRNYXRyaXg7CgkgICAgICAgIGZvciAodmFyIHggPSAwLCB3aWR0aCA9IGJpdE1hdHJpeC5nZXRXaWR0aCgpOyB4IDwgd2lkdGg7IHgrKykgewoJICAgICAgICAgICAgZm9yICh2YXIgeSA9IHggKyAxLCBoZWlnaHQgPSBiaXRNYXRyaXguZ2V0SGVpZ2h0KCk7IHkgPCBoZWlnaHQ7IHkrKykgewoJICAgICAgICAgICAgICAgIGlmIChiaXRNYXRyaXguZ2V0KHgsIHkpICE9PSBiaXRNYXRyaXguZ2V0KHksIHgpKSB7CgkgICAgICAgICAgICAgICAgICAgIGJpdE1hdHJpeC5mbGlwKHksIHgpOwoJICAgICAgICAgICAgICAgICAgICBiaXRNYXRyaXguZmxpcCh4LCB5KTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHJldHVybiBCaXRNYXRyaXhQYXJzZXI7Cgl9KCkpOwoJQml0TWF0cml4UGFyc2VyJDEuZGVmYXVsdCA9IEJpdE1hdHJpeFBhcnNlcjsKCgl2YXIgRGF0YUJsb2NrJDEgPSB7fTsKCgkvKgoJICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJdmFyIF9fdmFsdWVzJDMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHsKCSAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDsKCSAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTsKCSAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09ICJudW1iZXIiKSByZXR1cm4gewoJICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwOwoJICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9OwoJICAgICAgICB9CgkgICAgfTsKCSAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyAiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4iIDogIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTsKCX07CglPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0YUJsb2NrJDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCXZhciBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSQxID0gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uJDE7CgkvKioKCSAqIDxwPkVuY2Fwc3VsYXRlcyBhIGJsb2NrIG9mIGRhdGEgd2l0aGluIGEgUVIgQ29kZS4gUVIgQ29kZXMgbWF5IHNwbGl0IHRoZWlyIGRhdGEgaW50bwoJICogbXVsdGlwbGUgYmxvY2tzLCBlYWNoIG9mIHdoaWNoIGlzIGEgdW5pdCBvZiBkYXRhIGFuZCBlcnJvci1jb3JyZWN0aW9uIGNvZGV3b3Jkcy4gRWFjaAoJICogaXMgcmVwcmVzZW50ZWQgYnkgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy48L3A+CgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIERhdGFCbG9jayA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBEYXRhQmxvY2sobnVtRGF0YUNvZGV3b3JkcyAvKmludCovLCBjb2Rld29yZHMpIHsKCSAgICAgICAgdGhpcy5udW1EYXRhQ29kZXdvcmRzID0gbnVtRGF0YUNvZGV3b3JkczsKCSAgICAgICAgdGhpcy5jb2Rld29yZHMgPSBjb2Rld29yZHM7CgkgICAgfQoJICAgIC8qKgoJICAgICAqIDxwPldoZW4gUVIgQ29kZXMgdXNlIG11bHRpcGxlIGRhdGEgYmxvY2tzLCB0aGV5IGFyZSBhY3R1YWxseSBpbnRlcmxlYXZlZC4KCSAgICAgKiBUaGF0IGlzLCB0aGUgZmlyc3QgYnl0ZSBvZiBkYXRhIGJsb2NrIDEgdG8gbiBpcyB3cml0dGVuLCB0aGVuIHRoZSBzZWNvbmQgYnl0ZXMsIGFuZCBzbyBvbi4gVGhpcwoJICAgICAqIG1ldGhvZCB3aWxsIHNlcGFyYXRlIHRoZSBkYXRhIGludG8gb3JpZ2luYWwgYmxvY2tzLjwvcD4KCSAgICAgKgoJICAgICAqIEBwYXJhbSByYXdDb2Rld29yZHMgYnl0ZXMgYXMgcmVhZCBkaXJlY3RseSBmcm9tIHRoZSBRUiBDb2RlCgkgICAgICogQHBhcmFtIHZlcnNpb24gdmVyc2lvbiBvZiB0aGUgUVIgQ29kZQoJICAgICAqIEBwYXJhbSBlY0xldmVsIGVycm9yLWNvcnJlY3Rpb24gbGV2ZWwgb2YgdGhlIFFSIENvZGUKCSAgICAgKiBAcmV0dXJuIERhdGFCbG9ja3MgY29udGFpbmluZyBvcmlnaW5hbCBieXRlcywgImRlLWludGVybGVhdmVkIiBmcm9tIHJlcHJlc2VudGF0aW9uIGluIHRoZQoJICAgICAqICAgICAgICAgUVIgQ29kZQoJICAgICAqLwoJICAgIERhdGFCbG9jay5nZXREYXRhQmxvY2tzID0gZnVuY3Rpb24gKHJhd0NvZGV3b3JkcywgdmVyc2lvbiwgZWNMZXZlbCkgewoJICAgICAgICB2YXIgZV8xLCBfYSwgZV8yLCBfYjsKCSAgICAgICAgaWYgKHJhd0NvZGV3b3Jkcy5sZW5ndGggIT09IHZlcnNpb24uZ2V0VG90YWxDb2Rld29yZHMoKSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xJDEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIC8vIEZpZ3VyZSBvdXQgdGhlIG51bWJlciBhbmQgc2l6ZSBvZiBkYXRhIGJsb2NrcyB1c2VkIGJ5IHRoaXMgdmVyc2lvbiBhbmQKCSAgICAgICAgLy8gZXJyb3IgY29ycmVjdGlvbiBsZXZlbAoJICAgICAgICB2YXIgZWNCbG9ja3MgPSB2ZXJzaW9uLmdldEVDQmxvY2tzRm9yTGV2ZWwoZWNMZXZlbCk7CgkgICAgICAgIC8vIEZpcnN0IGNvdW50IHRoZSB0b3RhbCBudW1iZXIgb2YgZGF0YSBibG9ja3MKCSAgICAgICAgdmFyIHRvdGFsQmxvY2tzID0gMDsKCSAgICAgICAgdmFyIGVjQmxvY2tBcnJheSA9IGVjQmxvY2tzLmdldEVDQmxvY2tzKCk7CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICBmb3IgKHZhciBlY0Jsb2NrQXJyYXlfMSA9IF9fdmFsdWVzJDMoZWNCbG9ja0FycmF5KSwgZWNCbG9ja0FycmF5XzFfMSA9IGVjQmxvY2tBcnJheV8xLm5leHQoKTsgIWVjQmxvY2tBcnJheV8xXzEuZG9uZTsgZWNCbG9ja0FycmF5XzFfMSA9IGVjQmxvY2tBcnJheV8xLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciBlY0Jsb2NrID0gZWNCbG9ja0FycmF5XzFfMS52YWx1ZTsKCSAgICAgICAgICAgICAgICB0b3RhbEJsb2NrcyArPSBlY0Jsb2NrLmdldENvdW50KCk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChlY0Jsb2NrQXJyYXlfMV8xICYmICFlY0Jsb2NrQXJyYXlfMV8xLmRvbmUgJiYgKF9hID0gZWNCbG9ja0FycmF5XzEucmV0dXJuKSkgX2EuY2FsbChlY0Jsb2NrQXJyYXlfMSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9CgkgICAgICAgIH0KCSAgICAgICAgLy8gTm93IGVzdGFibGlzaCBEYXRhQmxvY2tzIG9mIHRoZSBhcHByb3ByaWF0ZSBzaXplIGFuZCBudW1iZXIgb2YgZGF0YSBjb2Rld29yZHMKCSAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheSh0b3RhbEJsb2Nrcyk7CgkgICAgICAgIHZhciBudW1SZXN1bHRCbG9ja3MgPSAwOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgZWNCbG9ja0FycmF5XzIgPSBfX3ZhbHVlcyQzKGVjQmxvY2tBcnJheSksIGVjQmxvY2tBcnJheV8yXzEgPSBlY0Jsb2NrQXJyYXlfMi5uZXh0KCk7ICFlY0Jsb2NrQXJyYXlfMl8xLmRvbmU7IGVjQmxvY2tBcnJheV8yXzEgPSBlY0Jsb2NrQXJyYXlfMi5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgZWNCbG9jayA9IGVjQmxvY2tBcnJheV8yXzEudmFsdWU7CgkgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlY0Jsb2NrLmdldENvdW50KCk7IGkrKykgewoJICAgICAgICAgICAgICAgICAgICB2YXIgbnVtRGF0YUNvZGV3b3JkcyA9IGVjQmxvY2suZ2V0RGF0YUNvZGV3b3JkcygpOwoJICAgICAgICAgICAgICAgICAgICB2YXIgbnVtQmxvY2tDb2Rld29yZHMgPSBlY0Jsb2Nrcy5nZXRFQ0NvZGV3b3Jkc1BlckJsb2NrKCkgKyBudW1EYXRhQ29kZXdvcmRzOwoJICAgICAgICAgICAgICAgICAgICByZXN1bHRbbnVtUmVzdWx0QmxvY2tzKytdID0gbmV3IERhdGFCbG9jayhudW1EYXRhQ29kZXdvcmRzLCBuZXcgVWludDhBcnJheShudW1CbG9ja0NvZGV3b3JkcykpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZV8yXzEpIHsgZV8yID0geyBlcnJvcjogZV8yXzEgfTsgfQoJICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgaWYgKGVjQmxvY2tBcnJheV8yXzEgJiYgIWVjQmxvY2tBcnJheV8yXzEuZG9uZSAmJiAoX2IgPSBlY0Jsb2NrQXJyYXlfMi5yZXR1cm4pKSBfYi5jYWxsKGVjQmxvY2tBcnJheV8yKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICAvLyBBbGwgYmxvY2tzIGhhdmUgdGhlIHNhbWUgYW1vdW50IG9mIGRhdGEsIGV4Y2VwdCB0aGF0IHRoZSBsYXN0IG4KCSAgICAgICAgLy8gKHdoZXJlIG4gbWF5IGJlIDApIGhhdmUgMSBtb3JlIGJ5dGUuIEZpZ3VyZSBvdXQgd2hlcmUgdGhlc2Ugc3RhcnQuCgkgICAgICAgIHZhciBzaG9ydGVyQmxvY2tzVG90YWxDb2Rld29yZHMgPSByZXN1bHRbMF0uY29kZXdvcmRzLmxlbmd0aDsKCSAgICAgICAgdmFyIGxvbmdlckJsb2Nrc1N0YXJ0QXQgPSByZXN1bHQubGVuZ3RoIC0gMTsKCSAgICAgICAgLy8gVFlQRVNDUklQVFBPUlQ6IGNoZWNrIGxlbmd0aCBpcyBjb3JyZWN0IGhlcmUKCSAgICAgICAgd2hpbGUgKGxvbmdlckJsb2Nrc1N0YXJ0QXQgPj0gMCkgewoJICAgICAgICAgICAgdmFyIG51bUNvZGV3b3JkcyA9IHJlc3VsdFtsb25nZXJCbG9ja3NTdGFydEF0XS5jb2Rld29yZHMubGVuZ3RoOwoJICAgICAgICAgICAgaWYgKG51bUNvZGV3b3JkcyA9PT0gc2hvcnRlckJsb2Nrc1RvdGFsQ29kZXdvcmRzKSB7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBsb25nZXJCbG9ja3NTdGFydEF0LS07CgkgICAgICAgIH0KCSAgICAgICAgbG9uZ2VyQmxvY2tzU3RhcnRBdCsrOwoJICAgICAgICB2YXIgc2hvcnRlckJsb2Nrc051bURhdGFDb2Rld29yZHMgPSBzaG9ydGVyQmxvY2tzVG90YWxDb2Rld29yZHMgLSBlY0Jsb2Nrcy5nZXRFQ0NvZGV3b3Jkc1BlckJsb2NrKCk7CgkgICAgICAgIC8vIFRoZSBsYXN0IGVsZW1lbnRzIG9mIHJlc3VsdCBtYXkgYmUgMSBlbGVtZW50IGxvbmdlcgoJICAgICAgICAvLyBmaXJzdCBmaWxsIG91dCBhcyBtYW55IGVsZW1lbnRzIGFzIGFsbCBvZiB0aGVtIGhhdmUKCSAgICAgICAgdmFyIHJhd0NvZGV3b3Jkc09mZnNldCA9IDA7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2hvcnRlckJsb2Nrc051bURhdGFDb2Rld29yZHM7IGkrKykgewoJICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1SZXN1bHRCbG9ja3M7IGorKykgewoJICAgICAgICAgICAgICAgIHJlc3VsdFtqXS5jb2Rld29yZHNbaV0gPSByYXdDb2Rld29yZHNbcmF3Q29kZXdvcmRzT2Zmc2V0KytdOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIC8vIEZpbGwgb3V0IHRoZSBsYXN0IGRhdGEgYmxvY2sgaW4gdGhlIGxvbmdlciBvbmVzCgkgICAgICAgIGZvciAodmFyIGogPSBsb25nZXJCbG9ja3NTdGFydEF0OyBqIDwgbnVtUmVzdWx0QmxvY2tzOyBqKyspIHsKCSAgICAgICAgICAgIHJlc3VsdFtqXS5jb2Rld29yZHNbc2hvcnRlckJsb2Nrc051bURhdGFDb2Rld29yZHNdID0gcmF3Q29kZXdvcmRzW3Jhd0NvZGV3b3Jkc09mZnNldCsrXTsKCSAgICAgICAgfQoJICAgICAgICAvLyBOb3cgYWRkIGluIGVycm9yIGNvcnJlY3Rpb24gYmxvY2tzCgkgICAgICAgIHZhciBtYXggPSByZXN1bHRbMF0uY29kZXdvcmRzLmxlbmd0aDsKCSAgICAgICAgZm9yICh2YXIgaSA9IHNob3J0ZXJCbG9ja3NOdW1EYXRhQ29kZXdvcmRzOyBpIDwgbWF4OyBpKyspIHsKCSAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbnVtUmVzdWx0QmxvY2tzOyBqKyspIHsKCSAgICAgICAgICAgICAgICB2YXIgaU9mZnNldCA9IGogPCBsb25nZXJCbG9ja3NTdGFydEF0ID8gaSA6IGkgKyAxOwoJICAgICAgICAgICAgICAgIHJlc3VsdFtqXS5jb2Rld29yZHNbaU9mZnNldF0gPSByYXdDb2Rld29yZHNbcmF3Q29kZXdvcmRzT2Zmc2V0KytdOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByZXN1bHQ7CgkgICAgfTsKCSAgICBEYXRhQmxvY2sucHJvdG90eXBlLmdldE51bURhdGFDb2Rld29yZHMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLm51bURhdGFDb2Rld29yZHM7CgkgICAgfTsKCSAgICBEYXRhQmxvY2sucHJvdG90eXBlLmdldENvZGV3b3JkcyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuY29kZXdvcmRzOwoJICAgIH07CgkgICAgcmV0dXJuIERhdGFCbG9jazsKCX0oKSk7CglEYXRhQmxvY2skMS5kZWZhdWx0ID0gRGF0YUJsb2NrOwoKCXZhciBEZWNvZGVkQml0U3RyZWFtUGFyc2VyJDEgPSB7fTsKCgl2YXIgQml0U291cmNlJDEgPSB7fTsKCgkvKgoJICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KEJpdFNvdXJjZSQxLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbiB7Ki8KCXZhciBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSA9IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiQxOwoJLyoqCgkgKiA8cD5UaGlzIHByb3ZpZGVzIGFuIGVhc3kgYWJzdHJhY3Rpb24gdG8gcmVhZCBiaXRzIGF0IGEgdGltZSBmcm9tIGEgc2VxdWVuY2Ugb2YgYnl0ZXMsIHdoZXJlIHRoZQoJICogbnVtYmVyIG9mIGJpdHMgcmVhZCBpcyBub3Qgb2Z0ZW4gYSBtdWx0aXBsZSBvZiA4LjwvcD4KCSAqCgkgKiA8cD5UaGlzIGNsYXNzIGlzIHRocmVhZC1zYWZlIGJ1dCBub3QgcmVlbnRyYW50IC0tIHVubGVzcyB0aGUgY2FsbGVyIG1vZGlmaWVzIHRoZSBieXRlcyBhcnJheQoJICogaXQgcGFzc2VkIGluLCBpbiB3aGljaCBjYXNlIGFsbCBiZXRzIGFyZSBvZmYuPC9wPgoJICoKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKi8KCXZhciBCaXRTb3VyY2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgLyoqCgkgICAgICogQHBhcmFtIGJ5dGVzIGJ5dGVzIGZyb20gd2hpY2ggdGhpcyB3aWxsIHJlYWQgYml0cy4gQml0cyB3aWxsIGJlIHJlYWQgZnJvbSB0aGUgZmlyc3QgYnl0ZSBmaXJzdC4KCSAgICAgKiBCaXRzIGFyZSByZWFkIHdpdGhpbiBhIGJ5dGUgZnJvbSBtb3N0LXNpZ25pZmljYW50IHRvIGxlYXN0LXNpZ25pZmljYW50IGJpdC4KCSAgICAgKi8KCSAgICBmdW5jdGlvbiBCaXRTb3VyY2UoYnl0ZXMpIHsKCSAgICAgICAgdGhpcy5ieXRlcyA9IGJ5dGVzOwoJICAgICAgICB0aGlzLmJ5dGVPZmZzZXQgPSAwOwoJICAgICAgICB0aGlzLmJpdE9mZnNldCA9IDA7CgkgICAgfQoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gaW5kZXggb2YgbmV4dCBiaXQgaW4gY3VycmVudCBieXRlIHdoaWNoIHdvdWxkIGJlIHJlYWQgYnkgdGhlIG5leHQgY2FsbCB0byB7QGxpbmsgI3JlYWRCaXRzKGludCl9LgoJICAgICAqLwoJICAgIEJpdFNvdXJjZS5wcm90b3R5cGUuZ2V0Qml0T2Zmc2V0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5iaXRPZmZzZXQ7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIGluZGV4IG9mIG5leHQgYnl0ZSBpbiBpbnB1dCBieXRlIGFycmF5IHdoaWNoIHdvdWxkIGJlIHJlYWQgYnkgdGhlIG5leHQgY2FsbCB0byB7QGxpbmsgI3JlYWRCaXRzKGludCl9LgoJICAgICAqLwoJICAgIEJpdFNvdXJjZS5wcm90b3R5cGUuZ2V0Qnl0ZU9mZnNldCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuYnl0ZU9mZnNldDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEBwYXJhbSBudW1CaXRzIG51bWJlciBvZiBiaXRzIHRvIHJlYWQKCSAgICAgKiBAcmV0dXJuIGludCByZXByZXNlbnRpbmcgdGhlIGJpdHMgcmVhZC4gVGhlIGJpdHMgd2lsbCBhcHBlYXIgYXMgdGhlIGxlYXN0LXNpZ25pZmljYW50CgkgICAgICogICAgICAgICBiaXRzIG9mIHRoZSBpbnQKCSAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBudW1CaXRzIGlzbid0IGluIFsxLDMyXSBvciBtb3JlIHRoYW4gaXMgYXZhaWxhYmxlCgkgICAgICovCgkgICAgQml0U291cmNlLnByb3RvdHlwZS5yZWFkQml0cyA9IGZ1bmN0aW9uIChudW1CaXRzIC8qaW50Ki8pIHsKCSAgICAgICAgaWYgKG51bUJpdHMgPCAxIHx8IG51bUJpdHMgPiAzMiB8fCBudW1CaXRzID4gdGhpcy5hdmFpbGFibGUoKSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJycgKyBudW1CaXRzKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgcmVzdWx0ID0gMDsKCSAgICAgICAgdmFyIGJpdE9mZnNldCA9IHRoaXMuYml0T2Zmc2V0OwoJICAgICAgICB2YXIgYnl0ZU9mZnNldCA9IHRoaXMuYnl0ZU9mZnNldDsKCSAgICAgICAgdmFyIGJ5dGVzID0gdGhpcy5ieXRlczsKCSAgICAgICAgLy8gRmlyc3QsIHJlYWQgcmVtYWluZGVyIGZyb20gY3VycmVudCBieXRlCgkgICAgICAgIGlmIChiaXRPZmZzZXQgPiAwKSB7CgkgICAgICAgICAgICB2YXIgYml0c0xlZnQgPSA4IC0gYml0T2Zmc2V0OwoJICAgICAgICAgICAgdmFyIHRvUmVhZCA9IG51bUJpdHMgPCBiaXRzTGVmdCA/IG51bUJpdHMgOiBiaXRzTGVmdDsKCSAgICAgICAgICAgIHZhciBiaXRzVG9Ob3RSZWFkID0gYml0c0xlZnQgLSB0b1JlYWQ7CgkgICAgICAgICAgICB2YXIgbWFzayA9ICgweEZGID4+ICg4IC0gdG9SZWFkKSkgPDwgYml0c1RvTm90UmVhZDsKCSAgICAgICAgICAgIHJlc3VsdCA9IChieXRlc1tieXRlT2Zmc2V0XSAmIG1hc2spID4+IGJpdHNUb05vdFJlYWQ7CgkgICAgICAgICAgICBudW1CaXRzIC09IHRvUmVhZDsKCSAgICAgICAgICAgIGJpdE9mZnNldCArPSB0b1JlYWQ7CgkgICAgICAgICAgICBpZiAoYml0T2Zmc2V0ID09PSA4KSB7CgkgICAgICAgICAgICAgICAgYml0T2Zmc2V0ID0gMDsKCSAgICAgICAgICAgICAgICBieXRlT2Zmc2V0Kys7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgLy8gTmV4dCByZWFkIHdob2xlIGJ5dGVzCgkgICAgICAgIGlmIChudW1CaXRzID4gMCkgewoJICAgICAgICAgICAgd2hpbGUgKG51bUJpdHMgPj0gOCkgewoJICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgPDwgOCkgfCAoYnl0ZXNbYnl0ZU9mZnNldF0gJiAweEZGKTsKCSAgICAgICAgICAgICAgICBieXRlT2Zmc2V0Kys7CgkgICAgICAgICAgICAgICAgbnVtQml0cyAtPSA4OwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgLy8gRmluYWxseSByZWFkIGEgcGFydGlhbCBieXRlCgkgICAgICAgICAgICBpZiAobnVtQml0cyA+IDApIHsKCSAgICAgICAgICAgICAgICB2YXIgYml0c1RvTm90UmVhZCA9IDggLSBudW1CaXRzOwoJICAgICAgICAgICAgICAgIHZhciBtYXNrID0gKDB4RkYgPj4gYml0c1RvTm90UmVhZCkgPDwgYml0c1RvTm90UmVhZDsKCSAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0IDw8IG51bUJpdHMpIHwgKChieXRlc1tieXRlT2Zmc2V0XSAmIG1hc2spID4+IGJpdHNUb05vdFJlYWQpOwoJICAgICAgICAgICAgICAgIGJpdE9mZnNldCArPSBudW1CaXRzOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHRoaXMuYml0T2Zmc2V0ID0gYml0T2Zmc2V0OwoJICAgICAgICB0aGlzLmJ5dGVPZmZzZXQgPSBieXRlT2Zmc2V0OwoJICAgICAgICByZXR1cm4gcmVzdWx0OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiBudW1iZXIgb2YgYml0cyB0aGF0IGNhbiBiZSByZWFkIHN1Y2Nlc3NmdWxseQoJICAgICAqLwoJICAgIEJpdFNvdXJjZS5wcm90b3R5cGUuYXZhaWxhYmxlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gOCAqICh0aGlzLmJ5dGVzLmxlbmd0aCAtIHRoaXMuYnl0ZU9mZnNldCkgLSB0aGlzLmJpdE9mZnNldDsKCSAgICB9OwoJICAgIHJldHVybiBCaXRTb3VyY2U7Cgl9KCkpOwoJQml0U291cmNlJDEuZGVmYXVsdCA9IEJpdFNvdXJjZTsKCgl2YXIgRGVjb2RlclJlc3VsdCQxID0ge307CgoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShEZWNvZGVyUmVzdWx0JDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcuY29tbW9uIHsqLwoJLyppbXBvcnQgamF2YS51dGlsLkxpc3Q7Ki8KCS8qKgoJICogPHA+RW5jYXBzdWxhdGVzIHRoZSByZXN1bHQgb2YgZGVjb2RpbmcgYSBtYXRyaXggb2YgYml0cy4gVGhpcyB0eXBpY2FsbHkKCSAqIGFwcGxpZXMgdG8gMkQgYmFyY29kZSBmb3JtYXRzLiBGb3Igbm93IGl0IGNvbnRhaW5zIHRoZSByYXcgYnl0ZXMgb2J0YWluZWQsCgkgKiBhcyB3ZWxsIGFzIGEgU3RyaW5nIGludGVycHJldGF0aW9uIG9mIHRob3NlIGJ5dGVzLCBpZiBhcHBsaWNhYmxlLjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgRGVjb2RlclJlc3VsdCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICAvLyBwdWJsaWMgY29uc3RydWN0b3IocmF3Qnl0ZXM6IFVpbnQ4QXJyYXksCgkgICAgLy8gICAgICAgICAgICAgICAgICAgICAgdGV4dDogc3RyaW5nLAoJICAgIC8vICAgICAgICAgICAgICAgICAgICAgIExpc3Q8VWludDhBcnJheT4gYnl0ZVNlZ21lbnRzLAoJICAgIC8vICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBlY0xldmVsKSB7CgkgICAgLy8gICB0aGlzKHJhd0J5dGVzLCB0ZXh0LCBieXRlU2VnbWVudHMsIGVjTGV2ZWwsIC0xLCAtMSkKCSAgICAvLyB9CgkgICAgZnVuY3Rpb24gRGVjb2RlclJlc3VsdChyYXdCeXRlcywgdGV4dCwgYnl0ZVNlZ21lbnRzLCBlY0xldmVsLCBzdHJ1Y3R1cmVkQXBwZW5kU2VxdWVuY2VOdW1iZXIsIHN0cnVjdHVyZWRBcHBlbmRQYXJpdHkpIHsKCSAgICAgICAgaWYgKHN0cnVjdHVyZWRBcHBlbmRTZXF1ZW5jZU51bWJlciA9PT0gdm9pZCAwKSB7IHN0cnVjdHVyZWRBcHBlbmRTZXF1ZW5jZU51bWJlciA9IC0xOyB9CgkgICAgICAgIGlmIChzdHJ1Y3R1cmVkQXBwZW5kUGFyaXR5ID09PSB2b2lkIDApIHsgc3RydWN0dXJlZEFwcGVuZFBhcml0eSA9IC0xOyB9CgkgICAgICAgIHRoaXMucmF3Qnl0ZXMgPSByYXdCeXRlczsKCSAgICAgICAgdGhpcy50ZXh0ID0gdGV4dDsKCSAgICAgICAgdGhpcy5ieXRlU2VnbWVudHMgPSBieXRlU2VnbWVudHM7CgkgICAgICAgIHRoaXMuZWNMZXZlbCA9IGVjTGV2ZWw7CgkgICAgICAgIHRoaXMuc3RydWN0dXJlZEFwcGVuZFNlcXVlbmNlTnVtYmVyID0gc3RydWN0dXJlZEFwcGVuZFNlcXVlbmNlTnVtYmVyOwoJICAgICAgICB0aGlzLnN0cnVjdHVyZWRBcHBlbmRQYXJpdHkgPSBzdHJ1Y3R1cmVkQXBwZW5kUGFyaXR5OwoJICAgICAgICB0aGlzLm51bUJpdHMgPSAocmF3Qnl0ZXMgPT09IHVuZGVmaW5lZCB8fCByYXdCeXRlcyA9PT0gbnVsbCkgPyAwIDogOCAqIHJhd0J5dGVzLmxlbmd0aDsKCSAgICB9CgkgICAgLyoqCgkgICAgICogQHJldHVybiByYXcgYnl0ZXMgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQsIG9yIHtAY29kZSBudWxsfSBpZiBub3QgYXBwbGljYWJsZQoJICAgICAqLwoJICAgIERlY29kZXJSZXN1bHQucHJvdG90eXBlLmdldFJhd0J5dGVzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5yYXdCeXRlczsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gaG93IG1hbnkgYml0cyBvZiB7QGxpbmsgI2dldFJhd0J5dGVzKCl9IGFyZSB2YWxpZDsgdHlwaWNhbGx5IDggdGltZXMgaXRzIGxlbmd0aAoJICAgICAqIEBzaW5jZSAzLjMuMAoJICAgICAqLwoJICAgIERlY29kZXJSZXN1bHQucHJvdG90eXBlLmdldE51bUJpdHMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLm51bUJpdHM7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcGFyYW0gbnVtQml0cyBvdmVycmlkZXMgdGhlIG51bWJlciBvZiBiaXRzIHRoYXQgYXJlIHZhbGlkIGluIHtAbGluayAjZ2V0UmF3Qnl0ZXMoKX0KCSAgICAgKiBAc2luY2UgMy4zLjAKCSAgICAgKi8KCSAgICBEZWNvZGVyUmVzdWx0LnByb3RvdHlwZS5zZXROdW1CaXRzID0gZnVuY3Rpb24gKG51bUJpdHMgLyppbnQqLykgewoJICAgICAgICB0aGlzLm51bUJpdHMgPSBudW1CaXRzOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZXN1bHQKCSAgICAgKi8KCSAgICBEZWNvZGVyUmVzdWx0LnByb3RvdHlwZS5nZXRUZXh0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy50ZXh0OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiBsaXN0IG9mIGJ5dGUgc2VnbWVudHMgaW4gdGhlIHJlc3VsdCwgb3Ige0Bjb2RlIG51bGx9IGlmIG5vdCBhcHBsaWNhYmxlCgkgICAgICovCgkgICAgRGVjb2RlclJlc3VsdC5wcm90b3R5cGUuZ2V0Qnl0ZVNlZ21lbnRzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5ieXRlU2VnbWVudHM7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIG5hbWUgb2YgZXJyb3IgY29ycmVjdGlvbiBsZXZlbCB1c2VkLCBvciB7QGNvZGUgbnVsbH0gaWYgbm90IGFwcGxpY2FibGUKCSAgICAgKi8KCSAgICBEZWNvZGVyUmVzdWx0LnByb3RvdHlwZS5nZXRFQ0xldmVsID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5lY0xldmVsOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiBudW1iZXIgb2YgZXJyb3JzIGNvcnJlY3RlZCwgb3Ige0Bjb2RlIG51bGx9IGlmIG5vdCBhcHBsaWNhYmxlCgkgICAgICovCgkgICAgRGVjb2RlclJlc3VsdC5wcm90b3R5cGUuZ2V0RXJyb3JzQ29ycmVjdGVkID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5lcnJvcnNDb3JyZWN0ZWQ7CgkgICAgfTsKCSAgICBEZWNvZGVyUmVzdWx0LnByb3RvdHlwZS5zZXRFcnJvcnNDb3JyZWN0ZWQgPSBmdW5jdGlvbiAoZXJyb3JzQ29ycmVjdGVkIC8qSW50ZWdlciovKSB7CgkgICAgICAgIHRoaXMuZXJyb3JzQ29ycmVjdGVkID0gZXJyb3JzQ29ycmVjdGVkOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiBudW1iZXIgb2YgZXJhc3VyZXMgY29ycmVjdGVkLCBvciB7QGNvZGUgbnVsbH0gaWYgbm90IGFwcGxpY2FibGUKCSAgICAgKi8KCSAgICBEZWNvZGVyUmVzdWx0LnByb3RvdHlwZS5nZXRFcmFzdXJlcyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZXJhc3VyZXM7CgkgICAgfTsKCSAgICBEZWNvZGVyUmVzdWx0LnByb3RvdHlwZS5zZXRFcmFzdXJlcyA9IGZ1bmN0aW9uIChlcmFzdXJlcyAvKkludGVnZXIqLykgewoJICAgICAgICB0aGlzLmVyYXN1cmVzID0gZXJhc3VyZXM7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIGFyYml0cmFyeSBhZGRpdGlvbmFsIG1ldGFkYXRhCgkgICAgICovCgkgICAgRGVjb2RlclJlc3VsdC5wcm90b3R5cGUuZ2V0T3RoZXIgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLm90aGVyOwoJICAgIH07CgkgICAgRGVjb2RlclJlc3VsdC5wcm90b3R5cGUuc2V0T3RoZXIgPSBmdW5jdGlvbiAob3RoZXIpIHsKCSAgICAgICAgdGhpcy5vdGhlciA9IG90aGVyOwoJICAgIH07CgkgICAgRGVjb2RlclJlc3VsdC5wcm90b3R5cGUuaGFzU3RydWN0dXJlZEFwcGVuZCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuc3RydWN0dXJlZEFwcGVuZFBhcml0eSA+PSAwICYmIHRoaXMuc3RydWN0dXJlZEFwcGVuZFNlcXVlbmNlTnVtYmVyID49IDA7CgkgICAgfTsKCSAgICBEZWNvZGVyUmVzdWx0LnByb3RvdHlwZS5nZXRTdHJ1Y3R1cmVkQXBwZW5kUGFyaXR5ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5zdHJ1Y3R1cmVkQXBwZW5kUGFyaXR5OwoJICAgIH07CgkgICAgRGVjb2RlclJlc3VsdC5wcm90b3R5cGUuZ2V0U3RydWN0dXJlZEFwcGVuZFNlcXVlbmNlTnVtYmVyID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5zdHJ1Y3R1cmVkQXBwZW5kU2VxdWVuY2VOdW1iZXI7CgkgICAgfTsKCSAgICByZXR1cm4gRGVjb2RlclJlc3VsdDsKCX0oKSk7CglEZWNvZGVyUmVzdWx0JDEuZGVmYXVsdCA9IERlY29kZXJSZXN1bHQ7CgoJdmFyIE1vZGUgPSB7fTsKCgkoZnVuY3Rpb24gKGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJZXhwb3J0cy5Nb2RlVmFsdWVzID0gdm9pZCAwOwoJdmFyIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xID0gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uJDE7Cgl2YXIgTW9kZVZhbHVlczsKCShmdW5jdGlvbiAoTW9kZVZhbHVlcykgewoJICAgIE1vZGVWYWx1ZXNbTW9kZVZhbHVlc1siVEVSTUlOQVRPUiJdID0gMF0gPSAiVEVSTUlOQVRPUiI7CgkgICAgTW9kZVZhbHVlc1tNb2RlVmFsdWVzWyJOVU1FUklDIl0gPSAxXSA9ICJOVU1FUklDIjsKCSAgICBNb2RlVmFsdWVzW01vZGVWYWx1ZXNbIkFMUEhBTlVNRVJJQyJdID0gMl0gPSAiQUxQSEFOVU1FUklDIjsKCSAgICBNb2RlVmFsdWVzW01vZGVWYWx1ZXNbIlNUUlVDVFVSRURfQVBQRU5EIl0gPSAzXSA9ICJTVFJVQ1RVUkVEX0FQUEVORCI7CgkgICAgTW9kZVZhbHVlc1tNb2RlVmFsdWVzWyJCWVRFIl0gPSA0XSA9ICJCWVRFIjsKCSAgICBNb2RlVmFsdWVzW01vZGVWYWx1ZXNbIkVDSSJdID0gNV0gPSAiRUNJIjsKCSAgICBNb2RlVmFsdWVzW01vZGVWYWx1ZXNbIktBTkpJIl0gPSA2XSA9ICJLQU5KSSI7CgkgICAgTW9kZVZhbHVlc1tNb2RlVmFsdWVzWyJGTkMxX0ZJUlNUX1BPU0lUSU9OIl0gPSA3XSA9ICJGTkMxX0ZJUlNUX1BPU0lUSU9OIjsKCSAgICBNb2RlVmFsdWVzW01vZGVWYWx1ZXNbIkZOQzFfU0VDT05EX1BPU0lUSU9OIl0gPSA4XSA9ICJGTkMxX1NFQ09ORF9QT1NJVElPTiI7CgkgICAgLyoqIFNlZSBHQlQgMTgyODQtMjAwMDsgIkhhbnppIiBpcyBhIHRyYW5zbGl0ZXJhdGlvbiBvZiB0aGlzIG1vZGUgbmFtZS4gKi8KCSAgICBNb2RlVmFsdWVzW01vZGVWYWx1ZXNbIkhBTlpJIl0gPSA5XSA9ICJIQU5aSSI7Cgl9KShNb2RlVmFsdWVzID0gZXhwb3J0cy5Nb2RlVmFsdWVzIHx8IChleHBvcnRzLk1vZGVWYWx1ZXMgPSB7fSkpOwoJLyoqCgkgKiA8cD5TZWUgSVNPIDE4MDA0OjIwMDYsIDYuNC4xLCBUYWJsZXMgMiBhbmQgMy4gVGhpcyBlbnVtIGVuY2Fwc3VsYXRlcyB0aGUgdmFyaW91cyBtb2RlcyBpbiB3aGljaAoJICogZGF0YSBjYW4gYmUgZW5jb2RlZCB0byBiaXRzIGluIHRoZSBRUiBjb2RlIHN0YW5kYXJkLjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgTW9kZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBNb2RlKHZhbHVlLCBzdHJpbmdWYWx1ZSwgY2hhcmFjdGVyQ291bnRCaXRzRm9yVmVyc2lvbnMsIGJpdHMgLyppbnQqLykgewoJICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CgkgICAgICAgIHRoaXMuc3RyaW5nVmFsdWUgPSBzdHJpbmdWYWx1ZTsKCSAgICAgICAgdGhpcy5jaGFyYWN0ZXJDb3VudEJpdHNGb3JWZXJzaW9ucyA9IGNoYXJhY3RlckNvdW50Qml0c0ZvclZlcnNpb25zOwoJICAgICAgICB0aGlzLmJpdHMgPSBiaXRzOwoJICAgICAgICBNb2RlLkZPUl9CSVRTLnNldChiaXRzLCB0aGlzKTsKCSAgICAgICAgTW9kZS5GT1JfVkFMVUUuc2V0KHZhbHVlLCB0aGlzKTsKCSAgICB9CgkgICAgLyoqCgkgICAgICogQHBhcmFtIGJpdHMgZm91ciBiaXRzIGVuY29kaW5nIGEgUVIgQ29kZSBkYXRhIG1vZGUKCSAgICAgKiBAcmV0dXJuIE1vZGUgZW5jb2RlZCBieSB0aGVzZSBiaXRzCgkgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgYml0cyBkbyBub3QgY29ycmVzcG9uZCB0byBhIGtub3duIG1vZGUKCSAgICAgKi8KCSAgICBNb2RlLmZvckJpdHMgPSBmdW5jdGlvbiAoYml0cyAvKmludCovKSB7CgkgICAgICAgIHZhciBtb2RlID0gTW9kZS5GT1JfQklUUy5nZXQoYml0cyk7CgkgICAgICAgIGlmICh1bmRlZmluZWQgPT09IG1vZGUpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG1vZGU7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcGFyYW0gdmVyc2lvbiB2ZXJzaW9uIGluIHF1ZXN0aW9uCgkgICAgICogQHJldHVybiBudW1iZXIgb2YgYml0cyB1c2VkLCBpbiB0aGlzIFFSIENvZGUgc3ltYm9sIHtAbGluayBWZXJzaW9ufSwgdG8gZW5jb2RlIHRoZQoJICAgICAqICAgICAgICAgY291bnQgb2YgY2hhcmFjdGVycyB0aGF0IHdpbGwgZm9sbG93IGVuY29kZWQgaW4gdGhpcyBNb2RlCgkgICAgICovCgkgICAgTW9kZS5wcm90b3R5cGUuZ2V0Q2hhcmFjdGVyQ291bnRCaXRzID0gZnVuY3Rpb24gKHZlcnNpb24pIHsKCSAgICAgICAgdmFyIHZlcnNpb25OdW1iZXIgPSB2ZXJzaW9uLmdldFZlcnNpb25OdW1iZXIoKTsKCSAgICAgICAgdmFyIG9mZnNldDsKCSAgICAgICAgaWYgKHZlcnNpb25OdW1iZXIgPD0gOSkgewoJICAgICAgICAgICAgb2Zmc2V0ID0gMDsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIGlmICh2ZXJzaW9uTnVtYmVyIDw9IDI2KSB7CgkgICAgICAgICAgICBvZmZzZXQgPSAxOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgb2Zmc2V0ID0gMjsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdGhpcy5jaGFyYWN0ZXJDb3VudEJpdHNGb3JWZXJzaW9uc1tvZmZzZXRdOwoJICAgIH07CgkgICAgTW9kZS5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnZhbHVlOwoJICAgIH07CgkgICAgTW9kZS5wcm90b3R5cGUuZ2V0Qml0cyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuYml0czsKCSAgICB9OwoJICAgIE1vZGUucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIChvKSB7CgkgICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBNb2RlKSkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIHZhciBvdGhlciA9IG87CgkgICAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSBvdGhlci52YWx1ZTsKCSAgICB9OwoJICAgIE1vZGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmdWYWx1ZTsKCSAgICB9OwoJICAgIE1vZGUuRk9SX0JJVFMgPSBuZXcgTWFwKCk7CgkgICAgTW9kZS5GT1JfVkFMVUUgPSBuZXcgTWFwKCk7CgkgICAgTW9kZS5URVJNSU5BVE9SID0gbmV3IE1vZGUoTW9kZVZhbHVlcy5URVJNSU5BVE9SLCAnVEVSTUlOQVRPUicsIEludDMyQXJyYXkuZnJvbShbMCwgMCwgMF0pLCAweDAwKTsgLy8gTm90IHJlYWxseSBhIG1vZGUuLi4KCSAgICBNb2RlLk5VTUVSSUMgPSBuZXcgTW9kZShNb2RlVmFsdWVzLk5VTUVSSUMsICdOVU1FUklDJywgSW50MzJBcnJheS5mcm9tKFsxMCwgMTIsIDE0XSksIDB4MDEpOwoJICAgIE1vZGUuQUxQSEFOVU1FUklDID0gbmV3IE1vZGUoTW9kZVZhbHVlcy5BTFBIQU5VTUVSSUMsICdBTFBIQU5VTUVSSUMnLCBJbnQzMkFycmF5LmZyb20oWzksIDExLCAxM10pLCAweDAyKTsKCSAgICBNb2RlLlNUUlVDVFVSRURfQVBQRU5EID0gbmV3IE1vZGUoTW9kZVZhbHVlcy5TVFJVQ1RVUkVEX0FQUEVORCwgJ1NUUlVDVFVSRURfQVBQRU5EJywgSW50MzJBcnJheS5mcm9tKFswLCAwLCAwXSksIDB4MDMpOyAvLyBOb3Qgc3VwcG9ydGVkCgkgICAgTW9kZS5CWVRFID0gbmV3IE1vZGUoTW9kZVZhbHVlcy5CWVRFLCAnQllURScsIEludDMyQXJyYXkuZnJvbShbOCwgMTYsIDE2XSksIDB4MDQpOwoJICAgIE1vZGUuRUNJID0gbmV3IE1vZGUoTW9kZVZhbHVlcy5FQ0ksICdFQ0knLCBJbnQzMkFycmF5LmZyb20oWzAsIDAsIDBdKSwgMHgwNyk7IC8vIGNoYXJhY3RlciBjb3VudHMgZG9uJ3QgYXBwbHkKCSAgICBNb2RlLktBTkpJID0gbmV3IE1vZGUoTW9kZVZhbHVlcy5LQU5KSSwgJ0tBTkpJJywgSW50MzJBcnJheS5mcm9tKFs4LCAxMCwgMTJdKSwgMHgwOCk7CgkgICAgTW9kZS5GTkMxX0ZJUlNUX1BPU0lUSU9OID0gbmV3IE1vZGUoTW9kZVZhbHVlcy5GTkMxX0ZJUlNUX1BPU0lUSU9OLCAnRk5DMV9GSVJTVF9QT1NJVElPTicsIEludDMyQXJyYXkuZnJvbShbMCwgMCwgMF0pLCAweDA1KTsKCSAgICBNb2RlLkZOQzFfU0VDT05EX1BPU0lUSU9OID0gbmV3IE1vZGUoTW9kZVZhbHVlcy5GTkMxX1NFQ09ORF9QT1NJVElPTiwgJ0ZOQzFfU0VDT05EX1BPU0lUSU9OJywgSW50MzJBcnJheS5mcm9tKFswLCAwLCAwXSksIDB4MDkpOwoJICAgIC8qKiBTZWUgR0JUIDE4Mjg0LTIwMDA7ICJIYW56aSIgaXMgYSB0cmFuc2xpdGVyYXRpb24gb2YgdGhpcyBtb2RlIG5hbWUuICovCgkgICAgTW9kZS5IQU5aSSA9IG5ldyBNb2RlKE1vZGVWYWx1ZXMuSEFOWkksICdIQU5aSScsIEludDMyQXJyYXkuZnJvbShbOCwgMTAsIDEyXSksIDB4MEQpOwoJICAgIHJldHVybiBNb2RlOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IE1vZGU7CgoJfShNb2RlKSk7CgoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShEZWNvZGVkQml0U3RyZWFtUGFyc2VyJDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcucXJjb2RlLmRlY29kZXIgeyovCgl2YXIgQml0U291cmNlXzEgPSBCaXRTb3VyY2UkMTsKCXZhciBDaGFyYWN0ZXJTZXRFQ0lfMSA9IENoYXJhY3RlclNldEVDSTsKCXZhciBEZWNvZGVyUmVzdWx0XzEgPSBEZWNvZGVyUmVzdWx0JDE7Cgl2YXIgU3RyaW5nVXRpbHNfMSA9IFN0cmluZ1V0aWxzJDE7Cgl2YXIgRm9ybWF0RXhjZXB0aW9uXzEgPSBGb3JtYXRFeGNlcHRpb24kMTsKCXZhciBTdHJpbmdCdWlsZGVyXzEgPSBTdHJpbmdCdWlsZGVyJDE7Cgl2YXIgU3RyaW5nRW5jb2RpbmdfMSA9IFN0cmluZ0VuY29kaW5nJDE7Cgl2YXIgTW9kZV8xID0gTW9kZTsKCS8qaW1wb3J0IGphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbjsqLwoJLyppbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsqLwoJLyppbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ki8KCS8qaW1wb3J0IGphdmEudXRpbC5MaXN0OyovCgkvKmltcG9ydCBqYXZhLnV0aWwuTWFwOyovCgkvKioKCSAqIDxwPlFSIENvZGVzIGNhbiBlbmNvZGUgdGV4dCBhcyBiaXRzIGluIG9uZSBvZiBzZXZlcmFsIG1vZGVzLCBhbmQgY2FuIHVzZSBtdWx0aXBsZSBtb2RlcwoJICogaW4gb25lIFFSIENvZGUuIFRoaXMgY2xhc3MgZGVjb2RlcyB0aGUgYml0cyBiYWNrIGludG8gdGV4dC48L3A+CgkgKgoJICogPHA+U2VlIElTTyAxODAwNDoyMDA2LCA2LjQuMyAtIDYuNC43PC9wPgoJICoKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKi8KCXZhciBEZWNvZGVkQml0U3RyZWFtUGFyc2VyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIERlY29kZWRCaXRTdHJlYW1QYXJzZXIoKSB7CgkgICAgfQoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuZGVjb2RlID0gZnVuY3Rpb24gKGJ5dGVzLCB2ZXJzaW9uLCBlY0xldmVsLCBoaW50cykgewoJICAgICAgICB2YXIgYml0cyA9IG5ldyBCaXRTb3VyY2VfMS5kZWZhdWx0KGJ5dGVzKTsKCSAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWlsZGVyXzEuZGVmYXVsdCgpOwoJICAgICAgICB2YXIgYnl0ZVNlZ21lbnRzID0gbmV3IEFycmF5KCk7IC8vIDEKCSAgICAgICAgLy8gVFlQRVNDUklQVFBPUlQ6IEkgZG8gbm90IHVzZSBjb25zdHJ1Y3RvciB3aXRoIHNpemUgMSBhcyBpbiBvcmlnaW5hbCBKYXZhIG1lYW5zIGNhcGFjaXR5IGFuZCB0aGUgYXJyYXkgbGVuZ3RoIGlzIGNoZWNrZWQgYmVsb3cKCSAgICAgICAgdmFyIHN5bWJvbFNlcXVlbmNlID0gLTE7CgkgICAgICAgIHZhciBwYXJpdHlEYXRhID0gLTE7CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICB2YXIgY3VycmVudENoYXJhY3RlclNldEVDSSA9IG51bGw7CgkgICAgICAgICAgICB2YXIgZmMxSW5FZmZlY3QgPSBmYWxzZTsKCSAgICAgICAgICAgIHZhciBtb2RlID0gdm9pZCAwOwoJICAgICAgICAgICAgZG8gewoJICAgICAgICAgICAgICAgIC8vIFdoaWxlIHN0aWxsIGFub3RoZXIgc2VnbWVudCB0byByZWFkLi4uCgkgICAgICAgICAgICAgICAgaWYgKGJpdHMuYXZhaWxhYmxlKCkgPCA0KSB7CgkgICAgICAgICAgICAgICAgICAgIC8vIE9LLCBhc3N1bWUgd2UncmUgZG9uZS4gUmVhbGx5LCBhIFRFUk1JTkFUT1IgbW9kZSBzaG91bGQgaGF2ZSBiZWVuIHJlY29yZGVkIGhlcmUKCSAgICAgICAgICAgICAgICAgICAgbW9kZSA9IE1vZGVfMS5kZWZhdWx0LlRFUk1JTkFUT1I7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICB2YXIgbW9kZUJpdHMgPSBiaXRzLnJlYWRCaXRzKDQpOwoJICAgICAgICAgICAgICAgICAgICBtb2RlID0gTW9kZV8xLmRlZmF1bHQuZm9yQml0cyhtb2RlQml0cyk7IC8vIG1vZGUgaXMgZW5jb2RlZCBieSA0IGJpdHMKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgc3dpdGNoIChtb2RlKSB7CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgTW9kZV8xLmRlZmF1bHQuVEVSTUlOQVRPUjoKCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIE1vZGVfMS5kZWZhdWx0LkZOQzFfRklSU1RfUE9TSVRJT046CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgTW9kZV8xLmRlZmF1bHQuRk5DMV9TRUNPTkRfUE9TSVRJT046CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBkbyBsaXR0bGUgd2l0aCBGTkMxIGV4Y2VwdCBhbHRlciB0aGUgcGFyc2VkIHJlc3VsdCBhIGJpdCBhY2NvcmRpbmcgdG8gdGhlIHNwZWMKCSAgICAgICAgICAgICAgICAgICAgICAgIGZjMUluRWZmZWN0ID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIE1vZGVfMS5kZWZhdWx0LlNUUlVDVFVSRURfQVBQRU5EOgoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpdHMuYXZhaWxhYmxlKCkgPCAxNikgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXF1ZW5jZSBudW1iZXIgYW5kIHBhcml0eSBpcyBhZGRlZCBsYXRlciB0byB0aGUgcmVzdWx0IG1ldGFkYXRhCgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWFkIG5leHQgOCBiaXRzIChzeW1ib2wgc2VxdWVuY2UgIykgYW5kIDggYml0cyAoZGF0YTogcGFyaXR5KSwgdGhlbiBjb250aW51ZQoJICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sU2VxdWVuY2UgPSBiaXRzLnJlYWRCaXRzKDgpOwoJICAgICAgICAgICAgICAgICAgICAgICAgcGFyaXR5RGF0YSA9IGJpdHMucmVhZEJpdHMoOCk7CgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSBNb2RlXzEuZGVmYXVsdC5FQ0k6CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb3VudCBkb2Vzbid0IGFwcGx5IHRvIEVDSQoJICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5wYXJzZUVDSVZhbHVlKGJpdHMpOwoJICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENoYXJhY3RlclNldEVDSSA9IENoYXJhY3RlclNldEVDSV8xLmRlZmF1bHQuZ2V0Q2hhcmFjdGVyU2V0RUNJQnlWYWx1ZSh2YWx1ZSk7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlclNldEVDSSA9PT0gbnVsbCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSBNb2RlXzEuZGVmYXVsdC5IQU5aSToKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpcnN0IGhhbmRsZSBIYW56aSBtb2RlIHdoaWNoIGRvZXMgbm90IHN0YXJ0IHdpdGggY2hhcmFjdGVyIGNvdW50CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGluZXNlIG1vZGUgY29udGFpbnMgYSBzdWIgc2V0IGluZGljYXRvciByaWdodCBhZnRlciBtb2RlIGluZGljYXRvcgoJICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN1YnNldCA9IGJpdHMucmVhZEJpdHMoNCk7CgkgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY291bnRIYW56aSA9IGJpdHMucmVhZEJpdHMobW9kZS5nZXRDaGFyYWN0ZXJDb3VudEJpdHModmVyc2lvbikpOwoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1YnNldCA9PT0gRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5HQjIzMTJfU1VCU0VUKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGVIYW56aVNlZ21lbnQoYml0cywgcmVzdWx0LCBjb3VudEhhbnppKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gIk5vcm1hbCIgUVIgY29kZSBtb2RlczoKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhvdyBtYW55IGNoYXJhY3RlcnMgd2lsbCBmb2xsb3csIGVuY29kZWQgaW4gdGhpcyBtb2RlPwoJICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50ID0gYml0cy5yZWFkQml0cyhtb2RlLmdldENoYXJhY3RlckNvdW50Qml0cyh2ZXJzaW9uKSk7CgkgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE1vZGVfMS5kZWZhdWx0Lk5VTUVSSUM6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuZGVjb2RlTnVtZXJpY1NlZ21lbnQoYml0cywgcmVzdWx0LCBjb3VudCk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTW9kZV8xLmRlZmF1bHQuQUxQSEFOVU1FUklDOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZUFscGhhbnVtZXJpY1NlZ21lbnQoYml0cywgcmVzdWx0LCBjb3VudCwgZmMxSW5FZmZlY3QpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE1vZGVfMS5kZWZhdWx0LkJZVEU6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuZGVjb2RlQnl0ZVNlZ21lbnQoYml0cywgcmVzdWx0LCBjb3VudCwgY3VycmVudENoYXJhY3RlclNldEVDSSwgYnl0ZVNlZ21lbnRzLCBoaW50cyk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTW9kZV8xLmRlZmF1bHQuS0FOSkk6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuZGVjb2RlS2FuamlTZWdtZW50KGJpdHMsIHJlc3VsdCwgY291bnQpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfSB3aGlsZSAobW9kZSAhPT0gTW9kZV8xLmRlZmF1bHQuVEVSTUlOQVRPUik7CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGlhZSAvKjogSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKi8pIHsKCSAgICAgICAgICAgIC8vIGZyb20gcmVhZEJpdHMoKSBjYWxscwoJICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbmV3IERlY29kZXJSZXN1bHRfMS5kZWZhdWx0KGJ5dGVzLCByZXN1bHQudG9TdHJpbmcoKSwgYnl0ZVNlZ21lbnRzLmxlbmd0aCA9PT0gMCA/IG51bGwgOiBieXRlU2VnbWVudHMsIGVjTGV2ZWwgPT09IG51bGwgPyBudWxsIDogZWNMZXZlbC50b1N0cmluZygpLCBzeW1ib2xTZXF1ZW5jZSwgcGFyaXR5RGF0YSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBTZWUgc3BlY2lmaWNhdGlvbiBHQlQgMTgyODQtMjAwMAoJICAgICAqLwoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuZGVjb2RlSGFuemlTZWdtZW50ID0gZnVuY3Rpb24gKGJpdHMsIHJlc3VsdCwgY291bnQgLyppbnQqLykgewoJICAgICAgICAvLyBEb24ndCBjcmFzaCB0cnlpbmcgdG8gcmVhZCBtb3JlIGJpdHMgdGhhbiB3ZSBoYXZlIGF2YWlsYWJsZS4KCSAgICAgICAgaWYgKGNvdW50ICogMTMgPiBiaXRzLmF2YWlsYWJsZSgpKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIC8vIEVhY2ggY2hhcmFjdGVyIHdpbGwgcmVxdWlyZSAyIGJ5dGVzLiBSZWFkIHRoZSBjaGFyYWN0ZXJzIGFzIDItYnl0ZSBwYWlycwoJICAgICAgICAvLyBhbmQgZGVjb2RlIGFzIEdCMjMxMiBhZnRlcndhcmRzCgkgICAgICAgIHZhciBidWZmZXIgPSBuZXcgVWludDhBcnJheSgyICogY291bnQpOwoJICAgICAgICB2YXIgb2Zmc2V0ID0gMDsKCSAgICAgICAgd2hpbGUgKGNvdW50ID4gMCkgewoJICAgICAgICAgICAgLy8gRWFjaCAxMyBiaXRzIGVuY29kZXMgYSAyLWJ5dGUgY2hhcmFjdGVyCgkgICAgICAgICAgICB2YXIgdHdvQnl0ZXMgPSBiaXRzLnJlYWRCaXRzKDEzKTsKCSAgICAgICAgICAgIHZhciBhc3NlbWJsZWRUd29CeXRlcyA9ICgoKHR3b0J5dGVzIC8gMHgwNjApIDw8IDgpICYgMHhGRkZGRkZGRikgfCAodHdvQnl0ZXMgJSAweDA2MCk7CgkgICAgICAgICAgICBpZiAoYXNzZW1ibGVkVHdvQnl0ZXMgPCAweDAwM0JGKSB7CgkgICAgICAgICAgICAgICAgLy8gSW4gdGhlIDB4QTFBMSB0byAweEFBRkUgcmFuZ2UKCSAgICAgICAgICAgICAgICBhc3NlbWJsZWRUd29CeXRlcyArPSAweDBBMUExOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgLy8gSW4gdGhlIDB4QjBBMSB0byAweEZBRkUgcmFuZ2UKCSAgICAgICAgICAgICAgICBhc3NlbWJsZWRUd29CeXRlcyArPSAweDBBNkExOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgYnVmZmVyW29mZnNldF0gPSAvKihieXRlKSAqLyAoKGFzc2VtYmxlZFR3b0J5dGVzID4+IDgpICYgMHhGRik7CgkgICAgICAgICAgICBidWZmZXJbb2Zmc2V0ICsgMV0gPSAvKihieXRlKSAqLyAoYXNzZW1ibGVkVHdvQnl0ZXMgJiAweEZGKTsKCSAgICAgICAgICAgIG9mZnNldCArPSAyOwoJICAgICAgICAgICAgY291bnQtLTsKCSAgICAgICAgfQoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmdFbmNvZGluZ18xLmRlZmF1bHQuZGVjb2RlKGJ1ZmZlciwgU3RyaW5nVXRpbHNfMS5kZWZhdWx0LkdCMjMxMikpOwoJICAgICAgICAgICAgLy8gVFlQRVNDUklQVFBPUlQ6IFRPRE86IGltcGxlbWVudCBHQjIzMTIgZGVjb2RlLiBTdHJpbmdWaWV3IGZyb20gTUROIGNvdWxkIGJlIGEgc3RhcnRpbmcgcG9pbnQKCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoaWdub3JlZCAvKjogVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiovKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdChpZ25vcmVkKTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGVLYW5qaVNlZ21lbnQgPSBmdW5jdGlvbiAoYml0cywgcmVzdWx0LCBjb3VudCAvKmludCovKSB7CgkgICAgICAgIC8vIERvbid0IGNyYXNoIHRyeWluZyB0byByZWFkIG1vcmUgYml0cyB0aGFuIHdlIGhhdmUgYXZhaWxhYmxlLgoJICAgICAgICBpZiAoY291bnQgKiAxMyA+IGJpdHMuYXZhaWxhYmxlKCkpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gRWFjaCBjaGFyYWN0ZXIgd2lsbCByZXF1aXJlIDIgYnl0ZXMuIFJlYWQgdGhlIGNoYXJhY3RlcnMgYXMgMi1ieXRlIHBhaXJzCgkgICAgICAgIC8vIGFuZCBkZWNvZGUgYXMgU2hpZnRfSklTIGFmdGVyd2FyZHMKCSAgICAgICAgdmFyIGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDIgKiBjb3VudCk7CgkgICAgICAgIHZhciBvZmZzZXQgPSAwOwoJICAgICAgICB3aGlsZSAoY291bnQgPiAwKSB7CgkgICAgICAgICAgICAvLyBFYWNoIDEzIGJpdHMgZW5jb2RlcyBhIDItYnl0ZSBjaGFyYWN0ZXIKCSAgICAgICAgICAgIHZhciB0d29CeXRlcyA9IGJpdHMucmVhZEJpdHMoMTMpOwoJICAgICAgICAgICAgdmFyIGFzc2VtYmxlZFR3b0J5dGVzID0gKCgodHdvQnl0ZXMgLyAweDBDMCkgPDwgOCkgJiAweEZGRkZGRkZGKSB8ICh0d29CeXRlcyAlIDB4MEMwKTsKCSAgICAgICAgICAgIGlmIChhc3NlbWJsZWRUd29CeXRlcyA8IDB4MDFGMDApIHsKCSAgICAgICAgICAgICAgICAvLyBJbiB0aGUgMHg4MTQwIHRvIDB4OUZGQyByYW5nZQoJICAgICAgICAgICAgICAgIGFzc2VtYmxlZFR3b0J5dGVzICs9IDB4MDgxNDA7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAvLyBJbiB0aGUgMHhFMDQwIHRvIDB4RUJCRiByYW5nZQoJICAgICAgICAgICAgICAgIGFzc2VtYmxlZFR3b0J5dGVzICs9IDB4MEMxNDA7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBidWZmZXJbb2Zmc2V0XSA9IC8qKGJ5dGUpICovIChhc3NlbWJsZWRUd29CeXRlcyA+PiA4KTsKCSAgICAgICAgICAgIGJ1ZmZlcltvZmZzZXQgKyAxXSA9IC8qKGJ5dGUpICovIGFzc2VtYmxlZFR3b0J5dGVzOwoJICAgICAgICAgICAgb2Zmc2V0ICs9IDI7CgkgICAgICAgICAgICBjb3VudC0tOwoJICAgICAgICB9CgkgICAgICAgIC8vIFNoaWZ0X0pJUyBtYXkgbm90IGJlIHN1cHBvcnRlZCBpbiBzb21lIGVudmlyb25tZW50czoKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nRW5jb2RpbmdfMS5kZWZhdWx0LmRlY29kZShidWZmZXIsIFN0cmluZ1V0aWxzXzEuZGVmYXVsdC5TSElGVF9KSVMpKTsKCSAgICAgICAgICAgIC8vIFRZUEVTQ1JJUFRQT1JUOiBUT0RPOiBpbXBsZW1lbnQgU0hJRlRfSklTIGRlY29kZS4gU3RyaW5nVmlldyBmcm9tIE1ETiBjb3VsZCBiZSBhIHN0YXJ0aW5nIHBvaW50CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGlnbm9yZWQgLyo6IFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24qLykgewoJICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoaWdub3JlZCk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuZGVjb2RlQnl0ZVNlZ21lbnQgPSBmdW5jdGlvbiAoYml0cywgcmVzdWx0LCBjb3VudCAvKmludCovLCBjdXJyZW50Q2hhcmFjdGVyU2V0RUNJLCBieXRlU2VnbWVudHMsIGhpbnRzKSB7CgkgICAgICAgIC8vIERvbid0IGNyYXNoIHRyeWluZyB0byByZWFkIG1vcmUgYml0cyB0aGFuIHdlIGhhdmUgYXZhaWxhYmxlLgoJICAgICAgICBpZiAoOCAqIGNvdW50ID4gYml0cy5hdmFpbGFibGUoKSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgcmVhZEJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoY291bnQpOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKCSAgICAgICAgICAgIHJlYWRCeXRlc1tpXSA9IC8qKGJ5dGUpICovIGJpdHMucmVhZEJpdHMoOCk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGVuY29kaW5nOwoJICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlclNldEVDSSA9PT0gbnVsbCkgewoJICAgICAgICAgICAgLy8gVGhlIHNwZWMgaXNuJ3QgY2xlYXIgb24gdGhpcyBtb2RlOyBzZWUKCSAgICAgICAgICAgIC8vIHNlY3Rpb24gNi40LjU6IHQgZG9lcyBub3Qgc2F5IHdoaWNoIGVuY29kaW5nIHRvIGFzc3VtaW5nCgkgICAgICAgICAgICAvLyB1cG9uIGRlY29kaW5nLiBJIGhhdmUgc2VlbiBJU08tODg1OS0xIHVzZWQgYXMgd2VsbCBhcwoJICAgICAgICAgICAgLy8gU2hpZnRfSklTIC0tIHdpdGhvdXQgYW55dGhpbmcgbGlrZSBhbiBFQ0kgZGVzaWduYXRvciB0bwoJICAgICAgICAgICAgLy8gZ2l2ZSBhIGhpbnQuCgkgICAgICAgICAgICBlbmNvZGluZyA9IFN0cmluZ1V0aWxzXzEuZGVmYXVsdC5ndWVzc0VuY29kaW5nKHJlYWRCeXRlcywgaGludHMpOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgZW5jb2RpbmcgPSBjdXJyZW50Q2hhcmFjdGVyU2V0RUNJLmdldE5hbWUoKTsKCSAgICAgICAgfQoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmdFbmNvZGluZ18xLmRlZmF1bHQuZGVjb2RlKHJlYWRCeXRlcywgZW5jb2RpbmcpKTsKCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoaWdub3JlZCAvKjogVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiovKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdChpZ25vcmVkKTsKCSAgICAgICAgfQoJICAgICAgICBieXRlU2VnbWVudHMucHVzaChyZWFkQnl0ZXMpOwoJICAgIH07CgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci50b0FscGhhTnVtZXJpY0NoYXIgPSBmdW5jdGlvbiAodmFsdWUgLyppbnQqLykgewoJICAgICAgICBpZiAodmFsdWUgPj0gRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5BTFBIQU5VTUVSSUNfQ0hBUlMubGVuZ3RoKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkFMUEhBTlVNRVJJQ19DSEFSU1t2YWx1ZV07CgkgICAgfTsKCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZUFscGhhbnVtZXJpY1NlZ21lbnQgPSBmdW5jdGlvbiAoYml0cywgcmVzdWx0LCBjb3VudCAvKmludCovLCBmYzFJbkVmZmVjdCkgewoJICAgICAgICAvLyBSZWFkIHR3byBjaGFyYWN0ZXJzIGF0IGEgdGltZQoJICAgICAgICB2YXIgc3RhcnQgPSByZXN1bHQubGVuZ3RoKCk7CgkgICAgICAgIHdoaWxlIChjb3VudCA+IDEpIHsKCSAgICAgICAgICAgIGlmIChiaXRzLmF2YWlsYWJsZSgpIDwgMTEpIHsKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdmFyIG5leHRUd29DaGFyc0JpdHMgPSBiaXRzLnJlYWRCaXRzKDExKTsKCSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoRGVjb2RlZEJpdFN0cmVhbVBhcnNlci50b0FscGhhTnVtZXJpY0NoYXIoTWF0aC5mbG9vcihuZXh0VHdvQ2hhcnNCaXRzIC8gNDUpKSk7CgkgICAgICAgICAgICByZXN1bHQuYXBwZW5kKERlY29kZWRCaXRTdHJlYW1QYXJzZXIudG9BbHBoYU51bWVyaWNDaGFyKG5leHRUd29DaGFyc0JpdHMgJSA0NSkpOwoJICAgICAgICAgICAgY291bnQgLT0gMjsKCSAgICAgICAgfQoJICAgICAgICBpZiAoY291bnQgPT09IDEpIHsKCSAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZTogb25lIGNoYXJhY3RlciBsZWZ0CgkgICAgICAgICAgICBpZiAoYml0cy5hdmFpbGFibGUoKSA8IDYpIHsKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChEZWNvZGVkQml0U3RyZWFtUGFyc2VyLnRvQWxwaGFOdW1lcmljQ2hhcihiaXRzLnJlYWRCaXRzKDYpKSk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gU2VlIHNlY3Rpb24gNi40LjguMSwgNi40LjguMgoJICAgICAgICBpZiAoZmMxSW5FZmZlY3QpIHsKCSAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gbWFzc2FnZSB0aGUgcmVzdWx0IGEgYml0IGlmIGluIGFuIEZOQzEgbW9kZToKCSAgICAgICAgICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IHJlc3VsdC5sZW5ndGgoKTsgaSsrKSB7CgkgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5jaGFyQXQoaSkgPT09ICclJykgewoJICAgICAgICAgICAgICAgICAgICBpZiAoaSA8IHJlc3VsdC5sZW5ndGgoKSAtIDEgJiYgcmVzdWx0LmNoYXJBdChpICsgMSkgPT09ICclJykgewoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gJSUgaXMgcmVuZGVyZWQgYXMgJQoJICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmRlbGV0ZUNoYXJBdChpICsgMSk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbiBhbHBoYSBtb2RlLCAlIHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8gRk5DMSBzZXBhcmF0b3IgMHgxRAoJICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldENoYXJBdChpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MUQpKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgIH07CgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGVOdW1lcmljU2VnbWVudCA9IGZ1bmN0aW9uIChiaXRzLCByZXN1bHQsIGNvdW50IC8qaW50Ki8pIHsKCSAgICAgICAgLy8gUmVhZCB0aHJlZSBkaWdpdHMgYXQgYSB0aW1lCgkgICAgICAgIHdoaWxlIChjb3VudCA+PSAzKSB7CgkgICAgICAgICAgICAvLyBFYWNoIDEwIGJpdHMgZW5jb2RlcyB0aHJlZSBkaWdpdHMKCSAgICAgICAgICAgIGlmIChiaXRzLmF2YWlsYWJsZSgpIDwgMTApIHsKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdmFyIHRocmVlRGlnaXRzQml0cyA9IGJpdHMucmVhZEJpdHMoMTApOwoJICAgICAgICAgICAgaWYgKHRocmVlRGlnaXRzQml0cyA+PSAxMDAwKSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoRGVjb2RlZEJpdFN0cmVhbVBhcnNlci50b0FscGhhTnVtZXJpY0NoYXIoTWF0aC5mbG9vcih0aHJlZURpZ2l0c0JpdHMgLyAxMDApKSk7CgkgICAgICAgICAgICByZXN1bHQuYXBwZW5kKERlY29kZWRCaXRTdHJlYW1QYXJzZXIudG9BbHBoYU51bWVyaWNDaGFyKE1hdGguZmxvb3IodGhyZWVEaWdpdHNCaXRzIC8gMTApICUgMTApKTsKCSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoRGVjb2RlZEJpdFN0cmVhbVBhcnNlci50b0FscGhhTnVtZXJpY0NoYXIodGhyZWVEaWdpdHNCaXRzICUgMTApKTsKCSAgICAgICAgICAgIGNvdW50IC09IDM7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGNvdW50ID09PSAyKSB7CgkgICAgICAgICAgICAvLyBUd28gZGlnaXRzIGxlZnQgb3ZlciB0byByZWFkLCBlbmNvZGVkIGluIDcgYml0cwoJICAgICAgICAgICAgaWYgKGJpdHMuYXZhaWxhYmxlKCkgPCA3KSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHZhciB0d29EaWdpdHNCaXRzID0gYml0cy5yZWFkQml0cyg3KTsKCSAgICAgICAgICAgIGlmICh0d29EaWdpdHNCaXRzID49IDEwMCkgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICByZXN1bHQuYXBwZW5kKERlY29kZWRCaXRTdHJlYW1QYXJzZXIudG9BbHBoYU51bWVyaWNDaGFyKE1hdGguZmxvb3IodHdvRGlnaXRzQml0cyAvIDEwKSkpOwoJICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChEZWNvZGVkQml0U3RyZWFtUGFyc2VyLnRvQWxwaGFOdW1lcmljQ2hhcih0d29EaWdpdHNCaXRzICUgMTApKTsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIGlmIChjb3VudCA9PT0gMSkgewoJICAgICAgICAgICAgLy8gT25lIGRpZ2l0IGxlZnQgb3ZlciB0byByZWFkCgkgICAgICAgICAgICBpZiAoYml0cy5hdmFpbGFibGUoKSA8IDQpIHsKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdmFyIGRpZ2l0Qml0cyA9IGJpdHMucmVhZEJpdHMoNCk7CgkgICAgICAgICAgICBpZiAoZGlnaXRCaXRzID49IDEwKSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoRGVjb2RlZEJpdFN0cmVhbVBhcnNlci50b0FscGhhTnVtZXJpY0NoYXIoZGlnaXRCaXRzKSk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIucGFyc2VFQ0lWYWx1ZSA9IGZ1bmN0aW9uIChiaXRzKSB7CgkgICAgICAgIHZhciBmaXJzdEJ5dGUgPSBiaXRzLnJlYWRCaXRzKDgpOwoJICAgICAgICBpZiAoKGZpcnN0Qnl0ZSAmIDB4ODApID09PSAwKSB7CgkgICAgICAgICAgICAvLyBqdXN0IG9uZSBieXRlCgkgICAgICAgICAgICByZXR1cm4gZmlyc3RCeXRlICYgMHg3RjsKCSAgICAgICAgfQoJICAgICAgICBpZiAoKGZpcnN0Qnl0ZSAmIDB4QzApID09PSAweDgwKSB7CgkgICAgICAgICAgICAvLyB0d28gYnl0ZXMKCSAgICAgICAgICAgIHZhciBzZWNvbmRCeXRlID0gYml0cy5yZWFkQml0cyg4KTsKCSAgICAgICAgICAgIHJldHVybiAoKChmaXJzdEJ5dGUgJiAweDNGKSA8PCA4KSAmIDB4RkZGRkZGRkYpIHwgc2Vjb25kQnl0ZTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoKGZpcnN0Qnl0ZSAmIDB4RTApID09PSAweEMwKSB7CgkgICAgICAgICAgICAvLyB0aHJlZSBieXRlcwoJICAgICAgICAgICAgdmFyIHNlY29uZFRoaXJkQnl0ZXMgPSBiaXRzLnJlYWRCaXRzKDE2KTsKCSAgICAgICAgICAgIHJldHVybiAoKChmaXJzdEJ5dGUgJiAweDFGKSA8PCAxNikgJiAweEZGRkZGRkZGKSB8IHNlY29uZFRoaXJkQnl0ZXM7CgkgICAgICAgIH0KCSAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFNlZSBJU08gMTgwMDQ6MjAwNiwgNi40LjQgVGFibGUgNQoJICAgICAqLwoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQUxQSEFOVU1FUklDX0NIQVJTID0gJzAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiAkJSorLS4vOic7CgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5HQjIzMTJfU1VCU0VUID0gMTsKCSAgICByZXR1cm4gRGVjb2RlZEJpdFN0cmVhbVBhcnNlcjsKCX0oKSk7CglEZWNvZGVkQml0U3RyZWFtUGFyc2VyJDEuZGVmYXVsdCA9IERlY29kZWRCaXRTdHJlYW1QYXJzZXI7CgoJdmFyIFFSQ29kZURlY29kZXJNZXRhRGF0YSQxID0ge307CgoJLyoKCSAqIENvcHlyaWdodCAyMDEzIFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShRUkNvZGVEZWNvZGVyTWV0YURhdGEkMSwgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLyoqCgkgKiBNZXRhLWRhdGEgY29udGFpbmVyIGZvciBRUiBDb2RlIGRlY29kaW5nLiBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBtYXkgYmUgdXNlZCB0byBjb252ZXkgaW5mb3JtYXRpb24gYmFjayB0byB0aGUKCSAqIGRlY29kaW5nIGNhbGxlci4gQ2FsbGVycyBhcmUgZXhwZWN0ZWQgdG8gcHJvY2VzcyB0aGlzLgoJICoKCSAqIEBzZWUgY29tLmdvb2dsZS56eGluZy5jb21tb24uRGVjb2RlclJlc3VsdCNnZXRPdGhlcigpCgkgKi8KCXZhciBRUkNvZGVEZWNvZGVyTWV0YURhdGEgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gUVJDb2RlRGVjb2Rlck1ldGFEYXRhKG1pcnJvcmVkKSB7CgkgICAgICAgIHRoaXMubWlycm9yZWQgPSBtaXJyb3JlZDsKCSAgICB9CgkgICAgLyoqCgkgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBRUiBDb2RlIHdhcyBtaXJyb3JlZC4KCSAgICAgKi8KCSAgICBRUkNvZGVEZWNvZGVyTWV0YURhdGEucHJvdG90eXBlLmlzTWlycm9yZWQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLm1pcnJvcmVkOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQXBwbHkgdGhlIHJlc3VsdCBwb2ludHMnIG9yZGVyIGNvcnJlY3Rpb24gZHVlIHRvIG1pcnJvcmluZy4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBwb2ludHMgQXJyYXkgb2YgcG9pbnRzIHRvIGFwcGx5IG1pcnJvciBjb3JyZWN0aW9uIHRvLgoJICAgICAqLwoJICAgIFFSQ29kZURlY29kZXJNZXRhRGF0YS5wcm90b3R5cGUuYXBwbHlNaXJyb3JlZENvcnJlY3Rpb24gPSBmdW5jdGlvbiAocG9pbnRzKSB7CgkgICAgICAgIGlmICghdGhpcy5taXJyb3JlZCB8fCBwb2ludHMgPT09IG51bGwgfHwgcG9pbnRzLmxlbmd0aCA8IDMpIHsKCSAgICAgICAgICAgIHJldHVybjsKCSAgICAgICAgfQoJICAgICAgICB2YXIgYm90dG9tTGVmdCA9IHBvaW50c1swXTsKCSAgICAgICAgcG9pbnRzWzBdID0gcG9pbnRzWzJdOwoJICAgICAgICBwb2ludHNbMl0gPSBib3R0b21MZWZ0OwoJICAgICAgICAvLyBObyBuZWVkIHRvICdmaXgnIHRvcC1sZWZ0IGFuZCBhbGlnbm1lbnQgcGF0dGVybi4KCSAgICB9OwoJICAgIHJldHVybiBRUkNvZGVEZWNvZGVyTWV0YURhdGE7Cgl9KCkpOwoJUVJDb2RlRGVjb2Rlck1ldGFEYXRhJDEuZGVmYXVsdCA9IFFSQ29kZURlY29kZXJNZXRhRGF0YTsKCgkvKgoJICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJdmFyIF9fdmFsdWVzJDIgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHsKCSAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDsKCSAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTsKCSAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09ICJudW1iZXIiKSByZXR1cm4gewoJICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwOwoJICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9OwoJICAgICAgICB9CgkgICAgfTsKCSAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyAiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4iIDogIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTsKCX07CglPYmplY3QuZGVmaW5lUHJvcGVydHkoRGVjb2RlciQxLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLnFyY29kZS5kZWNvZGVyIHsqLwoJdmFyIENoZWNrc3VtRXhjZXB0aW9uXzEgPSBDaGVja3N1bUV4Y2VwdGlvbiQxOwoJdmFyIEJpdE1hdHJpeF8xJDIgPSBCaXRNYXRyaXgkMTsKCXZhciBHZW5lcmljR0ZfMSA9IEdlbmVyaWNHRiQxOwoJdmFyIFJlZWRTb2xvbW9uRGVjb2Rlcl8xID0gUmVlZFNvbG9tb25EZWNvZGVyJDE7Cgl2YXIgQml0TWF0cml4UGFyc2VyXzEgPSBCaXRNYXRyaXhQYXJzZXIkMTsKCXZhciBEYXRhQmxvY2tfMSA9IERhdGFCbG9jayQxOwoJdmFyIERlY29kZWRCaXRTdHJlYW1QYXJzZXJfMSA9IERlY29kZWRCaXRTdHJlYW1QYXJzZXIkMTsKCXZhciBRUkNvZGVEZWNvZGVyTWV0YURhdGFfMSQxID0gUVJDb2RlRGVjb2Rlck1ldGFEYXRhJDE7CgkvKmltcG9ydCBqYXZhLnV0aWwuTWFwOyovCgkvKioKCSAqIDxwPlRoZSBtYWluIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgUVIgQ29kZSBkZWNvZGluZyAtLSBhcyBvcHBvc2VkIHRvIGxvY2F0aW5nIGFuZCBleHRyYWN0aW5nCgkgKiB0aGUgUVIgQ29kZSBmcm9tIGFuIGltYWdlLjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgRGVjb2RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBEZWNvZGVyKCkgewoJICAgICAgICB0aGlzLnJzRGVjb2RlciA9IG5ldyBSZWVkU29sb21vbkRlY29kZXJfMS5kZWZhdWx0KEdlbmVyaWNHRl8xLmRlZmF1bHQuUVJfQ09ERV9GSUVMRF8yNTYpOwoJICAgIH0KCSAgICAvLyBwdWJsaWMgZGVjb2RlKGltYWdlOiBib29sZWFuW11bXSk6IERlY29kZXJSZXN1bHQgLyp0aHJvd3MgQ2hlY2tzdW1FeGNlcHRpb24sIEZvcm1hdEV4Y2VwdGlvbiovIHsKCSAgICAvLyAgIHJldHVybiBkZWNvZGUoaW1hZ2UsIG51bGwpCgkgICAgLy8gfQoJICAgIC8qKgoJICAgICAqIDxwPkNvbnZlbmllbmNlIG1ldGhvZCB0aGF0IGNhbiBkZWNvZGUgYSBRUiBDb2RlIHJlcHJlc2VudGVkIGFzIGEgMkQgYXJyYXkgb2YgYm9vbGVhbnMuCgkgICAgICogInRydWUiIGlzIHRha2VuIHRvIG1lYW4gYSBibGFjayBtb2R1bGUuPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIGltYWdlIGJvb2xlYW5zIHJlcHJlc2VudGluZyB3aGl0ZS9ibGFjayBRUiBDb2RlIG1vZHVsZXMKCSAgICAgKiBAcGFyYW0gaGludHMgZGVjb2RpbmcgaGludHMgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBpbmZsdWVuY2UgZGVjb2RpbmcKCSAgICAgKiBAcmV0dXJuIHRleHQgYW5kIGJ5dGVzIGVuY29kZWQgd2l0aGluIHRoZSBRUiBDb2RlCgkgICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgdGhlIFFSIENvZGUgY2Fubm90IGJlIGRlY29kZWQKCSAgICAgKiBAdGhyb3dzIENoZWNrc3VtRXhjZXB0aW9uIGlmIGVycm9yIGNvcnJlY3Rpb24gZmFpbHMKCSAgICAgKi8KCSAgICBEZWNvZGVyLnByb3RvdHlwZS5kZWNvZGVCb29sZWFuQXJyYXkgPSBmdW5jdGlvbiAoaW1hZ2UsIGhpbnRzKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmRlY29kZUJpdE1hdHJpeChCaXRNYXRyaXhfMSQyLmRlZmF1bHQucGFyc2VGcm9tQm9vbGVhbkFycmF5KGltYWdlKSwgaGludHMpOwoJICAgIH07CgkgICAgLy8gcHVibGljIGRlY29kZUJpdE1hdHJpeChiaXRzOiBCaXRNYXRyaXgpOiBEZWNvZGVyUmVzdWx0IC8qdGhyb3dzIENoZWNrc3VtRXhjZXB0aW9uLCBGb3JtYXRFeGNlcHRpb24qLyB7CgkgICAgLy8gICByZXR1cm4gZGVjb2RlKGJpdHMsIG51bGwpCgkgICAgLy8gfQoJICAgIC8qKgoJICAgICAqIDxwPkRlY29kZXMgYSBRUiBDb2RlIHJlcHJlc2VudGVkIGFzIGEge0BsaW5rIEJpdE1hdHJpeH0uIEEgMSBvciAidHJ1ZSIgaXMgdGFrZW4gdG8gbWVhbiBhIGJsYWNrIG1vZHVsZS48L3A+CgkgICAgICoKCSAgICAgKiBAcGFyYW0gYml0cyBib29sZWFucyByZXByZXNlbnRpbmcgd2hpdGUvYmxhY2sgUVIgQ29kZSBtb2R1bGVzCgkgICAgICogQHBhcmFtIGhpbnRzIGRlY29kaW5nIGhpbnRzIHRoYXQgc2hvdWxkIGJlIHVzZWQgdG8gaW5mbHVlbmNlIGRlY29kaW5nCgkgICAgICogQHJldHVybiB0ZXh0IGFuZCBieXRlcyBlbmNvZGVkIHdpdGhpbiB0aGUgUVIgQ29kZQoJICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uIGlmIHRoZSBRUiBDb2RlIGNhbm5vdCBiZSBkZWNvZGVkCgkgICAgICogQHRocm93cyBDaGVja3N1bUV4Y2VwdGlvbiBpZiBlcnJvciBjb3JyZWN0aW9uIGZhaWxzCgkgICAgICovCgkgICAgRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlQml0TWF0cml4ID0gZnVuY3Rpb24gKGJpdHMsIGhpbnRzKSB7CgkgICAgICAgIC8vIENvbnN0cnVjdCBhIHBhcnNlciBhbmQgcmVhZCB2ZXJzaW9uLCBlcnJvci1jb3JyZWN0aW9uIGxldmVsCgkgICAgICAgIHZhciBwYXJzZXIgPSBuZXcgQml0TWF0cml4UGFyc2VyXzEuZGVmYXVsdChiaXRzKTsKCSAgICAgICAgdmFyIGV4ID0gbnVsbDsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzLmRlY29kZUJpdE1hdHJpeFBhcnNlcihwYXJzZXIsIGhpbnRzKTsKCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZSAvKjogRm9ybWF0RXhjZXB0aW9uLCBDaGVja3N1bUV4Y2VwdGlvbiovKSB7CgkgICAgICAgICAgICBleCA9IGU7CgkgICAgICAgIH0KCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIC8vIFJldmVydCB0aGUgYml0IG1hdHJpeAoJICAgICAgICAgICAgcGFyc2VyLnJlbWFzaygpOwoJICAgICAgICAgICAgLy8gV2lsbCBiZSBhdHRlbXB0aW5nIGEgbWlycm9yZWQgcmVhZGluZyBvZiB0aGUgdmVyc2lvbiBhbmQgZm9ybWF0IGluZm8uCgkgICAgICAgICAgICBwYXJzZXIuc2V0TWlycm9yKHRydWUpOwoJICAgICAgICAgICAgLy8gUHJlZW1wdGl2ZWx5IHJlYWQgdGhlIHZlcnNpb24uCgkgICAgICAgICAgICBwYXJzZXIucmVhZFZlcnNpb24oKTsKCSAgICAgICAgICAgIC8vIFByZWVtcHRpdmVseSByZWFkIHRoZSBmb3JtYXQgaW5mb3JtYXRpb24uCgkgICAgICAgICAgICBwYXJzZXIucmVhZEZvcm1hdEluZm9ybWF0aW9uKCk7CgkgICAgICAgICAgICAvKgoJICAgICAgICAgICAgICogU2luY2Ugd2UncmUgaGVyZSwgdGhpcyBtZWFucyB3ZSBoYXZlIHN1Y2Nlc3NmdWxseSBkZXRlY3RlZCBzb21lIGtpbmQKCSAgICAgICAgICAgICAqIG9mIHZlcnNpb24gYW5kIGZvcm1hdCBpbmZvcm1hdGlvbiB3aGVuIG1pcnJvcmVkLiBUaGlzIGlzIGEgZ29vZCBzaWduLAoJICAgICAgICAgICAgICogdGhhdCB0aGUgUVIgY29kZSBtYXkgYmUgbWlycm9yZWQsIGFuZCB3ZSBzaG91bGQgdHJ5IG9uY2UgbW9yZSB3aXRoIGEKCSAgICAgICAgICAgICAqIG1pcnJvcmVkIGNvbnRlbnQuCgkgICAgICAgICAgICAgKi8KCSAgICAgICAgICAgIC8vIFByZXBhcmUgZm9yIGEgbWlycm9yZWQgcmVhZGluZy4KCSAgICAgICAgICAgIHBhcnNlci5taXJyb3IoKTsKCSAgICAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLmRlY29kZUJpdE1hdHJpeFBhcnNlcihwYXJzZXIsIGhpbnRzKTsKCSAgICAgICAgICAgIC8vIFN1Y2Nlc3MhIE5vdGlmeSB0aGUgY2FsbGVyIHRoYXQgdGhlIGNvZGUgd2FzIG1pcnJvcmVkLgoJICAgICAgICAgICAgcmVzdWx0LnNldE90aGVyKG5ldyBRUkNvZGVEZWNvZGVyTWV0YURhdGFfMSQxLmRlZmF1bHQodHJ1ZSkpOwoJICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZSAvKkZvcm1hdEV4Y2VwdGlvbiB8IENoZWNrc3VtRXhjZXB0aW9uKi8pIHsKCSAgICAgICAgICAgIC8vIFRocm93IHRoZSBleGNlcHRpb24gZnJvbSB0aGUgb3JpZ2luYWwgcmVhZGluZwoJICAgICAgICAgICAgaWYgKGV4ICE9PSBudWxsKSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgZXg7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB0aHJvdyBlOwoJICAgICAgICB9CgkgICAgfTsKCSAgICBEZWNvZGVyLnByb3RvdHlwZS5kZWNvZGVCaXRNYXRyaXhQYXJzZXIgPSBmdW5jdGlvbiAocGFyc2VyLCBoaW50cykgewoJICAgICAgICB2YXIgZV8xLCBfYSwgZV8yLCBfYjsKCSAgICAgICAgdmFyIHZlcnNpb24gPSBwYXJzZXIucmVhZFZlcnNpb24oKTsKCSAgICAgICAgdmFyIGVjTGV2ZWwgPSBwYXJzZXIucmVhZEZvcm1hdEluZm9ybWF0aW9uKCkuZ2V0RXJyb3JDb3JyZWN0aW9uTGV2ZWwoKTsKCSAgICAgICAgLy8gUmVhZCBjb2Rld29yZHMKCSAgICAgICAgdmFyIGNvZGV3b3JkcyA9IHBhcnNlci5yZWFkQ29kZXdvcmRzKCk7CgkgICAgICAgIC8vIFNlcGFyYXRlIGludG8gZGF0YSBibG9ja3MKCSAgICAgICAgdmFyIGRhdGFCbG9ja3MgPSBEYXRhQmxvY2tfMS5kZWZhdWx0LmdldERhdGFCbG9ja3MoY29kZXdvcmRzLCB2ZXJzaW9uLCBlY0xldmVsKTsKCSAgICAgICAgLy8gQ291bnQgdG90YWwgbnVtYmVyIG9mIGRhdGEgYnl0ZXMKCSAgICAgICAgdmFyIHRvdGFsQnl0ZXMgPSAwOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgZGF0YUJsb2Nrc18xID0gX192YWx1ZXMkMihkYXRhQmxvY2tzKSwgZGF0YUJsb2Nrc18xXzEgPSBkYXRhQmxvY2tzXzEubmV4dCgpOyAhZGF0YUJsb2Nrc18xXzEuZG9uZTsgZGF0YUJsb2Nrc18xXzEgPSBkYXRhQmxvY2tzXzEubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgdmFyIGRhdGFCbG9jayA9IGRhdGFCbG9ja3NfMV8xLnZhbHVlOwoJICAgICAgICAgICAgICAgIHRvdGFsQnl0ZXMgKz0gZGF0YUJsb2NrLmdldE51bURhdGFDb2Rld29yZHMoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfQoJICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgaWYgKGRhdGFCbG9ja3NfMV8xICYmICFkYXRhQmxvY2tzXzFfMS5kb25lICYmIChfYSA9IGRhdGFCbG9ja3NfMS5yZXR1cm4pKSBfYS5jYWxsKGRhdGFCbG9ja3NfMSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHJlc3VsdEJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkodG90YWxCeXRlcyk7CgkgICAgICAgIHZhciByZXN1bHRPZmZzZXQgPSAwOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgLy8gRXJyb3ItY29ycmVjdCBhbmQgY29weSBkYXRhIGJsb2NrcyB0b2dldGhlciBpbnRvIGEgc3RyZWFtIG9mIGJ5dGVzCgkgICAgICAgICAgICBmb3IgKHZhciBkYXRhQmxvY2tzXzIgPSBfX3ZhbHVlcyQyKGRhdGFCbG9ja3MpLCBkYXRhQmxvY2tzXzJfMSA9IGRhdGFCbG9ja3NfMi5uZXh0KCk7ICFkYXRhQmxvY2tzXzJfMS5kb25lOyBkYXRhQmxvY2tzXzJfMSA9IGRhdGFCbG9ja3NfMi5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgZGF0YUJsb2NrID0gZGF0YUJsb2Nrc18yXzEudmFsdWU7CgkgICAgICAgICAgICAgICAgdmFyIGNvZGV3b3JkQnl0ZXMgPSBkYXRhQmxvY2suZ2V0Q29kZXdvcmRzKCk7CgkgICAgICAgICAgICAgICAgdmFyIG51bURhdGFDb2Rld29yZHMgPSBkYXRhQmxvY2suZ2V0TnVtRGF0YUNvZGV3b3JkcygpOwoJICAgICAgICAgICAgICAgIHRoaXMuY29ycmVjdEVycm9ycyhjb2Rld29yZEJ5dGVzLCBudW1EYXRhQ29kZXdvcmRzKTsKCSAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bURhdGFDb2Rld29yZHM7IGkrKykgewoJICAgICAgICAgICAgICAgICAgICByZXN1bHRCeXRlc1tyZXN1bHRPZmZzZXQrK10gPSBjb2Rld29yZEJ5dGVzW2ldOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZV8yXzEpIHsgZV8yID0geyBlcnJvcjogZV8yXzEgfTsgfQoJICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgaWYgKGRhdGFCbG9ja3NfMl8xICYmICFkYXRhQmxvY2tzXzJfMS5kb25lICYmIChfYiA9IGRhdGFCbG9ja3NfMi5yZXR1cm4pKSBfYi5jYWxsKGRhdGFCbG9ja3NfMik7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9CgkgICAgICAgIH0KCSAgICAgICAgLy8gRGVjb2RlIHRoZSBjb250ZW50cyBvZiB0aGF0IHN0cmVhbSBvZiBieXRlcwoJICAgICAgICByZXR1cm4gRGVjb2RlZEJpdFN0cmVhbVBhcnNlcl8xLmRlZmF1bHQuZGVjb2RlKHJlc3VsdEJ5dGVzLCB2ZXJzaW9uLCBlY0xldmVsLCBoaW50cyk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiA8cD5HaXZlbiBkYXRhIGFuZCBlcnJvci1jb3JyZWN0aW9uIGNvZGV3b3JkcyByZWNlaXZlZCwgcG9zc2libHkgY29ycnVwdGVkIGJ5IGVycm9ycywgYXR0ZW1wdHMgdG8KCSAgICAgKiBjb3JyZWN0IHRoZSBlcnJvcnMgaW4tcGxhY2UgdXNpbmcgUmVlZC1Tb2xvbW9uIGVycm9yIGNvcnJlY3Rpb24uPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIGNvZGV3b3JkQnl0ZXMgZGF0YSBhbmQgZXJyb3IgY29ycmVjdGlvbiBjb2Rld29yZHMKCSAgICAgKiBAcGFyYW0gbnVtRGF0YUNvZGV3b3JkcyBudW1iZXIgb2YgY29kZXdvcmRzIHRoYXQgYXJlIGRhdGEgYnl0ZXMKCSAgICAgKiBAdGhyb3dzIENoZWNrc3VtRXhjZXB0aW9uIGlmIGVycm9yIGNvcnJlY3Rpb24gZmFpbHMKCSAgICAgKi8KCSAgICBEZWNvZGVyLnByb3RvdHlwZS5jb3JyZWN0RXJyb3JzID0gZnVuY3Rpb24gKGNvZGV3b3JkQnl0ZXMsIG51bURhdGFDb2Rld29yZHMgLyppbnQqLykgewoJICAgICAgICAvLyBjb25zdCBudW1Db2Rld29yZHMgPSBjb2Rld29yZEJ5dGVzLmxlbmd0aDsKCSAgICAgICAgLy8gRmlyc3QgcmVhZCBpbnRvIGFuIGFycmF5IG9mIGludHMKCSAgICAgICAgdmFyIGNvZGV3b3Jkc0ludHMgPSBuZXcgSW50MzJBcnJheShjb2Rld29yZEJ5dGVzKTsKCSAgICAgICAgLy8gVFlQRVNDUklQVFBPUlQ6IG5vdCByZWFseSBuZWNlc3NhcnkgdG8gdHJhbnNmb3JtIHRvIGludHM/IGNvdWxkIHJlZGVzaWduIGV2ZXJ5dGhpbmcgdG8gd29yayB3aXRoIHVuc2lnbmVkIGJ5dGVzPwoJICAgICAgICAvLyBjb25zdCBjb2Rld29yZHNJbnRzID0gbmV3IEludDMyQXJyYXkobnVtQ29kZXdvcmRzKQoJICAgICAgICAvLyBmb3IgKGxldCBpID0gMDsgaSA8IG51bUNvZGV3b3JkczsgaSsrKSB7CgkgICAgICAgIC8vICAgY29kZXdvcmRzSW50c1tpXSA9IGNvZGV3b3JkQnl0ZXNbaV0gJiAweEZGCgkgICAgICAgIC8vIH0KCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIHRoaXMucnNEZWNvZGVyLmRlY29kZShjb2Rld29yZHNJbnRzLCBjb2Rld29yZEJ5dGVzLmxlbmd0aCAtIG51bURhdGFDb2Rld29yZHMpOwoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChpZ25vcmVkIC8qOiBSZWVkU29sb21vbkV4Y2VwdGlvbiovKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgQ2hlY2tzdW1FeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gQ29weSBiYWNrIGludG8gYXJyYXkgb2YgYnl0ZXMgLS0gb25seSBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoZSBieXRlcyB0aGF0IHdlcmUgZGF0YQoJICAgICAgICAvLyBXZSBkb24ndCBjYXJlIGFib3V0IGVycm9ycyBpbiB0aGUgZXJyb3ItY29ycmVjdGlvbiBjb2Rld29yZHMKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1EYXRhQ29kZXdvcmRzOyBpKyspIHsKCSAgICAgICAgICAgIGNvZGV3b3JkQnl0ZXNbaV0gPSAvKihieXRlKSAqLyBjb2Rld29yZHNJbnRzW2ldOwoJICAgICAgICB9CgkgICAgfTsKCSAgICByZXR1cm4gRGVjb2RlcjsKCX0oKSk7CglEZWNvZGVyJDEuZGVmYXVsdCA9IERlY29kZXI7CgoJdmFyIERldGVjdG9yJDEgPSB7fTsKCgl2YXIgTWF0aFV0aWxzJDEgPSB7fTsKCgkvKgoJICogQ29weXJpZ2h0IDIwMTIgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KE1hdGhVdGlscyQxLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbi5kZXRlY3RvciB7Ki8KCS8qKgoJICogR2VuZXJhbCBtYXRoLXJlbGF0ZWQgYW5kIG51bWVyaWMgdXRpbGl0eSBmdW5jdGlvbnMuCgkgKi8KCXZhciBNYXRoVXRpbHMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gTWF0aFV0aWxzKCkgewoJICAgIH0KCSAgICAvKioKCSAgICAgKiBFbmRzIHVwIGJlaW5nIGEgYml0IGZhc3RlciB0aGFuIHtAbGluayBNYXRoI3JvdW5kKGZsb2F0KX0uIFRoaXMgbWVyZWx5IHJvdW5kcyBpdHMKCSAgICAgKiBhcmd1bWVudCB0byB0aGUgbmVhcmVzdCBpbnQsIHdoZXJlIHguNSByb3VuZHMgdXAgdG8geCsxLiBTZW1hbnRpY3Mgb2YgdGhpcyBzaG9ydGN1dAoJICAgICAqIGRpZmZlciBzbGlnaHRseSBmcm9tIHtAbGluayBNYXRoI3JvdW5kKGZsb2F0KX0gaW4gdGhhdCBoYWxmIHJvdW5kcyBkb3duIGZvciBuZWdhdGl2ZQoJICAgICAqIHZhbHVlcy4gLTIuNSByb3VuZHMgdG8gLTMsIG5vdCAtMi4gRm9yIHB1cnBvc2VzIGhlcmUgaXQgbWFrZXMgbm8gZGlmZmVyZW5jZS4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBkIHJlYWwgdmFsdWUgdG8gcm91bmQKCSAgICAgKiBAcmV0dXJuIG5lYXJlc3Qge0Bjb2RlIGludH0KCSAgICAgKi8KCSAgICBNYXRoVXRpbHMucm91bmQgPSBmdW5jdGlvbiAoZCAvKmZsb2F0Ki8pIHsKCSAgICAgICAgaWYgKE5hTiA9PT0gZCkKCSAgICAgICAgICAgIHJldHVybiAwOwoJICAgICAgICBpZiAoZCA8PSBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUikKCSAgICAgICAgICAgIHJldHVybiBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUjsKCSAgICAgICAgaWYgKGQgPj0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpCgkgICAgICAgICAgICByZXR1cm4gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7CgkgICAgICAgIHJldHVybiAvKihpbnQpICovIChkICsgKGQgPCAwLjAgPyAtMC41IDogMC41KSkgfCAwOwoJICAgIH07CgkgICAgLy8gVFlQRVNDUklQVFBPUlQ6IG1heWJlIHJlbW92ZSByb3VuZCBtZXRob2QgYW5kIGNhbGwgZGlyZWN0bHkgTWF0aC5yb3VuZCwgaXQgbG9va3MgbGlrZSBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yIGpzCgkgICAgLyoqCgkgICAgICogQHBhcmFtIGFYIHBvaW50IEEgeCBjb29yZGluYXRlCgkgICAgICogQHBhcmFtIGFZIHBvaW50IEEgeSBjb29yZGluYXRlCgkgICAgICogQHBhcmFtIGJYIHBvaW50IEIgeCBjb29yZGluYXRlCgkgICAgICogQHBhcmFtIGJZIHBvaW50IEIgeSBjb29yZGluYXRlCgkgICAgICogQHJldHVybiBFdWNsaWRlYW4gZGlzdGFuY2UgYmV0d2VlbiBwb2ludHMgQSBhbmQgQgoJICAgICAqLwoJICAgIE1hdGhVdGlscy5kaXN0YW5jZSA9IGZ1bmN0aW9uIChhWCAvKmZsb2F0fGludCovLCBhWSAvKmZsb2F0fGludCovLCBiWCAvKmZsb2F0fGludCovLCBiWSAvKmZsb2F0fGludCovKSB7CgkgICAgICAgIHZhciB4RGlmZiA9IGFYIC0gYlg7CgkgICAgICAgIHZhciB5RGlmZiA9IGFZIC0gYlk7CgkgICAgICAgIHJldHVybiAvKihmbG9hdCkgKi8gTWF0aC5zcXJ0KHhEaWZmICogeERpZmYgKyB5RGlmZiAqIHlEaWZmKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEBwYXJhbSBhWCBwb2ludCBBIHggY29vcmRpbmF0ZQoJICAgICAqIEBwYXJhbSBhWSBwb2ludCBBIHkgY29vcmRpbmF0ZQoJICAgICAqIEBwYXJhbSBiWCBwb2ludCBCIHggY29vcmRpbmF0ZQoJICAgICAqIEBwYXJhbSBiWSBwb2ludCBCIHkgY29vcmRpbmF0ZQoJICAgICAqIEByZXR1cm4gRXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gcG9pbnRzIEEgYW5kIEIKCSAgICAgKi8KCSAgICAvLyBwdWJsaWMgc3RhdGljIGRpc3RhbmNlKGFYOiBudW1iZXIgLyppbnQqLywgYVk6IG51bWJlciAvKmludCovLCBiWDogbnVtYmVyIC8qaW50Ki8sIGJZOiBudW1iZXIgLyppbnQqLyk6IGZsb2F0IHsKCSAgICAvLyAgIGNvbnN0IHhEaWZmID0gYVggLSBiWAoJICAgIC8vICAgY29uc3QgeURpZmYgPSBhWSAtIGJZCgkgICAgLy8gICByZXR1cm4gKGZsb2F0KSBNYXRoLnNxcnQoeERpZmYgKiB4RGlmZiArIHlEaWZmICogeURpZmYpOwoJICAgIC8vIH0KCSAgICAvKioKCSAgICAgKiBAcGFyYW0gYXJyYXkgdmFsdWVzIHRvIHN1bQoJICAgICAqIEByZXR1cm4gc3VtIG9mIHZhbHVlcyBpbiBhcnJheQoJICAgICAqLwoJICAgIE1hdGhVdGlscy5zdW0gPSBmdW5jdGlvbiAoYXJyYXkpIHsKCSAgICAgICAgdmFyIGNvdW50ID0gMDsKCSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aF8xID0gYXJyYXkubGVuZ3RoOyBpICE9PSBsZW5ndGhfMTsgaSsrKSB7CgkgICAgICAgICAgICB2YXIgYSA9IGFycmF5W2ldOwoJICAgICAgICAgICAgY291bnQgKz0gYTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gY291bnQ7CgkgICAgfTsKCSAgICByZXR1cm4gTWF0aFV0aWxzOwoJfSgpKTsKCU1hdGhVdGlscyQxLmRlZmF1bHQgPSBNYXRoVXRpbHM7CgoJdmFyIERldGVjdG9yUmVzdWx0JDEgPSB7fTsKCgkvKgoJICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KERldGVjdG9yUmVzdWx0JDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qKgoJICogPHA+RW5jYXBzdWxhdGVzIHRoZSByZXN1bHQgb2YgZGV0ZWN0aW5nIGEgYmFyY29kZSBpbiBhbiBpbWFnZS4gVGhpcyBpbmNsdWRlcyB0aGUgcmF3CgkgKiBtYXRyaXggb2YgYmxhY2svd2hpdGUgcGl4ZWxzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJhcmNvZGUsIGFuZCBwb3NzaWJseSBwb2ludHMgb2YgaW50ZXJlc3QKCSAqIGluIHRoZSBpbWFnZSwgbGlrZSB0aGUgbG9jYXRpb24gb2YgZmluZGVyIHBhdHRlcm5zIG9yIGNvcm5lcnMgb2YgdGhlIGJhcmNvZGUgaW4gdGhlIGltYWdlLjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgRGV0ZWN0b3JSZXN1bHQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gRGV0ZWN0b3JSZXN1bHQoYml0cywgcG9pbnRzKSB7CgkgICAgICAgIHRoaXMuYml0cyA9IGJpdHM7CgkgICAgICAgIHRoaXMucG9pbnRzID0gcG9pbnRzOwoJICAgIH0KCSAgICBEZXRlY3RvclJlc3VsdC5wcm90b3R5cGUuZ2V0Qml0cyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuYml0czsKCSAgICB9OwoJICAgIERldGVjdG9yUmVzdWx0LnByb3RvdHlwZS5nZXRQb2ludHMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnBvaW50czsKCSAgICB9OwoJICAgIHJldHVybiBEZXRlY3RvclJlc3VsdDsKCX0oKSk7CglEZXRlY3RvclJlc3VsdCQxLmRlZmF1bHQgPSBEZXRlY3RvclJlc3VsdDsKCgl2YXIgR3JpZFNhbXBsZXJJbnN0YW5jZSQxID0ge307CgoJdmFyIERlZmF1bHRHcmlkU2FtcGxlciQxID0ge307CgoJdmFyIEdyaWRTYW1wbGVyJDEgPSB7fTsKCgkvKgoJICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KEdyaWRTYW1wbGVyJDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCXZhciBOb3RGb3VuZEV4Y2VwdGlvbl8xJDUgPSBOb3RGb3VuZEV4Y2VwdGlvbiQxOwoJLyoqCgkgKiBJbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBjbGFzcyBjYW4sIGdpdmVuIGxvY2F0aW9ucyBvZiBmaW5kZXIgcGF0dGVybnMgZm9yIGEgUVIgY29kZSBpbiBhbgoJICogaW1hZ2UsIHNhbXBsZSB0aGUgcmlnaHQgcG9pbnRzIGluIHRoZSBpbWFnZSB0byByZWNvbnN0cnVjdCB0aGUgUVIgY29kZSwgYWNjb3VudGluZyBmb3IKCSAqIHBlcnNwZWN0aXZlIGRpc3RvcnRpb24uIEl0IGlzIGFic3RyYWN0ZWQgc2luY2UgaXQgaXMgcmVsYXRpdmVseSBleHBlbnNpdmUgYW5kIHNob3VsZCBiZSBhbGxvd2VkCgkgKiB0byB0YWtlIGFkdmFudGFnZSBvZiBwbGF0Zm9ybS1zcGVjaWZpYyBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb25zLCBsaWtlIFN1bidzIEphdmEgQWR2YW5jZWQKCSAqIEltYWdpbmcgbGlicmFyeSwgYnV0IHdoaWNoIG1heSBub3QgYmUgYXZhaWxhYmxlIGluIG90aGVyIGVudmlyb25tZW50cyBzdWNoIGFzIEoyTUUsIGFuZCB2aWNlCgkgKiB2ZXJzYS4KCSAqCgkgKiBUaGUgaW1wbGVtZW50YXRpb24gdXNlZCBjYW4gYmUgY29udHJvbGxlZCBieSBjYWxsaW5nIHtAbGluayAjc2V0R3JpZFNhbXBsZXIoR3JpZFNhbXBsZXIpfQoJICogd2l0aCBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgdGhpcyBpbnRlcmZhY2UuCgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIEdyaWRTYW1wbGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIEdyaWRTYW1wbGVyKCkgewoJICAgIH0KCSAgICAvKioKCSAgICAgKiA8cD5DaGVja3MgYSBzZXQgb2YgcG9pbnRzIHRoYXQgaGF2ZSBiZWVuIHRyYW5zZm9ybWVkIHRvIHNhbXBsZSBwb2ludHMgb24gYW4gaW1hZ2UgYWdhaW5zdAoJICAgICAqIHRoZSBpbWFnZSdzIGRpbWVuc2lvbnMgdG8gc2VlIGlmIHRoZSBwb2ludCBhcmUgZXZlbiB3aXRoaW4gdGhlIGltYWdlLjwvcD4KCSAgICAgKgoJICAgICAqIDxwPlRoaXMgbWV0aG9kIHdpbGwgYWN0dWFsbHkgIm51ZGdlIiB0aGUgZW5kcG9pbnRzIGJhY2sgb250byB0aGUgaW1hZ2UgaWYgdGhleSBhcmUgZm91bmQgdG8gYmUKCSAgICAgKiBiYXJlbHkgKGxlc3MgdGhhbiAxIHBpeGVsKSBvZmYgdGhlIGltYWdlLiBUaGlzIGFjY291bnRzIGZvciBpbXBlcmZlY3QgZGV0ZWN0aW9uIG9mIGZpbmRlcgoJICAgICAqIHBhdHRlcm5zIGluIGFuIGltYWdlIHdoZXJlIHRoZSBRUiBDb2RlIHJ1bnMgYWxsIHRoZSB3YXkgdG8gdGhlIGltYWdlIGJvcmRlci48L3A+CgkgICAgICoKCSAgICAgKiA8cD5Gb3IgZWZmaWNpZW5jeSwgdGhlIG1ldGhvZCB3aWxsIGNoZWNrIHBvaW50cyBmcm9tIGVpdGhlciBlbmQgb2YgdGhlIGxpbmUgdW50aWwgb25lIGlzIGZvdW5kCgkgICAgICogdG8gYmUgd2l0aGluIHRoZSBpbWFnZS4gQmVjYXVzZSB0aGUgc2V0IG9mIHBvaW50cyBhcmUgYXNzdW1lZCB0byBiZSBsaW5lYXIsIHRoaXMgaXMgdmFsaWQuPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIGltYWdlIGltYWdlIGludG8gd2hpY2ggdGhlIHBvaW50cyBzaG91bGQgbWFwCgkgICAgICogQHBhcmFtIHBvaW50cyBhY3R1YWwgcG9pbnRzIGluIHgxLHkxLC4uLix4bix5biBmb3JtCgkgICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpZiBhbiBlbmRwb2ludCBpcyBsaWVzIG91dHNpZGUgdGhlIGltYWdlIGJvdW5kYXJpZXMKCSAgICAgKi8KCSAgICBHcmlkU2FtcGxlci5jaGVja0FuZE51ZGdlUG9pbnRzID0gZnVuY3Rpb24gKGltYWdlLCBwb2ludHMpIHsKCSAgICAgICAgdmFyIHdpZHRoID0gaW1hZ2UuZ2V0V2lkdGgoKTsKCSAgICAgICAgdmFyIGhlaWdodCA9IGltYWdlLmdldEhlaWdodCgpOwoJICAgICAgICAvLyBDaGVjayBhbmQgbnVkZ2UgcG9pbnRzIGZyb20gc3RhcnQgdW50aWwgd2Ugc2VlIHNvbWUgdGhhdCBhcmUgT0s6CgkgICAgICAgIHZhciBudWRnZWQgPSB0cnVlOwoJICAgICAgICBmb3IgKHZhciBvZmZzZXQgPSAwOyBvZmZzZXQgPCBwb2ludHMubGVuZ3RoICYmIG51ZGdlZDsgb2Zmc2V0ICs9IDIpIHsKCSAgICAgICAgICAgIHZhciB4ID0gTWF0aC5mbG9vcihwb2ludHNbb2Zmc2V0XSk7CgkgICAgICAgICAgICB2YXIgeSA9IE1hdGguZmxvb3IocG9pbnRzW29mZnNldCArIDFdKTsKCSAgICAgICAgICAgIGlmICh4IDwgLTEgfHwgeCA+IHdpZHRoIHx8IHkgPCAtMSB8fCB5ID4gaGVpZ2h0KSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEkNS5kZWZhdWx0KCk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBudWRnZWQgPSBmYWxzZTsKCSAgICAgICAgICAgIGlmICh4ID09PSAtMSkgewoJICAgICAgICAgICAgICAgIHBvaW50c1tvZmZzZXRdID0gMC4wOwoJICAgICAgICAgICAgICAgIG51ZGdlZCA9IHRydWU7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIGlmICh4ID09PSB3aWR0aCkgewoJICAgICAgICAgICAgICAgIHBvaW50c1tvZmZzZXRdID0gd2lkdGggLSAxOwoJICAgICAgICAgICAgICAgIG51ZGdlZCA9IHRydWU7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAoeSA9PT0gLTEpIHsKCSAgICAgICAgICAgICAgICBwb2ludHNbb2Zmc2V0ICsgMV0gPSAwLjA7CgkgICAgICAgICAgICAgICAgbnVkZ2VkID0gdHJ1ZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgaWYgKHkgPT09IGhlaWdodCkgewoJICAgICAgICAgICAgICAgIHBvaW50c1tvZmZzZXQgKyAxXSA9IGhlaWdodCAtIDE7CgkgICAgICAgICAgICAgICAgbnVkZ2VkID0gdHJ1ZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICAvLyBDaGVjayBhbmQgbnVkZ2UgcG9pbnRzIGZyb20gZW5kOgoJICAgICAgICBudWRnZWQgPSB0cnVlOwoJICAgICAgICBmb3IgKHZhciBvZmZzZXQgPSBwb2ludHMubGVuZ3RoIC0gMjsgb2Zmc2V0ID49IDAgJiYgbnVkZ2VkOyBvZmZzZXQgLT0gMikgewoJICAgICAgICAgICAgdmFyIHggPSBNYXRoLmZsb29yKHBvaW50c1tvZmZzZXRdKTsKCSAgICAgICAgICAgIHZhciB5ID0gTWF0aC5mbG9vcihwb2ludHNbb2Zmc2V0ICsgMV0pOwoJICAgICAgICAgICAgaWYgKHggPCAtMSB8fCB4ID4gd2lkdGggfHwgeSA8IC0xIHx8IHkgPiBoZWlnaHQpIHsKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMSQ1LmRlZmF1bHQoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIG51ZGdlZCA9IGZhbHNlOwoJICAgICAgICAgICAgaWYgKHggPT09IC0xKSB7CgkgICAgICAgICAgICAgICAgcG9pbnRzW29mZnNldF0gPSAwLjA7CgkgICAgICAgICAgICAgICAgbnVkZ2VkID0gdHJ1ZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgaWYgKHggPT09IHdpZHRoKSB7CgkgICAgICAgICAgICAgICAgcG9pbnRzW29mZnNldF0gPSB3aWR0aCAtIDE7CgkgICAgICAgICAgICAgICAgbnVkZ2VkID0gdHJ1ZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmICh5ID09PSAtMSkgewoJICAgICAgICAgICAgICAgIHBvaW50c1tvZmZzZXQgKyAxXSA9IDAuMDsKCSAgICAgICAgICAgICAgICBudWRnZWQgPSB0cnVlOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSBpZiAoeSA9PT0gaGVpZ2h0KSB7CgkgICAgICAgICAgICAgICAgcG9pbnRzW29mZnNldCArIDFdID0gaGVpZ2h0IC0gMTsKCSAgICAgICAgICAgICAgICBudWRnZWQgPSB0cnVlOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfTsKCSAgICByZXR1cm4gR3JpZFNhbXBsZXI7Cgl9KCkpOwoJR3JpZFNhbXBsZXIkMS5kZWZhdWx0ID0gR3JpZFNhbXBsZXI7CgoJdmFyIFBlcnNwZWN0aXZlVHJhbnNmb3JtJDEgPSB7fTsKCgkvKgoJICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KFBlcnNwZWN0aXZlVHJhbnNmb3JtJDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcuY29tbW9uIHsqLwoJLyoqCgkgKiA8cD5UaGlzIGNsYXNzIGltcGxlbWVudHMgYSBwZXJzcGVjdGl2ZSB0cmFuc2Zvcm0gaW4gdHdvIGRpbWVuc2lvbnMuIEdpdmVuIGZvdXIgc291cmNlIGFuZCBmb3VyCgkgKiBkZXN0aW5hdGlvbiBwb2ludHMsIGl0IHdpbGwgY29tcHV0ZSB0aGUgdHJhbnNmb3JtYXRpb24gaW1wbGllZCBiZXR3ZWVuIHRoZW0uIFRoZSBjb2RlIGlzIGJhc2VkCgkgKiBkaXJlY3RseSB1cG9uIHNlY3Rpb24gMy40LjIgb2YgR2VvcmdlIFdvbGJlcmcncyAiRGlnaXRhbCBJbWFnZSBXYXJwaW5nIjsgc2VlIHBhZ2VzIDU0LTU2LjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgUGVyc3BlY3RpdmVUcmFuc2Zvcm0gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gUGVyc3BlY3RpdmVUcmFuc2Zvcm0oYTExIC8qZmxvYXQqLywgYTIxIC8qZmxvYXQqLywgYTMxIC8qZmxvYXQqLywgYTEyIC8qZmxvYXQqLywgYTIyIC8qZmxvYXQqLywgYTMyIC8qZmxvYXQqLywgYTEzIC8qZmxvYXQqLywgYTIzIC8qZmxvYXQqLywgYTMzIC8qZmxvYXQqLykgewoJICAgICAgICB0aGlzLmExMSA9IGExMTsKCSAgICAgICAgdGhpcy5hMjEgPSBhMjE7CgkgICAgICAgIHRoaXMuYTMxID0gYTMxOwoJICAgICAgICB0aGlzLmExMiA9IGExMjsKCSAgICAgICAgdGhpcy5hMjIgPSBhMjI7CgkgICAgICAgIHRoaXMuYTMyID0gYTMyOwoJICAgICAgICB0aGlzLmExMyA9IGExMzsKCSAgICAgICAgdGhpcy5hMjMgPSBhMjM7CgkgICAgICAgIHRoaXMuYTMzID0gYTMzOwoJICAgIH0KCSAgICBQZXJzcGVjdGl2ZVRyYW5zZm9ybS5xdWFkcmlsYXRlcmFsVG9RdWFkcmlsYXRlcmFsID0gZnVuY3Rpb24gKHgwIC8qZmxvYXQqLywgeTAgLypmbG9hdCovLCB4MSAvKmZsb2F0Ki8sIHkxIC8qZmxvYXQqLywgeDIgLypmbG9hdCovLCB5MiAvKmZsb2F0Ki8sIHgzIC8qZmxvYXQqLywgeTMgLypmbG9hdCovLCB4MHAgLypmbG9hdCovLCB5MHAgLypmbG9hdCovLCB4MXAgLypmbG9hdCovLCB5MXAgLypmbG9hdCovLCB4MnAgLypmbG9hdCovLCB5MnAgLypmbG9hdCovLCB4M3AgLypmbG9hdCovLCB5M3AgLypmbG9hdCovKSB7CgkgICAgICAgIHZhciBxVG9TID0gUGVyc3BlY3RpdmVUcmFuc2Zvcm0ucXVhZHJpbGF0ZXJhbFRvU3F1YXJlKHgwLCB5MCwgeDEsIHkxLCB4MiwgeTIsIHgzLCB5Myk7CgkgICAgICAgIHZhciBzVG9RID0gUGVyc3BlY3RpdmVUcmFuc2Zvcm0uc3F1YXJlVG9RdWFkcmlsYXRlcmFsKHgwcCwgeTBwLCB4MXAsIHkxcCwgeDJwLCB5MnAsIHgzcCwgeTNwKTsKCSAgICAgICAgcmV0dXJuIHNUb1EudGltZXMocVRvUyk7CgkgICAgfTsKCSAgICBQZXJzcGVjdGl2ZVRyYW5zZm9ybS5wcm90b3R5cGUudHJhbnNmb3JtUG9pbnRzID0gZnVuY3Rpb24gKHBvaW50cykgewoJICAgICAgICB2YXIgbWF4ID0gcG9pbnRzLmxlbmd0aDsKCSAgICAgICAgdmFyIGExMSA9IHRoaXMuYTExOwoJICAgICAgICB2YXIgYTEyID0gdGhpcy5hMTI7CgkgICAgICAgIHZhciBhMTMgPSB0aGlzLmExMzsKCSAgICAgICAgdmFyIGEyMSA9IHRoaXMuYTIxOwoJICAgICAgICB2YXIgYTIyID0gdGhpcy5hMjI7CgkgICAgICAgIHZhciBhMjMgPSB0aGlzLmEyMzsKCSAgICAgICAgdmFyIGEzMSA9IHRoaXMuYTMxOwoJICAgICAgICB2YXIgYTMyID0gdGhpcy5hMzI7CgkgICAgICAgIHZhciBhMzMgPSB0aGlzLmEzMzsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXg7IGkgKz0gMikgewoJICAgICAgICAgICAgdmFyIHggPSBwb2ludHNbaV07CgkgICAgICAgICAgICB2YXIgeSA9IHBvaW50c1tpICsgMV07CgkgICAgICAgICAgICB2YXIgZGVub21pbmF0b3IgPSBhMTMgKiB4ICsgYTIzICogeSArIGEzMzsKCSAgICAgICAgICAgIHBvaW50c1tpXSA9IChhMTEgKiB4ICsgYTIxICogeSArIGEzMSkgLyBkZW5vbWluYXRvcjsKCSAgICAgICAgICAgIHBvaW50c1tpICsgMV0gPSAoYTEyICogeCArIGEyMiAqIHkgKyBhMzIpIC8gZGVub21pbmF0b3I7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIFBlcnNwZWN0aXZlVHJhbnNmb3JtLnByb3RvdHlwZS50cmFuc2Zvcm1Qb2ludHNXaXRoVmFsdWVzID0gZnVuY3Rpb24gKHhWYWx1ZXMsIHlWYWx1ZXMpIHsKCSAgICAgICAgdmFyIGExMSA9IHRoaXMuYTExOwoJICAgICAgICB2YXIgYTEyID0gdGhpcy5hMTI7CgkgICAgICAgIHZhciBhMTMgPSB0aGlzLmExMzsKCSAgICAgICAgdmFyIGEyMSA9IHRoaXMuYTIxOwoJICAgICAgICB2YXIgYTIyID0gdGhpcy5hMjI7CgkgICAgICAgIHZhciBhMjMgPSB0aGlzLmEyMzsKCSAgICAgICAgdmFyIGEzMSA9IHRoaXMuYTMxOwoJICAgICAgICB2YXIgYTMyID0gdGhpcy5hMzI7CgkgICAgICAgIHZhciBhMzMgPSB0aGlzLmEzMzsKCSAgICAgICAgdmFyIG4gPSB4VmFsdWVzLmxlbmd0aDsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKCSAgICAgICAgICAgIHZhciB4ID0geFZhbHVlc1tpXTsKCSAgICAgICAgICAgIHZhciB5ID0geVZhbHVlc1tpXTsKCSAgICAgICAgICAgIHZhciBkZW5vbWluYXRvciA9IGExMyAqIHggKyBhMjMgKiB5ICsgYTMzOwoJICAgICAgICAgICAgeFZhbHVlc1tpXSA9IChhMTEgKiB4ICsgYTIxICogeSArIGEzMSkgLyBkZW5vbWluYXRvcjsKCSAgICAgICAgICAgIHlWYWx1ZXNbaV0gPSAoYTEyICogeCArIGEyMiAqIHkgKyBhMzIpIC8gZGVub21pbmF0b3I7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIFBlcnNwZWN0aXZlVHJhbnNmb3JtLnNxdWFyZVRvUXVhZHJpbGF0ZXJhbCA9IGZ1bmN0aW9uICh4MCAvKmZsb2F0Ki8sIHkwIC8qZmxvYXQqLywgeDEgLypmbG9hdCovLCB5MSAvKmZsb2F0Ki8sIHgyIC8qZmxvYXQqLywgeTIgLypmbG9hdCovLCB4MyAvKmZsb2F0Ki8sIHkzIC8qZmxvYXQqLykgewoJICAgICAgICB2YXIgZHgzID0geDAgLSB4MSArIHgyIC0geDM7CgkgICAgICAgIHZhciBkeTMgPSB5MCAtIHkxICsgeTIgLSB5MzsKCSAgICAgICAgaWYgKGR4MyA9PT0gMC4wICYmIGR5MyA9PT0gMC4wKSB7CgkgICAgICAgICAgICAvLyBBZmZpbmUKCSAgICAgICAgICAgIHJldHVybiBuZXcgUGVyc3BlY3RpdmVUcmFuc2Zvcm0oeDEgLSB4MCwgeDIgLSB4MSwgeDAsIHkxIC0geTAsIHkyIC0geTEsIHkwLCAwLjAsIDAuMCwgMS4wKTsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIHZhciBkeDEgPSB4MSAtIHgyOwoJICAgICAgICAgICAgdmFyIGR4MiA9IHgzIC0geDI7CgkgICAgICAgICAgICB2YXIgZHkxID0geTEgLSB5MjsKCSAgICAgICAgICAgIHZhciBkeTIgPSB5MyAtIHkyOwoJICAgICAgICAgICAgdmFyIGRlbm9taW5hdG9yID0gZHgxICogZHkyIC0gZHgyICogZHkxOwoJICAgICAgICAgICAgdmFyIGExMyA9IChkeDMgKiBkeTIgLSBkeDIgKiBkeTMpIC8gZGVub21pbmF0b3I7CgkgICAgICAgICAgICB2YXIgYTIzID0gKGR4MSAqIGR5MyAtIGR4MyAqIGR5MSkgLyBkZW5vbWluYXRvcjsKCSAgICAgICAgICAgIHJldHVybiBuZXcgUGVyc3BlY3RpdmVUcmFuc2Zvcm0oeDEgLSB4MCArIGExMyAqIHgxLCB4MyAtIHgwICsgYTIzICogeDMsIHgwLCB5MSAtIHkwICsgYTEzICogeTEsIHkzIC0geTAgKyBhMjMgKiB5MywgeTAsIGExMywgYTIzLCAxLjApOwoJICAgICAgICB9CgkgICAgfTsKCSAgICBQZXJzcGVjdGl2ZVRyYW5zZm9ybS5xdWFkcmlsYXRlcmFsVG9TcXVhcmUgPSBmdW5jdGlvbiAoeDAgLypmbG9hdCovLCB5MCAvKmZsb2F0Ki8sIHgxIC8qZmxvYXQqLywgeTEgLypmbG9hdCovLCB4MiAvKmZsb2F0Ki8sIHkyIC8qZmxvYXQqLywgeDMgLypmbG9hdCovLCB5MyAvKmZsb2F0Ki8pIHsKCSAgICAgICAgLy8gSGVyZSwgdGhlIGFkam9pbnQgc2VydmVzIGFzIHRoZSBpbnZlcnNlOgoJICAgICAgICByZXR1cm4gUGVyc3BlY3RpdmVUcmFuc2Zvcm0uc3F1YXJlVG9RdWFkcmlsYXRlcmFsKHgwLCB5MCwgeDEsIHkxLCB4MiwgeTIsIHgzLCB5MykuYnVpbGRBZGpvaW50KCk7CgkgICAgfTsKCSAgICBQZXJzcGVjdGl2ZVRyYW5zZm9ybS5wcm90b3R5cGUuYnVpbGRBZGpvaW50ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICAvLyBBZGpvaW50IGlzIHRoZSB0cmFuc3Bvc2Ugb2YgdGhlIGNvZmFjdG9yIG1hdHJpeDoKCSAgICAgICAgcmV0dXJuIG5ldyBQZXJzcGVjdGl2ZVRyYW5zZm9ybSh0aGlzLmEyMiAqIHRoaXMuYTMzIC0gdGhpcy5hMjMgKiB0aGlzLmEzMiwgdGhpcy5hMjMgKiB0aGlzLmEzMSAtIHRoaXMuYTIxICogdGhpcy5hMzMsIHRoaXMuYTIxICogdGhpcy5hMzIgLSB0aGlzLmEyMiAqIHRoaXMuYTMxLCB0aGlzLmExMyAqIHRoaXMuYTMyIC0gdGhpcy5hMTIgKiB0aGlzLmEzMywgdGhpcy5hMTEgKiB0aGlzLmEzMyAtIHRoaXMuYTEzICogdGhpcy5hMzEsIHRoaXMuYTEyICogdGhpcy5hMzEgLSB0aGlzLmExMSAqIHRoaXMuYTMyLCB0aGlzLmExMiAqIHRoaXMuYTIzIC0gdGhpcy5hMTMgKiB0aGlzLmEyMiwgdGhpcy5hMTMgKiB0aGlzLmEyMSAtIHRoaXMuYTExICogdGhpcy5hMjMsIHRoaXMuYTExICogdGhpcy5hMjIgLSB0aGlzLmExMiAqIHRoaXMuYTIxKTsKCSAgICB9OwoJICAgIFBlcnNwZWN0aXZlVHJhbnNmb3JtLnByb3RvdHlwZS50aW1lcyA9IGZ1bmN0aW9uIChvdGhlcikgewoJICAgICAgICByZXR1cm4gbmV3IFBlcnNwZWN0aXZlVHJhbnNmb3JtKHRoaXMuYTExICogb3RoZXIuYTExICsgdGhpcy5hMjEgKiBvdGhlci5hMTIgKyB0aGlzLmEzMSAqIG90aGVyLmExMywgdGhpcy5hMTEgKiBvdGhlci5hMjEgKyB0aGlzLmEyMSAqIG90aGVyLmEyMiArIHRoaXMuYTMxICogb3RoZXIuYTIzLCB0aGlzLmExMSAqIG90aGVyLmEzMSArIHRoaXMuYTIxICogb3RoZXIuYTMyICsgdGhpcy5hMzEgKiBvdGhlci5hMzMsIHRoaXMuYTEyICogb3RoZXIuYTExICsgdGhpcy5hMjIgKiBvdGhlci5hMTIgKyB0aGlzLmEzMiAqIG90aGVyLmExMywgdGhpcy5hMTIgKiBvdGhlci5hMjEgKyB0aGlzLmEyMiAqIG90aGVyLmEyMiArIHRoaXMuYTMyICogb3RoZXIuYTIzLCB0aGlzLmExMiAqIG90aGVyLmEzMSArIHRoaXMuYTIyICogb3RoZXIuYTMyICsgdGhpcy5hMzIgKiBvdGhlci5hMzMsIHRoaXMuYTEzICogb3RoZXIuYTExICsgdGhpcy5hMjMgKiBvdGhlci5hMTIgKyB0aGlzLmEzMyAqIG90aGVyLmExMywgdGhpcy5hMTMgKiBvdGhlci5hMjEgKyB0aGlzLmEyMyAqIG90aGVyLmEyMiArIHRoaXMuYTMzICogb3RoZXIuYTIzLCB0aGlzLmExMyAqIG90aGVyLmEzMSArIHRoaXMuYTIzICogb3RoZXIuYTMyICsgdGhpcy5hMzMgKiBvdGhlci5hMzMpOwoJICAgIH07CgkgICAgcmV0dXJuIFBlcnNwZWN0aXZlVHJhbnNmb3JtOwoJfSgpKTsKCVBlcnNwZWN0aXZlVHJhbnNmb3JtJDEuZGVmYXVsdCA9IFBlcnNwZWN0aXZlVHJhbnNmb3JtOwoKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCgl2YXIgX19leHRlbmRzJDIgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoRGVmYXVsdEdyaWRTYW1wbGVyJDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcuY29tbW9uIHsqLwoJdmFyIEdyaWRTYW1wbGVyXzEgPSBHcmlkU2FtcGxlciQxOwoJdmFyIEJpdE1hdHJpeF8xJDEgPSBCaXRNYXRyaXgkMTsKCXZhciBQZXJzcGVjdGl2ZVRyYW5zZm9ybV8xJDEgPSBQZXJzcGVjdGl2ZVRyYW5zZm9ybSQxOwoJdmFyIE5vdEZvdW5kRXhjZXB0aW9uXzEkNCA9IE5vdEZvdW5kRXhjZXB0aW9uJDE7CgkvKioKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKi8KCXZhciBEZWZhdWx0R3JpZFNhbXBsZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzJDIoRGVmYXVsdEdyaWRTYW1wbGVyLCBfc3VwZXIpOwoJICAgIGZ1bmN0aW9uIERlZmF1bHRHcmlkU2FtcGxlcigpIHsKCSAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzOwoJICAgIH0KCSAgICAvKkBPdmVycmlkZSovCgkgICAgRGVmYXVsdEdyaWRTYW1wbGVyLnByb3RvdHlwZS5zYW1wbGVHcmlkID0gZnVuY3Rpb24gKGltYWdlLCBkaW1lbnNpb25YIC8qaW50Ki8sIGRpbWVuc2lvblkgLyppbnQqLywgcDFUb1ggLypmbG9hdCovLCBwMVRvWSAvKmZsb2F0Ki8sIHAyVG9YIC8qZmxvYXQqLywgcDJUb1kgLypmbG9hdCovLCBwM1RvWCAvKmZsb2F0Ki8sIHAzVG9ZIC8qZmxvYXQqLywgcDRUb1ggLypmbG9hdCovLCBwNFRvWSAvKmZsb2F0Ki8sIHAxRnJvbVggLypmbG9hdCovLCBwMUZyb21ZIC8qZmxvYXQqLywgcDJGcm9tWCAvKmZsb2F0Ki8sIHAyRnJvbVkgLypmbG9hdCovLCBwM0Zyb21YIC8qZmxvYXQqLywgcDNGcm9tWSAvKmZsb2F0Ki8sIHA0RnJvbVggLypmbG9hdCovLCBwNEZyb21ZIC8qZmxvYXQqLykgewoJICAgICAgICB2YXIgdHJhbnNmb3JtID0gUGVyc3BlY3RpdmVUcmFuc2Zvcm1fMSQxLmRlZmF1bHQucXVhZHJpbGF0ZXJhbFRvUXVhZHJpbGF0ZXJhbChwMVRvWCwgcDFUb1ksIHAyVG9YLCBwMlRvWSwgcDNUb1gsIHAzVG9ZLCBwNFRvWCwgcDRUb1ksIHAxRnJvbVgsIHAxRnJvbVksIHAyRnJvbVgsIHAyRnJvbVksIHAzRnJvbVgsIHAzRnJvbVksIHA0RnJvbVgsIHA0RnJvbVkpOwoJICAgICAgICByZXR1cm4gdGhpcy5zYW1wbGVHcmlkV2l0aFRyYW5zZm9ybShpbWFnZSwgZGltZW5zaW9uWCwgZGltZW5zaW9uWSwgdHJhbnNmb3JtKTsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBEZWZhdWx0R3JpZFNhbXBsZXIucHJvdG90eXBlLnNhbXBsZUdyaWRXaXRoVHJhbnNmb3JtID0gZnVuY3Rpb24gKGltYWdlLCBkaW1lbnNpb25YIC8qaW50Ki8sIGRpbWVuc2lvblkgLyppbnQqLywgdHJhbnNmb3JtKSB7CgkgICAgICAgIGlmIChkaW1lbnNpb25YIDw9IDAgfHwgZGltZW5zaW9uWSA8PSAwKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMSQ0LmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgYml0cyA9IG5ldyBCaXRNYXRyaXhfMSQxLmRlZmF1bHQoZGltZW5zaW9uWCwgZGltZW5zaW9uWSk7CgkgICAgICAgIHZhciBwb2ludHMgPSBuZXcgRmxvYXQzMkFycmF5KDIgKiBkaW1lbnNpb25YKTsKCSAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBkaW1lbnNpb25ZOyB5KyspIHsKCSAgICAgICAgICAgIHZhciBtYXggPSBwb2ludHMubGVuZ3RoOwoJICAgICAgICAgICAgdmFyIGlWYWx1ZSA9IHkgKyAwLjU7CgkgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IG1heDsgeCArPSAyKSB7CgkgICAgICAgICAgICAgICAgcG9pbnRzW3hdID0gKHggLyAyKSArIDAuNTsKCSAgICAgICAgICAgICAgICBwb2ludHNbeCArIDFdID0gaVZhbHVlOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdHJhbnNmb3JtLnRyYW5zZm9ybVBvaW50cyhwb2ludHMpOwoJICAgICAgICAgICAgLy8gUXVpY2sgY2hlY2sgdG8gc2VlIGlmIHBvaW50cyB0cmFuc2Zvcm1lZCB0byBzb21ldGhpbmcgaW5zaWRlIHRoZSBpbWFnZQoJICAgICAgICAgICAgLy8gc3VmZmljaWVudCB0byBjaGVjayB0aGUgZW5kcG9pbnRzCgkgICAgICAgICAgICBHcmlkU2FtcGxlcl8xLmRlZmF1bHQuY2hlY2tBbmROdWRnZVBvaW50cyhpbWFnZSwgcG9pbnRzKTsKCSAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBtYXg7IHggKz0gMikgewoJICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UuZ2V0KE1hdGguZmxvb3IocG9pbnRzW3hdKSwgTWF0aC5mbG9vcihwb2ludHNbeCArIDFdKSkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJsYWNrKC1pc2gpIHBpeGVsCgkgICAgICAgICAgICAgICAgICAgICAgICBiaXRzLnNldCh4IC8gMiwgeSk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBjYXRjaCAoYWlvb2JlIC8qOiBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24qLykgewoJICAgICAgICAgICAgICAgIC8vIFRoaXMgZmVlbHMgd3JvbmcsIGJ1dCwgc29tZXRpbWVzIGlmIHRoZSBmaW5kZXIgcGF0dGVybnMgYXJlIG1pc2lkZW50aWZpZWQsIHRoZSByZXN1bHRpbmcKCSAgICAgICAgICAgICAgICAvLyB0cmFuc2Zvcm0gZ2V0cyAidHdpc3RlZCIgc3VjaCB0aGF0IGl0IG1hcHMgYSBzdHJhaWdodCBsaW5lIG9mIHBvaW50cyB0byBhIHNldCBvZiBwb2ludHMKCSAgICAgICAgICAgICAgICAvLyB3aG9zZSBlbmRwb2ludHMgYXJlIGluIGJvdW5kcywgYnV0IG90aGVycyBhcmUgbm90LiBUaGVyZSBpcyBwcm9iYWJseSBzb21lIG1hdGhlbWF0aWNhbAoJICAgICAgICAgICAgICAgIC8vIHdheSB0byBkZXRlY3QgdGhpcyBhYm91dCB0aGUgdHJhbnNmb3JtYXRpb24gdGhhdCBJIGRvbid0IGtub3cgeWV0LgoJICAgICAgICAgICAgICAgIC8vIFRoaXMgcmVzdWx0cyBpbiBhbiB1Z2x5IHJ1bnRpbWUgZXhjZXB0aW9uIGRlc3BpdGUgb3VyIGNsZXZlciBjaGVja3MgYWJvdmUgLS0gY2FuJ3QgaGF2ZQoJICAgICAgICAgICAgICAgIC8vIHRoYXQuIFdlIGNvdWxkIGNoZWNrIGVhY2ggcG9pbnQncyBjb29yZGluYXRlcyBidXQgdGhhdCBmZWVscyBkdXBsaWNhdGl2ZS4gV2Ugc2V0dGxlIGZvcgoJICAgICAgICAgICAgICAgIC8vIGNhdGNoaW5nIGFuZCB3cmFwcGluZyBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24uCgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEkNC5kZWZhdWx0KCk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGJpdHM7CgkgICAgfTsKCSAgICByZXR1cm4gRGVmYXVsdEdyaWRTYW1wbGVyOwoJfShHcmlkU2FtcGxlcl8xLmRlZmF1bHQpKTsKCURlZmF1bHRHcmlkU2FtcGxlciQxLmRlZmF1bHQgPSBEZWZhdWx0R3JpZFNhbXBsZXI7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KEdyaWRTYW1wbGVySW5zdGFuY2UkMSwgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJdmFyIERlZmF1bHRHcmlkU2FtcGxlcl8xID0gRGVmYXVsdEdyaWRTYW1wbGVyJDE7Cgl2YXIgR3JpZFNhbXBsZXJJbnN0YW5jZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBHcmlkU2FtcGxlckluc3RhbmNlKCkgewoJICAgIH0KCSAgICAvKioKCSAgICAgKiBTZXRzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBHcmlkU2FtcGxlciB1c2VkIGJ5IHRoZSBsaWJyYXJ5LiBPbmUgZ2xvYmFsCgkgICAgICogaW5zdGFuY2UgaXMgc3RvcmVkLCB3aGljaCBtYXkgc291bmQgcHJvYmxlbWF0aWMuIEJ1dCwgdGhlIGltcGxlbWVudGF0aW9uIHByb3ZpZGVkCgkgICAgICogb3VnaHQgdG8gYmUgYXBwcm9wcmlhdGUgZm9yIHRoZSBlbnRpcmUgcGxhdGZvcm0sIGFuZCBhbGwgdXNlcyBvZiB0aGlzIGxpYnJhcnkKCSAgICAgKiBpbiB0aGUgd2hvbGUgbGlmZXRpbWUgb2YgdGhlIEpWTS4gRm9yIGluc3RhbmNlLCBhbiBBbmRyb2lkIGFjdGl2aXR5IGNhbiBzd2FwIGluCgkgICAgICogYW4gaW1wbGVtZW50YXRpb24gdGhhdCB0YWtlcyBhZHZhbnRhZ2Ugb2YgbmF0aXZlIHBsYXRmb3JtIGxpYnJhcmllcy4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBuZXdHcmlkU2FtcGxlciBUaGUgcGxhdGZvcm0tc3BlY2lmaWMgb2JqZWN0IHRvIGluc3RhbGwuCgkgICAgICovCgkgICAgR3JpZFNhbXBsZXJJbnN0YW5jZS5zZXRHcmlkU2FtcGxlciA9IGZ1bmN0aW9uIChuZXdHcmlkU2FtcGxlcikgewoJICAgICAgICBHcmlkU2FtcGxlckluc3RhbmNlLmdyaWRTYW1wbGVyID0gbmV3R3JpZFNhbXBsZXI7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIEdyaWRTYW1wbGVyCgkgICAgICovCgkgICAgR3JpZFNhbXBsZXJJbnN0YW5jZS5nZXRJbnN0YW5jZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIEdyaWRTYW1wbGVySW5zdGFuY2UuZ3JpZFNhbXBsZXI7CgkgICAgfTsKCSAgICBHcmlkU2FtcGxlckluc3RhbmNlLmdyaWRTYW1wbGVyID0gbmV3IERlZmF1bHRHcmlkU2FtcGxlcl8xLmRlZmF1bHQoKTsKCSAgICByZXR1cm4gR3JpZFNhbXBsZXJJbnN0YW5jZTsKCX0oKSk7CglHcmlkU2FtcGxlckluc3RhbmNlJDEuZGVmYXVsdCA9IEdyaWRTYW1wbGVySW5zdGFuY2U7CgoJdmFyIFJlc3VsdFBvaW50JDEgPSB7fTsKCgl2YXIgRmxvYXQkMSA9IHt9OwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShGbG9hdCQxLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKioKCSAqIFBvbnlmaWxsIGZvciBKYXZhJ3MgRmxvYXQgY2xhc3MuCgkgKi8KCXZhciBGbG9hdCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBGbG9hdCgpIHsKCSAgICB9CgkgICAgLyoqCgkgICAgICogU2luY1RTIGhhcyBubyBkaWZmZXJlbmNlIGJldHdlZW4gaW50IGFuZCBmbG9hdCwgdGhlcmUncyBhbGwgbnVtYmVycywKCSAgICAgKiB0aGlzIGlzIHVzZWQgb25seSB0byBwb2x5ZmlsbCBKYXZhIGNvZGUuCgkgICAgICovCgkgICAgRmxvYXQuZmxvYXRUb0ludEJpdHMgPSBmdW5jdGlvbiAoZikgewoJICAgICAgICByZXR1cm4gZjsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFRoZSBmbG9hdCBtYXggdmFsdWUgaW4gSlMgaXMgdGhlIG51bWJlciBtYXggdmFsdWUuCgkgICAgICovCgkgICAgRmxvYXQuTUFYX1ZBTFVFID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7CgkgICAgcmV0dXJuIEZsb2F0OwoJfSgpKTsKCUZsb2F0JDEuZGVmYXVsdCA9IEZsb2F0OwoKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVzdWx0UG9pbnQkMSwgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZyB7Ki8KCXZhciBNYXRoVXRpbHNfMSQxID0gTWF0aFV0aWxzJDE7Cgl2YXIgRmxvYXRfMSA9IEZsb2F0JDE7CgkvKioKCSAqIDxwPkVuY2Fwc3VsYXRlcyBhIHBvaW50IG9mIGludGVyZXN0IGluIGFuIGltYWdlIGNvbnRhaW5pbmcgYSBiYXJjb2RlLiBUeXBpY2FsbHksIHRoaXMKCSAqIHdvdWxkIGJlIHRoZSBsb2NhdGlvbiBvZiBhIGZpbmRlciBwYXR0ZXJuIG9yIHRoZSBjb3JuZXIgb2YgdGhlIGJhcmNvZGUsIGZvciBleGFtcGxlLjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgUmVzdWx0UG9pbnQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gUmVzdWx0UG9pbnQoeCwgeSkgewoJICAgICAgICB0aGlzLnggPSB4OwoJICAgICAgICB0aGlzLnkgPSB5OwoJICAgIH0KCSAgICBSZXN1bHRQb2ludC5wcm90b3R5cGUuZ2V0WCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMueDsKCSAgICB9OwoJICAgIFJlc3VsdFBvaW50LnByb3RvdHlwZS5nZXRZID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy55OwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIFJlc3VsdFBvaW50LnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAob3RoZXIpIHsKCSAgICAgICAgaWYgKG90aGVyIGluc3RhbmNlb2YgUmVzdWx0UG9pbnQpIHsKCSAgICAgICAgICAgIHZhciBvdGhlclBvaW50ID0gb3RoZXI7CgkgICAgICAgICAgICByZXR1cm4gdGhpcy54ID09PSBvdGhlclBvaW50LnggJiYgdGhpcy55ID09PSBvdGhlclBvaW50Lnk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIFJlc3VsdFBvaW50LnByb3RvdHlwZS5oYXNoQ29kZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIDMxICogRmxvYXRfMS5kZWZhdWx0LmZsb2F0VG9JbnRCaXRzKHRoaXMueCkgKyBGbG9hdF8xLmRlZmF1bHQuZmxvYXRUb0ludEJpdHModGhpcy55KTsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBSZXN1bHRQb2ludC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiAnKCcgKyB0aGlzLnggKyAnLCcgKyB0aGlzLnkgKyAnKSc7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBPcmRlcnMgYW4gYXJyYXkgb2YgdGhyZWUgUmVzdWx0UG9pbnRzIGluIGFuIG9yZGVyIFtBLEIsQ10gc3VjaCB0aGF0IEFCIGlzIGxlc3MgdGhhbiBBQwoJICAgICAqIGFuZCBCQyBpcyBsZXNzIHRoYW4gQUMsIGFuZCB0aGUgYW5nbGUgYmV0d2VlbiBCQyBhbmQgQkEgaXMgbGVzcyB0aGFuIDE4MCBkZWdyZWVzLgoJICAgICAqCgkgICAgICogQHBhcmFtIHBhdHRlcm5zIGFycmF5IG9mIHRocmVlIHtAY29kZSBSZXN1bHRQb2ludH0gdG8gb3JkZXIKCSAgICAgKi8KCSAgICBSZXN1bHRQb2ludC5vcmRlckJlc3RQYXR0ZXJucyA9IGZ1bmN0aW9uIChwYXR0ZXJucykgewoJICAgICAgICAvLyBGaW5kIGRpc3RhbmNlcyBiZXR3ZWVuIHBhdHRlcm4gY2VudGVycwoJICAgICAgICB2YXIgemVyb09uZURpc3RhbmNlID0gdGhpcy5kaXN0YW5jZShwYXR0ZXJuc1swXSwgcGF0dGVybnNbMV0pOwoJICAgICAgICB2YXIgb25lVHdvRGlzdGFuY2UgPSB0aGlzLmRpc3RhbmNlKHBhdHRlcm5zWzFdLCBwYXR0ZXJuc1syXSk7CgkgICAgICAgIHZhciB6ZXJvVHdvRGlzdGFuY2UgPSB0aGlzLmRpc3RhbmNlKHBhdHRlcm5zWzBdLCBwYXR0ZXJuc1syXSk7CgkgICAgICAgIHZhciBwb2ludEE7CgkgICAgICAgIHZhciBwb2ludEI7CgkgICAgICAgIHZhciBwb2ludEM7CgkgICAgICAgIC8vIEFzc3VtZSBvbmUgY2xvc2VzdCB0byBvdGhlciB0d28gaXMgQjsgQSBhbmQgQyB3aWxsIGp1c3QgYmUgZ3Vlc3NlcyBhdCBmaXJzdAoJICAgICAgICBpZiAob25lVHdvRGlzdGFuY2UgPj0gemVyb09uZURpc3RhbmNlICYmIG9uZVR3b0Rpc3RhbmNlID49IHplcm9Ud29EaXN0YW5jZSkgewoJICAgICAgICAgICAgcG9pbnRCID0gcGF0dGVybnNbMF07CgkgICAgICAgICAgICBwb2ludEEgPSBwYXR0ZXJuc1sxXTsKCSAgICAgICAgICAgIHBvaW50QyA9IHBhdHRlcm5zWzJdOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgaWYgKHplcm9Ud29EaXN0YW5jZSA+PSBvbmVUd29EaXN0YW5jZSAmJiB6ZXJvVHdvRGlzdGFuY2UgPj0gemVyb09uZURpc3RhbmNlKSB7CgkgICAgICAgICAgICBwb2ludEIgPSBwYXR0ZXJuc1sxXTsKCSAgICAgICAgICAgIHBvaW50QSA9IHBhdHRlcm5zWzBdOwoJICAgICAgICAgICAgcG9pbnRDID0gcGF0dGVybnNbMl07CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICBwb2ludEIgPSBwYXR0ZXJuc1syXTsKCSAgICAgICAgICAgIHBvaW50QSA9IHBhdHRlcm5zWzBdOwoJICAgICAgICAgICAgcG9pbnRDID0gcGF0dGVybnNbMV07CgkgICAgICAgIH0KCSAgICAgICAgLy8gVXNlIGNyb3NzIHByb2R1Y3QgdG8gZmlndXJlIG91dCB3aGV0aGVyIEEgYW5kIEMgYXJlIGNvcnJlY3Qgb3IgZmxpcHBlZC4KCSAgICAgICAgLy8gVGhpcyBhc2tzIHdoZXRoZXIgQkMgeCBCQSBoYXMgYSBwb3NpdGl2ZSB6IGNvbXBvbmVudCwgd2hpY2ggaXMgdGhlIGFycmFuZ2VtZW50CgkgICAgICAgIC8vIHdlIHdhbnQgZm9yIEEsIEIsIEMuIElmIGl0J3MgbmVnYXRpdmUsIHRoZW4gd2UndmUgZ290IGl0IGZsaXBwZWQgYXJvdW5kIGFuZAoJICAgICAgICAvLyBzaG91bGQgc3dhcCBBIGFuZCBDLgoJICAgICAgICBpZiAodGhpcy5jcm9zc1Byb2R1Y3RaKHBvaW50QSwgcG9pbnRCLCBwb2ludEMpIDwgMC4wKSB7CgkgICAgICAgICAgICB2YXIgdGVtcCA9IHBvaW50QTsKCSAgICAgICAgICAgIHBvaW50QSA9IHBvaW50QzsKCSAgICAgICAgICAgIHBvaW50QyA9IHRlbXA7CgkgICAgICAgIH0KCSAgICAgICAgcGF0dGVybnNbMF0gPSBwb2ludEE7CgkgICAgICAgIHBhdHRlcm5zWzFdID0gcG9pbnRCOwoJICAgICAgICBwYXR0ZXJuc1syXSA9IHBvaW50QzsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEBwYXJhbSBwYXR0ZXJuMSBmaXJzdCBwYXR0ZXJuCgkgICAgICogQHBhcmFtIHBhdHRlcm4yIHNlY29uZCBwYXR0ZXJuCgkgICAgICogQHJldHVybiBkaXN0YW5jZSBiZXR3ZWVuIHR3byBwb2ludHMKCSAgICAgKi8KCSAgICBSZXN1bHRQb2ludC5kaXN0YW5jZSA9IGZ1bmN0aW9uIChwYXR0ZXJuMSwgcGF0dGVybjIpIHsKCSAgICAgICAgcmV0dXJuIE1hdGhVdGlsc18xJDEuZGVmYXVsdC5kaXN0YW5jZShwYXR0ZXJuMS54LCBwYXR0ZXJuMS55LCBwYXR0ZXJuMi54LCBwYXR0ZXJuMi55KTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFJldHVybnMgdGhlIHogY29tcG9uZW50IG9mIHRoZSBjcm9zcyBwcm9kdWN0IGJldHdlZW4gdmVjdG9ycyBCQyBhbmQgQkEuCgkgICAgICovCgkgICAgUmVzdWx0UG9pbnQuY3Jvc3NQcm9kdWN0WiA9IGZ1bmN0aW9uIChwb2ludEEsIHBvaW50QiwgcG9pbnRDKSB7CgkgICAgICAgIHZhciBiWCA9IHBvaW50Qi54OwoJICAgICAgICB2YXIgYlkgPSBwb2ludEIueTsKCSAgICAgICAgcmV0dXJuICgocG9pbnRDLnggLSBiWCkgKiAocG9pbnRBLnkgLSBiWSkpIC0gKChwb2ludEMueSAtIGJZKSAqIChwb2ludEEueCAtIGJYKSk7CgkgICAgfTsKCSAgICByZXR1cm4gUmVzdWx0UG9pbnQ7Cgl9KCkpOwoJUmVzdWx0UG9pbnQkMS5kZWZhdWx0ID0gUmVzdWx0UG9pbnQ7CgoJdmFyIEFsaWdubWVudFBhdHRlcm5GaW5kZXIkMSA9IHt9OwoKCXZhciBBbGlnbm1lbnRQYXR0ZXJuJDEgPSB7fTsKCgkvKgoJICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJdmFyIF9fZXh0ZW5kcyQxID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KEFsaWdubWVudFBhdHRlcm4kMSwgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5xcmNvZGUuZGV0ZWN0b3IgeyovCgl2YXIgUmVzdWx0UG9pbnRfMSQzID0gUmVzdWx0UG9pbnQkMTsKCS8qKgoJICogPHA+RW5jYXBzdWxhdGVzIGFuIGFsaWdubWVudCBwYXR0ZXJuLCB3aGljaCBhcmUgdGhlIHNtYWxsZXIgc3F1YXJlIHBhdHRlcm5zIGZvdW5kIGluCgkgKiBhbGwgYnV0IHRoZSBzaW1wbGVzdCBRUiBDb2Rlcy48L3A+CgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIEFsaWdubWVudFBhdHRlcm4gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzJDEoQWxpZ25tZW50UGF0dGVybiwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBBbGlnbm1lbnRQYXR0ZXJuKHBvc1ggLypmbG9hdCovLCBwb3NZIC8qZmxvYXQqLywgZXN0aW1hdGVkTW9kdWxlU2l6ZSAvKmZsb2F0Ki8pIHsKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgcG9zWCwgcG9zWSkgfHwgdGhpczsKCSAgICAgICAgX3RoaXMuZXN0aW1hdGVkTW9kdWxlU2l6ZSA9IGVzdGltYXRlZE1vZHVsZVNpemU7CgkgICAgICAgIHJldHVybiBfdGhpczsKCSAgICB9CgkgICAgLyoqCgkgICAgICogPHA+RGV0ZXJtaW5lcyBpZiB0aGlzIGFsaWdubWVudCBwYXR0ZXJuICJhYm91dCBlcXVhbHMiIGFuIGFsaWdubWVudCBwYXR0ZXJuIGF0IHRoZSBzdGF0ZWQKCSAgICAgKiBwb3NpdGlvbiBhbmQgc2l6ZSAtLSBtZWFuaW5nLCBpdCBpcyBhdCBuZWFybHkgdGhlIHNhbWUgY2VudGVyIHdpdGggbmVhcmx5IHRoZSBzYW1lIHNpemUuPC9wPgoJICAgICAqLwoJICAgIEFsaWdubWVudFBhdHRlcm4ucHJvdG90eXBlLmFib3V0RXF1YWxzID0gZnVuY3Rpb24gKG1vZHVsZVNpemUgLypmbG9hdCovLCBpIC8qZmxvYXQqLywgaiAvKmZsb2F0Ki8pIHsKCSAgICAgICAgaWYgKE1hdGguYWJzKGkgLSB0aGlzLmdldFkoKSkgPD0gbW9kdWxlU2l6ZSAmJiBNYXRoLmFicyhqIC0gdGhpcy5nZXRYKCkpIDw9IG1vZHVsZVNpemUpIHsKCSAgICAgICAgICAgIHZhciBtb2R1bGVTaXplRGlmZiA9IE1hdGguYWJzKG1vZHVsZVNpemUgLSB0aGlzLmVzdGltYXRlZE1vZHVsZVNpemUpOwoJICAgICAgICAgICAgcmV0dXJuIG1vZHVsZVNpemVEaWZmIDw9IDEuMCB8fCBtb2R1bGVTaXplRGlmZiA8PSB0aGlzLmVzdGltYXRlZE1vZHVsZVNpemU7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQ29tYmluZXMgdGhpcyBvYmplY3QncyBjdXJyZW50IGVzdGltYXRlIG9mIGEgZmluZGVyIHBhdHRlcm4gcG9zaXRpb24gYW5kIG1vZHVsZSBzaXplCgkgICAgICogd2l0aCBhIG5ldyBlc3RpbWF0ZS4gSXQgcmV0dXJucyBhIG5ldyB7QGNvZGUgRmluZGVyUGF0dGVybn0gY29udGFpbmluZyBhbiBhdmVyYWdlIG9mIHRoZSB0d28uCgkgICAgICovCgkgICAgQWxpZ25tZW50UGF0dGVybi5wcm90b3R5cGUuY29tYmluZUVzdGltYXRlID0gZnVuY3Rpb24gKGkgLypmbG9hdCovLCBqIC8qZmxvYXQqLywgbmV3TW9kdWxlU2l6ZSAvKmZsb2F0Ki8pIHsKCSAgICAgICAgdmFyIGNvbWJpbmVkWCA9ICh0aGlzLmdldFgoKSArIGopIC8gMi4wOwoJICAgICAgICB2YXIgY29tYmluZWRZID0gKHRoaXMuZ2V0WSgpICsgaSkgLyAyLjA7CgkgICAgICAgIHZhciBjb21iaW5lZE1vZHVsZVNpemUgPSAodGhpcy5lc3RpbWF0ZWRNb2R1bGVTaXplICsgbmV3TW9kdWxlU2l6ZSkgLyAyLjA7CgkgICAgICAgIHJldHVybiBuZXcgQWxpZ25tZW50UGF0dGVybihjb21iaW5lZFgsIGNvbWJpbmVkWSwgY29tYmluZWRNb2R1bGVTaXplKTsKCSAgICB9OwoJICAgIHJldHVybiBBbGlnbm1lbnRQYXR0ZXJuOwoJfShSZXN1bHRQb2ludF8xJDMuZGVmYXVsdCkpOwoJQWxpZ25tZW50UGF0dGVybiQxLmRlZmF1bHQgPSBBbGlnbm1lbnRQYXR0ZXJuOwoKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCgl2YXIgX192YWx1ZXMkMSA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShBbGlnbm1lbnRQYXR0ZXJuRmluZGVyJDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCXZhciBBbGlnbm1lbnRQYXR0ZXJuXzEgPSBBbGlnbm1lbnRQYXR0ZXJuJDE7Cgl2YXIgTm90Rm91bmRFeGNlcHRpb25fMSQzID0gTm90Rm91bmRFeGNlcHRpb24kMTsKCS8qaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ki8KCS8qaW1wb3J0IGphdmEudXRpbC5MaXN0OyovCgkvKioKCSAqIDxwPlRoaXMgY2xhc3MgYXR0ZW1wdHMgdG8gZmluZCBhbGlnbm1lbnQgcGF0dGVybnMgaW4gYSBRUiBDb2RlLiBBbGlnbm1lbnQgcGF0dGVybnMgbG9vayBsaWtlIGZpbmRlcgoJICogcGF0dGVybnMgYnV0IGFyZSBzbWFsbGVyIGFuZCBhcHBlYXIgYXQgcmVndWxhciBpbnRlcnZhbHMgdGhyb3VnaG91dCB0aGUgaW1hZ2UuPC9wPgoJICoKCSAqIDxwPkF0IHRoZSBtb21lbnQgdGhpcyBvbmx5IGxvb2tzIGZvciB0aGUgYm90dG9tLXJpZ2h0IGFsaWdubWVudCBwYXR0ZXJuLjwvcD4KCSAqCgkgKiA8cD5UaGlzIGlzIG1vc3RseSBhIHNpbXBsaWZpZWQgY29weSBvZiB7QGxpbmsgRmluZGVyUGF0dGVybkZpbmRlcn0uIEl0IGlzIGNvcGllZCwKCSAqIHBhc3RlZCBhbmQgc3RyaXBwZWQgZG93biBoZXJlIGZvciBtYXhpbXVtIHBlcmZvcm1hbmNlIGJ1dCBkb2VzIHVuZm9ydHVuYXRlbHkgZHVwbGljYXRlCgkgKiBzb21lIGNvZGUuPC9wPgoJICoKCSAqIDxwPlRoaXMgY2xhc3MgaXMgdGhyZWFkLXNhZmUgYnV0IG5vdCByZWVudHJhbnQuIEVhY2ggdGhyZWFkIG11c3QgYWxsb2NhdGUgaXRzIG93biBvYmplY3QuPC9wPgoJICoKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKi8KCXZhciBBbGlnbm1lbnRQYXR0ZXJuRmluZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIC8qKgoJICAgICAqIDxwPkNyZWF0ZXMgYSBmaW5kZXIgdGhhdCB3aWxsIGxvb2sgaW4gYSBwb3J0aW9uIG9mIHRoZSB3aG9sZSBpbWFnZS48L3A+CgkgICAgICoKCSAgICAgKiBAcGFyYW0gaW1hZ2UgaW1hZ2UgdG8gc2VhcmNoCgkgICAgICogQHBhcmFtIHN0YXJ0WCBsZWZ0IGNvbHVtbiBmcm9tIHdoaWNoIHRvIHN0YXJ0IHNlYXJjaGluZwoJICAgICAqIEBwYXJhbSBzdGFydFkgdG9wIHJvdyBmcm9tIHdoaWNoIHRvIHN0YXJ0IHNlYXJjaGluZwoJICAgICAqIEBwYXJhbSB3aWR0aCB3aWR0aCBvZiByZWdpb24gdG8gc2VhcmNoCgkgICAgICogQHBhcmFtIGhlaWdodCBoZWlnaHQgb2YgcmVnaW9uIHRvIHNlYXJjaAoJICAgICAqIEBwYXJhbSBtb2R1bGVTaXplIGVzdGltYXRlZCBtb2R1bGUgc2l6ZSBzbyBmYXIKCSAgICAgKi8KCSAgICBmdW5jdGlvbiBBbGlnbm1lbnRQYXR0ZXJuRmluZGVyKGltYWdlLCBzdGFydFggLyppbnQqLywgc3RhcnRZIC8qaW50Ki8sIHdpZHRoIC8qaW50Ki8sIGhlaWdodCAvKmludCovLCBtb2R1bGVTaXplIC8qZmxvYXQqLywgcmVzdWx0UG9pbnRDYWxsYmFjaykgewoJICAgICAgICB0aGlzLmltYWdlID0gaW1hZ2U7CgkgICAgICAgIHRoaXMuc3RhcnRYID0gc3RhcnRYOwoJICAgICAgICB0aGlzLnN0YXJ0WSA9IHN0YXJ0WTsKCSAgICAgICAgdGhpcy53aWR0aCA9IHdpZHRoOwoJICAgICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDsKCSAgICAgICAgdGhpcy5tb2R1bGVTaXplID0gbW9kdWxlU2l6ZTsKCSAgICAgICAgdGhpcy5yZXN1bHRQb2ludENhbGxiYWNrID0gcmVzdWx0UG9pbnRDYWxsYmFjazsKCSAgICAgICAgdGhpcy5wb3NzaWJsZUNlbnRlcnMgPSBbXTsgLy8gbmV3IEFycmF5PGFueT4oNSkpCgkgICAgICAgIC8vIFRZUEVTQ1JJUFRQT1JUOiBhcnJheSBpbml0aWFsaXphdGlvbiB3aXRob3V0IHNpemUgYXMgdGhlIGxlbmd0aCBpcyBjaGVja2VkIGJlbG93CgkgICAgICAgIHRoaXMuY3Jvc3NDaGVja1N0YXRlQ291bnQgPSBuZXcgSW50MzJBcnJheSgzKTsKCSAgICB9CgkgICAgLyoqCgkgICAgICogPHA+VGhpcyBtZXRob2QgYXR0ZW1wdHMgdG8gZmluZCB0aGUgYm90dG9tLXJpZ2h0IGFsaWdubWVudCBwYXR0ZXJuIGluIHRoZSBpbWFnZS4gSXQgaXMgYSBiaXQgbWVzc3kgc2luY2UKCSAgICAgKiBpdCdzIHByZXR0eSBwZXJmb3JtYW5jZS1jcml0aWNhbCBhbmQgc28gaXMgd3JpdHRlbiB0byBiZSBmYXN0IGZvcmVtb3N0LjwvcD4KCSAgICAgKgoJICAgICAqIEByZXR1cm4ge0BsaW5rIEFsaWdubWVudFBhdHRlcm59IGlmIGZvdW5kCgkgICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpZiBub3QgZm91bmQKCSAgICAgKi8KCSAgICBBbGlnbm1lbnRQYXR0ZXJuRmluZGVyLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgc3RhcnRYID0gdGhpcy5zdGFydFg7CgkgICAgICAgIHZhciBoZWlnaHQgPSB0aGlzLmhlaWdodDsKCSAgICAgICAgdmFyIHdpZHRoID0gdGhpcy53aWR0aDsKCSAgICAgICAgdmFyIG1heEogPSBzdGFydFggKyB3aWR0aDsKCSAgICAgICAgdmFyIG1pZGRsZUkgPSB0aGlzLnN0YXJ0WSArIChoZWlnaHQgLyAyKTsKCSAgICAgICAgLy8gV2UgYXJlIGxvb2tpbmcgZm9yIGJsYWNrL3doaXRlL2JsYWNrIG1vZHVsZXMgaW4gMToxOjEgcmF0aW8KCSAgICAgICAgLy8gdGhpcyB0cmFja3MgdGhlIG51bWJlciBvZiBibGFjay93aGl0ZS9ibGFjayBtb2R1bGVzIHNlZW4gc28gZmFyCgkgICAgICAgIHZhciBzdGF0ZUNvdW50ID0gbmV3IEludDMyQXJyYXkoMyk7CgkgICAgICAgIHZhciBpbWFnZSA9IHRoaXMuaW1hZ2U7CgkgICAgICAgIGZvciAodmFyIGlHZW4gPSAwOyBpR2VuIDwgaGVpZ2h0OyBpR2VuKyspIHsKCSAgICAgICAgICAgIC8vIFNlYXJjaCBmcm9tIG1pZGRsZSBvdXR3YXJkcwoJICAgICAgICAgICAgdmFyIGkgPSBtaWRkbGVJICsgKChpR2VuICYgMHgwMSkgPT09IDAgPyBNYXRoLmZsb29yKChpR2VuICsgMSkgLyAyKSA6IC1NYXRoLmZsb29yKChpR2VuICsgMSkgLyAyKSk7CgkgICAgICAgICAgICBzdGF0ZUNvdW50WzBdID0gMDsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbMV0gPSAwOwoJICAgICAgICAgICAgc3RhdGVDb3VudFsyXSA9IDA7CgkgICAgICAgICAgICB2YXIgaiA9IHN0YXJ0WDsKCSAgICAgICAgICAgIC8vIEJ1cm4gb2ZmIGxlYWRpbmcgd2hpdGUgcGl4ZWxzIGJlZm9yZSBhbnl0aGluZyBlbHNlOyBpZiB3ZSBzdGFydCBpbiB0aGUgbWlkZGxlIG9mCgkgICAgICAgICAgICAvLyBhIHdoaXRlIHJ1biwgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIGNvdW50IGl0cyBsZW5ndGgsIHNpbmNlIHdlIGRvbid0IGtub3cgaWYgdGhlCgkgICAgICAgICAgICAvLyB3aGl0ZSBydW4gY29udGludWVkIHRvIHRoZSBsZWZ0IG9mIHRoZSBzdGFydCBwb2ludAoJICAgICAgICAgICAgd2hpbGUgKGogPCBtYXhKICYmICFpbWFnZS5nZXQoaiwgaSkpIHsKCSAgICAgICAgICAgICAgICBqKys7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB2YXIgY3VycmVudFN0YXRlID0gMDsKCSAgICAgICAgICAgIHdoaWxlIChqIDwgbWF4SikgewoJICAgICAgICAgICAgICAgIGlmIChpbWFnZS5nZXQoaiwgaSkpIHsKCSAgICAgICAgICAgICAgICAgICAgLy8gQmxhY2sgcGl4ZWwKCSAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGF0ZSA9PT0gMSkgeyAvLyBDb3VudGluZyBibGFjayBwaXhlbHMKCSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbMV0rKzsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBlbHNlIHsgLy8gQ291bnRpbmcgd2hpdGUgcGl4ZWxzCgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFN0YXRlID09PSAyKSB7IC8vIEEgd2lubmVyPwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvdW5kUGF0dGVybkNyb3NzKHN0YXRlQ291bnQpKSB7IC8vIFllcwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29uZmlybWVkID0gdGhpcy5oYW5kbGVQb3NzaWJsZUNlbnRlcihzdGF0ZUNvdW50LCBpLCBqKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpcm1lZCAhPT0gbnVsbCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpcm1lZDsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzBdID0gc3RhdGVDb3VudFsyXTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzFdID0gMTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzJdID0gMDsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RhdGUgPSAxOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFsrK2N1cnJlbnRTdGF0ZV0rKzsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIHsgLy8gV2hpdGUgcGl4ZWwKCSAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGF0ZSA9PT0gMSkgeyAvLyBDb3VudGluZyBibGFjayBwaXhlbHMKCSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSsrOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbY3VycmVudFN0YXRlXSsrOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBqKys7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAodGhpcy5mb3VuZFBhdHRlcm5Dcm9zcyhzdGF0ZUNvdW50KSkgewoJICAgICAgICAgICAgICAgIHZhciBjb25maXJtZWQgPSB0aGlzLmhhbmRsZVBvc3NpYmxlQ2VudGVyKHN0YXRlQ291bnQsIGksIG1heEopOwoJICAgICAgICAgICAgICAgIGlmIChjb25maXJtZWQgIT09IG51bGwpIHsKCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpcm1lZDsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgLy8gSG1tLCBub3RoaW5nIHdlIHNhdyB3YXMgb2JzZXJ2ZWQgYW5kIGNvbmZpcm1lZCB0d2ljZS4gSWYgd2UgaGFkCgkgICAgICAgIC8vIGFueSBndWVzcyBhdCBhbGwsIHJldHVybiBpdC4KCSAgICAgICAgaWYgKHRoaXMucG9zc2libGVDZW50ZXJzLmxlbmd0aCAhPT0gMCkgewoJICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9zc2libGVDZW50ZXJzWzBdOwoJICAgICAgICB9CgkgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xJDMuZGVmYXVsdCgpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogR2l2ZW4gYSBjb3VudCBvZiBibGFjay93aGl0ZS9ibGFjayBwaXhlbHMganVzdCBzZWVuIGFuZCBhbiBlbmQgcG9zaXRpb24sCgkgICAgICogZmlndXJlcyB0aGUgbG9jYXRpb24gb2YgdGhlIGNlbnRlciBvZiB0aGlzIGJsYWNrL3doaXRlL2JsYWNrIHJ1bi4KCSAgICAgKi8KCSAgICBBbGlnbm1lbnRQYXR0ZXJuRmluZGVyLmNlbnRlckZyb21FbmQgPSBmdW5jdGlvbiAoc3RhdGVDb3VudCwgZW5kIC8qaW50Ki8pIHsKCSAgICAgICAgcmV0dXJuIChlbmQgLSBzdGF0ZUNvdW50WzJdKSAtIHN0YXRlQ291bnRbMV0gLyAyLjA7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcGFyYW0gc3RhdGVDb3VudCBjb3VudCBvZiBibGFjay93aGl0ZS9ibGFjayBwaXhlbHMganVzdCByZWFkCgkgICAgICogQHJldHVybiB0cnVlIGlmZiB0aGUgcHJvcG9ydGlvbnMgb2YgdGhlIGNvdW50cyBpcyBjbG9zZSBlbm91Z2ggdG8gdGhlIDEvMS8xIHJhdGlvcwoJICAgICAqICAgICAgICAgdXNlZCBieSBhbGlnbm1lbnQgcGF0dGVybnMgdG8gYmUgY29uc2lkZXJlZCBhIG1hdGNoCgkgICAgICovCgkgICAgQWxpZ25tZW50UGF0dGVybkZpbmRlci5wcm90b3R5cGUuZm91bmRQYXR0ZXJuQ3Jvc3MgPSBmdW5jdGlvbiAoc3RhdGVDb3VudCkgewoJICAgICAgICB2YXIgbW9kdWxlU2l6ZSA9IHRoaXMubW9kdWxlU2l6ZTsKCSAgICAgICAgdmFyIG1heFZhcmlhbmNlID0gbW9kdWxlU2l6ZSAvIDIuMDsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzOyBpKyspIHsKCSAgICAgICAgICAgIGlmIChNYXRoLmFicyhtb2R1bGVTaXplIC0gc3RhdGVDb3VudFtpXSkgPj0gbWF4VmFyaWFuY2UpIHsKCSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRydWU7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiA8cD5BZnRlciBhIGhvcml6b250YWwgc2NhbiBmaW5kcyBhIHBvdGVudGlhbCBhbGlnbm1lbnQgcGF0dGVybiwgdGhpcyBtZXRob2QKCSAgICAgKiAiY3Jvc3MtY2hlY2tzIiBieSBzY2FubmluZyBkb3duIHZlcnRpY2FsbHkgdGhyb3VnaCB0aGUgY2VudGVyIG9mIHRoZSBwb3NzaWJsZQoJICAgICAqIGFsaWdubWVudCBwYXR0ZXJuIHRvIHNlZSBpZiB0aGUgc2FtZSBwcm9wb3J0aW9uIGlzIGRldGVjdGVkLjwvcD4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBzdGFydEkgcm93IHdoZXJlIGFuIGFsaWdubWVudCBwYXR0ZXJuIHdhcyBkZXRlY3RlZAoJICAgICAqIEBwYXJhbSBjZW50ZXJKIGNlbnRlciBvZiB0aGUgc2VjdGlvbiB0aGF0IGFwcGVhcnMgdG8gY3Jvc3MgYW4gYWxpZ25tZW50IHBhdHRlcm4KCSAgICAgKiBAcGFyYW0gbWF4Q291bnQgbWF4aW11bSByZWFzb25hYmxlIG51bWJlciBvZiBtb2R1bGVzIHRoYXQgc2hvdWxkIGJlCgkgICAgICogb2JzZXJ2ZWQgaW4gYW55IHJlYWRpbmcgc3RhdGUsIGJhc2VkIG9uIHRoZSByZXN1bHRzIG9mIHRoZSBob3Jpem9udGFsIHNjYW4KCSAgICAgKiBAcmV0dXJuIHZlcnRpY2FsIGNlbnRlciBvZiBhbGlnbm1lbnQgcGF0dGVybiwgb3Ige0BsaW5rIEZsb2F0I05hTn0gaWYgbm90IGZvdW5kCgkgICAgICovCgkgICAgQWxpZ25tZW50UGF0dGVybkZpbmRlci5wcm90b3R5cGUuY3Jvc3NDaGVja1ZlcnRpY2FsID0gZnVuY3Rpb24gKHN0YXJ0SSAvKmludCovLCBjZW50ZXJKIC8qaW50Ki8sIG1heENvdW50IC8qaW50Ki8sIG9yaWdpbmFsU3RhdGVDb3VudFRvdGFsIC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIGltYWdlID0gdGhpcy5pbWFnZTsKCSAgICAgICAgdmFyIG1heEkgPSBpbWFnZS5nZXRIZWlnaHQoKTsKCSAgICAgICAgdmFyIHN0YXRlQ291bnQgPSB0aGlzLmNyb3NzQ2hlY2tTdGF0ZUNvdW50OwoJICAgICAgICBzdGF0ZUNvdW50WzBdID0gMDsKCSAgICAgICAgc3RhdGVDb3VudFsxXSA9IDA7CgkgICAgICAgIHN0YXRlQ291bnRbMl0gPSAwOwoJICAgICAgICAvLyBTdGFydCBjb3VudGluZyB1cCBmcm9tIGNlbnRlcgoJICAgICAgICB2YXIgaSA9IHN0YXJ0STsKCSAgICAgICAgd2hpbGUgKGkgPj0gMCAmJiBpbWFnZS5nZXQoY2VudGVySiwgaSkgJiYgc3RhdGVDb3VudFsxXSA8PSBtYXhDb3VudCkgewoJICAgICAgICAgICAgc3RhdGVDb3VudFsxXSsrOwoJICAgICAgICAgICAgaS0tOwoJICAgICAgICB9CgkgICAgICAgIC8vIElmIGFscmVhZHkgdG9vIG1hbnkgbW9kdWxlcyBpbiB0aGlzIHN0YXRlIG9yIHJhbiBvZmYgdGhlIGVkZ2U6CgkgICAgICAgIGlmIChpIDwgMCB8fCBzdGF0ZUNvdW50WzFdID4gbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHJldHVybiBOYU47CgkgICAgICAgIH0KCSAgICAgICAgd2hpbGUgKGkgPj0gMCAmJiAhaW1hZ2UuZ2V0KGNlbnRlckosIGkpICYmIHN0YXRlQ291bnRbMF0gPD0gbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbMF0rKzsKCSAgICAgICAgICAgIGktLTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoc3RhdGVDb3VudFswXSA+IG1heENvdW50KSB7CgkgICAgICAgICAgICByZXR1cm4gTmFOOwoJICAgICAgICB9CgkgICAgICAgIC8vIE5vdyBhbHNvIGNvdW50IGRvd24gZnJvbSBjZW50ZXIKCSAgICAgICAgaSA9IHN0YXJ0SSArIDE7CgkgICAgICAgIHdoaWxlIChpIDwgbWF4SSAmJiBpbWFnZS5nZXQoY2VudGVySiwgaSkgJiYgc3RhdGVDb3VudFsxXSA8PSBtYXhDb3VudCkgewoJICAgICAgICAgICAgc3RhdGVDb3VudFsxXSsrOwoJICAgICAgICAgICAgaSsrOwoJICAgICAgICB9CgkgICAgICAgIGlmIChpID09PSBtYXhJIHx8IHN0YXRlQ291bnRbMV0gPiBtYXhDb3VudCkgewoJICAgICAgICAgICAgcmV0dXJuIE5hTjsKCSAgICAgICAgfQoJICAgICAgICB3aGlsZSAoaSA8IG1heEkgJiYgIWltYWdlLmdldChjZW50ZXJKLCBpKSAmJiBzdGF0ZUNvdW50WzJdIDw9IG1heENvdW50KSB7CgkgICAgICAgICAgICBzdGF0ZUNvdW50WzJdKys7CgkgICAgICAgICAgICBpKys7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHN0YXRlQ291bnRbMl0gPiBtYXhDb3VudCkgewoJICAgICAgICAgICAgcmV0dXJuIE5hTjsKCSAgICAgICAgfQoJICAgICAgICB2YXIgc3RhdGVDb3VudFRvdGFsID0gc3RhdGVDb3VudFswXSArIHN0YXRlQ291bnRbMV0gKyBzdGF0ZUNvdW50WzJdOwoJICAgICAgICBpZiAoNSAqIE1hdGguYWJzKHN0YXRlQ291bnRUb3RhbCAtIG9yaWdpbmFsU3RhdGVDb3VudFRvdGFsKSA+PSAyICogb3JpZ2luYWxTdGF0ZUNvdW50VG90YWwpIHsKCSAgICAgICAgICAgIHJldHVybiBOYU47CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRoaXMuZm91bmRQYXR0ZXJuQ3Jvc3Moc3RhdGVDb3VudCkgPyBBbGlnbm1lbnRQYXR0ZXJuRmluZGVyLmNlbnRlckZyb21FbmQoc3RhdGVDb3VudCwgaSkgOiBOYU47CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiA8cD5UaGlzIGlzIGNhbGxlZCB3aGVuIGEgaG9yaXpvbnRhbCBzY2FuIGZpbmRzIGEgcG9zc2libGUgYWxpZ25tZW50IHBhdHRlcm4uIEl0IHdpbGwKCSAgICAgKiBjcm9zcyBjaGVjayB3aXRoIGEgdmVydGljYWwgc2NhbiwgYW5kIGlmIHN1Y2Nlc3NmdWwsIHdpbGwgc2VlIGlmIHRoaXMgcGF0dGVybiBoYWQgYmVlbgoJICAgICAqIGZvdW5kIG9uIGEgcHJldmlvdXMgaG9yaXpvbnRhbCBzY2FuLiBJZiBzbywgd2UgY29uc2lkZXIgaXQgY29uZmlybWVkIGFuZCBjb25jbHVkZSB3ZSBoYXZlCgkgICAgICogZm91bmQgdGhlIGFsaWdubWVudCBwYXR0ZXJuLjwvcD4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBzdGF0ZUNvdW50IHJlYWRpbmcgc3RhdGUgbW9kdWxlIGNvdW50cyBmcm9tIGhvcml6b250YWwgc2NhbgoJICAgICAqIEBwYXJhbSBpIHJvdyB3aGVyZSBhbGlnbm1lbnQgcGF0dGVybiBtYXkgYmUgZm91bmQKCSAgICAgKiBAcGFyYW0gaiBlbmQgb2YgcG9zc2libGUgYWxpZ25tZW50IHBhdHRlcm4gaW4gcm93CgkgICAgICogQHJldHVybiB7QGxpbmsgQWxpZ25tZW50UGF0dGVybn0gaWYgd2UgaGF2ZSBmb3VuZCB0aGUgc2FtZSBwYXR0ZXJuIHR3aWNlLCBvciBudWxsIGlmIG5vdAoJICAgICAqLwoJICAgIEFsaWdubWVudFBhdHRlcm5GaW5kZXIucHJvdG90eXBlLmhhbmRsZVBvc3NpYmxlQ2VudGVyID0gZnVuY3Rpb24gKHN0YXRlQ291bnQsIGkgLyppbnQqLywgaiAvKmludCovKSB7CgkgICAgICAgIHZhciBlXzEsIF9hOwoJICAgICAgICB2YXIgc3RhdGVDb3VudFRvdGFsID0gc3RhdGVDb3VudFswXSArIHN0YXRlQ291bnRbMV0gKyBzdGF0ZUNvdW50WzJdOwoJICAgICAgICB2YXIgY2VudGVySiA9IEFsaWdubWVudFBhdHRlcm5GaW5kZXIuY2VudGVyRnJvbUVuZChzdGF0ZUNvdW50LCBqKTsKCSAgICAgICAgdmFyIGNlbnRlckkgPSB0aGlzLmNyb3NzQ2hlY2tWZXJ0aWNhbChpLCAvKihpbnQpICovIGNlbnRlckosIDIgKiBzdGF0ZUNvdW50WzFdLCBzdGF0ZUNvdW50VG90YWwpOwoJICAgICAgICBpZiAoIWlzTmFOKGNlbnRlckkpKSB7CgkgICAgICAgICAgICB2YXIgZXN0aW1hdGVkTW9kdWxlU2l6ZSA9IChzdGF0ZUNvdW50WzBdICsgc3RhdGVDb3VudFsxXSArIHN0YXRlQ291bnRbMl0pIC8gMy4wOwoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzJDEodGhpcy5wb3NzaWJsZUNlbnRlcnMpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgICAgIHZhciBjZW50ZXIgPSBfYy52YWx1ZTsKCSAgICAgICAgICAgICAgICAgICAgLy8gTG9vayBmb3IgYWJvdXQgdGhlIHNhbWUgY2VudGVyIGFuZCBtb2R1bGUgc2l6ZToKCSAgICAgICAgICAgICAgICAgICAgaWYgKGNlbnRlci5hYm91dEVxdWFscyhlc3RpbWF0ZWRNb2R1bGVTaXplLCBjZW50ZXJJLCBjZW50ZXJKKSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNlbnRlci5jb21iaW5lRXN0aW1hdGUoY2VudGVySSwgY2VudGVySiwgZXN0aW1hdGVkTW9kdWxlU2l6ZSk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfQoJICAgICAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICAvLyBIYWRuJ3QgZm91bmQgdGhpcyBiZWZvcmU7IHNhdmUgaXQKCSAgICAgICAgICAgIHZhciBwb2ludCA9IG5ldyBBbGlnbm1lbnRQYXR0ZXJuXzEuZGVmYXVsdChjZW50ZXJKLCBjZW50ZXJJLCBlc3RpbWF0ZWRNb2R1bGVTaXplKTsKCSAgICAgICAgICAgIHRoaXMucG9zc2libGVDZW50ZXJzLnB1c2gocG9pbnQpOwoJICAgICAgICAgICAgaWYgKHRoaXMucmVzdWx0UG9pbnRDYWxsYmFjayAhPT0gbnVsbCAmJiB0aGlzLnJlc3VsdFBvaW50Q2FsbGJhY2sgIT09IHVuZGVmaW5lZCkgewoJICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0UG9pbnRDYWxsYmFjay5mb3VuZFBvc3NpYmxlUmVzdWx0UG9pbnQocG9pbnQpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBudWxsOwoJICAgIH07CgkgICAgcmV0dXJuIEFsaWdubWVudFBhdHRlcm5GaW5kZXI7Cgl9KCkpOwoJQWxpZ25tZW50UGF0dGVybkZpbmRlciQxLmRlZmF1bHQgPSBBbGlnbm1lbnRQYXR0ZXJuRmluZGVyOwoKCXZhciBGaW5kZXJQYXR0ZXJuRmluZGVyJDEgPSB7fTsKCgl2YXIgRmluZGVyUGF0dGVybiQxID0ge307CgoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoRmluZGVyUGF0dGVybiQxLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLnFyY29kZS5kZXRlY3RvciB7Ki8KCXZhciBSZXN1bHRQb2ludF8xJDIgPSBSZXN1bHRQb2ludCQxOwoJLyoqCgkgKiA8cD5FbmNhcHN1bGF0ZXMgYSBmaW5kZXIgcGF0dGVybiwgd2hpY2ggYXJlIHRoZSB0aHJlZSBzcXVhcmUgcGF0dGVybnMgZm91bmQgaW4KCSAqIHRoZSBjb3JuZXJzIG9mIFFSIENvZGVzLiBJdCBhbHNvIGVuY2Fwc3VsYXRlcyBhIGNvdW50IG9mIHNpbWlsYXIgZmluZGVyIHBhdHRlcm5zLAoJICogYXMgYSBjb252ZW5pZW5jZSB0byB0aGUgZmluZGVyJ3MgYm9va2tlZXBpbmcuPC9wPgoJICoKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKi8KCXZhciBGaW5kZXJQYXR0ZXJuID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhGaW5kZXJQYXR0ZXJuLCBfc3VwZXIpOwoJICAgIC8vIEZpbmRlclBhdHRlcm4ocG9zWDogbnVtYmVyLypmbG9hdCovLCBwb3NZOiBudW1iZXIvKmZsb2F0Ki8sIGVzdGltYXRlZE1vZHVsZVNpemU6IG51bWJlci8qZmxvYXQqLykgewoJICAgIC8vICAgdGhpcyhwb3NYLCBwb3NZLCBlc3RpbWF0ZWRNb2R1bGVTaXplLCAxKQoJICAgIC8vIH0KCSAgICBmdW5jdGlvbiBGaW5kZXJQYXR0ZXJuKHBvc1ggLypmbG9hdCovLCBwb3NZIC8qZmxvYXQqLywgZXN0aW1hdGVkTW9kdWxlU2l6ZSAvKmZsb2F0Ki8sIGNvdW50IC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgcG9zWCwgcG9zWSkgfHwgdGhpczsKCSAgICAgICAgX3RoaXMuZXN0aW1hdGVkTW9kdWxlU2l6ZSA9IGVzdGltYXRlZE1vZHVsZVNpemU7CgkgICAgICAgIF90aGlzLmNvdW50ID0gY291bnQ7CgkgICAgICAgIGlmICh1bmRlZmluZWQgPT09IGNvdW50KSB7CgkgICAgICAgICAgICBfdGhpcy5jb3VudCA9IDE7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIF90aGlzOwoJICAgIH0KCSAgICBGaW5kZXJQYXR0ZXJuLnByb3RvdHlwZS5nZXRFc3RpbWF0ZWRNb2R1bGVTaXplID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5lc3RpbWF0ZWRNb2R1bGVTaXplOwoJICAgIH07CgkgICAgRmluZGVyUGF0dGVybi5wcm90b3R5cGUuZ2V0Q291bnQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmNvdW50OwoJICAgIH07CgkgICAgLyoKCSAgICB2b2lkIGluY3JlbWVudENvdW50KCkgewoJICAgICAgdGhpcy5jb3VudCsrCgkgICAgfQoJICAgICAqLwoJICAgIC8qKgoJICAgICAqIDxwPkRldGVybWluZXMgaWYgdGhpcyBmaW5kZXIgcGF0dGVybiAiYWJvdXQgZXF1YWxzIiBhIGZpbmRlciBwYXR0ZXJuIGF0IHRoZSBzdGF0ZWQKCSAgICAgKiBwb3NpdGlvbiBhbmQgc2l6ZSAtLSBtZWFuaW5nLCBpdCBpcyBhdCBuZWFybHkgdGhlIHNhbWUgY2VudGVyIHdpdGggbmVhcmx5IHRoZSBzYW1lIHNpemUuPC9wPgoJICAgICAqLwoJICAgIEZpbmRlclBhdHRlcm4ucHJvdG90eXBlLmFib3V0RXF1YWxzID0gZnVuY3Rpb24gKG1vZHVsZVNpemUgLypmbG9hdCovLCBpIC8qZmxvYXQqLywgaiAvKmZsb2F0Ki8pIHsKCSAgICAgICAgaWYgKE1hdGguYWJzKGkgLSB0aGlzLmdldFkoKSkgPD0gbW9kdWxlU2l6ZSAmJiBNYXRoLmFicyhqIC0gdGhpcy5nZXRYKCkpIDw9IG1vZHVsZVNpemUpIHsKCSAgICAgICAgICAgIHZhciBtb2R1bGVTaXplRGlmZiA9IE1hdGguYWJzKG1vZHVsZVNpemUgLSB0aGlzLmVzdGltYXRlZE1vZHVsZVNpemUpOwoJICAgICAgICAgICAgcmV0dXJuIG1vZHVsZVNpemVEaWZmIDw9IDEuMCB8fCBtb2R1bGVTaXplRGlmZiA8PSB0aGlzLmVzdGltYXRlZE1vZHVsZVNpemU7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQ29tYmluZXMgdGhpcyBvYmplY3QncyBjdXJyZW50IGVzdGltYXRlIG9mIGEgZmluZGVyIHBhdHRlcm4gcG9zaXRpb24gYW5kIG1vZHVsZSBzaXplCgkgICAgICogd2l0aCBhIG5ldyBlc3RpbWF0ZS4gSXQgcmV0dXJucyBhIG5ldyB7QGNvZGUgRmluZGVyUGF0dGVybn0gY29udGFpbmluZyBhIHdlaWdodGVkIGF2ZXJhZ2UKCSAgICAgKiBiYXNlZCBvbiBjb3VudC4KCSAgICAgKi8KCSAgICBGaW5kZXJQYXR0ZXJuLnByb3RvdHlwZS5jb21iaW5lRXN0aW1hdGUgPSBmdW5jdGlvbiAoaSAvKmZsb2F0Ki8sIGogLypmbG9hdCovLCBuZXdNb2R1bGVTaXplIC8qZmxvYXQqLykgewoJICAgICAgICB2YXIgY29tYmluZWRDb3VudCA9IHRoaXMuY291bnQgKyAxOwoJICAgICAgICB2YXIgY29tYmluZWRYID0gKHRoaXMuY291bnQgKiB0aGlzLmdldFgoKSArIGopIC8gY29tYmluZWRDb3VudDsKCSAgICAgICAgdmFyIGNvbWJpbmVkWSA9ICh0aGlzLmNvdW50ICogdGhpcy5nZXRZKCkgKyBpKSAvIGNvbWJpbmVkQ291bnQ7CgkgICAgICAgIHZhciBjb21iaW5lZE1vZHVsZVNpemUgPSAodGhpcy5jb3VudCAqIHRoaXMuZXN0aW1hdGVkTW9kdWxlU2l6ZSArIG5ld01vZHVsZVNpemUpIC8gY29tYmluZWRDb3VudDsKCSAgICAgICAgcmV0dXJuIG5ldyBGaW5kZXJQYXR0ZXJuKGNvbWJpbmVkWCwgY29tYmluZWRZLCBjb21iaW5lZE1vZHVsZVNpemUsIGNvbWJpbmVkQ291bnQpOwoJICAgIH07CgkgICAgcmV0dXJuIEZpbmRlclBhdHRlcm47Cgl9KFJlc3VsdFBvaW50XzEkMi5kZWZhdWx0KSk7CglGaW5kZXJQYXR0ZXJuJDEuZGVmYXVsdCA9IEZpbmRlclBhdHRlcm47CgoJdmFyIEZpbmRlclBhdHRlcm5JbmZvJDEgPSB7fTsKCgkvKgoJICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KEZpbmRlclBhdHRlcm5JbmZvJDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qKgoJICogPHA+RW5jYXBzdWxhdGVzIGluZm9ybWF0aW9uIGFib3V0IGZpbmRlciBwYXR0ZXJucyBpbiBhbiBpbWFnZSwgaW5jbHVkaW5nIHRoZSBsb2NhdGlvbiBvZgoJICogdGhlIHRocmVlIGZpbmRlciBwYXR0ZXJucywgYW5kIHRoZWlyIGVzdGltYXRlZCBtb2R1bGUgc2l6ZS48L3A+CgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIEZpbmRlclBhdHRlcm5JbmZvID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIEZpbmRlclBhdHRlcm5JbmZvKHBhdHRlcm5DZW50ZXJzKSB7CgkgICAgICAgIHRoaXMuYm90dG9tTGVmdCA9IHBhdHRlcm5DZW50ZXJzWzBdOwoJICAgICAgICB0aGlzLnRvcExlZnQgPSBwYXR0ZXJuQ2VudGVyc1sxXTsKCSAgICAgICAgdGhpcy50b3BSaWdodCA9IHBhdHRlcm5DZW50ZXJzWzJdOwoJICAgIH0KCSAgICBGaW5kZXJQYXR0ZXJuSW5mby5wcm90b3R5cGUuZ2V0Qm90dG9tTGVmdCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuYm90dG9tTGVmdDsKCSAgICB9OwoJICAgIEZpbmRlclBhdHRlcm5JbmZvLnByb3RvdHlwZS5nZXRUb3BMZWZ0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy50b3BMZWZ0OwoJICAgIH07CgkgICAgRmluZGVyUGF0dGVybkluZm8ucHJvdG90eXBlLmdldFRvcFJpZ2h0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy50b3BSaWdodDsKCSAgICB9OwoJICAgIHJldHVybiBGaW5kZXJQYXR0ZXJuSW5mbzsKCX0oKSk7CglGaW5kZXJQYXR0ZXJuSW5mbyQxLmRlZmF1bHQgPSBGaW5kZXJQYXR0ZXJuSW5mbzsKCgkvKgoJICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJdmFyIF9fdmFsdWVzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7CgkgICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7CgkgICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7CgkgICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSAibnVtYmVyIikgcmV0dXJuIHsKCSAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDsKCSAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gIk9iamVjdCBpcyBub3QgaXRlcmFibGUuIiA6ICJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7Cgl9OwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KEZpbmRlclBhdHRlcm5GaW5kZXIkMSwgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5xcmNvZGUuZGV0ZWN0b3IgeyovCgl2YXIgRGVjb2RlSGludFR5cGVfMSQyID0gRGVjb2RlSGludFR5cGUkMTsKCXZhciBSZXN1bHRQb2ludF8xJDEgPSBSZXN1bHRQb2ludCQxOwoJdmFyIEZpbmRlclBhdHRlcm5fMSA9IEZpbmRlclBhdHRlcm4kMTsKCXZhciBGaW5kZXJQYXR0ZXJuSW5mb18xID0gRmluZGVyUGF0dGVybkluZm8kMTsKCXZhciBOb3RGb3VuZEV4Y2VwdGlvbl8xJDIgPSBOb3RGb3VuZEV4Y2VwdGlvbiQxOwoJLyppbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7Ki8KCS8qaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ki8KCS8qaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsqLwoJLyppbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7Ki8KCS8qaW1wb3J0IGphdmEudXRpbC5MaXN0OyovCgkvKmltcG9ydCBqYXZhLnV0aWwuTWFwOyovCgkvKioKCSAqIDxwPlRoaXMgY2xhc3MgYXR0ZW1wdHMgdG8gZmluZCBmaW5kZXIgcGF0dGVybnMgaW4gYSBRUiBDb2RlLiBGaW5kZXIgcGF0dGVybnMgYXJlIHRoZSBzcXVhcmUKCSAqIG1hcmtlcnMgYXQgdGhyZWUgY29ybmVycyBvZiBhIFFSIENvZGUuPC9wPgoJICoKCSAqIDxwPlRoaXMgY2xhc3MgaXMgdGhyZWFkLXNhZmUgYnV0IG5vdCByZWVudHJhbnQuIEVhY2ggdGhyZWFkIG11c3QgYWxsb2NhdGUgaXRzIG93biBvYmplY3QuCgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIEZpbmRlclBhdHRlcm5GaW5kZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgLyoqCgkgICAgICogPHA+Q3JlYXRlcyBhIGZpbmRlciB0aGF0IHdpbGwgc2VhcmNoIHRoZSBpbWFnZSBmb3IgdGhyZWUgZmluZGVyIHBhdHRlcm5zLjwvcD4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBpbWFnZSBpbWFnZSB0byBzZWFyY2gKCSAgICAgKi8KCSAgICAvLyBwdWJsaWMgY29uc3RydWN0b3IoaW1hZ2U6IEJpdE1hdHJpeCkgewoJICAgIC8vICAgdGhpcyhpbWFnZSwgbnVsbCkKCSAgICAvLyB9CgkgICAgZnVuY3Rpb24gRmluZGVyUGF0dGVybkZpbmRlcihpbWFnZSwgcmVzdWx0UG9pbnRDYWxsYmFjaykgewoJICAgICAgICB0aGlzLmltYWdlID0gaW1hZ2U7CgkgICAgICAgIHRoaXMucmVzdWx0UG9pbnRDYWxsYmFjayA9IHJlc3VsdFBvaW50Q2FsbGJhY2s7CgkgICAgICAgIHRoaXMucG9zc2libGVDZW50ZXJzID0gW107CgkgICAgICAgIHRoaXMuY3Jvc3NDaGVja1N0YXRlQ291bnQgPSBuZXcgSW50MzJBcnJheSg1KTsKCSAgICAgICAgdGhpcy5yZXN1bHRQb2ludENhbGxiYWNrID0gcmVzdWx0UG9pbnRDYWxsYmFjazsKCSAgICB9CgkgICAgRmluZGVyUGF0dGVybkZpbmRlci5wcm90b3R5cGUuZ2V0SW1hZ2UgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmltYWdlOwoJICAgIH07CgkgICAgRmluZGVyUGF0dGVybkZpbmRlci5wcm90b3R5cGUuZ2V0UG9zc2libGVDZW50ZXJzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5wb3NzaWJsZUNlbnRlcnM7CgkgICAgfTsKCSAgICBGaW5kZXJQYXR0ZXJuRmluZGVyLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKGhpbnRzKSB7CgkgICAgICAgIHZhciB0cnlIYXJkZXIgPSAoaGludHMgIT09IG51bGwgJiYgaGludHMgIT09IHVuZGVmaW5lZCkgJiYgdW5kZWZpbmVkICE9PSBoaW50cy5nZXQoRGVjb2RlSGludFR5cGVfMSQyLmRlZmF1bHQuVFJZX0hBUkRFUik7CgkgICAgICAgIHZhciBwdXJlQmFyY29kZSA9IChoaW50cyAhPT0gbnVsbCAmJiBoaW50cyAhPT0gdW5kZWZpbmVkKSAmJiB1bmRlZmluZWQgIT09IGhpbnRzLmdldChEZWNvZGVIaW50VHlwZV8xJDIuZGVmYXVsdC5QVVJFX0JBUkNPREUpOwoJICAgICAgICB2YXIgaW1hZ2UgPSB0aGlzLmltYWdlOwoJICAgICAgICB2YXIgbWF4SSA9IGltYWdlLmdldEhlaWdodCgpOwoJICAgICAgICB2YXIgbWF4SiA9IGltYWdlLmdldFdpZHRoKCk7CgkgICAgICAgIC8vIFdlIGFyZSBsb29raW5nIGZvciBibGFjay93aGl0ZS9ibGFjay93aGl0ZS9ibGFjayBtb2R1bGVzIGluCgkgICAgICAgIC8vIDE6MTozOjE6MSByYXRpbzsgdGhpcyB0cmFja3MgdGhlIG51bWJlciBvZiBzdWNoIG1vZHVsZXMgc2VlbiBzbyBmYXIKCSAgICAgICAgLy8gTGV0J3MgYXNzdW1lIHRoYXQgdGhlIG1heGltdW0gdmVyc2lvbiBRUiBDb2RlIHdlIHN1cHBvcnQgdGFrZXMgdXAgMS80IHRoZSBoZWlnaHQgb2YgdGhlCgkgICAgICAgIC8vIGltYWdlLCBhbmQgdGhlbiBhY2NvdW50IGZvciB0aGUgY2VudGVyIGJlaW5nIDMgbW9kdWxlcyBpbiBzaXplLiBUaGlzIGdpdmVzIHRoZSBzbWFsbGVzdAoJICAgICAgICAvLyBudW1iZXIgb2YgcGl4ZWxzIHRoZSBjZW50ZXIgY291bGQgYmUsIHNvIHNraXAgdGhpcyBvZnRlbi4gV2hlbiB0cnlpbmcgaGFyZGVyLCBsb29rIGZvciBhbGwKCSAgICAgICAgLy8gUVIgdmVyc2lvbnMgcmVnYXJkbGVzcyBvZiBob3cgZGVuc2UgdGhleSBhcmUuCgkgICAgICAgIHZhciBpU2tpcCA9IE1hdGguZmxvb3IoKDMgKiBtYXhJKSAvICg0ICogRmluZGVyUGF0dGVybkZpbmRlci5NQVhfTU9EVUxFUykpOwoJICAgICAgICBpZiAoaVNraXAgPCBGaW5kZXJQYXR0ZXJuRmluZGVyLk1JTl9TS0lQIHx8IHRyeUhhcmRlcikgewoJICAgICAgICAgICAgaVNraXAgPSBGaW5kZXJQYXR0ZXJuRmluZGVyLk1JTl9TS0lQOwoJICAgICAgICB9CgkgICAgICAgIHZhciBkb25lID0gZmFsc2U7CgkgICAgICAgIHZhciBzdGF0ZUNvdW50ID0gbmV3IEludDMyQXJyYXkoNSk7CgkgICAgICAgIGZvciAodmFyIGkgPSBpU2tpcCAtIDE7IGkgPCBtYXhJICYmICFkb25lOyBpICs9IGlTa2lwKSB7CgkgICAgICAgICAgICAvLyBHZXQgYSByb3cgb2YgYmxhY2svd2hpdGUgdmFsdWVzCgkgICAgICAgICAgICBzdGF0ZUNvdW50WzBdID0gMDsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbMV0gPSAwOwoJICAgICAgICAgICAgc3RhdGVDb3VudFsyXSA9IDA7CgkgICAgICAgICAgICBzdGF0ZUNvdW50WzNdID0gMDsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbNF0gPSAwOwoJICAgICAgICAgICAgdmFyIGN1cnJlbnRTdGF0ZSA9IDA7CgkgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1heEo7IGorKykgewoJICAgICAgICAgICAgICAgIGlmIChpbWFnZS5nZXQoaiwgaSkpIHsKCSAgICAgICAgICAgICAgICAgICAgLy8gQmxhY2sgcGl4ZWwKCSAgICAgICAgICAgICAgICAgICAgaWYgKChjdXJyZW50U3RhdGUgJiAxKSA9PT0gMSkgeyAvLyBDb3VudGluZyB3aGl0ZSBwaXhlbHMKCSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSsrOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbY3VycmVudFN0YXRlXSsrOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIHsgLy8gV2hpdGUgcGl4ZWwKCSAgICAgICAgICAgICAgICAgICAgaWYgKChjdXJyZW50U3RhdGUgJiAxKSA9PT0gMCkgeyAvLyBDb3VudGluZyBibGFjayBwaXhlbHMKCSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U3RhdGUgPT09IDQpIHsgLy8gQSB3aW5uZXI/CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEZpbmRlclBhdHRlcm5GaW5kZXIuZm91bmRQYXR0ZXJuQ3Jvc3Moc3RhdGVDb3VudCkpIHsgLy8gWWVzCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb25maXJtZWQgPSB0aGlzLmhhbmRsZVBvc3NpYmxlQ2VudGVyKHN0YXRlQ291bnQsIGksIGosIHB1cmVCYXJjb2RlKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpcm1lZCA9PT0gdHJ1ZSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3RhcnQgZXhhbWluaW5nIGV2ZXJ5IG90aGVyIGxpbmUuIENoZWNraW5nIGVhY2ggbGluZSB0dXJuZWQgb3V0IHRvIGJlIHRvbwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhwZW5zaXZlIGFuZCBkaWRuJ3QgaW1wcm92ZSBwZXJmb3JtYW5jZS4KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlTa2lwID0gMjsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhc1NraXBwZWQgPT09IHRydWUpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gdGhpcy5oYXZlTXVsdGlwbHlDb25maXJtZWRDZW50ZXJzKCk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcm93U2tpcCA9IHRoaXMuZmluZFJvd1NraXAoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocm93U2tpcCA+IHN0YXRlQ291bnRbMl0pIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2tpcCByb3dzIGJldHdlZW4gcm93IG9mIGxvd2VyIGNvbmZpcm1lZCBjZW50ZXIKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHRvcCBvZiBwcmVzdW1lZCB0aGlyZCBjb25maXJtZWQgY2VudGVyCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCBiYWNrIHVwIGEgYml0IHRvIGdldCBhIGZ1bGwgY2hhbmNlIG9mIGRldGVjdGluZwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpdCwgZW50aXJlIHdpZHRoIG9mIGNlbnRlciBvZiBmaW5kZXIgcGF0dGVybgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTa2lwIGJ5IHJvd1NraXAsIGJ1dCBiYWNrIG9mZiBieSBzdGF0ZUNvdW50WzJdIChzaXplIG9mIGxhc3QgY2VudGVyCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIHBhdHRlcm4gd2Ugc2F3KSB0byBiZSBjb25zZXJ2YXRpdmUsIGFuZCBhbHNvIGJhY2sgb2ZmIGJ5IGlTa2lwIHdoaWNoCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGFib3V0IHRvIGJlIHJlLWFkZGVkCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKz0gcm93U2tpcCAtIHN0YXRlQ291bnRbMl0gLSBpU2tpcDsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IG1heEogLSAxOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbMF0gPSBzdGF0ZUNvdW50WzJdOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFsxXSA9IHN0YXRlQ291bnRbM107CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzJdID0gc3RhdGVDb3VudFs0XTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbM10gPSAxOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFs0XSA9IDA7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RhdGUgPSAzOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xlYXIgc3RhdGUgdG8gc3RhcnQgbG9va2luZyBhZ2FpbgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RhdGUgPSAwOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzBdID0gMDsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFsxXSA9IDA7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbMl0gPSAwOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzNdID0gMDsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFs0XSA9IDA7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAvLyBObywgc2hpZnQgY291bnRzIGJhY2sgYnkgdHdvCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbMF0gPSBzdGF0ZUNvdW50WzJdOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzFdID0gc3RhdGVDb3VudFszXTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFsyXSA9IHN0YXRlQ291bnRbNF07CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbM10gPSAxOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzRdID0gMDsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0YXRlID0gMzsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WysrY3VycmVudFN0YXRlXSsrOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAvLyBDb3VudGluZyB3aGl0ZSBwaXhlbHMKCSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbY3VycmVudFN0YXRlXSsrOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKEZpbmRlclBhdHRlcm5GaW5kZXIuZm91bmRQYXR0ZXJuQ3Jvc3Moc3RhdGVDb3VudCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgY29uZmlybWVkID0gdGhpcy5oYW5kbGVQb3NzaWJsZUNlbnRlcihzdGF0ZUNvdW50LCBpLCBtYXhKLCBwdXJlQmFyY29kZSk7CgkgICAgICAgICAgICAgICAgaWYgKGNvbmZpcm1lZCA9PT0gdHJ1ZSkgewoJICAgICAgICAgICAgICAgICAgICBpU2tpcCA9IHN0YXRlQ291bnRbMF07CgkgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhc1NraXBwZWQpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvdW5kIGEgdGhpcmQgb25lCgkgICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gdGhpcy5oYXZlTXVsdGlwbHlDb25maXJtZWRDZW50ZXJzKCk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHBhdHRlcm5JbmZvID0gdGhpcy5zZWxlY3RCZXN0UGF0dGVybnMoKTsKCSAgICAgICAgUmVzdWx0UG9pbnRfMSQxLmRlZmF1bHQub3JkZXJCZXN0UGF0dGVybnMocGF0dGVybkluZm8pOwoJICAgICAgICByZXR1cm4gbmV3IEZpbmRlclBhdHRlcm5JbmZvXzEuZGVmYXVsdChwYXR0ZXJuSW5mbyk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBHaXZlbiBhIGNvdW50IG9mIGJsYWNrL3doaXRlL2JsYWNrL3doaXRlL2JsYWNrIHBpeGVscyBqdXN0IHNlZW4gYW5kIGFuIGVuZCBwb3NpdGlvbiwKCSAgICAgKiBmaWd1cmVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgY2VudGVyIG9mIHRoaXMgcnVuLgoJICAgICAqLwoJICAgIEZpbmRlclBhdHRlcm5GaW5kZXIuY2VudGVyRnJvbUVuZCA9IGZ1bmN0aW9uIChzdGF0ZUNvdW50LCBlbmQgLyppbnQqLykgewoJICAgICAgICByZXR1cm4gKGVuZCAtIHN0YXRlQ291bnRbNF0gLSBzdGF0ZUNvdW50WzNdKSAtIHN0YXRlQ291bnRbMl0gLyAyLjA7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcGFyYW0gc3RhdGVDb3VudCBjb3VudCBvZiBibGFjay93aGl0ZS9ibGFjay93aGl0ZS9ibGFjayBwaXhlbHMganVzdCByZWFkCgkgICAgICogQHJldHVybiB0cnVlIGlmZiB0aGUgcHJvcG9ydGlvbnMgb2YgdGhlIGNvdW50cyBpcyBjbG9zZSBlbm91Z2ggdG8gdGhlIDEvMS8zLzEvMSByYXRpb3MKCSAgICAgKiAgICAgICAgIHVzZWQgYnkgZmluZGVyIHBhdHRlcm5zIHRvIGJlIGNvbnNpZGVyZWQgYSBtYXRjaAoJICAgICAqLwoJICAgIEZpbmRlclBhdHRlcm5GaW5kZXIuZm91bmRQYXR0ZXJuQ3Jvc3MgPSBmdW5jdGlvbiAoc3RhdGVDb3VudCkgewoJICAgICAgICB2YXIgdG90YWxNb2R1bGVTaXplID0gMDsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKyspIHsKCSAgICAgICAgICAgIHZhciBjb3VudCA9IHN0YXRlQ291bnRbaV07CgkgICAgICAgICAgICBpZiAoY291bnQgPT09IDApIHsKCSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB0b3RhbE1vZHVsZVNpemUgKz0gY291bnQ7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHRvdGFsTW9kdWxlU2l6ZSA8IDcpIHsKCSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgbW9kdWxlU2l6ZSA9IHRvdGFsTW9kdWxlU2l6ZSAvIDcuMDsKCSAgICAgICAgdmFyIG1heFZhcmlhbmNlID0gbW9kdWxlU2l6ZSAvIDIuMDsKCSAgICAgICAgLy8gQWxsb3cgbGVzcyB0aGFuIDUwJSB2YXJpYW5jZSBmcm9tIDEtMS0zLTEtMSBwcm9wb3J0aW9ucwoJICAgICAgICByZXR1cm4gTWF0aC5hYnMobW9kdWxlU2l6ZSAtIHN0YXRlQ291bnRbMF0pIDwgbWF4VmFyaWFuY2UgJiYKCSAgICAgICAgICAgIE1hdGguYWJzKG1vZHVsZVNpemUgLSBzdGF0ZUNvdW50WzFdKSA8IG1heFZhcmlhbmNlICYmCgkgICAgICAgICAgICBNYXRoLmFicygzLjAgKiBtb2R1bGVTaXplIC0gc3RhdGVDb3VudFsyXSkgPCAzICogbWF4VmFyaWFuY2UgJiYKCSAgICAgICAgICAgIE1hdGguYWJzKG1vZHVsZVNpemUgLSBzdGF0ZUNvdW50WzNdKSA8IG1heFZhcmlhbmNlICYmCgkgICAgICAgICAgICBNYXRoLmFicyhtb2R1bGVTaXplIC0gc3RhdGVDb3VudFs0XSkgPCBtYXhWYXJpYW5jZTsKCSAgICB9OwoJICAgIEZpbmRlclBhdHRlcm5GaW5kZXIucHJvdG90eXBlLmdldENyb3NzQ2hlY2tTdGF0ZUNvdW50ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgY3Jvc3NDaGVja1N0YXRlQ291bnQgPSB0aGlzLmNyb3NzQ2hlY2tTdGF0ZUNvdW50OwoJICAgICAgICBjcm9zc0NoZWNrU3RhdGVDb3VudFswXSA9IDA7CgkgICAgICAgIGNyb3NzQ2hlY2tTdGF0ZUNvdW50WzFdID0gMDsKCSAgICAgICAgY3Jvc3NDaGVja1N0YXRlQ291bnRbMl0gPSAwOwoJICAgICAgICBjcm9zc0NoZWNrU3RhdGVDb3VudFszXSA9IDA7CgkgICAgICAgIGNyb3NzQ2hlY2tTdGF0ZUNvdW50WzRdID0gMDsKCSAgICAgICAgcmV0dXJuIGNyb3NzQ2hlY2tTdGF0ZUNvdW50OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQWZ0ZXIgYSB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBzY2FuIGZpbmRzIGEgcG90ZW50aWFsIGZpbmRlciBwYXR0ZXJuLCB0aGlzIG1ldGhvZAoJICAgICAqICJjcm9zcy1jcm9zcy1jcm9zcy1jaGVja3MiIGJ5IHNjYW5uaW5nIGRvd24gZGlhZ29uYWxseSB0aHJvdWdoIHRoZSBjZW50ZXIgb2YgdGhlIHBvc3NpYmxlCgkgICAgICogZmluZGVyIHBhdHRlcm4gdG8gc2VlIGlmIHRoZSBzYW1lIHByb3BvcnRpb24gaXMgZGV0ZWN0ZWQuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gc3RhcnRJIHJvdyB3aGVyZSBhIGZpbmRlciBwYXR0ZXJuIHdhcyBkZXRlY3RlZAoJICAgICAqIEBwYXJhbSBjZW50ZXJKIGNlbnRlciBvZiB0aGUgc2VjdGlvbiB0aGF0IGFwcGVhcnMgdG8gY3Jvc3MgYSBmaW5kZXIgcGF0dGVybgoJICAgICAqIEBwYXJhbSBtYXhDb3VudCBtYXhpbXVtIHJlYXNvbmFibGUgbnVtYmVyIG9mIG1vZHVsZXMgdGhhdCBzaG91bGQgYmUKCSAgICAgKiAgb2JzZXJ2ZWQgaW4gYW55IHJlYWRpbmcgc3RhdGUsIGJhc2VkIG9uIHRoZSByZXN1bHRzIG9mIHRoZSBob3Jpem9udGFsIHNjYW4KCSAgICAgKiBAcGFyYW0gb3JpZ2luYWxTdGF0ZUNvdW50VG90YWwgVGhlIG9yaWdpbmFsIHN0YXRlIGNvdW50IHRvdGFsLgoJICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBwcm9wb3J0aW9ucyBhcmUgd2l0aGluZyBleHBlY3RlZCBsaW1pdHMKCSAgICAgKi8KCSAgICBGaW5kZXJQYXR0ZXJuRmluZGVyLnByb3RvdHlwZS5jcm9zc0NoZWNrRGlhZ29uYWwgPSBmdW5jdGlvbiAoc3RhcnRJIC8qaW50Ki8sIGNlbnRlckogLyppbnQqLywgbWF4Q291bnQgLyppbnQqLywgb3JpZ2luYWxTdGF0ZUNvdW50VG90YWwgLyppbnQqLykgewoJICAgICAgICB2YXIgc3RhdGVDb3VudCA9IHRoaXMuZ2V0Q3Jvc3NDaGVja1N0YXRlQ291bnQoKTsKCSAgICAgICAgLy8gU3RhcnQgY291bnRpbmcgdXAsIGxlZnQgZnJvbSBjZW50ZXIgZmluZGluZyBibGFjayBjZW50ZXIgbWFzcwoJICAgICAgICB2YXIgaSA9IDA7CgkgICAgICAgIHZhciBpbWFnZSA9IHRoaXMuaW1hZ2U7CgkgICAgICAgIHdoaWxlIChzdGFydEkgPj0gaSAmJiBjZW50ZXJKID49IGkgJiYgaW1hZ2UuZ2V0KGNlbnRlckogLSBpLCBzdGFydEkgLSBpKSkgewoJICAgICAgICAgICAgc3RhdGVDb3VudFsyXSsrOwoJICAgICAgICAgICAgaSsrOwoJICAgICAgICB9CgkgICAgICAgIGlmIChzdGFydEkgPCBpIHx8IGNlbnRlckogPCBpKSB7CgkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgIH0KCSAgICAgICAgLy8gQ29udGludWUgdXAsIGxlZnQgZmluZGluZyB3aGl0ZSBzcGFjZQoJICAgICAgICB3aGlsZSAoc3RhcnRJID49IGkgJiYgY2VudGVySiA+PSBpICYmICFpbWFnZS5nZXQoY2VudGVySiAtIGksIHN0YXJ0SSAtIGkpICYmCgkgICAgICAgICAgICBzdGF0ZUNvdW50WzFdIDw9IG1heENvdW50KSB7CgkgICAgICAgICAgICBzdGF0ZUNvdW50WzFdKys7CgkgICAgICAgICAgICBpKys7CgkgICAgICAgIH0KCSAgICAgICAgLy8gSWYgYWxyZWFkeSB0b28gbWFueSBtb2R1bGVzIGluIHRoaXMgc3RhdGUgb3IgcmFuIG9mZiB0aGUgZWRnZToKCSAgICAgICAgaWYgKHN0YXJ0SSA8IGkgfHwgY2VudGVySiA8IGkgfHwgc3RhdGVDb3VudFsxXSA+IG1heENvdW50KSB7CgkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgIH0KCSAgICAgICAgLy8gQ29udGludWUgdXAsIGxlZnQgZmluZGluZyBibGFjayBib3JkZXIKCSAgICAgICAgd2hpbGUgKHN0YXJ0SSA+PSBpICYmIGNlbnRlckogPj0gaSAmJiBpbWFnZS5nZXQoY2VudGVySiAtIGksIHN0YXJ0SSAtIGkpICYmCgkgICAgICAgICAgICBzdGF0ZUNvdW50WzBdIDw9IG1heENvdW50KSB7CgkgICAgICAgICAgICBzdGF0ZUNvdW50WzBdKys7CgkgICAgICAgICAgICBpKys7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHN0YXRlQ291bnRbMF0gPiBtYXhDb3VudCkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIHZhciBtYXhJID0gaW1hZ2UuZ2V0SGVpZ2h0KCk7CgkgICAgICAgIHZhciBtYXhKID0gaW1hZ2UuZ2V0V2lkdGgoKTsKCSAgICAgICAgLy8gTm93IGFsc28gY291bnQgZG93biwgcmlnaHQgZnJvbSBjZW50ZXIKCSAgICAgICAgaSA9IDE7CgkgICAgICAgIHdoaWxlIChzdGFydEkgKyBpIDwgbWF4SSAmJiBjZW50ZXJKICsgaSA8IG1heEogJiYgaW1hZ2UuZ2V0KGNlbnRlckogKyBpLCBzdGFydEkgKyBpKSkgewoJICAgICAgICAgICAgc3RhdGVDb3VudFsyXSsrOwoJICAgICAgICAgICAgaSsrOwoJICAgICAgICB9CgkgICAgICAgIC8vIFJhbiBvZmYgdGhlIGVkZ2U/CgkgICAgICAgIGlmIChzdGFydEkgKyBpID49IG1heEkgfHwgY2VudGVySiArIGkgPj0gbWF4SikgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIHdoaWxlIChzdGFydEkgKyBpIDwgbWF4SSAmJiBjZW50ZXJKICsgaSA8IG1heEogJiYgIWltYWdlLmdldChjZW50ZXJKICsgaSwgc3RhcnRJICsgaSkgJiYKCSAgICAgICAgICAgIHN0YXRlQ291bnRbM10gPCBtYXhDb3VudCkgewoJICAgICAgICAgICAgc3RhdGVDb3VudFszXSsrOwoJICAgICAgICAgICAgaSsrOwoJICAgICAgICB9CgkgICAgICAgIGlmIChzdGFydEkgKyBpID49IG1heEkgfHwgY2VudGVySiArIGkgPj0gbWF4SiB8fCBzdGF0ZUNvdW50WzNdID49IG1heENvdW50KSB7CgkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgIH0KCSAgICAgICAgd2hpbGUgKHN0YXJ0SSArIGkgPCBtYXhJICYmIGNlbnRlckogKyBpIDwgbWF4SiAmJiBpbWFnZS5nZXQoY2VudGVySiArIGksIHN0YXJ0SSArIGkpICYmCgkgICAgICAgICAgICBzdGF0ZUNvdW50WzRdIDwgbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbNF0rKzsKCSAgICAgICAgICAgIGkrKzsKCSAgICAgICAgfQoJICAgICAgICBpZiAoc3RhdGVDb3VudFs0XSA+PSBtYXhDb3VudCkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIC8vIElmIHdlIGZvdW5kIGEgZmluZGVyLXBhdHRlcm4tbGlrZSBzZWN0aW9uLCBidXQgaXRzIHNpemUgaXMgbW9yZSB0aGFuIDEwMCUgZGlmZmVyZW50IHRoYW4KCSAgICAgICAgLy8gdGhlIG9yaWdpbmFsLCBhc3N1bWUgaXQncyBhIGZhbHNlIHBvc2l0aXZlCgkgICAgICAgIHZhciBzdGF0ZUNvdW50VG90YWwgPSBzdGF0ZUNvdW50WzBdICsgc3RhdGVDb3VudFsxXSArIHN0YXRlQ291bnRbMl0gKyBzdGF0ZUNvdW50WzNdICsgc3RhdGVDb3VudFs0XTsKCSAgICAgICAgcmV0dXJuIE1hdGguYWJzKHN0YXRlQ291bnRUb3RhbCAtIG9yaWdpbmFsU3RhdGVDb3VudFRvdGFsKSA8IDIgKiBvcmlnaW5hbFN0YXRlQ291bnRUb3RhbCAmJgoJICAgICAgICAgICAgRmluZGVyUGF0dGVybkZpbmRlci5mb3VuZFBhdHRlcm5Dcm9zcyhzdGF0ZUNvdW50KTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPkFmdGVyIGEgaG9yaXpvbnRhbCBzY2FuIGZpbmRzIGEgcG90ZW50aWFsIGZpbmRlciBwYXR0ZXJuLCB0aGlzIG1ldGhvZAoJICAgICAqICJjcm9zcy1jaGVja3MiIGJ5IHNjYW5uaW5nIGRvd24gdmVydGljYWxseSB0aHJvdWdoIHRoZSBjZW50ZXIgb2YgdGhlIHBvc3NpYmxlCgkgICAgICogZmluZGVyIHBhdHRlcm4gdG8gc2VlIGlmIHRoZSBzYW1lIHByb3BvcnRpb24gaXMgZGV0ZWN0ZWQuPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIHN0YXJ0SSByb3cgd2hlcmUgYSBmaW5kZXIgcGF0dGVybiB3YXMgZGV0ZWN0ZWQKCSAgICAgKiBAcGFyYW0gY2VudGVySiBjZW50ZXIgb2YgdGhlIHNlY3Rpb24gdGhhdCBhcHBlYXJzIHRvIGNyb3NzIGEgZmluZGVyIHBhdHRlcm4KCSAgICAgKiBAcGFyYW0gbWF4Q291bnQgbWF4aW11bSByZWFzb25hYmxlIG51bWJlciBvZiBtb2R1bGVzIHRoYXQgc2hvdWxkIGJlCgkgICAgICogb2JzZXJ2ZWQgaW4gYW55IHJlYWRpbmcgc3RhdGUsIGJhc2VkIG9uIHRoZSByZXN1bHRzIG9mIHRoZSBob3Jpem9udGFsIHNjYW4KCSAgICAgKiBAcmV0dXJuIHZlcnRpY2FsIGNlbnRlciBvZiBmaW5kZXIgcGF0dGVybiwgb3Ige0BsaW5rIEZsb2F0I05hTn0gaWYgbm90IGZvdW5kCgkgICAgICovCgkgICAgRmluZGVyUGF0dGVybkZpbmRlci5wcm90b3R5cGUuY3Jvc3NDaGVja1ZlcnRpY2FsID0gZnVuY3Rpb24gKHN0YXJ0SSAvKmludCovLCBjZW50ZXJKIC8qaW50Ki8sIG1heENvdW50IC8qaW50Ki8sIG9yaWdpbmFsU3RhdGVDb3VudFRvdGFsIC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIGltYWdlID0gdGhpcy5pbWFnZTsKCSAgICAgICAgdmFyIG1heEkgPSBpbWFnZS5nZXRIZWlnaHQoKTsKCSAgICAgICAgdmFyIHN0YXRlQ291bnQgPSB0aGlzLmdldENyb3NzQ2hlY2tTdGF0ZUNvdW50KCk7CgkgICAgICAgIC8vIFN0YXJ0IGNvdW50aW5nIHVwIGZyb20gY2VudGVyCgkgICAgICAgIHZhciBpID0gc3RhcnRJOwoJICAgICAgICB3aGlsZSAoaSA+PSAwICYmIGltYWdlLmdldChjZW50ZXJKLCBpKSkgewoJICAgICAgICAgICAgc3RhdGVDb3VudFsyXSsrOwoJICAgICAgICAgICAgaS0tOwoJICAgICAgICB9CgkgICAgICAgIGlmIChpIDwgMCkgewoJICAgICAgICAgICAgcmV0dXJuIE5hTjsKCSAgICAgICAgfQoJICAgICAgICB3aGlsZSAoaSA+PSAwICYmICFpbWFnZS5nZXQoY2VudGVySiwgaSkgJiYgc3RhdGVDb3VudFsxXSA8PSBtYXhDb3VudCkgewoJICAgICAgICAgICAgc3RhdGVDb3VudFsxXSsrOwoJICAgICAgICAgICAgaS0tOwoJICAgICAgICB9CgkgICAgICAgIC8vIElmIGFscmVhZHkgdG9vIG1hbnkgbW9kdWxlcyBpbiB0aGlzIHN0YXRlIG9yIHJhbiBvZmYgdGhlIGVkZ2U6CgkgICAgICAgIGlmIChpIDwgMCB8fCBzdGF0ZUNvdW50WzFdID4gbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHJldHVybiBOYU47CgkgICAgICAgIH0KCSAgICAgICAgd2hpbGUgKGkgPj0gMCAmJiBpbWFnZS5nZXQoY2VudGVySiwgaSkgJiYgc3RhdGVDb3VudFswXSA8PSBtYXhDb3VudCkgewoJICAgICAgICAgICAgc3RhdGVDb3VudFswXSsrOwoJICAgICAgICAgICAgaS0tOwoJICAgICAgICB9CgkgICAgICAgIGlmIChzdGF0ZUNvdW50WzBdID4gbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHJldHVybiBOYU47CgkgICAgICAgIH0KCSAgICAgICAgLy8gTm93IGFsc28gY291bnQgZG93biBmcm9tIGNlbnRlcgoJICAgICAgICBpID0gc3RhcnRJICsgMTsKCSAgICAgICAgd2hpbGUgKGkgPCBtYXhJICYmIGltYWdlLmdldChjZW50ZXJKLCBpKSkgewoJICAgICAgICAgICAgc3RhdGVDb3VudFsyXSsrOwoJICAgICAgICAgICAgaSsrOwoJICAgICAgICB9CgkgICAgICAgIGlmIChpID09PSBtYXhJKSB7CgkgICAgICAgICAgICByZXR1cm4gTmFOOwoJICAgICAgICB9CgkgICAgICAgIHdoaWxlIChpIDwgbWF4SSAmJiAhaW1hZ2UuZ2V0KGNlbnRlckosIGkpICYmIHN0YXRlQ291bnRbM10gPCBtYXhDb3VudCkgewoJICAgICAgICAgICAgc3RhdGVDb3VudFszXSsrOwoJICAgICAgICAgICAgaSsrOwoJICAgICAgICB9CgkgICAgICAgIGlmIChpID09PSBtYXhJIHx8IHN0YXRlQ291bnRbM10gPj0gbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHJldHVybiBOYU47CgkgICAgICAgIH0KCSAgICAgICAgd2hpbGUgKGkgPCBtYXhJICYmIGltYWdlLmdldChjZW50ZXJKLCBpKSAmJiBzdGF0ZUNvdW50WzRdIDwgbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbNF0rKzsKCSAgICAgICAgICAgIGkrKzsKCSAgICAgICAgfQoJICAgICAgICBpZiAoc3RhdGVDb3VudFs0XSA+PSBtYXhDb3VudCkgewoJICAgICAgICAgICAgcmV0dXJuIE5hTjsKCSAgICAgICAgfQoJICAgICAgICAvLyBJZiB3ZSBmb3VuZCBhIGZpbmRlci1wYXR0ZXJuLWxpa2Ugc2VjdGlvbiwgYnV0IGl0cyBzaXplIGlzIG1vcmUgdGhhbiA0MCUgZGlmZmVyZW50IHRoYW4KCSAgICAgICAgLy8gdGhlIG9yaWdpbmFsLCBhc3N1bWUgaXQncyBhIGZhbHNlIHBvc2l0aXZlCgkgICAgICAgIHZhciBzdGF0ZUNvdW50VG90YWwgPSBzdGF0ZUNvdW50WzBdICsgc3RhdGVDb3VudFsxXSArIHN0YXRlQ291bnRbMl0gKyBzdGF0ZUNvdW50WzNdICsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbNF07CgkgICAgICAgIGlmICg1ICogTWF0aC5hYnMoc3RhdGVDb3VudFRvdGFsIC0gb3JpZ2luYWxTdGF0ZUNvdW50VG90YWwpID49IDIgKiBvcmlnaW5hbFN0YXRlQ291bnRUb3RhbCkgewoJICAgICAgICAgICAgcmV0dXJuIE5hTjsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gRmluZGVyUGF0dGVybkZpbmRlci5mb3VuZFBhdHRlcm5Dcm9zcyhzdGF0ZUNvdW50KSA/IEZpbmRlclBhdHRlcm5GaW5kZXIuY2VudGVyRnJvbUVuZChzdGF0ZUNvdW50LCBpKSA6IE5hTjsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPkxpa2Uge0BsaW5rICNjcm9zc0NoZWNrVmVydGljYWwoaW50LCBpbnQsIGludCwgaW50KX0sIGFuZCBpbiBmYWN0IGlzIGJhc2ljYWxseSBpZGVudGljYWwsCgkgICAgICogZXhjZXB0IGl0IHJlYWRzIGhvcml6b250YWxseSBpbnN0ZWFkIG9mIHZlcnRpY2FsbHkuIFRoaXMgaXMgdXNlZCB0byBjcm9zcy1jcm9zcwoJICAgICAqIGNoZWNrIGEgdmVydGljYWwgY3Jvc3MgY2hlY2sgYW5kIGxvY2F0ZSB0aGUgcmVhbCBjZW50ZXIgb2YgdGhlIGFsaWdubWVudCBwYXR0ZXJuLjwvcD4KCSAgICAgKi8KCSAgICBGaW5kZXJQYXR0ZXJuRmluZGVyLnByb3RvdHlwZS5jcm9zc0NoZWNrSG9yaXpvbnRhbCA9IGZ1bmN0aW9uIChzdGFydEogLyppbnQqLywgY2VudGVySSAvKmludCovLCBtYXhDb3VudCAvKmludCovLCBvcmlnaW5hbFN0YXRlQ291bnRUb3RhbCAvKmludCovKSB7CgkgICAgICAgIHZhciBpbWFnZSA9IHRoaXMuaW1hZ2U7CgkgICAgICAgIHZhciBtYXhKID0gaW1hZ2UuZ2V0V2lkdGgoKTsKCSAgICAgICAgdmFyIHN0YXRlQ291bnQgPSB0aGlzLmdldENyb3NzQ2hlY2tTdGF0ZUNvdW50KCk7CgkgICAgICAgIHZhciBqID0gc3RhcnRKOwoJICAgICAgICB3aGlsZSAoaiA+PSAwICYmIGltYWdlLmdldChqLCBjZW50ZXJJKSkgewoJICAgICAgICAgICAgc3RhdGVDb3VudFsyXSsrOwoJICAgICAgICAgICAgai0tOwoJICAgICAgICB9CgkgICAgICAgIGlmIChqIDwgMCkgewoJICAgICAgICAgICAgcmV0dXJuIE5hTjsKCSAgICAgICAgfQoJICAgICAgICB3aGlsZSAoaiA+PSAwICYmICFpbWFnZS5nZXQoaiwgY2VudGVySSkgJiYgc3RhdGVDb3VudFsxXSA8PSBtYXhDb3VudCkgewoJICAgICAgICAgICAgc3RhdGVDb3VudFsxXSsrOwoJICAgICAgICAgICAgai0tOwoJICAgICAgICB9CgkgICAgICAgIGlmIChqIDwgMCB8fCBzdGF0ZUNvdW50WzFdID4gbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHJldHVybiBOYU47CgkgICAgICAgIH0KCSAgICAgICAgd2hpbGUgKGogPj0gMCAmJiBpbWFnZS5nZXQoaiwgY2VudGVySSkgJiYgc3RhdGVDb3VudFswXSA8PSBtYXhDb3VudCkgewoJICAgICAgICAgICAgc3RhdGVDb3VudFswXSsrOwoJICAgICAgICAgICAgai0tOwoJICAgICAgICB9CgkgICAgICAgIGlmIChzdGF0ZUNvdW50WzBdID4gbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHJldHVybiBOYU47CgkgICAgICAgIH0KCSAgICAgICAgaiA9IHN0YXJ0SiArIDE7CgkgICAgICAgIHdoaWxlIChqIDwgbWF4SiAmJiBpbWFnZS5nZXQoaiwgY2VudGVySSkpIHsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbMl0rKzsKCSAgICAgICAgICAgIGorKzsKCSAgICAgICAgfQoJICAgICAgICBpZiAoaiA9PT0gbWF4SikgewoJICAgICAgICAgICAgcmV0dXJuIE5hTjsKCSAgICAgICAgfQoJICAgICAgICB3aGlsZSAoaiA8IG1heEogJiYgIWltYWdlLmdldChqLCBjZW50ZXJJKSAmJiBzdGF0ZUNvdW50WzNdIDwgbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbM10rKzsKCSAgICAgICAgICAgIGorKzsKCSAgICAgICAgfQoJICAgICAgICBpZiAoaiA9PT0gbWF4SiB8fCBzdGF0ZUNvdW50WzNdID49IG1heENvdW50KSB7CgkgICAgICAgICAgICByZXR1cm4gTmFOOwoJICAgICAgICB9CgkgICAgICAgIHdoaWxlIChqIDwgbWF4SiAmJiBpbWFnZS5nZXQoaiwgY2VudGVySSkgJiYgc3RhdGVDb3VudFs0XSA8IG1heENvdW50KSB7CgkgICAgICAgICAgICBzdGF0ZUNvdW50WzRdKys7CgkgICAgICAgICAgICBqKys7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHN0YXRlQ291bnRbNF0gPj0gbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHJldHVybiBOYU47CgkgICAgICAgIH0KCSAgICAgICAgLy8gSWYgd2UgZm91bmQgYSBmaW5kZXItcGF0dGVybi1saWtlIHNlY3Rpb24sIGJ1dCBpdHMgc2l6ZSBpcyBzaWduaWZpY2FudGx5IGRpZmZlcmVudCB0aGFuCgkgICAgICAgIC8vIHRoZSBvcmlnaW5hbCwgYXNzdW1lIGl0J3MgYSBmYWxzZSBwb3NpdGl2ZQoJICAgICAgICB2YXIgc3RhdGVDb3VudFRvdGFsID0gc3RhdGVDb3VudFswXSArIHN0YXRlQ291bnRbMV0gKyBzdGF0ZUNvdW50WzJdICsgc3RhdGVDb3VudFszXSArCgkgICAgICAgICAgICBzdGF0ZUNvdW50WzRdOwoJICAgICAgICBpZiAoNSAqIE1hdGguYWJzKHN0YXRlQ291bnRUb3RhbCAtIG9yaWdpbmFsU3RhdGVDb3VudFRvdGFsKSA+PSBvcmlnaW5hbFN0YXRlQ291bnRUb3RhbCkgewoJICAgICAgICAgICAgcmV0dXJuIE5hTjsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gRmluZGVyUGF0dGVybkZpbmRlci5mb3VuZFBhdHRlcm5Dcm9zcyhzdGF0ZUNvdW50KSA/IEZpbmRlclBhdHRlcm5GaW5kZXIuY2VudGVyRnJvbUVuZChzdGF0ZUNvdW50LCBqKSA6IE5hTjsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPlRoaXMgaXMgY2FsbGVkIHdoZW4gYSBob3Jpem9udGFsIHNjYW4gZmluZHMgYSBwb3NzaWJsZSBhbGlnbm1lbnQgcGF0dGVybi4gSXQgd2lsbAoJICAgICAqIGNyb3NzIGNoZWNrIHdpdGggYSB2ZXJ0aWNhbCBzY2FuLCBhbmQgaWYgc3VjY2Vzc2Z1bCwgd2lsbCwgYWgsIGNyb3NzLWNyb3NzLWNoZWNrCgkgICAgICogd2l0aCBhbm90aGVyIGhvcml6b250YWwgc2Nhbi4gVGhpcyBpcyBuZWVkZWQgcHJpbWFyaWx5IHRvIGxvY2F0ZSB0aGUgcmVhbCBob3Jpem9udGFsCgkgICAgICogY2VudGVyIG9mIHRoZSBwYXR0ZXJuIGluIGNhc2VzIG9mIGV4dHJlbWUgc2tldy4KCSAgICAgKiBBbmQgdGhlbiB3ZSBjcm9zcy1jcm9zcy1jcm9zcyBjaGVjayB3aXRoIGFub3RoZXIgZGlhZ29uYWwgc2Nhbi48L3A+CgkgICAgICoKCSAgICAgKiA8cD5JZiB0aGF0IHN1Y2NlZWRzIHRoZSBmaW5kZXIgcGF0dGVybiBsb2NhdGlvbiBpcyBhZGRlZCB0byBhIGxpc3QgdGhhdCB0cmFja3MKCSAgICAgKiB0aGUgbnVtYmVyIG9mIHRpbWVzIGVhY2ggbG9jYXRpb24gaGFzIGJlZW4gbmVhcmx5LW1hdGNoZWQgYXMgYSBmaW5kZXIgcGF0dGVybi4KCSAgICAgKiBFYWNoIGFkZGl0aW9uYWwgZmluZCBpcyBtb3JlIGV2aWRlbmNlIHRoYXQgdGhlIGxvY2F0aW9uIGlzIGluIGZhY3QgYSBmaW5kZXIKCSAgICAgKiBwYXR0ZXJuIGNlbnRlcgoJICAgICAqCgkgICAgICogQHBhcmFtIHN0YXRlQ291bnQgcmVhZGluZyBzdGF0ZSBtb2R1bGUgY291bnRzIGZyb20gaG9yaXpvbnRhbCBzY2FuCgkgICAgICogQHBhcmFtIGkgcm93IHdoZXJlIGZpbmRlciBwYXR0ZXJuIG1heSBiZSBmb3VuZAoJICAgICAqIEBwYXJhbSBqIGVuZCBvZiBwb3NzaWJsZSBmaW5kZXIgcGF0dGVybiBpbiByb3cKCSAgICAgKiBAcGFyYW0gcHVyZUJhcmNvZGUgdHJ1ZSBpZiBpbiAicHVyZSBiYXJjb2RlIiBtb2RlCgkgICAgICogQHJldHVybiB0cnVlIGlmIGEgZmluZGVyIHBhdHRlcm4gY2FuZGlkYXRlIHdhcyBmb3VuZCB0aGlzIHRpbWUKCSAgICAgKi8KCSAgICBGaW5kZXJQYXR0ZXJuRmluZGVyLnByb3RvdHlwZS5oYW5kbGVQb3NzaWJsZUNlbnRlciA9IGZ1bmN0aW9uIChzdGF0ZUNvdW50LCBpIC8qaW50Ki8sIGogLyppbnQqLywgcHVyZUJhcmNvZGUpIHsKCSAgICAgICAgdmFyIHN0YXRlQ291bnRUb3RhbCA9IHN0YXRlQ291bnRbMF0gKyBzdGF0ZUNvdW50WzFdICsgc3RhdGVDb3VudFsyXSArIHN0YXRlQ291bnRbM10gKwoJICAgICAgICAgICAgc3RhdGVDb3VudFs0XTsKCSAgICAgICAgdmFyIGNlbnRlckogPSBGaW5kZXJQYXR0ZXJuRmluZGVyLmNlbnRlckZyb21FbmQoc3RhdGVDb3VudCwgaik7CgkgICAgICAgIHZhciBjZW50ZXJJID0gdGhpcy5jcm9zc0NoZWNrVmVydGljYWwoaSwgLyooaW50KSAqLyBNYXRoLmZsb29yKGNlbnRlckopLCBzdGF0ZUNvdW50WzJdLCBzdGF0ZUNvdW50VG90YWwpOwoJICAgICAgICBpZiAoIWlzTmFOKGNlbnRlckkpKSB7CgkgICAgICAgICAgICAvLyBSZS1jcm9zcyBjaGVjawoJICAgICAgICAgICAgY2VudGVySiA9IHRoaXMuY3Jvc3NDaGVja0hvcml6b250YWwoLyooaW50KSAqLyBNYXRoLmZsb29yKGNlbnRlckopLCAvKihpbnQpICovIE1hdGguZmxvb3IoY2VudGVySSksIHN0YXRlQ291bnRbMl0sIHN0YXRlQ291bnRUb3RhbCk7CgkgICAgICAgICAgICBpZiAoIWlzTmFOKGNlbnRlckopICYmCgkgICAgICAgICAgICAgICAgKCFwdXJlQmFyY29kZSB8fCB0aGlzLmNyb3NzQ2hlY2tEaWFnb25hbCgvKihpbnQpICovIE1hdGguZmxvb3IoY2VudGVySSksIC8qKGludCkgKi8gTWF0aC5mbG9vcihjZW50ZXJKKSwgc3RhdGVDb3VudFsyXSwgc3RhdGVDb3VudFRvdGFsKSkpIHsKCSAgICAgICAgICAgICAgICB2YXIgZXN0aW1hdGVkTW9kdWxlU2l6ZSA9IHN0YXRlQ291bnRUb3RhbCAvIDcuMDsKCSAgICAgICAgICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTsKCSAgICAgICAgICAgICAgICB2YXIgcG9zc2libGVDZW50ZXJzID0gdGhpcy5wb3NzaWJsZUNlbnRlcnM7CgkgICAgICAgICAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwLCBsZW5ndGhfMSA9IHBvc3NpYmxlQ2VudGVycy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoXzE7IGluZGV4KyspIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIGNlbnRlciA9IHBvc3NpYmxlQ2VudGVyc1tpbmRleF07CgkgICAgICAgICAgICAgICAgICAgIC8vIExvb2sgZm9yIGFib3V0IHRoZSBzYW1lIGNlbnRlciBhbmQgbW9kdWxlIHNpemU6CgkgICAgICAgICAgICAgICAgICAgIGlmIChjZW50ZXIuYWJvdXRFcXVhbHMoZXN0aW1hdGVkTW9kdWxlU2l6ZSwgY2VudGVySSwgY2VudGVySikpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlQ2VudGVyc1tpbmRleF0gPSBjZW50ZXIuY29tYmluZUVzdGltYXRlKGNlbnRlckksIGNlbnRlckosIGVzdGltYXRlZE1vZHVsZVNpemUpOwoJICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwoJICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgaWYgKCFmb3VuZCkgewoJICAgICAgICAgICAgICAgICAgICB2YXIgcG9pbnQgPSBuZXcgRmluZGVyUGF0dGVybl8xLmRlZmF1bHQoY2VudGVySiwgY2VudGVySSwgZXN0aW1hdGVkTW9kdWxlU2l6ZSk7CgkgICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlQ2VudGVycy5wdXNoKHBvaW50KTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVzdWx0UG9pbnRDYWxsYmFjayAhPT0gbnVsbCAmJiB0aGlzLnJlc3VsdFBvaW50Q2FsbGJhY2sgIT09IHVuZGVmaW5lZCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRQb2ludENhbGxiYWNrLmZvdW5kUG9zc2libGVSZXN1bHRQb2ludChwb2ludCk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiBudW1iZXIgb2Ygcm93cyB3ZSBjb3VsZCBzYWZlbHkgc2tpcCBkdXJpbmcgc2Nhbm5pbmcsIGJhc2VkIG9uIHRoZSBmaXJzdAoJICAgICAqICAgICAgICAgdHdvIGZpbmRlciBwYXR0ZXJucyB0aGF0IGhhdmUgYmVlbiBsb2NhdGVkLiBJbiBzb21lIGNhc2VzIHRoZWlyIHBvc2l0aW9uIHdpbGwKCSAgICAgKiAgICAgICAgIGFsbG93IHVzIHRvIGluZmVyIHRoYXQgdGhlIHRoaXJkIHBhdHRlcm4gbXVzdCBsaWUgYmVsb3cgYSBjZXJ0YWluIHBvaW50IGZhcnRoZXIKCSAgICAgKiAgICAgICAgIGRvd24gaW4gdGhlIGltYWdlLgoJICAgICAqLwoJICAgIEZpbmRlclBhdHRlcm5GaW5kZXIucHJvdG90eXBlLmZpbmRSb3dTa2lwID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgZV8xLCBfYTsKCSAgICAgICAgdmFyIG1heCA9IHRoaXMucG9zc2libGVDZW50ZXJzLmxlbmd0aDsKCSAgICAgICAgaWYgKG1heCA8PSAxKSB7CgkgICAgICAgICAgICByZXR1cm4gMDsKCSAgICAgICAgfQoJICAgICAgICB2YXIgZmlyc3RDb25maXJtZWRDZW50ZXIgPSBudWxsOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLnBvc3NpYmxlQ2VudGVycyksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgY2VudGVyID0gX2MudmFsdWU7CgkgICAgICAgICAgICAgICAgaWYgKGNlbnRlci5nZXRDb3VudCgpID49IEZpbmRlclBhdHRlcm5GaW5kZXIuQ0VOVEVSX1FVT1JVTSkgewoJICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RDb25maXJtZWRDZW50ZXIgPT0gbnVsbCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RDb25maXJtZWRDZW50ZXIgPSBjZW50ZXI7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHR3byBjb25maXJtZWQgY2VudGVycwoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gSG93IGZhciBkb3duIGNhbiB3ZSBza2lwIGJlZm9yZSByZXN1bWluZyBsb29raW5nIGZvciB0aGUgbmV4dAoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGF0dGVybj8gSW4gdGhlIHdvcnN0IGNhc2UsIG9ubHkgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpZmZlcmVuY2UgaW4gdGhlIHggLyB5IGNvb3JkaW5hdGVzIG9mIHRoZSB0d28gY2VudGVycy4KCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGNhc2Ugd2hlcmUgeW91IGZpbmQgdG9wIGxlZnQgbGFzdC4KCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzU2tpcHBlZCA9IHRydWU7CgkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyooaW50KSAqLyBNYXRoLmZsb29yKChNYXRoLmFicyhmaXJzdENvbmZpcm1lZENlbnRlci5nZXRYKCkgLSBjZW50ZXIuZ2V0WCgpKSAtCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5hYnMoZmlyc3RDb25maXJtZWRDZW50ZXIuZ2V0WSgpIC0gY2VudGVyLmdldFkoKSkpIC8gMik7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gMDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gdHJ1ZSBpZmYgd2UgaGF2ZSBmb3VuZCBhdCBsZWFzdCAzIGZpbmRlciBwYXR0ZXJucyB0aGF0IGhhdmUgYmVlbiBkZXRlY3RlZAoJICAgICAqICAgICAgICAgYXQgbGVhc3Qge0BsaW5rICNDRU5URVJfUVVPUlVNfSB0aW1lcyBlYWNoLCBhbmQsIHRoZSBlc3RpbWF0ZWQgbW9kdWxlIHNpemUgb2YgdGhlCgkgICAgICogICAgICAgICBjYW5kaWRhdGVzIGlzICJwcmV0dHkgc2ltaWxhciIKCSAgICAgKi8KCSAgICBGaW5kZXJQYXR0ZXJuRmluZGVyLnByb3RvdHlwZS5oYXZlTXVsdGlwbHlDb25maXJtZWRDZW50ZXJzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgZV8yLCBfYSwgZV8zLCBfYjsKCSAgICAgICAgdmFyIGNvbmZpcm1lZENvdW50ID0gMDsKCSAgICAgICAgdmFyIHRvdGFsTW9kdWxlU2l6ZSA9IDAuMDsKCSAgICAgICAgdmFyIG1heCA9IHRoaXMucG9zc2libGVDZW50ZXJzLmxlbmd0aDsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIF9jID0gX192YWx1ZXModGhpcy5wb3NzaWJsZUNlbnRlcnMpLCBfZCA9IF9jLm5leHQoKTsgIV9kLmRvbmU7IF9kID0gX2MubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgdmFyIHBhdHRlcm4gPSBfZC52YWx1ZTsKCSAgICAgICAgICAgICAgICBpZiAocGF0dGVybi5nZXRDb3VudCgpID49IEZpbmRlclBhdHRlcm5GaW5kZXIuQ0VOVEVSX1FVT1JVTSkgewoJICAgICAgICAgICAgICAgICAgICBjb25maXJtZWRDb3VudCsrOwoJICAgICAgICAgICAgICAgICAgICB0b3RhbE1vZHVsZVNpemUgKz0gcGF0dGVybi5nZXRFc3RpbWF0ZWRNb2R1bGVTaXplKCk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAoX2QgJiYgIV9kLmRvbmUgJiYgKF9hID0gX2MucmV0dXJuKSkgX2EuY2FsbChfYyk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGNvbmZpcm1lZENvdW50IDwgMykgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIC8vIE9LLCB3ZSBoYXZlIGF0IGxlYXN0IDMgY29uZmlybWVkIGNlbnRlcnMsIGJ1dCwgaXQncyBwb3NzaWJsZSB0aGF0IG9uZSBpcyBhICJmYWxzZSBwb3NpdGl2ZSIKCSAgICAgICAgLy8gYW5kIHRoYXQgd2UgbmVlZCB0byBrZWVwIGxvb2tpbmcuIFdlIGRldGVjdCB0aGlzIGJ5IGFza2luZyBpZiB0aGUgZXN0aW1hdGVkIG1vZHVsZSBzaXplcwoJICAgICAgICAvLyB2YXJ5IHRvbyBtdWNoLiBXZSBhcmJpdHJhcmlseSBzYXkgdGhhdCB3aGVuIHRoZSB0b3RhbCBkZXZpYXRpb24gZnJvbSBhdmVyYWdlIGV4Y2VlZHMKCSAgICAgICAgLy8gNSUgb2YgdGhlIHRvdGFsIG1vZHVsZSBzaXplIGVzdGltYXRlcywgaXQncyB0b28gbXVjaC4KCSAgICAgICAgdmFyIGF2ZXJhZ2UgPSB0b3RhbE1vZHVsZVNpemUgLyBtYXg7CgkgICAgICAgIHZhciB0b3RhbERldmlhdGlvbiA9IDAuMDsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIF9lID0gX192YWx1ZXModGhpcy5wb3NzaWJsZUNlbnRlcnMpLCBfZiA9IF9lLm5leHQoKTsgIV9mLmRvbmU7IF9mID0gX2UubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgdmFyIHBhdHRlcm4gPSBfZi52YWx1ZTsKCSAgICAgICAgICAgICAgICB0b3RhbERldmlhdGlvbiArPSBNYXRoLmFicyhwYXR0ZXJuLmdldEVzdGltYXRlZE1vZHVsZVNpemUoKSAtIGF2ZXJhZ2UpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzNfMSkgeyBlXzMgPSB7IGVycm9yOiBlXzNfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAoX2YgJiYgIV9mLmRvbmUgJiYgKF9iID0gX2UucmV0dXJuKSkgX2IuY2FsbChfZSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMykgdGhyb3cgZV8zLmVycm9yOyB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRvdGFsRGV2aWF0aW9uIDw9IDAuMDUgKiB0b3RhbE1vZHVsZVNpemU7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIHRoZSAzIGJlc3Qge0BsaW5rIEZpbmRlclBhdHRlcm59cyBmcm9tIG91ciBsaXN0IG9mIGNhbmRpZGF0ZXMuIFRoZSAiYmVzdCIgYXJlCgkgICAgICogICAgICAgICB0aG9zZSB0aGF0IGhhdmUgYmVlbiBkZXRlY3RlZCBhdCBsZWFzdCB7QGxpbmsgI0NFTlRFUl9RVU9SVU19IHRpbWVzLCBhbmQgd2hvc2UgbW9kdWxlCgkgICAgICogICAgICAgICBzaXplIGRpZmZlcnMgZnJvbSB0aGUgYXZlcmFnZSBhbW9uZyB0aG9zZSBwYXR0ZXJucyB0aGUgbGVhc3QKCSAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uIGlmIDMgc3VjaCBmaW5kZXIgcGF0dGVybnMgZG8gbm90IGV4aXN0CgkgICAgICovCgkgICAgRmluZGVyUGF0dGVybkZpbmRlci5wcm90b3R5cGUuc2VsZWN0QmVzdFBhdHRlcm5zID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgZV80LCBfYSwgZV81LCBfYjsKCSAgICAgICAgdmFyIHN0YXJ0U2l6ZSA9IHRoaXMucG9zc2libGVDZW50ZXJzLmxlbmd0aDsKCSAgICAgICAgaWYgKHN0YXJ0U2l6ZSA8IDMpIHsKCSAgICAgICAgICAgIC8vIENvdWxkbid0IGZpbmQgZW5vdWdoIGZpbmRlciBwYXR0ZXJucwoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEkMi5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHBvc3NpYmxlQ2VudGVycyA9IHRoaXMucG9zc2libGVDZW50ZXJzOwoJICAgICAgICB2YXIgYXZlcmFnZTsKCSAgICAgICAgLy8gRmlsdGVyIG91dGxpZXIgcG9zc2liaWxpdGllcyB3aG9zZSBtb2R1bGUgc2l6ZSBpcyB0b28gZGlmZmVyZW50CgkgICAgICAgIGlmIChzdGFydFNpemUgPiAzKSB7CgkgICAgICAgICAgICAvLyBCdXQgd2UgY2FuIG9ubHkgYWZmb3JkIHRvIGRvIHNvIGlmIHdlIGhhdmUgYXQgbGVhc3QgNCBwb3NzaWJpbGl0aWVzIHRvIGNob29zZSBmcm9tCgkgICAgICAgICAgICB2YXIgdG90YWxNb2R1bGVTaXplID0gMC4wOwoJICAgICAgICAgICAgdmFyIHNxdWFyZSA9IDAuMDsKCSAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgZm9yICh2YXIgX2MgPSBfX3ZhbHVlcyh0aGlzLnBvc3NpYmxlQ2VudGVycyksIF9kID0gX2MubmV4dCgpOyAhX2QuZG9uZTsgX2QgPSBfYy5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIGNlbnRlciA9IF9kLnZhbHVlOwoJICAgICAgICAgICAgICAgICAgICB2YXIgc2l6ZSA9IGNlbnRlci5nZXRFc3RpbWF0ZWRNb2R1bGVTaXplKCk7CgkgICAgICAgICAgICAgICAgICAgIHRvdGFsTW9kdWxlU2l6ZSArPSBzaXplOwoJICAgICAgICAgICAgICAgICAgICBzcXVhcmUgKz0gc2l6ZSAqIHNpemU7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgY2F0Y2ggKGVfNF8xKSB7IGVfNCA9IHsgZXJyb3I6IGVfNF8xIH07IH0KCSAgICAgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChfZCAmJiAhX2QuZG9uZSAmJiAoX2EgPSBfYy5yZXR1cm4pKSBfYS5jYWxsKF9jKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzQpIHRocm93IGVfNC5lcnJvcjsgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgYXZlcmFnZSA9IHRvdGFsTW9kdWxlU2l6ZSAvIHN0YXJ0U2l6ZTsKCSAgICAgICAgICAgIHZhciBzdGREZXYgPSBNYXRoLnNxcnQoc3F1YXJlIC8gc3RhcnRTaXplIC0gYXZlcmFnZSAqIGF2ZXJhZ2UpOwoJICAgICAgICAgICAgcG9zc2libGVDZW50ZXJzLnNvcnQoCgkgICAgICAgICAgICAvKioKCSAgICAgICAgICAgICAqIDxwPk9yZGVycyBieSBmdXJ0aGVzdCBmcm9tIGF2ZXJhZ2U8L3A+CgkgICAgICAgICAgICAgKi8KCSAgICAgICAgICAgIC8vIEZ1cnRoZXN0RnJvbUF2ZXJhZ2VDb21wYXJhdG9yIGltcGxlbWVudHMgQ29tcGFyYXRvcjxGaW5kZXJQYXR0ZXJuPgoJICAgICAgICAgICAgZnVuY3Rpb24gKGNlbnRlcjEsIGNlbnRlcjIpIHsKCSAgICAgICAgICAgICAgICB2YXIgZEEgPSBNYXRoLmFicyhjZW50ZXIyLmdldEVzdGltYXRlZE1vZHVsZVNpemUoKSAtIGF2ZXJhZ2UpOwoJICAgICAgICAgICAgICAgIHZhciBkQiA9IE1hdGguYWJzKGNlbnRlcjEuZ2V0RXN0aW1hdGVkTW9kdWxlU2l6ZSgpIC0gYXZlcmFnZSk7CgkgICAgICAgICAgICAgICAgcmV0dXJuIGRBIDwgZEIgPyAtMSA6IGRBID4gZEIgPyAxIDogMDsKCSAgICAgICAgICAgIH0pOwoJICAgICAgICAgICAgdmFyIGxpbWl0ID0gTWF0aC5tYXgoMC4yICogYXZlcmFnZSwgc3RkRGV2KTsKCSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9zc2libGVDZW50ZXJzLmxlbmd0aCAmJiBwb3NzaWJsZUNlbnRlcnMubGVuZ3RoID4gMzsgaSsrKSB7CgkgICAgICAgICAgICAgICAgdmFyIHBhdHRlcm4gPSBwb3NzaWJsZUNlbnRlcnNbaV07CgkgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHBhdHRlcm4uZ2V0RXN0aW1hdGVkTW9kdWxlU2l6ZSgpIC0gYXZlcmFnZSkgPiBsaW1pdCkgewoJICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZUNlbnRlcnMuc3BsaWNlKGksIDEpOwoJICAgICAgICAgICAgICAgICAgICBpLS07CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGlmIChwb3NzaWJsZUNlbnRlcnMubGVuZ3RoID4gMykgewoJICAgICAgICAgICAgLy8gVGhyb3cgYXdheSBhbGwgYnV0IHRob3NlIGZpcnN0IHNpemUgY2FuZGlkYXRlIHBvaW50cyB3ZSBmb3VuZC4KCSAgICAgICAgICAgIHZhciB0b3RhbE1vZHVsZVNpemUgPSAwLjA7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGZvciAodmFyIHBvc3NpYmxlQ2VudGVyc18xID0gX192YWx1ZXMocG9zc2libGVDZW50ZXJzKSwgcG9zc2libGVDZW50ZXJzXzFfMSA9IHBvc3NpYmxlQ2VudGVyc18xLm5leHQoKTsgIXBvc3NpYmxlQ2VudGVyc18xXzEuZG9uZTsgcG9zc2libGVDZW50ZXJzXzFfMSA9IHBvc3NpYmxlQ2VudGVyc18xLm5leHQoKSkgewoJICAgICAgICAgICAgICAgICAgICB2YXIgcG9zc2libGVDZW50ZXIgPSBwb3NzaWJsZUNlbnRlcnNfMV8xLnZhbHVlOwoJICAgICAgICAgICAgICAgICAgICB0b3RhbE1vZHVsZVNpemUgKz0gcG9zc2libGVDZW50ZXIuZ2V0RXN0aW1hdGVkTW9kdWxlU2l6ZSgpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGNhdGNoIChlXzVfMSkgeyBlXzUgPSB7IGVycm9yOiBlXzVfMSB9OyB9CgkgICAgICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgICAgICBpZiAocG9zc2libGVDZW50ZXJzXzFfMSAmJiAhcG9zc2libGVDZW50ZXJzXzFfMS5kb25lICYmIChfYiA9IHBvc3NpYmxlQ2VudGVyc18xLnJldHVybikpIF9iLmNhbGwocG9zc2libGVDZW50ZXJzXzEpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfNSkgdGhyb3cgZV81LmVycm9yOyB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBhdmVyYWdlID0gdG90YWxNb2R1bGVTaXplIC8gcG9zc2libGVDZW50ZXJzLmxlbmd0aDsKCSAgICAgICAgICAgIHBvc3NpYmxlQ2VudGVycy5zb3J0KAoJICAgICAgICAgICAgLyoqCgkgICAgICAgICAgICAgKiA8cD5PcmRlcnMgYnkge0BsaW5rIEZpbmRlclBhdHRlcm4jZ2V0Q291bnQoKX0sIGRlc2NlbmRpbmcuPC9wPgoJICAgICAgICAgICAgICovCgkgICAgICAgICAgICAvLyBDZW50ZXJDb21wYXJhdG9yIGltcGxlbWVudHMgQ29tcGFyYXRvcjxGaW5kZXJQYXR0ZXJuPgoJICAgICAgICAgICAgZnVuY3Rpb24gKGNlbnRlcjEsIGNlbnRlcjIpIHsKCSAgICAgICAgICAgICAgICBpZiAoY2VudGVyMi5nZXRDb3VudCgpID09PSBjZW50ZXIxLmdldENvdW50KCkpIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIGRBID0gTWF0aC5hYnMoY2VudGVyMi5nZXRFc3RpbWF0ZWRNb2R1bGVTaXplKCkgLSBhdmVyYWdlKTsKCSAgICAgICAgICAgICAgICAgICAgdmFyIGRCID0gTWF0aC5hYnMoY2VudGVyMS5nZXRFc3RpbWF0ZWRNb2R1bGVTaXplKCkgLSBhdmVyYWdlKTsKCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRBIDwgZEIgPyAxIDogZEEgPiBkQiA/IC0xIDogMDsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgIHJldHVybiBjZW50ZXIyLmdldENvdW50KCkgLSBjZW50ZXIxLmdldENvdW50KCk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfSk7CgkgICAgICAgICAgICBwb3NzaWJsZUNlbnRlcnMuc3BsaWNlKDMpOyAvLyB0aGlzIGlzIG5vdCByZWFseSBuZWNlc3NhcnkgYXMgd2Ugb25seSByZXR1cm4gZmlyc3QgMyBhbnl3YXkKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gWwoJICAgICAgICAgICAgcG9zc2libGVDZW50ZXJzWzBdLAoJICAgICAgICAgICAgcG9zc2libGVDZW50ZXJzWzFdLAoJICAgICAgICAgICAgcG9zc2libGVDZW50ZXJzWzJdCgkgICAgICAgIF07CgkgICAgfTsKCSAgICBGaW5kZXJQYXR0ZXJuRmluZGVyLkNFTlRFUl9RVU9SVU0gPSAyOwoJICAgIEZpbmRlclBhdHRlcm5GaW5kZXIuTUlOX1NLSVAgPSAzOyAvLyAxIHBpeGVsL21vZHVsZSB0aW1lcyAzIG1vZHVsZXMvY2VudGVyCgkgICAgRmluZGVyUGF0dGVybkZpbmRlci5NQVhfTU9EVUxFUyA9IDU3OyAvLyBzdXBwb3J0IHVwIHRvIHZlcnNpb24gMTAgZm9yIG1vYmlsZSBjbGllbnRzCgkgICAgcmV0dXJuIEZpbmRlclBhdHRlcm5GaW5kZXI7Cgl9KCkpOwoJRmluZGVyUGF0dGVybkZpbmRlciQxLmRlZmF1bHQgPSBGaW5kZXJQYXR0ZXJuRmluZGVyOwoKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoRGV0ZWN0b3IkMSwgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJdmFyIE1hdGhVdGlsc18xID0gTWF0aFV0aWxzJDE7Cgl2YXIgRGV0ZWN0b3JSZXN1bHRfMSA9IERldGVjdG9yUmVzdWx0JDE7CgkvLyBpbXBvcnQgR3JpZFNhbXBsZXIgZnJvbSAnLi4vLi4vY29tbW9uL0dyaWRTYW1wbGVyJzsKCXZhciBHcmlkU2FtcGxlckluc3RhbmNlXzEgPSBHcmlkU2FtcGxlckluc3RhbmNlJDE7Cgl2YXIgUGVyc3BlY3RpdmVUcmFuc2Zvcm1fMSA9IFBlcnNwZWN0aXZlVHJhbnNmb3JtJDE7Cgl2YXIgRGVjb2RlSGludFR5cGVfMSQxID0gRGVjb2RlSGludFR5cGUkMTsKCXZhciBOb3RGb3VuZEV4Y2VwdGlvbl8xJDEgPSBOb3RGb3VuZEV4Y2VwdGlvbiQxOwoJdmFyIFJlc3VsdFBvaW50XzEgPSBSZXN1bHRQb2ludCQxOwoJdmFyIFZlcnNpb25fMSA9IFZlcnNpb24kMTsKCXZhciBBbGlnbm1lbnRQYXR0ZXJuRmluZGVyXzEgPSBBbGlnbm1lbnRQYXR0ZXJuRmluZGVyJDE7Cgl2YXIgRmluZGVyUGF0dGVybkZpbmRlcl8xID0gRmluZGVyUGF0dGVybkZpbmRlciQxOwoJLyppbXBvcnQgamF2YS51dGlsLk1hcDsqLwoJLyoqCgkgKiA8cD5FbmNhcHN1bGF0ZXMgbG9naWMgdGhhdCBjYW4gZGV0ZWN0IGEgUVIgQ29kZSBpbiBhbiBpbWFnZSwgZXZlbiBpZiB0aGUgUVIgQ29kZQoJICogaXMgcm90YXRlZCBvciBza2V3ZWQsIG9yIHBhcnRpYWxseSBvYnNjdXJlZC48L3A+CgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIERldGVjdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIERldGVjdG9yKGltYWdlKSB7CgkgICAgICAgIHRoaXMuaW1hZ2UgPSBpbWFnZTsKCSAgICB9CgkgICAgRGV0ZWN0b3IucHJvdG90eXBlLmdldEltYWdlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5pbWFnZTsKCSAgICB9OwoJICAgIERldGVjdG9yLnByb3RvdHlwZS5nZXRSZXN1bHRQb2ludENhbGxiYWNrID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHRQb2ludENhbGxiYWNrOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogPHA+RGV0ZWN0cyBhIFFSIENvZGUgaW4gYW4gaW1hZ2UuPC9wPgoJICAgICAqCgkgICAgICogQHJldHVybiB7QGxpbmsgRGV0ZWN0b3JSZXN1bHR9IGVuY2Fwc3VsYXRpbmcgcmVzdWx0cyBvZiBkZXRlY3RpbmcgYSBRUiBDb2RlCgkgICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpZiBRUiBDb2RlIGNhbm5vdCBiZSBmb3VuZAoJICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uIGlmIGEgUVIgQ29kZSBjYW5ub3QgYmUgZGVjb2RlZAoJICAgICAqLwoJICAgIC8vIHB1YmxpYyBkZXRlY3QoKTogRGV0ZWN0b3JSZXN1bHQgLyp0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24sIEZvcm1hdEV4Y2VwdGlvbiovIHsKCSAgICAvLyAgIHJldHVybiBkZXRlY3QobnVsbCkKCSAgICAvLyB9CgkgICAgLyoqCgkgICAgICogPHA+RGV0ZWN0cyBhIFFSIENvZGUgaW4gYW4gaW1hZ2UuPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIGhpbnRzIG9wdGlvbmFsIGhpbnRzIHRvIGRldGVjdG9yCgkgICAgICogQHJldHVybiB7QGxpbmsgRGV0ZWN0b3JSZXN1bHR9IGVuY2Fwc3VsYXRpbmcgcmVzdWx0cyBvZiBkZXRlY3RpbmcgYSBRUiBDb2RlCgkgICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpZiBRUiBDb2RlIGNhbm5vdCBiZSBmb3VuZAoJICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uIGlmIGEgUVIgQ29kZSBjYW5ub3QgYmUgZGVjb2RlZAoJICAgICAqLwoJICAgIERldGVjdG9yLnByb3RvdHlwZS5kZXRlY3QgPSBmdW5jdGlvbiAoaGludHMpIHsKCSAgICAgICAgdGhpcy5yZXN1bHRQb2ludENhbGxiYWNrID0gKGhpbnRzID09PSBudWxsIHx8IGhpbnRzID09PSB1bmRlZmluZWQpID8gbnVsbCA6CgkgICAgICAgICAgICAvKihSZXN1bHRQb2ludENhbGxiYWNrKSAqLyBoaW50cy5nZXQoRGVjb2RlSGludFR5cGVfMSQxLmRlZmF1bHQuTkVFRF9SRVNVTFRfUE9JTlRfQ0FMTEJBQ0spOwoJICAgICAgICB2YXIgZmluZGVyID0gbmV3IEZpbmRlclBhdHRlcm5GaW5kZXJfMS5kZWZhdWx0KHRoaXMuaW1hZ2UsIHRoaXMucmVzdWx0UG9pbnRDYWxsYmFjayk7CgkgICAgICAgIHZhciBpbmZvID0gZmluZGVyLmZpbmQoaGludHMpOwoJICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzRmluZGVyUGF0dGVybkluZm8oaW5mbyk7CgkgICAgfTsKCSAgICBEZXRlY3Rvci5wcm90b3R5cGUucHJvY2Vzc0ZpbmRlclBhdHRlcm5JbmZvID0gZnVuY3Rpb24gKGluZm8pIHsKCSAgICAgICAgdmFyIHRvcExlZnQgPSBpbmZvLmdldFRvcExlZnQoKTsKCSAgICAgICAgdmFyIHRvcFJpZ2h0ID0gaW5mby5nZXRUb3BSaWdodCgpOwoJICAgICAgICB2YXIgYm90dG9tTGVmdCA9IGluZm8uZ2V0Qm90dG9tTGVmdCgpOwoJICAgICAgICB2YXIgbW9kdWxlU2l6ZSA9IHRoaXMuY2FsY3VsYXRlTW9kdWxlU2l6ZSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCk7CgkgICAgICAgIGlmIChtb2R1bGVTaXplIDwgMS4wKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMSQxLmRlZmF1bHQoJ05vIHBhdHRlcm4gZm91bmQgaW4gcHJvY2Nlc3MgZmluZGVyLicpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBkaW1lbnNpb24gPSBEZXRlY3Rvci5jb21wdXRlRGltZW5zaW9uKHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBtb2R1bGVTaXplKTsKCSAgICAgICAgdmFyIHByb3Zpc2lvbmFsVmVyc2lvbiA9IFZlcnNpb25fMS5kZWZhdWx0LmdldFByb3Zpc2lvbmFsVmVyc2lvbkZvckRpbWVuc2lvbihkaW1lbnNpb24pOwoJICAgICAgICB2YXIgbW9kdWxlc0JldHdlZW5GUENlbnRlcnMgPSBwcm92aXNpb25hbFZlcnNpb24uZ2V0RGltZW5zaW9uRm9yVmVyc2lvbigpIC0gNzsKCSAgICAgICAgdmFyIGFsaWdubWVudFBhdHRlcm4gPSBudWxsOwoJICAgICAgICAvLyBBbnl0aGluZyBhYm92ZSB2ZXJzaW9uIDEgaGFzIGFuIGFsaWdubWVudCBwYXR0ZXJuCgkgICAgICAgIGlmIChwcm92aXNpb25hbFZlcnNpb24uZ2V0QWxpZ25tZW50UGF0dGVybkNlbnRlcnMoKS5sZW5ndGggPiAwKSB7CgkgICAgICAgICAgICAvLyBHdWVzcyB3aGVyZSBhICJib3R0b20gcmlnaHQiIGZpbmRlciBwYXR0ZXJuIHdvdWxkIGhhdmUgYmVlbgoJICAgICAgICAgICAgdmFyIGJvdHRvbVJpZ2h0WCA9IHRvcFJpZ2h0LmdldFgoKSAtIHRvcExlZnQuZ2V0WCgpICsgYm90dG9tTGVmdC5nZXRYKCk7CgkgICAgICAgICAgICB2YXIgYm90dG9tUmlnaHRZID0gdG9wUmlnaHQuZ2V0WSgpIC0gdG9wTGVmdC5nZXRZKCkgKyBib3R0b21MZWZ0LmdldFkoKTsKCSAgICAgICAgICAgIC8vIEVzdGltYXRlIHRoYXQgYWxpZ25tZW50IHBhdHRlcm4gaXMgY2xvc2VyIGJ5IDMgbW9kdWxlcwoJICAgICAgICAgICAgLy8gZnJvbSAiYm90dG9tIHJpZ2h0IiB0byBrbm93biB0b3AgbGVmdCBsb2NhdGlvbgoJICAgICAgICAgICAgdmFyIGNvcnJlY3Rpb25Ub1RvcExlZnQgPSAxLjAgLSAzLjAgLyBtb2R1bGVzQmV0d2VlbkZQQ2VudGVyczsKCSAgICAgICAgICAgIHZhciBlc3RBbGlnbm1lbnRYID0gLyooaW50KSAqLyBNYXRoLmZsb29yKHRvcExlZnQuZ2V0WCgpICsgY29ycmVjdGlvblRvVG9wTGVmdCAqIChib3R0b21SaWdodFggLSB0b3BMZWZ0LmdldFgoKSkpOwoJICAgICAgICAgICAgdmFyIGVzdEFsaWdubWVudFkgPSAvKihpbnQpICovIE1hdGguZmxvb3IodG9wTGVmdC5nZXRZKCkgKyBjb3JyZWN0aW9uVG9Ub3BMZWZ0ICogKGJvdHRvbVJpZ2h0WSAtIHRvcExlZnQuZ2V0WSgpKSk7CgkgICAgICAgICAgICAvLyBLaW5kIG9mIGFyYml0cmFyeSAtLSBleHBhbmQgc2VhcmNoIHJhZGl1cyBiZWZvcmUgZ2l2aW5nIHVwCgkgICAgICAgICAgICBmb3IgKHZhciBpID0gNDsgaSA8PSAxNjsgaSA8PD0gMSkgewoJICAgICAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgICAgIGFsaWdubWVudFBhdHRlcm4gPSB0aGlzLmZpbmRBbGlnbm1lbnRJblJlZ2lvbihtb2R1bGVTaXplLCBlc3RBbGlnbm1lbnRYLCBlc3RBbGlnbm1lbnRZLCBpKTsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGNhdGNoIChyZSAvKk5vdEZvdW5kRXhjZXB0aW9uKi8pIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKCEocmUgaW5zdGFuY2VvZiBOb3RGb3VuZEV4Y2VwdGlvbl8xJDEuZGVmYXVsdCkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIC8vIHRyeSBuZXh0IHJvdW5kCgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgLy8gSWYgd2UgZGlkbid0IGZpbmQgYWxpZ25tZW50IHBhdHRlcm4uLi4gd2VsbCB0cnkgYW55d2F5IHdpdGhvdXQgaXQKCSAgICAgICAgfQoJICAgICAgICB2YXIgdHJhbnNmb3JtID0gRGV0ZWN0b3IuY3JlYXRlVHJhbnNmb3JtKHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBhbGlnbm1lbnRQYXR0ZXJuLCBkaW1lbnNpb24pOwoJICAgICAgICB2YXIgYml0cyA9IERldGVjdG9yLnNhbXBsZUdyaWQodGhpcy5pbWFnZSwgdHJhbnNmb3JtLCBkaW1lbnNpb24pOwoJICAgICAgICB2YXIgcG9pbnRzOwoJICAgICAgICBpZiAoYWxpZ25tZW50UGF0dGVybiA9PT0gbnVsbCkgewoJICAgICAgICAgICAgcG9pbnRzID0gW2JvdHRvbUxlZnQsIHRvcExlZnQsIHRvcFJpZ2h0XTsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIHBvaW50cyA9IFtib3R0b21MZWZ0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYWxpZ25tZW50UGF0dGVybl07CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG5ldyBEZXRlY3RvclJlc3VsdF8xLmRlZmF1bHQoYml0cywgcG9pbnRzKTsKCSAgICB9OwoJICAgIERldGVjdG9yLmNyZWF0ZVRyYW5zZm9ybSA9IGZ1bmN0aW9uICh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYWxpZ25tZW50UGF0dGVybiwgZGltZW5zaW9uIC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIGRpbU1pbnVzVGhyZWUgPSBkaW1lbnNpb24gLSAzLjU7CgkgICAgICAgIHZhciBib3R0b21SaWdodFg7IC8qZmxvYXQqLwoJICAgICAgICB2YXIgYm90dG9tUmlnaHRZOyAvKmZsb2F0Ki8KCSAgICAgICAgdmFyIHNvdXJjZUJvdHRvbVJpZ2h0WDsgLypmbG9hdCovCgkgICAgICAgIHZhciBzb3VyY2VCb3R0b21SaWdodFk7IC8qZmxvYXQqLwoJICAgICAgICBpZiAoYWxpZ25tZW50UGF0dGVybiAhPT0gbnVsbCkgewoJICAgICAgICAgICAgYm90dG9tUmlnaHRYID0gYWxpZ25tZW50UGF0dGVybi5nZXRYKCk7CgkgICAgICAgICAgICBib3R0b21SaWdodFkgPSBhbGlnbm1lbnRQYXR0ZXJuLmdldFkoKTsKCSAgICAgICAgICAgIHNvdXJjZUJvdHRvbVJpZ2h0WCA9IGRpbU1pbnVzVGhyZWUgLSAzLjA7CgkgICAgICAgICAgICBzb3VyY2VCb3R0b21SaWdodFkgPSBzb3VyY2VCb3R0b21SaWdodFg7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAvLyBEb24ndCBoYXZlIGFuIGFsaWdubWVudCBwYXR0ZXJuLCBqdXN0IG1ha2UgdXAgdGhlIGJvdHRvbS1yaWdodCBwb2ludAoJICAgICAgICAgICAgYm90dG9tUmlnaHRYID0gKHRvcFJpZ2h0LmdldFgoKSAtIHRvcExlZnQuZ2V0WCgpKSArIGJvdHRvbUxlZnQuZ2V0WCgpOwoJICAgICAgICAgICAgYm90dG9tUmlnaHRZID0gKHRvcFJpZ2h0LmdldFkoKSAtIHRvcExlZnQuZ2V0WSgpKSArIGJvdHRvbUxlZnQuZ2V0WSgpOwoJICAgICAgICAgICAgc291cmNlQm90dG9tUmlnaHRYID0gZGltTWludXNUaHJlZTsKCSAgICAgICAgICAgIHNvdXJjZUJvdHRvbVJpZ2h0WSA9IGRpbU1pbnVzVGhyZWU7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIFBlcnNwZWN0aXZlVHJhbnNmb3JtXzEuZGVmYXVsdC5xdWFkcmlsYXRlcmFsVG9RdWFkcmlsYXRlcmFsKDMuNSwgMy41LCBkaW1NaW51c1RocmVlLCAzLjUsIHNvdXJjZUJvdHRvbVJpZ2h0WCwgc291cmNlQm90dG9tUmlnaHRZLCAzLjUsIGRpbU1pbnVzVGhyZWUsIHRvcExlZnQuZ2V0WCgpLCB0b3BMZWZ0LmdldFkoKSwgdG9wUmlnaHQuZ2V0WCgpLCB0b3BSaWdodC5nZXRZKCksIGJvdHRvbVJpZ2h0WCwgYm90dG9tUmlnaHRZLCBib3R0b21MZWZ0LmdldFgoKSwgYm90dG9tTGVmdC5nZXRZKCkpOwoJICAgIH07CgkgICAgRGV0ZWN0b3Iuc2FtcGxlR3JpZCA9IGZ1bmN0aW9uIChpbWFnZSwgdHJhbnNmb3JtLCBkaW1lbnNpb24gLyppbnQqLykgewoJICAgICAgICB2YXIgc2FtcGxlciA9IEdyaWRTYW1wbGVySW5zdGFuY2VfMS5kZWZhdWx0LmdldEluc3RhbmNlKCk7CgkgICAgICAgIHJldHVybiBzYW1wbGVyLnNhbXBsZUdyaWRXaXRoVHJhbnNmb3JtKGltYWdlLCBkaW1lbnNpb24sIGRpbWVuc2lvbiwgdHJhbnNmb3JtKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPkNvbXB1dGVzIHRoZSBkaW1lbnNpb24gKG51bWJlciBvZiBtb2R1bGVzIG9uIGEgc2l6ZSkgb2YgdGhlIFFSIENvZGUgYmFzZWQgb24gdGhlIHBvc2l0aW9uCgkgICAgICogb2YgdGhlIGZpbmRlciBwYXR0ZXJucyBhbmQgZXN0aW1hdGVkIG1vZHVsZSBzaXplLjwvcD4KCSAgICAgKi8KCSAgICBEZXRlY3Rvci5jb21wdXRlRGltZW5zaW9uID0gZnVuY3Rpb24gKHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBtb2R1bGVTaXplIC8qZmxvYXQqLykgewoJICAgICAgICB2YXIgdGx0ckNlbnRlcnNEaW1lbnNpb24gPSBNYXRoVXRpbHNfMS5kZWZhdWx0LnJvdW5kKFJlc3VsdFBvaW50XzEuZGVmYXVsdC5kaXN0YW5jZSh0b3BMZWZ0LCB0b3BSaWdodCkgLyBtb2R1bGVTaXplKTsKCSAgICAgICAgdmFyIHRsYmxDZW50ZXJzRGltZW5zaW9uID0gTWF0aFV0aWxzXzEuZGVmYXVsdC5yb3VuZChSZXN1bHRQb2ludF8xLmRlZmF1bHQuZGlzdGFuY2UodG9wTGVmdCwgYm90dG9tTGVmdCkgLyBtb2R1bGVTaXplKTsKCSAgICAgICAgdmFyIGRpbWVuc2lvbiA9IE1hdGguZmxvb3IoKHRsdHJDZW50ZXJzRGltZW5zaW9uICsgdGxibENlbnRlcnNEaW1lbnNpb24pIC8gMikgKyA3OwoJICAgICAgICBzd2l0Y2ggKGRpbWVuc2lvbiAmIDB4MDMpIHsgLy8gbW9kIDQKCSAgICAgICAgICAgIGNhc2UgMDoKCSAgICAgICAgICAgICAgICBkaW1lbnNpb24rKzsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIC8vIDE/IGRvIG5vdGhpbmcKCSAgICAgICAgICAgIGNhc2UgMjoKCSAgICAgICAgICAgICAgICBkaW1lbnNpb24tLTsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIGNhc2UgMzoKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMSQxLmRlZmF1bHQoJ0RpbWVuc2lvbnMgY291bGQgYmUgbm90IGZvdW5kLicpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBkaW1lbnNpb247CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiA8cD5Db21wdXRlcyBhbiBhdmVyYWdlIGVzdGltYXRlZCBtb2R1bGUgc2l6ZSBiYXNlZCBvbiBlc3RpbWF0ZWQgZGVyaXZlZCBmcm9tIHRoZSBwb3NpdGlvbnMKCSAgICAgKiBvZiB0aGUgdGhyZWUgZmluZGVyIHBhdHRlcm5zLjwvcD4KCSAgICAgKgoJICAgICAqIEBwYXJhbSB0b3BMZWZ0IGRldGVjdGVkIHRvcC1sZWZ0IGZpbmRlciBwYXR0ZXJuIGNlbnRlcgoJICAgICAqIEBwYXJhbSB0b3BSaWdodCBkZXRlY3RlZCB0b3AtcmlnaHQgZmluZGVyIHBhdHRlcm4gY2VudGVyCgkgICAgICogQHBhcmFtIGJvdHRvbUxlZnQgZGV0ZWN0ZWQgYm90dG9tLWxlZnQgZmluZGVyIHBhdHRlcm4gY2VudGVyCgkgICAgICogQHJldHVybiBlc3RpbWF0ZWQgbW9kdWxlIHNpemUKCSAgICAgKi8KCSAgICBEZXRlY3Rvci5wcm90b3R5cGUuY2FsY3VsYXRlTW9kdWxlU2l6ZSA9IGZ1bmN0aW9uICh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCkgewoJICAgICAgICAvLyBUYWtlIHRoZSBhdmVyYWdlCgkgICAgICAgIHJldHVybiAodGhpcy5jYWxjdWxhdGVNb2R1bGVTaXplT25lV2F5KHRvcExlZnQsIHRvcFJpZ2h0KSArCgkgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZU1vZHVsZVNpemVPbmVXYXkodG9wTGVmdCwgYm90dG9tTGVmdCkpIC8gMi4wOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogPHA+RXN0aW1hdGVzIG1vZHVsZSBzaXplIGJhc2VkIG9uIHR3byBmaW5kZXIgcGF0dGVybnMgLS0gaXQgdXNlcwoJICAgICAqIHtAbGluayAjc2l6ZU9mQmxhY2tXaGl0ZUJsYWNrUnVuQm90aFdheXMoaW50LCBpbnQsIGludCwgaW50KX0gdG8gZmlndXJlIHRoZQoJICAgICAqIHdpZHRoIG9mIGVhY2gsIG1lYXN1cmluZyBhbG9uZyB0aGUgYXhpcyBiZXR3ZWVuIHRoZWlyIGNlbnRlcnMuPC9wPgoJICAgICAqLwoJICAgIERldGVjdG9yLnByb3RvdHlwZS5jYWxjdWxhdGVNb2R1bGVTaXplT25lV2F5ID0gZnVuY3Rpb24gKHBhdHRlcm4sIG90aGVyUGF0dGVybikgewoJICAgICAgICB2YXIgbW9kdWxlU2l6ZUVzdDEgPSB0aGlzLnNpemVPZkJsYWNrV2hpdGVCbGFja1J1bkJvdGhXYXlzKC8qKGludCkgKi8gTWF0aC5mbG9vcihwYXR0ZXJuLmdldFgoKSksIAoJICAgICAgICAvKihpbnQpICovIE1hdGguZmxvb3IocGF0dGVybi5nZXRZKCkpLCAKCSAgICAgICAgLyooaW50KSAqLyBNYXRoLmZsb29yKG90aGVyUGF0dGVybi5nZXRYKCkpLCAKCSAgICAgICAgLyooaW50KSAqLyBNYXRoLmZsb29yKG90aGVyUGF0dGVybi5nZXRZKCkpKTsKCSAgICAgICAgdmFyIG1vZHVsZVNpemVFc3QyID0gdGhpcy5zaXplT2ZCbGFja1doaXRlQmxhY2tSdW5Cb3RoV2F5cygvKihpbnQpICovIE1hdGguZmxvb3Iob3RoZXJQYXR0ZXJuLmdldFgoKSksIAoJICAgICAgICAvKihpbnQpICovIE1hdGguZmxvb3Iob3RoZXJQYXR0ZXJuLmdldFkoKSksIAoJICAgICAgICAvKihpbnQpICovIE1hdGguZmxvb3IocGF0dGVybi5nZXRYKCkpLCAKCSAgICAgICAgLyooaW50KSAqLyBNYXRoLmZsb29yKHBhdHRlcm4uZ2V0WSgpKSk7CgkgICAgICAgIGlmIChpc05hTihtb2R1bGVTaXplRXN0MSkpIHsKCSAgICAgICAgICAgIHJldHVybiBtb2R1bGVTaXplRXN0MiAvIDcuMDsKCSAgICAgICAgfQoJICAgICAgICBpZiAoaXNOYU4obW9kdWxlU2l6ZUVzdDIpKSB7CgkgICAgICAgICAgICByZXR1cm4gbW9kdWxlU2l6ZUVzdDEgLyA3LjA7CgkgICAgICAgIH0KCSAgICAgICAgLy8gQXZlcmFnZSB0aGVtLCBhbmQgZGl2aWRlIGJ5IDcgc2luY2Ugd2UndmUgY291bnRlZCB0aGUgd2lkdGggb2YgMyBibGFjayBtb2R1bGVzLAoJICAgICAgICAvLyBhbmQgMSB3aGl0ZSBhbmQgMSBibGFjayBtb2R1bGUgb24gZWl0aGVyIHNpZGUuIEVyZ28sIGRpdmlkZSBzdW0gYnkgMTQuCgkgICAgICAgIHJldHVybiAobW9kdWxlU2l6ZUVzdDEgKyBtb2R1bGVTaXplRXN0MikgLyAxNC4wOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogU2VlIHtAbGluayAjc2l6ZU9mQmxhY2tXaGl0ZUJsYWNrUnVuKGludCwgaW50LCBpbnQsIGludCl9OyBjb21wdXRlcyB0aGUgdG90YWwgd2lkdGggb2YKCSAgICAgKiBhIGZpbmRlciBwYXR0ZXJuIGJ5IGxvb2tpbmcgZm9yIGEgYmxhY2std2hpdGUtYmxhY2sgcnVuIGZyb20gdGhlIGNlbnRlciBpbiB0aGUgZGlyZWN0aW9uCgkgICAgICogb2YgYW5vdGhlciBwb2ludCAoYW5vdGhlciBmaW5kZXIgcGF0dGVybiBjZW50ZXIpLCBhbmQgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiB0b28uCgkgICAgICovCgkgICAgRGV0ZWN0b3IucHJvdG90eXBlLnNpemVPZkJsYWNrV2hpdGVCbGFja1J1bkJvdGhXYXlzID0gZnVuY3Rpb24gKGZyb21YIC8qaW50Ki8sIGZyb21ZIC8qaW50Ki8sIHRvWCAvKmludCovLCB0b1kgLyppbnQqLykgewoJICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5zaXplT2ZCbGFja1doaXRlQmxhY2tSdW4oZnJvbVgsIGZyb21ZLCB0b1gsIHRvWSk7CgkgICAgICAgIC8vIE5vdyBjb3VudCBvdGhlciB3YXkgLS0gZG9uJ3QgcnVuIG9mZiBpbWFnZSB0aG91Z2ggb2YgY291cnNlCgkgICAgICAgIHZhciBzY2FsZSA9IDEuMDsKCSAgICAgICAgdmFyIG90aGVyVG9YID0gZnJvbVggLSAodG9YIC0gZnJvbVgpOwoJICAgICAgICBpZiAob3RoZXJUb1ggPCAwKSB7CgkgICAgICAgICAgICBzY2FsZSA9IGZyb21YIC8gLyooZmxvYXQpICovIChmcm9tWCAtIG90aGVyVG9YKTsKCSAgICAgICAgICAgIG90aGVyVG9YID0gMDsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIGlmIChvdGhlclRvWCA+PSB0aGlzLmltYWdlLmdldFdpZHRoKCkpIHsKCSAgICAgICAgICAgIHNjYWxlID0gKHRoaXMuaW1hZ2UuZ2V0V2lkdGgoKSAtIDEgLSBmcm9tWCkgLyAvKihmbG9hdCkgKi8gKG90aGVyVG9YIC0gZnJvbVgpOwoJICAgICAgICAgICAgb3RoZXJUb1ggPSB0aGlzLmltYWdlLmdldFdpZHRoKCkgLSAxOwoJICAgICAgICB9CgkgICAgICAgIHZhciBvdGhlclRvWSA9IC8qKGludCkgKi8gTWF0aC5mbG9vcihmcm9tWSAtICh0b1kgLSBmcm9tWSkgKiBzY2FsZSk7CgkgICAgICAgIHNjYWxlID0gMS4wOwoJICAgICAgICBpZiAob3RoZXJUb1kgPCAwKSB7CgkgICAgICAgICAgICBzY2FsZSA9IGZyb21ZIC8gLyooZmxvYXQpICovIChmcm9tWSAtIG90aGVyVG9ZKTsKCSAgICAgICAgICAgIG90aGVyVG9ZID0gMDsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIGlmIChvdGhlclRvWSA+PSB0aGlzLmltYWdlLmdldEhlaWdodCgpKSB7CgkgICAgICAgICAgICBzY2FsZSA9ICh0aGlzLmltYWdlLmdldEhlaWdodCgpIC0gMSAtIGZyb21ZKSAvIC8qKGZsb2F0KSAqLyAob3RoZXJUb1kgLSBmcm9tWSk7CgkgICAgICAgICAgICBvdGhlclRvWSA9IHRoaXMuaW1hZ2UuZ2V0SGVpZ2h0KCkgLSAxOwoJICAgICAgICB9CgkgICAgICAgIG90aGVyVG9YID0gLyooaW50KSAqLyBNYXRoLmZsb29yKGZyb21YICsgKG90aGVyVG9YIC0gZnJvbVgpICogc2NhbGUpOwoJICAgICAgICByZXN1bHQgKz0gdGhpcy5zaXplT2ZCbGFja1doaXRlQmxhY2tSdW4oZnJvbVgsIGZyb21ZLCBvdGhlclRvWCwgb3RoZXJUb1kpOwoJICAgICAgICAvLyBNaWRkbGUgcGl4ZWwgaXMgZG91YmxlLWNvdW50ZWQgdGhpcyB3YXk7IHN1YnRyYWN0IDEKCSAgICAgICAgcmV0dXJuIHJlc3VsdCAtIDEuMDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPlRoaXMgbWV0aG9kIHRyYWNlcyBhIGxpbmUgZnJvbSBhIHBvaW50IGluIHRoZSBpbWFnZSwgaW4gdGhlIGRpcmVjdGlvbiB0b3dhcmRzIGFub3RoZXIgcG9pbnQuCgkgICAgICogSXQgYmVnaW5zIGluIGEgYmxhY2sgcmVnaW9uLCBhbmQga2VlcHMgZ29pbmcgdW50aWwgaXQgZmluZHMgd2hpdGUsIHRoZW4gYmxhY2ssIHRoZW4gd2hpdGUgYWdhaW4uCgkgICAgICogSXQgcmVwb3J0cyB0aGUgZGlzdGFuY2UgZnJvbSB0aGUgc3RhcnQgdG8gdGhpcyBwb2ludC48L3A+CgkgICAgICoKCSAgICAgKiA8cD5UaGlzIGlzIHVzZWQgd2hlbiBmaWd1cmluZyBvdXQgaG93IHdpZGUgYSBmaW5kZXIgcGF0dGVybiBpcywgd2hlbiB0aGUgZmluZGVyIHBhdHRlcm4KCSAgICAgKiBtYXkgYmUgc2tld2VkIG9yIHJvdGF0ZWQuPC9wPgoJICAgICAqLwoJICAgIERldGVjdG9yLnByb3RvdHlwZS5zaXplT2ZCbGFja1doaXRlQmxhY2tSdW4gPSBmdW5jdGlvbiAoZnJvbVggLyppbnQqLywgZnJvbVkgLyppbnQqLywgdG9YIC8qaW50Ki8sIHRvWSAvKmludCovKSB7CgkgICAgICAgIC8vIE1pbGQgdmFyaWFudCBvZiBCcmVzZW5oYW0ncyBhbGdvcml0aG0KCSAgICAgICAgLy8gc2VlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnJlc2VuaGFtJ3NfbGluZV9hbGdvcml0aG0KCSAgICAgICAgdmFyIHN0ZWVwID0gTWF0aC5hYnModG9ZIC0gZnJvbVkpID4gTWF0aC5hYnModG9YIC0gZnJvbVgpOwoJICAgICAgICBpZiAoc3RlZXApIHsKCSAgICAgICAgICAgIHZhciB0ZW1wID0gZnJvbVg7CgkgICAgICAgICAgICBmcm9tWCA9IGZyb21ZOwoJICAgICAgICAgICAgZnJvbVkgPSB0ZW1wOwoJICAgICAgICAgICAgdGVtcCA9IHRvWDsKCSAgICAgICAgICAgIHRvWCA9IHRvWTsKCSAgICAgICAgICAgIHRvWSA9IHRlbXA7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGR4ID0gTWF0aC5hYnModG9YIC0gZnJvbVgpOwoJICAgICAgICB2YXIgZHkgPSBNYXRoLmFicyh0b1kgLSBmcm9tWSk7CgkgICAgICAgIHZhciBlcnJvciA9IC1keCAvIDI7CgkgICAgICAgIHZhciB4c3RlcCA9IGZyb21YIDwgdG9YID8gMSA6IC0xOwoJICAgICAgICB2YXIgeXN0ZXAgPSBmcm9tWSA8IHRvWSA/IDEgOiAtMTsKCSAgICAgICAgLy8gSW4gYmxhY2sgcGl4ZWxzLCBsb29raW5nIGZvciB3aGl0ZSwgZmlyc3Qgb3Igc2Vjb25kIHRpbWUuCgkgICAgICAgIHZhciBzdGF0ZSA9IDA7CgkgICAgICAgIC8vIExvb3AgdXAgdW50aWwgeCA9PSB0b1gsIGJ1dCBub3QgYmV5b25kCgkgICAgICAgIHZhciB4TGltaXQgPSB0b1ggKyB4c3RlcDsKCSAgICAgICAgZm9yICh2YXIgeCA9IGZyb21YLCB5ID0gZnJvbVk7IHggIT09IHhMaW1pdDsgeCArPSB4c3RlcCkgewoJICAgICAgICAgICAgdmFyIHJlYWxYID0gc3RlZXAgPyB5IDogeDsKCSAgICAgICAgICAgIHZhciByZWFsWSA9IHN0ZWVwID8geCA6IHk7CgkgICAgICAgICAgICAvLyBEb2VzIGN1cnJlbnQgcGl4ZWwgbWVhbiB3ZSBoYXZlIG1vdmVkIHdoaXRlIHRvIGJsYWNrIG9yIHZpY2UgdmVyc2E/CgkgICAgICAgICAgICAvLyBTY2FubmluZyBibGFjayBpbiBzdGF0ZSAwLDIgYW5kIHdoaXRlIGluIHN0YXRlIDEsIHNvIGlmIHdlIGZpbmQgdGhlIHdyb25nCgkgICAgICAgICAgICAvLyBjb2xvciwgYWR2YW5jZSB0byBuZXh0IHN0YXRlIG9yIGVuZCBpZiB3ZSBhcmUgaW4gc3RhdGUgMiBhbHJlYWR5CgkgICAgICAgICAgICBpZiAoKHN0YXRlID09PSAxKSA9PT0gdGhpcy5pbWFnZS5nZXQocmVhbFgsIHJlYWxZKSkgewoJICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PT0gMikgewoJICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aFV0aWxzXzEuZGVmYXVsdC5kaXN0YW5jZSh4LCB5LCBmcm9tWCwgZnJvbVkpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBzdGF0ZSsrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZXJyb3IgKz0gZHk7CgkgICAgICAgICAgICBpZiAoZXJyb3IgPiAwKSB7CgkgICAgICAgICAgICAgICAgaWYgKHkgPT09IHRvWSkgewoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgeSArPSB5c3RlcDsKCSAgICAgICAgICAgICAgICBlcnJvciAtPSBkeDsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICAvLyBGb3VuZCBibGFjay13aGl0ZS1ibGFjazsgZ2l2ZSB0aGUgYmVuZWZpdCBvZiB0aGUgZG91YnQgdGhhdCB0aGUgbmV4dCBwaXhlbCBvdXRzaWRlIHRoZSBpbWFnZQoJICAgICAgICAvLyBpcyAid2hpdGUiIHNvIHRoaXMgbGFzdCBwb2ludCBhdCAodG9YK3hTdGVwLHRvWSkgaXMgdGhlIHJpZ2h0IGVuZGluZy4gVGhpcyBpcyByZWFsbHkgYQoJICAgICAgICAvLyBzbWFsbCBhcHByb3hpbWF0aW9uOyAodG9YK3hTdGVwLHRvWSt5U3RlcCkgbWlnaHQgYmUgcmVhbGx5IGNvcnJlY3QuIElnbm9yZSB0aGlzLgoJICAgICAgICBpZiAoc3RhdGUgPT09IDIpIHsKCSAgICAgICAgICAgIHJldHVybiBNYXRoVXRpbHNfMS5kZWZhdWx0LmRpc3RhbmNlKHRvWCArIHhzdGVwLCB0b1ksIGZyb21YLCBmcm9tWSk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gZWxzZSB3ZSBkaWRuJ3QgZmluZCBldmVuIGJsYWNrLXdoaXRlLWJsYWNrOyBubyBlc3RpbWF0ZSBpcyByZWFsbHkgcG9zc2libGUKCSAgICAgICAgcmV0dXJuIE5hTjsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPkF0dGVtcHRzIHRvIGxvY2F0ZSBhbiBhbGlnbm1lbnQgcGF0dGVybiBpbiBhIGxpbWl0ZWQgcmVnaW9uIG9mIHRoZSBpbWFnZSwgd2hpY2ggaXMKCSAgICAgKiBndWVzc2VkIHRvIGNvbnRhaW4gaXQuIFRoaXMgbWV0aG9kIHVzZXMge0BsaW5rIEFsaWdubWVudFBhdHRlcm59LjwvcD4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBvdmVyYWxsRXN0TW9kdWxlU2l6ZSBlc3RpbWF0ZWQgbW9kdWxlIHNpemUgc28gZmFyCgkgICAgICogQHBhcmFtIGVzdEFsaWdubWVudFggeCBjb29yZGluYXRlIG9mIGNlbnRlciBvZiBhcmVhIHByb2JhYmx5IGNvbnRhaW5pbmcgYWxpZ25tZW50IHBhdHRlcm4KCSAgICAgKiBAcGFyYW0gZXN0QWxpZ25tZW50WSB5IGNvb3JkaW5hdGUgb2YgYWJvdmUKCSAgICAgKiBAcGFyYW0gYWxsb3dhbmNlRmFjdG9yIG51bWJlciBvZiBwaXhlbHMgaW4gYWxsIGRpcmVjdGlvbnMgdG8gc2VhcmNoIGZyb20gdGhlIGNlbnRlcgoJICAgICAqIEByZXR1cm4ge0BsaW5rIEFsaWdubWVudFBhdHRlcm59IGlmIGZvdW5kLCBvciBudWxsIG90aGVyd2lzZQoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgYW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnMgZHVyaW5nIGRldGVjdGlvbgoJICAgICAqLwoJICAgIERldGVjdG9yLnByb3RvdHlwZS5maW5kQWxpZ25tZW50SW5SZWdpb24gPSBmdW5jdGlvbiAob3ZlcmFsbEVzdE1vZHVsZVNpemUgLypmbG9hdCovLCBlc3RBbGlnbm1lbnRYIC8qaW50Ki8sIGVzdEFsaWdubWVudFkgLyppbnQqLywgYWxsb3dhbmNlRmFjdG9yIC8qZmxvYXQqLykgewoJICAgICAgICAvLyBMb29rIGZvciBhbiBhbGlnbm1lbnQgcGF0dGVybiAoMyBtb2R1bGVzIGluIHNpemUpIGFyb3VuZCB3aGVyZSBpdAoJICAgICAgICAvLyBzaG91bGQgYmUKCSAgICAgICAgdmFyIGFsbG93YW5jZSA9IC8qKGludCkgKi8gTWF0aC5mbG9vcihhbGxvd2FuY2VGYWN0b3IgKiBvdmVyYWxsRXN0TW9kdWxlU2l6ZSk7CgkgICAgICAgIHZhciBhbGlnbm1lbnRBcmVhTGVmdFggPSBNYXRoLm1heCgwLCBlc3RBbGlnbm1lbnRYIC0gYWxsb3dhbmNlKTsKCSAgICAgICAgdmFyIGFsaWdubWVudEFyZWFSaWdodFggPSBNYXRoLm1pbih0aGlzLmltYWdlLmdldFdpZHRoKCkgLSAxLCBlc3RBbGlnbm1lbnRYICsgYWxsb3dhbmNlKTsKCSAgICAgICAgaWYgKGFsaWdubWVudEFyZWFSaWdodFggLSBhbGlnbm1lbnRBcmVhTGVmdFggPCBvdmVyYWxsRXN0TW9kdWxlU2l6ZSAqIDMpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xJDEuZGVmYXVsdCgnQWxpZ25tZW50IHRvcCBleGNlZWRzIGVzdGltYXRlZCBtb2R1bGUgc2l6ZS4nKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgYWxpZ25tZW50QXJlYVRvcFkgPSBNYXRoLm1heCgwLCBlc3RBbGlnbm1lbnRZIC0gYWxsb3dhbmNlKTsKCSAgICAgICAgdmFyIGFsaWdubWVudEFyZWFCb3R0b21ZID0gTWF0aC5taW4odGhpcy5pbWFnZS5nZXRIZWlnaHQoKSAtIDEsIGVzdEFsaWdubWVudFkgKyBhbGxvd2FuY2UpOwoJICAgICAgICBpZiAoYWxpZ25tZW50QXJlYUJvdHRvbVkgLSBhbGlnbm1lbnRBcmVhVG9wWSA8IG92ZXJhbGxFc3RNb2R1bGVTaXplICogMykgewoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEkMS5kZWZhdWx0KCdBbGlnbm1lbnQgYm90dG9tIGV4Y2VlZHMgZXN0aW1hdGVkIG1vZHVsZSBzaXplLicpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBhbGlnbm1lbnRGaW5kZXIgPSBuZXcgQWxpZ25tZW50UGF0dGVybkZpbmRlcl8xLmRlZmF1bHQodGhpcy5pbWFnZSwgYWxpZ25tZW50QXJlYUxlZnRYLCBhbGlnbm1lbnRBcmVhVG9wWSwgYWxpZ25tZW50QXJlYVJpZ2h0WCAtIGFsaWdubWVudEFyZWFMZWZ0WCwgYWxpZ25tZW50QXJlYUJvdHRvbVkgLSBhbGlnbm1lbnRBcmVhVG9wWSwgb3ZlcmFsbEVzdE1vZHVsZVNpemUsIHRoaXMucmVzdWx0UG9pbnRDYWxsYmFjayk7CgkgICAgICAgIHJldHVybiBhbGlnbm1lbnRGaW5kZXIuZmluZCgpOwoJICAgIH07CgkgICAgcmV0dXJuIERldGVjdG9yOwoJfSgpKTsKCURldGVjdG9yJDEuZGVmYXVsdCA9IERldGVjdG9yOwoKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoUVJDb2RlUmVhZGVyJDEsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcucXJjb2RlIHsqLwoJdmFyIEJhcmNvZGVGb3JtYXRfMSA9IEJhcmNvZGVGb3JtYXQkMTsKCXZhciBCaXRNYXRyaXhfMSA9IEJpdE1hdHJpeCQxOwoJdmFyIERlY29kZUhpbnRUeXBlXzEgPSBEZWNvZGVIaW50VHlwZSQxOwoJdmFyIE5vdEZvdW5kRXhjZXB0aW9uXzEgPSBOb3RGb3VuZEV4Y2VwdGlvbiQxOwoJdmFyIFJlc3VsdF8xID0gUmVzdWx0JDE7Cgl2YXIgUmVzdWx0TWV0YWRhdGFUeXBlXzEgPSBSZXN1bHRNZXRhZGF0YVR5cGUkMTsKCS8vIGltcG9ydCBEZXRlY3RvclJlc3VsdCBmcm9tICcuLi9jb21tb24vRGV0ZWN0b3JSZXN1bHQnOwoJdmFyIERlY29kZXJfMSA9IERlY29kZXIkMTsKCXZhciBRUkNvZGVEZWNvZGVyTWV0YURhdGFfMSA9IFFSQ29kZURlY29kZXJNZXRhRGF0YSQxOwoJdmFyIERldGVjdG9yXzEgPSBEZXRlY3RvciQxOwoJLyppbXBvcnQgamF2YS51dGlsLkxpc3Q7Ki8KCS8qaW1wb3J0IGphdmEudXRpbC5NYXA7Ki8KCS8qKgoJICogVGhpcyBpbXBsZW1lbnRhdGlvbiBjYW4gZGV0ZWN0IGFuZCBkZWNvZGUgUVIgQ29kZXMgaW4gYW4gaW1hZ2UuCgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIFFSQ29kZVJlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBRUkNvZGVSZWFkZXIoKSB7CgkgICAgICAgIHRoaXMuZGVjb2RlciA9IG5ldyBEZWNvZGVyXzEuZGVmYXVsdCgpOwoJICAgIH0KCSAgICBRUkNvZGVSZWFkZXIucHJvdG90eXBlLmdldERlY29kZXIgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmRlY29kZXI7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBMb2NhdGVzIGFuZCBkZWNvZGVzIGEgUVIgY29kZSBpbiBhbiBpbWFnZS4KCSAgICAgKgoJICAgICAqIEByZXR1cm4gYSByZXByZXNlbnRpbmc6IHN0cmluZyB0aGUgY29udGVudCBlbmNvZGVkIGJ5IHRoZSBRUiBjb2RlCgkgICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpZiBhIFFSIGNvZGUgY2Fubm90IGJlIGZvdW5kCgkgICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgYSBRUiBjb2RlIGNhbm5vdCBiZSBkZWNvZGVkCgkgICAgICogQHRocm93cyBDaGVja3N1bUV4Y2VwdGlvbiBpZiBlcnJvciBjb3JyZWN0aW9uIGZhaWxzCgkgICAgICovCgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIC8vIHB1YmxpYyBkZWNvZGUoaW1hZ2U6IEJpbmFyeUJpdG1hcCk6IFJlc3VsdCAvKnRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiwgQ2hlY2tzdW1FeGNlcHRpb24sIEZvcm1hdEV4Y2VwdGlvbiAqLyB7CgkgICAgLy8gICByZXR1cm4gdGhpcy5kZWNvZGUoaW1hZ2UsIG51bGwpCgkgICAgLy8gfQoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBRUkNvZGVSZWFkZXIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIChpbWFnZSwgaGludHMpIHsKCSAgICAgICAgdmFyIGRlY29kZXJSZXN1bHQ7CgkgICAgICAgIHZhciBwb2ludHM7CgkgICAgICAgIGlmIChoaW50cyAhPT0gdW5kZWZpbmVkICYmIGhpbnRzICE9PSBudWxsICYmIHVuZGVmaW5lZCAhPT0gaGludHMuZ2V0KERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5QVVJFX0JBUkNPREUpKSB7CgkgICAgICAgICAgICB2YXIgYml0cyA9IFFSQ29kZVJlYWRlci5leHRyYWN0UHVyZUJpdHMoaW1hZ2UuZ2V0QmxhY2tNYXRyaXgoKSk7CgkgICAgICAgICAgICBkZWNvZGVyUmVzdWx0ID0gdGhpcy5kZWNvZGVyLmRlY29kZUJpdE1hdHJpeChiaXRzLCBoaW50cyk7CgkgICAgICAgICAgICBwb2ludHMgPSBRUkNvZGVSZWFkZXIuTk9fUE9JTlRTOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgdmFyIGRldGVjdG9yUmVzdWx0ID0gbmV3IERldGVjdG9yXzEuZGVmYXVsdChpbWFnZS5nZXRCbGFja01hdHJpeCgpKS5kZXRlY3QoaGludHMpOwoJICAgICAgICAgICAgZGVjb2RlclJlc3VsdCA9IHRoaXMuZGVjb2Rlci5kZWNvZGVCaXRNYXRyaXgoZGV0ZWN0b3JSZXN1bHQuZ2V0Qml0cygpLCBoaW50cyk7CgkgICAgICAgICAgICBwb2ludHMgPSBkZXRlY3RvclJlc3VsdC5nZXRQb2ludHMoKTsKCSAgICAgICAgfQoJICAgICAgICAvLyBJZiB0aGUgY29kZSB3YXMgbWlycm9yZWQ6IHN3YXAgdGhlIGJvdHRvbS1sZWZ0IGFuZCB0aGUgdG9wLXJpZ2h0IHBvaW50cy4KCSAgICAgICAgaWYgKGRlY29kZXJSZXN1bHQuZ2V0T3RoZXIoKSBpbnN0YW5jZW9mIFFSQ29kZURlY29kZXJNZXRhRGF0YV8xLmRlZmF1bHQpIHsKCSAgICAgICAgICAgIGRlY29kZXJSZXN1bHQuZ2V0T3RoZXIoKS5hcHBseU1pcnJvcmVkQ29ycmVjdGlvbihwb2ludHMpOwoJICAgICAgICB9CgkgICAgICAgIHZhciByZXN1bHQgPSBuZXcgUmVzdWx0XzEuZGVmYXVsdChkZWNvZGVyUmVzdWx0LmdldFRleHQoKSwgZGVjb2RlclJlc3VsdC5nZXRSYXdCeXRlcygpLCB1bmRlZmluZWQsIHBvaW50cywgQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuUVJfQ09ERSwgdW5kZWZpbmVkKTsKCSAgICAgICAgdmFyIGJ5dGVTZWdtZW50cyA9IGRlY29kZXJSZXN1bHQuZ2V0Qnl0ZVNlZ21lbnRzKCk7CgkgICAgICAgIGlmIChieXRlU2VnbWVudHMgIT09IG51bGwpIHsKCSAgICAgICAgICAgIHJlc3VsdC5wdXRNZXRhZGF0YShSZXN1bHRNZXRhZGF0YVR5cGVfMS5kZWZhdWx0LkJZVEVfU0VHTUVOVFMsIGJ5dGVTZWdtZW50cyk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGVjTGV2ZWwgPSBkZWNvZGVyUmVzdWx0LmdldEVDTGV2ZWwoKTsKCSAgICAgICAgaWYgKGVjTGV2ZWwgIT09IG51bGwpIHsKCSAgICAgICAgICAgIHJlc3VsdC5wdXRNZXRhZGF0YShSZXN1bHRNZXRhZGF0YVR5cGVfMS5kZWZhdWx0LkVSUk9SX0NPUlJFQ1RJT05fTEVWRUwsIGVjTGV2ZWwpOwoJICAgICAgICB9CgkgICAgICAgIGlmIChkZWNvZGVyUmVzdWx0Lmhhc1N0cnVjdHVyZWRBcHBlbmQoKSkgewoJICAgICAgICAgICAgcmVzdWx0LnB1dE1ldGFkYXRhKFJlc3VsdE1ldGFkYXRhVHlwZV8xLmRlZmF1bHQuU1RSVUNUVVJFRF9BUFBFTkRfU0VRVUVOQ0UsIGRlY29kZXJSZXN1bHQuZ2V0U3RydWN0dXJlZEFwcGVuZFNlcXVlbmNlTnVtYmVyKCkpOwoJICAgICAgICAgICAgcmVzdWx0LnB1dE1ldGFkYXRhKFJlc3VsdE1ldGFkYXRhVHlwZV8xLmRlZmF1bHQuU1RSVUNUVVJFRF9BUFBFTkRfUEFSSVRZLCBkZWNvZGVyUmVzdWx0LmdldFN0cnVjdHVyZWRBcHBlbmRQYXJpdHkoKSk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJlc3VsdDsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBRUkNvZGVSZWFkZXIucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICAvLyBkbyBub3RoaW5nCgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBUaGlzIG1ldGhvZCBkZXRlY3RzIGEgY29kZSBpbiBhICJwdXJlIiBpbWFnZSAtLSB0aGF0IGlzLCBwdXJlIG1vbm9jaHJvbWUgaW1hZ2UKCSAgICAgKiB3aGljaCBjb250YWlucyBvbmx5IGFuIHVucm90YXRlZCwgdW5za2V3ZWQsIGltYWdlIG9mIGEgY29kZSwgd2l0aCBzb21lIHdoaXRlIGJvcmRlcgoJICAgICAqIGFyb3VuZCBpdC4gVGhpcyBpcyBhIHNwZWNpYWxpemVkIG1ldGhvZCB0aGF0IHdvcmtzIGV4Y2VwdGlvbmFsbHkgZmFzdCBpbiB0aGlzIHNwZWNpYWwKCSAgICAgKiBjYXNlLgoJICAgICAqCgkgICAgICogQHNlZSBjb20uZ29vZ2xlLnp4aW5nLmRhdGFtYXRyaXguRGF0YU1hdHJpeFJlYWRlciNleHRyYWN0UHVyZUJpdHMoQml0TWF0cml4KQoJICAgICAqLwoJICAgIFFSQ29kZVJlYWRlci5leHRyYWN0UHVyZUJpdHMgPSBmdW5jdGlvbiAoaW1hZ2UpIHsKCSAgICAgICAgdmFyIGxlZnRUb3BCbGFjayA9IGltYWdlLmdldFRvcExlZnRPbkJpdCgpOwoJICAgICAgICB2YXIgcmlnaHRCb3R0b21CbGFjayA9IGltYWdlLmdldEJvdHRvbVJpZ2h0T25CaXQoKTsKCSAgICAgICAgaWYgKGxlZnRUb3BCbGFjayA9PT0gbnVsbCB8fCByaWdodEJvdHRvbUJsYWNrID09PSBudWxsKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIG1vZHVsZVNpemUgPSB0aGlzLm1vZHVsZVNpemUobGVmdFRvcEJsYWNrLCBpbWFnZSk7CgkgICAgICAgIHZhciB0b3AgPSBsZWZ0VG9wQmxhY2tbMV07CgkgICAgICAgIHZhciBib3R0b20gPSByaWdodEJvdHRvbUJsYWNrWzFdOwoJICAgICAgICB2YXIgbGVmdCA9IGxlZnRUb3BCbGFja1swXTsKCSAgICAgICAgdmFyIHJpZ2h0ID0gcmlnaHRCb3R0b21CbGFja1swXTsKCSAgICAgICAgLy8gU2FuaXR5IGNoZWNrIQoJICAgICAgICBpZiAobGVmdCA+PSByaWdodCB8fCB0b3AgPj0gYm90dG9tKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGJvdHRvbSAtIHRvcCAhPT0gcmlnaHQgLSBsZWZ0KSB7CgkgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UsIHdoZXJlIGJvdHRvbS1yaWdodCBtb2R1bGUgd2Fzbid0IGJsYWNrIHNvIHdlIGZvdW5kIHNvbWV0aGluZyBlbHNlIGluIHRoZSBsYXN0IHJvdwoJICAgICAgICAgICAgLy8gQXNzdW1lIGl0J3MgYSBzcXVhcmUsIHNvIHVzZSBoZWlnaHQgYXMgdGhlIHdpZHRoCgkgICAgICAgICAgICByaWdodCA9IGxlZnQgKyAoYm90dG9tIC0gdG9wKTsKCSAgICAgICAgICAgIGlmIChyaWdodCA+PSBpbWFnZS5nZXRXaWR0aCgpKSB7CgkgICAgICAgICAgICAgICAgLy8gQWJvcnQgaWYgdGhhdCB3b3VsZCBub3QgbWFrZSBzZW5zZSAtLSBvZmYgaW1hZ2UKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgdmFyIG1hdHJpeFdpZHRoID0gTWF0aC5yb3VuZCgocmlnaHQgLSBsZWZ0ICsgMSkgLyBtb2R1bGVTaXplKTsKCSAgICAgICAgdmFyIG1hdHJpeEhlaWdodCA9IE1hdGgucm91bmQoKGJvdHRvbSAtIHRvcCArIDEpIC8gbW9kdWxlU2l6ZSk7CgkgICAgICAgIGlmIChtYXRyaXhXaWR0aCA8PSAwIHx8IG1hdHJpeEhlaWdodCA8PSAwKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKG1hdHJpeEhlaWdodCAhPT0gbWF0cml4V2lkdGgpIHsKCSAgICAgICAgICAgIC8vIE9ubHkgcG9zc2libHkgZGVjb2RlIHNxdWFyZSByZWdpb25zCgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gUHVzaCBpbiB0aGUgImJvcmRlciIgYnkgaGFsZiB0aGUgbW9kdWxlIHdpZHRoIHNvIHRoYXQgd2Ugc3RhcnQKCSAgICAgICAgLy8gc2FtcGxpbmcgaW4gdGhlIG1pZGRsZSBvZiB0aGUgbW9kdWxlLiBKdXN0IGluIGNhc2UgdGhlIGltYWdlIGlzIGEKCSAgICAgICAgLy8gbGl0dGxlIG9mZiwgdGhpcyB3aWxsIGhlbHAgcmVjb3Zlci4KCSAgICAgICAgdmFyIG51ZGdlID0gLyooaW50KSAqLyBNYXRoLmZsb29yKG1vZHVsZVNpemUgLyAyLjApOwoJICAgICAgICB0b3AgKz0gbnVkZ2U7CgkgICAgICAgIGxlZnQgKz0gbnVkZ2U7CgkgICAgICAgIC8vIEJ1dCBjYXJlZnVsIHRoYXQgdGhpcyBkb2VzIG5vdCBzYW1wbGUgb2ZmIHRoZSBlZGdlCgkgICAgICAgIC8vICJyaWdodCIgaXMgdGhlIGZhcnRoZXN0LXJpZ2h0IHZhbGlkIHBpeGVsIGxvY2F0aW9uIC0tIHJpZ2h0KzEgaXMgbm90IG5lY2Vzc2FyaWx5CgkgICAgICAgIC8vIFRoaXMgaXMgcG9zaXRpdmUgYnkgaG93IG11Y2ggdGhlIGlubmVyIHggbG9vcCBiZWxvdyB3b3VsZCBiZSB0b28gbGFyZ2UKCSAgICAgICAgdmFyIG51ZGdlZFRvb0ZhclJpZ2h0ID0gbGVmdCArIC8qKGludCkgKi8gTWF0aC5mbG9vcigobWF0cml4V2lkdGggLSAxKSAqIG1vZHVsZVNpemUpIC0gcmlnaHQ7CgkgICAgICAgIGlmIChudWRnZWRUb29GYXJSaWdodCA+IDApIHsKCSAgICAgICAgICAgIGlmIChudWRnZWRUb29GYXJSaWdodCA+IG51ZGdlKSB7CgkgICAgICAgICAgICAgICAgLy8gTmVpdGhlciB3YXkgZml0czsgYWJvcnQKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBsZWZ0IC09IG51ZGdlZFRvb0ZhclJpZ2h0OwoJICAgICAgICB9CgkgICAgICAgIC8vIFNlZSBsb2dpYyBhYm92ZQoJICAgICAgICB2YXIgbnVkZ2VkVG9vRmFyRG93biA9IHRvcCArIC8qKGludCkgKi8gTWF0aC5mbG9vcigobWF0cml4SGVpZ2h0IC0gMSkgKiBtb2R1bGVTaXplKSAtIGJvdHRvbTsKCSAgICAgICAgaWYgKG51ZGdlZFRvb0ZhckRvd24gPiAwKSB7CgkgICAgICAgICAgICBpZiAobnVkZ2VkVG9vRmFyRG93biA+IG51ZGdlKSB7CgkgICAgICAgICAgICAgICAgLy8gTmVpdGhlciB3YXkgZml0czsgYWJvcnQKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB0b3AgLT0gbnVkZ2VkVG9vRmFyRG93bjsKCSAgICAgICAgfQoJICAgICAgICAvLyBOb3cganVzdCByZWFkIG9mZiB0aGUgYml0cwoJICAgICAgICB2YXIgYml0cyA9IG5ldyBCaXRNYXRyaXhfMS5kZWZhdWx0KG1hdHJpeFdpZHRoLCBtYXRyaXhIZWlnaHQpOwoJICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IG1hdHJpeEhlaWdodDsgeSsrKSB7CgkgICAgICAgICAgICB2YXIgaU9mZnNldCA9IHRvcCArIC8qKGludCkgKi8gTWF0aC5mbG9vcih5ICogbW9kdWxlU2l6ZSk7CgkgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IG1hdHJpeFdpZHRoOyB4KyspIHsKCSAgICAgICAgICAgICAgICBpZiAoaW1hZ2UuZ2V0KGxlZnQgKyAvKihpbnQpICovIE1hdGguZmxvb3IoeCAqIG1vZHVsZVNpemUpLCBpT2Zmc2V0KSkgewoJICAgICAgICAgICAgICAgICAgICBiaXRzLnNldCh4LCB5KTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGJpdHM7CgkgICAgfTsKCSAgICBRUkNvZGVSZWFkZXIubW9kdWxlU2l6ZSA9IGZ1bmN0aW9uIChsZWZ0VG9wQmxhY2ssIGltYWdlKSB7CgkgICAgICAgIHZhciBoZWlnaHQgPSBpbWFnZS5nZXRIZWlnaHQoKTsKCSAgICAgICAgdmFyIHdpZHRoID0gaW1hZ2UuZ2V0V2lkdGgoKTsKCSAgICAgICAgdmFyIHggPSBsZWZ0VG9wQmxhY2tbMF07CgkgICAgICAgIHZhciB5ID0gbGVmdFRvcEJsYWNrWzFdOwoJICAgICAgICB2YXIgaW5CbGFjayA9IHRydWU7CgkgICAgICAgIHZhciB0cmFuc2l0aW9ucyA9IDA7CgkgICAgICAgIHdoaWxlICh4IDwgd2lkdGggJiYgeSA8IGhlaWdodCkgewoJICAgICAgICAgICAgaWYgKGluQmxhY2sgIT09IGltYWdlLmdldCh4LCB5KSkgewoJICAgICAgICAgICAgICAgIGlmICgrK3RyYW5zaXRpb25zID09PSA1KSB7CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBpbkJsYWNrID0gIWluQmxhY2s7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB4Kys7CgkgICAgICAgICAgICB5Kys7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHggPT09IHdpZHRoIHx8IHkgPT09IGhlaWdodCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiAoeCAtIGxlZnRUb3BCbGFja1swXSkgLyA3LjA7CgkgICAgfTsKCSAgICBRUkNvZGVSZWFkZXIuTk9fUE9JTlRTID0gbmV3IEFycmF5KCk7CgkgICAgcmV0dXJuIFFSQ29kZVJlYWRlcjsKCX0oKSk7Cgl2YXIgX2RlZmF1bHQgPSBRUkNvZGVSZWFkZXIkMS5kZWZhdWx0ID0gUVJDb2RlUmVhZGVyOwoKCXZhciB0b0dyYXlzY2FsZUJ1ZmZlciA9IGZ1bmN0aW9uIHRvR3JheXNjYWxlQnVmZmVyKGltYWdlQnVmZmVyLCB3aWR0aCwgaGVpZ2h0KSB7CgkgIHZhciBncmF5c2NhbGVCdWZmZXIgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkod2lkdGggKiBoZWlnaHQpOwoKCSAgZm9yICh2YXIgaSA9IDAsIGogPSAwLCBsZW5ndGhfMSA9IGltYWdlQnVmZmVyLmxlbmd0aDsgaSA8IGxlbmd0aF8xOyBpICs9IDQsIGorKykgewoJICAgIHZhciBncmF5ID0gdm9pZCAwOwoJICAgIHZhciBhbHBoYSA9IGltYWdlQnVmZmVyW2kgKyAzXTsgLy8gVGhlIGNvbG9yIG9mIGZ1bGx5LXRyYW5zcGFyZW50IHBpeGVscyBpcyBpcnJlbGV2YW50LiBUaGV5IGFyZSBvZnRlbiwgdGVjaG5pY2FsbHksIGZ1bGx5LXRyYW5zcGFyZW50CgkgICAgLy8gYmxhY2sgKDAgYWxwaGEsIGFuZCB0aGVuIDAgUkdCKS4gVGhleSBhcmUgb2Z0ZW4gdXNlZCwgb2YgY291cnNlIGFzIHRoZSAid2hpdGUiIGFyZWEgaW4gYQoJICAgIC8vIGJhcmNvZGUgaW1hZ2UuIEZvcmNlIGFueSBzdWNoIHBpeGVsIHRvIGJlIHdoaXRlOgoKCSAgICBpZiAoYWxwaGEgPT09IDApIHsKCSAgICAgIGdyYXkgPSAweEZGOwoJICAgIH0gZWxzZSB7CgkgICAgICB2YXIgcGl4ZWxSID0gaW1hZ2VCdWZmZXJbaV07CgkgICAgICB2YXIgcGl4ZWxHID0gaW1hZ2VCdWZmZXJbaSArIDFdOwoJICAgICAgdmFyIHBpeGVsQiA9IGltYWdlQnVmZmVyW2kgKyAyXTsgLy8gLjI5OVIgKyAwLjU4N0cgKyAwLjExNEIgKFlVVi9ZSVEgZm9yIFBBTCBhbmQgTlRTQyksCgkgICAgICAvLyAoMzA2KlIpID4+IDEwIGlzIGFwcHJveGltYXRlbHkgZXF1YWwgdG8gUiowLjI5OSwgYW5kIHNvIG9uLgoJICAgICAgLy8gMHgyMDAgPj4gMTAgaXMgMC41LCBpdCBpbXBsZW1lbnRzIHJvdW5kaW5nLgoKCSAgICAgIGdyYXkgPSAzMDYgKiBwaXhlbFIgKyA2MDEgKiBwaXhlbEcgKyAxMTcgKiBwaXhlbEIgKyAweDIwMCA+PiAxMDsKCSAgICB9CgoJICAgIGdyYXlzY2FsZUJ1ZmZlcltqXSA9IGdyYXk7CgkgIH0KCgkgIHJldHVybiBncmF5c2NhbGVCdWZmZXI7Cgl9OwoKCXZhciByZWFkZXIgPSBuZXcgX2RlZmF1bHQoKTsKCXNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGZ1bmN0aW9uIChlKSB7CgkgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzCgkgIHRyeSB7CgkgICAgdmFyIGx1bWluYW5jZXMgPSB0b0dyYXlzY2FsZUJ1ZmZlcihlLmRhdGEuZGF0YSwgZS5kYXRhLndpZHRoLCBlLmRhdGEuaGVpZ2h0KTsKCSAgICB2YXIgbHVtaW5hbmNlU291cmNlID0gbmV3IF9kZWZhdWx0JDEobHVtaW5hbmNlcywgZS5kYXRhLndpZHRoLCBlLmRhdGEuaGVpZ2h0KTsKCSAgICB2YXIgaHlicmlkQmluYXJpemVyID0gbmV3IF9kZWZhdWx0JDIobHVtaW5hbmNlU291cmNlKTsKCSAgICB2YXIgYmluYXJ5Qml0bWFwID0gbmV3IF9kZWZhdWx0JDMoaHlicmlkQmluYXJpemVyKTsKCSAgICB2YXIgZGVjb2RlZCA9IHJlYWRlci5kZWNvZGUoYmluYXJ5Qml0bWFwKTsKCSAgICBwb3N0TWVzc2FnZShkZWNvZGVkKTsKCSAgfSBjYXRjaCAoZXJyKSB7CgkgICAgcG9zdE1lc3NhZ2UobnVsbCk7CgkgIH0KCX0pOwoKfSkoKTsKCg==', null, false);\n /* eslint-enable */\n\n var _excluded = [\"constraints\", \"onError\", \"onLoad\", \"onScan\", \"resolution\", \"qrArea\"];\n\n function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\n function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n var createWorker = function createWorker() {\n return new WorkerFactory();\n };\n\n var stopMediaStream = function stopMediaStream(stream) {\n if (stream) {\n if (stream.getVideoTracks && stream.getAudioTracks) {\n stream.getVideoTracks().forEach(function (track) {\n stream.removeTrack(track);\n track.stop();\n });\n stream.getAudioTracks().forEach(function (track) {\n stream.removeTrack(track);\n track.stop();\n });\n } else {\n stream.stop();\n }\n }\n };\n\n var Reader = function Reader(props) {\n var constraints = props.constraints,\n onError = props.onError,\n onLoad = props.onLoad,\n onScan = props.onScan,\n resolution = props.resolution,\n qrArea = props.qrArea,\n other = _objectWithoutProperties(props, _excluded);\n\n var streamRef = React__namespace.useRef(null);\n var videoEl = React__namespace.useRef(null);\n var canvasEl = React__namespace.useRef(document.createElement(\"canvas\"));\n var ctxRef = React__namespace.useRef(null);\n var requestRef = React__namespace.useRef();\n\n var _React$useState = React__namespace.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n src = _React$useState2[0],\n setSrc = _React$useState2[1];\n\n var isProcessingRef = React__namespace.useRef(false);\n var workerRef = React__namespace.useRef();\n React__namespace.useEffect(function () {\n workerRef.current = createWorker();\n var worker = workerRef.current;\n\n worker.onmessage = function (e) {\n if (onScan) onScan(e.data ? _objectSpread(_objectSpread({}, e.data), {}, {\n canvas: canvasEl.current\n }) : null);\n isProcessingRef.current = false;\n };\n\n return function () {\n worker.terminate();\n };\n }, [onScan]);\n var qrAreaStr = JSON.stringify(qrArea);\n var check = React__namespace.useCallback(function () {\n var qrArea = JSON.parse(qrAreaStr);\n var worker = workerRef.current;\n var videoIsPlaying = videoEl.current && videoEl.current.readyState === videoEl.current.HAVE_ENOUGH_DATA;\n\n if (!isProcessingRef.current && videoIsPlaying) {\n isProcessingRef.current = true; // Get image/video dimensions\n\n var width = videoEl.current.videoWidth;\n var height = videoEl.current.videoHeight;\n var greatestSize = width > height ? width : height;\n var ratio = Math.floor(resolution / greatestSize * 100) / 100;\n height = Math.floor(ratio * height);\n width = Math.floor(ratio * width);\n canvasEl.current.width = width;\n canvasEl.current.height = height;\n ctxRef.current = canvasEl.current.getContext(\"2d\");\n ctxRef.current.drawImage(videoEl.current, 0, 0, width, height);\n var imageData;\n\n if (qrArea && qrArea.length === 2 && qrArea[0] > 0 && qrArea[1] > 0) {\n imageData = ctxRef.current.getImageData(Math.floor((width - qrArea[0]) / 2), Math.floor((height - qrArea[1]) / 2), qrArea[0], qrArea[1]);\n } else {\n imageData = ctxRef.current.getImageData(0, 0, width, height);\n } // Send data to web-worker\n\n\n worker.postMessage(imageData);\n }\n\n requestRef.current = requestAnimationFrame(check);\n }, [resolution, qrAreaStr]);\n var constraintsStr = JSON.stringify(constraints);\n React__namespace.useEffect(function () {\n var constraints = JSON.parse(constraintsStr);\n var isSubscribed = true;\n navigator.mediaDevices.getUserMedia(constraints).then(function (stream) {\n if (!isSubscribed) {\n stopMediaStream(stream);\n } else {\n streamRef.current = stream;\n\n try {\n if (videoEl.current) {\n videoEl.current.srcObject = stream;\n videoEl.current.setAttribute(\"playsinline\", true); // required to tell iOS safari we don't want fullscreen\n }\n } catch (error) {\n setSrc(window.URL.createObjectURL(stream));\n }\n\n if (onLoad) onLoad();\n requestRef.current = requestAnimationFrame(check);\n }\n })[\"catch\"](function (error) {\n return isSubscribed ? onError(error) : null;\n });\n return function () {\n cancelAnimationFrame(requestRef.current);\n isSubscribed = false;\n stopMediaStream(streamRef.current);\n\n if (src) {\n window.URL.revokeObjectURL(src);\n }\n };\n }, [check, constraintsStr, onError, onLoad, src]);\n return /*#__PURE__*/React__namespace.createElement(\"video\", _extends({\n autoPlay: true,\n playsInline: true,\n src: src,\n ref: videoEl\n }, other));\n };\n\n Reader.propTypes = {\n constraints: PropTypes.object,\n onError: PropTypes.func.isRequired,\n onLoad: PropTypes.func,\n onScan: PropTypes.func.isRequired,\n resolution: PropTypes.number,\n qrArea: PropTypes.array\n };\n Reader.defaultProps = {\n constraints: {\n audio: false,\n video: true\n },\n resolution: 640,\n qrArea: []\n };\n\n return Reader;\n\n}));\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"prop-types\"),require(\"react\"),require(\"signature_pad\"),require(\"trim-canvas\")):\"function\"==typeof define&&define.amd?define([\"prop-types\",\"react\",\"signature_pad\",\"trim-canvas\"],t):\"object\"==typeof exports?exports.SignatureCanvas=t(require(\"prop-types\"),require(\"react\"),require(\"signature_pad\"),require(\"trim-canvas\")):e.SignatureCanvas=t(e[\"prop-types\"],e.react,e.signature_pad,e[\"trim-canvas\"])}(this,function(e,t,n,r){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={exports:{},id:r,loaded:!1};return e[r].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var n={};return t.m=e,t.c=n,t.p=\"\",t(0)}([function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}function a(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function o(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function i(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}function u(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,\"__esModule\",{value:!0});var s=Object.assign||function(e){for(var t=1;t>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.trimCanvas=t():e.trimCanvas=t()}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p=\"\",t(0)}([function(e,t){\"use strict\";function r(e){var t=e.getContext(\"2d\"),r=e.width,n=e.height,o=t.getImageData(0,0,r,n).data,f=a(!0,r,n,o),i=a(!1,r,n,o),c=u(!0,r,n,o),d=u(!1,r,n,o),p=d-c+1,l=i-f+1,s=t.getImageData(c,f,p,l);return e.width=p,e.height=l,t.clearRect(0,0,p,l),t.putImageData(s,0,0),e}function n(e,t,r,n){return{red:n[4*(r*t+e)],green:n[4*(r*t+e)+1],blue:n[4*(r*t+e)+2],alpha:n[4*(r*t+e)+3]}}function o(e,t,r,o){return n(e,t,r,o).alpha}function a(e,t,r,n){for(var a=e?1:-1,u=e?0:r-1,f=u;e?f-1;f+=a)for(var i=0;i-1;f+=a)for(var i=0;i 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","/*!\n * Signature Pad v2.3.2\n * https://github.com/szimek/signature_pad\n *\n * Copyright 2017 Szymon Nowak\n * Released under the MIT license\n *\n * The main idea and some parts of the code (e.g. drawing variable width Bézier curve) are taken from:\n * http://corner.squareup.com/2012/07/smoother-signatures.html\n *\n * Implementation of interpolation using cubic Bézier curves is taken from:\n * http://benknowscode.wordpress.com/2012/09/14/path-interpolation-using-cubic-bezier-and-control-point-estimation-in-javascript\n *\n * Algorithm for approximated length of a Bézier curve is taken from:\n * http://www.lemoda.net/maths/bezier-length/index.html\n *\n */\n\nfunction Point(x, y, time) {\n this.x = x;\n this.y = y;\n this.time = time || new Date().getTime();\n}\n\nPoint.prototype.velocityFrom = function (start) {\n return this.time !== start.time ? this.distanceTo(start) / (this.time - start.time) : 1;\n};\n\nPoint.prototype.distanceTo = function (start) {\n return Math.sqrt(Math.pow(this.x - start.x, 2) + Math.pow(this.y - start.y, 2));\n};\n\nPoint.prototype.equals = function (other) {\n return this.x === other.x && this.y === other.y && this.time === other.time;\n};\n\nfunction Bezier(startPoint, control1, control2, endPoint) {\n this.startPoint = startPoint;\n this.control1 = control1;\n this.control2 = control2;\n this.endPoint = endPoint;\n}\n\n// Returns approximated length.\nBezier.prototype.length = function () {\n var steps = 10;\n var length = 0;\n var px = void 0;\n var py = void 0;\n\n for (var i = 0; i <= steps; i += 1) {\n var t = i / steps;\n var cx = this._point(t, this.startPoint.x, this.control1.x, this.control2.x, this.endPoint.x);\n var cy = this._point(t, this.startPoint.y, this.control1.y, this.control2.y, this.endPoint.y);\n if (i > 0) {\n var xdiff = cx - px;\n var ydiff = cy - py;\n length += Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n }\n px = cx;\n py = cy;\n }\n\n return length;\n};\n\n/* eslint-disable no-multi-spaces, space-in-parens */\nBezier.prototype._point = function (t, start, c1, c2, end) {\n return start * (1.0 - t) * (1.0 - t) * (1.0 - t) + 3.0 * c1 * (1.0 - t) * (1.0 - t) * t + 3.0 * c2 * (1.0 - t) * t * t + end * t * t * t;\n};\n\n/* eslint-disable */\n\n// http://stackoverflow.com/a/27078401/815507\nfunction throttle(func, wait, options) {\n var context, args, result;\n var timeout = null;\n var previous = 0;\n if (!options) options = {};\n var later = function later() {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n return function () {\n var now = Date.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n}\n\nfunction SignaturePad(canvas, options) {\n var self = this;\n var opts = options || {};\n\n this.velocityFilterWeight = opts.velocityFilterWeight || 0.7;\n this.minWidth = opts.minWidth || 0.5;\n this.maxWidth = opts.maxWidth || 2.5;\n this.throttle = 'throttle' in opts ? opts.throttle : 16; // in miliseconds\n this.minDistance = 'minDistance' in opts ? opts.minDistance : 5;\n\n if (this.throttle) {\n this._strokeMoveUpdate = throttle(SignaturePad.prototype._strokeUpdate, this.throttle);\n } else {\n this._strokeMoveUpdate = SignaturePad.prototype._strokeUpdate;\n }\n\n this.dotSize = opts.dotSize || function () {\n return (this.minWidth + this.maxWidth) / 2;\n };\n this.penColor = opts.penColor || 'black';\n this.backgroundColor = opts.backgroundColor || 'rgba(0,0,0,0)';\n this.onBegin = opts.onBegin;\n this.onEnd = opts.onEnd;\n\n this._canvas = canvas;\n this._ctx = canvas.getContext('2d');\n this.clear();\n\n // We need add these inline so they are available to unbind while still having\n // access to 'self' we could use _.bind but it's not worth adding a dependency.\n this._handleMouseDown = function (event) {\n if (event.which === 1) {\n self._mouseButtonDown = true;\n self._strokeBegin(event);\n }\n };\n\n this._handleMouseMove = function (event) {\n if (self._mouseButtonDown) {\n self._strokeMoveUpdate(event);\n }\n };\n\n this._handleMouseUp = function (event) {\n if (event.which === 1 && self._mouseButtonDown) {\n self._mouseButtonDown = false;\n self._strokeEnd(event);\n }\n };\n\n this._handleTouchStart = function (event) {\n if (event.targetTouches.length === 1) {\n var touch = event.changedTouches[0];\n self._strokeBegin(touch);\n }\n };\n\n this._handleTouchMove = function (event) {\n // Prevent scrolling.\n event.preventDefault();\n\n var touch = event.targetTouches[0];\n self._strokeMoveUpdate(touch);\n };\n\n this._handleTouchEnd = function (event) {\n var wasCanvasTouched = event.target === self._canvas;\n if (wasCanvasTouched) {\n event.preventDefault();\n self._strokeEnd(event);\n }\n };\n\n // Enable mouse and touch event handlers\n this.on();\n}\n\n// Public methods\nSignaturePad.prototype.clear = function () {\n var ctx = this._ctx;\n var canvas = this._canvas;\n\n ctx.fillStyle = this.backgroundColor;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n this._data = [];\n this._reset();\n this._isEmpty = true;\n};\n\nSignaturePad.prototype.fromDataURL = function (dataUrl) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var image = new Image();\n var ratio = options.ratio || window.devicePixelRatio || 1;\n var width = options.width || this._canvas.width / ratio;\n var height = options.height || this._canvas.height / ratio;\n\n this._reset();\n image.src = dataUrl;\n image.onload = function () {\n _this._ctx.drawImage(image, 0, 0, width, height);\n };\n this._isEmpty = false;\n};\n\nSignaturePad.prototype.toDataURL = function (type) {\n var _canvas;\n\n switch (type) {\n case 'image/svg+xml':\n return this._toSVG();\n default:\n for (var _len = arguments.length, options = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n options[_key - 1] = arguments[_key];\n }\n\n return (_canvas = this._canvas).toDataURL.apply(_canvas, [type].concat(options));\n }\n};\n\nSignaturePad.prototype.on = function () {\n this._handleMouseEvents();\n this._handleTouchEvents();\n};\n\nSignaturePad.prototype.off = function () {\n this._canvas.removeEventListener('mousedown', this._handleMouseDown);\n this._canvas.removeEventListener('mousemove', this._handleMouseMove);\n document.removeEventListener('mouseup', this._handleMouseUp);\n\n this._canvas.removeEventListener('touchstart', this._handleTouchStart);\n this._canvas.removeEventListener('touchmove', this._handleTouchMove);\n this._canvas.removeEventListener('touchend', this._handleTouchEnd);\n};\n\nSignaturePad.prototype.isEmpty = function () {\n return this._isEmpty;\n};\n\n// Private methods\nSignaturePad.prototype._strokeBegin = function (event) {\n this._data.push([]);\n this._reset();\n this._strokeUpdate(event);\n\n if (typeof this.onBegin === 'function') {\n this.onBegin(event);\n }\n};\n\nSignaturePad.prototype._strokeUpdate = function (event) {\n var x = event.clientX;\n var y = event.clientY;\n\n var point = this._createPoint(x, y);\n var lastPointGroup = this._data[this._data.length - 1];\n var lastPoint = lastPointGroup && lastPointGroup[lastPointGroup.length - 1];\n var isLastPointTooClose = lastPoint && point.distanceTo(lastPoint) < this.minDistance;\n\n // Skip this point if it's too close to the previous one\n if (!(lastPoint && isLastPointTooClose)) {\n var _addPoint = this._addPoint(point),\n curve = _addPoint.curve,\n widths = _addPoint.widths;\n\n if (curve && widths) {\n this._drawCurve(curve, widths.start, widths.end);\n }\n\n this._data[this._data.length - 1].push({\n x: point.x,\n y: point.y,\n time: point.time,\n color: this.penColor\n });\n }\n};\n\nSignaturePad.prototype._strokeEnd = function (event) {\n var canDrawCurve = this.points.length > 2;\n var point = this.points[0]; // Point instance\n\n if (!canDrawCurve && point) {\n this._drawDot(point);\n }\n\n if (point) {\n var lastPointGroup = this._data[this._data.length - 1];\n var lastPoint = lastPointGroup[lastPointGroup.length - 1]; // plain object\n\n // When drawing a dot, there's only one point in a group, so without this check\n // such group would end up with exactly the same 2 points.\n if (!point.equals(lastPoint)) {\n lastPointGroup.push({\n x: point.x,\n y: point.y,\n time: point.time,\n color: this.penColor\n });\n }\n }\n\n if (typeof this.onEnd === 'function') {\n this.onEnd(event);\n }\n};\n\nSignaturePad.prototype._handleMouseEvents = function () {\n this._mouseButtonDown = false;\n\n this._canvas.addEventListener('mousedown', this._handleMouseDown);\n this._canvas.addEventListener('mousemove', this._handleMouseMove);\n document.addEventListener('mouseup', this._handleMouseUp);\n};\n\nSignaturePad.prototype._handleTouchEvents = function () {\n // Pass touch events to canvas element on mobile IE11 and Edge.\n this._canvas.style.msTouchAction = 'none';\n this._canvas.style.touchAction = 'none';\n\n this._canvas.addEventListener('touchstart', this._handleTouchStart);\n this._canvas.addEventListener('touchmove', this._handleTouchMove);\n this._canvas.addEventListener('touchend', this._handleTouchEnd);\n};\n\nSignaturePad.prototype._reset = function () {\n this.points = [];\n this._lastVelocity = 0;\n this._lastWidth = (this.minWidth + this.maxWidth) / 2;\n this._ctx.fillStyle = this.penColor;\n};\n\nSignaturePad.prototype._createPoint = function (x, y, time) {\n var rect = this._canvas.getBoundingClientRect();\n\n return new Point(x - rect.left, y - rect.top, time || new Date().getTime());\n};\n\nSignaturePad.prototype._addPoint = function (point) {\n var points = this.points;\n var tmp = void 0;\n\n points.push(point);\n\n if (points.length > 2) {\n // To reduce the initial lag make it work with 3 points\n // by copying the first point to the beginning.\n if (points.length === 3) points.unshift(points[0]);\n\n tmp = this._calculateCurveControlPoints(points[0], points[1], points[2]);\n var c2 = tmp.c2;\n tmp = this._calculateCurveControlPoints(points[1], points[2], points[3]);\n var c3 = tmp.c1;\n var curve = new Bezier(points[1], c2, c3, points[2]);\n var widths = this._calculateCurveWidths(curve);\n\n // Remove the first element from the list,\n // so that we always have no more than 4 points in points array.\n points.shift();\n\n return { curve: curve, widths: widths };\n }\n\n return {};\n};\n\nSignaturePad.prototype._calculateCurveControlPoints = function (s1, s2, s3) {\n var dx1 = s1.x - s2.x;\n var dy1 = s1.y - s2.y;\n var dx2 = s2.x - s3.x;\n var dy2 = s2.y - s3.y;\n\n var m1 = { x: (s1.x + s2.x) / 2.0, y: (s1.y + s2.y) / 2.0 };\n var m2 = { x: (s2.x + s3.x) / 2.0, y: (s2.y + s3.y) / 2.0 };\n\n var l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n var l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);\n\n var dxm = m1.x - m2.x;\n var dym = m1.y - m2.y;\n\n var k = l2 / (l1 + l2);\n var cm = { x: m2.x + dxm * k, y: m2.y + dym * k };\n\n var tx = s2.x - cm.x;\n var ty = s2.y - cm.y;\n\n return {\n c1: new Point(m1.x + tx, m1.y + ty),\n c2: new Point(m2.x + tx, m2.y + ty)\n };\n};\n\nSignaturePad.prototype._calculateCurveWidths = function (curve) {\n var startPoint = curve.startPoint;\n var endPoint = curve.endPoint;\n var widths = { start: null, end: null };\n\n var velocity = this.velocityFilterWeight * endPoint.velocityFrom(startPoint) + (1 - this.velocityFilterWeight) * this._lastVelocity;\n\n var newWidth = this._strokeWidth(velocity);\n\n widths.start = this._lastWidth;\n widths.end = newWidth;\n\n this._lastVelocity = velocity;\n this._lastWidth = newWidth;\n\n return widths;\n};\n\nSignaturePad.prototype._strokeWidth = function (velocity) {\n return Math.max(this.maxWidth / (velocity + 1), this.minWidth);\n};\n\nSignaturePad.prototype._drawPoint = function (x, y, size) {\n var ctx = this._ctx;\n\n ctx.moveTo(x, y);\n ctx.arc(x, y, size, 0, 2 * Math.PI, false);\n this._isEmpty = false;\n};\n\nSignaturePad.prototype._drawCurve = function (curve, startWidth, endWidth) {\n var ctx = this._ctx;\n var widthDelta = endWidth - startWidth;\n var drawSteps = Math.floor(curve.length());\n\n ctx.beginPath();\n\n for (var i = 0; i < drawSteps; i += 1) {\n // Calculate the Bezier (x, y) coordinate for this step.\n var t = i / drawSteps;\n var tt = t * t;\n var ttt = tt * t;\n var u = 1 - t;\n var uu = u * u;\n var uuu = uu * u;\n\n var x = uuu * curve.startPoint.x;\n x += 3 * uu * t * curve.control1.x;\n x += 3 * u * tt * curve.control2.x;\n x += ttt * curve.endPoint.x;\n\n var y = uuu * curve.startPoint.y;\n y += 3 * uu * t * curve.control1.y;\n y += 3 * u * tt * curve.control2.y;\n y += ttt * curve.endPoint.y;\n\n var width = startWidth + ttt * widthDelta;\n this._drawPoint(x, y, width);\n }\n\n ctx.closePath();\n ctx.fill();\n};\n\nSignaturePad.prototype._drawDot = function (point) {\n var ctx = this._ctx;\n var width = typeof this.dotSize === 'function' ? this.dotSize() : this.dotSize;\n\n ctx.beginPath();\n this._drawPoint(point.x, point.y, width);\n ctx.closePath();\n ctx.fill();\n};\n\nSignaturePad.prototype._fromData = function (pointGroups, drawCurve, drawDot) {\n for (var i = 0; i < pointGroups.length; i += 1) {\n var group = pointGroups[i];\n\n if (group.length > 1) {\n for (var j = 0; j < group.length; j += 1) {\n var rawPoint = group[j];\n var point = new Point(rawPoint.x, rawPoint.y, rawPoint.time);\n var color = rawPoint.color;\n\n if (j === 0) {\n // First point in a group. Nothing to draw yet.\n\n // All points in the group have the same color, so it's enough to set\n // penColor just at the beginning.\n this.penColor = color;\n this._reset();\n\n this._addPoint(point);\n } else if (j !== group.length - 1) {\n // Middle point in a group.\n var _addPoint2 = this._addPoint(point),\n curve = _addPoint2.curve,\n widths = _addPoint2.widths;\n\n if (curve && widths) {\n drawCurve(curve, widths, color);\n }\n } else {\n // Last point in a group. Do nothing.\n }\n }\n } else {\n this._reset();\n var _rawPoint = group[0];\n drawDot(_rawPoint);\n }\n }\n};\n\nSignaturePad.prototype._toSVG = function () {\n var _this2 = this;\n\n var pointGroups = this._data;\n var canvas = this._canvas;\n var ratio = Math.max(window.devicePixelRatio || 1, 1);\n var minX = 0;\n var minY = 0;\n var maxX = canvas.width / ratio;\n var maxY = canvas.height / ratio;\n var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n\n svg.setAttributeNS(null, 'width', canvas.width);\n svg.setAttributeNS(null, 'height', canvas.height);\n\n this._fromData(pointGroups, function (curve, widths, color) {\n var path = document.createElement('path');\n\n // Need to check curve for NaN values, these pop up when drawing\n // lines on the canvas that are not continuous. E.g. Sharp corners\n // or stopping mid-stroke and than continuing without lifting mouse.\n if (!isNaN(curve.control1.x) && !isNaN(curve.control1.y) && !isNaN(curve.control2.x) && !isNaN(curve.control2.y)) {\n var attr = 'M ' + curve.startPoint.x.toFixed(3) + ',' + curve.startPoint.y.toFixed(3) + ' ' + ('C ' + curve.control1.x.toFixed(3) + ',' + curve.control1.y.toFixed(3) + ' ') + (curve.control2.x.toFixed(3) + ',' + curve.control2.y.toFixed(3) + ' ') + (curve.endPoint.x.toFixed(3) + ',' + curve.endPoint.y.toFixed(3));\n\n path.setAttribute('d', attr);\n path.setAttribute('stroke-width', (widths.end * 2.25).toFixed(3));\n path.setAttribute('stroke', color);\n path.setAttribute('fill', 'none');\n path.setAttribute('stroke-linecap', 'round');\n\n svg.appendChild(path);\n }\n }, function (rawPoint) {\n var circle = document.createElement('circle');\n var dotSize = typeof _this2.dotSize === 'function' ? _this2.dotSize() : _this2.dotSize;\n circle.setAttribute('r', dotSize);\n circle.setAttribute('cx', rawPoint.x);\n circle.setAttribute('cy', rawPoint.y);\n circle.setAttribute('fill', rawPoint.color);\n\n svg.appendChild(circle);\n });\n\n var prefix = 'data:image/svg+xml;base64,';\n var header = '';\n var body = svg.innerHTML;\n\n // IE hack for missing innerHTML property on SVGElement\n if (body === undefined) {\n var dummy = document.createElement('dummy');\n var nodes = svg.childNodes;\n dummy.innerHTML = '';\n\n for (var i = 0; i < nodes.length; i += 1) {\n dummy.appendChild(nodes[i].cloneNode(true));\n }\n\n body = dummy.innerHTML;\n }\n\n var footer = '';\n var data = header + body + footer;\n\n return prefix + btoa(data);\n};\n\nSignaturePad.prototype.fromData = function (pointGroups) {\n var _this3 = this;\n\n this.clear();\n\n this._fromData(pointGroups, function (curve, widths) {\n return _this3._drawCurve(curve, widths.start, widths.end);\n }, function (rawPoint) {\n return _this3._drawDot(rawPoint);\n });\n\n this._data = pointGroups;\n};\n\nSignaturePad.prototype.toData = function () {\n return this._data;\n};\n\nexport default SignaturePad;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\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};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"498\":\"31652499\",\"513\":\"53aa7139\",\"703\":\"94dcfca0\",\"787\":\"c4f0c0ac\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"pest:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// 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};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkpest\"] = self[\"webpackChunkpest\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","var _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgLogo(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 841.9 595.3\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#61DAFB\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 420.9,\n cy: 296.5,\n r: 45.7\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M520.5 78.1z\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogo);\nexport default __webpack_public_path__ + \"static/media/logo.6ce24c58023cc2f8fd88fe9d219db6c6.svg\";\nexport { ForwardRef as ReactComponent };","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n reloadDocument?: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (args: LoaderFunctionArgs):\n | Promise\n | DataFunctionValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs):\n | Promise\n | DataFunctionValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(\n branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname)\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = safelyDecodeURIComponent(value || \"\", paramName);\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nfunction safelyDecodeURI(value: string) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === matches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n ActionFunction,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n AgnosticRouteObject,\n DataResult,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n ImmutableRouteKey,\n LoaderFunction,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: { requestContext?: unknown }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n unstable_viewTransitionOpts?: ViewTransitionOpts;\n unstable_flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n unstable_viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized: boolean;\n let hasLazyRoutes = initialMatches.some((m) => m.route.lazy);\n let hasLoaders = initialMatches.some((m) => m.route.loader);\n if (hasLazyRoutes) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!hasLoaders) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n initialized = initialMatches.every(\n (m) =>\n m.route.loader &&\n m.route.loader.hydrate !== true &&\n ((loaderData && loaderData[m.route.id] !== undefined) ||\n (errors && errors[m.route.id] !== undefined))\n );\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace, flushSync }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionData,\n pendingError\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since iot's not a \"navigation\"\n if (\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration)\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(state, redirect.result, { replace });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n flushSync,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n flushSync,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n flushSync: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(state, actionResult, {\n fetcherSubmission: submission,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n { [match.route.id]: actionResult.data },\n undefined // No need to send through errors since we short circuit above\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(state, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n flushSync: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(state, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n state: RouterState,\n redirect: RedirectResult,\n {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(state.location, redirect.location, {\n _isRedirect: true,\n });\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.reloadDocument) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(redirect.location)) {\n const url = init.history.createURL(redirect.location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(redirect.location);\n } else {\n routerWindow.location.assign(redirect.location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: redirect.location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n )\n ),\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n return callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, f.controller.signal),\n f.match,\n f.matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n } else {\n let error: ErrorResult = {\n type: ResultType.error,\n error: getInternalRouterError(404, { pathname: f.path }),\n };\n return error;\n }\n }),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath,\n { isStaticRequest: true, isRouteRequest, requestContext }\n );\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(\n `${method}() call aborted: ${request.method} ${request.url}`\n );\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath,\n { isStaticRequest: true, isRouteRequest, requestContext }\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(\n `${method}() call aborted: ${request.method} ${request.url}`\n );\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError,\n activeDeferreds\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isInitialLoad: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (isInitialLoad) {\n if (route.loader.hydrate) {\n return true;\n }\n return (\n state.loaderData[route.id] === undefined &&\n // Don't re-run if the loader ran and threw an error\n (!state.errors || state.errors[route.id] === undefined)\n );\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n defaultShouldRevalidate:\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n isInitialLoad ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n defaultShouldRevalidate: isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n basename: string,\n v7_relativeSplatPath: boolean,\n opts: {\n isStaticRequest?: boolean;\n isRouteRequest?: boolean;\n requestContext?: unknown;\n } = {}\n): Promise {\n let resultType;\n let result;\n let onReject: (() => void) | undefined;\n\n let runHandler = (handler: ActionFunction | LoaderFunction) => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([\n handler({\n request,\n params: match.params,\n context: opts.requestContext,\n }),\n abortPromise,\n ]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let values = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n if (handlerError) {\n throw handlerError;\n }\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, data: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n location = normalizeTo(\n new URL(request.url),\n matches.slice(0, matches.indexOf(match) + 1),\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n } else if (!opts.isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\")\n ? new URL(currentUrl.protocol + location)\n : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (opts.isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n reloadDocument: result.headers.get(\"X-Remix-Reload-Document\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (opts.isRouteRequest) {\n let queryRouteResponse: QueryRouteResponse = {\n type:\n resultType === ResultType.error ? ResultType.error : ResultType.data,\n response: result,\n };\n throw queryRouteResponse;\n }\n\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponseImpl(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || obj.type === ResultType.error)\n );\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject\n // Omit `future` since those can be pulled from the `router`\n // `NavigationContext` needs future since it doesn't have a `router` in all cases\n extends Omit {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n future: {\n v7_relativeSplatPath: boolean;\n };\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, future, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { future } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"],\n future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined ||\n matches[matches.length - 1].route.lazy !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState,\n future\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error !== undefined ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null,\n future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n\n if (match.route.id) {\n let { loaderData, errors } = dataRouterState;\n let needsToRunLoader =\n match.route.loader &&\n loaderData[match.route.id] === undefined &&\n (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error: any;\n let shouldRenderHydrateFallback = false;\n let errorElement: React.ReactNode | null = null;\n let hydrateFallbackElement: React.ReactNode | null = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n RouterSubscriber,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n v7_relativeSplatPath: boolean;\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n // Only accept future flags relevant to rendering behavior\n // routing flags should be accessed via router.future\n future?: Partial>;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n\n let setState = React.useCallback(\n (newState: RouterState) => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n },\n [setStateImpl, v7_startTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n React.useEffect(() => {\n warning(\n fallbackElement == null || !router.future.v7_partialHydration,\n \"`` is deprecated when using \" +\n \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n );\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a \";\r\n var nW = globalObject.open();\r\n\r\n if (nW !== null) {\r\n nW.document.write(htmlForNewWindow);\r\n }\r\n return nW;\r\n } else {\r\n throw new Error(\r\n \"The option pdfobjectnewwindow just works in a browser-environment.\"\r\n );\r\n }\r\n case \"pdfjsnewwindow\":\r\n if (\r\n Object.prototype.toString.call(globalObject) === \"[object Window]\"\r\n ) {\r\n var pdfJsUrl = options.pdfJsUrl || \"examples/PDF.js/web/viewer.html\";\r\n var htmlForPDFjsNewWindow =\r\n \"\" +\r\n \"\" +\r\n '' +\r\n \"\";\r\n var dataURLNewWindow = globalObject.open();\r\n if (dataURLNewWindow !== null) {\r\n dataURLNewWindow.document.write(htmlForDataURLNewWindow);\r\n dataURLNewWindow.document.title = options.filename;\r\n }\r\n if (dataURLNewWindow || typeof safari === \"undefined\")\r\n return dataURLNewWindow;\r\n } else {\r\n throw new Error(\r\n \"The option dataurlnewwindow just works in a browser-environment.\"\r\n );\r\n }\r\n break;\r\n case \"datauri\":\r\n case \"dataurl\":\r\n return (globalObject.document.location.href = this.output(\r\n \"datauristring\",\r\n options\r\n ));\r\n default:\r\n return null;\r\n }\r\n }));\r\n\r\n /**\r\n * Used to see if a supplied hotfix was requested when the pdf instance was created.\r\n * @param {string} hotfixName - The name of the hotfix to check.\r\n * @returns {boolean}\r\n */\r\n var hasHotfix = function(hotfixName) {\r\n return (\r\n Array.isArray(hotfixes) === true && hotfixes.indexOf(hotfixName) > -1\r\n );\r\n };\r\n\r\n switch (unit) {\r\n case \"pt\":\r\n scaleFactor = 1;\r\n break;\r\n case \"mm\":\r\n scaleFactor = 72 / 25.4;\r\n break;\r\n case \"cm\":\r\n scaleFactor = 72 / 2.54;\r\n break;\r\n case \"in\":\r\n scaleFactor = 72;\r\n break;\r\n case \"px\":\r\n if (hasHotfix(\"px_scaling\") == true) {\r\n scaleFactor = 72 / 96;\r\n } else {\r\n scaleFactor = 96 / 72;\r\n }\r\n break;\r\n case \"pc\":\r\n scaleFactor = 12;\r\n break;\r\n case \"em\":\r\n scaleFactor = 12;\r\n break;\r\n case \"ex\":\r\n scaleFactor = 6;\r\n break;\r\n default:\r\n if (typeof unit === \"number\") {\r\n scaleFactor = unit;\r\n } else {\r\n throw new Error(\"Invalid unit: \" + unit);\r\n }\r\n }\r\n\r\n var encryption = null;\r\n setCreationDate();\r\n setFileId();\r\n\r\n var getEncryptor = function(objectId) {\r\n if (encryptionOptions !== null) {\r\n return encryption.encryptor(objectId, 0);\r\n }\r\n return function(data) {\r\n return data;\r\n };\r\n };\r\n\r\n //---------------------------------------\r\n // Public API\r\n\r\n var getPageInfo = (API.__private__.getPageInfo = API.getPageInfo = function(\r\n pageNumberOneBased\r\n ) {\r\n if (isNaN(pageNumberOneBased) || pageNumberOneBased % 1 !== 0) {\r\n throw new Error(\"Invalid argument passed to jsPDF.getPageInfo\");\r\n }\r\n var objId = pagesContext[pageNumberOneBased].objId;\r\n return {\r\n objId: objId,\r\n pageNumber: pageNumberOneBased,\r\n pageContext: pagesContext[pageNumberOneBased]\r\n };\r\n });\r\n\r\n var getPageInfoByObjId = (API.__private__.getPageInfoByObjId = function(\r\n objId\r\n ) {\r\n if (isNaN(objId) || objId % 1 !== 0) {\r\n throw new Error(\"Invalid argument passed to jsPDF.getPageInfoByObjId\");\r\n }\r\n for (var pageNumber in pagesContext) {\r\n if (pagesContext[pageNumber].objId === objId) {\r\n break;\r\n }\r\n }\r\n return getPageInfo(pageNumber);\r\n });\r\n\r\n var getCurrentPageInfo = (API.__private__.getCurrentPageInfo = API.getCurrentPageInfo = function() {\r\n return {\r\n objId: pagesContext[currentPage].objId,\r\n pageNumber: currentPage,\r\n pageContext: pagesContext[currentPage]\r\n };\r\n });\r\n\r\n /**\r\n * Adds (and transfers the focus to) new page to the PDF document.\r\n * @param format {String/Array} The format of the new page. Can be:
  • a0 - a10
  • b0 - b10
  • c0 - c10
  • dl
  • letter
  • government-letter
  • legal
  • junior-legal
  • ledger
  • tabloid
  • credit-card

\r\n * Default is \"a4\". If you want to use your own format just pass instead of one of the above predefined formats the size as an number-array, e.g. [595.28, 841.89]\r\n * @param orientation {string} Orientation of the new page. Possible values are \"portrait\" or \"landscape\" (or shortcuts \"p\" (Default), \"l\").\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n *\r\n * @memberof jsPDF#\r\n * @name addPage\r\n */\r\n API.addPage = function() {\r\n _addPage.apply(this, arguments);\r\n return this;\r\n };\r\n /**\r\n * Adds (and transfers the focus to) new page to the PDF document.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n *\r\n * @memberof jsPDF#\r\n * @name setPage\r\n * @param {number} page Switch the active page to the page number specified (indexed starting at 1).\r\n * @example\r\n * doc = jsPDF()\r\n * doc.addPage()\r\n * doc.addPage()\r\n * doc.text('I am on page 3', 10, 10)\r\n * doc.setPage(1)\r\n * doc.text('I am on page 1', 10, 10)\r\n */\r\n API.setPage = function() {\r\n _setPage.apply(this, arguments);\r\n setOutputDestination.call(this, pages[currentPage]);\r\n return this;\r\n };\r\n\r\n /**\r\n * @name insertPage\r\n * @memberof jsPDF#\r\n *\r\n * @function\r\n * @instance\r\n * @param {Object} beforePage\r\n * @returns {jsPDF}\r\n */\r\n API.insertPage = function(beforePage) {\r\n this.addPage();\r\n this.movePage(currentPage, beforePage);\r\n return this;\r\n };\r\n\r\n /**\r\n * @name movePage\r\n * @memberof jsPDF#\r\n * @function\r\n * @instance\r\n * @param {number} targetPage\r\n * @param {number} beforePage\r\n * @returns {jsPDF}\r\n */\r\n API.movePage = function(targetPage, beforePage) {\r\n var tmpPages, tmpPagesContext;\r\n if (targetPage > beforePage) {\r\n tmpPages = pages[targetPage];\r\n tmpPagesContext = pagesContext[targetPage];\r\n for (var i = targetPage; i > beforePage; i--) {\r\n pages[i] = pages[i - 1];\r\n pagesContext[i] = pagesContext[i - 1];\r\n }\r\n pages[beforePage] = tmpPages;\r\n pagesContext[beforePage] = tmpPagesContext;\r\n this.setPage(beforePage);\r\n } else if (targetPage < beforePage) {\r\n tmpPages = pages[targetPage];\r\n tmpPagesContext = pagesContext[targetPage];\r\n for (var j = targetPage; j < beforePage; j++) {\r\n pages[j] = pages[j + 1];\r\n pagesContext[j] = pagesContext[j + 1];\r\n }\r\n pages[beforePage] = tmpPages;\r\n pagesContext[beforePage] = tmpPagesContext;\r\n this.setPage(beforePage);\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * Deletes a page from the PDF.\r\n * @name deletePage\r\n * @memberof jsPDF#\r\n * @function\r\n * @param {number} targetPage\r\n * @instance\r\n * @returns {jsPDF}\r\n */\r\n API.deletePage = function() {\r\n _deletePage.apply(this, arguments);\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds text to page. Supports adding multiline text when 'text' argument is an Array of Strings.\r\n *\r\n * @function\r\n * @instance\r\n * @param {String|Array} text String or array of strings to be added to the page. Each line is shifted one line down per font, spacing settings declared before this call.\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page.\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page.\r\n * @param {Object} [options] - Collection of settings signaling how the text must be encoded.\r\n * @param {string} [options.align=left] - The alignment of the text, possible values: left, center, right, justify.\r\n * @param {string} [options.baseline=alphabetic] - Sets text baseline used when drawing the text, possible values: alphabetic, ideographic, bottom, top, middle, hanging\r\n * @param {number|Matrix} [options.angle=0] - Rotate the text clockwise or counterclockwise. Expects the angle in degree.\r\n * @param {number} [options.rotationDirection=1] - Direction of the rotation. 0 = clockwise, 1 = counterclockwise.\r\n * @param {number} [options.charSpace=0] - The space between each letter.\r\n * @param {number} [options.horizontalScale=1] - Horizontal scale of the text as a factor of the regular size.\r\n * @param {number} [options.lineHeightFactor=1.15] - The lineheight of each line.\r\n * @param {Object} [options.flags] - Flags for to8bitStream.\r\n * @param {boolean} [options.flags.noBOM=true] - Don't add BOM to Unicode-text.\r\n * @param {boolean} [options.flags.autoencode=true] - Autoencode the Text.\r\n * @param {number} [options.maxWidth=0] - Split the text by given width, 0 = no split.\r\n * @param {string} [options.renderingMode=fill] - Set how the text should be rendered, possible values: fill, stroke, fillThenStroke, invisible, fillAndAddForClipping, strokeAndAddPathForClipping, fillThenStrokeAndAddToPathForClipping, addToPathForClipping.\r\n * @param {boolean} [options.isInputVisual] - Option for the BidiEngine\r\n * @param {boolean} [options.isOutputVisual] - Option for the BidiEngine\r\n * @param {boolean} [options.isInputRtl] - Option for the BidiEngine\r\n * @param {boolean} [options.isOutputRtl] - Option for the BidiEngine\r\n * @param {boolean} [options.isSymmetricSwapping] - Option for the BidiEngine\r\n * @param {number|Matrix} transform If transform is a number the text will be rotated by this value around the anchor set by x and y.\r\n *\r\n * If it is a Matrix, this matrix gets directly applied to the text, which allows shearing\r\n * effects etc.; the x and y offsets are then applied AFTER the coordinate system has been established by this\r\n * matrix. This means passing a rotation matrix that is equivalent to some rotation angle will in general yield a\r\n * DIFFERENT result. A matrix is only allowed in \"advanced\" API mode.\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name text\r\n */\r\n API.__private__.text = API.text = function(text, x, y, options, transform) {\r\n /*\r\n * Inserts something like this into PDF\r\n * BT\r\n * /F1 16 Tf % Font name + size\r\n * 16 TL % How many units down for next line in multiline text\r\n * 0 g % color\r\n * 28.35 813.54 Td % position\r\n * (line one) Tj\r\n * T* (line two) Tj\r\n * T* (line three) Tj\r\n * ET\r\n */\r\n options = options || {};\r\n var scope = options.scope || this;\r\n var payload, da, angle, align, charSpace, maxWidth, flags, horizontalScale;\r\n\r\n // Pre-August-2012 the order of arguments was function(x, y, text, flags)\r\n // in effort to make all calls have similar signature like\r\n // function(data, coordinates... , miscellaneous)\r\n // this method had its args flipped.\r\n // code below allows backward compatibility with old arg order.\r\n if (\r\n typeof text === \"number\" &&\r\n typeof x === \"number\" &&\r\n (typeof y === \"string\" || Array.isArray(y))\r\n ) {\r\n var tmp = y;\r\n y = x;\r\n x = text;\r\n text = tmp;\r\n }\r\n\r\n var transformationMatrix;\r\n\r\n if (arguments[3] instanceof Matrix === false) {\r\n flags = arguments[3];\r\n angle = arguments[4];\r\n align = arguments[5];\r\n\r\n if (typeof flags !== \"object\" || flags === null) {\r\n if (typeof angle === \"string\") {\r\n align = angle;\r\n angle = null;\r\n }\r\n if (typeof flags === \"string\") {\r\n align = flags;\r\n flags = null;\r\n }\r\n if (typeof flags === \"number\") {\r\n angle = flags;\r\n flags = null;\r\n }\r\n options = {\r\n flags: flags,\r\n angle: angle,\r\n align: align\r\n };\r\n }\r\n } else {\r\n advancedApiModeTrap(\r\n \"The transform parameter of text() with a Matrix value\"\r\n );\r\n transformationMatrix = transform;\r\n }\r\n\r\n if (isNaN(x) || isNaN(y) || typeof text === \"undefined\" || text === null) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.text\");\r\n }\r\n\r\n if (text.length === 0) {\r\n return scope;\r\n }\r\n\r\n var xtra = \"\";\r\n var isHex = false;\r\n var lineHeight =\r\n typeof options.lineHeightFactor === \"number\"\r\n ? options.lineHeightFactor\r\n : lineHeightFactor;\r\n var scaleFactor = scope.internal.scaleFactor;\r\n\r\n function ESC(s) {\r\n s = s.split(\"\\t\").join(Array(options.TabLen || 9).join(\" \"));\r\n return pdfEscape(s, flags);\r\n }\r\n\r\n function transformTextToSpecialArray(text) {\r\n //we don't want to destroy original text array, so cloning it\r\n var sa = text.concat();\r\n var da = [];\r\n var len = sa.length;\r\n var curDa;\r\n //we do array.join('text that must not be PDFescaped\")\r\n //thus, pdfEscape each component separately\r\n while (len--) {\r\n curDa = sa.shift();\r\n if (typeof curDa === \"string\") {\r\n da.push(curDa);\r\n } else {\r\n if (\r\n Array.isArray(text) &&\r\n (curDa.length === 1 ||\r\n (curDa[1] === undefined && curDa[2] === undefined))\r\n ) {\r\n da.push(curDa[0]);\r\n } else {\r\n da.push([curDa[0], curDa[1], curDa[2]]);\r\n }\r\n }\r\n }\r\n return da;\r\n }\r\n\r\n function processTextByFunction(text, processingFunction) {\r\n var result;\r\n if (typeof text === \"string\") {\r\n result = processingFunction(text)[0];\r\n } else if (Array.isArray(text)) {\r\n //we don't want to destroy original text array, so cloning it\r\n var sa = text.concat();\r\n var da = [];\r\n var len = sa.length;\r\n var curDa;\r\n var tmpResult;\r\n //we do array.join('text that must not be PDFescaped\")\r\n //thus, pdfEscape each component separately\r\n while (len--) {\r\n curDa = sa.shift();\r\n if (typeof curDa === \"string\") {\r\n da.push(processingFunction(curDa)[0]);\r\n } else if (Array.isArray(curDa) && typeof curDa[0] === \"string\") {\r\n tmpResult = processingFunction(curDa[0], curDa[1], curDa[2]);\r\n da.push([tmpResult[0], tmpResult[1], tmpResult[2]]);\r\n }\r\n }\r\n result = da;\r\n }\r\n return result;\r\n }\r\n\r\n //Check if text is of type String\r\n var textIsOfTypeString = false;\r\n var tmpTextIsOfTypeString = true;\r\n\r\n if (typeof text === \"string\") {\r\n textIsOfTypeString = true;\r\n } else if (Array.isArray(text)) {\r\n //we don't want to destroy original text array, so cloning it\r\n var sa = text.concat();\r\n da = [];\r\n var len = sa.length;\r\n var curDa;\r\n //we do array.join('text that must not be PDFescaped\")\r\n //thus, pdfEscape each component separately\r\n while (len--) {\r\n curDa = sa.shift();\r\n if (\r\n typeof curDa !== \"string\" ||\r\n (Array.isArray(curDa) && typeof curDa[0] !== \"string\")\r\n ) {\r\n tmpTextIsOfTypeString = false;\r\n }\r\n }\r\n textIsOfTypeString = tmpTextIsOfTypeString;\r\n }\r\n if (textIsOfTypeString === false) {\r\n throw new Error(\r\n 'Type of text must be string or Array. \"' +\r\n text +\r\n '\" is not recognized.'\r\n );\r\n }\r\n\r\n //If there are any newlines in text, we assume\r\n //the user wanted to print multiple lines, so break the\r\n //text up into an array. If the text is already an array,\r\n //we assume the user knows what they are doing.\r\n //Convert text into an array anyway to simplify\r\n //later code.\r\n\r\n if (typeof text === \"string\") {\r\n if (text.match(/[\\r?\\n]/)) {\r\n text = text.split(/\\r\\n|\\r|\\n/g);\r\n } else {\r\n text = [text];\r\n }\r\n }\r\n\r\n //baseline\r\n var height = activeFontSize / scope.internal.scaleFactor;\r\n var descent = height * (lineHeight - 1);\r\n\r\n switch (options.baseline) {\r\n case \"bottom\":\r\n y -= descent;\r\n break;\r\n case \"top\":\r\n y += height - descent;\r\n break;\r\n case \"hanging\":\r\n y += height - 2 * descent;\r\n break;\r\n case \"middle\":\r\n y += height / 2 - descent;\r\n break;\r\n case \"ideographic\":\r\n case \"alphabetic\":\r\n default:\r\n // do nothing, everything is fine\r\n break;\r\n }\r\n\r\n //multiline\r\n maxWidth = options.maxWidth || 0;\r\n\r\n if (maxWidth > 0) {\r\n if (typeof text === \"string\") {\r\n text = scope.splitTextToSize(text, maxWidth);\r\n } else if (Object.prototype.toString.call(text) === \"[object Array]\") {\r\n text = text.reduce(function(acc, textLine) {\r\n return acc.concat(scope.splitTextToSize(textLine, maxWidth));\r\n }, []);\r\n }\r\n }\r\n\r\n //creating Payload-Object to make text byRef\r\n payload = {\r\n text: text,\r\n x: x,\r\n y: y,\r\n options: options,\r\n mutex: {\r\n pdfEscape: pdfEscape,\r\n activeFontKey: activeFontKey,\r\n fonts: fonts,\r\n activeFontSize: activeFontSize\r\n }\r\n };\r\n events.publish(\"preProcessText\", payload);\r\n\r\n text = payload.text;\r\n options = payload.options;\r\n\r\n //angle\r\n angle = options.angle;\r\n\r\n if (\r\n transformationMatrix instanceof Matrix === false &&\r\n angle &&\r\n typeof angle === \"number\"\r\n ) {\r\n angle *= Math.PI / 180;\r\n\r\n if (options.rotationDirection === 0) {\r\n angle = -angle;\r\n }\r\n\r\n if (apiMode === ApiMode.ADVANCED) {\r\n angle = -angle;\r\n }\r\n\r\n var c = Math.cos(angle);\r\n var s = Math.sin(angle);\r\n transformationMatrix = new Matrix(c, s, -s, c, 0, 0);\r\n } else if (angle && angle instanceof Matrix) {\r\n transformationMatrix = angle;\r\n }\r\n\r\n if (apiMode === ApiMode.ADVANCED && !transformationMatrix) {\r\n transformationMatrix = identityMatrix;\r\n }\r\n\r\n //charSpace\r\n\r\n charSpace = options.charSpace || activeCharSpace;\r\n\r\n if (typeof charSpace !== \"undefined\") {\r\n xtra += hpf(scale(charSpace)) + \" Tc\\n\";\r\n this.setCharSpace(this.getCharSpace() || 0);\r\n }\r\n\r\n horizontalScale = options.horizontalScale;\r\n if (typeof horizontalScale !== \"undefined\") {\r\n xtra += hpf(horizontalScale * 100) + \" Tz\\n\";\r\n }\r\n\r\n //lang\r\n\r\n var lang = options.lang;\r\n\r\n if (lang) {\r\n // xtra += \"/Lang (\" + lang +\")\\n\";\r\n }\r\n\r\n //renderingMode\r\n var renderingMode = -1;\r\n var parmRenderingMode =\r\n typeof options.renderingMode !== \"undefined\"\r\n ? options.renderingMode\r\n : options.stroke;\r\n var pageContext = scope.internal.getCurrentPageInfo().pageContext;\r\n\r\n switch (parmRenderingMode) {\r\n case 0:\r\n case false:\r\n case \"fill\":\r\n renderingMode = 0;\r\n break;\r\n case 1:\r\n case true:\r\n case \"stroke\":\r\n renderingMode = 1;\r\n break;\r\n case 2:\r\n case \"fillThenStroke\":\r\n renderingMode = 2;\r\n break;\r\n case 3:\r\n case \"invisible\":\r\n renderingMode = 3;\r\n break;\r\n case 4:\r\n case \"fillAndAddForClipping\":\r\n renderingMode = 4;\r\n break;\r\n case 5:\r\n case \"strokeAndAddPathForClipping\":\r\n renderingMode = 5;\r\n break;\r\n case 6:\r\n case \"fillThenStrokeAndAddToPathForClipping\":\r\n renderingMode = 6;\r\n break;\r\n case 7:\r\n case \"addToPathForClipping\":\r\n renderingMode = 7;\r\n break;\r\n }\r\n\r\n var usedRenderingMode =\r\n typeof pageContext.usedRenderingMode !== \"undefined\"\r\n ? pageContext.usedRenderingMode\r\n : -1;\r\n\r\n //if the coder wrote it explicitly to use a specific\r\n //renderingMode, then use it\r\n if (renderingMode !== -1) {\r\n xtra += renderingMode + \" Tr\\n\";\r\n //otherwise check if we used the rendering Mode already\r\n //if so then set the rendering Mode...\r\n } else if (usedRenderingMode !== -1) {\r\n xtra += \"0 Tr\\n\";\r\n }\r\n\r\n if (renderingMode !== -1) {\r\n pageContext.usedRenderingMode = renderingMode;\r\n }\r\n\r\n //align\r\n align = options.align || \"left\";\r\n var leading = activeFontSize * lineHeight;\r\n var pageWidth = scope.internal.pageSize.getWidth();\r\n var activeFont = fonts[activeFontKey];\r\n charSpace = options.charSpace || activeCharSpace;\r\n maxWidth = options.maxWidth || 0;\r\n\r\n var lineWidths;\r\n flags = Object.assign({ autoencode: true, noBOM: true }, options.flags);\r\n\r\n var wordSpacingPerLine = [];\r\n\r\n if (Object.prototype.toString.call(text) === \"[object Array]\") {\r\n da = transformTextToSpecialArray(text);\r\n var newY;\r\n if (align !== \"left\") {\r\n lineWidths = da.map(function(v) {\r\n return (\r\n (scope.getStringUnitWidth(v, {\r\n font: activeFont,\r\n charSpace: charSpace,\r\n fontSize: activeFontSize,\r\n doKerning: false\r\n }) *\r\n activeFontSize) /\r\n scaleFactor\r\n );\r\n });\r\n }\r\n //The first line uses the \"main\" Td setting,\r\n //and the subsequent lines are offset by the\r\n //previous line's x coordinate.\r\n var prevWidth = 0;\r\n var newX;\r\n if (align === \"right\") {\r\n //The passed in x coordinate defines the\r\n //rightmost point of the text.\r\n x -= lineWidths[0];\r\n text = [];\r\n len = da.length;\r\n for (var i = 0; i < len; i++) {\r\n if (i === 0) {\r\n newX = getHorizontalCoordinate(x);\r\n newY = getVerticalCoordinate(y);\r\n } else {\r\n newX = scale(prevWidth - lineWidths[i]);\r\n newY = -leading;\r\n }\r\n text.push([da[i], newX, newY]);\r\n prevWidth = lineWidths[i];\r\n }\r\n } else if (align === \"center\") {\r\n //The passed in x coordinate defines\r\n //the center point.\r\n x -= lineWidths[0] / 2;\r\n text = [];\r\n len = da.length;\r\n for (var j = 0; j < len; j++) {\r\n if (j === 0) {\r\n newX = getHorizontalCoordinate(x);\r\n newY = getVerticalCoordinate(y);\r\n } else {\r\n newX = scale((prevWidth - lineWidths[j]) / 2);\r\n newY = -leading;\r\n }\r\n text.push([da[j], newX, newY]);\r\n prevWidth = lineWidths[j];\r\n }\r\n } else if (align === \"left\") {\r\n text = [];\r\n len = da.length;\r\n for (var h = 0; h < len; h++) {\r\n text.push(da[h]);\r\n }\r\n } else if (align === \"justify\") {\r\n text = [];\r\n len = da.length;\r\n maxWidth = maxWidth !== 0 ? maxWidth : pageWidth;\r\n\r\n for (var l = 0; l < len; l++) {\r\n newY = l === 0 ? getVerticalCoordinate(y) : -leading;\r\n newX = l === 0 ? getHorizontalCoordinate(x) : 0;\r\n if (l < len - 1) {\r\n wordSpacingPerLine.push(\r\n hpf(\r\n scale(\r\n (maxWidth - lineWidths[l]) / (da[l].split(\" \").length - 1)\r\n )\r\n )\r\n );\r\n } else {\r\n wordSpacingPerLine.push(0);\r\n }\r\n text.push([da[l], newX, newY]);\r\n }\r\n } else {\r\n throw new Error(\r\n 'Unrecognized alignment option, use \"left\", \"center\", \"right\" or \"justify\".'\r\n );\r\n }\r\n }\r\n\r\n //R2L\r\n var doReversing = typeof options.R2L === \"boolean\" ? options.R2L : R2L;\r\n if (doReversing === true) {\r\n text = processTextByFunction(text, function(text, posX, posY) {\r\n return [\r\n text\r\n .split(\"\")\r\n .reverse()\r\n .join(\"\"),\r\n posX,\r\n posY\r\n ];\r\n });\r\n }\r\n\r\n //creating Payload-Object to make text byRef\r\n payload = {\r\n text: text,\r\n x: x,\r\n y: y,\r\n options: options,\r\n mutex: {\r\n pdfEscape: pdfEscape,\r\n activeFontKey: activeFontKey,\r\n fonts: fonts,\r\n activeFontSize: activeFontSize\r\n }\r\n };\r\n events.publish(\"postProcessText\", payload);\r\n\r\n text = payload.text;\r\n isHex = payload.mutex.isHex || false;\r\n\r\n //Escaping\r\n var activeFontEncoding = fonts[activeFontKey].encoding;\r\n\r\n if (\r\n activeFontEncoding === \"WinAnsiEncoding\" ||\r\n activeFontEncoding === \"StandardEncoding\"\r\n ) {\r\n text = processTextByFunction(text, function(text, posX, posY) {\r\n return [ESC(text), posX, posY];\r\n });\r\n }\r\n\r\n da = transformTextToSpecialArray(text);\r\n\r\n text = [];\r\n var STRING = 0;\r\n var ARRAY = 1;\r\n var variant = Array.isArray(da[0]) ? ARRAY : STRING;\r\n var posX;\r\n var posY;\r\n var content;\r\n var wordSpacing = \"\";\r\n\r\n var generatePosition = function(\r\n parmPosX,\r\n parmPosY,\r\n parmTransformationMatrix\r\n ) {\r\n var position = \"\";\r\n if (parmTransformationMatrix instanceof Matrix) {\r\n // It is kind of more intuitive to apply a plain rotation around the text anchor set by x and y\r\n // but when the user supplies an arbitrary transformation matrix, the x and y offsets should be applied\r\n // in the coordinate system established by this matrix\r\n if (typeof options.angle === \"number\") {\r\n parmTransformationMatrix = matrixMult(\r\n parmTransformationMatrix,\r\n new Matrix(1, 0, 0, 1, parmPosX, parmPosY)\r\n );\r\n } else {\r\n parmTransformationMatrix = matrixMult(\r\n new Matrix(1, 0, 0, 1, parmPosX, parmPosY),\r\n parmTransformationMatrix\r\n );\r\n }\r\n\r\n if (apiMode === ApiMode.ADVANCED) {\r\n parmTransformationMatrix = matrixMult(\r\n new Matrix(1, 0, 0, -1, 0, 0),\r\n parmTransformationMatrix\r\n );\r\n }\r\n\r\n position = parmTransformationMatrix.join(\" \") + \" Tm\\n\";\r\n } else {\r\n position = hpf(parmPosX) + \" \" + hpf(parmPosY) + \" Td\\n\";\r\n }\r\n return position;\r\n };\r\n\r\n for (var lineIndex = 0; lineIndex < da.length; lineIndex++) {\r\n wordSpacing = \"\";\r\n\r\n switch (variant) {\r\n case ARRAY:\r\n content =\r\n (isHex ? \"<\" : \"(\") + da[lineIndex][0] + (isHex ? \">\" : \")\");\r\n posX = parseFloat(da[lineIndex][1]);\r\n posY = parseFloat(da[lineIndex][2]);\r\n break;\r\n case STRING:\r\n content = (isHex ? \"<\" : \"(\") + da[lineIndex] + (isHex ? \">\" : \")\");\r\n posX = getHorizontalCoordinate(x);\r\n posY = getVerticalCoordinate(y);\r\n break;\r\n }\r\n\r\n if (\r\n typeof wordSpacingPerLine !== \"undefined\" &&\r\n typeof wordSpacingPerLine[lineIndex] !== \"undefined\"\r\n ) {\r\n wordSpacing = wordSpacingPerLine[lineIndex] + \" Tw\\n\";\r\n }\r\n\r\n if (lineIndex === 0) {\r\n text.push(\r\n wordSpacing +\r\n generatePosition(posX, posY, transformationMatrix) +\r\n content\r\n );\r\n } else if (variant === STRING) {\r\n text.push(wordSpacing + content);\r\n } else if (variant === ARRAY) {\r\n text.push(\r\n wordSpacing +\r\n generatePosition(posX, posY, transformationMatrix) +\r\n content\r\n );\r\n }\r\n }\r\n\r\n text = variant === STRING ? text.join(\" Tj\\nT* \") : text.join(\" Tj\\n\");\r\n text += \" Tj\\n\";\r\n\r\n var result = \"BT\\n/\";\r\n result += activeFontKey + \" \" + activeFontSize + \" Tf\\n\"; // font face, style, size\r\n result += hpf(activeFontSize * lineHeight) + \" TL\\n\"; // line spacing\r\n result += textColor + \"\\n\";\r\n result += xtra;\r\n result += text;\r\n result += \"ET\";\r\n\r\n out(result);\r\n usedFonts[activeFontKey] = true;\r\n return scope;\r\n };\r\n\r\n // PDF supports these path painting and clip path operators:\r\n //\r\n // S - stroke\r\n // s - close/stroke\r\n // f (F) - fill non-zero\r\n // f* - fill evenodd\r\n // B - fill stroke nonzero\r\n // B* - fill stroke evenodd\r\n // b - close fill stroke nonzero\r\n // b* - close fill stroke evenodd\r\n // n - nothing (consume path)\r\n // W - clip nonzero\r\n // W* - clip evenodd\r\n //\r\n // In order to keep the API small, we omit the close-and-fill/stroke operators and provide a separate close()\r\n // method.\r\n /**\r\n *\r\n * @name clip\r\n * @function\r\n * @instance\r\n * @param {string} rule Only possible value is 'evenodd'\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @description All .clip() after calling drawing ops with a style argument of null.\r\n */\r\n var clip = (API.__private__.clip = API.clip = function(rule) {\r\n // Call .clip() after calling drawing ops with a style argument of null\r\n // W is the PDF clipping op\r\n if (\"evenodd\" === rule) {\r\n out(\"W*\");\r\n } else {\r\n out(\"W\");\r\n }\r\n return this;\r\n });\r\n\r\n /**\r\n * @name clipEvenOdd\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @description Modify the current clip path by intersecting it with the current path using the even-odd rule. Note\r\n * that this will NOT consume the current path. In order to only use this path for clipping call\r\n * {@link API.discardPath} afterwards.\r\n */\r\n API.clipEvenOdd = function() {\r\n return clip(\"evenodd\");\r\n };\r\n\r\n /**\r\n * Consumes the current path without any effect. Mainly used in combination with {@link clip} or\r\n * {@link clipEvenOdd}. The PDF \"n\" operator.\r\n * @name discardPath\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.__private__.discardPath = API.discardPath = function() {\r\n out(\"n\");\r\n return this;\r\n };\r\n\r\n var isValidStyle = (API.__private__.isValidStyle = function(style) {\r\n var validStyleVariants = [\r\n undefined,\r\n null,\r\n \"S\",\r\n \"D\",\r\n \"F\",\r\n \"DF\",\r\n \"FD\",\r\n \"f\",\r\n \"f*\",\r\n \"B\",\r\n \"B*\",\r\n \"n\"\r\n ];\r\n var result = false;\r\n if (validStyleVariants.indexOf(style) !== -1) {\r\n result = true;\r\n }\r\n return result;\r\n });\r\n\r\n API.__private__.setDefaultPathOperation = API.setDefaultPathOperation = function(\r\n operator\r\n ) {\r\n if (isValidStyle(operator)) {\r\n defaultPathOperation = operator;\r\n }\r\n return this;\r\n };\r\n\r\n var getStyle = (API.__private__.getStyle = API.getStyle = function(style) {\r\n // see path-painting operators in PDF spec\r\n var op = defaultPathOperation; // stroke\r\n\r\n switch (style) {\r\n case \"D\":\r\n case \"S\":\r\n op = \"S\"; // stroke\r\n break;\r\n case \"F\":\r\n op = \"f\"; // fill\r\n break;\r\n case \"FD\":\r\n case \"DF\":\r\n op = \"B\";\r\n break;\r\n case \"f\":\r\n case \"f*\":\r\n case \"B\":\r\n case \"B*\":\r\n /*\r\n Allow direct use of these PDF path-painting operators:\r\n - f fill using nonzero winding number rule\r\n - f* fill using even-odd rule\r\n - B fill then stroke with fill using non-zero winding number rule\r\n - B* fill then stroke with fill using even-odd rule\r\n */\r\n op = style;\r\n break;\r\n }\r\n return op;\r\n });\r\n\r\n /**\r\n * Close the current path. The PDF \"h\" operator.\r\n * @name close\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n var close = (API.close = function() {\r\n out(\"h\");\r\n return this;\r\n });\r\n\r\n /**\r\n * Stroke the path. The PDF \"S\" operator.\r\n * @name stroke\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.stroke = function() {\r\n out(\"S\");\r\n return this;\r\n };\r\n\r\n /**\r\n * Fill the current path using the nonzero winding number rule. If a pattern is provided, the path will be filled\r\n * with this pattern, otherwise with the current fill color. Equivalent to the PDF \"f\" operator.\r\n * @name fill\r\n * @function\r\n * @instance\r\n * @param {PatternData=} pattern If provided the path will be filled with this pattern\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.fill = function(pattern) {\r\n fillWithOptionalPattern(\"f\", pattern);\r\n return this;\r\n };\r\n\r\n /**\r\n * Fill the current path using the even-odd rule. The PDF f* operator.\r\n * @see API.fill\r\n * @name fillEvenOdd\r\n * @function\r\n * @instance\r\n * @param {PatternData=} pattern If provided the path will be filled with this pattern\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.fillEvenOdd = function(pattern) {\r\n fillWithOptionalPattern(\"f*\", pattern);\r\n return this;\r\n };\r\n\r\n /**\r\n * Fill using the nonzero winding number rule and then stroke the current Path. The PDF \"B\" operator.\r\n * @see API.fill\r\n * @name fillStroke\r\n * @function\r\n * @instance\r\n * @param {PatternData=} pattern If provided the path will be stroked with this pattern\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.fillStroke = function(pattern) {\r\n fillWithOptionalPattern(\"B\", pattern);\r\n return this;\r\n };\r\n\r\n /**\r\n * Fill using the even-odd rule and then stroke the current Path. The PDF \"B\" operator.\r\n * @see API.fill\r\n * @name fillStrokeEvenOdd\r\n * @function\r\n * @instance\r\n * @param {PatternData=} pattern If provided the path will be fill-stroked with this pattern\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.fillStrokeEvenOdd = function(pattern) {\r\n fillWithOptionalPattern(\"B*\", pattern);\r\n return this;\r\n };\r\n\r\n var fillWithOptionalPattern = function(style, pattern) {\r\n if (typeof pattern === \"object\") {\r\n fillWithPattern(pattern, style);\r\n } else {\r\n out(style);\r\n }\r\n };\r\n\r\n var putStyle = function(style) {\r\n if (\r\n style === null ||\r\n (apiMode === ApiMode.ADVANCED && style === undefined)\r\n ) {\r\n return;\r\n }\r\n\r\n style = getStyle(style);\r\n\r\n // stroking / filling / both the path\r\n out(style);\r\n };\r\n\r\n function cloneTilingPattern(patternKey, boundingBox, xStep, yStep, matrix) {\r\n var clone = new TilingPattern(\r\n boundingBox || this.boundingBox,\r\n xStep || this.xStep,\r\n yStep || this.yStep,\r\n this.gState,\r\n matrix || this.matrix\r\n );\r\n clone.stream = this.stream;\r\n var key = patternKey + \"$$\" + this.cloneIndex++ + \"$$\";\r\n addPattern(key, clone);\r\n return clone;\r\n }\r\n\r\n var fillWithPattern = function(patternData, style) {\r\n var patternId = patternMap[patternData.key];\r\n var pattern = patterns[patternId];\r\n\r\n if (pattern instanceof ShadingPattern) {\r\n out(\"q\");\r\n\r\n out(clipRuleFromStyle(style));\r\n\r\n if (pattern.gState) {\r\n API.setGState(pattern.gState);\r\n }\r\n out(patternData.matrix.toString() + \" cm\");\r\n out(\"/\" + patternId + \" sh\");\r\n out(\"Q\");\r\n } else if (pattern instanceof TilingPattern) {\r\n // pdf draws patterns starting at the bottom left corner and they are not affected by the global transformation,\r\n // so we must flip them\r\n var matrix = new Matrix(1, 0, 0, -1, 0, getPageHeight());\r\n\r\n if (patternData.matrix) {\r\n matrix = matrix.multiply(patternData.matrix || identityMatrix);\r\n // we cannot apply a matrix to the pattern on use so we must abuse the pattern matrix and create new instances\r\n // for each use\r\n patternId = cloneTilingPattern.call(\r\n pattern,\r\n patternData.key,\r\n patternData.boundingBox,\r\n patternData.xStep,\r\n patternData.yStep,\r\n matrix\r\n ).id;\r\n }\r\n\r\n out(\"q\");\r\n out(\"/Pattern cs\");\r\n out(\"/\" + patternId + \" scn\");\r\n\r\n if (pattern.gState) {\r\n API.setGState(pattern.gState);\r\n }\r\n\r\n out(style);\r\n out(\"Q\");\r\n }\r\n };\r\n\r\n var clipRuleFromStyle = function(style) {\r\n switch (style) {\r\n case \"f\":\r\n case \"F\":\r\n return \"W n\";\r\n case \"f*\":\r\n return \"W* n\";\r\n case \"B\":\r\n return \"W S\";\r\n case \"B*\":\r\n return \"W* S\";\r\n\r\n // these two are for compatibility reasons (in the past, calling any primitive method with a shading pattern\r\n // and \"n\"/\"S\" as style would still fill/fill and stroke the path)\r\n case \"S\":\r\n return \"W S\";\r\n case \"n\":\r\n return \"W n\";\r\n }\r\n };\r\n\r\n /**\r\n * Begin a new subpath by moving the current point to coordinates (x, y). The PDF \"m\" operator.\r\n * @param {number} x\r\n * @param {number} y\r\n * @name moveTo\r\n * @function\r\n * @instance\r\n * @memberof jsPDF#\r\n * @returns {jsPDF}\r\n */\r\n var moveTo = (API.moveTo = function(x, y) {\r\n out(hpf(scale(x)) + \" \" + hpf(transformScaleY(y)) + \" m\");\r\n return this;\r\n });\r\n\r\n /**\r\n * Append a straight line segment from the current point to the point (x, y). The PDF \"l\" operator.\r\n * @param {number} x\r\n * @param {number} y\r\n * @memberof jsPDF#\r\n * @name lineTo\r\n * @function\r\n * @instance\r\n * @memberof jsPDF#\r\n * @returns {jsPDF}\r\n */\r\n var lineTo = (API.lineTo = function(x, y) {\r\n out(hpf(scale(x)) + \" \" + hpf(transformScaleY(y)) + \" l\");\r\n return this;\r\n });\r\n\r\n /**\r\n * Append a cubic Bézier curve to the current path. The curve shall extend from the current point to the point\r\n * (x3, y3), using (x1, y1) and (x2, y2) as Bézier control points. The new current point shall be (x3, x3).\r\n * @param {number} x1\r\n * @param {number} y1\r\n * @param {number} x2\r\n * @param {number} y2\r\n * @param {number} x3\r\n * @param {number} y3\r\n * @memberof jsPDF#\r\n * @name curveTo\r\n * @function\r\n * @instance\r\n * @memberof jsPDF#\r\n * @returns {jsPDF}\r\n */\r\n var curveTo = (API.curveTo = function(x1, y1, x2, y2, x3, y3) {\r\n out(\r\n [\r\n hpf(scale(x1)),\r\n hpf(transformScaleY(y1)),\r\n hpf(scale(x2)),\r\n hpf(transformScaleY(y2)),\r\n hpf(scale(x3)),\r\n hpf(transformScaleY(y3)),\r\n \"c\"\r\n ].join(\" \")\r\n );\r\n return this;\r\n });\r\n\r\n /**\r\n * Draw a line on the current page.\r\n *\r\n * @name line\r\n * @function\r\n * @instance\r\n * @param {number} x1\r\n * @param {number} y1\r\n * @param {number} x2\r\n * @param {number} y2\r\n * @param {string} style A string specifying the painting style or null. Valid styles include: 'S' [default] - stroke, 'F' - fill, and 'DF' (or 'FD') - fill then stroke. A null value postpones setting the style so that a shape may be composed using multiple method calls. The last drawing method call used to define the shape should not have a null style argument. default: 'S'\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.__private__.line = API.line = function(x1, y1, x2, y2, style) {\r\n if (\r\n isNaN(x1) ||\r\n isNaN(y1) ||\r\n isNaN(x2) ||\r\n isNaN(y2) ||\r\n !isValidStyle(style)\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.line\");\r\n }\r\n if (apiMode === ApiMode.COMPAT) {\r\n return this.lines([[x2 - x1, y2 - y1]], x1, y1, [1, 1], style || \"S\");\r\n } else {\r\n return this.lines([[x2 - x1, y2 - y1]], x1, y1, [1, 1]).stroke();\r\n }\r\n };\r\n\r\n /**\r\n * @typedef {Object} PatternData\r\n * {Matrix|undefined} matrix\r\n * {Number|undefined} xStep\r\n * {Number|undefined} yStep\r\n * {Array.|undefined} boundingBox\r\n */\r\n\r\n /**\r\n * Adds series of curves (straight lines or cubic bezier curves) to canvas, starting at `x`, `y` coordinates.\r\n * All data points in `lines` are relative to last line origin.\r\n * `x`, `y` become x1,y1 for first line / curve in the set.\r\n * For lines you only need to specify [x2, y2] - (ending point) vector against x1, y1 starting point.\r\n * For bezier curves you need to specify [x2,y2,x3,y3,x4,y4] - vectors to control points 1, 2, ending point. All vectors are against the start of the curve - x1,y1.\r\n *\r\n * @example .lines([[2,2],[-2,2],[1,1,2,2,3,3],[2,1]], 212,110, [1,1], 'F', false) // line, line, bezier curve, line\r\n * @param {Array} lines Array of *vector* shifts as pairs (lines) or sextets (cubic bezier curves).\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} scale (Defaults to [1.0,1.0]) x,y Scaling factor for all vectors. Elements can be any floating number Sub-one makes drawing smaller. Over-one grows the drawing. Negative flips the direction.\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @param {Boolean=} closed If true, the path is closed with a straight line from the end of the last curve to the starting point.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name lines\r\n */\r\n API.__private__.lines = API.lines = function(\r\n lines,\r\n x,\r\n y,\r\n scale,\r\n style,\r\n closed\r\n ) {\r\n var scalex, scaley, i, l, leg, x2, y2, x3, y3, x4, y4, tmp;\r\n\r\n // Pre-August-2012 the order of arguments was function(x, y, lines, scale, style)\r\n // in effort to make all calls have similar signature like\r\n // function(content, coordinateX, coordinateY , miscellaneous)\r\n // this method had its args flipped.\r\n // code below allows backward compatibility with old arg order.\r\n if (typeof lines === \"number\") {\r\n tmp = y;\r\n y = x;\r\n x = lines;\r\n lines = tmp;\r\n }\r\n\r\n scale = scale || [1, 1];\r\n closed = closed || false;\r\n\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n !Array.isArray(lines) ||\r\n !Array.isArray(scale) ||\r\n !isValidStyle(style) ||\r\n typeof closed !== \"boolean\"\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.lines\");\r\n }\r\n\r\n // starting point\r\n moveTo(x, y);\r\n\r\n scalex = scale[0];\r\n scaley = scale[1];\r\n l = lines.length;\r\n //, x2, y2 // bezier only. In page default measurement \"units\", *after* scaling\r\n //, x3, y3 // bezier only. In page default measurement \"units\", *after* scaling\r\n // ending point for all, lines and bezier. . In page default measurement \"units\", *after* scaling\r\n x4 = x; // last / ending point = starting point for first item.\r\n y4 = y; // last / ending point = starting point for first item.\r\n\r\n for (i = 0; i < l; i++) {\r\n leg = lines[i];\r\n if (leg.length === 2) {\r\n // simple line\r\n x4 = leg[0] * scalex + x4; // here last x4 was prior ending point\r\n y4 = leg[1] * scaley + y4; // here last y4 was prior ending point\r\n lineTo(x4, y4);\r\n } else {\r\n // bezier curve\r\n x2 = leg[0] * scalex + x4; // here last x4 is prior ending point\r\n y2 = leg[1] * scaley + y4; // here last y4 is prior ending point\r\n x3 = leg[2] * scalex + x4; // here last x4 is prior ending point\r\n y3 = leg[3] * scaley + y4; // here last y4 is prior ending point\r\n x4 = leg[4] * scalex + x4; // here last x4 was prior ending point\r\n y4 = leg[5] * scaley + y4; // here last y4 was prior ending point\r\n curveTo(x2, y2, x3, y3, x4, y4);\r\n }\r\n }\r\n\r\n if (closed) {\r\n close();\r\n }\r\n\r\n putStyle(style);\r\n return this;\r\n };\r\n\r\n /**\r\n * Similar to {@link API.lines} but all coordinates are interpreted as absolute coordinates instead of relative.\r\n * @param {Array} lines An array of {op: operator, c: coordinates} object, where op is one of \"m\" (move to), \"l\" (line to)\r\n * \"c\" (cubic bezier curve) and \"h\" (close (sub)path)). c is an array of coordinates. \"m\" and \"l\" expect two, \"c\"\r\n * six and \"h\" an empty array (or undefined).\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name path\r\n */\r\n API.path = function(lines) {\r\n for (var i = 0; i < lines.length; i++) {\r\n var leg = lines[i];\r\n var coords = leg.c;\r\n switch (leg.op) {\r\n case \"m\":\r\n moveTo(coords[0], coords[1]);\r\n break;\r\n case \"l\":\r\n lineTo(coords[0], coords[1]);\r\n break;\r\n case \"c\":\r\n curveTo.apply(this, coords);\r\n break;\r\n case \"h\":\r\n close();\r\n break;\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds a rectangle to PDF.\r\n *\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} w Width (in units declared at inception of PDF document)\r\n * @param {number} h Height (in units declared at inception of PDF document)\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name rect\r\n */\r\n API.__private__.rect = API.rect = function(x, y, w, h, style) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h) || !isValidStyle(style)) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.rect\");\r\n }\r\n if (apiMode === ApiMode.COMPAT) {\r\n h = -h;\r\n }\r\n\r\n out(\r\n [\r\n hpf(scale(x)),\r\n hpf(transformScaleY(y)),\r\n hpf(scale(w)),\r\n hpf(scale(h)),\r\n \"re\"\r\n ].join(\" \")\r\n );\r\n\r\n putStyle(style);\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds a triangle to PDF.\r\n *\r\n * @param {number} x1 Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y1 Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} x2 Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y2 Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} x3 Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y3 Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name triangle\r\n */\r\n API.__private__.triangle = API.triangle = function(\r\n x1,\r\n y1,\r\n x2,\r\n y2,\r\n x3,\r\n y3,\r\n style\r\n ) {\r\n if (\r\n isNaN(x1) ||\r\n isNaN(y1) ||\r\n isNaN(x2) ||\r\n isNaN(y2) ||\r\n isNaN(x3) ||\r\n isNaN(y3) ||\r\n !isValidStyle(style)\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.triangle\");\r\n }\r\n this.lines(\r\n [\r\n [x2 - x1, y2 - y1], // vector to point 2\r\n [x3 - x2, y3 - y2], // vector to point 3\r\n [x1 - x3, y1 - y3] // closing vector back to point 1\r\n ],\r\n x1,\r\n y1, // start of path\r\n [1, 1],\r\n style,\r\n true\r\n );\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds a rectangle with rounded corners to PDF.\r\n *\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} w Width (in units declared at inception of PDF document)\r\n * @param {number} h Height (in units declared at inception of PDF document)\r\n * @param {number} rx Radius along x axis (in units declared at inception of PDF document)\r\n * @param {number} ry Radius along y axis (in units declared at inception of PDF document)\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name roundedRect\r\n */\r\n API.__private__.roundedRect = API.roundedRect = function(\r\n x,\r\n y,\r\n w,\r\n h,\r\n rx,\r\n ry,\r\n style\r\n ) {\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n isNaN(w) ||\r\n isNaN(h) ||\r\n isNaN(rx) ||\r\n isNaN(ry) ||\r\n !isValidStyle(style)\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.roundedRect\");\r\n }\r\n var MyArc = (4 / 3) * (Math.SQRT2 - 1);\r\n\r\n rx = Math.min(rx, w * 0.5);\r\n ry = Math.min(ry, h * 0.5);\r\n\r\n this.lines(\r\n [\r\n [w - 2 * rx, 0],\r\n [rx * MyArc, 0, rx, ry - ry * MyArc, rx, ry],\r\n [0, h - 2 * ry],\r\n [0, ry * MyArc, -(rx * MyArc), ry, -rx, ry],\r\n [-w + 2 * rx, 0],\r\n [-(rx * MyArc), 0, -rx, -(ry * MyArc), -rx, -ry],\r\n [0, -h + 2 * ry],\r\n [0, -(ry * MyArc), rx * MyArc, -ry, rx, -ry]\r\n ],\r\n x + rx,\r\n y, // start of path\r\n [1, 1],\r\n style,\r\n true\r\n );\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds an ellipse to PDF.\r\n *\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} rx Radius along x axis (in units declared at inception of PDF document)\r\n * @param {number} ry Radius along y axis (in units declared at inception of PDF document)\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name ellipse\r\n */\r\n API.__private__.ellipse = API.ellipse = function(x, y, rx, ry, style) {\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n isNaN(rx) ||\r\n isNaN(ry) ||\r\n !isValidStyle(style)\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.ellipse\");\r\n }\r\n var lx = (4 / 3) * (Math.SQRT2 - 1) * rx,\r\n ly = (4 / 3) * (Math.SQRT2 - 1) * ry;\r\n\r\n moveTo(x + rx, y);\r\n curveTo(x + rx, y - ly, x + lx, y - ry, x, y - ry);\r\n curveTo(x - lx, y - ry, x - rx, y - ly, x - rx, y);\r\n curveTo(x - rx, y + ly, x - lx, y + ry, x, y + ry);\r\n curveTo(x + lx, y + ry, x + rx, y + ly, x + rx, y);\r\n\r\n putStyle(style);\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds an circle to PDF.\r\n *\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} r Radius (in units declared at inception of PDF document)\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name circle\r\n */\r\n API.__private__.circle = API.circle = function(x, y, r, style) {\r\n if (isNaN(x) || isNaN(y) || isNaN(r) || !isValidStyle(style)) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.circle\");\r\n }\r\n return this.ellipse(x, y, r, r, style);\r\n };\r\n\r\n /**\r\n * Sets text font face, variant for upcoming text elements.\r\n * See output of jsPDF.getFontList() for possible font names, styles.\r\n *\r\n * @param {string} fontName Font name or family. Example: \"times\".\r\n * @param {string} fontStyle Font style or variant. Example: \"italic\".\r\n * @param {number | string} fontWeight Weight of the Font. Example: \"normal\" | 400\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setFont\r\n */\r\n API.setFont = function(fontName, fontStyle, fontWeight) {\r\n if (fontWeight) {\r\n fontStyle = combineFontStyleAndFontWeight(fontStyle, fontWeight);\r\n }\r\n activeFontKey = getFont(fontName, fontStyle, {\r\n disableWarning: false\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets text font face, variant for upcoming text elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {Object}\r\n * @memberof jsPDF#\r\n * @name getFont\r\n */\r\n var getFontEntry = (API.__private__.getFont = API.getFont = function() {\r\n return fonts[getFont.apply(API, arguments)];\r\n });\r\n\r\n /**\r\n * Returns an object - a tree of fontName to fontStyle relationships available to\r\n * active PDF document.\r\n *\r\n * @public\r\n * @function\r\n * @instance\r\n * @returns {Object} Like {'times':['normal', 'italic', ... ], 'arial':['normal', 'bold', ... ], ... }\r\n * @memberof jsPDF#\r\n * @name getFontList\r\n */\r\n API.__private__.getFontList = API.getFontList = function() {\r\n var list = {},\r\n fontName,\r\n fontStyle;\r\n\r\n for (fontName in fontmap) {\r\n if (fontmap.hasOwnProperty(fontName)) {\r\n list[fontName] = [];\r\n for (fontStyle in fontmap[fontName]) {\r\n if (fontmap[fontName].hasOwnProperty(fontStyle)) {\r\n list[fontName].push(fontStyle);\r\n }\r\n }\r\n }\r\n }\r\n return list;\r\n };\r\n\r\n /**\r\n * Add a custom font to the current instance.\r\n *\r\n * @param {string} postScriptName PDF specification full name for the font.\r\n * @param {string} id PDF-document-instance-specific label assinged to the font.\r\n * @param {string} fontStyle Style of the Font.\r\n * @param {number | string} fontWeight Weight of the Font.\r\n * @param {Object} encoding Encoding_name-to-Font_metrics_object mapping.\r\n * @function\r\n * @instance\r\n * @memberof jsPDF#\r\n * @name addFont\r\n * @returns {string} fontId\r\n */\r\n API.addFont = function(\r\n postScriptName,\r\n fontName,\r\n fontStyle,\r\n fontWeight,\r\n encoding\r\n ) {\r\n var encodingOptions = [\r\n \"StandardEncoding\",\r\n \"MacRomanEncoding\",\r\n \"Identity-H\",\r\n \"WinAnsiEncoding\"\r\n ];\r\n if (arguments[3] && encodingOptions.indexOf(arguments[3]) !== -1) {\r\n //IE 11 fix\r\n encoding = arguments[3];\r\n } else if (arguments[3] && encodingOptions.indexOf(arguments[3]) == -1) {\r\n fontStyle = combineFontStyleAndFontWeight(fontStyle, fontWeight);\r\n }\r\n encoding = encoding || \"Identity-H\";\r\n return addFont.call(this, postScriptName, fontName, fontStyle, encoding);\r\n };\r\n\r\n var lineWidth = options.lineWidth || 0.200025; // 2mm\r\n /**\r\n * Gets the line width, default: 0.200025.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {number} lineWidth\r\n * @memberof jsPDF#\r\n * @name getLineWidth\r\n */\r\n var getLineWidth = (API.__private__.getLineWidth = API.getLineWidth = function() {\r\n return lineWidth;\r\n });\r\n\r\n /**\r\n * Sets line width for upcoming lines.\r\n *\r\n * @param {number} width Line width (in units declared at inception of PDF document).\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineWidth\r\n */\r\n var setLineWidth = (API.__private__.setLineWidth = API.setLineWidth = function(\r\n width\r\n ) {\r\n lineWidth = width;\r\n out(hpf(scale(width)) + \" w\");\r\n return this;\r\n });\r\n\r\n /**\r\n * Sets the dash pattern for upcoming lines.\r\n *\r\n * To reset the settings simply call the method without any parameters.\r\n * @param {Array} dashArray An array containing 0-2 numbers. The first number sets the length of the\r\n * dashes, the second number the length of the gaps. If the second number is missing, the gaps are considered\r\n * to be as long as the dashes. An empty array means solid, unbroken lines.\r\n * @param {number} dashPhase The phase lines start with.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineDashPattern\r\n */\r\n API.__private__.setLineDash = jsPDF.API.setLineDash = jsPDF.API.setLineDashPattern = function(\r\n dashArray,\r\n dashPhase\r\n ) {\r\n dashArray = dashArray || [];\r\n dashPhase = dashPhase || 0;\r\n\r\n if (isNaN(dashPhase) || !Array.isArray(dashArray)) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.setLineDash\");\r\n }\r\n\r\n dashArray = dashArray\r\n .map(function(x) {\r\n return hpf(scale(x));\r\n })\r\n .join(\" \");\r\n dashPhase = hpf(scale(dashPhase));\r\n\r\n out(\"[\" + dashArray + \"] \" + dashPhase + \" d\");\r\n return this;\r\n };\r\n\r\n var lineHeightFactor;\r\n\r\n var getLineHeight = (API.__private__.getLineHeight = API.getLineHeight = function() {\r\n return activeFontSize * lineHeightFactor;\r\n });\r\n\r\n API.__private__.getLineHeight = API.getLineHeight = function() {\r\n return activeFontSize * lineHeightFactor;\r\n };\r\n\r\n /**\r\n * Sets the LineHeightFactor of proportion.\r\n *\r\n * @param {number} value LineHeightFactor value. Default: 1.15.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineHeightFactor\r\n */\r\n var setLineHeightFactor = (API.__private__.setLineHeightFactor = API.setLineHeightFactor = function(\r\n value\r\n ) {\r\n value = value || 1.15;\r\n if (typeof value === \"number\") {\r\n lineHeightFactor = value;\r\n }\r\n return this;\r\n });\r\n\r\n /**\r\n * Gets the LineHeightFactor, default: 1.15.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {number} lineHeightFactor\r\n * @memberof jsPDF#\r\n * @name getLineHeightFactor\r\n */\r\n var getLineHeightFactor = (API.__private__.getLineHeightFactor = API.getLineHeightFactor = function() {\r\n return lineHeightFactor;\r\n });\r\n\r\n setLineHeightFactor(options.lineHeight);\r\n\r\n var getHorizontalCoordinate = (API.__private__.getHorizontalCoordinate = function(\r\n value\r\n ) {\r\n return scale(value);\r\n });\r\n\r\n var getVerticalCoordinate = (API.__private__.getVerticalCoordinate = function(\r\n value\r\n ) {\r\n if (apiMode === ApiMode.ADVANCED) {\r\n return value;\r\n } else {\r\n var pageHeight =\r\n pagesContext[currentPage].mediaBox.topRightY -\r\n pagesContext[currentPage].mediaBox.bottomLeftY;\r\n return pageHeight - scale(value);\r\n }\r\n });\r\n\r\n var getHorizontalCoordinateString = (API.__private__.getHorizontalCoordinateString = API.getHorizontalCoordinateString = function(\r\n value\r\n ) {\r\n return hpf(getHorizontalCoordinate(value));\r\n });\r\n\r\n var getVerticalCoordinateString = (API.__private__.getVerticalCoordinateString = API.getVerticalCoordinateString = function(\r\n value\r\n ) {\r\n return hpf(getVerticalCoordinate(value));\r\n });\r\n\r\n var strokeColor = options.strokeColor || \"0 G\";\r\n\r\n /**\r\n * Gets the stroke color for upcoming elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {string} colorAsHex\r\n * @memberof jsPDF#\r\n * @name getDrawColor\r\n */\r\n API.__private__.getStrokeColor = API.getDrawColor = function() {\r\n return decodeColorString(strokeColor);\r\n };\r\n\r\n /**\r\n * Sets the stroke color for upcoming elements.\r\n *\r\n * Depending on the number of arguments given, Gray, RGB, or CMYK\r\n * color space is implied.\r\n *\r\n * When only ch1 is given, \"Gray\" color space is implied and it\r\n * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\r\n * if values are communicated as String types, or in range from 0 (black)\r\n * to 255 (white) if communicated as Number type.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\r\n * value must be in the range from 0.00 (minimum intensity) to to 1.00\r\n * (max intensity) if values are communicated as String types, or\r\n * from 0 (min intensity) to to 255 (max intensity) if values are communicated\r\n * as Number types.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\r\n * value must be a in the range from 0.00 (0% concentration) to to\r\n * 1.00 (100% concentration)\r\n *\r\n * Because JavaScript treats fixed point numbers badly (rounds to\r\n * floating point nearest to binary representation) it is highly advised to\r\n * communicate the fractional numbers as String types, not JavaScript Number type.\r\n *\r\n * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\r\n * @param {Number} ch2 Color channel value.\r\n * @param {Number} ch3 Color channel value.\r\n * @param {Number} ch4 Color channel value.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setDrawColor\r\n */\r\n API.__private__.setStrokeColor = API.setDrawColor = function(\r\n ch1,\r\n ch2,\r\n ch3,\r\n ch4\r\n ) {\r\n var options = {\r\n ch1: ch1,\r\n ch2: ch2,\r\n ch3: ch3,\r\n ch4: ch4,\r\n pdfColorType: \"draw\",\r\n precision: 2\r\n };\r\n\r\n strokeColor = encodeColorString(options);\r\n out(strokeColor);\r\n return this;\r\n };\r\n\r\n var fillColor = options.fillColor || \"0 g\";\r\n\r\n /**\r\n * Gets the fill color for upcoming elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {string} colorAsHex\r\n * @memberof jsPDF#\r\n * @name getFillColor\r\n */\r\n API.__private__.getFillColor = API.getFillColor = function() {\r\n return decodeColorString(fillColor);\r\n };\r\n\r\n /**\r\n * Sets the fill color for upcoming elements.\r\n *\r\n * Depending on the number of arguments given, Gray, RGB, or CMYK\r\n * color space is implied.\r\n *\r\n * When only ch1 is given, \"Gray\" color space is implied and it\r\n * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\r\n * if values are communicated as String types, or in range from 0 (black)\r\n * to 255 (white) if communicated as Number type.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\r\n * value must be in the range from 0.00 (minimum intensity) to to 1.00\r\n * (max intensity) if values are communicated as String types, or\r\n * from 0 (min intensity) to to 255 (max intensity) if values are communicated\r\n * as Number types.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\r\n * value must be a in the range from 0.00 (0% concentration) to to\r\n * 1.00 (100% concentration)\r\n *\r\n * Because JavaScript treats fixed point numbers badly (rounds to\r\n * floating point nearest to binary representation) it is highly advised to\r\n * communicate the fractional numbers as String types, not JavaScript Number type.\r\n *\r\n * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\r\n * @param {Number} ch2 Color channel value.\r\n * @param {Number} ch3 Color channel value.\r\n * @param {Number} ch4 Color channel value.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setFillColor\r\n */\r\n API.__private__.setFillColor = API.setFillColor = function(\r\n ch1,\r\n ch2,\r\n ch3,\r\n ch4\r\n ) {\r\n var options = {\r\n ch1: ch1,\r\n ch2: ch2,\r\n ch3: ch3,\r\n ch4: ch4,\r\n pdfColorType: \"fill\",\r\n precision: 2\r\n };\r\n\r\n fillColor = encodeColorString(options);\r\n out(fillColor);\r\n return this;\r\n };\r\n\r\n var textColor = options.textColor || \"0 g\";\r\n /**\r\n * Gets the text color for upcoming elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {string} colorAsHex\r\n * @memberof jsPDF#\r\n * @name getTextColor\r\n */\r\n var getTextColor = (API.__private__.getTextColor = API.getTextColor = function() {\r\n return decodeColorString(textColor);\r\n });\r\n /**\r\n * Sets the text color for upcoming elements.\r\n *\r\n * Depending on the number of arguments given, Gray, RGB, or CMYK\r\n * color space is implied.\r\n *\r\n * When only ch1 is given, \"Gray\" color space is implied and it\r\n * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\r\n * if values are communicated as String types, or in range from 0 (black)\r\n * to 255 (white) if communicated as Number type.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\r\n * value must be in the range from 0.00 (minimum intensity) to to 1.00\r\n * (max intensity) if values are communicated as String types, or\r\n * from 0 (min intensity) to to 255 (max intensity) if values are communicated\r\n * as Number types.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\r\n * value must be a in the range from 0.00 (0% concentration) to to\r\n * 1.00 (100% concentration)\r\n *\r\n * Because JavaScript treats fixed point numbers badly (rounds to\r\n * floating point nearest to binary representation) it is highly advised to\r\n * communicate the fractional numbers as String types, not JavaScript Number type.\r\n *\r\n * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\r\n * @param {Number} ch2 Color channel value.\r\n * @param {Number} ch3 Color channel value.\r\n * @param {Number} ch4 Color channel value.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setTextColor\r\n */\r\n API.__private__.setTextColor = API.setTextColor = function(\r\n ch1,\r\n ch2,\r\n ch3,\r\n ch4\r\n ) {\r\n var options = {\r\n ch1: ch1,\r\n ch2: ch2,\r\n ch3: ch3,\r\n ch4: ch4,\r\n pdfColorType: \"text\",\r\n precision: 3\r\n };\r\n textColor = encodeColorString(options);\r\n\r\n return this;\r\n };\r\n\r\n var activeCharSpace = options.charSpace;\r\n\r\n /**\r\n * Get global value of CharSpace.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {number} charSpace\r\n * @memberof jsPDF#\r\n * @name getCharSpace\r\n */\r\n var getCharSpace = (API.__private__.getCharSpace = API.getCharSpace = function() {\r\n return parseFloat(activeCharSpace || 0);\r\n });\r\n\r\n /**\r\n * Set global value of CharSpace.\r\n *\r\n * @param {number} charSpace\r\n * @function\r\n * @instance\r\n * @returns {jsPDF} jsPDF-instance\r\n * @memberof jsPDF#\r\n * @name setCharSpace\r\n */\r\n API.__private__.setCharSpace = API.setCharSpace = function(charSpace) {\r\n if (isNaN(charSpace)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.setCharSpace\");\r\n }\r\n activeCharSpace = charSpace;\r\n return this;\r\n };\r\n\r\n var lineCapID = 0;\r\n /**\r\n * Is an Object providing a mapping from human-readable to\r\n * integer flag values designating the varieties of line cap\r\n * and join styles.\r\n *\r\n * @memberof jsPDF#\r\n * @name CapJoinStyles\r\n */\r\n API.CapJoinStyles = {\r\n 0: 0,\r\n butt: 0,\r\n but: 0,\r\n miter: 0,\r\n 1: 1,\r\n round: 1,\r\n rounded: 1,\r\n circle: 1,\r\n 2: 2,\r\n projecting: 2,\r\n project: 2,\r\n square: 2,\r\n bevel: 2\r\n };\r\n\r\n /**\r\n * Sets the line cap styles.\r\n * See {jsPDF.CapJoinStyles} for variants.\r\n *\r\n * @param {String|Number} style A string or number identifying the type of line cap.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineCap\r\n */\r\n API.__private__.setLineCap = API.setLineCap = function(style) {\r\n var id = API.CapJoinStyles[style];\r\n if (id === undefined) {\r\n throw new Error(\r\n \"Line cap style of '\" +\r\n style +\r\n \"' is not recognized. See or extend .CapJoinStyles property for valid styles\"\r\n );\r\n }\r\n lineCapID = id;\r\n out(id + \" J\");\r\n\r\n return this;\r\n };\r\n\r\n var lineJoinID = 0;\r\n /**\r\n * Sets the line join styles.\r\n * See {jsPDF.CapJoinStyles} for variants.\r\n *\r\n * @param {String|Number} style A string or number identifying the type of line join.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineJoin\r\n */\r\n API.__private__.setLineJoin = API.setLineJoin = function(style) {\r\n var id = API.CapJoinStyles[style];\r\n if (id === undefined) {\r\n throw new Error(\r\n \"Line join style of '\" +\r\n style +\r\n \"' is not recognized. See or extend .CapJoinStyles property for valid styles\"\r\n );\r\n }\r\n lineJoinID = id;\r\n out(id + \" j\");\r\n\r\n return this;\r\n };\r\n\r\n var miterLimit;\r\n /**\r\n * Sets the miterLimit property, which effects the maximum miter length.\r\n *\r\n * @param {number} length The length of the miter\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineMiterLimit\r\n */\r\n API.__private__.setLineMiterLimit = API.__private__.setMiterLimit = API.setLineMiterLimit = API.setMiterLimit = function(\r\n length\r\n ) {\r\n length = length || 0;\r\n if (isNaN(length)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.setLineMiterLimit\");\r\n }\r\n out(hpf(scale(length)) + \" M\");\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * An object representing a pdf graphics state.\r\n * @class GState\r\n */\r\n\r\n /**\r\n *\r\n * @param parameters A parameter object that contains all properties this graphics state wants to set.\r\n * Supported are: opacity, stroke-opacity\r\n * @constructor\r\n */\r\n API.GState = GState;\r\n\r\n /**\r\n * Sets a either previously added {@link GState} (via {@link addGState}) or a new {@link GState}.\r\n * @param {String|GState} gState If type is string, a previously added GState is used, if type is GState\r\n * it will be added before use.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setGState\r\n */\r\n API.setGState = function(gState) {\r\n if (typeof gState === \"string\") {\r\n gState = gStates[gStatesMap[gState]];\r\n } else {\r\n gState = addGState(null, gState);\r\n }\r\n\r\n if (!gState.equals(activeGState)) {\r\n out(\"/\" + gState.id + \" gs\");\r\n activeGState = gState;\r\n }\r\n };\r\n\r\n /**\r\n * Adds a new Graphics State. Duplicates are automatically eliminated.\r\n * @param {String} key Might also be null, if no later reference to this gState is needed\r\n * @param {Object} gState The gState object\r\n */\r\n var addGState = function(key, gState) {\r\n // only add it if it is not already present (the keys provided by the user must be unique!)\r\n if (key && gStatesMap[key]) return;\r\n var duplicate = false;\r\n for (var s in gStates) {\r\n if (gStates.hasOwnProperty(s)) {\r\n if (gStates[s].equals(gState)) {\r\n duplicate = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (duplicate) {\r\n gState = gStates[s];\r\n } else {\r\n var gStateKey = \"GS\" + (Object.keys(gStates).length + 1).toString(10);\r\n gStates[gStateKey] = gState;\r\n gState.id = gStateKey;\r\n }\r\n\r\n // several user keys may point to the same GState object\r\n key && (gStatesMap[key] = gState.id);\r\n\r\n events.publish(\"addGState\", gState);\r\n\r\n return gState;\r\n };\r\n\r\n /**\r\n * Adds a new {@link GState} for later use. See {@link setGState}.\r\n * @param {String} key\r\n * @param {GState} gState\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n *\r\n * @memberof jsPDF#\r\n * @name addGState\r\n */\r\n API.addGState = function(key, gState) {\r\n addGState(key, gState);\r\n return this;\r\n };\r\n\r\n /**\r\n * Saves the current graphics state (\"pushes it on the stack\"). It can be restored by {@link restoreGraphicsState}\r\n * later. Here, the general pdf graphics state is meant, also including the current transformation matrix,\r\n * fill and stroke colors etc.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name saveGraphicsState\r\n */\r\n API.saveGraphicsState = function() {\r\n out(\"q\");\r\n // as we cannot set font key and size independently we must keep track of both\r\n fontStateStack.push({\r\n key: activeFontKey,\r\n size: activeFontSize,\r\n color: textColor\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * Restores a previously saved graphics state saved by {@link saveGraphicsState} (\"pops the stack\").\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name restoreGraphicsState\r\n */\r\n API.restoreGraphicsState = function() {\r\n out(\"Q\");\r\n\r\n // restore previous font state\r\n var fontState = fontStateStack.pop();\r\n activeFontKey = fontState.key;\r\n activeFontSize = fontState.size;\r\n textColor = fontState.color;\r\n\r\n activeGState = null;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Appends this matrix to the left of all previously applied matrices.\r\n *\r\n * @param {Matrix} matrix\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setCurrentTransformationMatrix\r\n */\r\n API.setCurrentTransformationMatrix = function(matrix) {\r\n out(matrix.toString() + \" cm\");\r\n return this;\r\n };\r\n\r\n /**\r\n * Inserts a debug comment into the generated pdf.\r\n * @function\r\n * @instance\r\n * @param {String} text\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name comment\r\n */\r\n API.comment = function(text) {\r\n out(\"#\" + text);\r\n return this;\r\n };\r\n\r\n /**\r\n * Point\r\n */\r\n var Point = function(x, y) {\r\n var _x = x || 0;\r\n Object.defineProperty(this, \"x\", {\r\n enumerable: true,\r\n get: function() {\r\n return _x;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _x = parseFloat(value);\r\n }\r\n }\r\n });\r\n\r\n var _y = y || 0;\r\n Object.defineProperty(this, \"y\", {\r\n enumerable: true,\r\n get: function() {\r\n return _y;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _y = parseFloat(value);\r\n }\r\n }\r\n });\r\n\r\n var _type = \"pt\";\r\n Object.defineProperty(this, \"type\", {\r\n enumerable: true,\r\n get: function() {\r\n return _type;\r\n },\r\n set: function(value) {\r\n _type = value.toString();\r\n }\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * Rectangle\r\n */\r\n var Rectangle = function(x, y, w, h) {\r\n Point.call(this, x, y);\r\n this.type = \"rect\";\r\n\r\n var _w = w || 0;\r\n Object.defineProperty(this, \"w\", {\r\n enumerable: true,\r\n get: function() {\r\n return _w;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _w = parseFloat(value);\r\n }\r\n }\r\n });\r\n\r\n var _h = h || 0;\r\n Object.defineProperty(this, \"h\", {\r\n enumerable: true,\r\n get: function() {\r\n return _h;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _h = parseFloat(value);\r\n }\r\n }\r\n });\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * FormObject/RenderTarget\r\n */\r\n\r\n var RenderTarget = function() {\r\n this.page = page;\r\n this.currentPage = currentPage;\r\n this.pages = pages.slice(0);\r\n this.pagesContext = pagesContext.slice(0);\r\n this.x = pageX;\r\n this.y = pageY;\r\n this.matrix = pageMatrix;\r\n this.width = getPageWidth(currentPage);\r\n this.height = getPageHeight(currentPage);\r\n this.outputDestination = outputDestination;\r\n\r\n this.id = \"\"; // set by endFormObject()\r\n this.objectNumber = -1; // will be set by putXObject()\r\n };\r\n\r\n RenderTarget.prototype.restore = function() {\r\n page = this.page;\r\n currentPage = this.currentPage;\r\n pagesContext = this.pagesContext;\r\n pages = this.pages;\r\n pageX = this.x;\r\n pageY = this.y;\r\n pageMatrix = this.matrix;\r\n setPageWidth(currentPage, this.width);\r\n setPageHeight(currentPage, this.height);\r\n outputDestination = this.outputDestination;\r\n };\r\n\r\n var beginNewRenderTarget = function(x, y, width, height, matrix) {\r\n // save current state\r\n renderTargetStack.push(new RenderTarget());\r\n\r\n // clear pages\r\n page = currentPage = 0;\r\n pages = [];\r\n pageX = x;\r\n pageY = y;\r\n\r\n pageMatrix = matrix;\r\n\r\n beginPage([width, height]);\r\n };\r\n\r\n var endFormObject = function(key) {\r\n // only add it if it is not already present (the keys provided by the user must be unique!)\r\n if (renderTargetMap[key]) {\r\n renderTargetStack.pop().restore();\r\n return;\r\n }\r\n\r\n // save the created xObject\r\n var newXObject = new RenderTarget();\r\n\r\n var xObjectId = \"Xo\" + (Object.keys(renderTargets).length + 1).toString(10);\r\n newXObject.id = xObjectId;\r\n\r\n renderTargetMap[key] = xObjectId;\r\n renderTargets[xObjectId] = newXObject;\r\n\r\n events.publish(\"addFormObject\", newXObject);\r\n\r\n // restore state from stack\r\n renderTargetStack.pop().restore();\r\n };\r\n\r\n /**\r\n * Starts a new pdf form object, which means that all consequent draw calls target a new independent object\r\n * until {@link endFormObject} is called. The created object can be referenced and drawn later using\r\n * {@link doFormObject}. Nested form objects are possible.\r\n * x, y, width, height set the bounding box that is used to clip the content.\r\n *\r\n * @param {number} x\r\n * @param {number} y\r\n * @param {number} width\r\n * @param {number} height\r\n * @param {Matrix} matrix The matrix that will be applied to convert the form objects coordinate system to\r\n * the parent's.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name beginFormObject\r\n */\r\n API.beginFormObject = function(x, y, width, height, matrix) {\r\n // The user can set the output target to a new form object. Nested form objects are possible.\r\n // Currently, they use the resource dictionary of the surrounding stream. This should be changed, as\r\n // the PDF-Spec states:\r\n // \"In PDF 1.2 and later versions, form XObjects may be independent of the content streams in which\r\n // they appear, and this is strongly recommended although not requiredIn PDF 1.2 and later versions,\r\n // form XObjects may be independent of the content streams in which they appear, and this is strongly\r\n // recommended although not required\"\r\n beginNewRenderTarget(x, y, width, height, matrix);\r\n return this;\r\n };\r\n\r\n /**\r\n * Completes and saves the form object.\r\n * @param {String} key The key by which this form object can be referenced.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name endFormObject\r\n */\r\n API.endFormObject = function(key) {\r\n endFormObject(key);\r\n return this;\r\n };\r\n\r\n /**\r\n * Draws the specified form object by referencing to the respective pdf XObject created with\r\n * {@link API.beginFormObject} and {@link endFormObject}.\r\n * The location is determined by matrix.\r\n *\r\n * @param {String} key The key to the form object.\r\n * @param {Matrix} matrix The matrix applied before drawing the form object.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name doFormObject\r\n */\r\n API.doFormObject = function(key, matrix) {\r\n var xObject = renderTargets[renderTargetMap[key]];\r\n out(\"q\");\r\n out(matrix.toString() + \" cm\");\r\n out(\"/\" + xObject.id + \" Do\");\r\n out(\"Q\");\r\n return this;\r\n };\r\n\r\n /**\r\n * Returns the form object specified by key.\r\n * @param key {String}\r\n * @returns {{x: number, y: number, width: number, height: number, matrix: Matrix}}\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name getFormObject\r\n */\r\n API.getFormObject = function(key) {\r\n var xObject = renderTargets[renderTargetMap[key]];\r\n return {\r\n x: xObject.x,\r\n y: xObject.y,\r\n width: xObject.width,\r\n height: xObject.height,\r\n matrix: xObject.matrix\r\n };\r\n };\r\n\r\n /**\r\n * Saves as PDF document. An alias of jsPDF.output('save', 'filename.pdf').\r\n * Uses FileSaver.js-method saveAs.\r\n *\r\n * @memberof jsPDF#\r\n * @name save\r\n * @function\r\n * @instance\r\n * @param {string} filename The filename including extension.\r\n * @param {Object} options An Object with additional options, possible options: 'returnPromise'.\r\n * @returns {jsPDF|Promise} jsPDF-instance */\r\n API.save = function(filename, options) {\r\n filename = filename || \"generated.pdf\";\r\n\r\n options = options || {};\r\n options.returnPromise = options.returnPromise || false;\r\n\r\n if (options.returnPromise === false) {\r\n saveAs(getBlob(buildDocument()), filename);\r\n if (typeof saveAs.unload === \"function\") {\r\n if (globalObject.setTimeout) {\r\n setTimeout(saveAs.unload, 911);\r\n }\r\n }\r\n return this;\r\n } else {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n var result = saveAs(getBlob(buildDocument()), filename);\r\n if (typeof saveAs.unload === \"function\") {\r\n if (globalObject.setTimeout) {\r\n setTimeout(saveAs.unload, 911);\r\n }\r\n }\r\n resolve(result);\r\n } catch (e) {\r\n reject(e.message);\r\n }\r\n });\r\n }\r\n\r\n };\r\n\r\n // applying plugins (more methods) ON TOP of built-in API.\r\n // this is intentional as we allow plugins to override\r\n // built-ins\r\n for (var plugin in jsPDF.API) {\r\n if (jsPDF.API.hasOwnProperty(plugin)) {\r\n if (plugin === \"events\" && jsPDF.API.events.length) {\r\n (function(events, newEvents) {\r\n // jsPDF.API.events is a JS Array of Arrays\r\n // where each Array is a pair of event name, handler\r\n // Events were added by plugins to the jsPDF instantiator.\r\n // These are always added to the new instance and some ran\r\n // during instantiation.\r\n var eventname, handler_and_args, i;\r\n\r\n for (i = newEvents.length - 1; i !== -1; i--) {\r\n // subscribe takes 3 args: 'topic', function, runonce_flag\r\n // if undefined, runonce is false.\r\n // users can attach callback directly,\r\n // or they can attach an array with [callback, runonce_flag]\r\n // that's what the \"apply\" magic is for below.\r\n eventname = newEvents[i][0];\r\n handler_and_args = newEvents[i][1];\r\n events.subscribe.apply(\r\n events,\r\n [eventname].concat(\r\n typeof handler_and_args === \"function\"\r\n ? [handler_and_args]\r\n : handler_and_args\r\n )\r\n );\r\n }\r\n })(events, jsPDF.API.events);\r\n } else {\r\n API[plugin] = jsPDF.API[plugin];\r\n }\r\n }\r\n }\r\n\r\n var getPageWidth = (API.getPageWidth = function(pageNumber) {\r\n pageNumber = pageNumber || currentPage;\r\n return (\r\n (pagesContext[pageNumber].mediaBox.topRightX -\r\n pagesContext[pageNumber].mediaBox.bottomLeftX) /\r\n scaleFactor\r\n );\r\n });\r\n\r\n var setPageWidth = (API.setPageWidth = function(pageNumber, value) {\r\n pagesContext[pageNumber].mediaBox.topRightX =\r\n value * scaleFactor + pagesContext[pageNumber].mediaBox.bottomLeftX;\r\n });\r\n\r\n var getPageHeight = (API.getPageHeight = function(pageNumber) {\r\n pageNumber = pageNumber || currentPage;\r\n return (\r\n (pagesContext[pageNumber].mediaBox.topRightY -\r\n pagesContext[pageNumber].mediaBox.bottomLeftY) /\r\n scaleFactor\r\n );\r\n });\r\n\r\n var setPageHeight = (API.setPageHeight = function(pageNumber, value) {\r\n pagesContext[pageNumber].mediaBox.topRightY =\r\n value * scaleFactor + pagesContext[pageNumber].mediaBox.bottomLeftY;\r\n });\r\n\r\n /**\r\n * Object exposing internal API to plugins\r\n * @public\r\n * @ignore\r\n */\r\n API.internal = {\r\n pdfEscape: pdfEscape,\r\n getStyle: getStyle,\r\n getFont: getFontEntry,\r\n getFontSize: getFontSize,\r\n getCharSpace: getCharSpace,\r\n getTextColor: getTextColor,\r\n getLineHeight: getLineHeight,\r\n getLineHeightFactor: getLineHeightFactor,\r\n getLineWidth: getLineWidth,\r\n write: write,\r\n getHorizontalCoordinate: getHorizontalCoordinate,\r\n getVerticalCoordinate: getVerticalCoordinate,\r\n getCoordinateString: getHorizontalCoordinateString,\r\n getVerticalCoordinateString: getVerticalCoordinateString,\r\n collections: {},\r\n newObject: newObject,\r\n newAdditionalObject: newAdditionalObject,\r\n newObjectDeferred: newObjectDeferred,\r\n newObjectDeferredBegin: newObjectDeferredBegin,\r\n getFilters: getFilters,\r\n putStream: putStream,\r\n events: events,\r\n scaleFactor: scaleFactor,\r\n pageSize: {\r\n getWidth: function() {\r\n return getPageWidth(currentPage);\r\n },\r\n setWidth: function(value) {\r\n setPageWidth(currentPage, value);\r\n },\r\n getHeight: function() {\r\n return getPageHeight(currentPage);\r\n },\r\n setHeight: function(value) {\r\n setPageHeight(currentPage, value);\r\n }\r\n },\r\n encryptionOptions: encryptionOptions,\r\n encryption: encryption,\r\n getEncryptor: getEncryptor,\r\n output: output,\r\n getNumberOfPages: getNumberOfPages,\r\n pages: pages,\r\n out: out,\r\n f2: f2,\r\n f3: f3,\r\n getPageInfo: getPageInfo,\r\n getPageInfoByObjId: getPageInfoByObjId,\r\n getCurrentPageInfo: getCurrentPageInfo,\r\n getPDFVersion: getPdfVersion,\r\n Point: Point,\r\n Rectangle: Rectangle,\r\n Matrix: Matrix,\r\n hasHotfix: hasHotfix //Expose the hasHotfix check so plugins can also check them.\r\n };\r\n\r\n Object.defineProperty(API.internal.pageSize, \"width\", {\r\n get: function() {\r\n return getPageWidth(currentPage);\r\n },\r\n set: function(value) {\r\n setPageWidth(currentPage, value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(API.internal.pageSize, \"height\", {\r\n get: function() {\r\n return getPageHeight(currentPage);\r\n },\r\n set: function(value) {\r\n setPageHeight(currentPage, value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n\r\n //////////////////////////////////////////////////////\r\n // continuing initialization of jsPDF Document object\r\n //////////////////////////////////////////////////////\r\n // Add the first page automatically\r\n addFonts.call(API, standardFonts);\r\n activeFontKey = \"F1\";\r\n _addPage(format, orientation);\r\n\r\n events.publish(\"initialized\");\r\n return API;\r\n}\r\n\r\n/**\r\n * jsPDF.API is a STATIC property of jsPDF class.\r\n * jsPDF.API is an object you can add methods and properties to.\r\n * The methods / properties you add will show up in new jsPDF objects.\r\n *\r\n * One property is prepopulated. It is the 'events' Object. Plugin authors can add topics,\r\n * callbacks to this object. These will be reassigned to all new instances of jsPDF.\r\n *\r\n * @static\r\n * @public\r\n * @memberof jsPDF#\r\n * @name API\r\n *\r\n * @example\r\n * jsPDF.API.mymethod = function(){\r\n * // 'this' will be ref to internal API object. see jsPDF source\r\n * // , so you can refer to built-in methods like so:\r\n * // this.line(....)\r\n * // this.text(....)\r\n * }\r\n * var pdfdoc = new jsPDF()\r\n * pdfdoc.mymethod() // <- !!!!!!\r\n */\r\njsPDF.API = {\r\n events: []\r\n};\r\n/**\r\n * The version of jsPDF.\r\n * @name version\r\n * @type {string}\r\n * @memberof jsPDF#\r\n */\r\njsPDF.version = \"0.0.0\";\r\n\r\nexport { jsPDF, ShadingPattern, TilingPattern, GState };\r\nexport default jsPDF;\r\n","/* global jsPDF */\n/**\n * @license\n * Copyright (c) 2016 Alexander Weidt,\n * https://github.com/BiggA94\n *\n * Licensed under the MIT License. http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF AcroForm Plugin\n * @module AcroForm\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\nvar jsPDFAPI = jsPDF.API;\nvar scaleFactor = 1;\n\nvar pdfEscape = function(value) {\n return value\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\(/g, \"\\\\(\")\n .replace(/\\)/g, \"\\\\)\");\n};\nvar pdfUnescape = function(value) {\n return value\n .replace(/\\\\\\\\/g, \"\\\\\")\n .replace(/\\\\\\(/g, \"(\")\n .replace(/\\\\\\)/g, \")\");\n};\n\nvar f2 = function(number) {\n return number.toFixed(2); // Ie, %.2f\n};\n\nvar f5 = function(number) {\n return number.toFixed(5); // Ie, %.2f\n};\n\njsPDFAPI.__acroform__ = {};\nvar inherit = function(child, parent) {\n child.prototype = Object.create(parent.prototype);\n child.prototype.constructor = child;\n};\n\nvar scale = function(x) {\n return x * scaleFactor;\n};\n\nvar createFormXObject = function(formObject) {\n var xobj = new AcroFormXObject();\n var height = AcroFormAppearance.internal.getHeight(formObject) || 0;\n var width = AcroFormAppearance.internal.getWidth(formObject) || 0;\n xobj.BBox = [0, 0, Number(f2(width)), Number(f2(height))];\n return xobj;\n};\n\n/**\n * Bit-Operations\n */\nvar setBit = (jsPDFAPI.__acroform__.setBit = function(number, bitPosition) {\n number = number || 0;\n bitPosition = bitPosition || 0;\n\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.setBit\"\n );\n }\n var bitMask = 1 << bitPosition;\n\n number |= bitMask;\n\n return number;\n});\n\nvar clearBit = (jsPDFAPI.__acroform__.clearBit = function(number, bitPosition) {\n number = number || 0;\n bitPosition = bitPosition || 0;\n\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.clearBit\"\n );\n }\n var bitMask = 1 << bitPosition;\n\n number &= ~bitMask;\n\n return number;\n});\n\nvar getBit = (jsPDFAPI.__acroform__.getBit = function(number, bitPosition) {\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.getBit\"\n );\n }\n return (number & (1 << bitPosition)) === 0 ? 0 : 1;\n});\n\n/*\n * Ff starts counting the bit position at 1 and not like javascript at 0\n */\nvar getBitForPdf = (jsPDFAPI.__acroform__.getBitForPdf = function(\n number,\n bitPosition\n) {\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.getBitForPdf\"\n );\n }\n return getBit(number, bitPosition - 1);\n});\n\nvar setBitForPdf = (jsPDFAPI.__acroform__.setBitForPdf = function(\n number,\n bitPosition\n) {\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.setBitForPdf\"\n );\n }\n return setBit(number, bitPosition - 1);\n});\n\nvar clearBitForPdf = (jsPDFAPI.__acroform__.clearBitForPdf = function(\n number,\n bitPosition\n) {\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.clearBitForPdf\"\n );\n }\n return clearBit(number, bitPosition - 1);\n});\n\nvar calculateCoordinates = (jsPDFAPI.__acroform__.calculateCoordinates = function(\n args,\n scope\n) {\n var getHorizontalCoordinate = scope.internal.getHorizontalCoordinate;\n var getVerticalCoordinate = scope.internal.getVerticalCoordinate;\n var x = args[0];\n var y = args[1];\n var w = args[2];\n var h = args[3];\n\n var coordinates = {};\n\n coordinates.lowerLeft_X = getHorizontalCoordinate(x) || 0;\n coordinates.lowerLeft_Y = getVerticalCoordinate(y + h) || 0;\n coordinates.upperRight_X = getHorizontalCoordinate(x + w) || 0;\n coordinates.upperRight_Y = getVerticalCoordinate(y) || 0;\n\n return [\n Number(f2(coordinates.lowerLeft_X)),\n Number(f2(coordinates.lowerLeft_Y)),\n Number(f2(coordinates.upperRight_X)),\n Number(f2(coordinates.upperRight_Y))\n ];\n});\n\nvar calculateAppearanceStream = function(formObject) {\n if (formObject.appearanceStreamContent) {\n return formObject.appearanceStreamContent;\n }\n\n if (!formObject.V && !formObject.DV) {\n return;\n }\n\n // else calculate it\n\n var stream = [];\n var text = formObject._V || formObject.DV;\n var calcRes = calculateX(formObject, text);\n var fontKey = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n ).id;\n\n //PDF 32000-1:2008, page 444\n stream.push(\"/Tx BMC\");\n stream.push(\"q\");\n stream.push(\"BT\"); // Begin Text\n stream.push(formObject.scope.__private__.encodeColorString(formObject.color));\n stream.push(\"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf\");\n stream.push(\"1 0 0 1 0 0 Tm\"); // Transformation Matrix\n stream.push(calcRes.text);\n stream.push(\"ET\"); // End Text\n stream.push(\"Q\");\n stream.push(\"EMC\");\n\n var appearanceStreamContent = createFormXObject(formObject);\n appearanceStreamContent.scope = formObject.scope;\n appearanceStreamContent.stream = stream.join(\"\\n\");\n return appearanceStreamContent;\n};\n\nvar calculateX = function(formObject, text) {\n var maxFontSize =\n formObject.fontSize === 0 ? formObject.maxFontSize : formObject.fontSize;\n var returnValue = {\n text: \"\",\n fontSize: \"\"\n };\n // Remove Brackets\n text = text.substr(0, 1) == \"(\" ? text.substr(1) : text;\n text =\n text.substr(text.length - 1) == \")\"\n ? text.substr(0, text.length - 1)\n : text;\n // split into array of words\n var textSplit = text.split(\" \");\n if (formObject.multiline) {\n textSplit = textSplit.map(word => word.split(\"\\n\"));\n } else {\n textSplit = textSplit.map(word => [word]);\n }\n\n var fontSize = maxFontSize; // The Starting fontSize (The Maximum)\n var lineSpacing = 2;\n var borderPadding = 2;\n\n var height = AcroFormAppearance.internal.getHeight(formObject) || 0;\n height = height < 0 ? -height : height;\n var width = AcroFormAppearance.internal.getWidth(formObject) || 0;\n width = width < 0 ? -width : width;\n\n var isSmallerThanWidth = function(i, lastLine, fontSize) {\n if (i + 1 < textSplit.length) {\n var tmp = lastLine + \" \" + textSplit[i + 1][0];\n var TextWidth = calculateFontSpace(tmp, formObject, fontSize).width;\n var FieldWidth = width - 2 * borderPadding;\n return TextWidth <= FieldWidth;\n } else {\n return false;\n }\n };\n\n fontSize++;\n FontSize: while (fontSize > 0) {\n text = \"\";\n fontSize--;\n var textHeight = calculateFontSpace(\"3\", formObject, fontSize).height;\n var startY = formObject.multiline\n ? height - fontSize\n : (height - textHeight) / 2;\n startY += lineSpacing;\n var startX;\n\n var lastY = startY;\n var firstWordInLine = 0,\n lastWordInLine = 0;\n var lastLength;\n var currWord = 0;\n\n if (fontSize <= 0) {\n // In case, the Text doesn't fit at all\n fontSize = 12;\n text = \"(...) Tj\\n\";\n text +=\n \"% Width of Text: \" +\n calculateFontSpace(text, formObject, fontSize).width +\n \", FieldWidth:\" +\n width +\n \"\\n\";\n break;\n }\n\n var lastLine = \"\";\n var lineCount = 0;\n Line: for (var i = 0; i < textSplit.length; i++) {\n if (textSplit.hasOwnProperty(i)) {\n let isWithNewLine = false;\n if (textSplit[i].length !== 1 && currWord !== textSplit[i].length - 1) {\n if (\n (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n height\n ) {\n continue FontSize;\n }\n\n lastLine += textSplit[i][currWord];\n isWithNewLine = true;\n lastWordInLine = i;\n i--;\n } else {\n lastLine += textSplit[i][currWord] + \" \";\n lastLine =\n lastLine.substr(lastLine.length - 1) == \" \"\n ? lastLine.substr(0, lastLine.length - 1)\n : lastLine;\n var key = parseInt(i);\n var nextLineIsSmaller = isSmallerThanWidth(key, lastLine, fontSize);\n var isLastWord = i >= textSplit.length - 1;\n\n if (nextLineIsSmaller && !isLastWord) {\n lastLine += \" \";\n currWord = 0;\n continue; // Line\n } else if (!nextLineIsSmaller && !isLastWord) {\n if (!formObject.multiline) {\n continue FontSize;\n } else {\n if (\n (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n height\n ) {\n // If the Text is higher than the\n // FieldObject\n continue FontSize;\n }\n lastWordInLine = key;\n // go on\n }\n } else if (isLastWord) {\n lastWordInLine = key;\n } else {\n if (\n formObject.multiline &&\n (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n height\n ) {\n // If the Text is higher than the FieldObject\n continue FontSize;\n }\n }\n }\n // Remove last blank\n\n var line = \"\";\n\n for (var x = firstWordInLine; x <= lastWordInLine; x++) {\n var currLine = textSplit[x];\n if (formObject.multiline) {\n if (x === lastWordInLine) {\n line += currLine[currWord] + \" \";\n currWord = (currWord + 1) % currLine.length;\n continue;\n }\n if (x === firstWordInLine) {\n line += currLine[currLine.length - 1] + \" \";\n continue;\n }\n }\n line += currLine[0] + \" \";\n }\n\n // Remove last blank\n line =\n line.substr(line.length - 1) == \" \"\n ? line.substr(0, line.length - 1)\n : line;\n // lastLength -= blankSpace.width;\n lastLength = calculateFontSpace(line, formObject, fontSize).width;\n\n // Calculate startX\n switch (formObject.textAlign) {\n case \"right\":\n startX = width - lastLength - borderPadding;\n break;\n case \"center\":\n startX = (width - lastLength) / 2;\n break;\n case \"left\":\n default:\n startX = borderPadding;\n break;\n }\n text += f2(startX) + \" \" + f2(lastY) + \" Td\\n\";\n text += \"(\" + pdfEscape(line) + \") Tj\\n\";\n // reset X in PDF\n text += -f2(startX) + \" 0 Td\\n\";\n\n // After a Line, adjust y position\n lastY = -(fontSize + lineSpacing);\n\n // Reset for next iteration step\n lastLength = 0;\n firstWordInLine = isWithNewLine ? lastWordInLine : lastWordInLine + 1;\n lineCount++;\n\n lastLine = \"\";\n continue Line;\n }\n }\n break;\n }\n\n returnValue.text = text;\n returnValue.fontSize = fontSize;\n\n return returnValue;\n};\n\n/**\n * Small workaround for calculating the TextMetric approximately.\n *\n * @param text\n * @param fontsize\n * @returns {TextMetrics} (Has Height and Width)\n */\nvar calculateFontSpace = function(text, formObject, fontSize) {\n var font = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n );\n var width =\n formObject.scope.getStringUnitWidth(text, {\n font: font,\n fontSize: parseFloat(fontSize),\n charSpace: 0\n }) * parseFloat(fontSize);\n var height =\n formObject.scope.getStringUnitWidth(\"3\", {\n font: font,\n fontSize: parseFloat(fontSize),\n charSpace: 0\n }) *\n parseFloat(fontSize) *\n 1.5;\n return { height: height, width: width };\n};\n\nvar acroformPluginTemplate = {\n fields: [],\n xForms: [],\n /**\n * acroFormDictionaryRoot contains information about the AcroForm\n * Dictionary 0: The Event-Token, the AcroFormDictionaryCallback has\n * 1: The Object ID of the Root\n */\n acroFormDictionaryRoot: null,\n /**\n * After the PDF gets evaluated, the reference to the root has to be\n * reset, this indicates, whether the root has already been printed\n * out\n */\n printedOut: false,\n internal: null,\n isInitialized: false\n};\n\nvar annotReferenceCallback = function(scope) {\n //set objId to undefined and force it to get a new objId on buildDocument\n scope.internal.acroformPlugin.acroFormDictionaryRoot.objId = undefined;\n var fields = scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields;\n for (var i in fields) {\n if (fields.hasOwnProperty(i)) {\n var formObject = fields[i];\n //set objId to undefined and force it to get a new objId on buildDocument\n formObject.objId = undefined;\n // add Annot Reference!\n if (formObject.hasAnnotation) {\n // If theres an Annotation Widget in the Form Object, put the\n // Reference in the /Annot array\n createAnnotationReference(formObject, scope);\n }\n }\n }\n};\n\nvar putForm = function(formObject) {\n if (formObject.scope.internal.acroformPlugin.printedOut) {\n formObject.scope.internal.acroformPlugin.printedOut = false;\n formObject.scope.internal.acroformPlugin.acroFormDictionaryRoot = null;\n }\n formObject.scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(\n formObject\n );\n};\n/**\n * Create the Reference to the widgetAnnotation, so that it gets referenced\n * in the Annot[] int the+ (Requires the Annotation Plugin)\n */\nvar createAnnotationReference = function(object, scope) {\n var options = {\n type: \"reference\",\n object: object\n };\n var findEntry = function(entry) {\n return entry.type === options.type && entry.object === options.object;\n };\n if (\n scope.internal\n .getPageInfo(object.page)\n .pageContext.annotations.find(findEntry) === undefined\n ) {\n scope.internal\n .getPageInfo(object.page)\n .pageContext.annotations.push(options);\n }\n};\n\n// Callbacks\n\nvar putCatalogCallback = function(scope) {\n // Put reference to AcroForm to DocumentCatalog\n if (\n typeof scope.internal.acroformPlugin.acroFormDictionaryRoot !== \"undefined\"\n ) {\n // for safety, shouldn't normally be the case\n scope.internal.write(\n \"/AcroForm \" +\n scope.internal.acroformPlugin.acroFormDictionaryRoot.objId +\n \" \" +\n 0 +\n \" R\"\n );\n } else {\n throw new Error(\"putCatalogCallback: Root missing.\");\n }\n};\n\n/**\n * Adds /Acroform X 0 R to Document Catalog, and creates the AcroForm\n * Dictionary\n */\nvar AcroFormDictionaryCallback = function(scope) {\n // Remove event\n scope.internal.events.unsubscribe(\n scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID\n );\n delete scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID;\n scope.internal.acroformPlugin.printedOut = true;\n};\n\n/**\n * Creates the single Fields and writes them into the Document\n *\n * If fieldArray is set, use the fields that are inside it instead of the\n * fields from the AcroRoot (for the FormXObjects...)\n */\nvar createFieldCallback = function(fieldArray, scope) {\n var standardFields = !fieldArray;\n\n if (!fieldArray) {\n // in case there is no fieldArray specified, we want to print out\n // the Fields of the AcroForm\n // Print out Root\n scope.internal.newObjectDeferredBegin(\n scope.internal.acroformPlugin.acroFormDictionaryRoot.objId,\n true\n );\n scope.internal.acroformPlugin.acroFormDictionaryRoot.putStream();\n }\n\n fieldArray =\n fieldArray || scope.internal.acroformPlugin.acroFormDictionaryRoot.Kids;\n\n for (var i in fieldArray) {\n if (fieldArray.hasOwnProperty(i)) {\n var fieldObject = fieldArray[i];\n var keyValueList = [];\n var oldRect = fieldObject.Rect;\n\n if (fieldObject.Rect) {\n fieldObject.Rect = calculateCoordinates(fieldObject.Rect, scope);\n }\n\n // Start Writing the Object\n scope.internal.newObjectDeferredBegin(fieldObject.objId, true);\n\n fieldObject.DA = AcroFormAppearance.createDefaultAppearanceStream(\n fieldObject\n );\n\n if (\n typeof fieldObject === \"object\" &&\n typeof fieldObject.getKeyValueListForStream === \"function\"\n ) {\n keyValueList = fieldObject.getKeyValueListForStream();\n }\n\n fieldObject.Rect = oldRect;\n\n if (\n fieldObject.hasAppearanceStream &&\n !fieldObject.appearanceStreamContent\n ) {\n // Calculate Appearance\n var appearance = calculateAppearanceStream(fieldObject);\n keyValueList.push({ key: \"AP\", value: \"<>\" });\n\n scope.internal.acroformPlugin.xForms.push(appearance);\n }\n\n // Assume AppearanceStreamContent is a Array with N,R,D (at least\n // one of them!)\n if (fieldObject.appearanceStreamContent) {\n var appearanceStreamString = \"\";\n // Iterate over N,R and D\n for (var k in fieldObject.appearanceStreamContent) {\n if (fieldObject.appearanceStreamContent.hasOwnProperty(k)) {\n var value = fieldObject.appearanceStreamContent[k];\n appearanceStreamString += \"/\" + k + \" \";\n appearanceStreamString += \"<<\";\n if (Object.keys(value).length >= 1 || Array.isArray(value)) {\n // appearanceStream is an Array or Object!\n for (var i in value) {\n if (value.hasOwnProperty(i)) {\n var obj = value[i];\n if (typeof obj === \"function\") {\n // if Function is referenced, call it in order\n // to get the FormXObject\n obj = obj.call(scope, fieldObject);\n }\n appearanceStreamString += \"/\" + i + \" \" + obj + \" \";\n\n // In case the XForm is already used, e.g. OffState\n // of CheckBoxes, don't add it\n if (!(scope.internal.acroformPlugin.xForms.indexOf(obj) >= 0))\n scope.internal.acroformPlugin.xForms.push(obj);\n }\n }\n } else {\n obj = value;\n if (typeof obj === \"function\") {\n // if Function is referenced, call it in order to\n // get the FormXObject\n obj = obj.call(scope, fieldObject);\n }\n appearanceStreamString += \"/\" + i + \" \" + obj;\n if (!(scope.internal.acroformPlugin.xForms.indexOf(obj) >= 0))\n scope.internal.acroformPlugin.xForms.push(obj);\n }\n appearanceStreamString += \">>\";\n }\n }\n\n // appearance stream is a normal Object..\n keyValueList.push({\n key: \"AP\",\n value: \"<<\\n\" + appearanceStreamString + \">>\"\n });\n }\n\n scope.internal.putStream({\n additionalKeyValues: keyValueList,\n objectId: fieldObject.objId\n });\n\n scope.internal.out(\"endobj\");\n }\n }\n if (standardFields) {\n createXFormObjectCallback(scope.internal.acroformPlugin.xForms, scope);\n }\n};\n\nvar createXFormObjectCallback = function(fieldArray, scope) {\n for (var i in fieldArray) {\n if (fieldArray.hasOwnProperty(i)) {\n var key = i;\n var fieldObject = fieldArray[i];\n // Start Writing the Object\n scope.internal.newObjectDeferredBegin(fieldObject.objId, true);\n\n if (\n typeof fieldObject === \"object\" &&\n typeof fieldObject.putStream === \"function\"\n ) {\n fieldObject.putStream();\n }\n delete fieldArray[key];\n }\n }\n};\n\nvar initializeAcroForm = function(scope, formObject) {\n formObject.scope = scope;\n if (\n scope.internal !== undefined &&\n (scope.internal.acroformPlugin === undefined ||\n scope.internal.acroformPlugin.isInitialized === false)\n ) {\n AcroFormField.FieldNum = 0;\n scope.internal.acroformPlugin = JSON.parse(\n JSON.stringify(acroformPluginTemplate)\n );\n if (scope.internal.acroformPlugin.acroFormDictionaryRoot) {\n throw new Error(\"Exception while creating AcroformDictionary\");\n }\n scaleFactor = scope.internal.scaleFactor;\n // The Object Number of the AcroForm Dictionary\n scope.internal.acroformPlugin.acroFormDictionaryRoot = new AcroFormDictionary();\n scope.internal.acroformPlugin.acroFormDictionaryRoot.scope = scope;\n\n // add Callback for creating the AcroForm Dictionary\n scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID = scope.internal.events.subscribe(\n \"postPutResources\",\n function() {\n AcroFormDictionaryCallback(scope);\n }\n );\n\n scope.internal.events.subscribe(\"buildDocument\", function() {\n annotReferenceCallback(scope);\n }); // buildDocument\n\n // Register event, that is triggered when the DocumentCatalog is\n // written, in order to add /AcroForm\n\n scope.internal.events.subscribe(\"putCatalog\", function() {\n putCatalogCallback(scope);\n });\n\n // Register event, that creates all Fields\n scope.internal.events.subscribe(\"postPutPages\", function(fieldArray) {\n createFieldCallback(fieldArray, scope);\n });\n\n scope.internal.acroformPlugin.isInitialized = true;\n }\n};\n\n//PDF 32000-1:2008, page 26, 7.3.6\nvar arrayToPdfArray = (jsPDFAPI.__acroform__.arrayToPdfArray = function(\n array,\n objId,\n scope\n) {\n var encryptor = function(data) {\n return data;\n };\n if (Array.isArray(array)) {\n var content = \"[\";\n for (var i = 0; i < array.length; i++) {\n if (i !== 0) {\n content += \" \";\n }\n switch (typeof array[i]) {\n case \"boolean\":\n case \"number\":\n case \"object\":\n content += array[i].toString();\n break;\n case \"string\":\n if (array[i].substr(0, 1) !== \"/\") {\n if (typeof objId !== \"undefined\" && scope)\n encryptor = scope.internal.getEncryptor(objId);\n content += \"(\" + pdfEscape(encryptor(array[i].toString())) + \")\";\n } else {\n content += array[i].toString();\n }\n break;\n }\n }\n content += \"]\";\n return content;\n }\n throw new Error(\n \"Invalid argument passed to jsPDF.__acroform__.arrayToPdfArray\"\n );\n});\nfunction getMatches(string, regex, index) {\n index || (index = 1); // default to the first capturing group\n var matches = [];\n var match;\n while ((match = regex.exec(string))) {\n matches.push(match[index]);\n }\n return matches;\n}\nvar pdfArrayToStringArray = function(array) {\n var result = [];\n if (typeof array === \"string\") {\n result = getMatches(array, /\\((.*?)\\)/g);\n }\n return result;\n};\n\nvar toPdfString = function(string, objId, scope) {\n var encryptor = function(data) {\n return data;\n };\n if (typeof objId !== \"undefined\" && scope)\n encryptor = scope.internal.getEncryptor(objId);\n string = string || \"\";\n string.toString();\n string = \"(\" + pdfEscape(encryptor(string)) + \")\";\n return string;\n};\n\n// ##########################\n// Classes\n// ##########################\n\n/**\n * @class AcroFormPDFObject\n * @classdesc A AcroFormPDFObject\n */\nvar AcroFormPDFObject = function() {\n this._objId = undefined;\n this._scope = undefined;\n\n /**\n * @name AcroFormPDFObject#objId\n * @type {any}\n */\n Object.defineProperty(this, \"objId\", {\n get: function() {\n if (typeof this._objId === \"undefined\") {\n if (typeof this.scope === \"undefined\") {\n return undefined;\n }\n this._objId = this.scope.internal.newObjectDeferred();\n }\n return this._objId;\n },\n set: function(value) {\n this._objId = value;\n }\n });\n Object.defineProperty(this, \"scope\", {\n value: this._scope,\n writable: true\n });\n};\n\n/**\n * @function AcroFormPDFObject.toString\n */\nAcroFormPDFObject.prototype.toString = function() {\n return this.objId + \" 0 R\";\n};\n\nAcroFormPDFObject.prototype.putStream = function() {\n var keyValueList = this.getKeyValueListForStream();\n this.scope.internal.putStream({\n data: this.stream,\n additionalKeyValues: keyValueList,\n objectId: this.objId\n });\n this.scope.internal.out(\"endobj\");\n};\n\n/**\n * Returns an key-value-List of all non-configurable Variables from the Object\n *\n * @name getKeyValueListForStream\n * @returns {string}\n */\nAcroFormPDFObject.prototype.getKeyValueListForStream = function() {\n var keyValueList = [];\n var keys = Object.getOwnPropertyNames(this).filter(function(key) {\n return (\n key != \"content\" &&\n key != \"appearanceStreamContent\" &&\n key != \"scope\" &&\n key != \"objId\" &&\n key.substring(0, 1) != \"_\"\n );\n });\n\n for (var i in keys) {\n if (Object.getOwnPropertyDescriptor(this, keys[i]).configurable === false) {\n var key = keys[i];\n var value = this[key];\n\n if (value) {\n if (Array.isArray(value)) {\n keyValueList.push({\n key: key,\n value: arrayToPdfArray(value, this.objId, this.scope)\n });\n } else if (value instanceof AcroFormPDFObject) {\n // In case it is a reference to another PDFObject,\n // take the reference number\n value.scope = this.scope;\n keyValueList.push({ key: key, value: value.objId + \" 0 R\" });\n } else if (typeof value !== \"function\") {\n keyValueList.push({ key: key, value: value });\n }\n }\n }\n }\n return keyValueList;\n};\n\nvar AcroFormXObject = function() {\n AcroFormPDFObject.call(this);\n\n Object.defineProperty(this, \"Type\", {\n value: \"/XObject\",\n configurable: false,\n writable: true\n });\n\n Object.defineProperty(this, \"Subtype\", {\n value: \"/Form\",\n configurable: false,\n writable: true\n });\n\n Object.defineProperty(this, \"FormType\", {\n value: 1,\n configurable: false,\n writable: true\n });\n\n var _BBox = [];\n Object.defineProperty(this, \"BBox\", {\n configurable: false,\n get: function() {\n return _BBox;\n },\n set: function(value) {\n _BBox = value;\n }\n });\n\n Object.defineProperty(this, \"Resources\", {\n value: \"2 0 R\",\n configurable: false,\n writable: true\n });\n\n var _stream;\n Object.defineProperty(this, \"stream\", {\n enumerable: false,\n configurable: true,\n set: function(value) {\n _stream = value.trim();\n },\n get: function() {\n if (_stream) {\n return _stream;\n } else {\n return null;\n }\n }\n });\n};\n\ninherit(AcroFormXObject, AcroFormPDFObject);\n\nvar AcroFormDictionary = function() {\n AcroFormPDFObject.call(this);\n\n var _Kids = [];\n\n Object.defineProperty(this, \"Kids\", {\n enumerable: false,\n configurable: true,\n get: function() {\n if (_Kids.length > 0) {\n return _Kids;\n } else {\n return undefined;\n }\n }\n });\n Object.defineProperty(this, \"Fields\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _Kids;\n }\n });\n\n // Default Appearance\n var _DA;\n Object.defineProperty(this, \"DA\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (!_DA) {\n return undefined;\n }\n var encryptor = function(data) {\n return data;\n };\n if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n return \"(\" + pdfEscape(encryptor(_DA)) + \")\";\n },\n set: function(value) {\n _DA = value;\n }\n });\n};\n\ninherit(AcroFormDictionary, AcroFormPDFObject);\n\n/**\n * The Field Object contains the Variables, that every Field needs\n *\n * @class AcroFormField\n * @classdesc An AcroForm FieldObject\n */\nvar AcroFormField = function() {\n AcroFormPDFObject.call(this);\n\n //Annotation-Flag See Table 165\n var _F = 4;\n Object.defineProperty(this, \"F\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _F;\n },\n set: function(value) {\n if (!isNaN(value)) {\n _F = value;\n } else {\n throw new Error(\n 'Invalid value \"' + value + '\" for attribute F supplied.'\n );\n }\n }\n });\n\n /**\n * (PDF 1.2) If set, print the annotation when the page is printed. If clear, never print the annotation, regardless of wether is is displayed on the screen.\n * NOTE 2 This can be useful for annotations representing interactive pushbuttons, which would serve no meaningful purpose on the printed page.\n *\n * @name AcroFormField#showWhenPrinted\n * @default true\n * @type {boolean}\n */\n Object.defineProperty(this, \"showWhenPrinted\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(_F, 3));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.F = setBitForPdf(_F, 3);\n } else {\n this.F = clearBitForPdf(_F, 3);\n }\n }\n });\n\n var _Ff = 0;\n Object.defineProperty(this, \"Ff\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _Ff;\n },\n set: function(value) {\n if (!isNaN(value)) {\n _Ff = value;\n } else {\n throw new Error(\n 'Invalid value \"' + value + '\" for attribute Ff supplied.'\n );\n }\n }\n });\n\n var _Rect = [];\n Object.defineProperty(this, \"Rect\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (_Rect.length === 0) {\n return undefined;\n }\n return _Rect;\n },\n set: function(value) {\n if (typeof value !== \"undefined\") {\n _Rect = value;\n } else {\n _Rect = [];\n }\n }\n });\n\n /**\n * The x-position of the field.\n *\n * @name AcroFormField#x\n * @default null\n * @type {number}\n */\n Object.defineProperty(this, \"x\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_Rect || isNaN(_Rect[0])) {\n return 0;\n }\n return _Rect[0];\n },\n set: function(value) {\n _Rect[0] = value;\n }\n });\n\n /**\n * The y-position of the field.\n *\n * @name AcroFormField#y\n * @default null\n * @type {number}\n */\n Object.defineProperty(this, \"y\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_Rect || isNaN(_Rect[1])) {\n return 0;\n }\n return _Rect[1];\n },\n set: function(value) {\n _Rect[1] = value;\n }\n });\n\n /**\n * The width of the field.\n *\n * @name AcroFormField#width\n * @default null\n * @type {number}\n */\n Object.defineProperty(this, \"width\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_Rect || isNaN(_Rect[2])) {\n return 0;\n }\n return _Rect[2];\n },\n set: function(value) {\n _Rect[2] = value;\n }\n });\n\n /**\n * The height of the field.\n *\n * @name AcroFormField#height\n * @default null\n * @type {number}\n */\n Object.defineProperty(this, \"height\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_Rect || isNaN(_Rect[3])) {\n return 0;\n }\n return _Rect[3];\n },\n set: function(value) {\n _Rect[3] = value;\n }\n });\n\n var _FT = \"\";\n Object.defineProperty(this, \"FT\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return _FT;\n },\n set: function(value) {\n switch (value) {\n case \"/Btn\":\n case \"/Tx\":\n case \"/Ch\":\n case \"/Sig\":\n _FT = value;\n break;\n default:\n throw new Error(\n 'Invalid value \"' + value + '\" for attribute FT supplied.'\n );\n }\n }\n });\n\n var _T = null;\n\n Object.defineProperty(this, \"T\", {\n enumerable: true,\n configurable: false,\n get: function() {\n if (!_T || _T.length < 1) {\n // In case of a Child from a Radio´Group, you don't need a FieldName\n if (this instanceof AcroFormChildClass) {\n return undefined;\n }\n _T = \"FieldObject\" + AcroFormField.FieldNum++;\n }\n var encryptor = function(data) {\n return data;\n };\n if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n return \"(\" + pdfEscape(encryptor(_T)) + \")\";\n },\n set: function(value) {\n _T = value.toString();\n }\n });\n\n /**\n * (Optional) The partial field name (see 12.7.3.2, “Field Names”).\n *\n * @name AcroFormField#fieldName\n * @default null\n * @type {string}\n */\n Object.defineProperty(this, \"fieldName\", {\n configurable: true,\n enumerable: true,\n get: function() {\n return _T;\n },\n set: function(value) {\n _T = value;\n }\n });\n\n var _fontName = \"helvetica\";\n /**\n * The fontName of the font to be used.\n *\n * @name AcroFormField#fontName\n * @default 'helvetica'\n * @type {string}\n */\n Object.defineProperty(this, \"fontName\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _fontName;\n },\n set: function(value) {\n _fontName = value;\n }\n });\n\n var _fontStyle = \"normal\";\n /**\n * The fontStyle of the font to be used.\n *\n * @name AcroFormField#fontStyle\n * @default 'normal'\n * @type {string}\n */\n Object.defineProperty(this, \"fontStyle\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _fontStyle;\n },\n set: function(value) {\n _fontStyle = value;\n }\n });\n\n var _fontSize = 0;\n /**\n * The fontSize of the font to be used.\n *\n * @name AcroFormField#fontSize\n * @default 0 (for auto)\n * @type {number}\n */\n Object.defineProperty(this, \"fontSize\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _fontSize;\n },\n set: function(value) {\n _fontSize = value;\n }\n });\n\n var _maxFontSize = undefined;\n /**\n * The maximum fontSize of the font to be used.\n *\n * @name AcroFormField#maxFontSize\n * @default 0 (for auto)\n * @type {number}\n */\n Object.defineProperty(this, \"maxFontSize\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (_maxFontSize === undefined) {\n // use the old default value here - the value is some kind of random as it depends on the scaleFactor (user unit)\n // (\"50\" is transformed to the \"user space\" but then used in \"pdf space\")\n return 50 / scaleFactor;\n } else {\n return _maxFontSize;\n }\n },\n set: function(value) {\n _maxFontSize = value;\n }\n });\n\n var _color = \"black\";\n /**\n * The color of the text\n *\n * @name AcroFormField#color\n * @default 'black'\n * @type {string|rgba}\n */\n Object.defineProperty(this, \"color\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _color;\n },\n set: function(value) {\n _color = value;\n }\n });\n\n var _DA = \"/F1 0 Tf 0 g\";\n // Defines the default appearance (Needed for variable Text)\n Object.defineProperty(this, \"DA\", {\n enumerable: true,\n configurable: false,\n get: function() {\n if (\n !_DA ||\n this instanceof AcroFormChildClass ||\n this instanceof AcroFormTextField\n ) {\n return undefined;\n }\n return toPdfString(_DA, this.objId, this.scope);\n },\n set: function(value) {\n value = value.toString();\n _DA = value;\n }\n });\n\n var _DV = null;\n Object.defineProperty(this, \"DV\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (!_DV) {\n return undefined;\n }\n if (this instanceof AcroFormButton === false) {\n return toPdfString(_DV, this.objId, this.scope);\n }\n return _DV;\n },\n set: function(value) {\n value = value.toString();\n if (this instanceof AcroFormButton === false) {\n if (value.substr(0, 1) === \"(\") {\n _DV = pdfUnescape(value.substr(1, value.length - 2));\n } else {\n _DV = pdfUnescape(value);\n }\n } else {\n _DV = value;\n }\n }\n });\n\n /**\n * (Optional; inheritable) The default value to which the field reverts when a reset-form action is executed (see 12.7.5.3, “Reset-Form Action”). The format of this value is the same as that of value.\n *\n * @name AcroFormField#defaultValue\n * @default null\n * @type {any}\n */\n Object.defineProperty(this, \"defaultValue\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (this instanceof AcroFormButton === true) {\n return pdfUnescape(_DV.substr(1, _DV.length - 1));\n } else {\n return _DV;\n }\n },\n set: function(value) {\n value = value.toString();\n if (this instanceof AcroFormButton === true) {\n _DV = \"/\" + value;\n } else {\n _DV = value;\n }\n }\n });\n\n var _V = null;\n Object.defineProperty(this, \"_V\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (!_V) {\n return undefined;\n }\n return _V;\n },\n set: function(value) {\n this.V = value;\n }\n });\n Object.defineProperty(this, \"V\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (!_V) {\n return undefined;\n }\n if (this instanceof AcroFormButton === false) {\n return toPdfString(_V, this.objId, this.scope);\n }\n return _V;\n },\n set: function(value) {\n value = value.toString();\n if (this instanceof AcroFormButton === false) {\n if (value.substr(0, 1) === \"(\") {\n _V = pdfUnescape(value.substr(1, value.length - 2));\n } else {\n _V = pdfUnescape(value);\n }\n } else {\n _V = value;\n }\n }\n });\n\n /**\n * (Optional; inheritable) The field’s value, whose format varies depending on the field type. See the descriptions of individual field types for further information.\n *\n * @name AcroFormField#value\n * @default null\n * @type {any}\n */\n Object.defineProperty(this, \"value\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (this instanceof AcroFormButton === true) {\n return pdfUnescape(_V.substr(1, _V.length - 1));\n } else {\n return _V;\n }\n },\n set: function(value) {\n value = value.toString();\n if (this instanceof AcroFormButton === true) {\n _V = \"/\" + value;\n } else {\n _V = value;\n }\n }\n });\n\n /**\n * Check if field has annotations\n *\n * @name AcroFormField#hasAnnotation\n * @readonly\n * @type {boolean}\n */\n Object.defineProperty(this, \"hasAnnotation\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return this.Rect;\n }\n });\n\n Object.defineProperty(this, \"Type\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return this.hasAnnotation ? \"/Annot\" : null;\n }\n });\n\n Object.defineProperty(this, \"Subtype\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return this.hasAnnotation ? \"/Widget\" : null;\n }\n });\n\n var _hasAppearanceStream = false;\n /**\n * true if field has an appearanceStream\n *\n * @name AcroFormField#hasAppearanceStream\n * @readonly\n * @type {boolean}\n */\n Object.defineProperty(this, \"hasAppearanceStream\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _hasAppearanceStream;\n },\n set: function(value) {\n value = Boolean(value);\n _hasAppearanceStream = value;\n }\n });\n\n /**\n * The page on which the AcroFormField is placed\n *\n * @name AcroFormField#page\n * @type {number}\n */\n var _page;\n Object.defineProperty(this, \"page\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_page) {\n return undefined;\n }\n return _page;\n },\n set: function(value) {\n _page = value;\n }\n });\n\n /**\n * If set, the user may not change the value of the field. Any associated widget annotations will not interact with the user; that is, they will not respond to mouse clicks or change their appearance in response to mouse motions. This flag is useful for fields whose values are computed or imported from a database.\n *\n * @name AcroFormField#readOnly\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"readOnly\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 1));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 1);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 1);\n }\n }\n });\n\n /**\n * If set, the field shall have a value at the time it is exported by a submitform action (see 12.7.5.2, “Submit-Form Action”).\n *\n * @name AcroFormField#required\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"required\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 2));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 2);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 2);\n }\n }\n });\n\n /**\n * If set, the field shall not be exported by a submit-form action (see 12.7.5.2, “Submit-Form Action”)\n *\n * @name AcroFormField#noExport\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"noExport\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 3));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 3);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 3);\n }\n }\n });\n\n var _Q = null;\n Object.defineProperty(this, \"Q\", {\n enumerable: true,\n configurable: false,\n get: function() {\n if (_Q === null) {\n return undefined;\n }\n return _Q;\n },\n set: function(value) {\n if ([0, 1, 2].indexOf(value) !== -1) {\n _Q = value;\n } else {\n throw new Error(\n 'Invalid value \"' + value + '\" for attribute Q supplied.'\n );\n }\n }\n });\n\n /**\n * (Optional; inheritable) A code specifying the form of quadding (justification) that shall be used in displaying the text:\n * 'left', 'center', 'right'\n *\n * @name AcroFormField#textAlign\n * @default 'left'\n * @type {string}\n */\n Object.defineProperty(this, \"textAlign\", {\n get: function() {\n var result;\n switch (_Q) {\n case 0:\n default:\n result = \"left\";\n break;\n case 1:\n result = \"center\";\n break;\n case 2:\n result = \"right\";\n break;\n }\n return result;\n },\n configurable: true,\n enumerable: true,\n set: function(value) {\n switch (value) {\n case \"right\":\n case 2:\n _Q = 2;\n break;\n case \"center\":\n case 1:\n _Q = 1;\n break;\n case \"left\":\n case 0:\n default:\n _Q = 0;\n }\n }\n });\n};\n\ninherit(AcroFormField, AcroFormPDFObject);\n\n/**\n * @class AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormChoiceField = function() {\n AcroFormField.call(this);\n // Field Type = Choice Field\n this.FT = \"/Ch\";\n // options\n this.V = \"()\";\n\n this.fontName = \"zapfdingbats\";\n // Top Index\n var _TI = 0;\n\n Object.defineProperty(this, \"TI\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return _TI;\n },\n set: function(value) {\n _TI = value;\n }\n });\n\n /**\n * (Optional) For scrollable list boxes, the top index (the index in the Opt array of the first option visible in the list). Default value: 0.\n *\n * @name AcroFormChoiceField#topIndex\n * @default 0\n * @type {number}\n */\n Object.defineProperty(this, \"topIndex\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _TI;\n },\n set: function(value) {\n _TI = value;\n }\n });\n\n var _Opt = [];\n Object.defineProperty(this, \"Opt\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return arrayToPdfArray(_Opt, this.objId, this.scope);\n },\n set: function(value) {\n _Opt = pdfArrayToStringArray(value);\n }\n });\n\n /**\n * @memberof AcroFormChoiceField\n * @name getOptions\n * @function\n * @instance\n * @returns {array} array of Options\n */\n this.getOptions = function() {\n return _Opt;\n };\n\n /**\n * @memberof AcroFormChoiceField\n * @name setOptions\n * @function\n * @instance\n * @param {array} value\n */\n this.setOptions = function(value) {\n _Opt = value;\n if (this.sort) {\n _Opt.sort();\n }\n };\n\n /**\n * @memberof AcroFormChoiceField\n * @name addOption\n * @function\n * @instance\n * @param {string} value\n */\n this.addOption = function(value) {\n value = value || \"\";\n value = value.toString();\n _Opt.push(value);\n if (this.sort) {\n _Opt.sort();\n }\n };\n\n /**\n * @memberof AcroFormChoiceField\n * @name removeOption\n * @function\n * @instance\n * @param {string} value\n * @param {boolean} allEntries (default: false)\n */\n this.removeOption = function(value, allEntries) {\n allEntries = allEntries || false;\n value = value || \"\";\n value = value.toString();\n\n while (_Opt.indexOf(value) !== -1) {\n _Opt.splice(_Opt.indexOf(value), 1);\n if (allEntries === false) {\n break;\n }\n }\n };\n\n /**\n * If set, the field is a combo box; if clear, the field is a list box.\n *\n * @name AcroFormChoiceField#combo\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"combo\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 18));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 18);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 18);\n }\n }\n });\n\n /**\n * If set, the combo box shall include an editable text box as well as a drop-down list; if clear, it shall include only a drop-down list. This flag shall be used only if the Combo flag is set.\n *\n * @name AcroFormChoiceField#edit\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"edit\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 19));\n },\n set: function(value) {\n //PDF 32000-1:2008, page 444\n if (this.combo === true) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 19);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 19);\n }\n }\n }\n });\n\n /**\n * If set, the field’s option items shall be sorted alphabetically. This flag is intended for use by writers, not by readers. Conforming readers shall display the options in the order in which they occur in the Opt array (see Table 231).\n *\n * @name AcroFormChoiceField#sort\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"sort\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 20));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 20);\n _Opt.sort();\n } else {\n this.Ff = clearBitForPdf(this.Ff, 20);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, more than one of the field’s option items may be selected simultaneously; if clear, at most one item shall be selected\n *\n * @name AcroFormChoiceField#multiSelect\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"multiSelect\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 22));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 22);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 22);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, text entered in the field shall not be spellchecked. This flag shall not be used unless the Combo and Edit flags are both set.\n *\n * @name AcroFormChoiceField#doNotSpellCheck\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"doNotSpellCheck\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 23));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 23);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 23);\n }\n }\n });\n\n /**\n * (PDF 1.5) If set, the new value shall be committed as soon as a selection is made (commonly with the pointing device). In this case, supplying a value for a field involves three actions: selecting the field for fill-in, selecting a choice for the fill-in value, and leaving that field, which finalizes or “commits” the data choice and triggers any actions associated with the entry or changing of this data. If this flag is on, then processing does not wait for leaving the field action to occur, but immediately proceeds to the third step.\n * This option enables applications to perform an action once a selection is made, without requiring the user to exit the field. If clear, the new value is not committed until the user exits the field.\n *\n * @name AcroFormChoiceField#commitOnSelChange\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"commitOnSelChange\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 27));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 27);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 27);\n }\n }\n });\n\n this.hasAppearanceStream = false;\n};\ninherit(AcroFormChoiceField, AcroFormField);\n\n/**\n * @class AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormListBox = function() {\n AcroFormChoiceField.call(this);\n this.fontName = \"helvetica\";\n\n //PDF 32000-1:2008, page 444\n this.combo = false;\n};\ninherit(AcroFormListBox, AcroFormChoiceField);\n\n/**\n * @class AcroFormComboBox\n * @extends AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormComboBox = function() {\n AcroFormListBox.call(this);\n this.combo = true;\n};\ninherit(AcroFormComboBox, AcroFormListBox);\n\n/**\n * @class AcroFormEditBox\n * @extends AcroFormComboBox\n * @extends AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormEditBox = function() {\n AcroFormComboBox.call(this);\n this.edit = true;\n};\ninherit(AcroFormEditBox, AcroFormComboBox);\n\n/**\n * @class AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormButton = function() {\n AcroFormField.call(this);\n this.FT = \"/Btn\";\n\n /**\n * (Radio buttons only) If set, exactly one radio button shall be selected at all times; selecting the currently selected button has no effect. If clear, clicking the selected button deselects it, leaving no button selected.\n *\n * @name AcroFormButton#noToggleToOff\n * @type {boolean}\n */\n Object.defineProperty(this, \"noToggleToOff\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 15));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 15);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 15);\n }\n }\n });\n\n /**\n * If set, the field is a set of radio buttons; if clear, the field is a checkbox. This flag may be set only if the Pushbutton flag is clear.\n *\n * @name AcroFormButton#radio\n * @type {boolean}\n */\n Object.defineProperty(this, \"radio\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 16));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 16);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 16);\n }\n }\n });\n\n /**\n * If set, the field is a pushbutton that does not retain a permanent value.\n *\n * @name AcroFormButton#pushButton\n * @type {boolean}\n */\n Object.defineProperty(this, \"pushButton\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 17));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 17);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 17);\n }\n }\n });\n\n /**\n * (PDF 1.5) If set, a group of radio buttons within a radio button field that use the same value for the on state will turn on and off in unison; that is if one is checked, they are all checked. If clear, the buttons are mutually exclusive (the same behavior as HTML radio buttons).\n *\n * @name AcroFormButton#radioIsUnison\n * @type {boolean}\n */\n Object.defineProperty(this, \"radioIsUnison\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 26));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 26);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 26);\n }\n }\n });\n\n var _MK = {};\n Object.defineProperty(this, \"MK\", {\n enumerable: false,\n configurable: false,\n get: function() {\n var encryptor = function(data) {\n return data;\n };\n if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n if (Object.keys(_MK).length !== 0) {\n var result = [];\n result.push(\"<<\");\n var key;\n for (key in _MK) {\n result.push(\"/\" + key + \" (\" + pdfEscape(encryptor(_MK[key])) + \")\");\n }\n result.push(\">>\");\n return result.join(\"\\n\");\n }\n return undefined;\n },\n set: function(value) {\n if (typeof value === \"object\") {\n _MK = value;\n }\n }\n });\n\n /**\n * From the PDF reference:\n * (Optional, button fields only) The widget annotation's normal caption which shall be displayed when it is not interacting with the user.\n * Unlike the remaining entries listed in this Table which apply only to widget annotations associated with pushbutton fields (see Pushbuttons in 12.7.4.2, \"Button Fields\"), the CA entry may be used with any type of button field, including check boxes (see Check Boxes in 12.7.4.2, \"Button Fields\") and radio buttons (Radio Buttons in 12.7.4.2, \"Button Fields\").\n *\n * - '8' = Cross,\n * - 'l' = Circle,\n * - '' = nothing\n * @name AcroFormButton#caption\n * @type {string}\n */\n Object.defineProperty(this, \"caption\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _MK.CA || \"\";\n },\n set: function(value) {\n if (typeof value === \"string\") {\n _MK.CA = value;\n }\n }\n });\n\n var _AS;\n Object.defineProperty(this, \"AS\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _AS;\n },\n set: function(value) {\n _AS = value;\n }\n });\n\n /**\n * (Required if the appearance dictionary AP contains one or more subdictionaries; PDF 1.2) The annotation's appearance state, which selects the applicable appearance stream from an appearance subdictionary (see Section 12.5.5, \"Appearance Streams\")\n *\n * @name AcroFormButton#appearanceState\n * @type {any}\n */\n Object.defineProperty(this, \"appearanceState\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _AS.substr(1, _AS.length - 1);\n },\n set: function(value) {\n _AS = \"/\" + value;\n }\n });\n};\ninherit(AcroFormButton, AcroFormField);\n\n/**\n * @class AcroFormPushButton\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormPushButton = function() {\n AcroFormButton.call(this);\n this.pushButton = true;\n};\ninherit(AcroFormPushButton, AcroFormButton);\n\n/**\n * @class AcroFormRadioButton\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormRadioButton = function() {\n AcroFormButton.call(this);\n this.radio = true;\n this.pushButton = false;\n\n var _Kids = [];\n Object.defineProperty(this, \"Kids\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return _Kids;\n },\n set: function(value) {\n if (typeof value !== \"undefined\") {\n _Kids = value;\n } else {\n _Kids = [];\n }\n }\n });\n};\ninherit(AcroFormRadioButton, AcroFormButton);\n\n/**\n * The Child class of a RadioButton (the radioGroup) -> The single Buttons\n *\n * @class AcroFormChildClass\n * @extends AcroFormField\n * @ignore\n */\nvar AcroFormChildClass = function() {\n AcroFormField.call(this);\n\n var _parent;\n Object.defineProperty(this, \"Parent\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _parent;\n },\n set: function(value) {\n _parent = value;\n }\n });\n\n var _optionName;\n Object.defineProperty(this, \"optionName\", {\n enumerable: false,\n configurable: true,\n get: function() {\n return _optionName;\n },\n set: function(value) {\n _optionName = value;\n }\n });\n\n var _MK = {};\n Object.defineProperty(this, \"MK\", {\n enumerable: false,\n configurable: false,\n get: function() {\n var encryptor = function(data) {\n return data;\n };\n if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n var result = [];\n result.push(\"<<\");\n var key;\n for (key in _MK) {\n result.push(\"/\" + key + \" (\" + pdfEscape(encryptor(_MK[key])) + \")\");\n }\n result.push(\">>\");\n return result.join(\"\\n\");\n },\n set: function(value) {\n if (typeof value === \"object\") {\n _MK = value;\n }\n }\n });\n\n /**\n * From the PDF reference:\n * (Optional, button fields only) The widget annotation's normal caption which shall be displayed when it is not interacting with the user.\n * Unlike the remaining entries listed in this Table which apply only to widget annotations associated with pushbutton fields (see Pushbuttons in 12.7.4.2, \"Button Fields\"), the CA entry may be used with any type of button field, including check boxes (see Check Boxes in 12.7.4.2, \"Button Fields\") and radio buttons (Radio Buttons in 12.7.4.2, \"Button Fields\").\n *\n * - '8' = Cross,\n * - 'l' = Circle,\n * - '' = nothing\n * @name AcroFormButton#caption\n * @type {string}\n */\n Object.defineProperty(this, \"caption\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _MK.CA || \"\";\n },\n set: function(value) {\n if (typeof value === \"string\") {\n _MK.CA = value;\n }\n }\n });\n\n var _AS;\n Object.defineProperty(this, \"AS\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _AS;\n },\n set: function(value) {\n _AS = value;\n }\n });\n\n /**\n * (Required if the appearance dictionary AP contains one or more subdictionaries; PDF 1.2) The annotation's appearance state, which selects the applicable appearance stream from an appearance subdictionary (see Section 12.5.5, \"Appearance Streams\")\n *\n * @name AcroFormButton#appearanceState\n * @type {any}\n */\n Object.defineProperty(this, \"appearanceState\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _AS.substr(1, _AS.length - 1);\n },\n set: function(value) {\n _AS = \"/\" + value;\n }\n });\n this.caption = \"l\";\n this.appearanceState = \"Off\";\n // todo: set AppearanceType as variable that can be set from the\n // outside...\n this._AppearanceType = AcroFormAppearance.RadioButton.Circle;\n // The Default appearanceType is the Circle\n this.appearanceStreamContent = this._AppearanceType.createAppearanceStream(\n this.optionName\n );\n};\ninherit(AcroFormChildClass, AcroFormField);\n\nAcroFormRadioButton.prototype.setAppearance = function(appearance) {\n if (!(\"createAppearanceStream\" in appearance && \"getCA\" in appearance)) {\n throw new Error(\n \"Couldn't assign Appearance to RadioButton. Appearance was Invalid!\"\n );\n }\n for (var objId in this.Kids) {\n if (this.Kids.hasOwnProperty(objId)) {\n var child = this.Kids[objId];\n child.appearanceStreamContent = appearance.createAppearanceStream(\n child.optionName\n );\n child.caption = appearance.getCA();\n }\n }\n};\n\nAcroFormRadioButton.prototype.createOption = function(name) {\n // Create new Child for RadioGroup\n var child = new AcroFormChildClass();\n child.Parent = this;\n child.optionName = name;\n // Add to Parent\n this.Kids.push(child);\n\n addField.call(this.scope, child);\n\n return child;\n};\n\n/**\n * @class AcroFormCheckBox\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormCheckBox = function() {\n AcroFormButton.call(this);\n\n this.fontName = \"zapfdingbats\";\n this.caption = \"3\";\n this.appearanceState = \"On\";\n this.value = \"On\";\n this.textAlign = \"center\";\n this.appearanceStreamContent = AcroFormAppearance.CheckBox.createAppearanceStream();\n};\ninherit(AcroFormCheckBox, AcroFormButton);\n\n/**\n * @class AcroFormTextField\n * @extends AcroFormField\n */\nvar AcroFormTextField = function() {\n AcroFormField.call(this);\n this.FT = \"/Tx\";\n\n /**\n * If set, the field may contain multiple lines of text; if clear, the field’s text shall be restricted to a single line.\n *\n * @name AcroFormTextField#multiline\n * @type {boolean}\n */\n Object.defineProperty(this, \"multiline\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 13));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 13);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 13);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, the text entered in the field represents the pathname of a file whose contents shall be submitted as the value of the field.\n *\n * @name AcroFormTextField#fileSelect\n * @type {boolean}\n */\n Object.defineProperty(this, \"fileSelect\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 21));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 21);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 21);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, text entered in the field shall not be spell-checked.\n *\n * @name AcroFormTextField#doNotSpellCheck\n * @type {boolean}\n */\n Object.defineProperty(this, \"doNotSpellCheck\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 23));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 23);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 23);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, the field shall not scroll (horizontally for single-line fields, vertically for multiple-line fields) to accommodate more text than fits within its annotation rectangle. Once the field is full, no further text shall be accepted for interactive form filling; for noninteractive form filling, the filler should take care not to add more character than will visibly fit in the defined area.\n *\n * @name AcroFormTextField#doNotScroll\n * @type {boolean}\n */\n Object.defineProperty(this, \"doNotScroll\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 24));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 24);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 24);\n }\n }\n });\n\n /**\n * (PDF 1.5) May be set only if the MaxLen entry is present in the text field dictionary (see Table 229) and if the Multiline, Password, and FileSelect flags are clear. If set, the field shall be automatically divided into as many equally spaced positions, or combs, as the value of MaxLen, and the text is laid out into those combs.\n *\n * @name AcroFormTextField#comb\n * @type {boolean}\n */\n Object.defineProperty(this, \"comb\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 25));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 25);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 25);\n }\n }\n });\n\n /**\n * (PDF 1.5) If set, the value of this field shall be a rich text string (see 12.7.3.4, “Rich Text Strings”). If the field has a value, the RV entry of the field dictionary (Table 222) shall specify the rich text string.\n *\n * @name AcroFormTextField#richText\n * @type {boolean}\n */\n Object.defineProperty(this, \"richText\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 26));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 26);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 26);\n }\n }\n });\n\n var _MaxLen = null;\n Object.defineProperty(this, \"MaxLen\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return _MaxLen;\n },\n set: function(value) {\n _MaxLen = value;\n }\n });\n\n /**\n * (Optional; inheritable) The maximum length of the field’s text, in characters.\n *\n * @name AcroFormTextField#maxLength\n * @type {number}\n */\n Object.defineProperty(this, \"maxLength\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _MaxLen;\n },\n set: function(value) {\n if (Number.isInteger(value)) {\n _MaxLen = value;\n }\n }\n });\n\n Object.defineProperty(this, \"hasAppearanceStream\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return this.V || this.DV;\n }\n });\n};\ninherit(AcroFormTextField, AcroFormField);\n\n/**\n * @class AcroFormPasswordField\n * @extends AcroFormTextField\n * @extends AcroFormField\n */\nvar AcroFormPasswordField = function() {\n AcroFormTextField.call(this);\n\n /**\n * If set, the field is intended for entering a secure password that should not be echoed visibly to the screen. Characters typed from the keyboard shall instead be echoed in some unreadable form, such as asterisks or bullet characters.\n * NOTE To protect password confidentiality, readers should never store the value of the text field in the PDF file if this flag is set.\n *\n * @name AcroFormTextField#password\n * @type {boolean}\n */\n Object.defineProperty(this, \"password\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 14));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 14);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 14);\n }\n }\n });\n this.password = true;\n};\ninherit(AcroFormPasswordField, AcroFormTextField);\n\n// Contains Methods for creating standard appearances\nvar AcroFormAppearance = {\n CheckBox: {\n createAppearanceStream: function() {\n var appearance = {\n N: {\n On: AcroFormAppearance.CheckBox.YesNormal\n },\n D: {\n On: AcroFormAppearance.CheckBox.YesPushDown,\n Off: AcroFormAppearance.CheckBox.OffPushDown\n }\n };\n\n return appearance;\n },\n /**\n * Returns the standard On Appearance for a CheckBox\n *\n * @returns {AcroFormXObject}\n */\n YesPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n var fontKey = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n ).id;\n var encodedColor = formObject.scope.__private__.encodeColorString(\n formObject.color\n );\n var calcRes = calculateX(formObject, formObject.caption);\n stream.push(\"0.749023 g\");\n stream.push(\n \"0 0 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject)) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject)) +\n \" re\"\n );\n stream.push(\"f\");\n stream.push(\"BMC\");\n stream.push(\"q\");\n stream.push(\"0 0 1 rg\");\n stream.push(\n \"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf \" + encodedColor\n );\n stream.push(\"BT\");\n stream.push(calcRes.text);\n stream.push(\"ET\");\n stream.push(\"Q\");\n stream.push(\"EMC\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n\n YesNormal: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var fontKey = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n ).id;\n var encodedColor = formObject.scope.__private__.encodeColorString(\n formObject.color\n );\n var stream = [];\n var height = AcroFormAppearance.internal.getHeight(formObject);\n var width = AcroFormAppearance.internal.getWidth(formObject);\n var calcRes = calculateX(formObject, formObject.caption);\n stream.push(\"1 g\");\n stream.push(\"0 0 \" + f2(width) + \" \" + f2(height) + \" re\");\n stream.push(\"f\");\n stream.push(\"q\");\n stream.push(\"0 0 1 rg\");\n stream.push(\"0 0 \" + f2(width - 1) + \" \" + f2(height - 1) + \" re\");\n stream.push(\"W\");\n stream.push(\"n\");\n stream.push(\"0 g\");\n stream.push(\"BT\");\n stream.push(\n \"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf \" + encodedColor\n );\n stream.push(calcRes.text);\n stream.push(\"ET\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n\n /**\n * Returns the standard Off Appearance for a CheckBox\n *\n * @returns {AcroFormXObject}\n */\n OffPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n stream.push(\"0.749023 g\");\n stream.push(\n \"0 0 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject)) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject)) +\n \" re\"\n );\n stream.push(\"f\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n }\n },\n\n RadioButton: {\n Circle: {\n createAppearanceStream: function(name) {\n var appearanceStreamContent = {\n D: {\n Off: AcroFormAppearance.RadioButton.Circle.OffPushDown\n },\n N: {}\n };\n appearanceStreamContent.N[name] =\n AcroFormAppearance.RadioButton.Circle.YesNormal;\n appearanceStreamContent.D[name] =\n AcroFormAppearance.RadioButton.Circle.YesPushDown;\n return appearanceStreamContent;\n },\n getCA: function() {\n return \"l\";\n },\n\n YesNormal: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n // Make the Radius of the Circle relative to min(height, width) of formObject\n var DotRadius =\n AcroFormAppearance.internal.getWidth(formObject) <=\n AcroFormAppearance.internal.getHeight(formObject)\n ? AcroFormAppearance.internal.getWidth(formObject) / 4\n : AcroFormAppearance.internal.getHeight(formObject) / 4;\n // The Borderpadding...\n DotRadius = Number((DotRadius * 0.9).toFixed(5));\n var c = AcroFormAppearance.internal.Bezier_C;\n var DotRadiusBezier = Number((DotRadius * c).toFixed(5));\n /*\n * The Following is a Circle created with Bezier-Curves.\n */\n stream.push(\"q\");\n stream.push(\n \"1 0 0 1 \" +\n f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n \" \" +\n f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n \" cm\"\n );\n stream.push(DotRadius + \" 0 m\");\n stream.push(\n DotRadius +\n \" \" +\n DotRadiusBezier +\n \" \" +\n DotRadiusBezier +\n \" \" +\n DotRadius +\n \" 0 \" +\n DotRadius +\n \" c\"\n );\n stream.push(\n \"-\" +\n DotRadiusBezier +\n \" \" +\n DotRadius +\n \" -\" +\n DotRadius +\n \" \" +\n DotRadiusBezier +\n \" -\" +\n DotRadius +\n \" 0 c\"\n );\n stream.push(\n \"-\" +\n DotRadius +\n \" -\" +\n DotRadiusBezier +\n \" -\" +\n DotRadiusBezier +\n \" -\" +\n DotRadius +\n \" 0 -\" +\n DotRadius +\n \" c\"\n );\n stream.push(\n DotRadiusBezier +\n \" -\" +\n DotRadius +\n \" \" +\n DotRadius +\n \" -\" +\n DotRadiusBezier +\n \" \" +\n DotRadius +\n \" 0 c\"\n );\n stream.push(\"f\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n YesPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n var DotRadius =\n AcroFormAppearance.internal.getWidth(formObject) <=\n AcroFormAppearance.internal.getHeight(formObject)\n ? AcroFormAppearance.internal.getWidth(formObject) / 4\n : AcroFormAppearance.internal.getHeight(formObject) / 4;\n // The Borderpadding...\n DotRadius = Number((DotRadius * 0.9).toFixed(5));\n // Save results for later use; no need to waste\n // processor ticks on doing math\n var k = Number((DotRadius * 2).toFixed(5));\n var kc = Number((k * AcroFormAppearance.internal.Bezier_C).toFixed(5));\n var dc = Number(\n (DotRadius * AcroFormAppearance.internal.Bezier_C).toFixed(5)\n );\n\n stream.push(\"0.749023 g\");\n stream.push(\"q\");\n stream.push(\n \"1 0 0 1 \" +\n f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n \" \" +\n f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n \" cm\"\n );\n stream.push(k + \" 0 m\");\n stream.push(k + \" \" + kc + \" \" + kc + \" \" + k + \" 0 \" + k + \" c\");\n stream.push(\n \"-\" + kc + \" \" + k + \" -\" + k + \" \" + kc + \" -\" + k + \" 0 c\"\n );\n stream.push(\n \"-\" + k + \" -\" + kc + \" -\" + kc + \" -\" + k + \" 0 -\" + k + \" c\"\n );\n stream.push(kc + \" -\" + k + \" \" + k + \" -\" + kc + \" \" + k + \" 0 c\");\n stream.push(\"f\");\n stream.push(\"Q\");\n stream.push(\"0 g\");\n stream.push(\"q\");\n stream.push(\n \"1 0 0 1 \" +\n f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n \" \" +\n f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n \" cm\"\n );\n stream.push(DotRadius + \" 0 m\");\n stream.push(\n \"\" +\n DotRadius +\n \" \" +\n dc +\n \" \" +\n dc +\n \" \" +\n DotRadius +\n \" 0 \" +\n DotRadius +\n \" c\"\n );\n stream.push(\n \"-\" +\n dc +\n \" \" +\n DotRadius +\n \" -\" +\n DotRadius +\n \" \" +\n dc +\n \" -\" +\n DotRadius +\n \" 0 c\"\n );\n stream.push(\n \"-\" +\n DotRadius +\n \" -\" +\n dc +\n \" -\" +\n dc +\n \" -\" +\n DotRadius +\n \" 0 -\" +\n DotRadius +\n \" c\"\n );\n stream.push(\n dc +\n \" -\" +\n DotRadius +\n \" \" +\n DotRadius +\n \" -\" +\n dc +\n \" \" +\n DotRadius +\n \" 0 c\"\n );\n stream.push(\"f\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n OffPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n var DotRadius =\n AcroFormAppearance.internal.getWidth(formObject) <=\n AcroFormAppearance.internal.getHeight(formObject)\n ? AcroFormAppearance.internal.getWidth(formObject) / 4\n : AcroFormAppearance.internal.getHeight(formObject) / 4;\n // The Borderpadding...\n DotRadius = Number((DotRadius * 0.9).toFixed(5));\n // Save results for later use; no need to waste\n // processor ticks on doing math\n var k = Number((DotRadius * 2).toFixed(5));\n var kc = Number((k * AcroFormAppearance.internal.Bezier_C).toFixed(5));\n\n stream.push(\"0.749023 g\");\n stream.push(\"q\");\n stream.push(\n \"1 0 0 1 \" +\n f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n \" \" +\n f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n \" cm\"\n );\n stream.push(k + \" 0 m\");\n stream.push(k + \" \" + kc + \" \" + kc + \" \" + k + \" 0 \" + k + \" c\");\n stream.push(\n \"-\" + kc + \" \" + k + \" -\" + k + \" \" + kc + \" -\" + k + \" 0 c\"\n );\n stream.push(\n \"-\" + k + \" -\" + kc + \" -\" + kc + \" -\" + k + \" 0 -\" + k + \" c\"\n );\n stream.push(kc + \" -\" + k + \" \" + k + \" -\" + kc + \" \" + k + \" 0 c\");\n stream.push(\"f\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n }\n },\n\n Cross: {\n /**\n * Creates the Actual AppearanceDictionary-References\n *\n * @param {string} name\n * @returns {Object}\n * @ignore\n */\n createAppearanceStream: function(name) {\n var appearanceStreamContent = {\n D: {\n Off: AcroFormAppearance.RadioButton.Cross.OffPushDown\n },\n N: {}\n };\n appearanceStreamContent.N[name] =\n AcroFormAppearance.RadioButton.Cross.YesNormal;\n appearanceStreamContent.D[name] =\n AcroFormAppearance.RadioButton.Cross.YesPushDown;\n return appearanceStreamContent;\n },\n getCA: function() {\n return \"8\";\n },\n\n YesNormal: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n var cross = AcroFormAppearance.internal.calculateCross(formObject);\n stream.push(\"q\");\n stream.push(\n \"1 1 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject) - 2) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject) - 2) +\n \" re\"\n );\n stream.push(\"W\");\n stream.push(\"n\");\n stream.push(f2(cross.x1.x) + \" \" + f2(cross.x1.y) + \" m\");\n stream.push(f2(cross.x2.x) + \" \" + f2(cross.x2.y) + \" l\");\n stream.push(f2(cross.x4.x) + \" \" + f2(cross.x4.y) + \" m\");\n stream.push(f2(cross.x3.x) + \" \" + f2(cross.x3.y) + \" l\");\n stream.push(\"s\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n YesPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var cross = AcroFormAppearance.internal.calculateCross(formObject);\n var stream = [];\n stream.push(\"0.749023 g\");\n stream.push(\n \"0 0 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject)) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject)) +\n \" re\"\n );\n stream.push(\"f\");\n stream.push(\"q\");\n stream.push(\n \"1 1 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject) - 2) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject) - 2) +\n \" re\"\n );\n stream.push(\"W\");\n stream.push(\"n\");\n stream.push(f2(cross.x1.x) + \" \" + f2(cross.x1.y) + \" m\");\n stream.push(f2(cross.x2.x) + \" \" + f2(cross.x2.y) + \" l\");\n stream.push(f2(cross.x4.x) + \" \" + f2(cross.x4.y) + \" m\");\n stream.push(f2(cross.x3.x) + \" \" + f2(cross.x3.y) + \" l\");\n stream.push(\"s\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n OffPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n stream.push(\"0.749023 g\");\n stream.push(\n \"0 0 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject)) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject)) +\n \" re\"\n );\n stream.push(\"f\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n }\n }\n },\n\n /**\n * Returns the standard Appearance\n *\n * @returns {AcroFormXObject}\n */\n createDefaultAppearanceStream: function(formObject) {\n // Set Helvetica to Standard Font (size: auto)\n // Color: Black\n var fontKey = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n ).id;\n var encodedColor = formObject.scope.__private__.encodeColorString(\n formObject.color\n );\n var fontSize = formObject.fontSize;\n var result = \"/\" + fontKey + \" \" + fontSize + \" Tf \" + encodedColor;\n return result;\n }\n};\n\nAcroFormAppearance.internal = {\n Bezier_C: 0.551915024494,\n\n calculateCross: function(formObject) {\n var width = AcroFormAppearance.internal.getWidth(formObject);\n var height = AcroFormAppearance.internal.getHeight(formObject);\n var a = Math.min(width, height);\n\n var cross = {\n x1: {\n // upperLeft\n x: (width - a) / 2,\n y: (height - a) / 2 + a // height - borderPadding\n },\n x2: {\n // lowerRight\n x: (width - a) / 2 + a,\n y: (height - a) / 2 // borderPadding\n },\n x3: {\n // lowerLeft\n x: (width - a) / 2,\n y: (height - a) / 2 // borderPadding\n },\n x4: {\n // upperRight\n x: (width - a) / 2 + a,\n y: (height - a) / 2 + a // height - borderPadding\n }\n };\n\n return cross;\n }\n};\nAcroFormAppearance.internal.getWidth = function(formObject) {\n var result = 0;\n if (typeof formObject === \"object\") {\n result = scale(formObject.Rect[2]);\n }\n return result;\n};\nAcroFormAppearance.internal.getHeight = function(formObject) {\n var result = 0;\n if (typeof formObject === \"object\") {\n result = scale(formObject.Rect[3]);\n }\n return result;\n};\n\n// Public:\n\n/**\n * Add an AcroForm-Field to the jsPDF-instance\n *\n * @name addField\n * @function\n * @instance\n * @param {Object} fieldObject\n * @returns {jsPDF}\n */\nvar addField = (jsPDFAPI.addField = function(fieldObject) {\n initializeAcroForm(this, fieldObject);\n\n if (fieldObject instanceof AcroFormField) {\n putForm(fieldObject);\n } else {\n throw new Error(\"Invalid argument passed to jsPDF.addField.\");\n }\n fieldObject.page = fieldObject.scope.internal.getCurrentPageInfo().pageNumber;\n return this;\n});\n\njsPDFAPI.AcroFormChoiceField = AcroFormChoiceField;\njsPDFAPI.AcroFormListBox = AcroFormListBox;\njsPDFAPI.AcroFormComboBox = AcroFormComboBox;\njsPDFAPI.AcroFormEditBox = AcroFormEditBox;\njsPDFAPI.AcroFormButton = AcroFormButton;\njsPDFAPI.AcroFormPushButton = AcroFormPushButton;\njsPDFAPI.AcroFormRadioButton = AcroFormRadioButton;\njsPDFAPI.AcroFormCheckBox = AcroFormCheckBox;\njsPDFAPI.AcroFormTextField = AcroFormTextField;\njsPDFAPI.AcroFormPasswordField = AcroFormPasswordField;\njsPDFAPI.AcroFormAppearance = AcroFormAppearance;\n\njsPDFAPI.AcroForm = {\n ChoiceField: AcroFormChoiceField,\n ListBox: AcroFormListBox,\n ComboBox: AcroFormComboBox,\n EditBox: AcroFormEditBox,\n Button: AcroFormButton,\n PushButton: AcroFormPushButton,\n RadioButton: AcroFormRadioButton,\n CheckBox: AcroFormCheckBox,\n TextField: AcroFormTextField,\n PasswordField: AcroFormPasswordField,\n Appearance: AcroFormAppearance\n};\n\njsPDF.AcroForm = {\n ChoiceField: AcroFormChoiceField,\n ListBox: AcroFormListBox,\n ComboBox: AcroFormComboBox,\n EditBox: AcroFormEditBox,\n Button: AcroFormButton,\n PushButton: AcroFormPushButton,\n RadioButton: AcroFormRadioButton,\n CheckBox: AcroFormCheckBox,\n TextField: AcroFormTextField,\n PasswordField: AcroFormPasswordField,\n Appearance: AcroFormAppearance\n};\n\nvar AcroForm = jsPDF.AcroForm;\n\nexport {\n AcroForm,\n AcroFormChoiceField,\n AcroFormListBox,\n AcroFormComboBox,\n AcroFormEditBox,\n AcroFormButton,\n AcroFormPushButton,\n AcroFormRadioButton,\n AcroFormCheckBox,\n AcroFormTextField,\n AcroFormPasswordField,\n AcroFormAppearance\n};\n","function toLookup(arr) {\n return arr.reduce(function(lookup, name, index) {\n lookup[name] = index;\n\n return lookup;\n }, {});\n}\n\nvar fontStyleOrder = {\n italic: [\"italic\", \"oblique\", \"normal\"],\n oblique: [\"oblique\", \"italic\", \"normal\"],\n normal: [\"normal\", \"oblique\", \"italic\"]\n};\n\nvar fontStretchOrder = [\n \"ultra-condensed\",\n \"extra-condensed\",\n \"condensed\",\n \"semi-condensed\",\n \"normal\",\n \"semi-expanded\",\n \"expanded\",\n \"extra-expanded\",\n \"ultra-expanded\"\n];\n\n// For a given font-stretch value, we need to know where to start our search\n// from in the fontStretchOrder list.\nvar fontStretchLookup = toLookup(fontStretchOrder);\n\nvar fontWeights = [100, 200, 300, 400, 500, 600, 700, 800, 900];\nvar fontWeightsLookup = toLookup(fontWeights);\n\nfunction normalizeFontStretch(stretch) {\n stretch = stretch || \"normal\";\n\n return typeof fontStretchLookup[stretch] === \"number\" ? stretch : \"normal\";\n}\n\nfunction normalizeFontStyle(style) {\n style = style || \"normal\";\n\n return fontStyleOrder[style] ? style : \"normal\";\n}\n\nfunction normalizeFontWeight(weight) {\n if (!weight) {\n return 400;\n }\n\n if (typeof weight === \"number\") {\n // Ignore values which aren't valid font-weights.\n return weight >= 100 && weight <= 900 && weight % 100 === 0 ? weight : 400;\n }\n\n if (/^\\d00$/.test(weight)) {\n return parseInt(weight);\n }\n\n switch (weight) {\n case \"bold\":\n return 700;\n\n case \"normal\":\n default:\n return 400;\n }\n}\n\nexport function normalizeFontFace(fontFace) {\n var family = fontFace.family.replace(/\"|'/g, \"\").toLowerCase();\n\n var style = normalizeFontStyle(fontFace.style);\n var weight = normalizeFontWeight(fontFace.weight);\n var stretch = normalizeFontStretch(fontFace.stretch);\n\n return {\n family: family,\n style: style,\n weight: weight,\n stretch: stretch,\n src: fontFace.src || [],\n\n // The ref property maps this font-face to the font\n // added by the .addFont() method.\n ref: fontFace.ref || {\n name: family,\n style: [stretch, style, weight].join(\" \")\n }\n };\n}\n\n/**\n * Turns a list of font-faces into a map, for easier lookup when resolving\n * fonts.\n * @private\n */\nexport function buildFontFaceMap(fontFaces) {\n var map = {};\n\n for (var i = 0; i < fontFaces.length; ++i) {\n var normalized = normalizeFontFace(fontFaces[i]);\n\n var name = normalized.family;\n var stretch = normalized.stretch;\n var style = normalized.style;\n var weight = normalized.weight;\n\n map[name] = map[name] || {};\n\n map[name][stretch] = map[name][stretch] || {};\n map[name][stretch][style] = map[name][stretch][style] || {};\n map[name][stretch][style][weight] = normalized;\n }\n\n return map;\n}\n\n/**\n * Searches a map of stretches, weights, etc. in the given direction and\n * then, if no match has been found, in the opposite directions.\n *\n * @param {Object.} matchingSet A map of the various font variations.\n * @param {any[]} order The order of the different variations\n * @param {number} pivot The starting point of the search in the order list.\n * @param {number} dir The initial direction of the search (desc = -1, asc = 1)\n * @private\n */\n\nfunction searchFromPivot(matchingSet, order, pivot, dir) {\n var i;\n\n for (i = pivot; i >= 0 && i < order.length; i += dir) {\n if (matchingSet[order[i]]) {\n return matchingSet[order[i]];\n }\n }\n\n for (i = pivot; i >= 0 && i < order.length; i -= dir) {\n if (matchingSet[order[i]]) {\n return matchingSet[order[i]];\n }\n }\n}\n\nfunction resolveFontStretch(stretch, matchingSet) {\n if (matchingSet[stretch]) {\n return matchingSet[stretch];\n }\n\n var pivot = fontStretchLookup[stretch];\n\n // If the font-stretch value is normal or more condensed, we want to\n // start with a descending search, otherwise we should do ascending.\n var dir = pivot <= fontStretchLookup[\"normal\"] ? -1 : 1;\n var match = searchFromPivot(matchingSet, fontStretchOrder, pivot, dir);\n\n if (!match) {\n // Since a font-family cannot exist without having at least one stretch value\n // we should never reach this point.\n throw new Error(\n \"Could not find a matching font-stretch value for \" + stretch\n );\n }\n\n return match;\n}\n\nfunction resolveFontStyle(fontStyle, matchingSet) {\n if (matchingSet[fontStyle]) {\n return matchingSet[fontStyle];\n }\n\n var ordering = fontStyleOrder[fontStyle];\n\n for (var i = 0; i < ordering.length; ++i) {\n if (matchingSet[ordering[i]]) {\n return matchingSet[ordering[i]];\n }\n }\n\n // Since a font-family cannot exist without having at least one style value\n // we should never reach this point.\n throw new Error(\"Could not find a matching font-style for \" + fontStyle);\n}\n\nfunction resolveFontWeight(weight, matchingSet) {\n if (matchingSet[weight]) {\n return matchingSet[weight];\n }\n\n if (weight === 400 && matchingSet[500]) {\n return matchingSet[500];\n }\n\n if (weight === 500 && matchingSet[400]) {\n return matchingSet[400];\n }\n\n var pivot = fontWeightsLookup[weight];\n\n // If the font-stretch value is normal or more condensed, we want to\n // start with a descending search, otherwise we should do ascending.\n var dir = weight < 400 ? -1 : 1;\n var match = searchFromPivot(matchingSet, fontWeights, pivot, dir);\n\n if (!match) {\n // Since a font-family cannot exist without having at least one stretch value\n // we should never reach this point.\n throw new Error(\n \"Could not find a matching font-weight for value \" + weight\n );\n }\n\n return match;\n}\n\nvar defaultGenericFontFamilies = {\n \"sans-serif\": \"helvetica\",\n fixed: \"courier\",\n monospace: \"courier\",\n terminal: \"courier\",\n cursive: \"times\",\n fantasy: \"times\",\n serif: \"times\"\n};\n\nvar systemFonts = {\n caption: \"times\",\n icon: \"times\",\n menu: \"times\",\n \"message-box\": \"times\",\n \"small-caption\": \"times\",\n \"status-bar\": \"times\"\n};\n\nfunction ruleToString(rule) {\n return [rule.stretch, rule.style, rule.weight, rule.family].join(\" \");\n}\n\nexport function resolveFontFace(fontFaceMap, rules, opts) {\n opts = opts || {};\n\n var defaultFontFamily = opts.defaultFontFamily || \"times\";\n var genericFontFamilies = Object.assign(\n {},\n defaultGenericFontFamilies,\n opts.genericFontFamilies || {}\n );\n\n var rule = null;\n var matches = null;\n\n for (var i = 0; i < rules.length; ++i) {\n rule = normalizeFontFace(rules[i]);\n\n if (genericFontFamilies[rule.family]) {\n rule.family = genericFontFamilies[rule.family];\n }\n\n if (fontFaceMap.hasOwnProperty(rule.family)) {\n matches = fontFaceMap[rule.family];\n\n break;\n }\n }\n\n // Always fallback to a known font family.\n matches = matches || fontFaceMap[defaultFontFamily];\n\n if (!matches) {\n // At this point we should definitiely have a font family, but if we\n // don't there is something wrong with our configuration\n throw new Error(\n \"Could not find a font-family for the rule '\" +\n ruleToString(rule) +\n \"' and default family '\" +\n defaultFontFamily +\n \"'.\"\n );\n }\n\n matches = resolveFontStretch(rule.stretch, matches);\n matches = resolveFontStyle(rule.style, matches);\n matches = resolveFontWeight(rule.weight, matches);\n\n if (!matches) {\n // We should've fount\n throw new Error(\n \"Failed to resolve a font for the rule '\" + ruleToString(rule) + \"'.\"\n );\n }\n\n return matches;\n}\n\n/**\n * Builds a style id for use with the addFont() method.\n * @param {FontFace} font\n * @private\n */\nexport function toStyleName(font) {\n return [font.weight, font.style, font.stretch].join(\" \");\n}\n\nfunction eatWhiteSpace(input) {\n return input.trimLeft();\n}\n\nfunction parseQuotedFontFamily(input, quote) {\n var index = 0;\n\n while (index < input.length) {\n var current = input.charAt(index);\n\n if (current === quote) {\n return [input.substring(0, index), input.substring(index + 1)];\n }\n\n index += 1;\n }\n\n // Unexpected end of input\n return null;\n}\n\nfunction parseNonQuotedFontFamily(input) {\n // It implements part of the identifier parser here: https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n //\n // NOTE: This parser pretty much ignores escaped identifiers and that there is a thing called unicode.\n //\n // Breakdown of regexp:\n // -[a-z_] - when identifier starts with a hyphen, you're not allowed to have another hyphen or a digit\n // [a-z_] - allow a-z and underscore at beginning of input\n // [a-z0-9_-]* - after that, anything goes\n var match = input.match(/^(-[a-z_]|[a-z_])[a-z0-9_-]*/i);\n\n // non quoted value contains illegal characters\n if (match === null) {\n return null;\n }\n\n return [match[0], input.substring(match[0].length)];\n}\n\nvar defaultFont = [\"times\"];\n\nexport function parseFontFamily(input) {\n var result = [];\n var ch, parsed;\n var remaining = input.trim();\n\n if (remaining === \"\") {\n return defaultFont;\n }\n\n if (remaining in systemFonts) {\n return [systemFonts[remaining]];\n }\n\n while (remaining !== \"\") {\n parsed = null;\n remaining = eatWhiteSpace(remaining);\n ch = remaining.charAt(0);\n\n switch (ch) {\n case '\"':\n case \"'\":\n parsed = parseQuotedFontFamily(remaining.substring(1), ch);\n break;\n\n default:\n parsed = parseNonQuotedFontFamily(remaining);\n break;\n }\n\n if (parsed === null) {\n return defaultFont;\n }\n\n result.push(parsed[0]);\n\n remaining = eatWhiteSpace(parsed[1]);\n\n // We expect end of input or a comma separator here\n if (remaining !== \"\" && remaining.charAt(0) !== \",\") {\n return defaultFont;\n }\n\n remaining = remaining.replace(/^,/, \"\");\n }\n\n return result;\n}\n","/** @license\n * jsPDF addImage plugin\n * Copyright (c) 2012 Jason Siefken, https://github.com/siefkenj/\n * 2013 Chris Dowling, https://github.com/gingerchris\n * 2013 Trinh Ho, https://github.com/ineedfat\n * 2013 Edwin Alejandro Perez, https://github.com/eaparango\n * 2013 Norah Smith, https://github.com/burnburnrocket\n * 2014 Diego Casorran, https://github.com/diegocr\n * 2014 James Robb, https://github.com/jamesbrobb\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n/**\n * @name addImage\n * @module\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { atob, btoa } from \"../libs/AtobBtoa.js\";\n\n(function(jsPDFAPI) {\n \"use strict\";\n\n var namespace = \"addImage_\";\n jsPDFAPI.__addimage__ = {};\n\n var UNKNOWN = \"UNKNOWN\";\n\n // Heuristic selection of a good batch for large array .apply. Not limiting make the call overflow.\n // With too small batch iteration will be slow as more calls are made,\n // higher values cause larger and slower garbage collection.\n var ARRAY_APPLY_BATCH = 8192;\n\n var imageFileTypeHeaders = {\n PNG: [[0x89, 0x50, 0x4e, 0x47]],\n TIFF: [\n [0x4d, 0x4d, 0x00, 0x2a], //Motorola\n [0x49, 0x49, 0x2a, 0x00] //Intel\n ],\n JPEG: [\n [\n 0xff,\n 0xd8,\n 0xff,\n 0xe0,\n undefined,\n undefined,\n 0x4a,\n 0x46,\n 0x49,\n 0x46,\n 0x00\n ], //JFIF\n [\n 0xff,\n 0xd8,\n 0xff,\n 0xe1,\n undefined,\n undefined,\n 0x45,\n 0x78,\n 0x69,\n 0x66,\n 0x00,\n 0x00\n ], //Exif\n [0xff, 0xd8, 0xff, 0xdb], //JPEG RAW\n [0xff, 0xd8, 0xff, 0xee] //EXIF RAW\n ],\n JPEG2000: [[0x00, 0x00, 0x00, 0x0c, 0x6a, 0x50, 0x20, 0x20]],\n GIF87a: [[0x47, 0x49, 0x46, 0x38, 0x37, 0x61]],\n GIF89a: [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61]],\n WEBP: [\n [\n 0x52,\n 0x49,\n 0x46,\n 0x46,\n undefined,\n undefined,\n undefined,\n undefined,\n 0x57,\n 0x45,\n 0x42,\n 0x50\n ]\n ],\n BMP: [\n [0x42, 0x4d], //BM - Windows 3.1x, 95, NT, ... etc.\n [0x42, 0x41], //BA - OS/2 struct bitmap array\n [0x43, 0x49], //CI - OS/2 struct color icon\n [0x43, 0x50], //CP - OS/2 const color pointer\n [0x49, 0x43], //IC - OS/2 struct icon\n [0x50, 0x54] //PT - OS/2 pointer\n ]\n };\n\n /**\n * Recognize filetype of Image by magic-bytes\n *\n * https://en.wikipedia.org/wiki/List_of_file_signatures\n *\n * @name getImageFileTypeByImageData\n * @public\n * @function\n * @param {string|arraybuffer} imageData imageData as binary String or arraybuffer\n * @param {string} format format of file if filetype-recognition fails, e.g. 'JPEG'\n *\n * @returns {string} filetype of Image\n */\n var getImageFileTypeByImageData = (jsPDFAPI.__addimage__.getImageFileTypeByImageData = function(\n imageData,\n fallbackFormat\n ) {\n fallbackFormat = fallbackFormat || UNKNOWN;\n var i;\n var j;\n var result = UNKNOWN;\n var headerSchemata;\n var compareResult;\n var fileType;\n\n if (\n fallbackFormat === \"RGBA\" ||\n (imageData.data !== undefined &&\n imageData.data instanceof Uint8ClampedArray &&\n \"height\" in imageData &&\n \"width\" in imageData)\n ) {\n return \"RGBA\";\n }\n\n if (isArrayBufferView(imageData)) {\n for (fileType in imageFileTypeHeaders) {\n headerSchemata = imageFileTypeHeaders[fileType];\n for (i = 0; i < headerSchemata.length; i += 1) {\n compareResult = true;\n for (j = 0; j < headerSchemata[i].length; j += 1) {\n if (headerSchemata[i][j] === undefined) {\n continue;\n }\n if (headerSchemata[i][j] !== imageData[j]) {\n compareResult = false;\n break;\n }\n }\n if (compareResult === true) {\n result = fileType;\n break;\n }\n }\n }\n } else {\n for (fileType in imageFileTypeHeaders) {\n headerSchemata = imageFileTypeHeaders[fileType];\n for (i = 0; i < headerSchemata.length; i += 1) {\n compareResult = true;\n for (j = 0; j < headerSchemata[i].length; j += 1) {\n if (headerSchemata[i][j] === undefined) {\n continue;\n }\n if (headerSchemata[i][j] !== imageData.charCodeAt(j)) {\n compareResult = false;\n break;\n }\n }\n if (compareResult === true) {\n result = fileType;\n break;\n }\n }\n }\n }\n\n if (result === UNKNOWN && fallbackFormat !== UNKNOWN) {\n result = fallbackFormat;\n }\n return result;\n });\n\n // Image functionality ported from pdf.js\n var putImage = function(image) {\n var out = this.internal.write;\n var putStream = this.internal.putStream;\n var getFilters = this.internal.getFilters;\n\n var filter = getFilters();\n while (filter.indexOf(\"FlateEncode\") !== -1) {\n filter.splice(filter.indexOf(\"FlateEncode\"), 1);\n }\n\n image.objectId = this.internal.newObject();\n\n var additionalKeyValues = [];\n additionalKeyValues.push({ key: \"Type\", value: \"/XObject\" });\n additionalKeyValues.push({ key: \"Subtype\", value: \"/Image\" });\n additionalKeyValues.push({ key: \"Width\", value: image.width });\n additionalKeyValues.push({ key: \"Height\", value: image.height });\n\n if (image.colorSpace === color_spaces.INDEXED) {\n additionalKeyValues.push({\n key: \"ColorSpace\",\n value:\n \"[/Indexed /DeviceRGB \" +\n // if an indexed png defines more than one colour with transparency, we've created a sMask\n (image.palette.length / 3 - 1) +\n \" \" +\n (\"sMask\" in image && typeof image.sMask !== \"undefined\"\n ? image.objectId + 2\n : image.objectId + 1) +\n \" 0 R]\"\n });\n } else {\n additionalKeyValues.push({\n key: \"ColorSpace\",\n value: \"/\" + image.colorSpace\n });\n if (image.colorSpace === color_spaces.DEVICE_CMYK) {\n additionalKeyValues.push({ key: \"Decode\", value: \"[1 0 1 0 1 0 1 0]\" });\n }\n }\n additionalKeyValues.push({\n key: \"BitsPerComponent\",\n value: image.bitsPerComponent\n });\n if (\n \"decodeParameters\" in image &&\n typeof image.decodeParameters !== \"undefined\"\n ) {\n additionalKeyValues.push({\n key: \"DecodeParms\",\n value: \"<<\" + image.decodeParameters + \">>\"\n });\n }\n if (\"transparency\" in image && Array.isArray(image.transparency)) {\n var transparency = \"\",\n i = 0,\n len = image.transparency.length;\n for (; i < len; i++)\n transparency +=\n image.transparency[i] + \" \" + image.transparency[i] + \" \";\n\n additionalKeyValues.push({\n key: \"Mask\",\n value: \"[\" + transparency + \"]\"\n });\n }\n if (typeof image.sMask !== \"undefined\") {\n additionalKeyValues.push({\n key: \"SMask\",\n value: image.objectId + 1 + \" 0 R\"\n });\n }\n\n var alreadyAppliedFilters =\n typeof image.filter !== \"undefined\" ? [\"/\" + image.filter] : undefined;\n\n putStream({\n data: image.data,\n additionalKeyValues: additionalKeyValues,\n alreadyAppliedFilters: alreadyAppliedFilters,\n objectId: image.objectId\n });\n\n out(\"endobj\");\n\n // Soft mask\n if (\"sMask\" in image && typeof image.sMask !== \"undefined\") {\n var decodeParameters =\n \"/Predictor \" +\n image.predictor +\n \" /Colors 1 /BitsPerComponent \" +\n image.bitsPerComponent +\n \" /Columns \" +\n image.width;\n var sMask = {\n width: image.width,\n height: image.height,\n colorSpace: \"DeviceGray\",\n bitsPerComponent: image.bitsPerComponent,\n decodeParameters: decodeParameters,\n data: image.sMask\n };\n if (\"filter\" in image) {\n sMask.filter = image.filter;\n }\n putImage.call(this, sMask);\n }\n\n //Palette\n if (image.colorSpace === color_spaces.INDEXED) {\n var objId = this.internal.newObject();\n //out('<< /Filter / ' + img['f'] +' /Length ' + img['pal'].length + '>>');\n //putStream(zlib.compress(img['pal']));\n putStream({\n data: arrayBufferToBinaryString(new Uint8Array(image.palette)),\n objectId: objId\n });\n out(\"endobj\");\n }\n };\n var putResourcesCallback = function() {\n var images = this.internal.collections[namespace + \"images\"];\n for (var i in images) {\n putImage.call(this, images[i]);\n }\n };\n var putXObjectsDictCallback = function() {\n var images = this.internal.collections[namespace + \"images\"],\n out = this.internal.write,\n image;\n for (var i in images) {\n image = images[i];\n out(\"/I\" + image.index, image.objectId, \"0\", \"R\");\n }\n };\n\n var checkCompressValue = function(value) {\n if (value && typeof value === \"string\") value = value.toUpperCase();\n return value in jsPDFAPI.image_compression ? value : image_compression.NONE;\n };\n\n var initialize = function() {\n if (!this.internal.collections[namespace + \"images\"]) {\n this.internal.collections[namespace + \"images\"] = {};\n this.internal.events.subscribe(\"putResources\", putResourcesCallback);\n this.internal.events.subscribe(\"putXobjectDict\", putXObjectsDictCallback);\n }\n };\n\n var getImages = function() {\n var images = this.internal.collections[namespace + \"images\"];\n initialize.call(this);\n return images;\n };\n var getImageIndex = function() {\n return Object.keys(this.internal.collections[namespace + \"images\"]).length;\n };\n var notDefined = function(value) {\n return typeof value === \"undefined\" || value === null || value.length === 0;\n };\n var generateAliasFromImageData = function(imageData) {\n if (typeof imageData === \"string\" || isArrayBufferView(imageData)) {\n return sHashCode(imageData);\n } else if (isArrayBufferView(imageData.data)) {\n return sHashCode(imageData.data);\n }\n\n return null;\n };\n\n var isImageTypeSupported = function(type) {\n return typeof jsPDFAPI[\"process\" + type.toUpperCase()] === \"function\";\n };\n\n var isDOMElement = function(object) {\n return typeof object === \"object\" && object.nodeType === 1;\n };\n\n var getImageDataFromElement = function(element, format) {\n //if element is an image which uses data url definition, just return the dataurl\n if (element.nodeName === \"IMG\" && element.hasAttribute(\"src\")) {\n var src = \"\" + element.getAttribute(\"src\");\n\n //is base64 encoded dataUrl, directly process it\n if (src.indexOf(\"data:image/\") === 0) {\n return atob(\n unescape(src)\n .split(\"base64,\")\n .pop()\n );\n }\n\n //it is probably an url, try to load it\n var tmpImageData = jsPDFAPI.loadFile(src, true);\n if (tmpImageData !== undefined) {\n return tmpImageData;\n }\n }\n\n if (element.nodeName === \"CANVAS\") {\n if (element.width === 0 || element.height === 0) {\n throw new Error(\n \"Given canvas must have data. Canvas width: \" +\n element.width +\n \", height: \" +\n element.height\n );\n }\n var mimeType;\n switch (format) {\n case \"PNG\":\n mimeType = \"image/png\";\n break;\n case \"WEBP\":\n mimeType = \"image/webp\";\n break;\n case \"JPEG\":\n case \"JPG\":\n default:\n mimeType = \"image/jpeg\";\n break;\n }\n return atob(\n element\n .toDataURL(mimeType, 1.0)\n .split(\"base64,\")\n .pop()\n );\n }\n };\n\n var checkImagesForAlias = function(alias) {\n var images = this.internal.collections[namespace + \"images\"];\n if (images) {\n for (var e in images) {\n if (alias === images[e].alias) {\n return images[e];\n }\n }\n }\n };\n\n var determineWidthAndHeight = function(width, height, image) {\n if (!width && !height) {\n width = -96;\n height = -96;\n }\n if (width < 0) {\n width = (-1 * image.width * 72) / width / this.internal.scaleFactor;\n }\n if (height < 0) {\n height = (-1 * image.height * 72) / height / this.internal.scaleFactor;\n }\n if (width === 0) {\n width = (height * image.width) / image.height;\n }\n if (height === 0) {\n height = (width * image.height) / image.width;\n }\n\n return [width, height];\n };\n\n var writeImageToPDF = function(x, y, width, height, image, rotation) {\n var dims = determineWidthAndHeight.call(this, width, height, image),\n coord = this.internal.getCoordinateString,\n vcoord = this.internal.getVerticalCoordinateString;\n\n var images = getImages.call(this);\n\n width = dims[0];\n height = dims[1];\n images[image.index] = image;\n\n if (rotation) {\n rotation *= Math.PI / 180;\n var c = Math.cos(rotation);\n var s = Math.sin(rotation);\n //like in pdf Reference do it 4 digits instead of 2\n var f4 = function(number) {\n return number.toFixed(4);\n };\n var rotationTransformationMatrix = [\n f4(c),\n f4(s),\n f4(s * -1),\n f4(c),\n 0,\n 0,\n \"cm\"\n ];\n }\n this.internal.write(\"q\"); //Save graphics state\n if (rotation) {\n this.internal.write(\n [1, \"0\", \"0\", 1, coord(x), vcoord(y + height), \"cm\"].join(\" \")\n ); //Translate\n this.internal.write(rotationTransformationMatrix.join(\" \")); //Rotate\n this.internal.write(\n [coord(width), \"0\", \"0\", coord(height), \"0\", \"0\", \"cm\"].join(\" \")\n ); //Scale\n } else {\n this.internal.write(\n [\n coord(width),\n \"0\",\n \"0\",\n coord(height),\n coord(x),\n vcoord(y + height),\n \"cm\"\n ].join(\" \")\n ); //Translate and Scale\n }\n\n if (this.isAdvancedAPI()) {\n // draw image bottom up when in \"advanced\" API mode\n this.internal.write([1, 0, 0, -1, 0, 0, \"cm\"].join(\" \"));\n }\n\n this.internal.write(\"/I\" + image.index + \" Do\"); //Paint Image\n this.internal.write(\"Q\"); //Restore graphics state\n };\n\n /**\n * COLOR SPACES\n */\n var color_spaces = (jsPDFAPI.color_spaces = {\n DEVICE_RGB: \"DeviceRGB\",\n DEVICE_GRAY: \"DeviceGray\",\n DEVICE_CMYK: \"DeviceCMYK\",\n CAL_GREY: \"CalGray\",\n CAL_RGB: \"CalRGB\",\n LAB: \"Lab\",\n ICC_BASED: \"ICCBased\",\n INDEXED: \"Indexed\",\n PATTERN: \"Pattern\",\n SEPARATION: \"Separation\",\n DEVICE_N: \"DeviceN\"\n });\n\n /**\n * DECODE METHODS\n */\n jsPDFAPI.decode = {\n DCT_DECODE: \"DCTDecode\",\n FLATE_DECODE: \"FlateDecode\",\n LZW_DECODE: \"LZWDecode\",\n JPX_DECODE: \"JPXDecode\",\n JBIG2_DECODE: \"JBIG2Decode\",\n ASCII85_DECODE: \"ASCII85Decode\",\n ASCII_HEX_DECODE: \"ASCIIHexDecode\",\n RUN_LENGTH_DECODE: \"RunLengthDecode\",\n CCITT_FAX_DECODE: \"CCITTFaxDecode\"\n };\n\n /**\n * IMAGE COMPRESSION TYPES\n */\n var image_compression = (jsPDFAPI.image_compression = {\n NONE: \"NONE\",\n FAST: \"FAST\",\n MEDIUM: \"MEDIUM\",\n SLOW: \"SLOW\"\n });\n\n /**\n * @name sHashCode\n * @function\n * @param {string} data\n * @returns {string}\n */\n var sHashCode = (jsPDFAPI.__addimage__.sHashCode = function(data) {\n var hash = 0,\n i,\n len;\n\n if (typeof data === \"string\") {\n len = data.length;\n for (i = 0; i < len; i++) {\n hash = (hash << 5) - hash + data.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n } else if (isArrayBufferView(data)) {\n len = data.byteLength / 2;\n for (i = 0; i < len; i++) {\n hash = (hash << 5) - hash + data[i];\n hash |= 0; // Convert to 32bit integer\n }\n }\n return hash;\n });\n\n /**\n * Validates if given String is a valid Base64-String\n *\n * @name validateStringAsBase64\n * @public\n * @function\n * @param {String} possible Base64-String\n *\n * @returns {boolean}\n */\n var validateStringAsBase64 = (jsPDFAPI.__addimage__.validateStringAsBase64 = function(\n possibleBase64String\n ) {\n possibleBase64String = possibleBase64String || \"\";\n possibleBase64String.toString().trim();\n\n var result = true;\n\n if (possibleBase64String.length === 0) {\n result = false;\n }\n\n if (possibleBase64String.length % 4 !== 0) {\n result = false;\n }\n\n if (\n /^[A-Za-z0-9+/]+$/.test(\n possibleBase64String.substr(0, possibleBase64String.length - 2)\n ) === false\n ) {\n result = false;\n }\n\n if (\n /^[A-Za-z0-9/][A-Za-z0-9+/]|[A-Za-z0-9+/]=|==$/.test(\n possibleBase64String.substr(-2)\n ) === false\n ) {\n result = false;\n }\n return result;\n });\n\n /**\n * Strips out and returns info from a valid base64 data URI\n *\n * @name extractImageFromDataUrl\n * @function\n * @param {string} dataUrl a valid data URI of format 'data:[][;base64],'\n * @returns {Array}an Array containing the following\n * [0] the complete data URI\n * [1] \n * [2] format - the second part of the mime-type i.e 'png' in 'image/png'\n * [4] \n */\n var extractImageFromDataUrl = (jsPDFAPI.__addimage__.extractImageFromDataUrl = function(\n dataUrl\n ) {\n dataUrl = dataUrl || \"\";\n var dataUrlParts = dataUrl.split(\"base64,\");\n var result = null;\n\n if (dataUrlParts.length === 2) {\n var extractedInfo = /^data:(\\w*\\/\\w*);*(charset=(?!charset=)[\\w=-]*)*;*$/.exec(\n dataUrlParts[0]\n );\n if (Array.isArray(extractedInfo)) {\n result = {\n mimeType: extractedInfo[1],\n charset: extractedInfo[2],\n data: dataUrlParts[1]\n };\n }\n }\n return result;\n });\n\n /**\n * Check to see if ArrayBuffer is supported\n *\n * @name supportsArrayBuffer\n * @function\n * @returns {boolean}\n */\n var supportsArrayBuffer = (jsPDFAPI.__addimage__.supportsArrayBuffer = function() {\n return (\n typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\"\n );\n });\n\n /**\n * Tests supplied object to determine if ArrayBuffer\n *\n * @name isArrayBuffer\n * @function\n * @param {Object} object an Object\n *\n * @returns {boolean}\n */\n jsPDFAPI.__addimage__.isArrayBuffer = function(object) {\n return supportsArrayBuffer() && object instanceof ArrayBuffer;\n };\n\n /**\n * Tests supplied object to determine if it implements the ArrayBufferView (TypedArray) interface\n *\n * @name isArrayBufferView\n * @function\n * @param {Object} object an Object\n * @returns {boolean}\n */\n var isArrayBufferView = (jsPDFAPI.__addimage__.isArrayBufferView = function(\n object\n ) {\n return (\n supportsArrayBuffer() &&\n typeof Uint32Array !== \"undefined\" &&\n (object instanceof Int8Array ||\n object instanceof Uint8Array ||\n (typeof Uint8ClampedArray !== \"undefined\" &&\n object instanceof Uint8ClampedArray) ||\n object instanceof Int16Array ||\n object instanceof Uint16Array ||\n object instanceof Int32Array ||\n object instanceof Uint32Array ||\n object instanceof Float32Array ||\n object instanceof Float64Array)\n );\n });\n\n /**\n * Convert Binary String to ArrayBuffer\n *\n * @name binaryStringToUint8Array\n * @public\n * @function\n * @param {string} BinaryString with ImageData\n * @returns {Uint8Array}\n */\n var binaryStringToUint8Array = (jsPDFAPI.__addimage__.binaryStringToUint8Array = function(\n binary_string\n ) {\n var len = binary_string.length;\n var bytes = new Uint8Array(len);\n for (var i = 0; i < len; i++) {\n bytes[i] = binary_string.charCodeAt(i);\n }\n return bytes;\n });\n\n /**\n * Convert the Buffer to a Binary String\n *\n * @name arrayBufferToBinaryString\n * @public\n * @function\n * @param {ArrayBuffer|ArrayBufferView} ArrayBuffer buffer or bufferView with ImageData\n *\n * @returns {String}\n */\n var arrayBufferToBinaryString = (jsPDFAPI.__addimage__.arrayBufferToBinaryString = function(\n buffer\n ) {\n var out = \"\";\n // There are calls with both ArrayBuffer and already converted Uint8Array or other BufferView.\n // Do not copy the array if input is already an array.\n var buf = isArrayBufferView(buffer) ? buffer : new Uint8Array(buffer);\n for (var i = 0; i < buf.length; i += ARRAY_APPLY_BATCH) {\n // Limit the amount of characters being parsed to prevent overflow.\n // Note that while TextDecoder would be faster, it does not have the same\n // functionality as fromCharCode with any provided encodings as of 3/2021.\n out += String.fromCharCode.apply(\n null,\n buf.subarray(i, i + ARRAY_APPLY_BATCH)\n );\n }\n return out;\n });\n\n /**\n * Possible parameter for addImage, an RGBA buffer with size.\n *\n * @typedef {Object} RGBAData\n * @property {Uint8ClampedArray} data - Single dimensional array of RGBA values. For example from canvas getImageData.\n * @property {number} width - Image width as the data does not carry this information in itself.\n * @property {number} height - Image height as the data does not carry this information in itself.\n */\n\n /**\n * Adds an Image to the PDF.\n *\n * @name addImage\n * @public\n * @function\n * @param {string|HTMLImageElement|HTMLCanvasElement|Uint8Array|RGBAData} imageData imageData as base64 encoded DataUrl or Image-HTMLElement or Canvas-HTMLElement or object containing RGBA array (like output from canvas.getImageData).\n * @param {string} format format of file if filetype-recognition fails or in case of a Canvas-Element needs to be specified (default for Canvas is JPEG), e.g. 'JPEG', 'PNG', 'WEBP'\n * @param {number} x x Coordinate (in units declared at inception of PDF document) against left edge of the page\n * @param {number} y y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n * @param {number} width width of the image (in units declared at inception of PDF document)\n * @param {number} height height of the Image (in units declared at inception of PDF document)\n * @param {string} alias alias of the image (if used multiple times)\n * @param {string} compression compression of the generated JPEG, can have the values 'NONE', 'FAST', 'MEDIUM' and 'SLOW'\n * @param {number} rotation rotation of the image in degrees (0-359)\n *\n * @returns jsPDF\n */\n jsPDFAPI.addImage = function() {\n var imageData, format, x, y, w, h, alias, compression, rotation;\n\n imageData = arguments[0];\n if (typeof arguments[1] === \"number\") {\n format = UNKNOWN;\n x = arguments[1];\n y = arguments[2];\n w = arguments[3];\n h = arguments[4];\n alias = arguments[5];\n compression = arguments[6];\n rotation = arguments[7];\n } else {\n format = arguments[1];\n x = arguments[2];\n y = arguments[3];\n w = arguments[4];\n h = arguments[5];\n alias = arguments[6];\n compression = arguments[7];\n rotation = arguments[8];\n }\n\n if (\n typeof imageData === \"object\" &&\n !isDOMElement(imageData) &&\n \"imageData\" in imageData\n ) {\n var options = imageData;\n\n imageData = options.imageData;\n format = options.format || format || UNKNOWN;\n x = options.x || x || 0;\n y = options.y || y || 0;\n w = options.w || options.width || w;\n h = options.h || options.height || h;\n alias = options.alias || alias;\n compression = options.compression || compression;\n rotation = options.rotation || options.angle || rotation;\n }\n\n //If compression is not explicitly set, determine if we should use compression\n var filter = this.internal.getFilters();\n if (compression === undefined && filter.indexOf(\"FlateEncode\") !== -1) {\n compression = \"SLOW\";\n }\n\n if (isNaN(x) || isNaN(y)) {\n throw new Error(\"Invalid coordinates passed to jsPDF.addImage\");\n }\n\n initialize.call(this);\n\n var image = processImageData.call(\n this,\n imageData,\n format,\n alias,\n compression\n );\n\n writeImageToPDF.call(this, x, y, w, h, image, rotation);\n\n return this;\n };\n\n var processImageData = function(imageData, format, alias, compression) {\n var result, dataAsBinaryString;\n\n if (\n typeof imageData === \"string\" &&\n getImageFileTypeByImageData(imageData) === UNKNOWN\n ) {\n imageData = unescape(imageData);\n var tmpImageData = convertBase64ToBinaryString(imageData, false);\n\n if (tmpImageData !== \"\") {\n imageData = tmpImageData;\n } else {\n tmpImageData = jsPDFAPI.loadFile(imageData, true);\n if (tmpImageData !== undefined) {\n imageData = tmpImageData;\n }\n }\n }\n\n if (isDOMElement(imageData)) {\n imageData = getImageDataFromElement(imageData, format);\n }\n\n format = getImageFileTypeByImageData(imageData, format);\n if (!isImageTypeSupported(format)) {\n throw new Error(\n \"addImage does not support files of type '\" +\n format +\n \"', please ensure that a plugin for '\" +\n format +\n \"' support is added.\"\n );\n }\n\n // now do the heavy lifting\n\n if (notDefined(alias)) {\n alias = generateAliasFromImageData(imageData);\n }\n result = checkImagesForAlias.call(this, alias);\n\n if (!result) {\n if (supportsArrayBuffer()) {\n // no need to convert if imageData is already uint8array\n if (!(imageData instanceof Uint8Array) && format !== \"RGBA\") {\n dataAsBinaryString = imageData;\n imageData = binaryStringToUint8Array(imageData);\n }\n }\n\n result = this[\"process\" + format.toUpperCase()](\n imageData,\n getImageIndex.call(this),\n alias,\n checkCompressValue(compression),\n dataAsBinaryString\n );\n }\n\n if (!result) {\n throw new Error(\"An unknown error occurred whilst processing the image.\");\n }\n return result;\n };\n\n /**\n * @name convertBase64ToBinaryString\n * @function\n * @param {string} stringData\n * @returns {string} binary string\n */\n var convertBase64ToBinaryString = (jsPDFAPI.__addimage__.convertBase64ToBinaryString = function(\n stringData,\n throwError\n ) {\n throwError = typeof throwError === \"boolean\" ? throwError : true;\n var base64Info;\n var imageData = \"\";\n var rawData;\n\n if (typeof stringData === \"string\") {\n base64Info = extractImageFromDataUrl(stringData);\n rawData = base64Info !== null ? base64Info.data : stringData;\n\n try {\n imageData = atob(rawData);\n } catch (e) {\n if (throwError) {\n if (!validateStringAsBase64(rawData)) {\n throw new Error(\n \"Supplied Data is not a valid base64-String jsPDF.convertBase64ToBinaryString \"\n );\n } else {\n throw new Error(\n \"atob-Error in jsPDF.convertBase64ToBinaryString \" + e.message\n );\n }\n }\n }\n }\n return imageData;\n });\n\n /**\n * @name getImageProperties\n * @function\n * @param {Object} imageData\n * @returns {Object}\n */\n jsPDFAPI.getImageProperties = function(imageData) {\n var image;\n var tmpImageData = \"\";\n var format;\n\n if (isDOMElement(imageData)) {\n imageData = getImageDataFromElement(imageData);\n }\n\n if (\n typeof imageData === \"string\" &&\n getImageFileTypeByImageData(imageData) === UNKNOWN\n ) {\n tmpImageData = convertBase64ToBinaryString(imageData, false);\n\n if (tmpImageData === \"\") {\n tmpImageData = jsPDFAPI.loadFile(imageData) || \"\";\n }\n imageData = tmpImageData;\n }\n\n format = getImageFileTypeByImageData(imageData);\n if (!isImageTypeSupported(format)) {\n throw new Error(\n \"addImage does not support files of type '\" +\n format +\n \"', please ensure that a plugin for '\" +\n format +\n \"' support is added.\"\n );\n }\n\n if (supportsArrayBuffer() && !(imageData instanceof Uint8Array)) {\n imageData = binaryStringToUint8Array(imageData);\n }\n\n image = this[\"process\" + format.toUpperCase()](imageData);\n\n if (!image) {\n throw new Error(\"An unknown error occurred whilst processing the image\");\n }\n\n image.fileType = format;\n\n return image;\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF Annotations PlugIn\n *\n * There are many types of annotations in a PDF document. Annotations are placed\n * on a page at a particular location. They are not 'attached' to an object.\n *
\n * This plugin current supports
\n *
  • Goto Page (set pageNumber and top in options)\n *
  • Goto Name (set name and top in options)\n *
  • Goto URL (set url in options)\n *

    \n * \tThe destination magnification factor can also be specified when goto is a page number or a named destination. (see documentation below)\n * (set magFactor in options). XYZ is the default.\n *

    \n *

    \n * Links, Text, Popup, and FreeText are supported.\n *

    \n *

    \n * Options In PDF spec Not Implemented Yet\n *

  • link border\n *
  • named target\n *
  • page coordinates\n *
  • destination page scaling and layout\n *
  • actions other than URL and GotoPage\n *
  • background / hover actions\n *

    \n * @name annotations\n * @module\n */\n\n/*\n Destination Magnification Factors\n See PDF 1.3 Page 386 for meanings and options\n\n [supported]\n\tXYZ (options; left top zoom)\n\tFit (no options)\n\tFitH (options: top)\n\tFitV (options: left)\n\n\t[not supported]\n\tFitR\n\tFitB\n\tFitBH\n\tFitBV\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n(function(jsPDFAPI) {\n \"use strict\";\n\n var notEmpty = function(obj) {\n if (typeof obj != \"undefined\") {\n if (obj != \"\") {\n return true;\n }\n }\n };\n\n jsPDF.API.events.push([\n \"addPage\",\n function(addPageData) {\n var pageInfo = this.internal.getPageInfo(addPageData.pageNumber);\n pageInfo.pageContext.annotations = [];\n }\n ]);\n\n jsPDFAPI.events.push([\n \"putPage\",\n function(putPageData) {\n var getHorizontalCoordinateString = this.internal.getCoordinateString;\n var getVerticalCoordinateString = this.internal\n .getVerticalCoordinateString;\n var pageInfo = this.internal.getPageInfoByObjId(putPageData.objId);\n var pageAnnos = putPageData.pageContext.annotations;\n\n var anno, rect, line;\n var found = false;\n for (var a = 0; a < pageAnnos.length && !found; a++) {\n anno = pageAnnos[a];\n switch (anno.type) {\n case \"link\":\n if (\n notEmpty(anno.options.url) ||\n notEmpty(anno.options.pageNumber)\n ) {\n found = true;\n }\n break;\n case \"reference\":\n case \"text\":\n case \"freetext\":\n found = true;\n break;\n }\n }\n if (found == false) {\n return;\n }\n\n this.internal.write(\"/Annots [\");\n for (var i = 0; i < pageAnnos.length; i++) {\n anno = pageAnnos[i];\n var escape = this.internal.pdfEscape;\n var encryptor = this.internal.getEncryptor(putPageData.objId);\n\n switch (anno.type) {\n case \"reference\":\n // References to Widget Annotations (for AcroForm Fields)\n this.internal.write(\" \" + anno.object.objId + \" 0 R \");\n break;\n case \"text\":\n // Create a an object for both the text and the popup\n var objText = this.internal.newAdditionalObject();\n var objPopup = this.internal.newAdditionalObject();\n var encryptorText = this.internal.getEncryptor(objText.objId);\n\n var title = anno.title || \"Note\";\n rect =\n \"/Rect [\" +\n getHorizontalCoordinateString(anno.bounds.x) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n \" \" +\n getHorizontalCoordinateString(anno.bounds.x + anno.bounds.w) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y) +\n \"] \";\n\n line =\n \"<>\";\n objText.content = line;\n\n var parent = objText.objId + \" 0 R\";\n var popoff = 30;\n rect =\n \"/Rect [\" +\n getHorizontalCoordinateString(anno.bounds.x + popoff) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n \" \" +\n getHorizontalCoordinateString(\n anno.bounds.x + anno.bounds.w + popoff\n ) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y) +\n \"] \";\n line =\n \"<>\";\n objPopup.content = line;\n\n this.internal.write(objText.objId, \"0 R\", objPopup.objId, \"0 R\");\n\n break;\n case \"freetext\":\n rect =\n \"/Rect [\" +\n getHorizontalCoordinateString(anno.bounds.x) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y) +\n \" \" +\n getHorizontalCoordinateString(anno.bounds.x + anno.bounds.w) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n \"] \";\n var color = anno.color || \"#000000\";\n line =\n \"<>\";\n this.internal.write(line);\n break;\n case \"link\":\n if (anno.options.name) {\n var loc = this.annotations._nameMap[anno.options.name];\n anno.options.pageNumber = loc.page;\n anno.options.top = loc.y;\n } else {\n if (!anno.options.top) {\n anno.options.top = 0;\n }\n }\n\n rect =\n \"/Rect [\" +\n anno.finalBounds.x +\n \" \" +\n anno.finalBounds.y +\n \" \" +\n anno.finalBounds.w +\n \" \" +\n anno.finalBounds.h +\n \"] \";\n\n line = \"\";\n if (anno.options.url) {\n line =\n \"<>\";\n } else if (anno.options.pageNumber) {\n // first page is 0\n var info = this.internal.getPageInfo(anno.options.pageNumber);\n line =\n \"<>\";\n this.internal.write(line);\n }\n break;\n }\n }\n this.internal.write(\"]\");\n }\n ]);\n\n /**\n * @name createAnnotation\n * @function\n * @param {Object} options\n */\n jsPDFAPI.createAnnotation = function(options) {\n var pageInfo = this.internal.getCurrentPageInfo();\n switch (options.type) {\n case \"link\":\n this.link(\n options.bounds.x,\n options.bounds.y,\n options.bounds.w,\n options.bounds.h,\n options\n );\n break;\n case \"text\":\n case \"freetext\":\n pageInfo.pageContext.annotations.push(options);\n break;\n }\n };\n\n /**\n * Create a link\n *\n * valid options\n *
  • pageNumber or url [required]\n *

    If pageNumber is specified, top and zoom may also be specified

    \n * @name link\n * @function\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {Object} options\n */\n jsPDFAPI.link = function(x, y, w, h, options) {\n var pageInfo = this.internal.getCurrentPageInfo();\n var getHorizontalCoordinateString = this.internal.getCoordinateString;\n var getVerticalCoordinateString = this.internal.getVerticalCoordinateString;\n\n pageInfo.pageContext.annotations.push({\n finalBounds: {\n x: getHorizontalCoordinateString(x),\n y: getVerticalCoordinateString(y),\n w: getHorizontalCoordinateString(x + w),\n h: getVerticalCoordinateString(y + h)\n },\n options: options,\n type: \"link\"\n });\n };\n\n /**\n * Currently only supports single line text.\n * Returns the width of the text/link\n *\n * @name textWithLink\n * @function\n * @param {string} text\n * @param {number} x\n * @param {number} y\n * @param {Object} options\n * @returns {number} width the width of the text/link\n */\n jsPDFAPI.textWithLink = function(text, x, y, options) {\n var totalLineWidth = this.getTextWidth(text);\n var lineHeight = this.internal.getLineHeight() / this.internal.scaleFactor;\n var linkHeight, linkWidth;\n\n // Checking if maxWidth option is passed to determine lineWidth and number of lines for each line\n if (options.maxWidth !== undefined) {\n var { maxWidth } = options;\n linkWidth = maxWidth;\n var numOfLines = this.splitTextToSize(text, linkWidth).length;\n linkHeight = Math.ceil(lineHeight * numOfLines);\n } else {\n linkWidth = totalLineWidth;\n linkHeight = lineHeight;\n }\n\n this.text(text, x, y, options);\n\n //TODO We really need the text baseline height to do this correctly.\n // Or ability to draw text on top, bottom, center, or baseline.\n y += lineHeight * 0.2;\n //handle x position based on the align option\n if (options.align === \"center\") {\n x = x - totalLineWidth / 2; //since starting from center move the x position by half of text width\n }\n if (options.align === \"right\") {\n x = x - totalLineWidth;\n }\n this.link(x, y - lineHeight, linkWidth, linkHeight, options);\n return totalLineWidth;\n };\n\n //TODO move into external library\n /**\n * @name getTextWidth\n * @function\n * @param {string} text\n * @returns {number} txtWidth\n */\n jsPDFAPI.getTextWidth = function(text) {\n var fontSize = this.internal.getFontSize();\n var txtWidth =\n (this.getStringUnitWidth(text) * fontSize) / this.internal.scaleFactor;\n return txtWidth;\n };\n\n return this;\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2017 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF arabic parser PlugIn\n *\n * @name arabic\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * Arabic shape substitutions: char code => (isolated, final, initial, medial).\n * Arabic Substition A\n */\n var arabicSubstitionA = {\n 0x0621: [0xfe80], // ARABIC LETTER HAMZA\n 0x0622: [0xfe81, 0xfe82], // ARABIC LETTER ALEF WITH MADDA ABOVE\n 0x0623: [0xfe83, 0xfe84], // ARABIC LETTER ALEF WITH HAMZA ABOVE\n 0x0624: [0xfe85, 0xfe86], // ARABIC LETTER WAW WITH HAMZA ABOVE\n 0x0625: [0xfe87, 0xfe88], // ARABIC LETTER ALEF WITH HAMZA BELOW\n 0x0626: [0xfe89, 0xfe8a, 0xfe8b, 0xfe8c], // ARABIC LETTER YEH WITH HAMZA ABOVE\n 0x0627: [0xfe8d, 0xfe8e], // ARABIC LETTER ALEF\n 0x0628: [0xfe8f, 0xfe90, 0xfe91, 0xfe92], // ARABIC LETTER BEH\n 0x0629: [0xfe93, 0xfe94], // ARABIC LETTER TEH MARBUTA\n 0x062a: [0xfe95, 0xfe96, 0xfe97, 0xfe98], // ARABIC LETTER TEH\n 0x062b: [0xfe99, 0xfe9a, 0xfe9b, 0xfe9c], // ARABIC LETTER THEH\n 0x062c: [0xfe9d, 0xfe9e, 0xfe9f, 0xfea0], // ARABIC LETTER JEEM\n 0x062d: [0xfea1, 0xfea2, 0xfea3, 0xfea4], // ARABIC LETTER HAH\n 0x062e: [0xfea5, 0xfea6, 0xfea7, 0xfea8], // ARABIC LETTER KHAH\n 0x062f: [0xfea9, 0xfeaa], // ARABIC LETTER DAL\n 0x0630: [0xfeab, 0xfeac], // ARABIC LETTER THAL\n 0x0631: [0xfead, 0xfeae], // ARABIC LETTER REH\n 0x0632: [0xfeaf, 0xfeb0], // ARABIC LETTER ZAIN\n 0x0633: [0xfeb1, 0xfeb2, 0xfeb3, 0xfeb4], // ARABIC LETTER SEEN\n 0x0634: [0xfeb5, 0xfeb6, 0xfeb7, 0xfeb8], // ARABIC LETTER SHEEN\n 0x0635: [0xfeb9, 0xfeba, 0xfebb, 0xfebc], // ARABIC LETTER SAD\n 0x0636: [0xfebd, 0xfebe, 0xfebf, 0xfec0], // ARABIC LETTER DAD\n 0x0637: [0xfec1, 0xfec2, 0xfec3, 0xfec4], // ARABIC LETTER TAH\n 0x0638: [0xfec5, 0xfec6, 0xfec7, 0xfec8], // ARABIC LETTER ZAH\n 0x0639: [0xfec9, 0xfeca, 0xfecb, 0xfecc], // ARABIC LETTER AIN\n 0x063a: [0xfecd, 0xfece, 0xfecf, 0xfed0], // ARABIC LETTER GHAIN\n 0x0641: [0xfed1, 0xfed2, 0xfed3, 0xfed4], // ARABIC LETTER FEH\n 0x0642: [0xfed5, 0xfed6, 0xfed7, 0xfed8], // ARABIC LETTER QAF\n 0x0643: [0xfed9, 0xfeda, 0xfedb, 0xfedc], // ARABIC LETTER KAF\n 0x0644: [0xfedd, 0xfede, 0xfedf, 0xfee0], // ARABIC LETTER LAM\n 0x0645: [0xfee1, 0xfee2, 0xfee3, 0xfee4], // ARABIC LETTER MEEM\n 0x0646: [0xfee5, 0xfee6, 0xfee7, 0xfee8], // ARABIC LETTER NOON\n 0x0647: [0xfee9, 0xfeea, 0xfeeb, 0xfeec], // ARABIC LETTER HEH\n 0x0648: [0xfeed, 0xfeee], // ARABIC LETTER WAW\n 0x0649: [0xfeef, 0xfef0, 64488, 64489], // ARABIC LETTER ALEF MAKSURA\n 0x064a: [0xfef1, 0xfef2, 0xfef3, 0xfef4], // ARABIC LETTER YEH\n 0x0671: [0xfb50, 0xfb51], // ARABIC LETTER ALEF WASLA\n 0x0677: [0xfbdd], // ARABIC LETTER U WITH HAMZA ABOVE\n 0x0679: [0xfb66, 0xfb67, 0xfb68, 0xfb69], // ARABIC LETTER TTEH\n 0x067a: [0xfb5e, 0xfb5f, 0xfb60, 0xfb61], // ARABIC LETTER TTEHEH\n 0x067b: [0xfb52, 0xfb53, 0xfb54, 0xfb55], // ARABIC LETTER BEEH\n 0x067e: [0xfb56, 0xfb57, 0xfb58, 0xfb59], // ARABIC LETTER PEH\n 0x067f: [0xfb62, 0xfb63, 0xfb64, 0xfb65], // ARABIC LETTER TEHEH\n 0x0680: [0xfb5a, 0xfb5b, 0xfb5c, 0xfb5d], // ARABIC LETTER BEHEH\n 0x0683: [0xfb76, 0xfb77, 0xfb78, 0xfb79], // ARABIC LETTER NYEH\n 0x0684: [0xfb72, 0xfb73, 0xfb74, 0xfb75], // ARABIC LETTER DYEH\n 0x0686: [0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d], // ARABIC LETTER TCHEH\n 0x0687: [0xfb7e, 0xfb7f, 0xfb80, 0xfb81], // ARABIC LETTER TCHEHEH\n 0x0688: [0xfb88, 0xfb89], // ARABIC LETTER DDAL\n 0x068c: [0xfb84, 0xfb85], // ARABIC LETTER DAHAL\n 0x068d: [0xfb82, 0xfb83], // ARABIC LETTER DDAHAL\n 0x068e: [0xfb86, 0xfb87], // ARABIC LETTER DUL\n 0x0691: [0xfb8c, 0xfb8d], // ARABIC LETTER RREH\n 0x0698: [0xfb8a, 0xfb8b], // ARABIC LETTER JEH\n 0x06a4: [0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d], // ARABIC LETTER VEH\n 0x06a6: [0xfb6e, 0xfb6f, 0xfb70, 0xfb71], // ARABIC LETTER PEHEH\n 0x06a9: [0xfb8e, 0xfb8f, 0xfb90, 0xfb91], // ARABIC LETTER KEHEH\n 0x06ad: [0xfbd3, 0xfbd4, 0xfbd5, 0xfbd6], // ARABIC LETTER NG\n 0x06af: [0xfb92, 0xfb93, 0xfb94, 0xfb95], // ARABIC LETTER GAF\n 0x06b1: [0xfb9a, 0xfb9b, 0xfb9c, 0xfb9d], // ARABIC LETTER NGOEH\n 0x06b3: [0xfb96, 0xfb97, 0xfb98, 0xfb99], // ARABIC LETTER GUEH\n 0x06ba: [0xfb9e, 0xfb9f], // ARABIC LETTER NOON GHUNNA\n 0x06bb: [0xfba0, 0xfba1, 0xfba2, 0xfba3], // ARABIC LETTER RNOON\n 0x06be: [0xfbaa, 0xfbab, 0xfbac, 0xfbad], // ARABIC LETTER HEH DOACHASHMEE\n 0x06c0: [0xfba4, 0xfba5], // ARABIC LETTER HEH WITH YEH ABOVE\n 0x06c1: [0xfba6, 0xfba7, 0xfba8, 0xfba9], // ARABIC LETTER HEH GOAL\n 0x06c5: [0xfbe0, 0xfbe1], // ARABIC LETTER KIRGHIZ OE\n 0x06c6: [0xfbd9, 0xfbda], // ARABIC LETTER OE\n 0x06c7: [0xfbd7, 0xfbd8], // ARABIC LETTER U\n 0x06c8: [0xfbdb, 0xfbdc], // ARABIC LETTER YU\n 0x06c9: [0xfbe2, 0xfbe3], // ARABIC LETTER KIRGHIZ YU\n 0x06cb: [0xfbde, 0xfbdf], // ARABIC LETTER VE\n 0x06cc: [0xfbfc, 0xfbfd, 0xfbfe, 0xfbff], // ARABIC LETTER FARSI YEH\n 0x06d0: [0xfbe4, 0xfbe5, 0xfbe6, 0xfbe7], //ARABIC LETTER E\n 0x06d2: [0xfbae, 0xfbaf], // ARABIC LETTER YEH BARREE\n 0x06d3: [0xfbb0, 0xfbb1] // ARABIC LETTER YEH BARREE WITH HAMZA ABOVE\n };\n\n /*\n var ligaturesSubstitutionA = {\n 0xFBEA: []// ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM\n };\n */\n\n var ligatures = {\n 0xfedf: {\n 0xfe82: 0xfef5, // ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM\n 0xfe84: 0xfef7, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM\n 0xfe88: 0xfef9, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM\n 0xfe8e: 0xfefb // ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM\n },\n 0xfee0: {\n 0xfe82: 0xfef6, // ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM\n 0xfe84: 0xfef8, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM\n 0xfe88: 0xfefa, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM\n 0xfe8e: 0xfefc // ARABIC LIGATURE LAM WITH ALEF FINAL FORM\n },\n 0xfe8d: { 0xfedf: { 0xfee0: { 0xfeea: 0xfdf2 } } }, // ALLAH\n 0x0651: {\n 0x064c: 0xfc5e, // Shadda + Dammatan\n 0x064d: 0xfc5f, // Shadda + Kasratan\n 0x064e: 0xfc60, // Shadda + Fatha\n 0x064f: 0xfc61, // Shadda + Damma\n 0x0650: 0xfc62 // Shadda + Kasra\n }\n };\n\n var arabic_diacritics = {\n 1612: 64606, // Shadda + Dammatan\n 1613: 64607, // Shadda + Kasratan\n 1614: 64608, // Shadda + Fatha\n 1615: 64609, // Shadda + Damma\n 1616: 64610 // Shadda + Kasra\n };\n\n var alfletter = [1570, 1571, 1573, 1575];\n\n var noChangeInForm = -1;\n var isolatedForm = 0;\n var finalForm = 1;\n var initialForm = 2;\n var medialForm = 3;\n\n jsPDFAPI.__arabicParser__ = {};\n\n //private\n var isInArabicSubstitutionA = (jsPDFAPI.__arabicParser__.isInArabicSubstitutionA = function(\n letter\n ) {\n return typeof arabicSubstitionA[letter.charCodeAt(0)] !== \"undefined\";\n });\n\n var isArabicLetter = (jsPDFAPI.__arabicParser__.isArabicLetter = function(\n letter\n ) {\n return (\n typeof letter === \"string\" &&\n /^[\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF\\uFB50-\\uFDFF\\uFE70-\\uFEFF]+$/.test(\n letter\n )\n );\n });\n\n var isArabicEndLetter = (jsPDFAPI.__arabicParser__.isArabicEndLetter = function(\n letter\n ) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length <= 2\n );\n });\n\n var isArabicAlfLetter = (jsPDFAPI.__arabicParser__.isArabicAlfLetter = function(\n letter\n ) {\n return (\n isArabicLetter(letter) && alfletter.indexOf(letter.charCodeAt(0)) >= 0\n );\n });\n\n jsPDFAPI.__arabicParser__.arabicLetterHasIsolatedForm = function(letter) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length >= 1\n );\n };\n\n var arabicLetterHasFinalForm = (jsPDFAPI.__arabicParser__.arabicLetterHasFinalForm = function(\n letter\n ) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length >= 2\n );\n });\n\n jsPDFAPI.__arabicParser__.arabicLetterHasInitialForm = function(letter) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length >= 3\n );\n };\n\n var arabicLetterHasMedialForm = (jsPDFAPI.__arabicParser__.arabicLetterHasMedialForm = function(\n letter\n ) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length == 4\n );\n });\n\n var resolveLigatures = (jsPDFAPI.__arabicParser__.resolveLigatures = function(\n letters\n ) {\n var i = 0;\n var tmpLigatures = ligatures;\n var result = \"\";\n var effectedLetters = 0;\n\n for (i = 0; i < letters.length; i += 1) {\n if (typeof tmpLigatures[letters.charCodeAt(i)] !== \"undefined\") {\n effectedLetters++;\n tmpLigatures = tmpLigatures[letters.charCodeAt(i)];\n\n if (typeof tmpLigatures === \"number\") {\n result += String.fromCharCode(tmpLigatures);\n tmpLigatures = ligatures;\n effectedLetters = 0;\n }\n if (i === letters.length - 1) {\n tmpLigatures = ligatures;\n result += letters.charAt(i - (effectedLetters - 1));\n i = i - (effectedLetters - 1);\n effectedLetters = 0;\n }\n } else {\n tmpLigatures = ligatures;\n result += letters.charAt(i - effectedLetters);\n i = i - effectedLetters;\n effectedLetters = 0;\n }\n }\n\n return result;\n });\n\n jsPDFAPI.__arabicParser__.isArabicDiacritic = function(letter) {\n return (\n letter !== undefined &&\n arabic_diacritics[letter.charCodeAt(0)] !== undefined\n );\n };\n\n var getCorrectForm = (jsPDFAPI.__arabicParser__.getCorrectForm = function(\n currentChar,\n beforeChar,\n nextChar\n ) {\n if (!isArabicLetter(currentChar)) {\n return -1;\n }\n\n if (isInArabicSubstitutionA(currentChar) === false) {\n return noChangeInForm;\n }\n if (\n !arabicLetterHasFinalForm(currentChar) ||\n (!isArabicLetter(beforeChar) && !isArabicLetter(nextChar)) ||\n (!isArabicLetter(nextChar) && isArabicEndLetter(beforeChar)) ||\n (isArabicEndLetter(currentChar) && !isArabicLetter(beforeChar)) ||\n (isArabicEndLetter(currentChar) && isArabicAlfLetter(beforeChar)) ||\n (isArabicEndLetter(currentChar) && isArabicEndLetter(beforeChar))\n ) {\n return isolatedForm;\n }\n\n if (\n arabicLetterHasMedialForm(currentChar) &&\n isArabicLetter(beforeChar) &&\n !isArabicEndLetter(beforeChar) &&\n isArabicLetter(nextChar) &&\n arabicLetterHasFinalForm(nextChar)\n ) {\n return medialForm;\n }\n\n if (isArabicEndLetter(currentChar) || !isArabicLetter(nextChar)) {\n return finalForm;\n }\n return initialForm;\n });\n\n /**\n * @name processArabic\n * @function\n * @param {string} text\n * @returns {string}\n */\n var parseArabic = function(text) {\n text = text || \"\";\n\n var result = \"\";\n var i = 0;\n var j = 0;\n var position = 0;\n var currentLetter = \"\";\n var prevLetter = \"\";\n var nextLetter = \"\";\n\n var words = text.split(\"\\\\s+\");\n var newWords = [];\n for (i = 0; i < words.length; i += 1) {\n newWords.push(\"\");\n for (j = 0; j < words[i].length; j += 1) {\n currentLetter = words[i][j];\n prevLetter = words[i][j - 1];\n nextLetter = words[i][j + 1];\n if (isArabicLetter(currentLetter)) {\n position = getCorrectForm(currentLetter, prevLetter, nextLetter);\n if (position !== -1) {\n newWords[i] += String.fromCharCode(\n arabicSubstitionA[currentLetter.charCodeAt(0)][position]\n );\n } else {\n newWords[i] += currentLetter;\n }\n } else {\n newWords[i] += currentLetter;\n }\n }\n\n newWords[i] = resolveLigatures(newWords[i]);\n }\n result = newWords.join(\" \");\n\n return result;\n };\n\n var processArabic = (jsPDFAPI.__arabicParser__.processArabic = jsPDFAPI.processArabic = function() {\n var text =\n typeof arguments[0] === \"string\" ? arguments[0] : arguments[0].text;\n var tmpText = [];\n var result;\n\n if (Array.isArray(text)) {\n var i = 0;\n tmpText = [];\n for (i = 0; i < text.length; i += 1) {\n if (Array.isArray(text[i])) {\n tmpText.push([parseArabic(text[i][0]), text[i][1], text[i][2]]);\n } else {\n tmpText.push([parseArabic(text[i])]);\n }\n }\n result = tmpText;\n } else {\n result = parseArabic(text);\n }\n if (typeof arguments[0] === \"string\") {\n return result;\n } else {\n arguments[0].text = result;\n return arguments[0];\n }\n });\n\n jsPDFAPI.events.push([\"preProcessText\", processArabic]);\n})(jsPDF.API);\n","/** @license\n * jsPDF Autoprint Plugin\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name autoprint\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * Makes the PDF automatically open the print-Dialog when opened in a PDF-viewer.\n *\n * @name autoPrint\n * @function\n * @param {Object} options (optional) Set the attribute variant to 'non-conform' (default) or 'javascript' to activate different methods of automatic printing when opening in a PDF-viewer .\n * @returns {jsPDF}\n * @example\n * var doc = new jsPDF();\n * doc.text(10, 10, 'This is a test');\n * doc.autoPrint({variant: 'non-conform'});\n * doc.save('autoprint.pdf');\n */\n jsPDFAPI.autoPrint = function(options) {\n \"use strict\";\n var refAutoPrintTag;\n options = options || {};\n options.variant = options.variant || \"non-conform\";\n\n switch (options.variant) {\n case \"javascript\":\n //https://github.com/Rob--W/pdf.js/commit/c676ecb5a0f54677b9f3340c3ef2cf42225453bb\n this.addJS(\"print({});\");\n break;\n case \"non-conform\":\n default:\n this.internal.events.subscribe(\"postPutResources\", function() {\n refAutoPrintTag = this.internal.newObject();\n this.internal.out(\"<<\");\n this.internal.out(\"/S /Named\");\n this.internal.out(\"/Type /Action\");\n this.internal.out(\"/N /Print\");\n this.internal.out(\">>\");\n this.internal.out(\"endobj\");\n });\n\n this.internal.events.subscribe(\"putCatalog\", function() {\n this.internal.out(\"/OpenAction \" + refAutoPrintTag + \" 0 R\");\n });\n break;\n }\n return this;\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF Canvas PlugIn\n * This plugin mimics the HTML5 Canvas\n *\n * The goal is to provide a way for current canvas users to print directly to a PDF.\n * @name canvas\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * @class Canvas\n * @classdesc A Canvas Wrapper for jsPDF\n */\n var Canvas = function() {\n var jsPdfInstance = undefined;\n Object.defineProperty(this, \"pdf\", {\n get: function() {\n return jsPdfInstance;\n },\n set: function(value) {\n jsPdfInstance = value;\n }\n });\n\n var _width = 150;\n /**\n * The height property is a positive integer reflecting the height HTML attribute of the element interpreted in CSS pixels. When the attribute is not specified, or if it is set to an invalid value, like a negative, the default value of 150 is used.\n * This is one of the two properties, the other being width, that controls the size of the canvas.\n *\n * @name width\n */\n Object.defineProperty(this, \"width\", {\n get: function() {\n return _width;\n },\n set: function(value) {\n if (isNaN(value) || Number.isInteger(value) === false || value < 0) {\n _width = 150;\n } else {\n _width = value;\n }\n if (this.getContext(\"2d\").pageWrapXEnabled) {\n this.getContext(\"2d\").pageWrapX = _width + 1;\n }\n }\n });\n\n var _height = 300;\n /**\n * The width property is a positive integer reflecting the width HTML attribute of the element interpreted in CSS pixels. When the attribute is not specified, or if it is set to an invalid value, like a negative, the default value of 300 is used.\n * This is one of the two properties, the other being height, that controls the size of the canvas.\n *\n * @name height\n */\n Object.defineProperty(this, \"height\", {\n get: function() {\n return _height;\n },\n set: function(value) {\n if (isNaN(value) || Number.isInteger(value) === false || value < 0) {\n _height = 300;\n } else {\n _height = value;\n }\n if (this.getContext(\"2d\").pageWrapYEnabled) {\n this.getContext(\"2d\").pageWrapY = _height + 1;\n }\n }\n });\n\n var _childNodes = [];\n Object.defineProperty(this, \"childNodes\", {\n get: function() {\n return _childNodes;\n },\n set: function(value) {\n _childNodes = value;\n }\n });\n\n var _style = {};\n Object.defineProperty(this, \"style\", {\n get: function() {\n return _style;\n },\n set: function(value) {\n _style = value;\n }\n });\n\n Object.defineProperty(this, \"parentNode\", {});\n };\n\n /**\n * The getContext() method returns a drawing context on the canvas, or null if the context identifier is not supported.\n *\n * @name getContext\n * @function\n * @param {string} contextType Is a String containing the context identifier defining the drawing context associated to the canvas. Possible value is \"2d\", leading to the creation of a Context2D object representing a two-dimensional rendering context.\n * @param {object} contextAttributes\n */\n Canvas.prototype.getContext = function(contextType, contextAttributes) {\n contextType = contextType || \"2d\";\n var key;\n\n if (contextType !== \"2d\") {\n return null;\n }\n for (key in contextAttributes) {\n if (this.pdf.context2d.hasOwnProperty(key)) {\n this.pdf.context2d[key] = contextAttributes[key];\n }\n }\n this.pdf.context2d._canvas = this;\n return this.pdf.context2d;\n };\n\n /**\n * The toDataURL() method is just a stub to throw an error if accidently called.\n *\n * @name toDataURL\n * @function\n */\n Canvas.prototype.toDataURL = function() {\n throw new Error(\"toDataURL is not implemented.\");\n };\n\n jsPDFAPI.events.push([\n \"initialized\",\n function() {\n this.canvas = new Canvas();\n this.canvas.pdf = this;\n }\n ]);\n\n return this;\n})(jsPDF.API);\n","/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com\n * 2013 Eduardo Menezes de Morais, eduardo.morais@usp.br\n * 2013 Lee Driscoll, https://github.com/lsdriscoll\n * 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria\n * 2014 James Hall, james@parall.ax\n * 2014 Diego Casorran, https://github.com/diegocr\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name cell\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n var NO_MARGINS = { left: 0, top: 0, bottom: 0, right: 0 };\n\n var px2pt = (0.264583 * 72) / 25.4;\n var printingHeaderRow = false;\n\n var _initialize = function() {\n if (typeof this.internal.__cell__ === \"undefined\") {\n this.internal.__cell__ = {};\n this.internal.__cell__.padding = 3;\n this.internal.__cell__.headerFunction = undefined;\n this.internal.__cell__.margins = Object.assign({}, NO_MARGINS);\n this.internal.__cell__.margins.width = this.getPageWidth();\n _reset.call(this);\n }\n };\n\n var _reset = function() {\n this.internal.__cell__.lastCell = new Cell();\n this.internal.__cell__.pages = 1;\n };\n\n var Cell = function() {\n var _x = arguments[0];\n Object.defineProperty(this, \"x\", {\n enumerable: true,\n get: function() {\n return _x;\n },\n set: function(value) {\n _x = value;\n }\n });\n var _y = arguments[1];\n Object.defineProperty(this, \"y\", {\n enumerable: true,\n get: function() {\n return _y;\n },\n set: function(value) {\n _y = value;\n }\n });\n var _width = arguments[2];\n Object.defineProperty(this, \"width\", {\n enumerable: true,\n get: function() {\n return _width;\n },\n set: function(value) {\n _width = value;\n }\n });\n var _height = arguments[3];\n Object.defineProperty(this, \"height\", {\n enumerable: true,\n get: function() {\n return _height;\n },\n set: function(value) {\n _height = value;\n }\n });\n var _text = arguments[4];\n Object.defineProperty(this, \"text\", {\n enumerable: true,\n get: function() {\n return _text;\n },\n set: function(value) {\n _text = value;\n }\n });\n var _lineNumber = arguments[5];\n Object.defineProperty(this, \"lineNumber\", {\n enumerable: true,\n get: function() {\n return _lineNumber;\n },\n set: function(value) {\n _lineNumber = value;\n }\n });\n var _align = arguments[6];\n Object.defineProperty(this, \"align\", {\n enumerable: true,\n get: function() {\n return _align;\n },\n set: function(value) {\n _align = value;\n }\n });\n\n return this;\n };\n\n Cell.prototype.clone = function() {\n return new Cell(\n this.x,\n this.y,\n this.width,\n this.height,\n this.text,\n this.lineNumber,\n this.align\n );\n };\n\n Cell.prototype.toArray = function() {\n return [\n this.x,\n this.y,\n this.width,\n this.height,\n this.text,\n this.lineNumber,\n this.align\n ];\n };\n\n /**\n * @name setHeaderFunction\n * @function\n * @param {function} func\n */\n jsPDFAPI.setHeaderFunction = function(func) {\n _initialize.call(this);\n this.internal.__cell__.headerFunction =\n typeof func === \"function\" ? func : undefined;\n return this;\n };\n\n /**\n * @name getTextDimensions\n * @function\n * @param {string} txt\n * @returns {Object} dimensions\n */\n jsPDFAPI.getTextDimensions = function(text, options) {\n _initialize.call(this);\n options = options || {};\n var fontSize = options.fontSize || this.getFontSize();\n var font = options.font || this.getFont();\n var scaleFactor = options.scaleFactor || this.internal.scaleFactor;\n var width = 0;\n var amountOfLines = 0;\n var height = 0;\n var tempWidth = 0;\n var scope = this;\n\n if (!Array.isArray(text) && typeof text !== \"string\") {\n if (typeof text === \"number\") {\n text = String(text);\n } else {\n throw new Error(\n \"getTextDimensions expects text-parameter to be of type String or type Number or an Array of Strings.\"\n );\n }\n }\n\n const maxWidth = options.maxWidth;\n if (maxWidth > 0) {\n if (typeof text === \"string\") {\n text = this.splitTextToSize(text, maxWidth);\n } else if (Object.prototype.toString.call(text) === \"[object Array]\") {\n text = text.reduce(function(acc, textLine) {\n return acc.concat(scope.splitTextToSize(textLine, maxWidth));\n }, []);\n }\n } else {\n // Without the else clause, it will not work if you do not pass along maxWidth\n text = Array.isArray(text) ? text : [text];\n }\n\n for (var i = 0; i < text.length; i++) {\n tempWidth = this.getStringUnitWidth(text[i], { font: font }) * fontSize;\n if (width < tempWidth) {\n width = tempWidth;\n }\n }\n\n if (width !== 0) {\n amountOfLines = text.length;\n }\n\n width = width / scaleFactor;\n height = Math.max(\n (amountOfLines * fontSize * this.getLineHeightFactor() -\n fontSize * (this.getLineHeightFactor() - 1)) /\n scaleFactor,\n 0\n );\n return { w: width, h: height };\n };\n\n /**\n * @name cellAddPage\n * @function\n */\n jsPDFAPI.cellAddPage = function() {\n _initialize.call(this);\n\n this.addPage();\n\n var margins = this.internal.__cell__.margins || NO_MARGINS;\n this.internal.__cell__.lastCell = new Cell(\n margins.left,\n margins.top,\n undefined,\n undefined\n );\n this.internal.__cell__.pages += 1;\n\n return this;\n };\n\n /**\n * @name cell\n * @function\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n * @param {string} text\n * @param {number} lineNumber lineNumber\n * @param {string} align\n * @return {jsPDF} jsPDF-instance\n */\n var cell = (jsPDFAPI.cell = function() {\n var currentCell;\n\n if (arguments[0] instanceof Cell) {\n currentCell = arguments[0];\n } else {\n currentCell = new Cell(\n arguments[0],\n arguments[1],\n arguments[2],\n arguments[3],\n arguments[4],\n arguments[5]\n );\n }\n _initialize.call(this);\n var lastCell = this.internal.__cell__.lastCell;\n var padding = this.internal.__cell__.padding;\n var margins = this.internal.__cell__.margins || NO_MARGINS;\n var tableHeaderRow = this.internal.__cell__.tableHeaderRow;\n var printHeaders = this.internal.__cell__.printHeaders;\n // If this is not the first cell, we must change its position\n if (typeof lastCell.lineNumber !== \"undefined\") {\n if (lastCell.lineNumber === currentCell.lineNumber) {\n //Same line\n currentCell.x = (lastCell.x || 0) + (lastCell.width || 0);\n currentCell.y = lastCell.y || 0;\n } else {\n //New line\n if (\n lastCell.y + lastCell.height + currentCell.height + margins.bottom >\n this.getPageHeight()\n ) {\n this.cellAddPage();\n currentCell.y = margins.top;\n if (printHeaders && tableHeaderRow) {\n this.printHeaderRow(currentCell.lineNumber, true);\n currentCell.y += tableHeaderRow[0].height;\n }\n } else {\n currentCell.y = lastCell.y + lastCell.height || currentCell.y;\n }\n }\n }\n\n if (typeof currentCell.text[0] !== \"undefined\") {\n this.rect(\n currentCell.x,\n currentCell.y,\n currentCell.width,\n currentCell.height,\n printingHeaderRow === true ? \"FD\" : undefined\n );\n if (currentCell.align === \"right\") {\n this.text(\n currentCell.text,\n currentCell.x + currentCell.width - padding,\n currentCell.y + padding,\n { align: \"right\", baseline: \"top\" }\n );\n } else if (currentCell.align === \"center\") {\n this.text(\n currentCell.text,\n currentCell.x + currentCell.width / 2,\n currentCell.y + padding,\n {\n align: \"center\",\n baseline: \"top\",\n maxWidth: currentCell.width - padding - padding\n }\n );\n } else {\n this.text(\n currentCell.text,\n currentCell.x + padding,\n currentCell.y + padding,\n {\n align: \"left\",\n baseline: \"top\",\n maxWidth: currentCell.width - padding - padding\n }\n );\n }\n }\n this.internal.__cell__.lastCell = currentCell;\n return this;\n });\n\n /**\n * Create a table from a set of data.\n * @name table\n * @function\n * @param {Integer} [x] : left-position for top-left corner of table\n * @param {Integer} [y] top-position for top-left corner of table\n * @param {Object[]} [data] An array of objects containing key-value pairs corresponding to a row of data.\n * @param {String[]} [headers] Omit or null to auto-generate headers at a performance cost\n\n * @param {Object} [config.printHeaders] True to print column headers at the top of every page\n * @param {Object} [config.autoSize] True to dynamically set the column widths to match the widest cell value\n * @param {Object} [config.margins] margin values for left, top, bottom, and width\n * @param {Object} [config.fontSize] Integer fontSize to use (optional)\n * @param {Object} [config.padding] cell-padding in pt to use (optional)\n * @param {Object} [config.headerBackgroundColor] default is #c8c8c8 (optional)\n * @param {Object} [config.headerTextColor] default is #000 (optional)\n * @param {Object} [config.rowStart] callback to handle before print each row (optional)\n * @param {Object} [config.cellStart] callback to handle before print each cell (optional)\n * @returns {jsPDF} jsPDF-instance\n */\n\n jsPDFAPI.table = function(x, y, data, headers, config) {\n _initialize.call(this);\n if (!data) {\n throw new Error(\"No data for PDF table.\");\n }\n\n config = config || {};\n\n var headerNames = [],\n headerLabels = [],\n headerAligns = [],\n i,\n columnMatrix = {},\n columnWidths = {},\n column,\n columnMinWidths = [],\n j,\n tableHeaderConfigs = [],\n //set up defaults. If a value is provided in config, defaults will be overwritten:\n autoSize = config.autoSize || false,\n printHeaders = config.printHeaders === false ? false : true,\n fontSize =\n config.css && typeof config.css[\"font-size\"] !== \"undefined\"\n ? config.css[\"font-size\"] * 16\n : config.fontSize || 12,\n margins =\n config.margins ||\n Object.assign({ width: this.getPageWidth() }, NO_MARGINS),\n padding = typeof config.padding === \"number\" ? config.padding : 3,\n headerBackgroundColor = config.headerBackgroundColor || \"#c8c8c8\",\n headerTextColor = config.headerTextColor || \"#000\";\n\n _reset.call(this);\n\n this.internal.__cell__.printHeaders = printHeaders;\n this.internal.__cell__.margins = margins;\n this.internal.__cell__.table_font_size = fontSize;\n this.internal.__cell__.padding = padding;\n this.internal.__cell__.headerBackgroundColor = headerBackgroundColor;\n this.internal.__cell__.headerTextColor = headerTextColor;\n this.setFontSize(fontSize);\n\n // Set header values\n if (headers === undefined || headers === null) {\n // No headers defined so we derive from data\n headerNames = Object.keys(data[0]);\n headerLabels = headerNames;\n headerAligns = headerNames.map(function() {\n return \"left\";\n });\n } else if (Array.isArray(headers) && typeof headers[0] === \"object\") {\n headerNames = headers.map(function(header) {\n return header.name;\n });\n headerLabels = headers.map(function(header) {\n return header.prompt || header.name || \"\";\n });\n headerAligns = headers.map(function(header) {\n return header.align || \"left\";\n });\n // Split header configs into names and prompts\n for (i = 0; i < headers.length; i += 1) {\n columnWidths[headers[i].name] = headers[i].width * px2pt;\n }\n } else if (Array.isArray(headers) && typeof headers[0] === \"string\") {\n headerNames = headers;\n headerLabels = headerNames;\n headerAligns = headerNames.map(function() {\n return \"left\";\n });\n }\n\n if (\n autoSize ||\n (Array.isArray(headers) && typeof headers[0] === \"string\")\n ) {\n var headerName;\n for (i = 0; i < headerNames.length; i += 1) {\n headerName = headerNames[i];\n\n // Create a matrix of columns e.g., {column_title: [row1_Record, row2_Record]}\n\n columnMatrix[headerName] = data.map(function(rec) {\n return rec[headerName];\n });\n\n // get header width\n this.setFont(undefined, \"bold\");\n columnMinWidths.push(\n this.getTextDimensions(headerLabels[i], {\n fontSize: this.internal.__cell__.table_font_size,\n scaleFactor: this.internal.scaleFactor\n }).w\n );\n column = columnMatrix[headerName];\n\n // get cell widths\n this.setFont(undefined, \"normal\");\n for (j = 0; j < column.length; j += 1) {\n columnMinWidths.push(\n this.getTextDimensions(column[j], {\n fontSize: this.internal.__cell__.table_font_size,\n scaleFactor: this.internal.scaleFactor\n }).w\n );\n }\n\n // get final column width\n columnWidths[headerName] =\n Math.max.apply(null, columnMinWidths) + padding + padding;\n\n //have to reset\n columnMinWidths = [];\n }\n }\n\n // -- Construct the table\n\n if (printHeaders) {\n var row = {};\n for (i = 0; i < headerNames.length; i += 1) {\n row[headerNames[i]] = {};\n row[headerNames[i]].text = headerLabels[i];\n row[headerNames[i]].align = headerAligns[i];\n }\n\n var rowHeight = calculateLineHeight.call(this, row, columnWidths);\n\n // Construct the header row\n tableHeaderConfigs = headerNames.map(function(value) {\n return new Cell(\n x,\n y,\n columnWidths[value],\n rowHeight,\n row[value].text,\n undefined,\n row[value].align\n );\n });\n\n // Store the table header config\n this.setTableHeaderRow(tableHeaderConfigs);\n\n // Print the header for the start of the table\n this.printHeaderRow(1, false);\n }\n\n // Construct the data rows\n\n var align = headers.reduce(function(pv, cv) {\n pv[cv.name] = cv.align;\n return pv;\n }, {});\n for (i = 0; i < data.length; i += 1) {\n if (\"rowStart\" in config && config.rowStart instanceof Function) {\n config.rowStart(\n {\n row: i,\n data: data[i]\n },\n this\n );\n }\n var lineHeight = calculateLineHeight.call(this, data[i], columnWidths);\n\n for (j = 0; j < headerNames.length; j += 1) {\n var cellData = data[i][headerNames[j]];\n if (\"cellStart\" in config && config.cellStart instanceof Function) {\n config.cellStart(\n {\n row: i,\n col: j,\n data: cellData\n },\n this\n );\n }\n cell.call(\n this,\n new Cell(\n x,\n y,\n columnWidths[headerNames[j]],\n lineHeight,\n cellData,\n i + 2,\n align[headerNames[j]]\n )\n );\n }\n }\n this.internal.__cell__.table_x = x;\n this.internal.__cell__.table_y = y;\n return this;\n };\n\n /**\n * Calculate the height for containing the highest column\n *\n * @name calculateLineHeight\n * @function\n * @param {Object[]} model is the line of data we want to calculate the height of\n * @param {Integer[]} columnWidths is size of each column\n * @returns {number} lineHeight\n * @private\n */\n var calculateLineHeight = function calculateLineHeight(model, columnWidths) {\n var padding = this.internal.__cell__.padding;\n var fontSize = this.internal.__cell__.table_font_size;\n var scaleFactor = this.internal.scaleFactor;\n\n return Object.keys(model)\n .map(function(key) {\n var value = model[key];\n return this.splitTextToSize(\n value.hasOwnProperty(\"text\") ? value.text : value,\n columnWidths[key] - padding - padding\n );\n }, this)\n .map(function(value) {\n return (\n (this.getLineHeightFactor() * value.length * fontSize) / scaleFactor +\n padding +\n padding\n );\n }, this)\n .reduce(function(pv, cv) {\n return Math.max(pv, cv);\n }, 0);\n };\n\n /**\n * Store the config for outputting a table header\n *\n * @name setTableHeaderRow\n * @function\n * @param {Object[]} config\n * An array of cell configs that would define a header row: Each config matches the config used by jsPDFAPI.cell\n * except the lineNumber parameter is excluded\n */\n jsPDFAPI.setTableHeaderRow = function(config) {\n _initialize.call(this);\n this.internal.__cell__.tableHeaderRow = config;\n };\n\n /**\n * Output the store header row\n *\n * @name printHeaderRow\n * @function\n * @param {number} lineNumber The line number to output the header at\n * @param {boolean} new_page\n */\n jsPDFAPI.printHeaderRow = function(lineNumber, new_page) {\n _initialize.call(this);\n if (!this.internal.__cell__.tableHeaderRow) {\n throw new Error(\"Property tableHeaderRow does not exist.\");\n }\n\n var tableHeaderCell;\n\n printingHeaderRow = true;\n if (typeof this.internal.__cell__.headerFunction === \"function\") {\n var position = this.internal.__cell__.headerFunction(\n this,\n this.internal.__cell__.pages\n );\n this.internal.__cell__.lastCell = new Cell(\n position[0],\n position[1],\n position[2],\n position[3],\n undefined,\n -1\n );\n }\n this.setFont(undefined, \"bold\");\n\n var tempHeaderConf = [];\n for (var i = 0; i < this.internal.__cell__.tableHeaderRow.length; i += 1) {\n tableHeaderCell = this.internal.__cell__.tableHeaderRow[i].clone();\n if (new_page) {\n tableHeaderCell.y = this.internal.__cell__.margins.top || 0;\n tempHeaderConf.push(tableHeaderCell);\n }\n tableHeaderCell.lineNumber = lineNumber;\n var currentTextColor = this.getTextColor();\n this.setTextColor(this.internal.__cell__.headerTextColor);\n this.setFillColor(this.internal.__cell__.headerBackgroundColor);\n cell.call(this, tableHeaderCell);\n this.setTextColor(currentTextColor);\n }\n if (tempHeaderConf.length > 0) {\n this.setTableHeaderRow(tempHeaderConf);\n }\n this.setFont(undefined, \"normal\");\n printingHeaderRow = false;\n };\n})(jsPDF.API);\n","/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF JavaScript plugin\n *\n * @name javascript\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n var jsNamesObj, jsJsObj, text;\n /**\n * @name addJS\n * @function\n * @param {string} javascript The javascript to be embedded into the PDF-file.\n * @returns {jsPDF}\n */\n jsPDFAPI.addJS = function(javascript) {\n text = javascript;\n this.internal.events.subscribe(\"postPutResources\", function() {\n jsNamesObj = this.internal.newObject();\n this.internal.out(\"<<\");\n this.internal.out(\"/Names [(EmbeddedJS) \" + (jsNamesObj + 1) + \" 0 R]\");\n this.internal.out(\">>\");\n this.internal.out(\"endobj\");\n\n jsJsObj = this.internal.newObject();\n this.internal.out(\"<<\");\n this.internal.out(\"/S /JavaScript\");\n this.internal.out(\"/JS (\" + text + \")\");\n this.internal.out(\">>\");\n this.internal.out(\"endobj\");\n });\n this.internal.events.subscribe(\"putCatalog\", function() {\n if (jsNamesObj !== undefined && jsJsObj !== undefined) {\n this.internal.out(\"/Names <>\");\n }\n });\n return this;\n };\n})(jsPDF.API);\n","/* eslint-disable no-fallthrough */\r\n/* eslint-disable no-console */\r\n/**\r\n * @license\r\n * jsPDF Context2D PlugIn Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\r\n *\r\n * Licensed under the MIT License. http://opensource.org/licenses/mit-license\r\n */\r\n\r\nimport { jsPDF } from \"../jspdf.js\";\r\nimport { RGBColor } from \"../libs/rgbcolor.js\";\r\nimport { console } from \"../libs/console.js\";\r\nimport {\r\n buildFontFaceMap,\r\n parseFontFamily,\r\n resolveFontFace\r\n} from \"../libs/fontFace.js\";\r\n\r\n/**\r\n * This plugin mimics the HTML5 CanvasRenderingContext2D.\r\n *\r\n * The goal is to provide a way for current canvas implementations to print directly to a PDF.\r\n *\r\n * @name context2d\r\n * @module\r\n */\r\n(function(jsPDFAPI) {\r\n \"use strict\";\r\n var ContextLayer = function(ctx) {\r\n ctx = ctx || {};\r\n this.isStrokeTransparent = ctx.isStrokeTransparent || false;\r\n this.strokeOpacity = ctx.strokeOpacity || 1;\r\n this.strokeStyle = ctx.strokeStyle || \"#000000\";\r\n this.fillStyle = ctx.fillStyle || \"#000000\";\r\n this.isFillTransparent = ctx.isFillTransparent || false;\r\n this.fillOpacity = ctx.fillOpacity || 1;\r\n this.font = ctx.font || \"10px sans-serif\";\r\n this.textBaseline = ctx.textBaseline || \"alphabetic\";\r\n this.textAlign = ctx.textAlign || \"left\";\r\n this.lineWidth = ctx.lineWidth || 1;\r\n this.lineJoin = ctx.lineJoin || \"miter\";\r\n this.lineCap = ctx.lineCap || \"butt\";\r\n this.path = ctx.path || [];\r\n this.transform =\r\n typeof ctx.transform !== \"undefined\"\r\n ? ctx.transform.clone()\r\n : new Matrix();\r\n this.globalCompositeOperation = ctx.globalCompositeOperation || \"normal\";\r\n this.globalAlpha = ctx.globalAlpha || 1.0;\r\n this.clip_path = ctx.clip_path || [];\r\n this.currentPoint = ctx.currentPoint || new Point();\r\n this.miterLimit = ctx.miterLimit || 10.0;\r\n this.lastPoint = ctx.lastPoint || new Point();\r\n this.lineDashOffset = ctx.lineDashOffset || 0.0;\r\n this.lineDash = ctx.lineDash || [];\r\n this.margin = ctx.margin || [0, 0, 0, 0];\r\n this.prevPageLastElemOffset = ctx.prevPageLastElemOffset || 0;\r\n\r\n this.ignoreClearRect =\r\n typeof ctx.ignoreClearRect === \"boolean\" ? ctx.ignoreClearRect : true;\r\n return this;\r\n };\r\n\r\n //stub\r\n var f2,\r\n getHorizontalCoordinateString,\r\n getVerticalCoordinateString,\r\n getHorizontalCoordinate,\r\n getVerticalCoordinate,\r\n Point,\r\n Rectangle,\r\n Matrix,\r\n _ctx;\r\n jsPDFAPI.events.push([\r\n \"initialized\",\r\n function() {\r\n this.context2d = new Context2D(this);\r\n\r\n f2 = this.internal.f2;\r\n getHorizontalCoordinateString = this.internal.getCoordinateString;\r\n getVerticalCoordinateString = this.internal.getVerticalCoordinateString;\r\n getHorizontalCoordinate = this.internal.getHorizontalCoordinate;\r\n getVerticalCoordinate = this.internal.getVerticalCoordinate;\r\n Point = this.internal.Point;\r\n Rectangle = this.internal.Rectangle;\r\n Matrix = this.internal.Matrix;\r\n _ctx = new ContextLayer();\r\n }\r\n ]);\r\n\r\n var Context2D = function(pdf) {\r\n Object.defineProperty(this, \"canvas\", {\r\n get: function() {\r\n return { parentNode: false, style: false };\r\n }\r\n });\r\n\r\n var _pdf = pdf;\r\n Object.defineProperty(this, \"pdf\", {\r\n get: function() {\r\n return _pdf;\r\n }\r\n });\r\n\r\n var _pageWrapXEnabled = false;\r\n /**\r\n * @name pageWrapXEnabled\r\n * @type {boolean}\r\n * @default false\r\n */\r\n Object.defineProperty(this, \"pageWrapXEnabled\", {\r\n get: function() {\r\n return _pageWrapXEnabled;\r\n },\r\n set: function(value) {\r\n _pageWrapXEnabled = Boolean(value);\r\n }\r\n });\r\n\r\n var _pageWrapYEnabled = false;\r\n /**\r\n * @name pageWrapYEnabled\r\n * @type {boolean}\r\n * @default true\r\n */\r\n Object.defineProperty(this, \"pageWrapYEnabled\", {\r\n get: function() {\r\n return _pageWrapYEnabled;\r\n },\r\n set: function(value) {\r\n _pageWrapYEnabled = Boolean(value);\r\n }\r\n });\r\n\r\n var _posX = 0;\r\n /**\r\n * @name posX\r\n * @type {number}\r\n * @default 0\r\n */\r\n Object.defineProperty(this, \"posX\", {\r\n get: function() {\r\n return _posX;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _posX = value;\r\n }\r\n }\r\n });\r\n\r\n var _posY = 0;\r\n /**\r\n * @name posY\r\n * @type {number}\r\n * @default 0\r\n */\r\n Object.defineProperty(this, \"posY\", {\r\n get: function() {\r\n return _posY;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _posY = value;\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Gets or sets the page margin when using auto paging. Has no effect when {@link autoPaging} is off.\r\n * @name margin\r\n * @type {number|number[]}\r\n * @default [0, 0, 0, 0]\r\n */\r\n Object.defineProperty(this, \"margin\", {\r\n get: function() {\r\n return _ctx.margin;\r\n },\r\n set: function(value) {\r\n var margin;\r\n if (typeof value === \"number\") {\r\n margin = [value, value, value, value];\r\n } else {\r\n margin = new Array(4);\r\n margin[0] = value[0];\r\n margin[1] = value.length >= 2 ? value[1] : margin[0];\r\n margin[2] = value.length >= 3 ? value[2] : margin[0];\r\n margin[3] = value.length >= 4 ? value[3] : margin[1];\r\n }\r\n _ctx.margin = margin;\r\n }\r\n });\r\n\r\n var _autoPaging = false;\r\n /**\r\n * Gets or sets the auto paging mode. When auto paging is enabled, the context2d will automatically draw on the\r\n * next page if a shape or text chunk doesn't fit entirely on the current page. The context2d will create new\r\n * pages if required.\r\n *\r\n * Context2d supports different modes:\r\n *
      \r\n *
    • \r\n * false: Auto paging is disabled.\r\n *
    • \r\n *
    • \r\n * true or 'slice': Will cut shapes or text chunks across page breaks. Will possibly\r\n * slice text in half, making it difficult to read.\r\n *
    • \r\n *
    • \r\n * 'text': Trys not to cut text in half across page breaks. Works best for documents consisting\r\n * mostly of a single column of text.\r\n *
    • \r\n *
    \r\n * @name Context2D#autoPaging\r\n * @type {boolean|\"slice\"|\"text\"}\r\n * @default false\r\n */\r\n Object.defineProperty(this, \"autoPaging\", {\r\n get: function() {\r\n return _autoPaging;\r\n },\r\n set: function(value) {\r\n _autoPaging = value;\r\n }\r\n });\r\n\r\n var lastBreak = 0;\r\n /**\r\n * @name lastBreak\r\n * @type {number}\r\n * @default 0\r\n */\r\n Object.defineProperty(this, \"lastBreak\", {\r\n get: function() {\r\n return lastBreak;\r\n },\r\n set: function(value) {\r\n lastBreak = value;\r\n }\r\n });\r\n\r\n var pageBreaks = [];\r\n /**\r\n * Y Position of page breaks.\r\n * @name pageBreaks\r\n * @type {number}\r\n * @default 0\r\n */\r\n Object.defineProperty(this, \"pageBreaks\", {\r\n get: function() {\r\n return pageBreaks;\r\n },\r\n set: function(value) {\r\n pageBreaks = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name ctx\r\n * @type {object}\r\n * @default {}\r\n */\r\n Object.defineProperty(this, \"ctx\", {\r\n get: function() {\r\n return _ctx;\r\n },\r\n set: function(value) {\r\n if (value instanceof ContextLayer) {\r\n _ctx = value;\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * @name path\r\n * @type {array}\r\n * @default []\r\n */\r\n Object.defineProperty(this, \"path\", {\r\n get: function() {\r\n return _ctx.path;\r\n },\r\n set: function(value) {\r\n _ctx.path = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name ctxStack\r\n * @type {array}\r\n * @default []\r\n */\r\n var _ctxStack = [];\r\n Object.defineProperty(this, \"ctxStack\", {\r\n get: function() {\r\n return _ctxStack;\r\n },\r\n set: function(value) {\r\n _ctxStack = value;\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the color, gradient, or pattern used to fill the drawing\r\n *\r\n * @name fillStyle\r\n * @default #000000\r\n * @property {(color|gradient|pattern)} value The color of the drawing. Default value is #000000
    \r\n * A gradient object (linear or radial) used to fill the drawing (not supported by context2d)
    \r\n * A pattern object to use to fill the drawing (not supported by context2d)\r\n */\r\n Object.defineProperty(this, \"fillStyle\", {\r\n get: function() {\r\n return this.ctx.fillStyle;\r\n },\r\n set: function(value) {\r\n var rgba;\r\n rgba = getRGBA(value);\r\n\r\n this.ctx.fillStyle = rgba.style;\r\n this.ctx.isFillTransparent = rgba.a === 0;\r\n this.ctx.fillOpacity = rgba.a;\r\n\r\n this.pdf.setFillColor(rgba.r, rgba.g, rgba.b, { a: rgba.a });\r\n this.pdf.setTextColor(rgba.r, rgba.g, rgba.b, { a: rgba.a });\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the color, gradient, or pattern used for strokes\r\n *\r\n * @name strokeStyle\r\n * @default #000000\r\n * @property {color} color A CSS color value that indicates the stroke color of the drawing. Default value is #000000 (not supported by context2d)\r\n * @property {gradient} gradient A gradient object (linear or radial) used to create a gradient stroke (not supported by context2d)\r\n * @property {pattern} pattern A pattern object used to create a pattern stroke (not supported by context2d)\r\n */\r\n Object.defineProperty(this, \"strokeStyle\", {\r\n get: function() {\r\n return this.ctx.strokeStyle;\r\n },\r\n set: function(value) {\r\n var rgba = getRGBA(value);\r\n\r\n this.ctx.strokeStyle = rgba.style;\r\n this.ctx.isStrokeTransparent = rgba.a === 0;\r\n this.ctx.strokeOpacity = rgba.a;\r\n\r\n if (rgba.a === 0) {\r\n this.pdf.setDrawColor(255, 255, 255);\r\n } else if (rgba.a === 1) {\r\n this.pdf.setDrawColor(rgba.r, rgba.g, rgba.b);\r\n } else {\r\n this.pdf.setDrawColor(rgba.r, rgba.g, rgba.b);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the style of the end caps for a line\r\n *\r\n * @name lineCap\r\n * @default butt\r\n * @property {(butt|round|square)} lineCap butt A flat edge is added to each end of the line
    \r\n * round A rounded end cap is added to each end of the line
    \r\n * square A square end cap is added to each end of the line
    \r\n */\r\n Object.defineProperty(this, \"lineCap\", {\r\n get: function() {\r\n return this.ctx.lineCap;\r\n },\r\n set: function(value) {\r\n if ([\"butt\", \"round\", \"square\"].indexOf(value) !== -1) {\r\n this.ctx.lineCap = value;\r\n this.pdf.setLineCap(value);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the current line width\r\n *\r\n * @name lineWidth\r\n * @default 1\r\n * @property {number} lineWidth The current line width, in pixels\r\n */\r\n Object.defineProperty(this, \"lineWidth\", {\r\n get: function() {\r\n return this.ctx.lineWidth;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n this.ctx.lineWidth = value;\r\n this.pdf.setLineWidth(value);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the type of corner created, when two lines meet\r\n */\r\n Object.defineProperty(this, \"lineJoin\", {\r\n get: function() {\r\n return this.ctx.lineJoin;\r\n },\r\n set: function(value) {\r\n if ([\"bevel\", \"round\", \"miter\"].indexOf(value) !== -1) {\r\n this.ctx.lineJoin = value;\r\n this.pdf.setLineJoin(value);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * A number specifying the miter limit ratio in coordinate space units. Zero, negative, Infinity, and NaN values are ignored. The default value is 10.0.\r\n *\r\n * @name miterLimit\r\n * @default 10\r\n */\r\n Object.defineProperty(this, \"miterLimit\", {\r\n get: function() {\r\n return this.ctx.miterLimit;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n this.ctx.miterLimit = value;\r\n this.pdf.setMiterLimit(value);\r\n }\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"textBaseline\", {\r\n get: function() {\r\n return this.ctx.textBaseline;\r\n },\r\n set: function(value) {\r\n this.ctx.textBaseline = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"textAlign\", {\r\n get: function() {\r\n return this.ctx.textAlign;\r\n },\r\n set: function(value) {\r\n if ([\"right\", \"end\", \"center\", \"left\", \"start\"].indexOf(value) !== -1) {\r\n this.ctx.textAlign = value;\r\n }\r\n }\r\n });\r\n\r\n var _fontFaceMap = null;\r\n\r\n function getFontFaceMap(pdf, fontFaces) {\r\n if (_fontFaceMap === null) {\r\n var fontMap = pdf.getFontList();\r\n\r\n var convertedFontFaces = convertToFontFaces(fontMap);\r\n\r\n _fontFaceMap = buildFontFaceMap(convertedFontFaces.concat(fontFaces));\r\n }\r\n\r\n return _fontFaceMap;\r\n }\r\n\r\n function convertToFontFaces(fontMap) {\r\n var fontFaces = [];\r\n\r\n Object.keys(fontMap).forEach(function(family) {\r\n var styles = fontMap[family];\r\n\r\n styles.forEach(function(style) {\r\n var fontFace = null;\r\n\r\n switch (style) {\r\n case \"bold\":\r\n fontFace = {\r\n family: family,\r\n weight: \"bold\"\r\n };\r\n break;\r\n\r\n case \"italic\":\r\n fontFace = {\r\n family: family,\r\n style: \"italic\"\r\n };\r\n break;\r\n\r\n case \"bolditalic\":\r\n fontFace = {\r\n family: family,\r\n weight: \"bold\",\r\n style: \"italic\"\r\n };\r\n break;\r\n\r\n case \"\":\r\n case \"normal\":\r\n fontFace = {\r\n family: family\r\n };\r\n break;\r\n }\r\n\r\n // If font-face is still null here, it is a font with some styling we don't recognize and\r\n // cannot map or it is a font added via the fontFaces option of .html().\r\n if (fontFace !== null) {\r\n fontFace.ref = {\r\n name: family,\r\n style: style\r\n };\r\n\r\n fontFaces.push(fontFace);\r\n }\r\n });\r\n });\r\n\r\n return fontFaces;\r\n }\r\n\r\n var _fontFaces = null;\r\n /**\r\n * A map of available font-faces, as passed in the options of\r\n * .html(). If set a limited implementation of the font style matching\r\n * algorithm defined by https://www.w3.org/TR/css-fonts-3/#font-matching-algorithm\r\n * will be used. If not set it will fallback to previous behavior.\r\n */\r\n\r\n Object.defineProperty(this, \"fontFaces\", {\r\n get: function() {\r\n return _fontFaces;\r\n },\r\n set: function(value) {\r\n _fontFaceMap = null;\r\n _fontFaces = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"font\", {\r\n get: function() {\r\n return this.ctx.font;\r\n },\r\n set: function(value) {\r\n this.ctx.font = value;\r\n var rx, matches;\r\n\r\n //source: https://stackoverflow.com/a/10136041\r\n // eslint-disable-next-line no-useless-escape\r\n rx = /^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])))?\\s*([-_,\\\"\\'\\sa-z]+?)\\s*$/i;\r\n matches = rx.exec(value);\r\n if (matches !== null) {\r\n var fontStyle = matches[1];\r\n var fontVariant = matches[2];\r\n var fontWeight = matches[3];\r\n var fontSize = matches[4];\r\n var lineHeight = matches[5];\r\n var fontFamily = matches[6];\r\n } else {\r\n return;\r\n }\r\n var rxFontSize = /^([.\\d]+)((?:%|in|[cem]m|ex|p[ctx]))$/i;\r\n var fontSizeUnit = rxFontSize.exec(fontSize)[2];\r\n\r\n if (\"px\" === fontSizeUnit) {\r\n fontSize = Math.floor(\r\n parseFloat(fontSize) * this.pdf.internal.scaleFactor\r\n );\r\n } else if (\"em\" === fontSizeUnit) {\r\n fontSize = Math.floor(parseFloat(fontSize) * this.pdf.getFontSize());\r\n } else {\r\n fontSize = Math.floor(\r\n parseFloat(fontSize) * this.pdf.internal.scaleFactor\r\n );\r\n }\r\n\r\n this.pdf.setFontSize(fontSize);\r\n var parts = parseFontFamily(fontFamily);\r\n\r\n if (this.fontFaces) {\r\n var fontFaceMap = getFontFaceMap(this.pdf, this.fontFaces);\r\n\r\n var rules = parts.map(function(ff) {\r\n return {\r\n family: ff,\r\n stretch: \"normal\", // TODO: Extract font-stretch from font rule (perhaps write proper parser for it?)\r\n weight: fontWeight,\r\n style: fontStyle\r\n };\r\n });\r\n\r\n var font = resolveFontFace(fontFaceMap, rules);\r\n this.pdf.setFont(font.ref.name, font.ref.style);\r\n return;\r\n }\r\n\r\n var style = \"\";\r\n if (\r\n fontWeight === \"bold\" ||\r\n parseInt(fontWeight, 10) >= 700 ||\r\n fontStyle === \"bold\"\r\n ) {\r\n style = \"bold\";\r\n }\r\n\r\n if (fontStyle === \"italic\") {\r\n style += \"italic\";\r\n }\r\n\r\n if (style.length === 0) {\r\n style = \"normal\";\r\n }\r\n var jsPdfFontName = \"\";\r\n\r\n var fallbackFonts = {\r\n arial: \"Helvetica\",\r\n Arial: \"Helvetica\",\r\n verdana: \"Helvetica\",\r\n Verdana: \"Helvetica\",\r\n helvetica: \"Helvetica\",\r\n Helvetica: \"Helvetica\",\r\n \"sans-serif\": \"Helvetica\",\r\n fixed: \"Courier\",\r\n monospace: \"Courier\",\r\n terminal: \"Courier\",\r\n cursive: \"Times\",\r\n fantasy: \"Times\",\r\n serif: \"Times\"\r\n };\r\n\r\n for (var i = 0; i < parts.length; i++) {\r\n if (\r\n this.pdf.internal.getFont(parts[i], style, {\r\n noFallback: true,\r\n disableWarning: true\r\n }) !== undefined\r\n ) {\r\n jsPdfFontName = parts[i];\r\n break;\r\n } else if (\r\n style === \"bolditalic\" &&\r\n this.pdf.internal.getFont(parts[i], \"bold\", {\r\n noFallback: true,\r\n disableWarning: true\r\n }) !== undefined\r\n ) {\r\n jsPdfFontName = parts[i];\r\n style = \"bold\";\r\n } else if (\r\n this.pdf.internal.getFont(parts[i], \"normal\", {\r\n noFallback: true,\r\n disableWarning: true\r\n }) !== undefined\r\n ) {\r\n jsPdfFontName = parts[i];\r\n style = \"normal\";\r\n break;\r\n }\r\n }\r\n if (jsPdfFontName === \"\") {\r\n for (var j = 0; j < parts.length; j++) {\r\n if (fallbackFonts[parts[j]]) {\r\n jsPdfFontName = fallbackFonts[parts[j]];\r\n break;\r\n }\r\n }\r\n }\r\n jsPdfFontName = jsPdfFontName === \"\" ? \"Times\" : jsPdfFontName;\r\n this.pdf.setFont(jsPdfFontName, style);\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"globalCompositeOperation\", {\r\n get: function() {\r\n return this.ctx.globalCompositeOperation;\r\n },\r\n set: function(value) {\r\n this.ctx.globalCompositeOperation = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"globalAlpha\", {\r\n get: function() {\r\n return this.ctx.globalAlpha;\r\n },\r\n set: function(value) {\r\n this.ctx.globalAlpha = value;\r\n }\r\n });\r\n\r\n /**\r\n * A float specifying the amount of the line dash offset. The default value is 0.0.\r\n *\r\n * @name lineDashOffset\r\n * @default 0.0\r\n */\r\n Object.defineProperty(this, \"lineDashOffset\", {\r\n get: function() {\r\n return this.ctx.lineDashOffset;\r\n },\r\n set: function(value) {\r\n this.ctx.lineDashOffset = value;\r\n setLineDash.call(this);\r\n }\r\n });\r\n\r\n // Not HTML API\r\n Object.defineProperty(this, \"lineDash\", {\r\n get: function() {\r\n return this.ctx.lineDash;\r\n },\r\n set: function(value) {\r\n this.ctx.lineDash = value;\r\n setLineDash.call(this);\r\n }\r\n });\r\n\r\n // Not HTML API\r\n Object.defineProperty(this, \"ignoreClearRect\", {\r\n get: function() {\r\n return this.ctx.ignoreClearRect;\r\n },\r\n set: function(value) {\r\n this.ctx.ignoreClearRect = Boolean(value);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Sets the line dash pattern used when stroking lines.\r\n * @name setLineDash\r\n * @function\r\n * @description It uses an array of values that specify alternating lengths of lines and gaps which describe the pattern.\r\n */\r\n Context2D.prototype.setLineDash = function(dashArray) {\r\n this.lineDash = dashArray;\r\n };\r\n\r\n /**\r\n * gets the current line dash pattern.\r\n * @name getLineDash\r\n * @function\r\n * @returns {Array} An Array of numbers that specify distances to alternately draw a line and a gap (in coordinate space units). If the number, when setting the elements, is odd, the elements of the array get copied and concatenated. For example, setting the line dash to [5, 15, 25] will result in getting back [5, 15, 25, 5, 15, 25].\r\n */\r\n Context2D.prototype.getLineDash = function() {\r\n if (this.lineDash.length % 2) {\r\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/getLineDash#return_value\r\n return this.lineDash.concat(this.lineDash);\r\n } else {\r\n // The copied value is returned to prevent contamination from outside.\r\n return this.lineDash.slice();\r\n }\r\n };\r\n\r\n Context2D.prototype.fill = function() {\r\n pathPreProcess.call(this, \"fill\", false);\r\n };\r\n\r\n /**\r\n * Actually draws the path you have defined\r\n *\r\n * @name stroke\r\n * @function\r\n * @description The stroke() method actually draws the path you have defined with all those moveTo() and lineTo() methods. The default color is black.\r\n */\r\n Context2D.prototype.stroke = function() {\r\n pathPreProcess.call(this, \"stroke\", false);\r\n };\r\n\r\n /**\r\n * Begins a path, or resets the current\r\n *\r\n * @name beginPath\r\n * @function\r\n * @description The beginPath() method begins a path, or resets the current path.\r\n */\r\n Context2D.prototype.beginPath = function() {\r\n this.path = [\r\n {\r\n type: \"begin\"\r\n }\r\n ];\r\n };\r\n\r\n /**\r\n * Moves the path to the specified point in the canvas, without creating a line\r\n *\r\n * @name moveTo\r\n * @function\r\n * @param x {Number} The x-coordinate of where to move the path to\r\n * @param y {Number} The y-coordinate of where to move the path to\r\n */\r\n Context2D.prototype.moveTo = function(x, y) {\r\n if (isNaN(x) || isNaN(y)) {\r\n console.error(\"jsPDF.context2d.moveTo: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.moveTo\");\r\n }\r\n\r\n var pt = this.ctx.transform.applyToPoint(new Point(x, y));\r\n\r\n this.path.push({\r\n type: \"mt\",\r\n x: pt.x,\r\n y: pt.y\r\n });\r\n this.ctx.lastPoint = new Point(x, y);\r\n };\r\n\r\n /**\r\n * Creates a path from the current point back to the starting point\r\n *\r\n * @name closePath\r\n * @function\r\n * @description The closePath() method creates a path from the current point back to the starting point.\r\n */\r\n Context2D.prototype.closePath = function() {\r\n var pathBegin = new Point(0, 0);\r\n var i = 0;\r\n for (i = this.path.length - 1; i !== -1; i--) {\r\n if (this.path[i].type === \"begin\") {\r\n if (\r\n typeof this.path[i + 1] === \"object\" &&\r\n typeof this.path[i + 1].x === \"number\"\r\n ) {\r\n pathBegin = new Point(this.path[i + 1].x, this.path[i + 1].y);\r\n break;\r\n }\r\n }\r\n }\r\n this.path.push({\r\n type: \"close\"\r\n });\r\n this.ctx.lastPoint = new Point(pathBegin.x, pathBegin.y);\r\n };\r\n\r\n /**\r\n * Adds a new point and creates a line to that point from the last specified point in the canvas\r\n *\r\n * @name lineTo\r\n * @function\r\n * @param x The x-coordinate of where to create the line to\r\n * @param y The y-coordinate of where to create the line to\r\n * @description The lineTo() method adds a new point and creates a line TO that point FROM the last specified point in the canvas (this method does not draw the line).\r\n */\r\n Context2D.prototype.lineTo = function(x, y) {\r\n if (isNaN(x) || isNaN(y)) {\r\n console.error(\"jsPDF.context2d.lineTo: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.lineTo\");\r\n }\r\n\r\n var pt = this.ctx.transform.applyToPoint(new Point(x, y));\r\n\r\n this.path.push({\r\n type: \"lt\",\r\n x: pt.x,\r\n y: pt.y\r\n });\r\n this.ctx.lastPoint = new Point(pt.x, pt.y);\r\n };\r\n\r\n /**\r\n * Clips a region of any shape and size from the original canvas\r\n *\r\n * @name clip\r\n * @function\r\n * @description The clip() method clips a region of any shape and size from the original canvas.\r\n */\r\n Context2D.prototype.clip = function() {\r\n this.ctx.clip_path = JSON.parse(JSON.stringify(this.path));\r\n pathPreProcess.call(this, null, true);\r\n };\r\n\r\n /**\r\n * Creates a cubic Bézier curve\r\n *\r\n * @name quadraticCurveTo\r\n * @function\r\n * @param cpx {Number} The x-coordinate of the Bézier control point\r\n * @param cpy {Number} The y-coordinate of the Bézier control point\r\n * @param x {Number} The x-coordinate of the ending point\r\n * @param y {Number} The y-coordinate of the ending point\r\n * @description The quadraticCurveTo() method adds a point to the current path by using the specified control points that represent a quadratic Bézier curve.

    A quadratic Bézier curve requires two points. The first point is a control point that is used in the quadratic Bézier calculation and the second point is the ending point for the curve. The starting point for the curve is the last point in the current path. If a path does not exist, use the beginPath() and moveTo() methods to define a starting point.\r\n */\r\n Context2D.prototype.quadraticCurveTo = function(cpx, cpy, x, y) {\r\n if (isNaN(x) || isNaN(y) || isNaN(cpx) || isNaN(cpy)) {\r\n console.error(\r\n \"jsPDF.context2d.quadraticCurveTo: Invalid arguments\",\r\n arguments\r\n );\r\n throw new Error(\r\n \"Invalid arguments passed to jsPDF.context2d.quadraticCurveTo\"\r\n );\r\n }\r\n\r\n var pt0 = this.ctx.transform.applyToPoint(new Point(x, y));\r\n var pt1 = this.ctx.transform.applyToPoint(new Point(cpx, cpy));\r\n\r\n this.path.push({\r\n type: \"qct\",\r\n x1: pt1.x,\r\n y1: pt1.y,\r\n x: pt0.x,\r\n y: pt0.y\r\n });\r\n this.ctx.lastPoint = new Point(pt0.x, pt0.y);\r\n };\r\n\r\n /**\r\n * Creates a cubic Bézier curve\r\n *\r\n * @name bezierCurveTo\r\n * @function\r\n * @param cp1x {Number} The x-coordinate of the first Bézier control point\r\n * @param cp1y {Number} The y-coordinate of the first Bézier control point\r\n * @param cp2x {Number} The x-coordinate of the second Bézier control point\r\n * @param cp2y {Number} The y-coordinate of the second Bézier control point\r\n * @param x {Number} The x-coordinate of the ending point\r\n * @param y {Number} The y-coordinate of the ending point\r\n * @description The bezierCurveTo() method adds a point to the current path by using the specified control points that represent a cubic Bézier curve.

    A cubic bezier curve requires three points. The first two points are control points that are used in the cubic Bézier calculation and the last point is the ending point for the curve. The starting point for the curve is the last point in the current path. If a path does not exist, use the beginPath() and moveTo() methods to define a starting point.\r\n */\r\n Context2D.prototype.bezierCurveTo = function(cp1x, cp1y, cp2x, cp2y, x, y) {\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n isNaN(cp1x) ||\r\n isNaN(cp1y) ||\r\n isNaN(cp2x) ||\r\n isNaN(cp2y)\r\n ) {\r\n console.error(\r\n \"jsPDF.context2d.bezierCurveTo: Invalid arguments\",\r\n arguments\r\n );\r\n throw new Error(\r\n \"Invalid arguments passed to jsPDF.context2d.bezierCurveTo\"\r\n );\r\n }\r\n var pt0 = this.ctx.transform.applyToPoint(new Point(x, y));\r\n var pt1 = this.ctx.transform.applyToPoint(new Point(cp1x, cp1y));\r\n var pt2 = this.ctx.transform.applyToPoint(new Point(cp2x, cp2y));\r\n\r\n this.path.push({\r\n type: \"bct\",\r\n x1: pt1.x,\r\n y1: pt1.y,\r\n x2: pt2.x,\r\n y2: pt2.y,\r\n x: pt0.x,\r\n y: pt0.y\r\n });\r\n this.ctx.lastPoint = new Point(pt0.x, pt0.y);\r\n };\r\n\r\n /**\r\n * Creates an arc/curve (used to create circles, or parts of circles)\r\n *\r\n * @name arc\r\n * @function\r\n * @param x {Number} The x-coordinate of the center of the circle\r\n * @param y {Number} The y-coordinate of the center of the circle\r\n * @param radius {Number} The radius of the circle\r\n * @param startAngle {Number} The starting angle, in radians (0 is at the 3 o'clock position of the arc's circle)\r\n * @param endAngle {Number} The ending angle, in radians\r\n * @param counterclockwise {Boolean} Optional. Specifies whether the drawing should be counterclockwise or clockwise. False is default, and indicates clockwise, while true indicates counter-clockwise.\r\n * @description The arc() method creates an arc/curve (used to create circles, or parts of circles).\r\n */\r\n Context2D.prototype.arc = function(\r\n x,\r\n y,\r\n radius,\r\n startAngle,\r\n endAngle,\r\n counterclockwise\r\n ) {\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n isNaN(radius) ||\r\n isNaN(startAngle) ||\r\n isNaN(endAngle)\r\n ) {\r\n console.error(\"jsPDF.context2d.arc: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.arc\");\r\n }\r\n counterclockwise = Boolean(counterclockwise);\r\n\r\n if (!this.ctx.transform.isIdentity) {\r\n var xpt = this.ctx.transform.applyToPoint(new Point(x, y));\r\n x = xpt.x;\r\n y = xpt.y;\r\n\r\n var x_radPt = this.ctx.transform.applyToPoint(new Point(0, radius));\r\n var x_radPt0 = this.ctx.transform.applyToPoint(new Point(0, 0));\r\n radius = Math.sqrt(\r\n Math.pow(x_radPt.x - x_radPt0.x, 2) +\r\n Math.pow(x_radPt.y - x_radPt0.y, 2)\r\n );\r\n }\r\n if (Math.abs(endAngle - startAngle) >= 2 * Math.PI) {\r\n startAngle = 0;\r\n endAngle = 2 * Math.PI;\r\n }\r\n\r\n this.path.push({\r\n type: \"arc\",\r\n x: x,\r\n y: y,\r\n radius: radius,\r\n startAngle: startAngle,\r\n endAngle: endAngle,\r\n counterclockwise: counterclockwise\r\n });\r\n // this.ctx.lastPoint(new Point(pt.x,pt.y));\r\n };\r\n\r\n /**\r\n * Creates an arc/curve between two tangents\r\n *\r\n * @name arcTo\r\n * @function\r\n * @param x1 {Number} The x-coordinate of the first tangent\r\n * @param y1 {Number} The y-coordinate of the first tangent\r\n * @param x2 {Number} The x-coordinate of the second tangent\r\n * @param y2 {Number} The y-coordinate of the second tangent\r\n * @param radius The radius of the arc\r\n * @description The arcTo() method creates an arc/curve between two tangents on the canvas.\r\n */\r\n // eslint-disable-next-line no-unused-vars\r\n Context2D.prototype.arcTo = function(x1, y1, x2, y2, radius) {\r\n throw new Error(\"arcTo not implemented.\");\r\n };\r\n\r\n /**\r\n * Creates a rectangle\r\n *\r\n * @name rect\r\n * @function\r\n * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n * @param w {Number} The width of the rectangle, in pixels\r\n * @param h {Number} The height of the rectangle, in pixels\r\n * @description The rect() method creates a rectangle.\r\n */\r\n Context2D.prototype.rect = function(x, y, w, h) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n console.error(\"jsPDF.context2d.rect: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.rect\");\r\n }\r\n this.moveTo(x, y);\r\n this.lineTo(x + w, y);\r\n this.lineTo(x + w, y + h);\r\n this.lineTo(x, y + h);\r\n this.lineTo(x, y);\r\n this.lineTo(x + w, y);\r\n this.lineTo(x, y);\r\n };\r\n\r\n /**\r\n * Draws a \"filled\" rectangle\r\n *\r\n * @name fillRect\r\n * @function\r\n * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n * @param w {Number} The width of the rectangle, in pixels\r\n * @param h {Number} The height of the rectangle, in pixels\r\n * @description The fillRect() method draws a \"filled\" rectangle. The default color of the fill is black.\r\n */\r\n Context2D.prototype.fillRect = function(x, y, w, h) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n console.error(\"jsPDF.context2d.fillRect: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.fillRect\");\r\n }\r\n if (isFillTransparent.call(this)) {\r\n return;\r\n }\r\n var tmp = {};\r\n if (this.lineCap !== \"butt\") {\r\n tmp.lineCap = this.lineCap;\r\n this.lineCap = \"butt\";\r\n }\r\n if (this.lineJoin !== \"miter\") {\r\n tmp.lineJoin = this.lineJoin;\r\n this.lineJoin = \"miter\";\r\n }\r\n\r\n this.beginPath();\r\n this.rect(x, y, w, h);\r\n this.fill();\r\n\r\n if (tmp.hasOwnProperty(\"lineCap\")) {\r\n this.lineCap = tmp.lineCap;\r\n }\r\n if (tmp.hasOwnProperty(\"lineJoin\")) {\r\n this.lineJoin = tmp.lineJoin;\r\n }\r\n };\r\n\r\n /**\r\n * Draws a rectangle (no fill)\r\n *\r\n * @name strokeRect\r\n * @function\r\n * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n * @param w {Number} The width of the rectangle, in pixels\r\n * @param h {Number} The height of the rectangle, in pixels\r\n * @description The strokeRect() method draws a rectangle (no fill). The default color of the stroke is black.\r\n */\r\n Context2D.prototype.strokeRect = function strokeRect(x, y, w, h) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n console.error(\"jsPDF.context2d.strokeRect: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.strokeRect\");\r\n }\r\n if (isStrokeTransparent.call(this)) {\r\n return;\r\n }\r\n this.beginPath();\r\n this.rect(x, y, w, h);\r\n this.stroke();\r\n };\r\n\r\n /**\r\n * Clears the specified pixels within a given rectangle\r\n *\r\n * @name clearRect\r\n * @function\r\n * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n * @param w {Number} The width of the rectangle to clear, in pixels\r\n * @param h {Number} The height of the rectangle to clear, in pixels\r\n * @description We cannot clear PDF commands that were already written to PDF, so we use white instead.
    \r\n * As a special case, read a special flag (ignoreClearRect) and do nothing if it is set.\r\n * This results in all calls to clearRect() to do nothing, and keep the canvas transparent.\r\n * This flag is stored in the save/restore context and is managed the same way as other drawing states.\r\n *\r\n */\r\n Context2D.prototype.clearRect = function(x, y, w, h) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n console.error(\"jsPDF.context2d.clearRect: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.clearRect\");\r\n }\r\n if (this.ignoreClearRect) {\r\n return;\r\n }\r\n\r\n this.fillStyle = \"#ffffff\";\r\n this.fillRect(x, y, w, h);\r\n };\r\n\r\n /**\r\n * Saves the state of the current context\r\n *\r\n * @name save\r\n * @function\r\n */\r\n Context2D.prototype.save = function(doStackPush) {\r\n doStackPush = typeof doStackPush === \"boolean\" ? doStackPush : true;\r\n var tmpPageNumber = this.pdf.internal.getCurrentPageInfo().pageNumber;\r\n for (var i = 0; i < this.pdf.internal.getNumberOfPages(); i++) {\r\n this.pdf.setPage(i + 1);\r\n this.pdf.internal.out(\"q\");\r\n }\r\n this.pdf.setPage(tmpPageNumber);\r\n\r\n if (doStackPush) {\r\n this.ctx.fontSize = this.pdf.internal.getFontSize();\r\n var ctx = new ContextLayer(this.ctx);\r\n this.ctxStack.push(this.ctx);\r\n this.ctx = ctx;\r\n }\r\n };\r\n\r\n /**\r\n * Returns previously saved path state and attributes\r\n *\r\n * @name restore\r\n * @function\r\n */\r\n Context2D.prototype.restore = function(doStackPop) {\r\n doStackPop = typeof doStackPop === \"boolean\" ? doStackPop : true;\r\n var tmpPageNumber = this.pdf.internal.getCurrentPageInfo().pageNumber;\r\n for (var i = 0; i < this.pdf.internal.getNumberOfPages(); i++) {\r\n this.pdf.setPage(i + 1);\r\n this.pdf.internal.out(\"Q\");\r\n }\r\n this.pdf.setPage(tmpPageNumber);\r\n\r\n if (doStackPop && this.ctxStack.length !== 0) {\r\n this.ctx = this.ctxStack.pop();\r\n this.fillStyle = this.ctx.fillStyle;\r\n this.strokeStyle = this.ctx.strokeStyle;\r\n this.font = this.ctx.font;\r\n this.lineCap = this.ctx.lineCap;\r\n this.lineWidth = this.ctx.lineWidth;\r\n this.lineJoin = this.ctx.lineJoin;\r\n this.lineDash = this.ctx.lineDash;\r\n this.lineDashOffset = this.ctx.lineDashOffset;\r\n }\r\n };\r\n\r\n /**\r\n * @name toDataURL\r\n * @function\r\n */\r\n Context2D.prototype.toDataURL = function() {\r\n throw new Error(\"toDataUrl not implemented.\");\r\n };\r\n\r\n //helper functions\r\n\r\n /**\r\n * Get the decimal values of r, g, b and a\r\n *\r\n * @name getRGBA\r\n * @function\r\n * @private\r\n * @ignore\r\n */\r\n var getRGBA = function(style) {\r\n var rxRgb = /rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/;\r\n var rxRgba = /rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*([\\d.]+)\\s*\\)/;\r\n var rxTransparent = /transparent|rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*0+\\s*\\)/;\r\n\r\n var r, g, b, a;\r\n\r\n if (style.isCanvasGradient === true) {\r\n style = style.getColor();\r\n }\r\n\r\n if (!style) {\r\n return { r: 0, g: 0, b: 0, a: 0, style: style };\r\n }\r\n\r\n if (rxTransparent.test(style)) {\r\n r = 0;\r\n g = 0;\r\n b = 0;\r\n a = 0;\r\n } else {\r\n var matches = rxRgb.exec(style);\r\n if (matches !== null) {\r\n r = parseInt(matches[1]);\r\n g = parseInt(matches[2]);\r\n b = parseInt(matches[3]);\r\n a = 1;\r\n } else {\r\n matches = rxRgba.exec(style);\r\n if (matches !== null) {\r\n r = parseInt(matches[1]);\r\n g = parseInt(matches[2]);\r\n b = parseInt(matches[3]);\r\n a = parseFloat(matches[4]);\r\n } else {\r\n a = 1;\r\n\r\n if (typeof style === \"string\" && style.charAt(0) !== \"#\") {\r\n var rgbColor = new RGBColor(style);\r\n if (rgbColor.ok) {\r\n style = rgbColor.toHex();\r\n } else {\r\n style = \"#000000\";\r\n }\r\n }\r\n\r\n if (style.length === 4) {\r\n r = style.substring(1, 2);\r\n r += r;\r\n g = style.substring(2, 3);\r\n g += g;\r\n b = style.substring(3, 4);\r\n b += b;\r\n } else {\r\n r = style.substring(1, 3);\r\n g = style.substring(3, 5);\r\n b = style.substring(5, 7);\r\n }\r\n r = parseInt(r, 16);\r\n g = parseInt(g, 16);\r\n b = parseInt(b, 16);\r\n }\r\n }\r\n }\r\n return { r: r, g: g, b: b, a: a, style: style };\r\n };\r\n\r\n /**\r\n * @name isFillTransparent\r\n * @function\r\n * @private\r\n * @ignore\r\n * @returns {Boolean}\r\n */\r\n var isFillTransparent = function() {\r\n return this.ctx.isFillTransparent || this.globalAlpha == 0;\r\n };\r\n\r\n /**\r\n * @name isStrokeTransparent\r\n * @function\r\n * @private\r\n * @ignore\r\n * @returns {Boolean}\r\n */\r\n var isStrokeTransparent = function() {\r\n return Boolean(this.ctx.isStrokeTransparent || this.globalAlpha == 0);\r\n };\r\n\r\n /**\r\n * Draws \"filled\" text on the canvas\r\n *\r\n * @name fillText\r\n * @function\r\n * @param text {String} Specifies the text that will be written on the canvas\r\n * @param x {Number} The x coordinate where to start painting the text (relative to the canvas)\r\n * @param y {Number} The y coordinate where to start painting the text (relative to the canvas)\r\n * @param maxWidth {Number} Optional. The maximum allowed width of the text, in pixels\r\n * @description The fillText() method draws filled text on the canvas. The default color of the text is black.\r\n */\r\n Context2D.prototype.fillText = function(text, x, y, maxWidth) {\r\n if (isNaN(x) || isNaN(y) || typeof text !== \"string\") {\r\n console.error(\"jsPDF.context2d.fillText: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.fillText\");\r\n }\r\n maxWidth = isNaN(maxWidth) ? undefined : maxWidth;\r\n if (isFillTransparent.call(this)) {\r\n return;\r\n }\r\n\r\n var degs = rad2deg(this.ctx.transform.rotation);\r\n\r\n // We only use X axis as scale hint\r\n var scale = this.ctx.transform.scaleX;\r\n\r\n putText.call(this, {\r\n text: text,\r\n x: x,\r\n y: y,\r\n scale: scale,\r\n angle: degs,\r\n align: this.textAlign,\r\n maxWidth: maxWidth\r\n });\r\n };\r\n\r\n /**\r\n * Draws text on the canvas (no fill)\r\n *\r\n * @name strokeText\r\n * @function\r\n * @param text {String} Specifies the text that will be written on the canvas\r\n * @param x {Number} The x coordinate where to start painting the text (relative to the canvas)\r\n * @param y {Number} The y coordinate where to start painting the text (relative to the canvas)\r\n * @param maxWidth {Number} Optional. The maximum allowed width of the text, in pixels\r\n * @description The strokeText() method draws text (with no fill) on the canvas. The default color of the text is black.\r\n */\r\n Context2D.prototype.strokeText = function(text, x, y, maxWidth) {\r\n if (isNaN(x) || isNaN(y) || typeof text !== \"string\") {\r\n console.error(\"jsPDF.context2d.strokeText: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.strokeText\");\r\n }\r\n if (isStrokeTransparent.call(this)) {\r\n return;\r\n }\r\n\r\n maxWidth = isNaN(maxWidth) ? undefined : maxWidth;\r\n\r\n var degs = rad2deg(this.ctx.transform.rotation);\r\n var scale = this.ctx.transform.scaleX;\r\n\r\n putText.call(this, {\r\n text: text,\r\n x: x,\r\n y: y,\r\n scale: scale,\r\n renderingMode: \"stroke\",\r\n angle: degs,\r\n align: this.textAlign,\r\n maxWidth: maxWidth\r\n });\r\n };\r\n\r\n /**\r\n * Returns an object that contains the width of the specified text\r\n *\r\n * @name measureText\r\n * @function\r\n * @param text {String} The text to be measured\r\n * @description The measureText() method returns an object that contains the width of the specified text, in pixels.\r\n * @returns {Number}\r\n */\r\n Context2D.prototype.measureText = function(text) {\r\n if (typeof text !== \"string\") {\r\n console.error(\r\n \"jsPDF.context2d.measureText: Invalid arguments\",\r\n arguments\r\n );\r\n throw new Error(\r\n \"Invalid arguments passed to jsPDF.context2d.measureText\"\r\n );\r\n }\r\n var pdf = this.pdf;\r\n var k = this.pdf.internal.scaleFactor;\r\n\r\n var fontSize = pdf.internal.getFontSize();\r\n var txtWidth =\r\n (pdf.getStringUnitWidth(text) * fontSize) / pdf.internal.scaleFactor;\r\n txtWidth *= Math.round(((k * 96) / 72) * 10000) / 10000;\r\n\r\n var TextMetrics = function(options) {\r\n options = options || {};\r\n var _width = options.width || 0;\r\n Object.defineProperty(this, \"width\", {\r\n get: function() {\r\n return _width;\r\n }\r\n });\r\n return this;\r\n };\r\n return new TextMetrics({ width: txtWidth });\r\n };\r\n\r\n //Transformations\r\n\r\n /**\r\n * Scales the current drawing bigger or smaller\r\n *\r\n * @name scale\r\n * @function\r\n * @param scalewidth {Number} Scales the width of the current drawing (1=100%, 0.5=50%, 2=200%, etc.)\r\n * @param scaleheight {Number} Scales the height of the current drawing (1=100%, 0.5=50%, 2=200%, etc.)\r\n * @description The scale() method scales the current drawing, bigger or smaller.\r\n */\r\n Context2D.prototype.scale = function(scalewidth, scaleheight) {\r\n if (isNaN(scalewidth) || isNaN(scaleheight)) {\r\n console.error(\"jsPDF.context2d.scale: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.scale\");\r\n }\r\n var matrix = new Matrix(scalewidth, 0.0, 0.0, scaleheight, 0.0, 0.0);\r\n this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n };\r\n\r\n /**\r\n * Rotates the current drawing\r\n *\r\n * @name rotate\r\n * @function\r\n * @param angle {Number} The rotation angle, in radians.\r\n * @description To calculate from degrees to radians: degrees*Math.PI/180.
    \r\n * Example: to rotate 5 degrees, specify the following: 5*Math.PI/180\r\n */\r\n Context2D.prototype.rotate = function(angle) {\r\n if (isNaN(angle)) {\r\n console.error(\"jsPDF.context2d.rotate: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.rotate\");\r\n }\r\n var matrix = new Matrix(\r\n Math.cos(angle),\r\n Math.sin(angle),\r\n -Math.sin(angle),\r\n Math.cos(angle),\r\n 0.0,\r\n 0.0\r\n );\r\n this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n };\r\n\r\n /**\r\n * Remaps the (0,0) position on the canvas\r\n *\r\n * @name translate\r\n * @function\r\n * @param x {Number} The value to add to horizontal (x) coordinates\r\n * @param y {Number} The value to add to vertical (y) coordinates\r\n * @description The translate() method remaps the (0,0) position on the canvas.\r\n */\r\n Context2D.prototype.translate = function(x, y) {\r\n if (isNaN(x) || isNaN(y)) {\r\n console.error(\"jsPDF.context2d.translate: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.translate\");\r\n }\r\n var matrix = new Matrix(1.0, 0.0, 0.0, 1.0, x, y);\r\n this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n };\r\n\r\n /**\r\n * Replaces the current transformation matrix for the drawing\r\n *\r\n * @name transform\r\n * @function\r\n * @param a {Number} Horizontal scaling\r\n * @param b {Number} Horizontal skewing\r\n * @param c {Number} Vertical skewing\r\n * @param d {Number} Vertical scaling\r\n * @param e {Number} Horizontal moving\r\n * @param f {Number} Vertical moving\r\n * @description Each object on the canvas has a current transformation matrix.

    The transform() method replaces the current transformation matrix. It multiplies the current transformation matrix with the matrix described by:



    a c e

    b d f

    0 0 1

    In other words, the transform() method lets you scale, rotate, move, and skew the current context.\r\n */\r\n Context2D.prototype.transform = function(a, b, c, d, e, f) {\r\n if (isNaN(a) || isNaN(b) || isNaN(c) || isNaN(d) || isNaN(e) || isNaN(f)) {\r\n console.error(\"jsPDF.context2d.transform: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.transform\");\r\n }\r\n var matrix = new Matrix(a, b, c, d, e, f);\r\n this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n };\r\n\r\n /**\r\n * Resets the current transform to the identity matrix. Then runs transform()\r\n *\r\n * @name setTransform\r\n * @function\r\n * @param a {Number} Horizontal scaling\r\n * @param b {Number} Horizontal skewing\r\n * @param c {Number} Vertical skewing\r\n * @param d {Number} Vertical scaling\r\n * @param e {Number} Horizontal moving\r\n * @param f {Number} Vertical moving\r\n * @description Each object on the canvas has a current transformation matrix.

    The setTransform() method resets the current transform to the identity matrix, and then runs transform() with the same arguments.

    In other words, the setTransform() method lets you scale, rotate, move, and skew the current context.\r\n */\r\n Context2D.prototype.setTransform = function(a, b, c, d, e, f) {\r\n a = isNaN(a) ? 1 : a;\r\n b = isNaN(b) ? 0 : b;\r\n c = isNaN(c) ? 0 : c;\r\n d = isNaN(d) ? 1 : d;\r\n e = isNaN(e) ? 0 : e;\r\n f = isNaN(f) ? 0 : f;\r\n this.ctx.transform = new Matrix(a, b, c, d, e, f);\r\n };\r\n\r\n /**\r\n * Should only be used if pageWrapYEnabled is true\r\n *\r\n * @name setPageByYPosition\r\n * @function\r\n * @private\r\n * @ignore\r\n * @returns One-based Page Number\r\n */\r\n var setPageByYPosition = function(y) {\r\n if (this.pageWrapYEnabled) {\r\n this.lastBreak = 0;\r\n var manualBreaks = 0;\r\n var autoBreaks = 0;\r\n for (var i = 0; i < this.pageBreaks.length; i++) {\r\n if (y >= this.pageBreaks[i]) {\r\n manualBreaks++;\r\n if (this.lastBreak === 0) {\r\n autoBreaks++;\r\n }\r\n var spaceBetweenLastBreak = this.pageBreaks[i] - this.lastBreak;\r\n this.lastBreak = this.pageBreaks[i];\r\n var pagesSinceLastBreak = Math.floor(\r\n spaceBetweenLastBreak / this.pageWrapY\r\n );\r\n autoBreaks += pagesSinceLastBreak;\r\n }\r\n }\r\n if (this.lastBreak === 0) {\r\n var pagesSinceLastBreak = Math.floor(y / this.pageWrapY) + 1;\r\n autoBreaks += pagesSinceLastBreak;\r\n }\r\n return autoBreaks + manualBreaks;\r\n } else {\r\n return this.pdf.internal.getCurrentPageInfo().pageNumber;\r\n }\r\n };\r\n\r\n var hasMargins = function() {\r\n return (\r\n this.margin[0] > 0 ||\r\n this.margin[1] > 0 ||\r\n this.margin[2] > 0 ||\r\n this.margin[3] > 0\r\n );\r\n };\r\n\r\n /**\r\n * Draws an image, canvas, or video onto the canvas\r\n *\r\n * @function\r\n * @param img {} Specifies the image, canvas, or video element to use\r\n * @param sx {Number} Optional. The x coordinate where to start clipping\r\n * @param sy {Number} Optional. The y coordinate where to start clipping\r\n * @param swidth {Number} Optional. The width of the clipped image\r\n * @param sheight {Number} Optional. The height of the clipped image\r\n * @param x {Number} The x coordinate where to place the image on the canvas\r\n * @param y {Number} The y coordinate where to place the image on the canvas\r\n * @param width {Number} Optional. The width of the image to use (stretch or reduce the image)\r\n * @param height {Number} Optional. The height of the image to use (stretch or reduce the image)\r\n */\r\n Context2D.prototype.drawImage = function(\r\n img,\r\n sx,\r\n sy,\r\n swidth,\r\n sheight,\r\n x,\r\n y,\r\n width,\r\n height\r\n ) {\r\n var imageProperties = this.pdf.getImageProperties(img);\r\n var factorX = 1;\r\n var factorY = 1;\r\n var isClip;\r\n\r\n var clipFactorX = 1;\r\n var clipFactorY = 1;\r\n\r\n if (typeof swidth !== \"undefined\" && typeof width !== \"undefined\") {\r\n isClip = true;\r\n clipFactorX = width / swidth;\r\n clipFactorY = height / sheight;\r\n factorX = ((imageProperties.width / swidth) * width) / swidth;\r\n factorY = ((imageProperties.height / sheight) * height) / sheight;\r\n }\r\n\r\n //is sx and sy are set and x and y not, set x and y with values of sx and sy\r\n if (typeof x === \"undefined\") {\r\n x = sx;\r\n y = sy;\r\n sx = 0;\r\n sy = 0;\r\n }\r\n\r\n if (typeof swidth !== \"undefined\" && typeof width === \"undefined\") {\r\n width = swidth;\r\n height = sheight;\r\n }\r\n if (typeof swidth === \"undefined\" && typeof width === \"undefined\") {\r\n width = imageProperties.width;\r\n height = imageProperties.height;\r\n }\r\n\r\n var decomposedTransformationMatrix = this.ctx.transform.decompose();\r\n var angle = rad2deg(decomposedTransformationMatrix.rotate.shx);\r\n var matrix = new Matrix();\r\n matrix = matrix.multiply(decomposedTransformationMatrix.translate);\r\n matrix = matrix.multiply(decomposedTransformationMatrix.skew);\r\n matrix = matrix.multiply(decomposedTransformationMatrix.scale);\r\n var xRect = matrix.applyToRectangle(\r\n new Rectangle(\r\n x - sx * clipFactorX,\r\n y - sy * clipFactorY,\r\n swidth * factorX,\r\n sheight * factorY\r\n )\r\n );\r\n var pageArray = getPagesByPath.call(this, xRect);\r\n var pages = [];\r\n for (var ii = 0; ii < pageArray.length; ii += 1) {\r\n if (pages.indexOf(pageArray[ii]) === -1) {\r\n pages.push(pageArray[ii]);\r\n }\r\n }\r\n\r\n sortPages(pages);\r\n\r\n var clipPath;\r\n if (this.autoPaging) {\r\n var min = pages[0];\r\n var max = pages[pages.length - 1];\r\n for (var i = min; i < max + 1; i++) {\r\n this.pdf.setPage(i);\r\n\r\n var pageWidthMinusMargins =\r\n this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1];\r\n var topMargin = i === 1 ? this.posY + this.margin[0] : this.margin[0];\r\n var firstPageHeight =\r\n this.pdf.internal.pageSize.height -\r\n this.posY -\r\n this.margin[0] -\r\n this.margin[2];\r\n var pageHeightMinusMargins =\r\n this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\r\n var previousPageHeightSum =\r\n i === 1 ? 0 : firstPageHeight + (i - 2) * pageHeightMinusMargins;\r\n\r\n if (this.ctx.clip_path.length !== 0) {\r\n var tmpPaths = this.path;\r\n clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\r\n this.path = pathPositionRedo(\r\n clipPath,\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n );\r\n drawPaths.call(this, \"fill\", true);\r\n this.path = tmpPaths;\r\n }\r\n var tmpRect = JSON.parse(JSON.stringify(xRect));\r\n tmpRect = pathPositionRedo(\r\n [tmpRect],\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n )[0];\r\n\r\n const needsClipping = (i > min || i < max) && hasMargins.call(this);\r\n\r\n if (needsClipping) {\r\n this.pdf.saveGraphicsState();\r\n this.pdf\r\n .rect(\r\n this.margin[3],\r\n this.margin[0],\r\n pageWidthMinusMargins,\r\n pageHeightMinusMargins,\r\n null\r\n )\r\n .clip()\r\n .discardPath();\r\n }\r\n this.pdf.addImage(\r\n img,\r\n \"JPEG\",\r\n tmpRect.x,\r\n tmpRect.y,\r\n tmpRect.w,\r\n tmpRect.h,\r\n null,\r\n null,\r\n angle\r\n );\r\n if (needsClipping) {\r\n this.pdf.restoreGraphicsState();\r\n }\r\n }\r\n } else {\r\n this.pdf.addImage(\r\n img,\r\n \"JPEG\",\r\n xRect.x,\r\n xRect.y,\r\n xRect.w,\r\n xRect.h,\r\n null,\r\n null,\r\n angle\r\n );\r\n }\r\n };\r\n\r\n var getPagesByPath = function(path, pageWrapX, pageWrapY) {\r\n var result = [];\r\n pageWrapX = pageWrapX || this.pdf.internal.pageSize.width;\r\n pageWrapY =\r\n pageWrapY ||\r\n this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\r\n var yOffset = this.posY + this.ctx.prevPageLastElemOffset;\r\n\r\n switch (path.type) {\r\n default:\r\n case \"mt\":\r\n case \"lt\":\r\n result.push(Math.floor((path.y + yOffset) / pageWrapY) + 1);\r\n break;\r\n case \"arc\":\r\n result.push(\r\n Math.floor((path.y + yOffset - path.radius) / pageWrapY) + 1\r\n );\r\n result.push(\r\n Math.floor((path.y + yOffset + path.radius) / pageWrapY) + 1\r\n );\r\n break;\r\n case \"qct\":\r\n var rectOfQuadraticCurve = getQuadraticCurveBoundary(\r\n this.ctx.lastPoint.x,\r\n this.ctx.lastPoint.y,\r\n path.x1,\r\n path.y1,\r\n path.x,\r\n path.y\r\n );\r\n result.push(\r\n Math.floor((rectOfQuadraticCurve.y + yOffset) / pageWrapY) + 1\r\n );\r\n result.push(\r\n Math.floor(\r\n (rectOfQuadraticCurve.y + rectOfQuadraticCurve.h + yOffset) /\r\n pageWrapY\r\n ) + 1\r\n );\r\n break;\r\n case \"bct\":\r\n var rectOfBezierCurve = getBezierCurveBoundary(\r\n this.ctx.lastPoint.x,\r\n this.ctx.lastPoint.y,\r\n path.x1,\r\n path.y1,\r\n path.x2,\r\n path.y2,\r\n path.x,\r\n path.y\r\n );\r\n result.push(\r\n Math.floor((rectOfBezierCurve.y + yOffset) / pageWrapY) + 1\r\n );\r\n result.push(\r\n Math.floor(\r\n (rectOfBezierCurve.y + rectOfBezierCurve.h + yOffset) / pageWrapY\r\n ) + 1\r\n );\r\n break;\r\n case \"rect\":\r\n result.push(Math.floor((path.y + yOffset) / pageWrapY) + 1);\r\n result.push(Math.floor((path.y + path.h + yOffset) / pageWrapY) + 1);\r\n }\r\n\r\n for (var i = 0; i < result.length; i += 1) {\r\n while (this.pdf.internal.getNumberOfPages() < result[i]) {\r\n addPage.call(this);\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n var addPage = function() {\r\n var fillStyle = this.fillStyle;\r\n var strokeStyle = this.strokeStyle;\r\n var font = this.font;\r\n var lineCap = this.lineCap;\r\n var lineWidth = this.lineWidth;\r\n var lineJoin = this.lineJoin;\r\n this.pdf.addPage();\r\n this.fillStyle = fillStyle;\r\n this.strokeStyle = strokeStyle;\r\n this.font = font;\r\n this.lineCap = lineCap;\r\n this.lineWidth = lineWidth;\r\n this.lineJoin = lineJoin;\r\n };\r\n\r\n var pathPositionRedo = function(paths, x, y) {\r\n for (var i = 0; i < paths.length; i++) {\r\n switch (paths[i].type) {\r\n case \"bct\":\r\n paths[i].x2 += x;\r\n paths[i].y2 += y;\r\n case \"qct\":\r\n paths[i].x1 += x;\r\n paths[i].y1 += y;\r\n case \"mt\":\r\n case \"lt\":\r\n case \"arc\":\r\n default:\r\n paths[i].x += x;\r\n paths[i].y += y;\r\n }\r\n }\r\n return paths;\r\n };\r\n\r\n var sortPages = function(pages) {\r\n return pages.sort(function(a, b) {\r\n return a - b;\r\n });\r\n };\r\n\r\n var pathPreProcess = function(rule, isClip) {\r\n var fillStyle = this.fillStyle;\r\n var strokeStyle = this.strokeStyle;\r\n var lineCap = this.lineCap;\r\n var oldLineWidth = this.lineWidth;\r\n var lineWidth = Math.abs(oldLineWidth * this.ctx.transform.scaleX);\r\n var lineJoin = this.lineJoin;\r\n\r\n var origPath = JSON.parse(JSON.stringify(this.path));\r\n var xPath = JSON.parse(JSON.stringify(this.path));\r\n var clipPath;\r\n var tmpPath;\r\n var pages = [];\r\n\r\n for (var i = 0; i < xPath.length; i++) {\r\n if (typeof xPath[i].x !== \"undefined\") {\r\n var page = getPagesByPath.call(this, xPath[i]);\r\n\r\n for (var ii = 0; ii < page.length; ii += 1) {\r\n if (pages.indexOf(page[ii]) === -1) {\r\n pages.push(page[ii]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (var j = 0; j < pages.length; j++) {\r\n while (this.pdf.internal.getNumberOfPages() < pages[j]) {\r\n addPage.call(this);\r\n }\r\n }\r\n sortPages(pages);\r\n\r\n if (this.autoPaging) {\r\n var min = pages[0];\r\n var max = pages[pages.length - 1];\r\n for (var k = min; k < max + 1; k++) {\r\n this.pdf.setPage(k);\r\n\r\n this.fillStyle = fillStyle;\r\n this.strokeStyle = strokeStyle;\r\n this.lineCap = lineCap;\r\n this.lineWidth = lineWidth;\r\n this.lineJoin = lineJoin;\r\n\r\n var pageWidthMinusMargins =\r\n this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1];\r\n var topMargin = k === 1 ? this.posY + this.margin[0] : this.margin[0];\r\n var firstPageHeight =\r\n this.pdf.internal.pageSize.height -\r\n this.posY -\r\n this.margin[0] -\r\n this.margin[2];\r\n var pageHeightMinusMargins =\r\n this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\r\n var previousPageHeightSum =\r\n k === 1 ? 0 : firstPageHeight + (k - 2) * pageHeightMinusMargins;\r\n\r\n if (this.ctx.clip_path.length !== 0) {\r\n var tmpPaths = this.path;\r\n clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\r\n this.path = pathPositionRedo(\r\n clipPath,\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n );\r\n drawPaths.call(this, rule, true);\r\n this.path = tmpPaths;\r\n }\r\n tmpPath = JSON.parse(JSON.stringify(origPath));\r\n this.path = pathPositionRedo(\r\n tmpPath,\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n );\r\n if (isClip === false || k === 0) {\r\n const needsClipping = (k > min || k < max) && hasMargins.call(this);\r\n if (needsClipping) {\r\n this.pdf.saveGraphicsState();\r\n this.pdf\r\n .rect(\r\n this.margin[3],\r\n this.margin[0],\r\n pageWidthMinusMargins,\r\n pageHeightMinusMargins,\r\n null\r\n )\r\n .clip()\r\n .discardPath();\r\n }\r\n drawPaths.call(this, rule, isClip);\r\n if (needsClipping) {\r\n this.pdf.restoreGraphicsState();\r\n }\r\n }\r\n this.lineWidth = oldLineWidth;\r\n }\r\n } else {\r\n this.lineWidth = lineWidth;\r\n drawPaths.call(this, rule, isClip);\r\n this.lineWidth = oldLineWidth;\r\n }\r\n this.path = origPath;\r\n };\r\n\r\n /**\r\n * Processes the paths\r\n *\r\n * @function\r\n * @param rule {String}\r\n * @param isClip {Boolean}\r\n * @private\r\n * @ignore\r\n */\r\n var drawPaths = function(rule, isClip) {\r\n if (rule === \"stroke\" && !isClip && isStrokeTransparent.call(this)) {\r\n return;\r\n }\r\n\r\n if (rule !== \"stroke\" && !isClip && isFillTransparent.call(this)) {\r\n return;\r\n }\r\n\r\n var moves = [];\r\n\r\n //var alpha = (this.ctx.fillOpacity < 1) ? this.ctx.fillOpacity : this.ctx.globalAlpha;\r\n var delta;\r\n var xPath = this.path;\r\n for (var i = 0; i < xPath.length; i++) {\r\n var pt = xPath[i];\r\n\r\n switch (pt.type) {\r\n case \"begin\":\r\n moves.push({\r\n begin: true\r\n });\r\n break;\r\n\r\n case \"close\":\r\n moves.push({\r\n close: true\r\n });\r\n break;\r\n\r\n case \"mt\":\r\n moves.push({\r\n start: pt,\r\n deltas: [],\r\n abs: []\r\n });\r\n break;\r\n\r\n case \"lt\":\r\n var iii = moves.length;\r\n if (xPath[i - 1] && !isNaN(xPath[i - 1].x)) {\r\n delta = [pt.x - xPath[i - 1].x, pt.y - xPath[i - 1].y];\r\n if (iii > 0) {\r\n for (iii; iii >= 0; iii--) {\r\n if (\r\n moves[iii - 1].close !== true &&\r\n moves[iii - 1].begin !== true\r\n ) {\r\n moves[iii - 1].deltas.push(delta);\r\n moves[iii - 1].abs.push(pt);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n\r\n case \"bct\":\r\n delta = [\r\n pt.x1 - xPath[i - 1].x,\r\n pt.y1 - xPath[i - 1].y,\r\n pt.x2 - xPath[i - 1].x,\r\n pt.y2 - xPath[i - 1].y,\r\n pt.x - xPath[i - 1].x,\r\n pt.y - xPath[i - 1].y\r\n ];\r\n moves[moves.length - 1].deltas.push(delta);\r\n break;\r\n\r\n case \"qct\":\r\n var x1 = xPath[i - 1].x + (2.0 / 3.0) * (pt.x1 - xPath[i - 1].x);\r\n var y1 = xPath[i - 1].y + (2.0 / 3.0) * (pt.y1 - xPath[i - 1].y);\r\n var x2 = pt.x + (2.0 / 3.0) * (pt.x1 - pt.x);\r\n var y2 = pt.y + (2.0 / 3.0) * (pt.y1 - pt.y);\r\n var x3 = pt.x;\r\n var y3 = pt.y;\r\n delta = [\r\n x1 - xPath[i - 1].x,\r\n y1 - xPath[i - 1].y,\r\n x2 - xPath[i - 1].x,\r\n y2 - xPath[i - 1].y,\r\n x3 - xPath[i - 1].x,\r\n y3 - xPath[i - 1].y\r\n ];\r\n moves[moves.length - 1].deltas.push(delta);\r\n break;\r\n\r\n case \"arc\":\r\n moves.push({\r\n deltas: [],\r\n abs: [],\r\n arc: true\r\n });\r\n\r\n if (Array.isArray(moves[moves.length - 1].abs)) {\r\n moves[moves.length - 1].abs.push(pt);\r\n }\r\n break;\r\n }\r\n }\r\n var style;\r\n if (!isClip) {\r\n if (rule === \"stroke\") {\r\n style = \"stroke\";\r\n } else {\r\n style = \"fill\";\r\n }\r\n } else {\r\n style = null;\r\n }\r\n\r\n var began = false;\r\n for (var k = 0; k < moves.length; k++) {\r\n if (moves[k].arc) {\r\n var arcs = moves[k].abs;\r\n\r\n for (var ii = 0; ii < arcs.length; ii++) {\r\n var arc = arcs[ii];\r\n\r\n if (arc.type === \"arc\") {\r\n drawArc.call(\r\n this,\r\n arc.x,\r\n arc.y,\r\n arc.radius,\r\n arc.startAngle,\r\n arc.endAngle,\r\n arc.counterclockwise,\r\n undefined,\r\n isClip,\r\n !began\r\n );\r\n } else {\r\n drawLine.call(this, arc.x, arc.y);\r\n }\r\n began = true;\r\n }\r\n } else if (moves[k].close === true) {\r\n this.pdf.internal.out(\"h\");\r\n began = false;\r\n } else if (moves[k].begin !== true) {\r\n var x = moves[k].start.x;\r\n var y = moves[k].start.y;\r\n drawLines.call(this, moves[k].deltas, x, y);\r\n began = true;\r\n }\r\n }\r\n\r\n if (style) {\r\n putStyle.call(this, style);\r\n }\r\n if (isClip) {\r\n doClip.call(this);\r\n }\r\n };\r\n\r\n var getBaseline = function(y) {\r\n var height =\r\n this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor;\r\n var descent = height * (this.pdf.internal.getLineHeightFactor() - 1);\r\n switch (this.ctx.textBaseline) {\r\n case \"bottom\":\r\n return y - descent;\r\n case \"top\":\r\n return y + height - descent;\r\n case \"hanging\":\r\n return y + height - 2 * descent;\r\n case \"middle\":\r\n return y + height / 2 - descent;\r\n case \"ideographic\":\r\n // TODO not implemented\r\n return y;\r\n case \"alphabetic\":\r\n default:\r\n return y;\r\n }\r\n };\r\n\r\n var getTextBottom = function(yBaseLine) {\r\n var height =\r\n this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor;\r\n var descent = height * (this.pdf.internal.getLineHeightFactor() - 1);\r\n return yBaseLine + descent;\r\n };\r\n\r\n Context2D.prototype.createLinearGradient = function createLinearGradient() {\r\n var canvasGradient = function canvasGradient() {};\r\n\r\n canvasGradient.colorStops = [];\r\n canvasGradient.addColorStop = function(offset, color) {\r\n this.colorStops.push([offset, color]);\r\n };\r\n\r\n canvasGradient.getColor = function() {\r\n if (this.colorStops.length === 0) {\r\n return \"#000000\";\r\n }\r\n\r\n return this.colorStops[0][1];\r\n };\r\n\r\n canvasGradient.isCanvasGradient = true;\r\n return canvasGradient;\r\n };\r\n Context2D.prototype.createPattern = function createPattern() {\r\n return this.createLinearGradient();\r\n };\r\n Context2D.prototype.createRadialGradient = function createRadialGradient() {\r\n return this.createLinearGradient();\r\n };\r\n\r\n /**\r\n *\r\n * @param x Edge point X\r\n * @param y Edge point Y\r\n * @param r Radius\r\n * @param a1 start angle\r\n * @param a2 end angle\r\n * @param counterclockwise\r\n * @param style\r\n * @param isClip\r\n */\r\n var drawArc = function(\r\n x,\r\n y,\r\n r,\r\n a1,\r\n a2,\r\n counterclockwise,\r\n style,\r\n isClip,\r\n includeMove\r\n ) {\r\n // http://hansmuller-flex.blogspot.com/2011/10/more-about-approximating-circular-arcs.html\r\n var curves = createArc.call(this, r, a1, a2, counterclockwise);\r\n\r\n for (var i = 0; i < curves.length; i++) {\r\n var curve = curves[i];\r\n if (i === 0) {\r\n if (includeMove) {\r\n doMove.call(this, curve.x1 + x, curve.y1 + y);\r\n } else {\r\n drawLine.call(this, curve.x1 + x, curve.y1 + y);\r\n }\r\n }\r\n drawCurve.call(\r\n this,\r\n x,\r\n y,\r\n curve.x2,\r\n curve.y2,\r\n curve.x3,\r\n curve.y3,\r\n curve.x4,\r\n curve.y4\r\n );\r\n }\r\n\r\n if (!isClip) {\r\n putStyle.call(this, style);\r\n } else {\r\n doClip.call(this);\r\n }\r\n };\r\n\r\n var putStyle = function(style) {\r\n switch (style) {\r\n case \"stroke\":\r\n this.pdf.internal.out(\"S\");\r\n break;\r\n case \"fill\":\r\n this.pdf.internal.out(\"f\");\r\n break;\r\n }\r\n };\r\n\r\n var doClip = function() {\r\n this.pdf.clip();\r\n this.pdf.discardPath();\r\n };\r\n\r\n var doMove = function(x, y) {\r\n this.pdf.internal.out(\r\n getHorizontalCoordinateString(x) +\r\n \" \" +\r\n getVerticalCoordinateString(y) +\r\n \" m\"\r\n );\r\n };\r\n\r\n var putText = function(options) {\r\n var textAlign;\r\n switch (options.align) {\r\n case \"right\":\r\n case \"end\":\r\n textAlign = \"right\";\r\n break;\r\n case \"center\":\r\n textAlign = \"center\";\r\n break;\r\n case \"left\":\r\n case \"start\":\r\n default:\r\n textAlign = \"left\";\r\n break;\r\n }\r\n\r\n var textDimensions = this.pdf.getTextDimensions(options.text);\r\n var yBaseLine = getBaseline.call(this, options.y);\r\n var yBottom = getTextBottom.call(this, yBaseLine);\r\n var yTop = yBottom - textDimensions.h;\r\n\r\n var pt = this.ctx.transform.applyToPoint(new Point(options.x, yBaseLine));\r\n var decomposedTransformationMatrix = this.ctx.transform.decompose();\r\n var matrix = new Matrix();\r\n matrix = matrix.multiply(decomposedTransformationMatrix.translate);\r\n matrix = matrix.multiply(decomposedTransformationMatrix.skew);\r\n matrix = matrix.multiply(decomposedTransformationMatrix.scale);\r\n\r\n var baselineRect = this.ctx.transform.applyToRectangle(\r\n new Rectangle(options.x, yBaseLine, textDimensions.w, textDimensions.h)\r\n );\r\n var textBounds = matrix.applyToRectangle(\r\n new Rectangle(options.x, yTop, textDimensions.w, textDimensions.h)\r\n );\r\n var pageArray = getPagesByPath.call(this, textBounds);\r\n var pages = [];\r\n for (var ii = 0; ii < pageArray.length; ii += 1) {\r\n if (pages.indexOf(pageArray[ii]) === -1) {\r\n pages.push(pageArray[ii]);\r\n }\r\n }\r\n\r\n sortPages(pages);\r\n\r\n var clipPath, oldSize, oldLineWidth;\r\n if (this.autoPaging) {\r\n var min = pages[0];\r\n var max = pages[pages.length - 1];\r\n for (var i = min; i < max + 1; i++) {\r\n this.pdf.setPage(i);\r\n\r\n var topMargin = i === 1 ? this.posY + this.margin[0] : this.margin[0];\r\n var firstPageHeight =\r\n this.pdf.internal.pageSize.height -\r\n this.posY -\r\n this.margin[0] -\r\n this.margin[2];\r\n var pageHeightMinusBottomMargin =\r\n this.pdf.internal.pageSize.height - this.margin[2];\r\n var pageHeightMinusMargins =\r\n pageHeightMinusBottomMargin - this.margin[0];\r\n var pageWidthMinusRightMargin =\r\n this.pdf.internal.pageSize.width - this.margin[1];\r\n var pageWidthMinusMargins = pageWidthMinusRightMargin - this.margin[3];\r\n var previousPageHeightSum =\r\n i === 1 ? 0 : firstPageHeight + (i - 2) * pageHeightMinusMargins;\r\n\r\n if (this.ctx.clip_path.length !== 0) {\r\n var tmpPaths = this.path;\r\n clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\r\n this.path = pathPositionRedo(\r\n clipPath,\r\n this.posX + this.margin[3],\r\n -1 * previousPageHeightSum + topMargin\r\n );\r\n drawPaths.call(this, \"fill\", true);\r\n this.path = tmpPaths;\r\n }\r\n var textBoundsOnPage = pathPositionRedo(\r\n [JSON.parse(JSON.stringify(textBounds))],\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n )[0];\r\n\r\n if (options.scale >= 0.01) {\r\n oldSize = this.pdf.internal.getFontSize();\r\n this.pdf.setFontSize(oldSize * options.scale);\r\n oldLineWidth = this.lineWidth;\r\n this.lineWidth = oldLineWidth * options.scale;\r\n }\r\n\r\n var doSlice = this.autoPaging !== \"text\";\r\n\r\n if (\r\n doSlice ||\r\n textBoundsOnPage.y + textBoundsOnPage.h <= pageHeightMinusBottomMargin\r\n ) {\r\n if (\r\n doSlice ||\r\n (textBoundsOnPage.y >= topMargin &&\r\n textBoundsOnPage.x <= pageWidthMinusRightMargin)\r\n ) {\r\n var croppedText = doSlice\r\n ? options.text\r\n : this.pdf.splitTextToSize(\r\n options.text,\r\n options.maxWidth ||\r\n pageWidthMinusRightMargin - textBoundsOnPage.x\r\n )[0];\r\n var baseLineRectOnPage = pathPositionRedo(\r\n [JSON.parse(JSON.stringify(baselineRect))],\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum +\r\n topMargin +\r\n this.ctx.prevPageLastElemOffset\r\n )[0];\r\n\r\n const needsClipping =\r\n doSlice && (i > min || i < max) && hasMargins.call(this);\r\n\r\n if (needsClipping) {\r\n this.pdf.saveGraphicsState();\r\n this.pdf\r\n .rect(\r\n this.margin[3],\r\n this.margin[0],\r\n pageWidthMinusMargins,\r\n pageHeightMinusMargins,\r\n null\r\n )\r\n .clip()\r\n .discardPath();\r\n }\r\n\r\n this.pdf.text(\r\n croppedText,\r\n baseLineRectOnPage.x,\r\n baseLineRectOnPage.y,\r\n {\r\n angle: options.angle,\r\n align: textAlign,\r\n renderingMode: options.renderingMode\r\n }\r\n );\r\n\r\n if (needsClipping) {\r\n this.pdf.restoreGraphicsState();\r\n }\r\n }\r\n } else {\r\n // This text is the last element of the page, but it got cut off due to the margin\r\n // so we render it in the next page\r\n\r\n if (textBoundsOnPage.y < pageHeightMinusBottomMargin) {\r\n // As a result, all other elements have their y offset increased\r\n this.ctx.prevPageLastElemOffset +=\r\n pageHeightMinusBottomMargin - textBoundsOnPage.y;\r\n }\r\n }\r\n\r\n if (options.scale >= 0.01) {\r\n this.pdf.setFontSize(oldSize);\r\n this.lineWidth = oldLineWidth;\r\n }\r\n }\r\n } else {\r\n if (options.scale >= 0.01) {\r\n oldSize = this.pdf.internal.getFontSize();\r\n this.pdf.setFontSize(oldSize * options.scale);\r\n oldLineWidth = this.lineWidth;\r\n this.lineWidth = oldLineWidth * options.scale;\r\n }\r\n this.pdf.text(options.text, pt.x + this.posX, pt.y + this.posY, {\r\n angle: options.angle,\r\n align: textAlign,\r\n renderingMode: options.renderingMode,\r\n maxWidth: options.maxWidth\r\n });\r\n\r\n if (options.scale >= 0.01) {\r\n this.pdf.setFontSize(oldSize);\r\n this.lineWidth = oldLineWidth;\r\n }\r\n }\r\n };\r\n\r\n var drawLine = function(x, y, prevX, prevY) {\r\n prevX = prevX || 0;\r\n prevY = prevY || 0;\r\n\r\n this.pdf.internal.out(\r\n getHorizontalCoordinateString(x + prevX) +\r\n \" \" +\r\n getVerticalCoordinateString(y + prevY) +\r\n \" l\"\r\n );\r\n };\r\n\r\n var drawLines = function(lines, x, y) {\r\n return this.pdf.lines(lines, x, y, null, null);\r\n };\r\n\r\n var drawCurve = function(x, y, x1, y1, x2, y2, x3, y3) {\r\n this.pdf.internal.out(\r\n [\r\n f2(getHorizontalCoordinate(x1 + x)),\r\n f2(getVerticalCoordinate(y1 + y)),\r\n f2(getHorizontalCoordinate(x2 + x)),\r\n f2(getVerticalCoordinate(y2 + y)),\r\n f2(getHorizontalCoordinate(x3 + x)),\r\n f2(getVerticalCoordinate(y3 + y)),\r\n \"c\"\r\n ].join(\" \")\r\n );\r\n };\r\n\r\n /**\r\n * Return a array of objects that represent bezier curves which approximate the circular arc centered at the origin, from startAngle to endAngle (radians) with the specified radius.\r\n *\r\n * Each bezier curve is an object with four points, where x1,y1 and x4,y4 are the arc's end points and x2,y2 and x3,y3 are the cubic bezier's control points.\r\n * @function createArc\r\n */\r\n var createArc = function(radius, startAngle, endAngle, anticlockwise) {\r\n var EPSILON = 0.00001; // Roughly 1/1000th of a degree, see below\r\n var twoPi = Math.PI * 2;\r\n var halfPi = Math.PI / 2.0;\r\n\r\n while (startAngle > endAngle) {\r\n startAngle = startAngle - twoPi;\r\n }\r\n var totalAngle = Math.abs(endAngle - startAngle);\r\n if (totalAngle < twoPi) {\r\n if (anticlockwise) {\r\n totalAngle = twoPi - totalAngle;\r\n }\r\n }\r\n\r\n // Compute the sequence of arc curves, up to PI/2 at a time.\r\n var curves = [];\r\n\r\n // clockwise or counterclockwise\r\n var sgn = anticlockwise ? -1 : +1;\r\n\r\n var a1 = startAngle;\r\n for (; totalAngle > EPSILON; ) {\r\n var remain = sgn * Math.min(totalAngle, halfPi);\r\n var a2 = a1 + remain;\r\n curves.push(createSmallArc.call(this, radius, a1, a2));\r\n totalAngle -= Math.abs(a2 - a1);\r\n a1 = a2;\r\n }\r\n\r\n return curves;\r\n };\r\n\r\n /**\r\n * Cubic bezier approximation of a circular arc centered at the origin, from (radians) a1 to a2, where a2-a1 < pi/2. The arc's radius is r.\r\n *\r\n * Returns an object with four points, where x1,y1 and x4,y4 are the arc's end points and x2,y2 and x3,y3 are the cubic bezier's control points.\r\n *\r\n * This algorithm is based on the approach described in: A. Riškus, \"Approximation of a Cubic Bezier Curve by Circular Arcs and Vice Versa,\" Information Technology and Control, 35(4), 2006 pp. 371-378.\r\n */\r\n var createSmallArc = function(r, a1, a2) {\r\n var a = (a2 - a1) / 2.0;\r\n\r\n var x4 = r * Math.cos(a);\r\n var y4 = r * Math.sin(a);\r\n var x1 = x4;\r\n var y1 = -y4;\r\n\r\n var q1 = x1 * x1 + y1 * y1;\r\n var q2 = q1 + x1 * x4 + y1 * y4;\r\n var k2 = ((4 / 3) * (Math.sqrt(2 * q1 * q2) - q2)) / (x1 * y4 - y1 * x4);\r\n\r\n var x2 = x1 - k2 * y1;\r\n var y2 = y1 + k2 * x1;\r\n var x3 = x2;\r\n var y3 = -y2;\r\n\r\n var ar = a + a1;\r\n var cos_ar = Math.cos(ar);\r\n var sin_ar = Math.sin(ar);\r\n\r\n return {\r\n x1: r * Math.cos(a1),\r\n y1: r * Math.sin(a1),\r\n x2: x2 * cos_ar - y2 * sin_ar,\r\n y2: x2 * sin_ar + y2 * cos_ar,\r\n x3: x3 * cos_ar - y3 * sin_ar,\r\n y3: x3 * sin_ar + y3 * cos_ar,\r\n x4: r * Math.cos(a2),\r\n y4: r * Math.sin(a2)\r\n };\r\n };\r\n\r\n var rad2deg = function(value) {\r\n return (value * 180) / Math.PI;\r\n };\r\n\r\n var getQuadraticCurveBoundary = function(sx, sy, cpx, cpy, ex, ey) {\r\n var midX1 = sx + (cpx - sx) * 0.5;\r\n var midY1 = sy + (cpy - sy) * 0.5;\r\n var midX2 = ex + (cpx - ex) * 0.5;\r\n var midY2 = ey + (cpy - ey) * 0.5;\r\n var resultX1 = Math.min(sx, ex, midX1, midX2);\r\n var resultX2 = Math.max(sx, ex, midX1, midX2);\r\n var resultY1 = Math.min(sy, ey, midY1, midY2);\r\n var resultY2 = Math.max(sy, ey, midY1, midY2);\r\n return new Rectangle(\r\n resultX1,\r\n resultY1,\r\n resultX2 - resultX1,\r\n resultY2 - resultY1\r\n );\r\n };\r\n\r\n //De Casteljau algorithm\r\n var getBezierCurveBoundary = function(ax, ay, bx, by, cx, cy, dx, dy) {\r\n var tobx = bx - ax;\r\n var toby = by - ay;\r\n var tocx = cx - bx;\r\n var tocy = cy - by;\r\n var todx = dx - cx;\r\n var tody = dy - cy;\r\n var precision = 40;\r\n var d,\r\n i,\r\n px,\r\n py,\r\n qx,\r\n qy,\r\n rx,\r\n ry,\r\n tx,\r\n ty,\r\n sx,\r\n sy,\r\n x,\r\n y,\r\n minx,\r\n miny,\r\n maxx,\r\n maxy,\r\n toqx,\r\n toqy,\r\n torx,\r\n tory,\r\n totx,\r\n toty;\r\n for (i = 0; i < precision + 1; i++) {\r\n d = i / precision;\r\n px = ax + d * tobx;\r\n py = ay + d * toby;\r\n qx = bx + d * tocx;\r\n qy = by + d * tocy;\r\n rx = cx + d * todx;\r\n ry = cy + d * tody;\r\n toqx = qx - px;\r\n toqy = qy - py;\r\n torx = rx - qx;\r\n tory = ry - qy;\r\n\r\n sx = px + d * toqx;\r\n sy = py + d * toqy;\r\n tx = qx + d * torx;\r\n ty = qy + d * tory;\r\n totx = tx - sx;\r\n toty = ty - sy;\r\n\r\n x = sx + d * totx;\r\n y = sy + d * toty;\r\n if (i == 0) {\r\n minx = x;\r\n miny = y;\r\n maxx = x;\r\n maxy = y;\r\n } else {\r\n minx = Math.min(minx, x);\r\n miny = Math.min(miny, y);\r\n maxx = Math.max(maxx, x);\r\n maxy = Math.max(maxy, y);\r\n }\r\n }\r\n return new Rectangle(\r\n Math.round(minx),\r\n Math.round(miny),\r\n Math.round(maxx - minx),\r\n Math.round(maxy - miny)\r\n );\r\n };\r\n\r\n var getPrevLineDashValue = function(lineDash, lineDashOffset) {\r\n return JSON.stringify({\r\n lineDash: lineDash,\r\n lineDashOffset: lineDashOffset\r\n });\r\n };\r\n\r\n var setLineDash = function() {\r\n // Avoid unnecessary line dash declarations.\r\n if (\r\n !this.prevLineDash &&\r\n !this.ctx.lineDash.length &&\r\n !this.ctx.lineDashOffset\r\n ) {\r\n return;\r\n }\r\n\r\n // Avoid unnecessary line dash declarations.\r\n const nextLineDash = getPrevLineDashValue(\r\n this.ctx.lineDash,\r\n this.ctx.lineDashOffset\r\n );\r\n if (this.prevLineDash !== nextLineDash) {\r\n this.pdf.setLineDash(this.ctx.lineDash, this.ctx.lineDashOffset);\r\n this.prevLineDash = nextLineDash;\r\n }\r\n };\r\n})(jsPDF.API);\r\n","/**\n * @license\n * jsPDF filters PlugIn\n * Copyright (c) 2014 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { zlibSync } from \"../libs/fflate.js\";\n\n(function(jsPDFAPI) {\n \"use strict\";\n\n var ASCII85Encode = function(a) {\n var b, c, d, e, f, g, h, i, j, k;\n // eslint-disable-next-line no-control-regex\n for (\n !/[^\\x00-\\xFF]/.test(a),\n b = \"\\x00\\x00\\x00\\x00\".slice(a.length % 4 || 4),\n a += b,\n c = [],\n d = 0,\n e = a.length;\n e > d;\n d += 4\n )\n (f =\n (a.charCodeAt(d) << 24) +\n (a.charCodeAt(d + 1) << 16) +\n (a.charCodeAt(d + 2) << 8) +\n a.charCodeAt(d + 3)),\n 0 !== f\n ? ((k = f % 85),\n (f = (f - k) / 85),\n (j = f % 85),\n (f = (f - j) / 85),\n (i = f % 85),\n (f = (f - i) / 85),\n (h = f % 85),\n (f = (f - h) / 85),\n (g = f % 85),\n c.push(g + 33, h + 33, i + 33, j + 33, k + 33))\n : c.push(122);\n return (\n (function(a, b) {\n for (var c = b; c > 0; c--) a.pop();\n })(c, b.length),\n String.fromCharCode.apply(String, c) + \"~>\"\n );\n };\n\n var ASCII85Decode = function(a) {\n var c,\n d,\n e,\n f,\n g,\n h = String,\n l = \"length\",\n w = 255,\n x = \"charCodeAt\",\n y = \"slice\",\n z = \"replace\";\n for (\n \"~>\" === a[y](-2),\n a = a[y](0, -2)\n [z](/\\s/g, \"\")\n [z](\"z\", \"!!!!!\"),\n c = \"uuuuu\"[y](a[l] % 5 || 5),\n a += c,\n e = [],\n f = 0,\n g = a[l];\n g > f;\n f += 5\n )\n (d =\n 52200625 * (a[x](f) - 33) +\n 614125 * (a[x](f + 1) - 33) +\n 7225 * (a[x](f + 2) - 33) +\n 85 * (a[x](f + 3) - 33) +\n (a[x](f + 4) - 33)),\n e.push(w & (d >> 24), w & (d >> 16), w & (d >> 8), w & d);\n return (\n (function(a, b) {\n for (var c = b; c > 0; c--) a.pop();\n })(e, c[l]),\n h.fromCharCode.apply(h, e)\n );\n };\n\n var ASCIIHexEncode = function(value) {\n return (\n value\n .split(\"\")\n .map(function(value) {\n return (\"0\" + value.charCodeAt().toString(16)).slice(-2);\n })\n .join(\"\") + \">\"\n );\n };\n\n var ASCIIHexDecode = function(value) {\n var regexCheckIfHex = new RegExp(/^([0-9A-Fa-f]{2})+$/);\n value = value.replace(/\\s/g, \"\");\n if (value.indexOf(\">\") !== -1) {\n value = value.substr(0, value.indexOf(\">\"));\n }\n if (value.length % 2) {\n value += \"0\";\n }\n if (regexCheckIfHex.test(value) === false) {\n return \"\";\n }\n var result = \"\";\n for (var i = 0; i < value.length; i += 2) {\n result += String.fromCharCode(\"0x\" + (value[i] + value[i + 1]));\n }\n return result;\n };\n /*\n var FlatePredictors = {\n None: 1,\n TIFF: 2,\n PNG_None: 10,\n PNG_Sub: 11,\n PNG_Up: 12,\n PNG_Average: 13,\n PNG_Paeth: 14,\n PNG_Optimum: 15\n };\n */\n\n var FlateEncode = function(data) {\n var arr = new Uint8Array(data.length);\n var i = data.length;\n while (i--) {\n arr[i] = data.charCodeAt(i);\n }\n arr = zlibSync(arr);\n data = arr.reduce(function(data, byte) {\n return data + String.fromCharCode(byte);\n }, \"\");\n return data;\n };\n\n jsPDFAPI.processDataByFilters = function(origData, filterChain) {\n \"use strict\";\n var i = 0;\n var data = origData || \"\";\n var reverseChain = [];\n filterChain = filterChain || [];\n\n if (typeof filterChain === \"string\") {\n filterChain = [filterChain];\n }\n\n for (i = 0; i < filterChain.length; i += 1) {\n switch (filterChain[i]) {\n case \"ASCII85Decode\":\n case \"/ASCII85Decode\":\n data = ASCII85Decode(data);\n reverseChain.push(\"/ASCII85Encode\");\n break;\n case \"ASCII85Encode\":\n case \"/ASCII85Encode\":\n data = ASCII85Encode(data);\n reverseChain.push(\"/ASCII85Decode\");\n break;\n case \"ASCIIHexDecode\":\n case \"/ASCIIHexDecode\":\n data = ASCIIHexDecode(data);\n reverseChain.push(\"/ASCIIHexEncode\");\n break;\n case \"ASCIIHexEncode\":\n case \"/ASCIIHexEncode\":\n data = ASCIIHexEncode(data);\n reverseChain.push(\"/ASCIIHexDecode\");\n break;\n case \"FlateEncode\":\n case \"/FlateEncode\":\n data = FlateEncode(data);\n reverseChain.push(\"/FlateDecode\");\n break;\n default:\n throw new Error(\n 'The filter: \"' + filterChain[i] + '\" is not implemented'\n );\n }\n }\n\n return { data: data, reverseChain: reverseChain.reverse().join(\" \") };\n };\n})(jsPDF.API);\n","/**\n * @license\n * jsPDF fileloading PlugIn\n * Copyright (c) 2018 Aras Abbasi (aras.abbasi@gmail.com)\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name fileloading\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * @name loadFile\n * @function\n * @param {string} url\n * @param {boolean} sync\n * @param {function} callback\n * @returns {string|undefined} result\n */\n jsPDFAPI.loadFile = function(url, sync, callback) {\n return browserRequest(url, sync, callback);\n\n };\n\n /**\n * @name loadImageFile\n * @function\n * @param {string} path\n * @param {boolean} sync\n * @param {function} callback\n */\n jsPDFAPI.loadImageFile = jsPDFAPI.loadFile;\n\n function browserRequest(url, sync, callback) {\n sync = sync === false ? false : true;\n callback = typeof callback === \"function\" ? callback : function() {};\n var result = undefined;\n\n var xhr = function(url, sync, callback) {\n var request = new XMLHttpRequest();\n var i = 0;\n\n var sanitizeUnicode = function(data) {\n var dataLength = data.length;\n var charArray = [];\n var StringFromCharCode = String.fromCharCode;\n\n //Transform Unicode to ASCII\n for (i = 0; i < dataLength; i += 1) {\n charArray.push(StringFromCharCode(data.charCodeAt(i) & 0xff));\n }\n return charArray.join(\"\");\n };\n\n request.open(\"GET\", url, !sync);\n // XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com]\n request.overrideMimeType(\"text/plain; charset=x-user-defined\");\n\n if (sync === false) {\n request.onload = function() {\n if (request.status === 200) {\n callback(sanitizeUnicode(this.responseText));\n } else {\n callback(undefined);\n }\n };\n }\n request.send(null);\n\n if (sync && request.status === 200) {\n return sanitizeUnicode(request.responseText);\n }\n };\n try {\n result = xhr(url, sync, callback);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n return result;\n }\n\n function nodeReadFile(url, sync, callback) {\n sync = sync === false ? false : true;\n var result = undefined;\n\n var fs = require(\"fs\");\n var path = require(\"path\");\n\n url = path.resolve(url);\n if (sync) {\n try {\n result = fs.readFileSync(url, { encoding: \"latin1\" });\n } catch (e) {\n return undefined;\n }\n } else {\n fs.readFile(url, { encoding: \"latin1\" }, function(err, data) {\n if (!callback) {\n return;\n }\n if (err) {\n callback(undefined);\n }\n callback(data);\n });\n }\n\n return result;\n }\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2018 Erik Koopmans\n * Released under the MIT License.\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { normalizeFontFace } from \"../libs/fontFace.js\";\nimport { globalObject } from \"../libs/globalObject.js\";\n\n/**\n * jsPDF html PlugIn\n *\n * @name html\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n function loadHtml2Canvas() {\n return (function() {\n if (globalObject[\"html2canvas\"]) {\n return Promise.resolve(globalObject[\"html2canvas\"]);\n }\n\n return import(\"html2canvas\");\n\n })()\n .catch(function(e) {\n return Promise.reject(new Error(\"Could not load html2canvas: \" + e));\n })\n .then(function(html2canvas) {\n return html2canvas.default ? html2canvas.default : html2canvas;\n });\n }\n\n function loadDomPurify() {\n return (function() {\n if (globalObject[\"DOMPurify\"]) {\n return Promise.resolve(globalObject[\"DOMPurify\"]);\n }\n\n return import(\"dompurify\");\n\n })()\n .catch(function(e) {\n return Promise.reject(new Error(\"Could not load dompurify: \" + e));\n })\n .then(function(dompurify) {\n return dompurify.default ? dompurify.default : dompurify;\n });\n }\n\n /**\n * Determine the type of a variable/object.\n *\n * @private\n * @ignore\n */\n var objType = function(obj) {\n var type = typeof obj;\n if (type === \"undefined\") return \"undefined\";\n else if (type === \"string\" || obj instanceof String) return \"string\";\n else if (type === \"number\" || obj instanceof Number) return \"number\";\n else if (type === \"function\" || obj instanceof Function) return \"function\";\n else if (!!obj && obj.constructor === Array) return \"array\";\n else if (obj && obj.nodeType === 1) return \"element\";\n else if (type === \"object\") return \"object\";\n else return \"unknown\";\n };\n\n /**\n * Create an HTML element with optional className, innerHTML, and style.\n *\n * @private\n * @ignore\n */\n var createElement = function(tagName, opt) {\n var el = document.createElement(tagName);\n if (opt.className) el.className = opt.className;\n if (opt.innerHTML && opt.dompurify) {\n el.innerHTML = opt.dompurify.sanitize(opt.innerHTML);\n }\n for (var key in opt.style) {\n el.style[key] = opt.style[key];\n }\n return el;\n };\n\n /**\n * Deep-clone a node and preserve contents/properties.\n *\n * @private\n * @ignore\n */\n var cloneNode = function(node, javascriptEnabled) {\n // Recursively clone the node.\n var clone =\n node.nodeType === 3\n ? document.createTextNode(node.nodeValue)\n : node.cloneNode(false);\n for (var child = node.firstChild; child; child = child.nextSibling) {\n if (\n javascriptEnabled === true ||\n child.nodeType !== 1 ||\n child.nodeName !== \"SCRIPT\"\n ) {\n clone.appendChild(cloneNode(child, javascriptEnabled));\n }\n }\n\n if (node.nodeType === 1) {\n // Preserve contents/properties of special nodes.\n if (node.nodeName === \"CANVAS\") {\n clone.width = node.width;\n clone.height = node.height;\n clone.getContext(\"2d\").drawImage(node, 0, 0);\n } else if (node.nodeName === \"TEXTAREA\" || node.nodeName === \"SELECT\") {\n clone.value = node.value;\n }\n\n // Preserve the node's scroll position when it loads.\n clone.addEventListener(\n \"load\",\n function() {\n clone.scrollTop = node.scrollTop;\n clone.scrollLeft = node.scrollLeft;\n },\n true\n );\n }\n\n // Return the cloned node.\n return clone;\n };\n\n /* ----- CONSTRUCTOR ----- */\n\n var Worker = function Worker(opt) {\n // Create the root parent for the proto chain, and the starting Worker.\n var root = Object.assign(\n Worker.convert(Promise.resolve()),\n JSON.parse(JSON.stringify(Worker.template))\n );\n var self = Worker.convert(Promise.resolve(), root);\n\n // Set progress, optional settings, and return.\n self = self.setProgress(1, Worker, 1, [Worker]);\n self = self.set(opt);\n return self;\n };\n\n // Boilerplate for subclassing Promise.\n Worker.prototype = Object.create(Promise.prototype);\n Worker.prototype.constructor = Worker;\n\n // Converts/casts promises into Workers.\n Worker.convert = function convert(promise, inherit) {\n // Uses prototypal inheritance to receive changes made to ancestors' properties.\n promise.__proto__ = inherit || Worker.prototype;\n return promise;\n };\n\n Worker.template = {\n prop: {\n src: null,\n container: null,\n overlay: null,\n canvas: null,\n img: null,\n pdf: null,\n pageSize: null,\n callback: function() {}\n },\n progress: {\n val: 0,\n state: null,\n n: 0,\n stack: []\n },\n opt: {\n filename: \"file.pdf\",\n margin: [0, 0, 0, 0],\n enableLinks: true,\n x: 0,\n y: 0,\n html2canvas: {},\n jsPDF: {},\n backgroundColor: \"transparent\"\n }\n };\n\n /* ----- FROM / TO ----- */\n\n Worker.prototype.from = function from(src, type) {\n function getType(src) {\n switch (objType(src)) {\n case \"string\":\n return \"string\";\n case \"element\":\n return src.nodeName.toLowerCase() === \"canvas\" ? \"canvas\" : \"element\";\n default:\n return \"unknown\";\n }\n }\n\n return this.then(function from_main() {\n type = type || getType(src);\n switch (type) {\n case \"string\":\n return this.then(loadDomPurify).then(function(dompurify) {\n return this.set({\n src: createElement(\"div\", {\n innerHTML: src,\n dompurify: dompurify\n })\n });\n });\n case \"element\":\n return this.set({ src: src });\n case \"canvas\":\n return this.set({ canvas: src });\n case \"img\":\n return this.set({ img: src });\n default:\n return this.error(\"Unknown source type.\");\n }\n });\n };\n\n Worker.prototype.to = function to(target) {\n // Route the 'to' request to the appropriate method.\n switch (target) {\n case \"container\":\n return this.toContainer();\n case \"canvas\":\n return this.toCanvas();\n case \"img\":\n return this.toImg();\n case \"pdf\":\n return this.toPdf();\n default:\n return this.error(\"Invalid target.\");\n }\n };\n\n Worker.prototype.toContainer = function toContainer() {\n // Set up function prerequisites.\n var prereqs = [\n function checkSrc() {\n return (\n this.prop.src || this.error(\"Cannot duplicate - no source HTML.\")\n );\n },\n function checkPageSize() {\n return this.prop.pageSize || this.setPageSize();\n }\n ];\n return this.thenList(prereqs).then(function toContainer_main() {\n // Define the CSS styles for the container and its overlay parent.\n var overlayCSS = {\n position: \"fixed\",\n overflow: \"hidden\",\n zIndex: 1000,\n left: \"-100000px\",\n right: 0,\n bottom: 0,\n top: 0\n };\n var containerCSS = {\n position: \"relative\",\n display: \"inline-block\",\n width:\n (typeof this.opt.width === \"number\" &&\n !isNaN(this.opt.width) &&\n typeof this.opt.windowWidth === \"number\" &&\n !isNaN(this.opt.windowWidth)\n ? this.opt.windowWidth\n : Math.max(\n this.prop.src.clientWidth,\n this.prop.src.scrollWidth,\n this.prop.src.offsetWidth\n )) + \"px\",\n left: 0,\n right: 0,\n top: 0,\n margin: \"auto\",\n backgroundColor: this.opt.backgroundColor\n }; // Set the overlay to hidden (could be changed in the future to provide a print preview).\n\n var source = cloneNode(\n this.prop.src,\n this.opt.html2canvas.javascriptEnabled\n );\n\n if (source.tagName === \"BODY\") {\n containerCSS.height =\n Math.max(\n document.body.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.clientHeight,\n document.documentElement.scrollHeight,\n document.documentElement.offsetHeight\n ) + \"px\";\n }\n\n this.prop.overlay = createElement(\"div\", {\n className: \"html2pdf__overlay\",\n style: overlayCSS\n });\n this.prop.container = createElement(\"div\", {\n className: \"html2pdf__container\",\n style: containerCSS\n });\n this.prop.container.appendChild(source);\n this.prop.container.firstChild.appendChild(\n createElement(\"div\", {\n style: {\n clear: \"both\",\n border: \"0 none transparent\",\n margin: 0,\n padding: 0,\n height: 0\n }\n })\n );\n this.prop.container.style.float = \"none\";\n this.prop.overlay.appendChild(this.prop.container);\n document.body.appendChild(this.prop.overlay);\n this.prop.container.firstChild.style.position = \"relative\";\n this.prop.container.height =\n Math.max(\n this.prop.container.firstChild.clientHeight,\n this.prop.container.firstChild.scrollHeight,\n this.prop.container.firstChild.offsetHeight\n ) + \"px\";\n });\n };\n\n Worker.prototype.toCanvas = function toCanvas() {\n // Set up function prerequisites.\n var prereqs = [\n function checkContainer() {\n return (\n document.body.contains(this.prop.container) || this.toContainer()\n );\n }\n ];\n\n // Fulfill prereqs then create the canvas.\n return this.thenList(prereqs)\n .then(loadHtml2Canvas)\n .then(function toCanvas_main(html2canvas) {\n // Handle old-fashioned 'onrendered' argument.\n var options = Object.assign({}, this.opt.html2canvas);\n delete options.onrendered;\n\n return html2canvas(this.prop.container, options);\n })\n .then(function toCanvas_post(canvas) {\n // Handle old-fashioned 'onrendered' argument.\n var onRendered = this.opt.html2canvas.onrendered || function() {};\n onRendered(canvas);\n\n this.prop.canvas = canvas;\n document.body.removeChild(this.prop.overlay);\n });\n };\n\n Worker.prototype.toContext2d = function toContext2d() {\n // Set up function prerequisites.\n var prereqs = [\n function checkContainer() {\n return (\n document.body.contains(this.prop.container) || this.toContainer()\n );\n }\n ];\n\n // Fulfill prereqs then create the canvas.\n return this.thenList(prereqs)\n .then(loadHtml2Canvas)\n .then(function toContext2d_main(html2canvas) {\n // Handle old-fashioned 'onrendered' argument.\n\n var pdf = this.opt.jsPDF;\n var fontFaces = this.opt.fontFaces;\n\n var scale =\n typeof this.opt.width === \"number\" &&\n !isNaN(this.opt.width) &&\n typeof this.opt.windowWidth === \"number\" &&\n !isNaN(this.opt.windowWidth)\n ? this.opt.width / this.opt.windowWidth\n : 1;\n\n var options = Object.assign(\n {\n async: true,\n allowTaint: true,\n scale: scale,\n scrollX: this.opt.scrollX || 0,\n scrollY: this.opt.scrollY || 0,\n backgroundColor: \"#ffffff\",\n imageTimeout: 15000,\n logging: true,\n proxy: null,\n removeContainer: true,\n foreignObjectRendering: false,\n useCORS: false\n },\n this.opt.html2canvas\n );\n delete options.onrendered;\n\n pdf.context2d.autoPaging =\n typeof this.opt.autoPaging === \"undefined\"\n ? true\n : this.opt.autoPaging;\n pdf.context2d.posX = this.opt.x;\n pdf.context2d.posY = this.opt.y;\n pdf.context2d.margin = this.opt.margin;\n pdf.context2d.fontFaces = fontFaces;\n\n if (fontFaces) {\n for (var i = 0; i < fontFaces.length; ++i) {\n var font = fontFaces[i];\n var src = font.src.find(function(src) {\n return src.format === \"truetype\";\n });\n\n if (src) {\n pdf.addFont(src.url, font.ref.name, font.ref.style);\n }\n }\n }\n\n options.windowHeight = options.windowHeight || 0;\n options.windowHeight =\n options.windowHeight == 0\n ? Math.max(\n this.prop.container.clientHeight,\n this.prop.container.scrollHeight,\n this.prop.container.offsetHeight\n )\n : options.windowHeight;\n\n pdf.context2d.save(true);\n return html2canvas(this.prop.container, options);\n })\n .then(function toContext2d_post(canvas) {\n this.opt.jsPDF.context2d.restore(true);\n\n // Handle old-fashioned 'onrendered' argument.\n var onRendered = this.opt.html2canvas.onrendered || function() {};\n onRendered(canvas);\n\n this.prop.canvas = canvas;\n document.body.removeChild(this.prop.overlay);\n });\n };\n\n Worker.prototype.toImg = function toImg() {\n // Set up function prerequisites.\n var prereqs = [\n function checkCanvas() {\n return this.prop.canvas || this.toCanvas();\n }\n ];\n\n // Fulfill prereqs then create the image.\n return this.thenList(prereqs).then(function toImg_main() {\n var imgData = this.prop.canvas.toDataURL(\n \"image/\" + this.opt.image.type,\n this.opt.image.quality\n );\n this.prop.img = document.createElement(\"img\");\n this.prop.img.src = imgData;\n });\n };\n\n Worker.prototype.toPdf = function toPdf() {\n // Set up function prerequisites.\n var prereqs = [\n function checkContext2d() {\n return this.toContext2d();\n }\n //function checkCanvas() { return this.prop.canvas || this.toCanvas(); }\n ];\n\n // Fulfill prereqs then create the image.\n return this.thenList(prereqs).then(function toPdf_main() {\n // Create local copies of frequently used properties.\n this.prop.pdf = this.prop.pdf || this.opt.jsPDF;\n });\n };\n\n /* ----- OUTPUT / SAVE ----- */\n\n Worker.prototype.output = function output(type, options, src) {\n // Redirect requests to the correct function (outputPdf / outputImg).\n src = src || \"pdf\";\n if (src.toLowerCase() === \"img\" || src.toLowerCase() === \"image\") {\n return this.outputImg(type, options);\n } else {\n return this.outputPdf(type, options);\n }\n };\n\n Worker.prototype.outputPdf = function outputPdf(type, options) {\n // Set up function prerequisites.\n var prereqs = [\n function checkPdf() {\n return this.prop.pdf || this.toPdf();\n }\n ];\n\n // Fulfill prereqs then perform the appropriate output.\n return this.thenList(prereqs).then(function outputPdf_main() {\n /* Currently implemented output types:\n * https://rawgit.com/MrRio/jsPDF/master/docs/jspdf.js.html#line992\n * save(options), arraybuffer, blob, bloburi/bloburl,\n * datauristring/dataurlstring, dataurlnewwindow, datauri/dataurl\n */\n return this.prop.pdf.output(type, options);\n });\n };\n\n Worker.prototype.outputImg = function outputImg(type) {\n // Set up function prerequisites.\n var prereqs = [\n function checkImg() {\n return this.prop.img || this.toImg();\n }\n ];\n\n // Fulfill prereqs then perform the appropriate output.\n return this.thenList(prereqs).then(function outputImg_main() {\n switch (type) {\n case undefined:\n case \"img\":\n return this.prop.img;\n case \"datauristring\":\n case \"dataurlstring\":\n return this.prop.img.src;\n case \"datauri\":\n case \"dataurl\":\n return (document.location.href = this.prop.img.src);\n default:\n throw 'Image output type \"' + type + '\" is not supported.';\n }\n });\n };\n\n Worker.prototype.save = function save(filename) {\n // Set up function prerequisites.\n var prereqs = [\n function checkPdf() {\n return this.prop.pdf || this.toPdf();\n }\n ];\n\n // Fulfill prereqs, update the filename (if provided), and save the PDF.\n return this.thenList(prereqs)\n .set(filename ? { filename: filename } : null)\n .then(function save_main() {\n this.prop.pdf.save(this.opt.filename);\n });\n };\n\n Worker.prototype.doCallback = function doCallback() {\n // Set up function prerequisites.\n var prereqs = [\n function checkPdf() {\n return this.prop.pdf || this.toPdf();\n }\n ];\n\n // Fulfill prereqs, update the filename (if provided), and save the PDF.\n return this.thenList(prereqs).then(function doCallback_main() {\n this.prop.callback(this.prop.pdf);\n });\n };\n\n /* ----- SET / GET ----- */\n\n Worker.prototype.set = function set(opt) {\n // TODO: Implement ordered pairs?\n\n // Silently ignore invalid or empty input.\n if (objType(opt) !== \"object\") {\n return this;\n }\n\n // Build an array of setter functions to queue.\n var fns = Object.keys(opt || {}).map(function(key) {\n if (key in Worker.template.prop) {\n // Set pre-defined properties.\n return function set_prop() {\n this.prop[key] = opt[key];\n };\n } else {\n switch (key) {\n case \"margin\":\n return this.setMargin.bind(this, opt.margin);\n case \"jsPDF\":\n return function set_jsPDF() {\n this.opt.jsPDF = opt.jsPDF;\n return this.setPageSize();\n };\n case \"pageSize\":\n return this.setPageSize.bind(this, opt.pageSize);\n default:\n // Set any other properties in opt.\n return function set_opt() {\n this.opt[key] = opt[key];\n };\n }\n }\n }, this);\n\n // Set properties within the promise chain.\n return this.then(function set_main() {\n return this.thenList(fns);\n });\n };\n\n Worker.prototype.get = function get(key, cbk) {\n return this.then(function get_main() {\n // Fetch the requested property, either as a predefined prop or in opt.\n var val = key in Worker.template.prop ? this.prop[key] : this.opt[key];\n return cbk ? cbk(val) : val;\n });\n };\n\n Worker.prototype.setMargin = function setMargin(margin) {\n return this.then(function setMargin_main() {\n // Parse the margin property.\n switch (objType(margin)) {\n case \"number\":\n margin = [margin, margin, margin, margin];\n // eslint-disable-next-line no-fallthrough\n case \"array\":\n if (margin.length === 2) {\n margin = [margin[0], margin[1], margin[0], margin[1]];\n }\n if (margin.length === 4) {\n break;\n }\n // eslint-disable-next-line no-fallthrough\n default:\n return this.error(\"Invalid margin array.\");\n }\n\n // Set the margin property, then update pageSize.\n this.opt.margin = margin;\n }).then(this.setPageSize);\n };\n\n Worker.prototype.setPageSize = function setPageSize(pageSize) {\n function toPx(val, k) {\n return Math.floor(((val * k) / 72) * 96);\n }\n\n return this.then(function setPageSize_main() {\n // Retrieve page-size based on jsPDF settings, if not explicitly provided.\n pageSize = pageSize || jsPDF.getPageSize(this.opt.jsPDF);\n\n // Add 'inner' field if not present.\n if (!pageSize.hasOwnProperty(\"inner\")) {\n pageSize.inner = {\n width: pageSize.width - this.opt.margin[1] - this.opt.margin[3],\n height: pageSize.height - this.opt.margin[0] - this.opt.margin[2]\n };\n pageSize.inner.px = {\n width: toPx(pageSize.inner.width, pageSize.k),\n height: toPx(pageSize.inner.height, pageSize.k)\n };\n pageSize.inner.ratio = pageSize.inner.height / pageSize.inner.width;\n }\n\n // Attach pageSize to this.\n this.prop.pageSize = pageSize;\n });\n };\n\n Worker.prototype.setProgress = function setProgress(val, state, n, stack) {\n // Immediately update all progress values.\n if (val != null) this.progress.val = val;\n if (state != null) this.progress.state = state;\n if (n != null) this.progress.n = n;\n if (stack != null) this.progress.stack = stack;\n this.progress.ratio = this.progress.val / this.progress.state;\n\n // Return this for command chaining.\n return this;\n };\n\n Worker.prototype.updateProgress = function updateProgress(\n val,\n state,\n n,\n stack\n ) {\n // Immediately update all progress values, using setProgress.\n return this.setProgress(\n val ? this.progress.val + val : null,\n state ? state : null,\n n ? this.progress.n + n : null,\n stack ? this.progress.stack.concat(stack) : null\n );\n };\n\n /* ----- PROMISE MAPPING ----- */\n\n Worker.prototype.then = function then(onFulfilled, onRejected) {\n // Wrap `this` for encapsulation.\n var self = this;\n\n return this.thenCore(onFulfilled, onRejected, function then_main(\n onFulfilled,\n onRejected\n ) {\n // Update progress while queuing, calling, and resolving `then`.\n self.updateProgress(null, null, 1, [onFulfilled]);\n return Promise.prototype.then\n .call(this, function then_pre(val) {\n self.updateProgress(null, onFulfilled);\n return val;\n })\n .then(onFulfilled, onRejected)\n .then(function then_post(val) {\n self.updateProgress(1);\n return val;\n });\n });\n };\n\n Worker.prototype.thenCore = function thenCore(\n onFulfilled,\n onRejected,\n thenBase\n ) {\n // Handle optional thenBase parameter.\n thenBase = thenBase || Promise.prototype.then;\n\n // Wrap `this` for encapsulation and bind it to the promise handlers.\n var self = this;\n if (onFulfilled) {\n onFulfilled = onFulfilled.bind(self);\n }\n if (onRejected) {\n onRejected = onRejected.bind(self);\n }\n\n // Cast self into a Promise to avoid polyfills recursively defining `then`.\n var isNative =\n Promise.toString().indexOf(\"[native code]\") !== -1 &&\n Promise.name === \"Promise\";\n var selfPromise = isNative\n ? self\n : Worker.convert(Object.assign({}, self), Promise.prototype);\n\n // Return the promise, after casting it into a Worker and preserving props.\n var returnVal = thenBase.call(selfPromise, onFulfilled, onRejected);\n return Worker.convert(returnVal, self.__proto__);\n };\n\n Worker.prototype.thenExternal = function thenExternal(\n onFulfilled,\n onRejected\n ) {\n // Call `then` and return a standard promise (exits the Worker chain).\n return Promise.prototype.then.call(this, onFulfilled, onRejected);\n };\n\n Worker.prototype.thenList = function thenList(fns) {\n // Queue a series of promise 'factories' into the promise chain.\n var self = this;\n fns.forEach(function thenList_forEach(fn) {\n self = self.thenCore(fn);\n });\n return self;\n };\n\n Worker.prototype[\"catch\"] = function(onRejected) {\n // Bind `this` to the promise handler, call `catch`, and return a Worker.\n if (onRejected) {\n onRejected = onRejected.bind(this);\n }\n var returnVal = Promise.prototype[\"catch\"].call(this, onRejected);\n return Worker.convert(returnVal, this);\n };\n\n Worker.prototype.catchExternal = function catchExternal(onRejected) {\n // Call `catch` and return a standard promise (exits the Worker chain).\n return Promise.prototype[\"catch\"].call(this, onRejected);\n };\n\n Worker.prototype.error = function error(msg) {\n // Throw the error in the Promise chain.\n return this.then(function error_main() {\n throw new Error(msg);\n });\n };\n\n /* ----- ALIASES ----- */\n\n Worker.prototype.using = Worker.prototype.set;\n Worker.prototype.saveAs = Worker.prototype.save;\n Worker.prototype.export = Worker.prototype.output;\n Worker.prototype.run = Worker.prototype.then;\n\n // Get dimensions of a PDF page, as determined by jsPDF.\n jsPDF.getPageSize = function(orientation, unit, format) {\n // Decode options object\n if (typeof orientation === \"object\") {\n var options = orientation;\n orientation = options.orientation;\n unit = options.unit || unit;\n format = options.format || format;\n }\n\n // Default options\n unit = unit || \"mm\";\n format = format || \"a4\";\n orientation = (\"\" + (orientation || \"P\")).toLowerCase();\n var format_as_string = (\"\" + format).toLowerCase();\n\n // Size in pt of various paper formats\n var pageFormats = {\n a0: [2383.94, 3370.39],\n a1: [1683.78, 2383.94],\n a2: [1190.55, 1683.78],\n a3: [841.89, 1190.55],\n a4: [595.28, 841.89],\n a5: [419.53, 595.28],\n a6: [297.64, 419.53],\n a7: [209.76, 297.64],\n a8: [147.4, 209.76],\n a9: [104.88, 147.4],\n a10: [73.7, 104.88],\n b0: [2834.65, 4008.19],\n b1: [2004.09, 2834.65],\n b2: [1417.32, 2004.09],\n b3: [1000.63, 1417.32],\n b4: [708.66, 1000.63],\n b5: [498.9, 708.66],\n b6: [354.33, 498.9],\n b7: [249.45, 354.33],\n b8: [175.75, 249.45],\n b9: [124.72, 175.75],\n b10: [87.87, 124.72],\n c0: [2599.37, 3676.54],\n c1: [1836.85, 2599.37],\n c2: [1298.27, 1836.85],\n c3: [918.43, 1298.27],\n c4: [649.13, 918.43],\n c5: [459.21, 649.13],\n c6: [323.15, 459.21],\n c7: [229.61, 323.15],\n c8: [161.57, 229.61],\n c9: [113.39, 161.57],\n c10: [79.37, 113.39],\n dl: [311.81, 623.62],\n letter: [612, 792],\n \"government-letter\": [576, 756],\n legal: [612, 1008],\n \"junior-legal\": [576, 360],\n ledger: [1224, 792],\n tabloid: [792, 1224],\n \"credit-card\": [153, 243]\n };\n\n var k;\n // Unit conversion\n switch (unit) {\n case \"pt\":\n k = 1;\n break;\n case \"mm\":\n k = 72 / 25.4;\n break;\n case \"cm\":\n k = 72 / 2.54;\n break;\n case \"in\":\n k = 72;\n break;\n case \"px\":\n k = 72 / 96;\n break;\n case \"pc\":\n k = 12;\n break;\n case \"em\":\n k = 12;\n break;\n case \"ex\":\n k = 6;\n break;\n default:\n throw \"Invalid unit: \" + unit;\n }\n var pageHeight = 0;\n var pageWidth = 0;\n\n // Dimensions are stored as user units and converted to points on output\n if (pageFormats.hasOwnProperty(format_as_string)) {\n pageHeight = pageFormats[format_as_string][1] / k;\n pageWidth = pageFormats[format_as_string][0] / k;\n } else {\n try {\n pageHeight = format[1];\n pageWidth = format[0];\n } catch (err) {\n throw new Error(\"Invalid format: \" + format);\n }\n }\n\n var tmp;\n // Handle page orientation\n if (orientation === \"p\" || orientation === \"portrait\") {\n orientation = \"p\";\n if (pageWidth > pageHeight) {\n tmp = pageWidth;\n pageWidth = pageHeight;\n pageHeight = tmp;\n }\n } else if (orientation === \"l\" || orientation === \"landscape\") {\n orientation = \"l\";\n if (pageHeight > pageWidth) {\n tmp = pageWidth;\n pageWidth = pageHeight;\n pageHeight = tmp;\n }\n } else {\n throw \"Invalid orientation: \" + orientation;\n }\n\n // Return information (k is the unit conversion ratio from pts)\n var info = {\n width: pageWidth,\n height: pageHeight,\n unit: unit,\n k: k,\n orientation: orientation\n };\n return info;\n };\n\n /**\n * @typedef FontFace\n *\n * The font-face type implements an interface similar to that of the font-face CSS rule,\n * and is used by jsPDF to match fonts when the font property of CanvasRenderingContext2D\n * is updated.\n *\n * All properties expect values similar to those in the font-face CSS rule. A difference\n * is the font-family, which do not need to be enclosed in double-quotes when containing\n * spaces like in CSS.\n *\n * @property {string} family The name of the font-family.\n * @property {string|undefined} style The style that this font-face defines, e.g. 'italic'.\n * @property {string|number|undefined} weight The weight of the font, either as a string or a number (400, 500, 600, e.g.)\n * @property {string|undefined} stretch The stretch of the font, e.g. condensed, normal, expanded.\n * @property {Object[]} src A list of URLs from where fonts of various formats can be fetched.\n * @property {string} [src] url A URL to a font of a specific format.\n * @property {string} [src] format Format of the font referenced by the URL.\n */\n\n /**\n * Generate a PDF from an HTML element or string using.\n *\n * @name html\n * @function\n * @param {HTMLElement|string} source The source HTMLElement or a string containing HTML.\n * @param {Object} [options] Collection of settings\n * @param {function} [options.callback] The mandatory callback-function gets as first parameter the current jsPDF instance\n * @param {(number|number[])=} [options.margin] Page margins [top, right, bottom, left]. Default is 0.\n * @param {(boolean|'slice'|'text')=} [options.autoPaging] The auto paging mode.\n *
      \n *
    • \n * false: Auto paging is disabled.\n *
    • \n *
    • \n * true or 'slice': Will cut shapes or text chunks across page breaks. Will possibly\n * slice text in half, making it difficult to read.\n *
    • \n *
    • \n * 'text': Trys not to cut text in half across page breaks. Works best for documents consisting\n * mostly of a single column of text.\n *
    • \n *
    \n * Default is true.\n * @param {string} [options.filename] name of the file\n * @param {HTMLOptionImage} [options.image] image settings when converting HTML to image\n * @param {Html2CanvasOptions} [options.html2canvas] html2canvas options\n * @param {FontFace[]} [options.fontFaces] A list of font-faces to match when resolving fonts. Fonts will be added to the PDF based on the specified URL. If omitted, the font match algorithm falls back to old algorithm.\n * @param {jsPDF} [options.jsPDF] jsPDF instance\n * @param {number=} [options.x] x position on the PDF document in jsPDF units.\n * @param {number=} [options.y] y position on the PDF document in jsPDF units.\n * @param {number=} [options.width] The target width in the PDF document in jsPDF units. The rendered element will be\n * scaled such that it fits into the specified width. Has no effect if either the html2canvas.scale is\n * specified or the windowWidth option is NOT specified.\n * @param {number=} [options.windowWidth] The window width in CSS pixels. In contrast to the\n * html2canvas.windowWidth option, this option affects the actual container size while rendering and\n * does NOT affect CSS media queries. This option only has an effect, if the width option is also specified.\n *\n * @example\n * var doc = new jsPDF();\n *\n * doc.html(document.body, {\n * callback: function (doc) {\n * doc.save();\n * },\n * x: 10,\n * y: 10\n * });\n */\n jsPDFAPI.html = function(src, options) {\n \"use strict\";\n\n options = options || {};\n options.callback = options.callback || function() {};\n options.html2canvas = options.html2canvas || {};\n options.html2canvas.canvas = options.html2canvas.canvas || this.canvas;\n options.jsPDF = options.jsPDF || this;\n options.fontFaces = options.fontFaces\n ? options.fontFaces.map(normalizeFontFace)\n : null;\n\n // Create a new worker with the given options.\n var worker = new Worker(options);\n\n if (!options.worker) {\n // If worker is not set to true, perform the traditional 'simple' operation.\n return worker.from(src).doCallback();\n } else {\n // Otherwise, return the worker for new Promise-based operation.\n return worker;\n }\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF Outline PlugIn\n *\n * Generates a PDF Outline\n * @name outline\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n var namesOid;\n //var destsGoto = [];\n\n jsPDFAPI.events.push([\n \"postPutResources\",\n function() {\n var pdf = this;\n var rx = /^(\\d+) 0 obj$/;\n\n // Write action goto objects for each page\n // this.outline.destsGoto = [];\n // for (var i = 0; i < totalPages; i++) {\n // var id = pdf.internal.newObject();\n // this.outline.destsGoto.push(id);\n // pdf.internal.write(\"<> endobj\");\n // }\n //\n // for (var i = 0; i < dests.length; i++) {\n // pdf.internal.write(\"(page_\" + (i + 1) + \")\" + dests[i] + \" 0\n // R\");\n // }\n //\n if (this.outline.root.children.length > 0) {\n var lines = pdf.outline.render().split(/\\r\\n/);\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i];\n var m = rx.exec(line);\n if (m != null) {\n var oid = m[1];\n pdf.internal.newObjectDeferredBegin(oid, false);\n }\n pdf.internal.write(line);\n }\n }\n\n // This code will write named destination for each page reference\n // (page_1, etc)\n if (this.outline.createNamedDestinations) {\n var totalPages = this.internal.pages.length;\n // WARNING: this assumes jsPDF starts on page 3 and pageIDs\n // follow 5, 7, 9, etc\n // Write destination objects for each page\n var dests = [];\n for (var i = 0; i < totalPages; i++) {\n var id = pdf.internal.newObject();\n dests.push(id);\n var info = pdf.internal.getPageInfo(i + 1);\n pdf.internal.write(\n \"<< /D[\" + info.objId + \" 0 R /XYZ null null null]>> endobj\"\n );\n }\n\n // assign a name for each destination\n var names2Oid = pdf.internal.newObject();\n pdf.internal.write(\"<< /Names [ \");\n for (var i = 0; i < dests.length; i++) {\n pdf.internal.write(\"(page_\" + (i + 1) + \")\" + dests[i] + \" 0 R\");\n }\n pdf.internal.write(\" ] >>\", \"endobj\");\n\n // var kids = pdf.internal.newObject();\n // pdf.internal.write('<< /Kids [ ' + names2Oid + ' 0 R');\n // pdf.internal.write(' ] >>', 'endobj');\n\n namesOid = pdf.internal.newObject();\n pdf.internal.write(\"<< /Dests \" + names2Oid + \" 0 R\");\n pdf.internal.write(\">>\", \"endobj\");\n }\n }\n ]);\n\n jsPDFAPI.events.push([\n \"putCatalog\",\n function() {\n var pdf = this;\n if (pdf.outline.root.children.length > 0) {\n pdf.internal.write(\n \"/Outlines\",\n this.outline.makeRef(this.outline.root)\n );\n if (this.outline.createNamedDestinations) {\n pdf.internal.write(\"/Names \" + namesOid + \" 0 R\");\n }\n // Open with Bookmarks showing\n // pdf.internal.write(\"/PageMode /UseOutlines\");\n }\n }\n ]);\n\n jsPDFAPI.events.push([\n \"initialized\",\n function() {\n var pdf = this;\n\n pdf.outline = {\n createNamedDestinations: false,\n root: {\n children: []\n }\n };\n\n /**\n * Options: pageNumber\n */\n pdf.outline.add = function(parent, title, options) {\n var item = {\n title: title,\n options: options,\n children: []\n };\n if (parent == null) {\n parent = this.root;\n }\n parent.children.push(item);\n return item;\n };\n\n pdf.outline.render = function() {\n this.ctx = {};\n this.ctx.val = \"\";\n this.ctx.pdf = pdf;\n\n this.genIds_r(this.root);\n this.renderRoot(this.root);\n this.renderItems(this.root);\n\n return this.ctx.val;\n };\n\n pdf.outline.genIds_r = function(node) {\n node.id = pdf.internal.newObjectDeferred();\n for (var i = 0; i < node.children.length; i++) {\n this.genIds_r(node.children[i]);\n }\n };\n\n pdf.outline.renderRoot = function(node) {\n this.objStart(node);\n this.line(\"/Type /Outlines\");\n if (node.children.length > 0) {\n this.line(\"/First \" + this.makeRef(node.children[0]));\n this.line(\n \"/Last \" + this.makeRef(node.children[node.children.length - 1])\n );\n }\n this.line(\n \"/Count \" +\n this.count_r(\n {\n count: 0\n },\n node\n )\n );\n this.objEnd();\n };\n\n pdf.outline.renderItems = function(node) {\n var getVerticalCoordinateString = this.ctx.pdf.internal\n .getVerticalCoordinateString;\n for (var i = 0; i < node.children.length; i++) {\n var item = node.children[i];\n this.objStart(item);\n\n this.line(\"/Title \" + this.makeString(item.title));\n\n this.line(\"/Parent \" + this.makeRef(node));\n if (i > 0) {\n this.line(\"/Prev \" + this.makeRef(node.children[i - 1]));\n }\n if (i < node.children.length - 1) {\n this.line(\"/Next \" + this.makeRef(node.children[i + 1]));\n }\n if (item.children.length > 0) {\n this.line(\"/First \" + this.makeRef(item.children[0]));\n this.line(\n \"/Last \" + this.makeRef(item.children[item.children.length - 1])\n );\n }\n\n var count = (this.count = this.count_r(\n {\n count: 0\n },\n item\n ));\n if (count > 0) {\n this.line(\"/Count \" + count);\n }\n\n if (item.options) {\n if (item.options.pageNumber) {\n // Explicit Destination\n //WARNING this assumes page ids are 3,5,7, etc.\n var info = pdf.internal.getPageInfo(item.options.pageNumber);\n this.line(\n \"/Dest \" +\n \"[\" +\n info.objId +\n \" 0 R /XYZ 0 \" +\n getVerticalCoordinateString(0) +\n \" 0]\"\n );\n // this line does not work on all clients (pageNumber instead of page ref)\n //this.line('/Dest ' + '[' + (item.options.pageNumber - 1) + ' /XYZ 0 ' + this.ctx.pdf.internal.pageSize.getHeight() + ' 0]');\n\n // Named Destination\n // this.line('/Dest (page_' + (item.options.pageNumber) + ')');\n\n // Action Destination\n // var id = pdf.internal.newObject();\n // pdf.internal.write('<> endobj');\n // this.line('/A ' + id + ' 0 R' );\n }\n }\n this.objEnd();\n }\n for (var z = 0; z < node.children.length; z++) {\n this.renderItems(node.children[z]);\n }\n };\n\n pdf.outline.line = function(text) {\n this.ctx.val += text + \"\\r\\n\";\n };\n\n pdf.outline.makeRef = function(node) {\n return node.id + \" 0 R\";\n };\n\n pdf.outline.makeString = function(val) {\n return \"(\" + pdf.internal.pdfEscape(val) + \")\";\n };\n\n pdf.outline.objStart = function(node) {\n this.ctx.val += \"\\r\\n\" + node.id + \" 0 obj\" + \"\\r\\n<<\\r\\n\";\n };\n\n pdf.outline.objEnd = function() {\n this.ctx.val += \">> \\r\\n\" + \"endobj\" + \"\\r\\n\";\n };\n\n pdf.outline.count_r = function(ctx, node) {\n for (var i = 0; i < node.children.length; i++) {\n ctx.count++;\n this.count_r(ctx, node.children[i]);\n }\n return ctx.count;\n };\n }\n ]);\n\n return this;\n})(jsPDF.API);\n","/**\n * @license\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF jpeg Support PlugIn\n *\n * @name jpeg_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * 0xc0 (SOF) Huffman - Baseline DCT\n * 0xc1 (SOF) Huffman - Extended sequential DCT\n * 0xc2 Progressive DCT (SOF2)\n * 0xc3 Spatial (sequential) lossless (SOF3)\n * 0xc4 Differential sequential DCT (SOF5)\n * 0xc5 Differential progressive DCT (SOF6)\n * 0xc6 Differential spatial (SOF7)\n * 0xc7\n */\n var markers = [0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7];\n\n //takes a string imgData containing the raw bytes of\n //a jpeg image and returns [width, height]\n //Algorithm from: http://www.64lines.com/jpeg-width-height\n var getJpegInfo = function(imgData) {\n var width, height, numcomponents;\n var blockLength = imgData.charCodeAt(4) * 256 + imgData.charCodeAt(5);\n var len = imgData.length;\n var result = { width: 0, height: 0, numcomponents: 1 };\n for (var i = 4; i < len; i += 2) {\n i += blockLength;\n if (markers.indexOf(imgData.charCodeAt(i + 1)) !== -1) {\n height = imgData.charCodeAt(i + 5) * 256 + imgData.charCodeAt(i + 6);\n width = imgData.charCodeAt(i + 7) * 256 + imgData.charCodeAt(i + 8);\n numcomponents = imgData.charCodeAt(i + 9);\n result = { width: width, height: height, numcomponents: numcomponents };\n break;\n } else {\n blockLength =\n imgData.charCodeAt(i + 2) * 256 + imgData.charCodeAt(i + 3);\n }\n }\n return result;\n };\n\n /**\n * @ignore\n */\n jsPDFAPI.processJPEG = function(\n data,\n index,\n alias,\n compression,\n dataAsBinaryString,\n colorSpace\n ) {\n var filter = this.decode.DCT_DECODE,\n bpc = 8,\n dims,\n result = null;\n\n if (\n typeof data === \"string\" ||\n this.__addimage__.isArrayBuffer(data) ||\n this.__addimage__.isArrayBufferView(data)\n ) {\n // if we already have a stored binary string rep use that\n data = dataAsBinaryString || data;\n data = this.__addimage__.isArrayBuffer(data)\n ? new Uint8Array(data)\n : data;\n data = this.__addimage__.isArrayBufferView(data)\n ? this.__addimage__.arrayBufferToBinaryString(data)\n : data;\n\n dims = getJpegInfo(data);\n switch (dims.numcomponents) {\n case 1:\n colorSpace = this.color_spaces.DEVICE_GRAY;\n break;\n case 4:\n colorSpace = this.color_spaces.DEVICE_CMYK;\n break;\n case 3:\n colorSpace = this.color_spaces.DEVICE_RGB;\n break;\n }\n\n result = {\n data: data,\n width: dims.width,\n height: dims.height,\n colorSpace: colorSpace,\n bitsPerComponent: bpc,\n filter: filter,\n index: index,\n alias: alias\n };\n }\n return result;\n };\n})(jsPDF.API);\n","// Generated by CoffeeScript 1.4.0\n\n/**\n * @license\n * PNG.js\n * Copyright (c) 2011 Devon Govett\n * MIT LICENSE\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this\n * software and associated documentation files (the \"Software\"), to deal in the Software\n * without restriction, including without limitation the rights to use, copy, modify, merge,\n * publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons\n * to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING\n * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nimport { unzlibSync } from \"./fflate.js\";\nimport { globalObject } from \"./globalObject.js\";\n\nvar PNG = (function() {\n var APNG_BLEND_OP_OVER,\n APNG_BLEND_OP_SOURCE,\n APNG_DISPOSE_OP_BACKGROUND,\n APNG_DISPOSE_OP_NONE,\n APNG_DISPOSE_OP_PREVIOUS,\n makeImage,\n scratchCanvas,\n scratchCtx;\n\n APNG_DISPOSE_OP_NONE = 0;\n\n APNG_DISPOSE_OP_BACKGROUND = 1;\n\n APNG_DISPOSE_OP_PREVIOUS = 2;\n\n APNG_BLEND_OP_SOURCE = 0;\n\n APNG_BLEND_OP_OVER = 1;\n\n function PNG(data) {\n var chunkSize,\n colors,\n palLen,\n delayDen,\n delayNum,\n frame,\n i,\n index,\n key,\n section,\n palShort,\n text,\n _i,\n _j,\n _ref;\n this.data = data;\n this.pos = 8;\n this.palette = [];\n this.imgData = [];\n this.transparency = {};\n this.animation = null;\n this.text = {};\n frame = null;\n while (true) {\n chunkSize = this.readUInt32();\n section = function() {\n var _i, _results;\n _results = [];\n for (i = _i = 0; _i < 4; i = ++_i) {\n _results.push(String.fromCharCode(this.data[this.pos++]));\n }\n return _results;\n }\n .call(this)\n .join(\"\");\n switch (section) {\n case \"IHDR\":\n this.width = this.readUInt32();\n this.height = this.readUInt32();\n this.bits = this.data[this.pos++];\n this.colorType = this.data[this.pos++];\n this.compressionMethod = this.data[this.pos++];\n this.filterMethod = this.data[this.pos++];\n this.interlaceMethod = this.data[this.pos++];\n break;\n case \"acTL\":\n this.animation = {\n numFrames: this.readUInt32(),\n numPlays: this.readUInt32() || Infinity,\n frames: []\n };\n break;\n case \"PLTE\":\n this.palette = this.read(chunkSize);\n break;\n case \"fcTL\":\n if (frame) {\n this.animation.frames.push(frame);\n }\n this.pos += 4;\n frame = {\n width: this.readUInt32(),\n height: this.readUInt32(),\n xOffset: this.readUInt32(),\n yOffset: this.readUInt32()\n };\n delayNum = this.readUInt16();\n delayDen = this.readUInt16() || 100;\n frame.delay = (1000 * delayNum) / delayDen;\n frame.disposeOp = this.data[this.pos++];\n frame.blendOp = this.data[this.pos++];\n frame.data = [];\n break;\n case \"IDAT\":\n case \"fdAT\":\n if (section === \"fdAT\") {\n this.pos += 4;\n chunkSize -= 4;\n }\n data = (frame != null ? frame.data : void 0) || this.imgData;\n for (\n i = _i = 0;\n 0 <= chunkSize ? _i < chunkSize : _i > chunkSize;\n i = 0 <= chunkSize ? ++_i : --_i\n ) {\n data.push(this.data[this.pos++]);\n }\n break;\n case \"tRNS\":\n this.transparency = {};\n switch (this.colorType) {\n case 3:\n palLen = this.palette.length / 3;\n this.transparency.indexed = this.read(chunkSize);\n if (this.transparency.indexed.length > palLen)\n throw new Error(\"More transparent colors than palette size\");\n /*\n * According to the PNG spec trns should be increased to the same size as palette if shorter\n */\n //palShort = 255 - this.transparency.indexed.length;\n palShort = palLen - this.transparency.indexed.length;\n if (palShort > 0) {\n for (\n i = _j = 0;\n 0 <= palShort ? _j < palShort : _j > palShort;\n i = 0 <= palShort ? ++_j : --_j\n ) {\n this.transparency.indexed.push(255);\n }\n }\n break;\n case 0:\n this.transparency.grayscale = this.read(chunkSize)[0];\n break;\n case 2:\n this.transparency.rgb = this.read(chunkSize);\n }\n break;\n case \"tEXt\":\n text = this.read(chunkSize);\n index = text.indexOf(0);\n key = String.fromCharCode.apply(String, text.slice(0, index));\n this.text[key] = String.fromCharCode.apply(\n String,\n text.slice(index + 1)\n );\n break;\n case \"IEND\":\n if (frame) {\n this.animation.frames.push(frame);\n }\n this.colors = function() {\n switch (this.colorType) {\n case 0:\n case 3:\n case 4:\n return 1;\n case 2:\n case 6:\n return 3;\n }\n }.call(this);\n this.hasAlphaChannel = (_ref = this.colorType) === 4 || _ref === 6;\n colors = this.colors + (this.hasAlphaChannel ? 1 : 0);\n this.pixelBitlength = this.bits * colors;\n this.colorSpace = function() {\n switch (this.colors) {\n case 1:\n return \"DeviceGray\";\n case 3:\n return \"DeviceRGB\";\n }\n }.call(this);\n this.imgData = new Uint8Array(this.imgData);\n return;\n default:\n this.pos += chunkSize;\n }\n this.pos += 4;\n if (this.pos > this.data.length) {\n throw new Error(\"Incomplete or corrupt PNG file\");\n }\n }\n }\n\n PNG.prototype.read = function(bytes) {\n var i, _i, _results;\n _results = [];\n for (\n i = _i = 0;\n 0 <= bytes ? _i < bytes : _i > bytes;\n i = 0 <= bytes ? ++_i : --_i\n ) {\n _results.push(this.data[this.pos++]);\n }\n return _results;\n };\n\n PNG.prototype.readUInt32 = function() {\n var b1, b2, b3, b4;\n b1 = this.data[this.pos++] << 24;\n b2 = this.data[this.pos++] << 16;\n b3 = this.data[this.pos++] << 8;\n b4 = this.data[this.pos++];\n return b1 | b2 | b3 | b4;\n };\n\n PNG.prototype.readUInt16 = function() {\n var b1, b2;\n b1 = this.data[this.pos++] << 8;\n b2 = this.data[this.pos++];\n return b1 | b2;\n };\n\n PNG.prototype.decodePixels = function(data) {\n var pixelBytes = this.pixelBitlength / 8;\n var fullPixels = new Uint8Array(this.width * this.height * pixelBytes);\n var pos = 0;\n var _this = this;\n\n if (data == null) {\n data = this.imgData;\n }\n if (data.length === 0) {\n return new Uint8Array(0);\n }\n\n data = unzlibSync(data);\n function pass(x0, y0, dx, dy) {\n var abyte,\n c,\n col,\n i,\n left,\n length,\n p,\n pa,\n paeth,\n pb,\n pc,\n pixels,\n row,\n scanlineLength,\n upper,\n upperLeft,\n _i,\n _j,\n _k,\n _l,\n _m;\n var w = Math.ceil((_this.width - x0) / dx),\n h = Math.ceil((_this.height - y0) / dy);\n var isFull = _this.width == w && _this.height == h;\n scanlineLength = pixelBytes * w;\n pixels = isFull ? fullPixels : new Uint8Array(scanlineLength * h);\n length = data.length;\n row = 0;\n c = 0;\n while (row < h && pos < length) {\n switch (data[pos++]) {\n case 0:\n for (i = _i = 0; _i < scanlineLength; i = _i += 1) {\n pixels[c++] = data[pos++];\n }\n break;\n case 1:\n for (i = _j = 0; _j < scanlineLength; i = _j += 1) {\n abyte = data[pos++];\n left = i < pixelBytes ? 0 : pixels[c - pixelBytes];\n pixels[c++] = (abyte + left) % 256;\n }\n break;\n case 2:\n for (i = _k = 0; _k < scanlineLength; i = _k += 1) {\n abyte = data[pos++];\n col = (i - (i % pixelBytes)) / pixelBytes;\n upper =\n row &&\n pixels[\n (row - 1) * scanlineLength +\n col * pixelBytes +\n (i % pixelBytes)\n ];\n pixels[c++] = (upper + abyte) % 256;\n }\n break;\n case 3:\n for (i = _l = 0; _l < scanlineLength; i = _l += 1) {\n abyte = data[pos++];\n col = (i - (i % pixelBytes)) / pixelBytes;\n left = i < pixelBytes ? 0 : pixels[c - pixelBytes];\n upper =\n row &&\n pixels[\n (row - 1) * scanlineLength +\n col * pixelBytes +\n (i % pixelBytes)\n ];\n pixels[c++] = (abyte + Math.floor((left + upper) / 2)) % 256;\n }\n break;\n case 4:\n for (i = _m = 0; _m < scanlineLength; i = _m += 1) {\n abyte = data[pos++];\n col = (i - (i % pixelBytes)) / pixelBytes;\n left = i < pixelBytes ? 0 : pixels[c - pixelBytes];\n if (row === 0) {\n upper = upperLeft = 0;\n } else {\n upper =\n pixels[\n (row - 1) * scanlineLength +\n col * pixelBytes +\n (i % pixelBytes)\n ];\n upperLeft =\n col &&\n pixels[\n (row - 1) * scanlineLength +\n (col - 1) * pixelBytes +\n (i % pixelBytes)\n ];\n }\n p = left + upper - upperLeft;\n pa = Math.abs(p - left);\n pb = Math.abs(p - upper);\n pc = Math.abs(p - upperLeft);\n if (pa <= pb && pa <= pc) {\n paeth = left;\n } else if (pb <= pc) {\n paeth = upper;\n } else {\n paeth = upperLeft;\n }\n pixels[c++] = (abyte + paeth) % 256;\n }\n break;\n default:\n throw new Error(\"Invalid filter algorithm: \" + data[pos - 1]);\n }\n if (!isFull) {\n var fullPos = ((y0 + row * dy) * _this.width + x0) * pixelBytes;\n var partPos = row * scanlineLength;\n for (i = 0; i < w; i += 1) {\n for (var j = 0; j < pixelBytes; j += 1)\n fullPixels[fullPos++] = pixels[partPos++];\n fullPos += (dx - 1) * pixelBytes;\n }\n }\n row++;\n }\n }\n if (_this.interlaceMethod == 1) {\n /*\n 1 6 4 6 2 6 4 6\n 7 7 7 7 7 7 7 7\n 5 6 5 6 5 6 5 6\n 7 7 7 7 7 7 7 7\n 3 6 4 6 3 6 4 6\n 7 7 7 7 7 7 7 7\n 5 6 5 6 5 6 5 6\n 7 7 7 7 7 7 7 7\n */\n pass(0, 0, 8, 8); // 1\n /* NOTE these seem to follow the pattern:\n * pass(x, 0, 2*x, 2*x);\n * pass(0, x, x, 2*x);\n * with x being 4, 2, 1.\n */\n pass(4, 0, 8, 8); // 2\n pass(0, 4, 4, 8); // 3\n\n pass(2, 0, 4, 4); // 4\n pass(0, 2, 2, 4); // 5\n\n pass(1, 0, 2, 2); // 6\n pass(0, 1, 1, 2); // 7\n } else {\n pass(0, 0, 1, 1);\n }\n return fullPixels;\n };\n\n PNG.prototype.decodePalette = function() {\n var c, i, length, palette, pos, ret, transparency, _i, _ref, _ref1;\n palette = this.palette;\n transparency = this.transparency.indexed || [];\n ret = new Uint8Array((transparency.length || 0) + palette.length);\n pos = 0;\n length = palette.length;\n c = 0;\n for (i = _i = 0, _ref = length; _i < _ref; i = _i += 3) {\n ret[pos++] = palette[i];\n ret[pos++] = palette[i + 1];\n ret[pos++] = palette[i + 2];\n ret[pos++] = (_ref1 = transparency[c++]) != null ? _ref1 : 255;\n }\n return ret;\n };\n\n PNG.prototype.copyToImageData = function(imageData, pixels) {\n var alpha, colors, data, i, input, j, k, length, palette, v, _ref;\n colors = this.colors;\n palette = null;\n alpha = this.hasAlphaChannel;\n if (this.palette.length) {\n palette =\n (_ref = this._decodedPalette) != null\n ? _ref\n : (this._decodedPalette = this.decodePalette());\n colors = 4;\n alpha = true;\n }\n data = imageData.data || imageData;\n length = data.length;\n input = palette || pixels;\n i = j = 0;\n if (colors === 1) {\n while (i < length) {\n k = palette ? pixels[i / 4] * 4 : j;\n v = input[k++];\n data[i++] = v;\n data[i++] = v;\n data[i++] = v;\n data[i++] = alpha ? input[k++] : 255;\n j = k;\n }\n } else {\n while (i < length) {\n k = palette ? pixels[i / 4] * 4 : j;\n data[i++] = input[k++];\n data[i++] = input[k++];\n data[i++] = input[k++];\n data[i++] = alpha ? input[k++] : 255;\n j = k;\n }\n }\n };\n\n PNG.prototype.decode = function() {\n var ret;\n ret = new Uint8Array(this.width * this.height * 4);\n this.copyToImageData(ret, this.decodePixels());\n return ret;\n };\n\n var hasBrowserCanvas = function() {\n if (Object.prototype.toString.call(globalObject) === \"[object Window]\") {\n try {\n scratchCanvas = globalObject.document.createElement(\"canvas\");\n scratchCtx = scratchCanvas.getContext(\"2d\");\n } catch (e) {\n return false;\n }\n return true;\n }\n return false;\n };\n\n hasBrowserCanvas();\n\n makeImage = function(imageData) {\n if (hasBrowserCanvas() === true) {\n var img;\n scratchCtx.width = imageData.width;\n scratchCtx.height = imageData.height;\n scratchCtx.clearRect(0, 0, imageData.width, imageData.height);\n scratchCtx.putImageData(imageData, 0, 0);\n img = new Image();\n img.src = scratchCanvas.toDataURL();\n return img;\n }\n throw new Error(\"This method requires a Browser with Canvas-capability.\");\n };\n\n PNG.prototype.decodeFrames = function(ctx) {\n var frame, i, imageData, pixels, _i, _len, _ref, _results;\n if (!this.animation) {\n return;\n }\n _ref = this.animation.frames;\n _results = [];\n for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {\n frame = _ref[i];\n imageData = ctx.createImageData(frame.width, frame.height);\n pixels = this.decodePixels(new Uint8Array(frame.data));\n this.copyToImageData(imageData, pixels);\n frame.imageData = imageData;\n _results.push((frame.image = makeImage(imageData)));\n }\n return _results;\n };\n\n PNG.prototype.renderFrame = function(ctx, number) {\n var frame, frames, prev;\n frames = this.animation.frames;\n frame = frames[number];\n prev = frames[number - 1];\n if (number === 0) {\n ctx.clearRect(0, 0, this.width, this.height);\n }\n if (\n (prev != null ? prev.disposeOp : void 0) === APNG_DISPOSE_OP_BACKGROUND\n ) {\n ctx.clearRect(prev.xOffset, prev.yOffset, prev.width, prev.height);\n } else if (\n (prev != null ? prev.disposeOp : void 0) === APNG_DISPOSE_OP_PREVIOUS\n ) {\n ctx.putImageData(prev.imageData, prev.xOffset, prev.yOffset);\n }\n if (frame.blendOp === APNG_BLEND_OP_SOURCE) {\n ctx.clearRect(frame.xOffset, frame.yOffset, frame.width, frame.height);\n }\n return ctx.drawImage(frame.image, frame.xOffset, frame.yOffset);\n };\n\n PNG.prototype.animate = function(ctx) {\n var doFrame,\n frameNumber,\n frames,\n numFrames,\n numPlays,\n _ref,\n _this = this;\n frameNumber = 0;\n (_ref = this.animation),\n (numFrames = _ref.numFrames),\n (frames = _ref.frames),\n (numPlays = _ref.numPlays);\n return (doFrame = function() {\n var f, frame;\n f = frameNumber++ % numFrames;\n frame = frames[f];\n _this.renderFrame(ctx, f);\n if (numFrames > 1 && frameNumber / numFrames < numPlays) {\n return (_this.animation._timeout = setTimeout(doFrame, frame.delay));\n }\n })();\n };\n\n PNG.prototype.stopAnimation = function() {\n var _ref;\n return clearTimeout(\n (_ref = this.animation) != null ? _ref._timeout : void 0\n );\n };\n\n PNG.prototype.render = function(canvas) {\n var ctx, data;\n if (canvas._png) {\n canvas._png.stopAnimation();\n }\n canvas._png = this;\n canvas.width = this.width;\n canvas.height = this.height;\n ctx = canvas.getContext(\"2d\");\n if (this.animation) {\n this.decodeFrames(ctx);\n return this.animate(ctx);\n } else {\n data = ctx.createImageData(this.width, this.height);\n this.copyToImageData(data, this.decodePixels());\n return ctx.putImageData(data, 0, 0);\n }\n };\n\n return PNG;\n})();\n\nexport { PNG };\n","/** @license\n * MIT license.\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n * 2014 Diego Casorran, https://github.com/diegocr\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF split_text_to_size plugin\n *\n * @name split_text_to_size\n * @module\n */\n(function(API) {\n \"use strict\";\n /**\n * Returns an array of length matching length of the 'word' string, with each\n * cell occupied by the width of the char in that position.\n *\n * @name getCharWidthsArray\n * @function\n * @param {string} text\n * @param {Object} options\n * @returns {Array}\n */\n var getCharWidthsArray = (API.getCharWidthsArray = function(text, options) {\n options = options || {};\n\n var activeFont = options.font || this.internal.getFont();\n var fontSize = options.fontSize || this.internal.getFontSize();\n var charSpace = options.charSpace || this.internal.getCharSpace();\n\n var widths = options.widths\n ? options.widths\n : activeFont.metadata.Unicode.widths;\n var widthsFractionOf = widths.fof ? widths.fof : 1;\n var kerning = options.kerning\n ? options.kerning\n : activeFont.metadata.Unicode.kerning;\n var kerningFractionOf = kerning.fof ? kerning.fof : 1;\n var doKerning = options.doKerning === false ? false : true;\n var kerningValue = 0;\n\n var i;\n var length = text.length;\n var char_code;\n var prior_char_code = 0; //for kerning\n var default_char_width = widths[0] || widthsFractionOf;\n var output = [];\n\n for (i = 0; i < length; i++) {\n char_code = text.charCodeAt(i);\n\n if (typeof activeFont.metadata.widthOfString === \"function\") {\n output.push(\n (activeFont.metadata.widthOfGlyph(\n activeFont.metadata.characterToGlyph(char_code)\n ) +\n charSpace * (1000 / fontSize) || 0) / 1000\n );\n } else {\n if (\n doKerning &&\n typeof kerning[char_code] === \"object\" &&\n !isNaN(parseInt(kerning[char_code][prior_char_code], 10))\n ) {\n kerningValue =\n kerning[char_code][prior_char_code] / kerningFractionOf;\n } else {\n kerningValue = 0;\n }\n output.push(\n (widths[char_code] || default_char_width) / widthsFractionOf +\n kerningValue\n );\n }\n prior_char_code = char_code;\n }\n\n return output;\n });\n\n /**\n * Returns a widths of string in a given font, if the font size is set as 1 point.\n *\n * In other words, this is \"proportional\" value. For 1 unit of font size, the length\n * of the string will be that much.\n *\n * Multiply by font size to get actual width in *points*\n * Then divide by 72 to get inches or divide by (72/25.6) to get 'mm' etc.\n *\n * @name getStringUnitWidth\n * @public\n * @function\n * @param {string} text\n * @param {string} options\n * @returns {number} result\n */\n var getStringUnitWidth = (API.getStringUnitWidth = function(text, options) {\n options = options || {};\n\n var fontSize = options.fontSize || this.internal.getFontSize();\n var font = options.font || this.internal.getFont();\n var charSpace = options.charSpace || this.internal.getCharSpace();\n var result = 0;\n\n if (API.processArabic) {\n text = API.processArabic(text);\n }\n\n if (typeof font.metadata.widthOfString === \"function\") {\n result =\n font.metadata.widthOfString(text, fontSize, charSpace) / fontSize;\n } else {\n result = getCharWidthsArray\n .apply(this, arguments)\n .reduce(function(pv, cv) {\n return pv + cv;\n }, 0);\n }\n return result;\n });\n\n /**\n returns array of lines\n */\n var splitLongWord = function(word, widths_array, firstLineMaxLen, maxLen) {\n var answer = [];\n\n // 1st, chop off the piece that can fit on the hanging line.\n var i = 0,\n l = word.length,\n workingLen = 0;\n while (i !== l && workingLen + widths_array[i] < firstLineMaxLen) {\n workingLen += widths_array[i];\n i++;\n }\n // this is first line.\n answer.push(word.slice(0, i));\n\n // 2nd. Split the rest into maxLen pieces.\n var startOfLine = i;\n workingLen = 0;\n while (i !== l) {\n if (workingLen + widths_array[i] > maxLen) {\n answer.push(word.slice(startOfLine, i));\n workingLen = 0;\n startOfLine = i;\n }\n workingLen += widths_array[i];\n i++;\n }\n if (startOfLine !== i) {\n answer.push(word.slice(startOfLine, i));\n }\n\n return answer;\n };\n\n // Note, all sizing inputs for this function must be in \"font measurement units\"\n // By default, for PDF, it's \"point\".\n var splitParagraphIntoLines = function(text, maxlen, options) {\n // at this time works only on Western scripts, ones with space char\n // separating the words. Feel free to expand.\n\n if (!options) {\n options = {};\n }\n\n var line = [],\n lines = [line],\n line_length = options.textIndent || 0,\n separator_length = 0,\n current_word_length = 0,\n word,\n widths_array,\n words = text.split(\" \"),\n spaceCharWidth = getCharWidthsArray.apply(this, [\" \", options])[0],\n i,\n l,\n tmp,\n lineIndent;\n\n if (options.lineIndent === -1) {\n lineIndent = words[0].length + 2;\n } else {\n lineIndent = options.lineIndent || 0;\n }\n if (lineIndent) {\n var pad = Array(lineIndent).join(\" \"),\n wrds = [];\n words.map(function(wrd) {\n wrd = wrd.split(/\\s*\\n/);\n if (wrd.length > 1) {\n wrds = wrds.concat(\n wrd.map(function(wrd, idx) {\n return (idx && wrd.length ? \"\\n\" : \"\") + wrd;\n })\n );\n } else {\n wrds.push(wrd[0]);\n }\n });\n words = wrds;\n lineIndent = getStringUnitWidth.apply(this, [pad, options]);\n }\n\n for (i = 0, l = words.length; i < l; i++) {\n var force = 0;\n\n word = words[i];\n if (lineIndent && word[0] == \"\\n\") {\n word = word.substr(1);\n force = 1;\n }\n widths_array = getCharWidthsArray.apply(this, [word, options]);\n current_word_length = widths_array.reduce(function(pv, cv) {\n return pv + cv;\n }, 0);\n\n if (\n line_length + separator_length + current_word_length > maxlen ||\n force\n ) {\n if (current_word_length > maxlen) {\n // this happens when you have space-less long URLs for example.\n // we just chop these to size. We do NOT insert hiphens\n tmp = splitLongWord.apply(this, [\n word,\n widths_array,\n maxlen - (line_length + separator_length),\n maxlen\n ]);\n // first line we add to existing line object\n line.push(tmp.shift()); // it's ok to have extra space indicator there\n // last line we make into new line object\n line = [tmp.pop()];\n // lines in the middle we apped to lines object as whole lines\n while (tmp.length) {\n lines.push([tmp.shift()]); // single fragment occupies whole line\n }\n current_word_length = widths_array\n .slice(word.length - (line[0] ? line[0].length : 0))\n .reduce(function(pv, cv) {\n return pv + cv;\n }, 0);\n } else {\n // just put it on a new line\n line = [word];\n }\n\n // now we attach new line to lines\n lines.push(line);\n line_length = current_word_length + lineIndent;\n separator_length = spaceCharWidth;\n } else {\n line.push(word);\n\n line_length += separator_length + current_word_length;\n separator_length = spaceCharWidth;\n }\n }\n\n var postProcess;\n if (lineIndent) {\n postProcess = function(ln, idx) {\n return (idx ? pad : \"\") + ln.join(\" \");\n };\n } else {\n postProcess = function(ln) {\n return ln.join(\" \");\n };\n }\n\n return lines.map(postProcess);\n };\n\n /**\n * Splits a given string into an array of strings. Uses 'size' value\n * (in measurement units declared as default for the jsPDF instance)\n * and the font's \"widths\" and \"Kerning\" tables, where available, to\n * determine display length of a given string for a given font.\n *\n * We use character's 100% of unit size (height) as width when Width\n * table or other default width is not available.\n *\n * @name splitTextToSize\n * @public\n * @function\n * @param {string} text Unencoded, regular JavaScript (Unicode, UTF-16 / UCS-2) string.\n * @param {number} size Nominal number, measured in units default to this instance of jsPDF.\n * @param {Object} options Optional flags needed for chopper to do the right thing.\n * @returns {Array} array Array with strings chopped to size.\n */\n API.splitTextToSize = function(text, maxlen, options) {\n \"use strict\";\n\n options = options || {};\n\n var fsize = options.fontSize || this.internal.getFontSize(),\n newOptions = function(options) {\n var widths = {\n 0: 1\n },\n kerning = {};\n\n if (!options.widths || !options.kerning) {\n var f = this.internal.getFont(options.fontName, options.fontStyle),\n encoding = \"Unicode\";\n // NOT UTF8, NOT UTF16BE/LE, NOT UCS2BE/LE\n // Actual JavaScript-native String's 16bit char codes used.\n // no multi-byte logic here\n\n if (f.metadata[encoding]) {\n return {\n widths: f.metadata[encoding].widths || widths,\n kerning: f.metadata[encoding].kerning || kerning\n };\n } else {\n return {\n font: f.metadata,\n fontSize: this.internal.getFontSize(),\n charSpace: this.internal.getCharSpace()\n };\n }\n } else {\n return {\n widths: options.widths,\n kerning: options.kerning\n };\n }\n }.call(this, options);\n\n // first we split on end-of-line chars\n var paragraphs;\n if (Array.isArray(text)) {\n paragraphs = text;\n } else {\n paragraphs = String(text).split(/\\r?\\n/);\n }\n\n // now we convert size (max length of line) into \"font size units\"\n // at present time, the \"font size unit\" is always 'point'\n // 'proportional' means, \"in proportion to font size\"\n var fontUnit_maxLen = (1.0 * this.internal.scaleFactor * maxlen) / fsize;\n // at this time, fsize is always in \"points\" regardless of the default measurement unit of the doc.\n // this may change in the future?\n // until then, proportional_maxlen is likely to be in 'points'\n\n // If first line is to be indented (shorter or longer) than maxLen\n // we indicate that by using CSS-style \"text-indent\" option.\n // here it's in font units too (which is likely 'points')\n // it can be negative (which makes the first line longer than maxLen)\n newOptions.textIndent = options.textIndent\n ? (options.textIndent * 1.0 * this.internal.scaleFactor) / fsize\n : 0;\n newOptions.lineIndent = options.lineIndent;\n\n var i,\n l,\n output = [];\n for (i = 0, l = paragraphs.length; i < l; i++) {\n output = output.concat(\n splitParagraphIntoLines.apply(this, [\n paragraphs[i],\n fontUnit_maxLen,\n newOptions\n ])\n );\n }\n\n return output;\n };\n})(jsPDF.API);\n","/**\n * @license\n * (c) Dean McNamee , 2013.\n *\n * https://github.com/deanm/omggif\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n * omggif is a JavaScript implementation of a GIF 89a encoder and decoder,\n * including animation and compression. It does not rely on any specific\n * underlying system, so should run in the browser, Node, or Plask.\n */\n\n\"use strict\";\n\nimport { console } from \"./console.js\";\n\nfunction GifWriter(buf, width, height, gopts) {\n var p = 0;\n\n var gopts = gopts === undefined ? {} : gopts;\n var loop_count = gopts.loop === undefined ? null : gopts.loop;\n var global_palette = gopts.palette === undefined ? null : gopts.palette;\n\n if (width <= 0 || height <= 0 || width > 65535 || height > 65535)\n throw new Error(\"Width/Height invalid.\");\n\n function check_palette_and_num_colors(palette) {\n var num_colors = palette.length;\n if (num_colors < 2 || num_colors > 256 || num_colors & (num_colors - 1)) {\n throw new Error(\n \"Invalid code/color length, must be power of 2 and 2 .. 256.\"\n );\n }\n return num_colors;\n }\n\n // - Header.\n buf[p++] = 0x47;\n buf[p++] = 0x49;\n buf[p++] = 0x46; // GIF\n buf[p++] = 0x38;\n buf[p++] = 0x39;\n buf[p++] = 0x61; // 89a\n\n // Handling of Global Color Table (palette) and background index.\n var gp_num_colors_pow2 = 0;\n var background = 0;\n if (global_palette !== null) {\n var gp_num_colors = check_palette_and_num_colors(global_palette);\n while ((gp_num_colors >>= 1)) ++gp_num_colors_pow2;\n gp_num_colors = 1 << gp_num_colors_pow2;\n --gp_num_colors_pow2;\n if (gopts.background !== undefined) {\n background = gopts.background;\n if (background >= gp_num_colors)\n throw new Error(\"Background index out of range.\");\n // The GIF spec states that a background index of 0 should be ignored, so\n // this is probably a mistake and you really want to set it to another\n // slot in the palette. But actually in the end most browsers, etc end\n // up ignoring this almost completely (including for dispose background).\n if (background === 0)\n throw new Error(\"Background index explicitly passed as 0.\");\n }\n }\n\n // - Logical Screen Descriptor.\n // NOTE(deanm): w/h apparently ignored by implementations, but set anyway.\n buf[p++] = width & 0xff;\n buf[p++] = (width >> 8) & 0xff;\n buf[p++] = height & 0xff;\n buf[p++] = (height >> 8) & 0xff;\n // NOTE: Indicates 0-bpp original color resolution (unused?).\n buf[p++] = (global_palette !== null ? 0x80 : 0) | gp_num_colors_pow2; // Global Color Table Flag. // NOTE: No sort flag (unused?).\n buf[p++] = background; // Background Color Index.\n buf[p++] = 0; // Pixel aspect ratio (unused?).\n\n // - Global Color Table\n if (global_palette !== null) {\n for (var i = 0, il = global_palette.length; i < il; ++i) {\n var rgb = global_palette[i];\n buf[p++] = (rgb >> 16) & 0xff;\n buf[p++] = (rgb >> 8) & 0xff;\n buf[p++] = rgb & 0xff;\n }\n }\n\n if (loop_count !== null) {\n // Netscape block for looping.\n if (loop_count < 0 || loop_count > 65535)\n throw new Error(\"Loop count invalid.\");\n // Extension code, label, and length.\n buf[p++] = 0x21;\n buf[p++] = 0xff;\n buf[p++] = 0x0b;\n // NETSCAPE2.0\n buf[p++] = 0x4e;\n buf[p++] = 0x45;\n buf[p++] = 0x54;\n buf[p++] = 0x53;\n buf[p++] = 0x43;\n buf[p++] = 0x41;\n buf[p++] = 0x50;\n buf[p++] = 0x45;\n buf[p++] = 0x32;\n buf[p++] = 0x2e;\n buf[p++] = 0x30;\n // Sub-block\n buf[p++] = 0x03;\n buf[p++] = 0x01;\n buf[p++] = loop_count & 0xff;\n buf[p++] = (loop_count >> 8) & 0xff;\n buf[p++] = 0x00; // Terminator.\n }\n\n var ended = false;\n\n this.addFrame = function(x, y, w, h, indexed_pixels, opts) {\n if (ended === true) {\n --p;\n ended = false;\n } // Un-end.\n\n opts = opts === undefined ? {} : opts;\n\n // TODO(deanm): Bounds check x, y. Do they need to be within the virtual\n // canvas width/height, I imagine?\n if (x < 0 || y < 0 || x > 65535 || y > 65535)\n throw new Error(\"x/y invalid.\");\n\n if (w <= 0 || h <= 0 || w > 65535 || h > 65535)\n throw new Error(\"Width/Height invalid.\");\n\n if (indexed_pixels.length < w * h)\n throw new Error(\"Not enough pixels for the frame size.\");\n\n var using_local_palette = true;\n var palette = opts.palette;\n if (palette === undefined || palette === null) {\n using_local_palette = false;\n palette = global_palette;\n }\n\n if (palette === undefined || palette === null)\n throw new Error(\"Must supply either a local or global palette.\");\n\n var num_colors = check_palette_and_num_colors(palette);\n\n // Compute the min_code_size (power of 2), destroying num_colors.\n var min_code_size = 0;\n while ((num_colors >>= 1)) ++min_code_size;\n num_colors = 1 << min_code_size; // Now we can easily get it back.\n\n var delay = opts.delay === undefined ? 0 : opts.delay;\n\n // From the spec:\n // 0 - No disposal specified. The decoder is\n // not required to take any action.\n // 1 - Do not dispose. The graphic is to be left\n // in place.\n // 2 - Restore to background color. The area used by the\n // graphic must be restored to the background color.\n // 3 - Restore to previous. The decoder is required to\n // restore the area overwritten by the graphic with\n // what was there prior to rendering the graphic.\n // 4-7 - To be defined.\n // NOTE(deanm): Dispose background doesn't really work, apparently most\n // browsers ignore the background palette index and clear to transparency.\n var disposal = opts.disposal === undefined ? 0 : opts.disposal;\n if (disposal < 0 || disposal > 3)\n // 4-7 is reserved.\n throw new Error(\"Disposal out of range.\");\n\n var use_transparency = false;\n var transparent_index = 0;\n if (opts.transparent !== undefined && opts.transparent !== null) {\n use_transparency = true;\n transparent_index = opts.transparent;\n if (transparent_index < 0 || transparent_index >= num_colors)\n throw new Error(\"Transparent color index.\");\n }\n\n if (disposal !== 0 || use_transparency || delay !== 0) {\n // - Graphics Control Extension\n buf[p++] = 0x21;\n buf[p++] = 0xf9; // Extension / Label.\n buf[p++] = 4; // Byte size.\n\n buf[p++] = (disposal << 2) | (use_transparency === true ? 1 : 0);\n buf[p++] = delay & 0xff;\n buf[p++] = (delay >> 8) & 0xff;\n buf[p++] = transparent_index; // Transparent color index.\n buf[p++] = 0; // Block Terminator.\n }\n\n // - Image Descriptor\n buf[p++] = 0x2c; // Image Seperator.\n buf[p++] = x & 0xff;\n buf[p++] = (x >> 8) & 0xff; // Left.\n buf[p++] = y & 0xff;\n buf[p++] = (y >> 8) & 0xff; // Top.\n buf[p++] = w & 0xff;\n buf[p++] = (w >> 8) & 0xff;\n buf[p++] = h & 0xff;\n buf[p++] = (h >> 8) & 0xff;\n // NOTE: No sort flag (unused?).\n // TODO(deanm): Support interlace.\n buf[p++] = using_local_palette === true ? 0x80 | (min_code_size - 1) : 0;\n\n // - Local Color Table\n if (using_local_palette === true) {\n for (var i = 0, il = palette.length; i < il; ++i) {\n var rgb = palette[i];\n buf[p++] = (rgb >> 16) & 0xff;\n buf[p++] = (rgb >> 8) & 0xff;\n buf[p++] = rgb & 0xff;\n }\n }\n\n p = GifWriterOutputLZWCodeStream(\n buf,\n p,\n min_code_size < 2 ? 2 : min_code_size,\n indexed_pixels\n );\n\n return p;\n };\n\n this.end = function() {\n if (ended === false) {\n buf[p++] = 0x3b; // Trailer.\n ended = true;\n }\n return p;\n };\n\n this.getOutputBuffer = function() {\n return buf;\n };\n this.setOutputBuffer = function(v) {\n buf = v;\n };\n this.getOutputBufferPosition = function() {\n return p;\n };\n this.setOutputBufferPosition = function(v) {\n p = v;\n };\n}\n\n// Main compression routine, palette indexes -> LZW code stream.\n// |index_stream| must have at least one entry.\nfunction GifWriterOutputLZWCodeStream(buf, p, min_code_size, index_stream) {\n buf[p++] = min_code_size;\n var cur_subblock = p++; // Pointing at the length field.\n\n var clear_code = 1 << min_code_size;\n var code_mask = clear_code - 1;\n var eoi_code = clear_code + 1;\n var next_code = eoi_code + 1;\n\n var cur_code_size = min_code_size + 1; // Number of bits per code.\n var cur_shift = 0;\n // We have at most 12-bit codes, so we should have to hold a max of 19\n // bits here (and then we would write out).\n var cur = 0;\n\n function emit_bytes_to_buffer(bit_block_size) {\n while (cur_shift >= bit_block_size) {\n buf[p++] = cur & 0xff;\n cur >>= 8;\n cur_shift -= 8;\n if (p === cur_subblock + 256) {\n // Finished a subblock.\n buf[cur_subblock] = 255;\n cur_subblock = p++;\n }\n }\n }\n\n function emit_code(c) {\n cur |= c << cur_shift;\n cur_shift += cur_code_size;\n emit_bytes_to_buffer(8);\n }\n\n // I am not an expert on the topic, and I don't want to write a thesis.\n // However, it is good to outline here the basic algorithm and the few data\n // structures and optimizations here that make this implementation fast.\n // The basic idea behind LZW is to build a table of previously seen runs\n // addressed by a short id (herein called output code). All data is\n // referenced by a code, which represents one or more values from the\n // original input stream. All input bytes can be referenced as the same\n // value as an output code. So if you didn't want any compression, you\n // could more or less just output the original bytes as codes (there are\n // some details to this, but it is the idea). In order to achieve\n // compression, values greater then the input range (codes can be up to\n // 12-bit while input only 8-bit) represent a sequence of previously seen\n // inputs. The decompressor is able to build the same mapping while\n // decoding, so there is always a shared common knowledge between the\n // encoding and decoder, which is also important for \"timing\" aspects like\n // how to handle variable bit width code encoding.\n //\n // One obvious but very important consequence of the table system is there\n // is always a unique id (at most 12-bits) to map the runs. 'A' might be\n // 4, then 'AA' might be 10, 'AAA' 11, 'AAAA' 12, etc. This relationship\n // can be used for an effecient lookup strategy for the code mapping. We\n // need to know if a run has been seen before, and be able to map that run\n // to the output code. Since we start with known unique ids (input bytes),\n // and then from those build more unique ids (table entries), we can\n // continue this chain (almost like a linked list) to always have small\n // integer values that represent the current byte chains in the encoder.\n // This means instead of tracking the input bytes (AAAABCD) to know our\n // current state, we can track the table entry for AAAABC (it is guaranteed\n // to exist by the nature of the algorithm) and the next character D.\n // Therefor the tuple of (table_entry, byte) is guaranteed to also be\n // unique. This allows us to create a simple lookup key for mapping input\n // sequences to codes (table indices) without having to store or search\n // any of the code sequences. So if 'AAAA' has a table entry of 12, the\n // tuple of ('AAAA', K) for any input byte K will be unique, and can be our\n // key. This leads to a integer value at most 20-bits, which can always\n // fit in an SMI value and be used as a fast sparse array / object key.\n\n // Output code for the current contents of the index buffer.\n var ib_code = index_stream[0] & code_mask; // Load first input index.\n var code_table = {}; // Key'd on our 20-bit \"tuple\".\n\n emit_code(clear_code); // Spec says first code should be a clear code.\n\n // First index already loaded, process the rest of the stream.\n for (var i = 1, il = index_stream.length; i < il; ++i) {\n var k = index_stream[i] & code_mask;\n var cur_key = (ib_code << 8) | k; // (prev, k) unique tuple.\n var cur_code = code_table[cur_key]; // buffer + k.\n\n // Check if we have to create a new code table entry.\n if (cur_code === undefined) {\n // We don't have buffer + k.\n // Emit index buffer (without k).\n // This is an inline version of emit_code, because this is the core\n // writing routine of the compressor (and V8 cannot inline emit_code\n // because it is a closure here in a different context). Additionally\n // we can call emit_byte_to_buffer less often, because we can have\n // 30-bits (from our 31-bit signed SMI), and we know our codes will only\n // be 12-bits, so can safely have 18-bits there without overflow.\n // emit_code(ib_code);\n cur |= ib_code << cur_shift;\n cur_shift += cur_code_size;\n while (cur_shift >= 8) {\n buf[p++] = cur & 0xff;\n cur >>= 8;\n cur_shift -= 8;\n if (p === cur_subblock + 256) {\n // Finished a subblock.\n buf[cur_subblock] = 255;\n cur_subblock = p++;\n }\n }\n\n if (next_code === 4096) {\n // Table full, need a clear.\n emit_code(clear_code);\n next_code = eoi_code + 1;\n cur_code_size = min_code_size + 1;\n code_table = {};\n } else {\n // Table not full, insert a new entry.\n // Increase our variable bit code sizes if necessary. This is a bit\n // tricky as it is based on \"timing\" between the encoding and\n // decoder. From the encoders perspective this should happen after\n // we've already emitted the index buffer and are about to create the\n // first table entry that would overflow our current code bit size.\n if (next_code >= 1 << cur_code_size) ++cur_code_size;\n code_table[cur_key] = next_code++; // Insert into code table.\n }\n\n ib_code = k; // Index buffer to single input k.\n } else {\n ib_code = cur_code; // Index buffer to sequence in code table.\n }\n }\n\n emit_code(ib_code); // There will still be something in the index buffer.\n emit_code(eoi_code); // End Of Information.\n\n // Flush / finalize the sub-blocks stream to the buffer.\n emit_bytes_to_buffer(1);\n\n // Finish the sub-blocks, writing out any unfinished lengths and\n // terminating with a sub-block of length 0. If we have already started\n // but not yet used a sub-block it can just become the terminator.\n if (cur_subblock + 1 === p) {\n // Started but unused.\n buf[cur_subblock] = 0;\n } else {\n // Started and used, write length and additional terminator block.\n buf[cur_subblock] = p - cur_subblock - 1;\n buf[p++] = 0;\n }\n return p;\n}\n\nfunction GifReader(buf) {\n var p = 0;\n\n // - Header (GIF87a or GIF89a).\n if (\n buf[p++] !== 0x47 ||\n buf[p++] !== 0x49 ||\n buf[p++] !== 0x46 ||\n buf[p++] !== 0x38 ||\n ((buf[p++] + 1) & 0xfd) !== 0x38 ||\n buf[p++] !== 0x61\n ) {\n throw new Error(\"Invalid GIF 87a/89a header.\");\n }\n\n // - Logical Screen Descriptor.\n var width = buf[p++] | (buf[p++] << 8);\n var height = buf[p++] | (buf[p++] << 8);\n var pf0 = buf[p++]; // .\n var global_palette_flag = pf0 >> 7;\n var num_global_colors_pow2 = pf0 & 0x7;\n var num_global_colors = 1 << (num_global_colors_pow2 + 1);\n var background = buf[p++];\n buf[p++]; // Pixel aspect ratio (unused?).\n\n var global_palette_offset = null;\n var global_palette_size = null;\n\n if (global_palette_flag) {\n global_palette_offset = p;\n global_palette_size = num_global_colors;\n p += num_global_colors * 3; // Seek past palette.\n }\n\n var no_eof = true;\n\n var frames = [];\n\n var delay = 0;\n var transparent_index = null;\n var disposal = 0; // 0 - No disposal specified.\n var loop_count = null;\n\n this.width = width;\n this.height = height;\n\n while (no_eof && p < buf.length) {\n switch (buf[p++]) {\n case 0x21: // Graphics Control Extension Block\n switch (buf[p++]) {\n case 0xff: // Application specific block\n // Try if it's a Netscape block (with animation loop counter).\n if (\n buf[p] !== 0x0b || // 21 FF already read, check block size.\n // NETSCAPE2.0\n (buf[p + 1] == 0x4e &&\n buf[p + 2] == 0x45 &&\n buf[p + 3] == 0x54 &&\n buf[p + 4] == 0x53 &&\n buf[p + 5] == 0x43 &&\n buf[p + 6] == 0x41 &&\n buf[p + 7] == 0x50 &&\n buf[p + 8] == 0x45 &&\n buf[p + 9] == 0x32 &&\n buf[p + 10] == 0x2e &&\n buf[p + 11] == 0x30 &&\n // Sub-block\n buf[p + 12] == 0x03 &&\n buf[p + 13] == 0x01 &&\n buf[p + 16] == 0)\n ) {\n p += 14;\n loop_count = buf[p++] | (buf[p++] << 8);\n p++; // Skip terminator.\n } else {\n // We don't know what it is, just try to get past it.\n p += 12;\n while (true) {\n // Seek through subblocks.\n var block_size = buf[p++];\n // Bad block size (ex: undefined from an out of bounds read).\n if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n if (block_size === 0) break; // 0 size is terminator\n p += block_size;\n }\n }\n break;\n\n case 0xf9: // Graphics Control Extension\n if (buf[p++] !== 0x4 || buf[p + 4] !== 0)\n throw new Error(\"Invalid graphics extension block.\");\n var pf1 = buf[p++];\n delay = buf[p++] | (buf[p++] << 8);\n transparent_index = buf[p++];\n if ((pf1 & 1) === 0) transparent_index = null;\n disposal = (pf1 >> 2) & 0x7;\n p++; // Skip terminator.\n break;\n\n case 0xfe: // Comment Extension.\n while (true) {\n // Seek through subblocks.\n var block_size = buf[p++];\n // Bad block size (ex: undefined from an out of bounds read).\n if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n if (block_size === 0) break; // 0 size is terminator\n // console.log(buf.slice(p, p+block_size).toString('ascii'));\n p += block_size;\n }\n break;\n\n default:\n throw new Error(\n \"Unknown graphic control label: 0x\" + buf[p - 1].toString(16)\n );\n }\n break;\n\n case 0x2c: // Image Descriptor.\n var x = buf[p++] | (buf[p++] << 8);\n var y = buf[p++] | (buf[p++] << 8);\n var w = buf[p++] | (buf[p++] << 8);\n var h = buf[p++] | (buf[p++] << 8);\n var pf2 = buf[p++];\n var local_palette_flag = pf2 >> 7;\n var interlace_flag = (pf2 >> 6) & 1;\n var num_local_colors_pow2 = pf2 & 0x7;\n var num_local_colors = 1 << (num_local_colors_pow2 + 1);\n var palette_offset = global_palette_offset;\n var palette_size = global_palette_size;\n var has_local_palette = false;\n if (local_palette_flag) {\n var has_local_palette = true;\n palette_offset = p; // Override with local palette.\n palette_size = num_local_colors;\n p += num_local_colors * 3; // Seek past palette.\n }\n\n var data_offset = p;\n\n p++; // codesize\n while (true) {\n var block_size = buf[p++];\n // Bad block size (ex: undefined from an out of bounds read).\n if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n if (block_size === 0) break; // 0 size is terminator\n p += block_size;\n }\n\n frames.push({\n x: x,\n y: y,\n width: w,\n height: h,\n has_local_palette: has_local_palette,\n palette_offset: palette_offset,\n palette_size: palette_size,\n data_offset: data_offset,\n data_length: p - data_offset,\n transparent_index: transparent_index,\n interlaced: !!interlace_flag,\n delay: delay,\n disposal: disposal\n });\n break;\n\n case 0x3b: // Trailer Marker (end of file).\n no_eof = false;\n break;\n\n default:\n throw new Error(\"Unknown gif block: 0x\" + buf[p - 1].toString(16));\n break;\n }\n }\n\n this.numFrames = function() {\n return frames.length;\n };\n\n this.loopCount = function() {\n return loop_count;\n };\n\n this.frameInfo = function(frame_num) {\n if (frame_num < 0 || frame_num >= frames.length)\n throw new Error(\"Frame index out of range.\");\n return frames[frame_num];\n };\n\n this.decodeAndBlitFrameBGRA = function(frame_num, pixels) {\n var frame = this.frameInfo(frame_num);\n var num_pixels = frame.width * frame.height;\n var index_stream = new Uint8Array(num_pixels); // At most 8-bit indices.\n GifReaderLZWOutputIndexStream(\n buf,\n frame.data_offset,\n index_stream,\n num_pixels\n );\n var palette_offset = frame.palette_offset;\n\n // NOTE(deanm): It seems to be much faster to compare index to 256 than\n // to === null. Not sure why, but CompareStub_EQ_STRICT shows up high in\n // the profile, not sure if it's related to using a Uint8Array.\n var trans = frame.transparent_index;\n if (trans === null) trans = 256;\n\n // We are possibly just blitting to a portion of the entire frame.\n // That is a subrect within the framerect, so the additional pixels\n // must be skipped over after we finished a scanline.\n var framewidth = frame.width;\n var framestride = width - framewidth;\n var xleft = framewidth; // Number of subrect pixels left in scanline.\n\n // Output indices of the top left and bottom right corners of the subrect.\n var opbeg = (frame.y * width + frame.x) * 4;\n var opend = ((frame.y + frame.height) * width + frame.x) * 4;\n var op = opbeg;\n\n var scanstride = framestride * 4;\n\n // Use scanstride to skip past the rows when interlacing. This is skipping\n // 7 rows for the first two passes, then 3 then 1.\n if (frame.interlaced === true) {\n scanstride += width * 4 * 7; // Pass 1.\n }\n\n var interlaceskip = 8; // Tracking the row interval in the current pass.\n\n for (var i = 0, il = index_stream.length; i < il; ++i) {\n var index = index_stream[i];\n\n if (xleft === 0) {\n // Beginning of new scan line\n op += scanstride;\n xleft = framewidth;\n if (op >= opend) {\n // Catch the wrap to switch passes when interlacing.\n scanstride = framestride * 4 + width * 4 * (interlaceskip - 1);\n // interlaceskip / 2 * 4 is interlaceskip << 1.\n op = opbeg + (framewidth + framestride) * (interlaceskip << 1);\n interlaceskip >>= 1;\n }\n }\n\n if (index === trans) {\n op += 4;\n } else {\n var r = buf[palette_offset + index * 3];\n var g = buf[palette_offset + index * 3 + 1];\n var b = buf[palette_offset + index * 3 + 2];\n pixels[op++] = b;\n pixels[op++] = g;\n pixels[op++] = r;\n pixels[op++] = 255;\n }\n --xleft;\n }\n };\n\n // I will go to copy and paste hell one day...\n this.decodeAndBlitFrameRGBA = function(frame_num, pixels) {\n var frame = this.frameInfo(frame_num);\n var num_pixels = frame.width * frame.height;\n var index_stream = new Uint8Array(num_pixels); // At most 8-bit indices.\n GifReaderLZWOutputIndexStream(\n buf,\n frame.data_offset,\n index_stream,\n num_pixels\n );\n var palette_offset = frame.palette_offset;\n\n // NOTE(deanm): It seems to be much faster to compare index to 256 than\n // to === null. Not sure why, but CompareStub_EQ_STRICT shows up high in\n // the profile, not sure if it's related to using a Uint8Array.\n var trans = frame.transparent_index;\n if (trans === null) trans = 256;\n\n // We are possibly just blitting to a portion of the entire frame.\n // That is a subrect within the framerect, so the additional pixels\n // must be skipped over after we finished a scanline.\n var framewidth = frame.width;\n var framestride = width - framewidth;\n var xleft = framewidth; // Number of subrect pixels left in scanline.\n\n // Output indices of the top left and bottom right corners of the subrect.\n var opbeg = (frame.y * width + frame.x) * 4;\n var opend = ((frame.y + frame.height) * width + frame.x) * 4;\n var op = opbeg;\n\n var scanstride = framestride * 4;\n\n // Use scanstride to skip past the rows when interlacing. This is skipping\n // 7 rows for the first two passes, then 3 then 1.\n if (frame.interlaced === true) {\n scanstride += width * 4 * 7; // Pass 1.\n }\n\n var interlaceskip = 8; // Tracking the row interval in the current pass.\n\n for (var i = 0, il = index_stream.length; i < il; ++i) {\n var index = index_stream[i];\n\n if (xleft === 0) {\n // Beginning of new scan line\n op += scanstride;\n xleft = framewidth;\n if (op >= opend) {\n // Catch the wrap to switch passes when interlacing.\n scanstride = framestride * 4 + width * 4 * (interlaceskip - 1);\n // interlaceskip / 2 * 4 is interlaceskip << 1.\n op = opbeg + (framewidth + framestride) * (interlaceskip << 1);\n interlaceskip >>= 1;\n }\n }\n\n if (index === trans) {\n op += 4;\n } else {\n var r = buf[palette_offset + index * 3];\n var g = buf[palette_offset + index * 3 + 1];\n var b = buf[palette_offset + index * 3 + 2];\n pixels[op++] = r;\n pixels[op++] = g;\n pixels[op++] = b;\n pixels[op++] = 255;\n }\n --xleft;\n }\n };\n}\n\nfunction GifReaderLZWOutputIndexStream(code_stream, p, output, output_length) {\n var min_code_size = code_stream[p++];\n\n var clear_code = 1 << min_code_size;\n var eoi_code = clear_code + 1;\n var next_code = eoi_code + 1;\n\n var cur_code_size = min_code_size + 1; // Number of bits per code.\n // NOTE: This shares the same name as the encoder, but has a different\n // meaning here. Here this masks each code coming from the code stream.\n var code_mask = (1 << cur_code_size) - 1;\n var cur_shift = 0;\n var cur = 0;\n\n var op = 0; // Output pointer.\n\n var subblock_size = code_stream[p++];\n\n // TODO(deanm): Would using a TypedArray be any faster? At least it would\n // solve the fast mode / backing store uncertainty.\n // var code_table = Array(4096);\n var code_table = new Int32Array(4096); // Can be signed, we only use 20 bits.\n\n var prev_code = null; // Track code-1.\n\n while (true) {\n // Read up to two bytes, making sure we always 12-bits for max sized code.\n while (cur_shift < 16) {\n if (subblock_size === 0) break; // No more data to be read.\n\n cur |= code_stream[p++] << cur_shift;\n cur_shift += 8;\n\n if (subblock_size === 1) {\n // Never let it get to 0 to hold logic above.\n subblock_size = code_stream[p++]; // Next subblock.\n } else {\n --subblock_size;\n }\n }\n\n // TODO(deanm): We should never really get here, we should have received\n // and EOI.\n if (cur_shift < cur_code_size) break;\n\n var code = cur & code_mask;\n cur >>= cur_code_size;\n cur_shift -= cur_code_size;\n\n // TODO(deanm): Maybe should check that the first code was a clear code,\n // at least this is what you're supposed to do. But actually our encoder\n // now doesn't emit a clear code first anyway.\n if (code === clear_code) {\n // We don't actually have to clear the table. This could be a good idea\n // for greater error checking, but we don't really do any anyway. We\n // will just track it with next_code and overwrite old entries.\n\n next_code = eoi_code + 1;\n cur_code_size = min_code_size + 1;\n code_mask = (1 << cur_code_size) - 1;\n\n // Don't update prev_code ?\n prev_code = null;\n continue;\n } else if (code === eoi_code) {\n break;\n }\n\n // We have a similar situation as the decoder, where we want to store\n // variable length entries (code table entries), but we want to do in a\n // faster manner than an array of arrays. The code below stores sort of a\n // linked list within the code table, and then \"chases\" through it to\n // construct the dictionary entries. When a new entry is created, just the\n // last byte is stored, and the rest (prefix) of the entry is only\n // referenced by its table entry. Then the code chases through the\n // prefixes until it reaches a single byte code. We have to chase twice,\n // first to compute the length, and then to actually copy the data to the\n // output (backwards, since we know the length). The alternative would be\n // storing something in an intermediate stack, but that doesn't make any\n // more sense. I implemented an approach where it also stored the length\n // in the code table, although it's a bit tricky because you run out of\n // bits (12 + 12 + 8), but I didn't measure much improvements (the table\n // entries are generally not the long). Even when I created benchmarks for\n // very long table entries the complexity did not seem worth it.\n // The code table stores the prefix entry in 12 bits and then the suffix\n // byte in 8 bits, so each entry is 20 bits.\n\n var chase_code = code < next_code ? code : prev_code;\n\n // Chase what we will output, either {CODE} or {CODE-1}.\n var chase_length = 0;\n var chase = chase_code;\n while (chase > clear_code) {\n chase = code_table[chase] >> 8;\n ++chase_length;\n }\n\n var k = chase;\n\n var op_end = op + chase_length + (chase_code !== code ? 1 : 0);\n if (op_end > output_length) {\n console.log(\"Warning, gif stream longer than expected.\");\n return;\n }\n\n // Already have the first byte from the chase, might as well write it fast.\n output[op++] = k;\n\n op += chase_length;\n var b = op; // Track pointer, writing backwards.\n\n if (chase_code !== code)\n // The case of emitting {CODE-1} + k.\n output[op++] = k;\n\n chase = chase_code;\n while (chase_length--) {\n chase = code_table[chase];\n output[--b] = chase & 0xff; // Write backwards.\n chase >>= 8; // Pull down to the prefix code.\n }\n\n if (prev_code !== null && next_code < 4096) {\n code_table[next_code++] = (prev_code << 8) | k;\n // TODO(deanm): Figure out this clearing vs code growth logic better. I\n // have an feeling that it should just happen somewhere else, for now it\n // is awkward between when we grow past the max and then hit a clear code.\n // For now just check if we hit the max 12-bits (then a clear code should\n // follow, also of course encoded in 12-bits).\n if (next_code >= code_mask + 1 && cur_code_size < 12) {\n ++cur_code_size;\n code_mask = (code_mask << 1) | 1;\n }\n }\n\n prev_code = code;\n }\n\n if (op !== output_length) {\n console.log(\"Warning, gif stream shorter than expected.\");\n }\n\n return output;\n}\n\nexport { GifReader, GifWriter };\n","/**\n * @license\n Copyright (c) 2008, Adobe Systems Incorporated\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without \n modification, are permitted provided that the following conditions are\n met:\n\n * Redistributions of source code must retain the above copyright notice, \n this list of conditions and the following disclaimer.\n \n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the \n documentation and/or other materials provided with the distribution.\n \n * Neither the name of Adobe Systems Incorporated nor the names of its \n contributors may be used to endorse or promote products derived from \n this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\n IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\n THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR \n CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n/*\nJPEG encoder ported to JavaScript and optimized by Andreas Ritter, www.bytestrom.eu, 11/2009\n\nBasic GUI blocking jpeg encoder\n*/\n\nfunction JPEGEncoder(quality) {\n var ffloor = Math.floor;\n var YTable = new Array(64);\n var UVTable = new Array(64);\n var fdtbl_Y = new Array(64);\n var fdtbl_UV = new Array(64);\n var YDC_HT;\n var UVDC_HT;\n var YAC_HT;\n var UVAC_HT;\n\n var bitcode = new Array(65535);\n var category = new Array(65535);\n var outputfDCTQuant = new Array(64);\n var DU = new Array(64);\n var byteout = [];\n var bytenew = 0;\n var bytepos = 7;\n\n var YDU = new Array(64);\n var UDU = new Array(64);\n var VDU = new Array(64);\n var clt = new Array(256);\n var RGB_YUV_TABLE = new Array(2048);\n var currentQuality;\n\n var ZigZag = [\n 0,\n 1,\n 5,\n 6,\n 14,\n 15,\n 27,\n 28,\n 2,\n 4,\n 7,\n 13,\n 16,\n 26,\n 29,\n 42,\n 3,\n 8,\n 12,\n 17,\n 25,\n 30,\n 41,\n 43,\n 9,\n 11,\n 18,\n 24,\n 31,\n 40,\n 44,\n 53,\n 10,\n 19,\n 23,\n 32,\n 39,\n 45,\n 52,\n 54,\n 20,\n 22,\n 33,\n 38,\n 46,\n 51,\n 55,\n 60,\n 21,\n 34,\n 37,\n 47,\n 50,\n 56,\n 59,\n 61,\n 35,\n 36,\n 48,\n 49,\n 57,\n 58,\n 62,\n 63\n ];\n\n var std_dc_luminance_nrcodes = [\n 0,\n 0,\n 1,\n 5,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n var std_dc_luminance_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n var std_ac_luminance_nrcodes = [\n 0,\n 0,\n 2,\n 1,\n 3,\n 3,\n 2,\n 4,\n 3,\n 5,\n 5,\n 4,\n 4,\n 0,\n 0,\n 1,\n 0x7d\n ];\n var std_ac_luminance_values = [\n 0x01,\n 0x02,\n 0x03,\n 0x00,\n 0x04,\n 0x11,\n 0x05,\n 0x12,\n 0x21,\n 0x31,\n 0x41,\n 0x06,\n 0x13,\n 0x51,\n 0x61,\n 0x07,\n 0x22,\n 0x71,\n 0x14,\n 0x32,\n 0x81,\n 0x91,\n 0xa1,\n 0x08,\n 0x23,\n 0x42,\n 0xb1,\n 0xc1,\n 0x15,\n 0x52,\n 0xd1,\n 0xf0,\n 0x24,\n 0x33,\n 0x62,\n 0x72,\n 0x82,\n 0x09,\n 0x0a,\n 0x16,\n 0x17,\n 0x18,\n 0x19,\n 0x1a,\n 0x25,\n 0x26,\n 0x27,\n 0x28,\n 0x29,\n 0x2a,\n 0x34,\n 0x35,\n 0x36,\n 0x37,\n 0x38,\n 0x39,\n 0x3a,\n 0x43,\n 0x44,\n 0x45,\n 0x46,\n 0x47,\n 0x48,\n 0x49,\n 0x4a,\n 0x53,\n 0x54,\n 0x55,\n 0x56,\n 0x57,\n 0x58,\n 0x59,\n 0x5a,\n 0x63,\n 0x64,\n 0x65,\n 0x66,\n 0x67,\n 0x68,\n 0x69,\n 0x6a,\n 0x73,\n 0x74,\n 0x75,\n 0x76,\n 0x77,\n 0x78,\n 0x79,\n 0x7a,\n 0x83,\n 0x84,\n 0x85,\n 0x86,\n 0x87,\n 0x88,\n 0x89,\n 0x8a,\n 0x92,\n 0x93,\n 0x94,\n 0x95,\n 0x96,\n 0x97,\n 0x98,\n 0x99,\n 0x9a,\n 0xa2,\n 0xa3,\n 0xa4,\n 0xa5,\n 0xa6,\n 0xa7,\n 0xa8,\n 0xa9,\n 0xaa,\n 0xb2,\n 0xb3,\n 0xb4,\n 0xb5,\n 0xb6,\n 0xb7,\n 0xb8,\n 0xb9,\n 0xba,\n 0xc2,\n 0xc3,\n 0xc4,\n 0xc5,\n 0xc6,\n 0xc7,\n 0xc8,\n 0xc9,\n 0xca,\n 0xd2,\n 0xd3,\n 0xd4,\n 0xd5,\n 0xd6,\n 0xd7,\n 0xd8,\n 0xd9,\n 0xda,\n 0xe1,\n 0xe2,\n 0xe3,\n 0xe4,\n 0xe5,\n 0xe6,\n 0xe7,\n 0xe8,\n 0xe9,\n 0xea,\n 0xf1,\n 0xf2,\n 0xf3,\n 0xf4,\n 0xf5,\n 0xf6,\n 0xf7,\n 0xf8,\n 0xf9,\n 0xfa\n ];\n\n var std_dc_chrominance_nrcodes = [\n 0,\n 0,\n 3,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n var std_dc_chrominance_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n var std_ac_chrominance_nrcodes = [\n 0,\n 0,\n 2,\n 1,\n 2,\n 4,\n 4,\n 3,\n 4,\n 7,\n 5,\n 4,\n 4,\n 0,\n 1,\n 2,\n 0x77\n ];\n var std_ac_chrominance_values = [\n 0x00,\n 0x01,\n 0x02,\n 0x03,\n 0x11,\n 0x04,\n 0x05,\n 0x21,\n 0x31,\n 0x06,\n 0x12,\n 0x41,\n 0x51,\n 0x07,\n 0x61,\n 0x71,\n 0x13,\n 0x22,\n 0x32,\n 0x81,\n 0x08,\n 0x14,\n 0x42,\n 0x91,\n 0xa1,\n 0xb1,\n 0xc1,\n 0x09,\n 0x23,\n 0x33,\n 0x52,\n 0xf0,\n 0x15,\n 0x62,\n 0x72,\n 0xd1,\n 0x0a,\n 0x16,\n 0x24,\n 0x34,\n 0xe1,\n 0x25,\n 0xf1,\n 0x17,\n 0x18,\n 0x19,\n 0x1a,\n 0x26,\n 0x27,\n 0x28,\n 0x29,\n 0x2a,\n 0x35,\n 0x36,\n 0x37,\n 0x38,\n 0x39,\n 0x3a,\n 0x43,\n 0x44,\n 0x45,\n 0x46,\n 0x47,\n 0x48,\n 0x49,\n 0x4a,\n 0x53,\n 0x54,\n 0x55,\n 0x56,\n 0x57,\n 0x58,\n 0x59,\n 0x5a,\n 0x63,\n 0x64,\n 0x65,\n 0x66,\n 0x67,\n 0x68,\n 0x69,\n 0x6a,\n 0x73,\n 0x74,\n 0x75,\n 0x76,\n 0x77,\n 0x78,\n 0x79,\n 0x7a,\n 0x82,\n 0x83,\n 0x84,\n 0x85,\n 0x86,\n 0x87,\n 0x88,\n 0x89,\n 0x8a,\n 0x92,\n 0x93,\n 0x94,\n 0x95,\n 0x96,\n 0x97,\n 0x98,\n 0x99,\n 0x9a,\n 0xa2,\n 0xa3,\n 0xa4,\n 0xa5,\n 0xa6,\n 0xa7,\n 0xa8,\n 0xa9,\n 0xaa,\n 0xb2,\n 0xb3,\n 0xb4,\n 0xb5,\n 0xb6,\n 0xb7,\n 0xb8,\n 0xb9,\n 0xba,\n 0xc2,\n 0xc3,\n 0xc4,\n 0xc5,\n 0xc6,\n 0xc7,\n 0xc8,\n 0xc9,\n 0xca,\n 0xd2,\n 0xd3,\n 0xd4,\n 0xd5,\n 0xd6,\n 0xd7,\n 0xd8,\n 0xd9,\n 0xda,\n 0xe2,\n 0xe3,\n 0xe4,\n 0xe5,\n 0xe6,\n 0xe7,\n 0xe8,\n 0xe9,\n 0xea,\n 0xf2,\n 0xf3,\n 0xf4,\n 0xf5,\n 0xf6,\n 0xf7,\n 0xf8,\n 0xf9,\n 0xfa\n ];\n\n function initQuantTables(sf) {\n var YQT = [\n 16,\n 11,\n 10,\n 16,\n 24,\n 40,\n 51,\n 61,\n 12,\n 12,\n 14,\n 19,\n 26,\n 58,\n 60,\n 55,\n 14,\n 13,\n 16,\n 24,\n 40,\n 57,\n 69,\n 56,\n 14,\n 17,\n 22,\n 29,\n 51,\n 87,\n 80,\n 62,\n 18,\n 22,\n 37,\n 56,\n 68,\n 109,\n 103,\n 77,\n 24,\n 35,\n 55,\n 64,\n 81,\n 104,\n 113,\n 92,\n 49,\n 64,\n 78,\n 87,\n 103,\n 121,\n 120,\n 101,\n 72,\n 92,\n 95,\n 98,\n 112,\n 100,\n 103,\n 99\n ];\n\n for (var i = 0; i < 64; i++) {\n var t = ffloor((YQT[i] * sf + 50) / 100);\n t = Math.min(Math.max(t, 1), 255);\n YTable[ZigZag[i]] = t;\n }\n var UVQT = [\n 17,\n 18,\n 24,\n 47,\n 99,\n 99,\n 99,\n 99,\n 18,\n 21,\n 26,\n 66,\n 99,\n 99,\n 99,\n 99,\n 24,\n 26,\n 56,\n 99,\n 99,\n 99,\n 99,\n 99,\n 47,\n 66,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99\n ];\n for (var j = 0; j < 64; j++) {\n var u = ffloor((UVQT[j] * sf + 50) / 100);\n u = Math.min(Math.max(u, 1), 255);\n UVTable[ZigZag[j]] = u;\n }\n var aasf = [\n 1.0,\n 1.387039845,\n 1.306562965,\n 1.175875602,\n 1.0,\n 0.785694958,\n 0.5411961,\n 0.275899379\n ];\n var k = 0;\n for (var row = 0; row < 8; row++) {\n for (var col = 0; col < 8; col++) {\n fdtbl_Y[k] = 1.0 / (YTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0);\n fdtbl_UV[k] = 1.0 / (UVTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0);\n k++;\n }\n }\n }\n\n function computeHuffmanTbl(nrcodes, std_table) {\n var codevalue = 0;\n var pos_in_table = 0;\n var HT = new Array();\n for (var k = 1; k <= 16; k++) {\n for (var j = 1; j <= nrcodes[k]; j++) {\n HT[std_table[pos_in_table]] = [];\n HT[std_table[pos_in_table]][0] = codevalue;\n HT[std_table[pos_in_table]][1] = k;\n pos_in_table++;\n codevalue++;\n }\n codevalue *= 2;\n }\n return HT;\n }\n\n function initHuffmanTbl() {\n YDC_HT = computeHuffmanTbl(\n std_dc_luminance_nrcodes,\n std_dc_luminance_values\n );\n UVDC_HT = computeHuffmanTbl(\n std_dc_chrominance_nrcodes,\n std_dc_chrominance_values\n );\n YAC_HT = computeHuffmanTbl(\n std_ac_luminance_nrcodes,\n std_ac_luminance_values\n );\n UVAC_HT = computeHuffmanTbl(\n std_ac_chrominance_nrcodes,\n std_ac_chrominance_values\n );\n }\n\n function initCategoryNumber() {\n var nrlower = 1;\n var nrupper = 2;\n for (var cat = 1; cat <= 15; cat++) {\n //Positive numbers\n for (var nr = nrlower; nr < nrupper; nr++) {\n category[32767 + nr] = cat;\n bitcode[32767 + nr] = [];\n bitcode[32767 + nr][1] = cat;\n bitcode[32767 + nr][0] = nr;\n }\n //Negative numbers\n for (var nrneg = -(nrupper - 1); nrneg <= -nrlower; nrneg++) {\n category[32767 + nrneg] = cat;\n bitcode[32767 + nrneg] = [];\n bitcode[32767 + nrneg][1] = cat;\n bitcode[32767 + nrneg][0] = nrupper - 1 + nrneg;\n }\n nrlower <<= 1;\n nrupper <<= 1;\n }\n }\n\n function initRGBYUVTable() {\n for (var i = 0; i < 256; i++) {\n RGB_YUV_TABLE[i] = 19595 * i;\n RGB_YUV_TABLE[(i + 256) >> 0] = 38470 * i;\n RGB_YUV_TABLE[(i + 512) >> 0] = 7471 * i + 0x8000;\n RGB_YUV_TABLE[(i + 768) >> 0] = -11059 * i;\n RGB_YUV_TABLE[(i + 1024) >> 0] = -21709 * i;\n RGB_YUV_TABLE[(i + 1280) >> 0] = 32768 * i + 0x807fff;\n RGB_YUV_TABLE[(i + 1536) >> 0] = -27439 * i;\n RGB_YUV_TABLE[(i + 1792) >> 0] = -5329 * i;\n }\n }\n\n // IO functions\n function writeBits(bs) {\n var value = bs[0];\n var posval = bs[1] - 1;\n while (posval >= 0) {\n if (value & (1 << posval)) {\n bytenew |= 1 << bytepos;\n }\n posval--;\n bytepos--;\n if (bytepos < 0) {\n if (bytenew == 0xff) {\n writeByte(0xff);\n writeByte(0);\n } else {\n writeByte(bytenew);\n }\n bytepos = 7;\n bytenew = 0;\n }\n }\n }\n\n function writeByte(value) {\n //byteout.push(clt[value]); // write char directly instead of converting later\n byteout.push(value);\n }\n\n function writeWord(value) {\n writeByte((value >> 8) & 0xff);\n writeByte(value & 0xff);\n }\n\n // DCT & quantization core\n function fDCTQuant(data, fdtbl) {\n var d0, d1, d2, d3, d4, d5, d6, d7;\n /* Pass 1: process rows. */\n var dataOff = 0;\n var i;\n var I8 = 8;\n var I64 = 64;\n for (i = 0; i < I8; ++i) {\n d0 = data[dataOff];\n d1 = data[dataOff + 1];\n d2 = data[dataOff + 2];\n d3 = data[dataOff + 3];\n d4 = data[dataOff + 4];\n d5 = data[dataOff + 5];\n d6 = data[dataOff + 6];\n d7 = data[dataOff + 7];\n\n var tmp0 = d0 + d7;\n var tmp7 = d0 - d7;\n var tmp1 = d1 + d6;\n var tmp6 = d1 - d6;\n var tmp2 = d2 + d5;\n var tmp5 = d2 - d5;\n var tmp3 = d3 + d4;\n var tmp4 = d3 - d4;\n\n /* Even part */\n var tmp10 = tmp0 + tmp3; /* phase 2 */\n var tmp13 = tmp0 - tmp3;\n var tmp11 = tmp1 + tmp2;\n var tmp12 = tmp1 - tmp2;\n\n data[dataOff] = tmp10 + tmp11; /* phase 3 */\n data[dataOff + 4] = tmp10 - tmp11;\n\n var z1 = (tmp12 + tmp13) * 0.707106781; /* c4 */\n data[dataOff + 2] = tmp13 + z1; /* phase 5 */\n data[dataOff + 6] = tmp13 - z1;\n\n /* Odd part */\n tmp10 = tmp4 + tmp5; /* phase 2 */\n tmp11 = tmp5 + tmp6;\n tmp12 = tmp6 + tmp7;\n\n /* The rotator is modified from fig 4-8 to avoid extra negations. */\n var z5 = (tmp10 - tmp12) * 0.382683433; /* c6 */\n var z2 = 0.5411961 * tmp10 + z5; /* c2-c6 */\n var z4 = 1.306562965 * tmp12 + z5; /* c2+c6 */\n var z3 = tmp11 * 0.707106781; /* c4 */\n\n var z11 = tmp7 + z3; /* phase 5 */\n var z13 = tmp7 - z3;\n\n data[dataOff + 5] = z13 + z2; /* phase 6 */\n data[dataOff + 3] = z13 - z2;\n data[dataOff + 1] = z11 + z4;\n data[dataOff + 7] = z11 - z4;\n\n dataOff += 8; /* advance pointer to next row */\n }\n\n /* Pass 2: process columns. */\n dataOff = 0;\n for (i = 0; i < I8; ++i) {\n d0 = data[dataOff];\n d1 = data[dataOff + 8];\n d2 = data[dataOff + 16];\n d3 = data[dataOff + 24];\n d4 = data[dataOff + 32];\n d5 = data[dataOff + 40];\n d6 = data[dataOff + 48];\n d7 = data[dataOff + 56];\n\n var tmp0p2 = d0 + d7;\n var tmp7p2 = d0 - d7;\n var tmp1p2 = d1 + d6;\n var tmp6p2 = d1 - d6;\n var tmp2p2 = d2 + d5;\n var tmp5p2 = d2 - d5;\n var tmp3p2 = d3 + d4;\n var tmp4p2 = d3 - d4;\n\n /* Even part */\n var tmp10p2 = tmp0p2 + tmp3p2; /* phase 2 */\n var tmp13p2 = tmp0p2 - tmp3p2;\n var tmp11p2 = tmp1p2 + tmp2p2;\n var tmp12p2 = tmp1p2 - tmp2p2;\n\n data[dataOff] = tmp10p2 + tmp11p2; /* phase 3 */\n data[dataOff + 32] = tmp10p2 - tmp11p2;\n\n var z1p2 = (tmp12p2 + tmp13p2) * 0.707106781; /* c4 */\n data[dataOff + 16] = tmp13p2 + z1p2; /* phase 5 */\n data[dataOff + 48] = tmp13p2 - z1p2;\n\n /* Odd part */\n tmp10p2 = tmp4p2 + tmp5p2; /* phase 2 */\n tmp11p2 = tmp5p2 + tmp6p2;\n tmp12p2 = tmp6p2 + tmp7p2;\n\n /* The rotator is modified from fig 4-8 to avoid extra negations. */\n var z5p2 = (tmp10p2 - tmp12p2) * 0.382683433; /* c6 */\n var z2p2 = 0.5411961 * tmp10p2 + z5p2; /* c2-c6 */\n var z4p2 = 1.306562965 * tmp12p2 + z5p2; /* c2+c6 */\n var z3p2 = tmp11p2 * 0.707106781; /* c4 */\n\n var z11p2 = tmp7p2 + z3p2; /* phase 5 */\n var z13p2 = tmp7p2 - z3p2;\n\n data[dataOff + 40] = z13p2 + z2p2; /* phase 6 */\n data[dataOff + 24] = z13p2 - z2p2;\n data[dataOff + 8] = z11p2 + z4p2;\n data[dataOff + 56] = z11p2 - z4p2;\n\n dataOff++; /* advance pointer to next column */\n }\n\n // Quantize/descale the coefficients\n var fDCTQuant;\n for (i = 0; i < I64; ++i) {\n // Apply the quantization and scaling factor & Round to nearest integer\n fDCTQuant = data[i] * fdtbl[i];\n outputfDCTQuant[i] =\n fDCTQuant > 0.0 ? (fDCTQuant + 0.5) | 0 : (fDCTQuant - 0.5) | 0;\n //outputfDCTQuant[i] = fround(fDCTQuant);\n }\n return outputfDCTQuant;\n }\n\n function writeAPP0() {\n writeWord(0xffe0); // marker\n writeWord(16); // length\n writeByte(0x4a); // J\n writeByte(0x46); // F\n writeByte(0x49); // I\n writeByte(0x46); // F\n writeByte(0); // = \"JFIF\",'\\0'\n writeByte(1); // versionhi\n writeByte(1); // versionlo\n writeByte(0); // xyunits\n writeWord(1); // xdensity\n writeWord(1); // ydensity\n writeByte(0); // thumbnwidth\n writeByte(0); // thumbnheight\n }\n\n function writeSOF0(width, height) {\n writeWord(0xffc0); // marker\n writeWord(17); // length, truecolor YUV JPG\n writeByte(8); // precision\n writeWord(height);\n writeWord(width);\n writeByte(3); // nrofcomponents\n writeByte(1); // IdY\n writeByte(0x11); // HVY\n writeByte(0); // QTY\n writeByte(2); // IdU\n writeByte(0x11); // HVU\n writeByte(1); // QTU\n writeByte(3); // IdV\n writeByte(0x11); // HVV\n writeByte(1); // QTV\n }\n\n function writeDQT() {\n writeWord(0xffdb); // marker\n writeWord(132); // length\n writeByte(0);\n for (var i = 0; i < 64; i++) {\n writeByte(YTable[i]);\n }\n writeByte(1);\n for (var j = 0; j < 64; j++) {\n writeByte(UVTable[j]);\n }\n }\n\n function writeDHT() {\n writeWord(0xffc4); // marker\n writeWord(0x01a2); // length\n\n writeByte(0); // HTYDCinfo\n for (var i = 0; i < 16; i++) {\n writeByte(std_dc_luminance_nrcodes[i + 1]);\n }\n for (var j = 0; j <= 11; j++) {\n writeByte(std_dc_luminance_values[j]);\n }\n\n writeByte(0x10); // HTYACinfo\n for (var k = 0; k < 16; k++) {\n writeByte(std_ac_luminance_nrcodes[k + 1]);\n }\n for (var l = 0; l <= 161; l++) {\n writeByte(std_ac_luminance_values[l]);\n }\n\n writeByte(1); // HTUDCinfo\n for (var m = 0; m < 16; m++) {\n writeByte(std_dc_chrominance_nrcodes[m + 1]);\n }\n for (var n = 0; n <= 11; n++) {\n writeByte(std_dc_chrominance_values[n]);\n }\n\n writeByte(0x11); // HTUACinfo\n for (var o = 0; o < 16; o++) {\n writeByte(std_ac_chrominance_nrcodes[o + 1]);\n }\n for (var p = 0; p <= 161; p++) {\n writeByte(std_ac_chrominance_values[p]);\n }\n }\n\n function writeSOS() {\n writeWord(0xffda); // marker\n writeWord(12); // length\n writeByte(3); // nrofcomponents\n writeByte(1); // IdY\n writeByte(0); // HTY\n writeByte(2); // IdU\n writeByte(0x11); // HTU\n writeByte(3); // IdV\n writeByte(0x11); // HTV\n writeByte(0); // Ss\n writeByte(0x3f); // Se\n writeByte(0); // Bf\n }\n\n function processDU(CDU, fdtbl, DC, HTDC, HTAC) {\n var EOB = HTAC[0x00];\n var M16zeroes = HTAC[0xf0];\n var pos;\n var I16 = 16;\n var I63 = 63;\n var I64 = 64;\n var DU_DCT = fDCTQuant(CDU, fdtbl);\n //ZigZag reorder\n for (var j = 0; j < I64; ++j) {\n DU[ZigZag[j]] = DU_DCT[j];\n }\n var Diff = DU[0] - DC;\n DC = DU[0];\n //Encode DC\n if (Diff == 0) {\n writeBits(HTDC[0]); // Diff might be 0\n } else {\n pos = 32767 + Diff;\n writeBits(HTDC[category[pos]]);\n writeBits(bitcode[pos]);\n }\n //Encode ACs\n var end0pos = 63; // was const... which is crazy\n while (end0pos > 0 && DU[end0pos] == 0) {\n end0pos--;\n }\n //end0pos = first element in reverse order !=0\n if (end0pos == 0) {\n writeBits(EOB);\n return DC;\n }\n var i = 1;\n var lng;\n while (i <= end0pos) {\n var startpos = i;\n while (DU[i] == 0 && i <= end0pos) {\n ++i;\n }\n var nrzeroes = i - startpos;\n if (nrzeroes >= I16) {\n lng = nrzeroes >> 4;\n for (var nrmarker = 1; nrmarker <= lng; ++nrmarker)\n writeBits(M16zeroes);\n nrzeroes = nrzeroes & 0xf;\n }\n pos = 32767 + DU[i];\n writeBits(HTAC[(nrzeroes << 4) + category[pos]]);\n writeBits(bitcode[pos]);\n i++;\n }\n if (end0pos != I63) {\n writeBits(EOB);\n }\n return DC;\n }\n\n function initCharLookupTable() {\n var sfcc = String.fromCharCode;\n for (var i = 0; i < 256; i++) {\n ///// ACHTUNG // 255\n clt[i] = sfcc(i);\n }\n }\n\n this.encode = function(\n image,\n quality // image data object\n ) {\n if (quality) setQuality(quality);\n\n // Initialize bit writer\n byteout = new Array();\n bytenew = 0;\n bytepos = 7;\n\n // Add JPEG headers\n writeWord(0xffd8); // SOI\n writeAPP0();\n writeDQT();\n writeSOF0(image.width, image.height);\n writeDHT();\n writeSOS();\n\n // Encode 8x8 macroblocks\n var DCY = 0;\n var DCU = 0;\n var DCV = 0;\n\n bytenew = 0;\n bytepos = 7;\n\n this.encode.displayName = \"_encode_\";\n\n var imageData = image.data;\n var width = image.width;\n var height = image.height;\n\n var quadWidth = width * 4;\n\n var x,\n y = 0;\n var r, g, b;\n var start, p, col, row, pos;\n while (y < height) {\n x = 0;\n while (x < quadWidth) {\n start = quadWidth * y + x;\n col = -1;\n row = 0;\n\n for (pos = 0; pos < 64; pos++) {\n row = pos >> 3; // /8\n col = (pos & 7) * 4; // %8\n p = start + row * quadWidth + col;\n\n if (y + row >= height) {\n // padding bottom\n p -= quadWidth * (y + 1 + row - height);\n }\n\n if (x + col >= quadWidth) {\n // padding right\n p -= x + col - quadWidth + 4;\n }\n\n r = imageData[p++];\n g = imageData[p++];\n b = imageData[p++];\n\n /* // calculate YUV values dynamically\n\t\t\t\t\tYDU[pos]=((( 0.29900)*r+( 0.58700)*g+( 0.11400)*b))-128; //-0x80\n\t\t\t\t\tUDU[pos]=(((-0.16874)*r+(-0.33126)*g+( 0.50000)*b));\n\t\t\t\t\tVDU[pos]=((( 0.50000)*r+(-0.41869)*g+(-0.08131)*b));\n\t\t\t\t\t*/\n\n // use lookup table (slightly faster)\n YDU[pos] =\n ((RGB_YUV_TABLE[r] +\n RGB_YUV_TABLE[(g + 256) >> 0] +\n RGB_YUV_TABLE[(b + 512) >> 0]) >>\n 16) -\n 128;\n UDU[pos] =\n ((RGB_YUV_TABLE[(r + 768) >> 0] +\n RGB_YUV_TABLE[(g + 1024) >> 0] +\n RGB_YUV_TABLE[(b + 1280) >> 0]) >>\n 16) -\n 128;\n VDU[pos] =\n ((RGB_YUV_TABLE[(r + 1280) >> 0] +\n RGB_YUV_TABLE[(g + 1536) >> 0] +\n RGB_YUV_TABLE[(b + 1792) >> 0]) >>\n 16) -\n 128;\n }\n\n DCY = processDU(YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT);\n DCU = processDU(UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT);\n DCV = processDU(VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT);\n x += 32;\n }\n y += 8;\n }\n\n ////////////////////////////////////////////////////////////////\n\n // Do the bit alignment of the EOI marker\n if (bytepos >= 0) {\n var fillbits = [];\n fillbits[1] = bytepos + 1;\n fillbits[0] = (1 << (bytepos + 1)) - 1;\n writeBits(fillbits);\n }\n\n writeWord(0xffd9); //EOI\n\n return new Uint8Array(byteout);\n };\n\n function setQuality(quality) {\n quality = Math.min(Math.max(quality, 1), 100);\n\n if (currentQuality == quality) return; // don't recalc if unchanged\n\n var sf =\n quality < 50 ? Math.floor(5000 / quality) : Math.floor(200 - quality * 2);\n\n initQuantTables(sf);\n currentQuality = quality;\n //console.log('Quality set to: '+quality +'%');\n }\n\n function init() {\n quality = quality || 50;\n // Create tables\n initCharLookupTable();\n initHuffmanTbl();\n initCategoryNumber();\n initRGBYUVTable();\n\n setQuality(quality);\n }\n init();\n}\n\nexport { JPEGEncoder };\n","/**\n * @author shaozilee\n *\n * Bmp format decoder,support 1bit 4bit 8bit 24bit bmp\n *\n */\n\nimport { console } from \"./console.js\";\n\nfunction BmpDecoder(buffer, is_with_alpha) {\n this.pos = 0;\n this.buffer = buffer;\n this.datav = new DataView(buffer.buffer);\n this.is_with_alpha = !!is_with_alpha;\n this.bottom_up = true;\n this.flag =\n String.fromCharCode(this.buffer[0]) + String.fromCharCode(this.buffer[1]);\n this.pos += 2;\n if ([\"BM\", \"BA\", \"CI\", \"CP\", \"IC\", \"PT\"].indexOf(this.flag) === -1)\n throw new Error(\"Invalid BMP File\");\n this.parseHeader();\n this.parseBGR();\n}\n\nBmpDecoder.prototype.parseHeader = function() {\n this.fileSize = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.reserved = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.offset = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.headerSize = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.width = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.height = this.datav.getInt32(this.pos, true);\n this.pos += 4;\n this.planes = this.datav.getUint16(this.pos, true);\n this.pos += 2;\n this.bitPP = this.datav.getUint16(this.pos, true);\n this.pos += 2;\n this.compress = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.rawSize = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.hr = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.vr = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.colors = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.importantColors = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n\n if (this.bitPP === 16 && this.is_with_alpha) {\n this.bitPP = 15;\n }\n if (this.bitPP < 15) {\n var len = this.colors === 0 ? 1 << this.bitPP : this.colors;\n this.palette = new Array(len);\n for (var i = 0; i < len; i++) {\n var blue = this.datav.getUint8(this.pos++, true);\n var green = this.datav.getUint8(this.pos++, true);\n var red = this.datav.getUint8(this.pos++, true);\n var quad = this.datav.getUint8(this.pos++, true);\n this.palette[i] = {\n red: red,\n green: green,\n blue: blue,\n quad: quad\n };\n }\n }\n if (this.height < 0) {\n this.height *= -1;\n this.bottom_up = false;\n }\n};\n\nBmpDecoder.prototype.parseBGR = function() {\n this.pos = this.offset;\n try {\n var bitn = \"bit\" + this.bitPP;\n var len = this.width * this.height * 4;\n this.data = new Uint8Array(len);\n\n this[bitn]();\n } catch (e) {\n console.log(\"bit decode error:\" + e);\n }\n};\n\nBmpDecoder.prototype.bit1 = function() {\n var xlen = Math.ceil(this.width / 8);\n var mode = xlen % 4;\n var y;\n for (y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < xlen; x++) {\n var b = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 8 * 4;\n for (var i = 0; i < 8; i++) {\n if (x * 8 + i < this.width) {\n var rgb = this.palette[(b >> (7 - i)) & 0x1];\n this.data[location + i * 4] = rgb.blue;\n this.data[location + i * 4 + 1] = rgb.green;\n this.data[location + i * 4 + 2] = rgb.red;\n this.data[location + i * 4 + 3] = 0xff;\n } else {\n break;\n }\n }\n }\n\n if (mode !== 0) {\n this.pos += 4 - mode;\n }\n }\n};\n\nBmpDecoder.prototype.bit4 = function() {\n var xlen = Math.ceil(this.width / 2);\n var mode = xlen % 4;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < xlen; x++) {\n var b = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 2 * 4;\n\n var before = b >> 4;\n var after = b & 0x0f;\n\n var rgb = this.palette[before];\n this.data[location] = rgb.blue;\n this.data[location + 1] = rgb.green;\n this.data[location + 2] = rgb.red;\n this.data[location + 3] = 0xff;\n\n if (x * 2 + 1 >= this.width) break;\n\n rgb = this.palette[after];\n this.data[location + 4] = rgb.blue;\n this.data[location + 4 + 1] = rgb.green;\n this.data[location + 4 + 2] = rgb.red;\n this.data[location + 4 + 3] = 0xff;\n }\n\n if (mode !== 0) {\n this.pos += 4 - mode;\n }\n }\n};\n\nBmpDecoder.prototype.bit8 = function() {\n var mode = this.width % 4;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var b = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 4;\n if (b < this.palette.length) {\n var rgb = this.palette[b];\n this.data[location] = rgb.red;\n this.data[location + 1] = rgb.green;\n this.data[location + 2] = rgb.blue;\n this.data[location + 3] = 0xff;\n } else {\n this.data[location] = 0xff;\n this.data[location + 1] = 0xff;\n this.data[location + 2] = 0xff;\n this.data[location + 3] = 0xff;\n }\n }\n if (mode !== 0) {\n this.pos += 4 - mode;\n }\n }\n};\n\nBmpDecoder.prototype.bit15 = function() {\n var dif_w = this.width % 3;\n var _11111 = parseInt(\"11111\", 2),\n _1_5 = _11111;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var B = this.datav.getUint16(this.pos, true);\n this.pos += 2;\n var blue = (((B & _1_5) / _1_5) * 255) | 0;\n var green = ((((B >> 5) & _1_5) / _1_5) * 255) | 0;\n var red = ((((B >> 10) & _1_5) / _1_5) * 255) | 0;\n var alpha = B >> 15 ? 0xff : 0x00;\n\n var location = line * this.width * 4 + x * 4;\n this.data[location] = red;\n this.data[location + 1] = green;\n this.data[location + 2] = blue;\n this.data[location + 3] = alpha;\n }\n //skip extra bytes\n this.pos += dif_w;\n }\n};\n\nBmpDecoder.prototype.bit16 = function() {\n var dif_w = this.width % 3;\n var _11111 = parseInt(\"11111\", 2),\n _1_5 = _11111;\n var _111111 = parseInt(\"111111\", 2),\n _1_6 = _111111;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var B = this.datav.getUint16(this.pos, true);\n this.pos += 2;\n var alpha = 0xff;\n var blue = (((B & _1_5) / _1_5) * 255) | 0;\n var green = ((((B >> 5) & _1_6) / _1_6) * 255) | 0;\n var red = (((B >> 11) / _1_5) * 255) | 0;\n\n var location = line * this.width * 4 + x * 4;\n this.data[location] = red;\n this.data[location + 1] = green;\n this.data[location + 2] = blue;\n this.data[location + 3] = alpha;\n }\n //skip extra bytes\n this.pos += dif_w;\n }\n};\n\nBmpDecoder.prototype.bit24 = function() {\n //when height > 0\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var blue = this.datav.getUint8(this.pos++, true);\n var green = this.datav.getUint8(this.pos++, true);\n var red = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 4;\n this.data[location] = red;\n this.data[location + 1] = green;\n this.data[location + 2] = blue;\n this.data[location + 3] = 0xff;\n }\n //skip extra bytes\n this.pos += this.width % 4;\n }\n};\n\n/**\n * add 32bit decode func\n * @author soubok\n */\nBmpDecoder.prototype.bit32 = function() {\n //when height > 0\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var blue = this.datav.getUint8(this.pos++, true);\n var green = this.datav.getUint8(this.pos++, true);\n var red = this.datav.getUint8(this.pos++, true);\n var alpha = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 4;\n this.data[location] = red;\n this.data[location + 1] = green;\n this.data[location + 2] = blue;\n this.data[location + 3] = alpha;\n }\n //skip extra bytes\n //this.pos += (this.width % 4);\n }\n};\n\nBmpDecoder.prototype.getData = function() {\n return this.data;\n};\n\nexport { BmpDecoder };\n","function WebPDecoder(imageData) {\n /** @license\n * Copyright 2011 Google Inc.\n *\n * This code is licensed under the same terms as WebM:\n * Software License Agreement: http://www.webmproject.org/license/software/\n * Additional IP Rights Grant: http://www.webmproject.org/license/additional/\n * -----------------------------------------------------------------------------\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * -----------------------------------------------------------------------------\n *\n * Copyright 2011-2017 Dominik Homberger\n * Libwebp Javascript / libwebpjs - the libwebp implementation in javascript (v0.6.0)\n *\n * Author: Dominik Homberger (dominik.homberger@gmail.com)\n */\n\n var self = this;\n var UpsampleRgbLinePair,\n UpsampleBgrLinePair,\n UpsampleRgbaLinePair,\n UpsampleBgraLinePair,\n UpsampleArgbLinePair,\n UpsampleArgbLinePair,\n UpsampleRgba4444LinePair,\n UpsampleRgb565LinePair;\n\n function x(F) {\n if (!F) throw Error(\"assert :P\");\n }\n function fa(F, L, J) {\n for (var H = 0; 4 > H; H++) if (F[L + H] != J.charCodeAt(H)) return !0;\n return !1;\n }\n function I(F, L, J, H, Z) {\n for (var O = 0; O < Z; O++) F[L + O] = J[H + O];\n }\n function M(F, L, J, H) {\n for (var Z = 0; Z < H; Z++) F[L + Z] = J;\n }\n function V(F) {\n return new Int32Array(F);\n }\n function wa(F, L) {\n for (var J = [], H = 0; H < F; H++) J.push(new L());\n return J;\n }\n function wb() {\n function F(J, H, Z) {\n for (var O = Z[H], L = 0; L < O; L++) {\n J.push(Z.length > H + 1 ? [] : 0);\n if (Z.length < H + 1) break;\n F(J[L], H + 1, Z);\n }\n }\n var L = [];\n F(L, 0, [3, 11]);\n return L;\n }\n function Ed(F, L) {\n function J(H, O, F) {\n for (var Z = F[O], ma = 0; ma < Z; ma++) {\n H.push(F.length > O + 1 ? [] : new L());\n if (F.length < O + 1) break;\n J(H[ma], O + 1, F);\n }\n }\n var H = [];\n J(H, 0, F);\n return H;\n }\n var _WebPDecoder = function() {\n var self = this;\n function F() {\n V(55);\n }\n function L(a, b) {\n for (var c = (1 << (b - 1)) >>> 0; a & c; ) c >>>= 1;\n return c ? (a & (c - 1)) + c : a;\n }\n function J(a, b, c, d, e) {\n x(!(d % c));\n do (d -= c), (a[b + d] = e);\n while (0 < d);\n }\n function H(a, b, c, d, e, f) {\n var g = b,\n h = 1 << c,\n k,\n l,\n m = V(16),\n n = V(16);\n x(0 != e);\n x(null != d);\n x(null != a);\n x(0 < c);\n for (l = 0; l < e; ++l) {\n if (15 < d[l]) return 0;\n ++m[d[l]];\n }\n if (m[0] == e) return 0;\n n[1] = 0;\n for (k = 1; 15 > k; ++k) {\n if (m[k] > 1 << k) return 0;\n n[k + 1] = n[k] + m[k];\n }\n for (l = 0; l < e; ++l) (k = d[l]), 0 < d[l] && (f[n[k]++] = l);\n if (1 == n[15])\n return (d = new O()), (d.g = 0), (d.value = f[0]), J(a, g, 1, h, d), h;\n var r = -1,\n q = h - 1,\n t = 0,\n v = 1,\n p = 1,\n u,\n w = 1 << c;\n l = 0;\n k = 1;\n for (e = 2; k <= c; ++k, e <<= 1) {\n p <<= 1;\n v += p;\n p -= m[k];\n if (0 > p) return 0;\n for (; 0 < m[k]; --m[k])\n (d = new O()),\n (d.g = k),\n (d.value = f[l++]),\n J(a, g + t, e, w, d),\n (t = L(t, k));\n }\n k = c + 1;\n for (e = 2; 15 >= k; ++k, e <<= 1) {\n p <<= 1;\n v += p;\n p -= m[k];\n if (0 > p) return 0;\n for (; 0 < m[k]; --m[k]) {\n d = new O();\n if ((t & q) != r) {\n g += w;\n r = k;\n for (u = 1 << (r - c); 15 > r; ) {\n u -= m[r];\n if (0 >= u) break;\n ++r;\n u <<= 1;\n }\n u = r - c;\n w = 1 << u;\n h += w;\n r = t & q;\n a[b + r].g = u + c;\n a[b + r].value = g - b - r;\n }\n d.g = k - c;\n d.value = f[l++];\n J(a, g + (t >> c), e, w, d);\n t = L(t, k);\n }\n }\n return v != 2 * n[15] - 1 ? 0 : h;\n }\n function Z(a, b, c, d, e) {\n x(2328 >= e);\n if (512 >= e) var f = V(512);\n else if (((f = V(e)), null == f)) return 0;\n return H(a, b, c, d, e, f);\n }\n function O() {\n this.value = this.g = 0;\n }\n function Fd() {\n this.value = this.g = 0;\n }\n function Ub() {\n this.G = wa(5, O);\n this.H = V(5);\n this.jc = this.Qb = this.qb = this.nd = 0;\n this.pd = wa(xb, Fd);\n }\n function ma(a, b, c, d) {\n x(null != a);\n x(null != b);\n x(2147483648 > d);\n a.Ca = 254;\n a.I = 0;\n a.b = -8;\n a.Ka = 0;\n a.oa = b;\n a.pa = c;\n a.Jd = b;\n a.Yc = c + d;\n a.Zc = 4 <= d ? c + d - 4 + 1 : c;\n Qa(a);\n }\n function na(a, b) {\n for (var c = 0; 0 < b--; ) c |= K(a, 128) << b;\n return c;\n }\n function ca(a, b) {\n var c = na(a, b);\n return G(a) ? -c : c;\n }\n function cb(a, b, c, d) {\n var e,\n f = 0;\n x(null != a);\n x(null != b);\n x(4294967288 > d);\n a.Sb = d;\n a.Ra = 0;\n a.u = 0;\n a.h = 0;\n 4 < d && (d = 4);\n for (e = 0; e < d; ++e) f += b[c + e] << (8 * e);\n a.Ra = f;\n a.bb = d;\n a.oa = b;\n a.pa = c;\n }\n function Vb(a) {\n for (; 8 <= a.u && a.bb < a.Sb; )\n (a.Ra >>>= 8),\n (a.Ra += (a.oa[a.pa + a.bb] << (ob - 8)) >>> 0),\n ++a.bb,\n (a.u -= 8);\n db(a) && ((a.h = 1), (a.u = 0));\n }\n function D(a, b) {\n x(0 <= b);\n if (!a.h && b <= Gd) {\n var c = pb(a) & Hd[b];\n a.u += b;\n Vb(a);\n return c;\n }\n a.h = 1;\n return (a.u = 0);\n }\n function Wb() {\n this.b = this.Ca = this.I = 0;\n this.oa = [];\n this.pa = 0;\n this.Jd = [];\n this.Yc = 0;\n this.Zc = [];\n this.Ka = 0;\n }\n function Ra() {\n this.Ra = 0;\n this.oa = [];\n this.h = this.u = this.bb = this.Sb = this.pa = 0;\n }\n function pb(a) {\n return (a.Ra >>> (a.u & (ob - 1))) >>> 0;\n }\n function db(a) {\n x(a.bb <= a.Sb);\n return a.h || (a.bb == a.Sb && a.u > ob);\n }\n function qb(a, b) {\n a.u = b;\n a.h = db(a);\n }\n function Sa(a) {\n a.u >= Xb && (x(a.u >= Xb), Vb(a));\n }\n function Qa(a) {\n x(null != a && null != a.oa);\n a.pa < a.Zc\n ? ((a.I = (a.oa[a.pa++] | (a.I << 8)) >>> 0), (a.b += 8))\n : (x(null != a && null != a.oa),\n a.pa < a.Yc\n ? ((a.b += 8), (a.I = a.oa[a.pa++] | (a.I << 8)))\n : a.Ka\n ? (a.b = 0)\n : ((a.I <<= 8), (a.b += 8), (a.Ka = 1)));\n }\n function G(a) {\n return na(a, 1);\n }\n function K(a, b) {\n var c = a.Ca;\n 0 > a.b && Qa(a);\n var d = a.b,\n e = (c * b) >>> 8,\n f = (a.I >>> d > e) + 0;\n f ? ((c -= e), (a.I -= ((e + 1) << d) >>> 0)) : (c = e + 1);\n d = c;\n for (e = 0; 256 <= d; ) (e += 8), (d >>= 8);\n d = 7 ^ (e + Id[d]);\n a.b -= d;\n a.Ca = (c << d) - 1;\n return f;\n }\n function ra(a, b, c) {\n a[b + 0] = (c >> 24) & 255;\n a[b + 1] = (c >> 16) & 255;\n a[b + 2] = (c >> 8) & 255;\n a[b + 3] = (c >> 0) & 255;\n }\n function Ta(a, b) {\n return (a[b + 0] << 0) | (a[b + 1] << 8);\n }\n function Yb(a, b) {\n return Ta(a, b) | (a[b + 2] << 16);\n }\n function Ha(a, b) {\n return Ta(a, b) | (Ta(a, b + 2) << 16);\n }\n function Zb(a, b) {\n var c = 1 << b;\n x(null != a);\n x(0 < b);\n a.X = V(c);\n if (null == a.X) return 0;\n a.Mb = 32 - b;\n a.Xa = b;\n return 1;\n }\n function $b(a, b) {\n x(null != a);\n x(null != b);\n x(a.Xa == b.Xa);\n I(b.X, 0, a.X, 0, 1 << b.Xa);\n }\n function ac() {\n this.X = [];\n this.Xa = this.Mb = 0;\n }\n function bc(a, b, c, d) {\n x(null != c);\n x(null != d);\n var e = c[0],\n f = d[0];\n 0 == e && (e = (a * f + b / 2) / b);\n 0 == f && (f = (b * e + a / 2) / a);\n if (0 >= e || 0 >= f) return 0;\n c[0] = e;\n d[0] = f;\n return 1;\n }\n function xa(a, b) {\n return (a + (1 << b) - 1) >>> b;\n }\n function yb(a, b) {\n return (\n (((((a & 4278255360) + (b & 4278255360)) >>> 0) & 4278255360) +\n ((((a & 16711935) + (b & 16711935)) >>> 0) & 16711935)) >>>\n 0\n );\n }\n function X(a, b) {\n self[b] = function(b, d, e, f, g, h, k) {\n var c;\n for (c = 0; c < g; ++c) {\n var m = self[a](h[k + c - 1], e, f + c);\n h[k + c] = yb(b[d + c], m);\n }\n };\n }\n function Jd() {\n this.ud = this.hd = this.jd = 0;\n }\n function aa(a, b) {\n return ((((a ^ b) & 4278124286) >>> 1) + (a & b)) >>> 0;\n }\n function sa(a) {\n if (0 <= a && 256 > a) return a;\n if (0 > a) return 0;\n if (255 < a) return 255;\n }\n function eb(a, b) {\n return sa(a + ((a - b + 0.5) >> 1));\n }\n function Ia(a, b, c) {\n return Math.abs(b - c) - Math.abs(a - c);\n }\n function cc(a, b, c, d, e, f, g) {\n d = f[g - 1];\n for (c = 0; c < e; ++c) f[g + c] = d = yb(a[b + c], d);\n }\n function Kd(a, b, c, d, e) {\n var f;\n for (f = 0; f < c; ++f) {\n var g = a[b + f],\n h = (g >> 8) & 255,\n k = g & 16711935,\n k = k + ((h << 16) + h),\n k = k & 16711935;\n d[e + f] = ((g & 4278255360) + k) >>> 0;\n }\n }\n function dc(a, b) {\n b.jd = (a >> 0) & 255;\n b.hd = (a >> 8) & 255;\n b.ud = (a >> 16) & 255;\n }\n function Ld(a, b, c, d, e, f) {\n var g;\n for (g = 0; g < d; ++g) {\n var h = b[c + g],\n k = h >>> 8,\n l = h >>> 16,\n m = h,\n l = l + ((((a.jd << 24) >> 24) * ((k << 24) >> 24)) >>> 5),\n l = l & 255,\n m = m + ((((a.hd << 24) >> 24) * ((k << 24) >> 24)) >>> 5),\n m = m + ((((a.ud << 24) >> 24) * ((l << 24) >> 24)) >>> 5),\n m = m & 255;\n e[f + g] = (h & 4278255360) + (l << 16) + m;\n }\n }\n function ec(a, b, c, d, e) {\n self[b] = function(a, b, c, k, l, m, n, r, q) {\n for (k = n; k < r; ++k)\n for (n = 0; n < q; ++n) l[m++] = e(c[d(a[b++])]);\n };\n self[a] = function(a, b, h, k, l, m, n) {\n var f = 8 >> a.b,\n g = a.Ea,\n t = a.K[0],\n v = a.w;\n if (8 > f)\n for (a = (1 << a.b) - 1, v = (1 << f) - 1; b < h; ++b) {\n var p = 0,\n u;\n for (u = 0; u < g; ++u)\n u & a || (p = d(k[l++])), (m[n++] = e(t[p & v])), (p >>= f);\n }\n else self[\"VP8LMapColor\" + c](k, l, t, v, m, n, b, h, g);\n };\n }\n function Md(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++];\n d[e++] = (f >> 16) & 255;\n d[e++] = (f >> 8) & 255;\n d[e++] = (f >> 0) & 255;\n }\n }\n function Nd(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++];\n d[e++] = (f >> 16) & 255;\n d[e++] = (f >> 8) & 255;\n d[e++] = (f >> 0) & 255;\n d[e++] = (f >> 24) & 255;\n }\n }\n function Od(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++],\n g = ((f >> 16) & 240) | ((f >> 12) & 15),\n f = ((f >> 0) & 240) | ((f >> 28) & 15);\n d[e++] = g;\n d[e++] = f;\n }\n }\n function Pd(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++],\n g = ((f >> 16) & 248) | ((f >> 13) & 7),\n f = ((f >> 5) & 224) | ((f >> 3) & 31);\n d[e++] = g;\n d[e++] = f;\n }\n }\n function Qd(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++];\n d[e++] = (f >> 0) & 255;\n d[e++] = (f >> 8) & 255;\n d[e++] = (f >> 16) & 255;\n }\n }\n function fb(a, b, c, d, e, f) {\n if (0 == f)\n for (c = b + c; b < c; )\n (f = a[b++]),\n ra(\n d,\n ((f[0] >> 24) |\n ((f[1] >> 8) & 65280) |\n ((f[2] << 8) & 16711680) |\n (f[3] << 24)) >>>\n 0\n ),\n (e += 32);\n else I(d, e, a, b, c);\n }\n function gb(a, b) {\n self[b][0] = self[a + \"0\"];\n self[b][1] = self[a + \"1\"];\n self[b][2] = self[a + \"2\"];\n self[b][3] = self[a + \"3\"];\n self[b][4] = self[a + \"4\"];\n self[b][5] = self[a + \"5\"];\n self[b][6] = self[a + \"6\"];\n self[b][7] = self[a + \"7\"];\n self[b][8] = self[a + \"8\"];\n self[b][9] = self[a + \"9\"];\n self[b][10] = self[a + \"10\"];\n self[b][11] = self[a + \"11\"];\n self[b][12] = self[a + \"12\"];\n self[b][13] = self[a + \"13\"];\n self[b][14] = self[a + \"0\"];\n self[b][15] = self[a + \"0\"];\n }\n function hb(a) {\n return a == zb || a == Ab || a == Ja || a == Bb;\n }\n function Rd() {\n this.eb = [];\n this.size = this.A = this.fb = 0;\n }\n function Sd() {\n this.y = [];\n this.f = [];\n this.ea = [];\n this.F = [];\n this.Tc = this.Ed = this.Cd = this.Fd = this.lb = this.Db = this.Ab = this.fa = this.J = this.W = this.N = this.O = 0;\n }\n function Cb() {\n this.Rd = this.height = this.width = this.S = 0;\n this.f = {};\n this.f.RGBA = new Rd();\n this.f.kb = new Sd();\n this.sd = null;\n }\n function Td() {\n this.width = [0];\n this.height = [0];\n this.Pd = [0];\n this.Qd = [0];\n this.format = [0];\n }\n function Ud() {\n this.Id = this.fd = this.Md = this.hb = this.ib = this.da = this.bd = this.cd = this.j = this.v = this.Da = this.Sd = this.ob = 0;\n }\n function Vd(a) {\n alert(\"todo:WebPSamplerProcessPlane\");\n return a.T;\n }\n function Wd(a, b) {\n var c = a.T,\n d = b.ba.f.RGBA,\n e = d.eb,\n f = d.fb + a.ka * d.A,\n g = P[b.ba.S],\n h = a.y,\n k = a.O,\n l = a.f,\n m = a.N,\n n = a.ea,\n r = a.W,\n q = b.cc,\n t = b.dc,\n v = b.Mc,\n p = b.Nc,\n u = a.ka,\n w = a.ka + a.T,\n y = a.U,\n A = (y + 1) >> 1;\n 0 == u\n ? g(h, k, null, null, l, m, n, r, l, m, n, r, e, f, null, null, y)\n : (g(b.ec, b.fc, h, k, q, t, v, p, l, m, n, r, e, f - d.A, e, f, y),\n ++c);\n for (; u + 2 < w; u += 2)\n (q = l),\n (t = m),\n (v = n),\n (p = r),\n (m += a.Rc),\n (r += a.Rc),\n (f += 2 * d.A),\n (k += 2 * a.fa),\n g(h, k - a.fa, h, k, q, t, v, p, l, m, n, r, e, f - d.A, e, f, y);\n k += a.fa;\n a.j + w < a.o\n ? (I(b.ec, b.fc, h, k, y),\n I(b.cc, b.dc, l, m, A),\n I(b.Mc, b.Nc, n, r, A),\n c--)\n : w & 1 ||\n g(\n h,\n k,\n null,\n null,\n l,\n m,\n n,\n r,\n l,\n m,\n n,\n r,\n e,\n f + d.A,\n null,\n null,\n y\n );\n return c;\n }\n function Xd(a, b, c) {\n var d = a.F,\n e = [a.J];\n if (null != d) {\n var f = a.U,\n g = b.ba.S,\n h = g == ya || g == Ja;\n b = b.ba.f.RGBA;\n var k = [0],\n l = a.ka;\n k[0] = a.T;\n a.Kb &&\n (0 == l ? --k[0] : (--l, (e[0] -= a.width)),\n a.j + a.ka + a.T == a.o && (k[0] = a.o - a.j - l));\n var m = b.eb,\n l = b.fb + l * b.A;\n a = fc(d, e[0], a.width, f, k, m, l + (h ? 0 : 3), b.A);\n x(c == k);\n a && hb(g) && za(m, l, h, f, k, b.A);\n }\n return 0;\n }\n function gc(a) {\n var b = a.ma,\n c = b.ba.S,\n d = 11 > c,\n e = c == Ua || c == Va || c == ya || c == Db || 12 == c || hb(c);\n b.memory = null;\n b.Ib = null;\n b.Jb = null;\n b.Nd = null;\n if (!hc(b.Oa, a, e ? 11 : 12)) return 0;\n e && hb(c) && ic();\n if (a.da) alert(\"todo:use_scaling\");\n else {\n if (d) {\n if (((b.Ib = Vd), a.Kb)) {\n c = (a.U + 1) >> 1;\n b.memory = V(a.U + 2 * c);\n if (null == b.memory) return 0;\n b.ec = b.memory;\n b.fc = 0;\n b.cc = b.ec;\n b.dc = b.fc + a.U;\n b.Mc = b.cc;\n b.Nc = b.dc + c;\n b.Ib = Wd;\n ic();\n }\n } else alert(\"todo:EmitYUV\");\n e && ((b.Jb = Xd), d && Aa());\n }\n if (d && !jc) {\n for (a = 0; 256 > a; ++a)\n (Yd[a] = (89858 * (a - 128) + Ba) >> Wa),\n (Zd[a] = -22014 * (a - 128) + Ba),\n ($d[a] = -45773 * (a - 128)),\n (ae[a] = (113618 * (a - 128) + Ba) >> Wa);\n for (a = ta; a < Eb; ++a)\n (b = (76283 * (a - 16) + Ba) >> Wa),\n (be[a - ta] = ga(b, 255)),\n (ce[a - ta] = ga((b + 8) >> 4, 15));\n jc = 1;\n }\n return 1;\n }\n function kc(a) {\n var b = a.ma,\n c = a.U,\n d = a.T;\n x(!(a.ka & 1));\n if (0 >= c || 0 >= d) return 0;\n c = b.Ib(a, b);\n null != b.Jb && b.Jb(a, b, c);\n b.Dc += c;\n return 1;\n }\n function lc(a) {\n a.ma.memory = null;\n }\n function mc(a, b, c, d) {\n if (47 != D(a, 8)) return 0;\n b[0] = D(a, 14) + 1;\n c[0] = D(a, 14) + 1;\n d[0] = D(a, 1);\n return 0 != D(a, 3) ? 0 : !a.h;\n }\n function ib(a, b) {\n if (4 > a) return a + 1;\n var c = (a - 2) >> 1;\n return ((2 + (a & 1)) << c) + D(b, c) + 1;\n }\n function nc(a, b) {\n if (120 < b) return b - 120;\n var c = de[b - 1],\n c = (c >> 4) * a + (8 - (c & 15));\n return 1 <= c ? c : 1;\n }\n function ua(a, b, c) {\n var d = pb(c);\n b += d & 255;\n var e = a[b].g - 8;\n 0 < e &&\n (qb(c, c.u + 8),\n (d = pb(c)),\n (b += a[b].value),\n (b += d & ((1 << e) - 1)));\n qb(c, c.u + a[b].g);\n return a[b].value;\n }\n function ub(a, b, c) {\n c.g += a.g;\n c.value += (a.value << b) >>> 0;\n x(8 >= c.g);\n return a.g;\n }\n function ha(a, b, c) {\n var d = a.xc;\n b = 0 == d ? 0 : a.vc[a.md * (c >> d) + (b >> d)];\n x(b < a.Wb);\n return a.Ya[b];\n }\n function oc(a, b, c, d) {\n var e = a.ab,\n f = a.c * b,\n g = a.C;\n b = g + b;\n var h = c,\n k = d;\n d = a.Ta;\n for (c = a.Ua; 0 < e--; ) {\n var l = a.gc[e],\n m = g,\n n = b,\n r = h,\n q = k,\n k = d,\n h = c,\n t = l.Ea;\n x(m < n);\n x(n <= l.nc);\n switch (l.hc) {\n case 2:\n pc(r, q, (n - m) * t, k, h);\n break;\n case 0:\n var v = l,\n p = m,\n u = n,\n w = k,\n y = h,\n A = v.Ea;\n 0 == p &&\n (ee(r, q, null, null, 1, w, y),\n cc(r, q + 1, 0, 0, A - 1, w, y + 1),\n (q += A),\n (y += A),\n ++p);\n for (\n var E = 1 << v.b,\n B = E - 1,\n C = xa(A, v.b),\n N = v.K,\n v = v.w + (p >> v.b) * C;\n p < u;\n\n ) {\n var z = N,\n Q = v,\n S = 1;\n for (fe(r, q, w, y - A, 1, w, y); S < A; ) {\n var K = qc[(z[Q++] >> 8) & 15],\n D = (S & ~B) + E;\n D > A && (D = A);\n K(r, q + +S, w, y + S - A, D - S, w, y + S);\n S = D;\n }\n q += A;\n y += A;\n ++p;\n p & B || (v += C);\n }\n n != l.nc && I(k, h - t, k, h + (n - m - 1) * t, t);\n break;\n case 1:\n t = r;\n u = q;\n r = l.Ea;\n q = 1 << l.b;\n w = q - 1;\n y = r & ~w;\n A = r - y;\n p = xa(r, l.b);\n E = l.K;\n for (l = l.w + (m >> l.b) * p; m < n; ) {\n B = E;\n C = l;\n N = new Jd();\n v = u + y;\n for (z = u + r; u < v; )\n dc(B[C++], N), Fb(N, t, u, q, k, h), (u += q), (h += q);\n u < z &&\n (dc(B[C++], N), Fb(N, t, u, A, k, h), (u += A), (h += A));\n ++m;\n m & w || (l += p);\n }\n break;\n case 3:\n if (r == k && q == h && 0 < l.b) {\n y = (n - m) * xa(l.Ea, l.b);\n t = h + (n - m) * t - y;\n u = k;\n r = t;\n q = k;\n w = h;\n A = y;\n p = [];\n for (y = A - 1; 0 <= y; --y) p[y] = q[w + y];\n for (y = A - 1; 0 <= y; --y) u[r + y] = p[y];\n rc(l, m, n, k, t, k, h);\n } else rc(l, m, n, r, q, k, h);\n }\n h = d;\n k = c;\n }\n k != c && I(d, c, h, k, f);\n }\n function ge(a, b) {\n var c = a.V,\n d = a.Ba + a.c * a.C,\n e = b - a.C;\n x(b <= a.l.o);\n x(16 >= e);\n if (0 < e) {\n var f = a.l,\n g = a.Ta,\n h = a.Ua,\n k = f.width;\n oc(a, e, c, d);\n h = [h];\n c = a.C;\n d = b;\n e = h;\n x(c < d);\n x(f.v < f.va);\n d > f.o && (d = f.o);\n if (c < f.j) {\n var l = f.j - c,\n c = f.j;\n e[0] += l * k;\n }\n c >= d\n ? (c = 0)\n : ((e[0] += 4 * f.v),\n (f.ka = c - f.j),\n (f.U = f.va - f.v),\n (f.T = d - c),\n (c = 1));\n if (c) {\n h = h[0];\n c = a.ca;\n if (11 > c.S) {\n for (\n var m = c.f.RGBA,\n d = c.S,\n e = f.U,\n f = f.T,\n l = m.eb,\n n = m.A,\n r = f,\n m = m.fb + a.Ma * m.A;\n 0 < r--;\n\n ) {\n var q = g,\n t = h,\n v = e,\n p = l,\n u = m;\n switch (d) {\n case Ca:\n sc(q, t, v, p, u);\n break;\n case Ua:\n Gb(q, t, v, p, u);\n break;\n case zb:\n Gb(q, t, v, p, u);\n za(p, u, 0, v, 1, 0);\n break;\n case tc:\n uc(q, t, v, p, u);\n break;\n case Va:\n fb(q, t, v, p, u, 1);\n break;\n case Ab:\n fb(q, t, v, p, u, 1);\n za(p, u, 0, v, 1, 0);\n break;\n case ya:\n fb(q, t, v, p, u, 0);\n break;\n case Ja:\n fb(q, t, v, p, u, 0);\n za(p, u, 1, v, 1, 0);\n break;\n case Db:\n Hb(q, t, v, p, u);\n break;\n case Bb:\n Hb(q, t, v, p, u);\n vc(p, u, v, 1, 0);\n break;\n case wc:\n xc(q, t, v, p, u);\n break;\n default:\n x(0);\n }\n h += k;\n m += n;\n }\n a.Ma += f;\n } else alert(\"todo:EmitRescaledRowsYUVA\");\n x(a.Ma <= c.height);\n }\n }\n a.C = b;\n x(a.C <= a.i);\n }\n function yc(a) {\n var b;\n if (0 < a.ua) return 0;\n for (b = 0; b < a.Wb; ++b) {\n var c = a.Ya[b].G,\n d = a.Ya[b].H;\n if (\n 0 < c[1][d[1] + 0].g ||\n 0 < c[2][d[2] + 0].g ||\n 0 < c[3][d[3] + 0].g\n )\n return 0;\n }\n return 1;\n }\n function zc(a, b, c, d, e, f) {\n if (0 != a.Z) {\n var g = a.qd,\n h = a.rd;\n for (x(null != ia[a.Z]); b < c; ++b)\n ia[a.Z](g, h, d, e, d, e, f), (g = d), (h = e), (e += f);\n a.qd = g;\n a.rd = h;\n }\n }\n function Ib(a, b) {\n var c = a.l.ma,\n d = 0 == c.Z || 1 == c.Z ? a.l.j : a.C,\n d = a.C < d ? d : a.C;\n x(b <= a.l.o);\n if (b > d) {\n var e = a.l.width,\n f = c.ca,\n g = c.tb + e * d,\n h = a.V,\n k = a.Ba + a.c * d,\n l = a.gc;\n x(1 == a.ab);\n x(3 == l[0].hc);\n he(l[0], d, b, h, k, f, g);\n zc(c, d, b, f, g, e);\n }\n a.C = a.Ma = b;\n }\n function Jb(a, b, c, d, e, f, g) {\n var h = a.$ / d,\n k = a.$ % d,\n l = a.m,\n m = a.s,\n n = c + a.$,\n r = n;\n e = c + d * e;\n var q = c + d * f,\n t = 280 + m.ua,\n v = a.Pb ? h : 16777216,\n p = 0 < m.ua ? m.Wa : null,\n u = m.wc,\n w = n < q ? ha(m, k, h) : null;\n x(a.C < f);\n x(q <= e);\n var y = !1;\n a: for (;;) {\n for (; y || n < q; ) {\n var A = 0;\n if (h >= v) {\n var v = a,\n E = n - c;\n x(v.Pb);\n v.wd = v.m;\n v.xd = E;\n 0 < v.s.ua && $b(v.s.Wa, v.s.vb);\n v = h + ie;\n }\n k & u || (w = ha(m, k, h));\n x(null != w);\n w.Qb && ((b[n] = w.qb), (y = !0));\n if (!y)\n if ((Sa(l), w.jc)) {\n var A = l,\n E = b,\n B = n,\n C = w.pd[pb(A) & (xb - 1)];\n x(w.jc);\n 256 > C.g\n ? (qb(A, A.u + C.g), (E[B] = C.value), (A = 0))\n : (qb(A, A.u + C.g - 256), x(256 <= C.value), (A = C.value));\n 0 == A && (y = !0);\n } else A = ua(w.G[0], w.H[0], l);\n if (l.h) break;\n if (y || 256 > A) {\n if (!y)\n if (w.nd) b[n] = (w.qb | (A << 8)) >>> 0;\n else {\n Sa(l);\n y = ua(w.G[1], w.H[1], l);\n Sa(l);\n E = ua(w.G[2], w.H[2], l);\n B = ua(w.G[3], w.H[3], l);\n if (l.h) break;\n b[n] = ((B << 24) | (y << 16) | (A << 8) | E) >>> 0;\n }\n y = !1;\n ++n;\n ++k;\n if (\n k >= d &&\n ((k = 0),\n ++h,\n null != g && h <= f && !(h % 16) && g(a, h),\n null != p)\n )\n for (; r < n; )\n (A = b[r++]),\n (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n } else if (280 > A) {\n A = ib(A - 256, l);\n E = ua(w.G[4], w.H[4], l);\n Sa(l);\n E = ib(E, l);\n E = nc(d, E);\n if (l.h) break;\n if (n - c < E || e - n < A) break a;\n else for (B = 0; B < A; ++B) b[n + B] = b[n + B - E];\n n += A;\n for (k += A; k >= d; )\n (k -= d), ++h, null != g && h <= f && !(h % 16) && g(a, h);\n x(n <= e);\n k & u && (w = ha(m, k, h));\n if (null != p)\n for (; r < n; )\n (A = b[r++]),\n (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n } else if (A < t) {\n y = A - 280;\n for (x(null != p); r < n; )\n (A = b[r++]), (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n A = n;\n E = p;\n x(!(y >>> E.Xa));\n b[A] = E.X[y];\n y = !0;\n } else break a;\n y || x(l.h == db(l));\n }\n if (a.Pb && l.h && n < e)\n x(a.m.h),\n (a.a = 5),\n (a.m = a.wd),\n (a.$ = a.xd),\n 0 < a.s.ua && $b(a.s.vb, a.s.Wa);\n else if (l.h) break a;\n else null != g && g(a, h > f ? f : h), (a.a = 0), (a.$ = n - c);\n return 1;\n }\n a.a = 3;\n return 0;\n }\n function Ac(a) {\n x(null != a);\n a.vc = null;\n a.yc = null;\n a.Ya = null;\n var b = a.Wa;\n null != b && (b.X = null);\n a.vb = null;\n x(null != a);\n }\n function Bc() {\n var a = new je();\n if (null == a) return null;\n a.a = 0;\n a.xb = Cc;\n gb(\"Predictor\", \"VP8LPredictors\");\n gb(\"Predictor\", \"VP8LPredictors_C\");\n gb(\"PredictorAdd\", \"VP8LPredictorsAdd\");\n gb(\"PredictorAdd\", \"VP8LPredictorsAdd_C\");\n pc = Kd;\n Fb = Ld;\n sc = Md;\n Gb = Nd;\n Hb = Od;\n xc = Pd;\n uc = Qd;\n self.VP8LMapColor32b = ke;\n self.VP8LMapColor8b = le;\n return a;\n }\n function rb(a, b, c, d, e) {\n var f = 1,\n g = [a],\n h = [b],\n k = d.m,\n l = d.s,\n m = null,\n n = 0;\n a: for (;;) {\n if (c)\n for (; f && D(k, 1); ) {\n var r = g,\n q = h,\n t = d,\n v = 1,\n p = t.m,\n u = t.gc[t.ab],\n w = D(p, 2);\n if (t.Oc & (1 << w)) f = 0;\n else {\n t.Oc |= 1 << w;\n u.hc = w;\n u.Ea = r[0];\n u.nc = q[0];\n u.K = [null];\n ++t.ab;\n x(4 >= t.ab);\n switch (w) {\n case 0:\n case 1:\n u.b = D(p, 3) + 2;\n v = rb(xa(u.Ea, u.b), xa(u.nc, u.b), 0, t, u.K);\n u.K = u.K[0];\n break;\n case 3:\n var y = D(p, 8) + 1,\n A = 16 < y ? 0 : 4 < y ? 1 : 2 < y ? 2 : 3;\n r[0] = xa(u.Ea, A);\n u.b = A;\n var v = rb(y, 1, 0, t, u.K),\n E;\n if ((E = v)) {\n var B,\n C = y,\n N = u,\n z = 1 << (8 >> N.b),\n Q = V(z);\n if (null == Q) E = 0;\n else {\n var S = N.K[0],\n K = N.w;\n Q[0] = N.K[0][0];\n for (B = 1; B < 1 * C; ++B) Q[B] = yb(S[K + B], Q[B - 1]);\n for (; B < 4 * z; ++B) Q[B] = 0;\n N.K[0] = null;\n N.K[0] = Q;\n E = 1;\n }\n }\n v = E;\n break;\n case 2:\n break;\n default:\n x(0);\n }\n f = v;\n }\n }\n g = g[0];\n h = h[0];\n if (f && D(k, 1) && ((n = D(k, 4)), (f = 1 <= n && 11 >= n), !f)) {\n d.a = 3;\n break a;\n }\n var H;\n if ((H = f))\n b: {\n var F = d,\n G = g,\n L = h,\n J = n,\n T = c,\n Da,\n ba,\n X = F.m,\n R = F.s,\n P = [null],\n U,\n W = 1,\n aa = 0,\n na = me[J];\n c: for (;;) {\n if (T && D(X, 1)) {\n var ca = D(X, 3) + 2,\n ga = xa(G, ca),\n ka = xa(L, ca),\n qa = ga * ka;\n if (!rb(ga, ka, 0, F, P)) break c;\n P = P[0];\n R.xc = ca;\n for (Da = 0; Da < qa; ++Da) {\n var ia = (P[Da] >> 8) & 65535;\n P[Da] = ia;\n ia >= W && (W = ia + 1);\n }\n }\n if (X.h) break c;\n for (ba = 0; 5 > ba; ++ba) {\n var Y = Dc[ba];\n !ba && 0 < J && (Y += 1 << J);\n aa < Y && (aa = Y);\n }\n var ma = wa(W * na, O);\n var ua = W,\n va = wa(ua, Ub);\n if (null == va) var la = null;\n else x(65536 >= ua), (la = va);\n var ha = V(aa);\n if (null == la || null == ha || null == ma) {\n F.a = 1;\n break c;\n }\n var pa = ma;\n for (Da = U = 0; Da < W; ++Da) {\n var ja = la[Da],\n da = ja.G,\n ea = ja.H,\n Fa = 0,\n ra = 1,\n Ha = 0;\n for (ba = 0; 5 > ba; ++ba) {\n Y = Dc[ba];\n da[ba] = pa;\n ea[ba] = U;\n !ba && 0 < J && (Y += 1 << J);\n d: {\n var sa,\n za = Y,\n ta = F,\n oa = ha,\n db = pa,\n eb = U,\n Ia = 0,\n Ka = ta.m,\n fb = D(Ka, 1);\n M(oa, 0, 0, za);\n if (fb) {\n var gb = D(Ka, 1) + 1,\n hb = D(Ka, 1),\n Ja = D(Ka, 0 == hb ? 1 : 8);\n oa[Ja] = 1;\n 2 == gb && ((Ja = D(Ka, 8)), (oa[Ja] = 1));\n var ya = 1;\n } else {\n var Ua = V(19),\n Va = D(Ka, 4) + 4;\n if (19 < Va) {\n ta.a = 3;\n var Aa = 0;\n break d;\n }\n for (sa = 0; sa < Va; ++sa) Ua[ne[sa]] = D(Ka, 3);\n var Ba = void 0,\n sb = void 0,\n Wa = ta,\n ib = Ua,\n Ca = za,\n Xa = oa,\n Oa = 0,\n La = Wa.m,\n Ya = 8,\n Za = wa(128, O);\n e: for (;;) {\n if (!Z(Za, 0, 7, ib, 19)) break e;\n if (D(La, 1)) {\n var kb = 2 + 2 * D(La, 3),\n Ba = 2 + D(La, kb);\n if (Ba > Ca) break e;\n } else Ba = Ca;\n for (sb = 0; sb < Ca && Ba--; ) {\n Sa(La);\n var $a = Za[0 + (pb(La) & 127)];\n qb(La, La.u + $a.g);\n var jb = $a.value;\n if (16 > jb) (Xa[sb++] = jb), 0 != jb && (Ya = jb);\n else {\n var lb = 16 == jb,\n ab = jb - 16,\n mb = oe[ab],\n bb = D(La, pe[ab]) + mb;\n if (sb + bb > Ca) break e;\n else\n for (var nb = lb ? Ya : 0; 0 < bb--; )\n Xa[sb++] = nb;\n }\n }\n Oa = 1;\n break e;\n }\n Oa || (Wa.a = 3);\n ya = Oa;\n }\n (ya = ya && !Ka.h) && (Ia = Z(db, eb, 8, oa, za));\n ya && 0 != Ia ? (Aa = Ia) : ((ta.a = 3), (Aa = 0));\n }\n if (0 == Aa) break c;\n ra && 1 == qe[ba] && (ra = 0 == pa[U].g);\n Fa += pa[U].g;\n U += Aa;\n if (3 >= ba) {\n var Pa = ha[0],\n tb;\n for (tb = 1; tb < Y; ++tb) ha[tb] > Pa && (Pa = ha[tb]);\n Ha += Pa;\n }\n }\n ja.nd = ra;\n ja.Qb = 0;\n ra &&\n ((ja.qb =\n ((da[3][ea[3] + 0].value << 24) |\n (da[1][ea[1] + 0].value << 16) |\n da[2][ea[2] + 0].value) >>>\n 0),\n 0 == Fa &&\n 256 > da[0][ea[0] + 0].value &&\n ((ja.Qb = 1), (ja.qb += da[0][ea[0] + 0].value << 8)));\n ja.jc = !ja.Qb && 6 > Ha;\n if (ja.jc) {\n var Ga,\n Ea = ja;\n for (Ga = 0; Ga < xb; ++Ga) {\n var Ma = Ga,\n Na = Ea.pd[Ma],\n vb = Ea.G[0][Ea.H[0] + Ma];\n 256 <= vb.value\n ? ((Na.g = vb.g + 256), (Na.value = vb.value))\n : ((Na.g = 0),\n (Na.value = 0),\n (Ma >>= ub(vb, 8, Na)),\n (Ma >>= ub(Ea.G[1][Ea.H[1] + Ma], 16, Na)),\n (Ma >>= ub(Ea.G[2][Ea.H[2] + Ma], 0, Na)),\n ub(Ea.G[3][Ea.H[3] + Ma], 24, Na));\n }\n }\n }\n R.vc = P;\n R.Wb = W;\n R.Ya = la;\n R.yc = ma;\n H = 1;\n break b;\n }\n H = 0;\n }\n f = H;\n if (!f) {\n d.a = 3;\n break a;\n }\n if (0 < n) {\n if (((l.ua = 1 << n), !Zb(l.Wa, n))) {\n d.a = 1;\n f = 0;\n break a;\n }\n } else l.ua = 0;\n var Qa = d,\n cb = g,\n ob = h,\n Ra = Qa.s,\n Ta = Ra.xc;\n Qa.c = cb;\n Qa.i = ob;\n Ra.md = xa(cb, Ta);\n Ra.wc = 0 == Ta ? -1 : (1 << Ta) - 1;\n if (c) {\n d.xb = re;\n break a;\n }\n m = V(g * h);\n if (null == m) {\n d.a = 1;\n f = 0;\n break a;\n }\n f = (f = Jb(d, m, 0, g, h, h, null)) && !k.h;\n break a;\n }\n f\n ? (null != e ? (e[0] = m) : (x(null == m), x(c)), (d.$ = 0), c || Ac(l))\n : Ac(l);\n return f;\n }\n function Ec(a, b) {\n var c = a.c * a.i,\n d = c + b + 16 * b;\n x(a.c <= b);\n a.V = V(d);\n if (null == a.V) return (a.Ta = null), (a.Ua = 0), (a.a = 1), 0;\n a.Ta = a.V;\n a.Ua = a.Ba + c + b;\n return 1;\n }\n function se(a, b) {\n var c = a.C,\n d = b - c,\n e = a.V,\n f = a.Ba + a.c * c;\n for (x(b <= a.l.o); 0 < d; ) {\n var g = 16 < d ? 16 : d,\n h = a.l.ma,\n k = a.l.width,\n l = k * g,\n m = h.ca,\n n = h.tb + k * c,\n r = a.Ta,\n q = a.Ua;\n oc(a, g, e, f);\n Fc(r, q, m, n, l);\n zc(h, c, c + g, m, n, k);\n d -= g;\n e += g * a.c;\n c += g;\n }\n x(c == b);\n a.C = a.Ma = b;\n }\n function te(a, b) {\n var c = [0],\n d = [0],\n e = [0];\n a: for (;;) {\n if (null == a) return 0;\n if (null == b) return (a.a = 2), 0;\n a.l = b;\n a.a = 0;\n cb(a.m, b.data, b.w, b.ha);\n if (!mc(a.m, c, d, e)) {\n a.a = 3;\n break a;\n }\n a.xb = Cc;\n b.width = c[0];\n b.height = d[0];\n if (!rb(c[0], d[0], 1, a, null)) break a;\n return 1;\n }\n x(0 != a.a);\n return 0;\n }\n function ue() {\n this.ub = this.yd = this.td = this.Rb = 0;\n }\n function ve() {\n this.Kd = this.Ld = this.Ud = this.Td = this.i = this.c = 0;\n }\n function we() {\n this.Fb = this.Bb = this.Cb = 0;\n this.Zb = V(4);\n this.Lb = V(4);\n }\n function Gc() {\n this.Yb = wb();\n }\n function xe() {\n this.jb = V(3);\n this.Wc = Ed([4, 8], Gc);\n this.Xc = Ed([4, 17], Gc);\n }\n function ye() {\n this.Pc = this.wb = this.Tb = this.zd = 0;\n this.vd = new V(4);\n this.od = new V(4);\n }\n function Xa() {\n this.ld = this.La = this.dd = this.tc = 0;\n }\n function Hc() {\n this.Na = this.la = 0;\n }\n function ze() {\n this.Sc = [0, 0];\n this.Eb = [0, 0];\n this.Qc = [0, 0];\n this.ia = this.lc = 0;\n }\n function Kb() {\n this.ad = V(384);\n this.Za = 0;\n this.Ob = V(16);\n this.$b = this.Ad = this.ia = this.Gc = this.Hc = this.Dd = 0;\n }\n function Ae() {\n this.uc = this.M = this.Nb = 0;\n this.wa = Array(new Xa());\n this.Y = 0;\n this.ya = Array(new Kb());\n this.aa = 0;\n this.l = new Oa();\n }\n function Ic() {\n this.y = V(16);\n this.f = V(8);\n this.ea = V(8);\n }\n function Be() {\n this.cb = this.a = 0;\n this.sc = \"\";\n this.m = new Wb();\n this.Od = new ue();\n this.Kc = new ve();\n this.ed = new ye();\n this.Qa = new we();\n this.Ic = this.$c = this.Aa = 0;\n this.D = new Ae();\n this.Xb = this.Va = this.Hb = this.zb = this.yb = this.Ub = this.za = 0;\n this.Jc = wa(8, Wb);\n this.ia = 0;\n new F();\n this.pb = wa(4, ze);\n this.Pa = new xe();\n this.Bd = this.kc = 0;\n this.Ac = [];\n this.Bc = 0;\n this.zc = [0, 0, 0, 0];\n this.Gd = Array(new Ic());\n this.Hd = 0;\n this.rb = Array(new Hc());\n this.sb = 0;\n this.wa = Array(new Xa());\n this.Y = 0;\n this.oc = [];\n this.pc = 0;\n this.sa = [];\n this.ta = 0;\n this.qa = [];\n this.ra = 0;\n this.Ha = [];\n this.B = this.R = this.Ia = 0;\n this.Ec = [];\n this.M = this.ja = this.Vb = this.Fc = 0;\n this.ya = Array(new Kb());\n this.L = this.aa = 0;\n this.gd = Ed([4, 2], Xa);\n this.ga = null;\n this.Fa = [];\n this.Cc = this.qc = this.P = 0;\n this.Gb = [];\n this.Uc = 0;\n this.mb = [];\n this.nb = 0;\n this.rc = [];\n this.Ga = this.Vc = 0;\n }\n function ga(a, b) {\n return 0 > a ? 0 : a > b ? b : a;\n }\n function Oa() {\n this.T = this.U = this.ka = this.height = this.width = 0;\n this.y = [];\n this.f = [];\n this.ea = [];\n this.Rc = this.fa = this.W = this.N = this.O = 0;\n this.ma = \"void\";\n this.put = \"VP8IoPutHook\";\n this.ac = \"VP8IoSetupHook\";\n this.bc = \"VP8IoTeardownHook\";\n this.ha = this.Kb = 0;\n this.data = [];\n this.hb = this.ib = this.da = this.o = this.j = this.va = this.v = this.Da = this.ob = this.w = 0;\n this.F = [];\n this.J = 0;\n }\n function Ce() {\n var a = new Be();\n null != a &&\n ((a.a = 0), (a.sc = \"OK\"), (a.cb = 0), (a.Xb = 0), oa || (oa = De));\n return a;\n }\n function T(a, b, c) {\n 0 == a.a && ((a.a = b), (a.sc = c), (a.cb = 0));\n return 0;\n }\n function Jc(a, b, c) {\n return 3 <= c && 157 == a[b + 0] && 1 == a[b + 1] && 42 == a[b + 2];\n }\n function Kc(a, b) {\n if (null == a) return 0;\n a.a = 0;\n a.sc = \"OK\";\n if (null == b) return T(a, 2, \"null VP8Io passed to VP8GetHeaders()\");\n var c = b.data;\n var d = b.w;\n var e = b.ha;\n if (4 > e) return T(a, 7, \"Truncated header.\");\n var f = c[d + 0] | (c[d + 1] << 8) | (c[d + 2] << 16);\n var g = a.Od;\n g.Rb = !(f & 1);\n g.td = (f >> 1) & 7;\n g.yd = (f >> 4) & 1;\n g.ub = f >> 5;\n if (3 < g.td) return T(a, 3, \"Incorrect keyframe parameters.\");\n if (!g.yd) return T(a, 4, \"Frame not displayable.\");\n d += 3;\n e -= 3;\n var h = a.Kc;\n if (g.Rb) {\n if (7 > e) return T(a, 7, \"cannot parse picture header\");\n if (!Jc(c, d, e)) return T(a, 3, \"Bad code word\");\n h.c = ((c[d + 4] << 8) | c[d + 3]) & 16383;\n h.Td = c[d + 4] >> 6;\n h.i = ((c[d + 6] << 8) | c[d + 5]) & 16383;\n h.Ud = c[d + 6] >> 6;\n d += 7;\n e -= 7;\n a.za = (h.c + 15) >> 4;\n a.Ub = (h.i + 15) >> 4;\n b.width = h.c;\n b.height = h.i;\n b.Da = 0;\n b.j = 0;\n b.v = 0;\n b.va = b.width;\n b.o = b.height;\n b.da = 0;\n b.ib = b.width;\n b.hb = b.height;\n b.U = b.width;\n b.T = b.height;\n f = a.Pa;\n M(f.jb, 0, 255, f.jb.length);\n f = a.Qa;\n x(null != f);\n f.Cb = 0;\n f.Bb = 0;\n f.Fb = 1;\n M(f.Zb, 0, 0, f.Zb.length);\n M(f.Lb, 0, 0, f.Lb);\n }\n if (g.ub > e) return T(a, 7, \"bad partition length\");\n f = a.m;\n ma(f, c, d, g.ub);\n d += g.ub;\n e -= g.ub;\n g.Rb && ((h.Ld = G(f)), (h.Kd = G(f)));\n h = a.Qa;\n var k = a.Pa,\n l;\n x(null != f);\n x(null != h);\n h.Cb = G(f);\n if (h.Cb) {\n h.Bb = G(f);\n if (G(f)) {\n h.Fb = G(f);\n for (l = 0; 4 > l; ++l) h.Zb[l] = G(f) ? ca(f, 7) : 0;\n for (l = 0; 4 > l; ++l) h.Lb[l] = G(f) ? ca(f, 6) : 0;\n }\n if (h.Bb) for (l = 0; 3 > l; ++l) k.jb[l] = G(f) ? na(f, 8) : 255;\n } else h.Bb = 0;\n if (f.Ka) return T(a, 3, \"cannot parse segment header\");\n h = a.ed;\n h.zd = G(f);\n h.Tb = na(f, 6);\n h.wb = na(f, 3);\n h.Pc = G(f);\n if (h.Pc && G(f)) {\n for (k = 0; 4 > k; ++k) G(f) && (h.vd[k] = ca(f, 6));\n for (k = 0; 4 > k; ++k) G(f) && (h.od[k] = ca(f, 6));\n }\n a.L = 0 == h.Tb ? 0 : h.zd ? 1 : 2;\n if (f.Ka) return T(a, 3, \"cannot parse filter header\");\n l = d;\n var m = e;\n e = l;\n d = l + m;\n h = m;\n a.Xb = (1 << na(a.m, 2)) - 1;\n k = a.Xb;\n if (m < 3 * k) c = 7;\n else {\n l += 3 * k;\n h -= 3 * k;\n for (m = 0; m < k; ++m) {\n var n = c[e + 0] | (c[e + 1] << 8) | (c[e + 2] << 16);\n n > h && (n = h);\n ma(a.Jc[+m], c, l, n);\n l += n;\n h -= n;\n e += 3;\n }\n ma(a.Jc[+k], c, l, h);\n c = l < d ? 0 : 5;\n }\n if (0 != c) return T(a, c, \"cannot parse partitions\");\n l = a.m;\n c = na(l, 7);\n e = G(l) ? ca(l, 4) : 0;\n d = G(l) ? ca(l, 4) : 0;\n h = G(l) ? ca(l, 4) : 0;\n k = G(l) ? ca(l, 4) : 0;\n l = G(l) ? ca(l, 4) : 0;\n m = a.Qa;\n for (n = 0; 4 > n; ++n) {\n if (m.Cb) {\n var r = m.Zb[n];\n m.Fb || (r += c);\n } else if (0 < n) {\n a.pb[n] = a.pb[0];\n continue;\n } else r = c;\n var q = a.pb[n];\n q.Sc[0] = Lb[ga(r + e, 127)];\n q.Sc[1] = Mb[ga(r + 0, 127)];\n q.Eb[0] = 2 * Lb[ga(r + d, 127)];\n q.Eb[1] = (101581 * Mb[ga(r + h, 127)]) >> 16;\n 8 > q.Eb[1] && (q.Eb[1] = 8);\n q.Qc[0] = Lb[ga(r + k, 117)];\n q.Qc[1] = Mb[ga(r + l, 127)];\n q.lc = r + l;\n }\n if (!g.Rb) return T(a, 4, \"Not a key frame.\");\n G(f);\n g = a.Pa;\n for (c = 0; 4 > c; ++c) {\n for (e = 0; 8 > e; ++e)\n for (d = 0; 3 > d; ++d)\n for (h = 0; 11 > h; ++h)\n (k = K(f, Ee[c][e][d][h]) ? na(f, 8) : Fe[c][e][d][h]),\n (g.Wc[c][e].Yb[d][h] = k);\n for (e = 0; 17 > e; ++e) g.Xc[c][e] = g.Wc[c][Ge[e]];\n }\n a.kc = G(f);\n a.kc && (a.Bd = na(f, 8));\n return (a.cb = 1);\n }\n function De(a, b, c, d, e, f, g) {\n var h = b[e].Yb[c];\n for (c = 0; 16 > e; ++e) {\n if (!K(a, h[c + 0])) return e;\n for (; !K(a, h[c + 1]); )\n if (((h = b[++e].Yb[0]), (c = 0), 16 == e)) return 16;\n var k = b[e + 1].Yb;\n if (K(a, h[c + 2])) {\n var l = a,\n m = h,\n n = c;\n var r = 0;\n if (K(l, m[n + 3]))\n if (K(l, m[n + 6])) {\n h = 0;\n r = K(l, m[n + 8]);\n m = K(l, m[n + 9 + r]);\n n = 2 * r + m;\n r = 0;\n for (m = He[n]; m[h]; ++h) r += r + K(l, m[h]);\n r += 3 + (8 << n);\n } else\n K(l, m[n + 7])\n ? ((r = 7 + 2 * K(l, 165)), (r += K(l, 145)))\n : (r = 5 + K(l, 159));\n else K(l, m[n + 4]) ? (r = 3 + K(l, m[n + 5])) : (r = 2);\n h = k[2];\n } else (r = 1), (h = k[1]);\n k = g + Ie[e];\n l = a;\n 0 > l.b && Qa(l);\n var m = l.b,\n n = l.Ca >> 1,\n q = (n - (l.I >> m)) >> 31;\n --l.b;\n l.Ca += q;\n l.Ca |= 1;\n l.I -= ((n + 1) & q) << m;\n f[k] = ((r ^ q) - q) * d[(0 < e) + 0];\n }\n return 16;\n }\n function Lc(a) {\n var b = a.rb[a.sb - 1];\n b.la = 0;\n b.Na = 0;\n M(a.zc, 0, 0, a.zc.length);\n a.ja = 0;\n }\n function Je(a, b) {\n for (a.M = 0; a.M < a.Va; ++a.M) {\n var c = a.Jc[a.M & a.Xb],\n d = a.m,\n e = a,\n f;\n for (f = 0; f < e.za; ++f) {\n var g = d;\n var h = e;\n var k = h.Ac,\n l = h.Bc + 4 * f,\n m = h.zc,\n n = h.ya[h.aa + f];\n h.Qa.Bb\n ? (n.$b = K(g, h.Pa.jb[0])\n ? 2 + K(g, h.Pa.jb[2])\n : K(g, h.Pa.jb[1]))\n : (n.$b = 0);\n h.kc && (n.Ad = K(g, h.Bd));\n n.Za = !K(g, 145) + 0;\n if (n.Za) {\n var r = n.Ob,\n q = 0;\n for (h = 0; 4 > h; ++h) {\n var t = m[0 + h];\n var v;\n for (v = 0; 4 > v; ++v) {\n t = Ke[k[l + v]][t];\n for (var p = Mc[K(g, t[0])]; 0 < p; )\n p = Mc[2 * p + K(g, t[p])];\n t = -p;\n k[l + v] = t;\n }\n I(r, q, k, l, 4);\n q += 4;\n m[0 + h] = t;\n }\n } else\n (t = K(g, 156) ? (K(g, 128) ? 1 : 3) : K(g, 163) ? 2 : 0),\n (n.Ob[0] = t),\n M(k, l, t, 4),\n M(m, 0, t, 4);\n n.Dd = K(g, 142) ? (K(g, 114) ? (K(g, 183) ? 1 : 3) : 2) : 0;\n }\n if (e.m.Ka) return T(a, 7, \"Premature end-of-partition0 encountered.\");\n for (; a.ja < a.za; ++a.ja) {\n d = a;\n e = c;\n g = d.rb[d.sb - 1];\n k = d.rb[d.sb + d.ja];\n f = d.ya[d.aa + d.ja];\n if ((l = d.kc ? f.Ad : 0))\n (g.la = k.la = 0),\n f.Za || (g.Na = k.Na = 0),\n (f.Hc = 0),\n (f.Gc = 0),\n (f.ia = 0);\n else {\n var u,\n w,\n g = k,\n k = e,\n l = d.Pa.Xc,\n m = d.ya[d.aa + d.ja],\n n = d.pb[m.$b];\n h = m.ad;\n r = 0;\n q = d.rb[d.sb - 1];\n t = v = 0;\n M(h, r, 0, 384);\n if (m.Za) {\n var y = 0;\n var A = l[3];\n } else {\n p = V(16);\n var E = g.Na + q.Na;\n E = oa(k, l[1], E, n.Eb, 0, p, 0);\n g.Na = q.Na = (0 < E) + 0;\n if (1 < E) Nc(p, 0, h, r);\n else {\n var B = (p[0] + 3) >> 3;\n for (p = 0; 256 > p; p += 16) h[r + p] = B;\n }\n y = 1;\n A = l[0];\n }\n var C = g.la & 15;\n var N = q.la & 15;\n for (p = 0; 4 > p; ++p) {\n var z = N & 1;\n for (B = w = 0; 4 > B; ++B)\n (E = z + (C & 1)),\n (E = oa(k, A, E, n.Sc, y, h, r)),\n (z = E > y),\n (C = (C >> 1) | (z << 7)),\n (w = (w << 2) | (3 < E ? 3 : 1 < E ? 2 : 0 != h[r + 0])),\n (r += 16);\n C >>= 4;\n N = (N >> 1) | (z << 7);\n v = ((v << 8) | w) >>> 0;\n }\n A = C;\n y = N >> 4;\n for (u = 0; 4 > u; u += 2) {\n w = 0;\n C = g.la >> (4 + u);\n N = q.la >> (4 + u);\n for (p = 0; 2 > p; ++p) {\n z = N & 1;\n for (B = 0; 2 > B; ++B)\n (E = z + (C & 1)),\n (E = oa(k, l[2], E, n.Qc, 0, h, r)),\n (z = 0 < E),\n (C = (C >> 1) | (z << 3)),\n (w = (w << 2) | (3 < E ? 3 : 1 < E ? 2 : 0 != h[r + 0])),\n (r += 16);\n C >>= 2;\n N = (N >> 1) | (z << 5);\n }\n t |= w << (4 * u);\n A |= (C << 4) << u;\n y |= (N & 240) << u;\n }\n g.la = A;\n q.la = y;\n m.Hc = v;\n m.Gc = t;\n m.ia = t & 43690 ? 0 : n.ia;\n l = !(v | t);\n }\n 0 < d.L &&\n ((d.wa[d.Y + d.ja] = d.gd[f.$b][f.Za]),\n (d.wa[d.Y + d.ja].La |= !l));\n if (e.Ka) return T(a, 7, \"Premature end-of-file encountered.\");\n }\n Lc(a);\n c = a;\n d = b;\n e = 1;\n f = c.D;\n g = 0 < c.L && c.M >= c.zb && c.M <= c.Va;\n if (0 == c.Aa)\n a: {\n (f.M = c.M), (f.uc = g), Oc(c, f), (e = 1);\n w = c.D;\n f = w.Nb;\n t = Ya[c.L];\n g = t * c.R;\n k = (t / 2) * c.B;\n p = 16 * f * c.R;\n B = 8 * f * c.B;\n l = c.sa;\n m = c.ta - g + p;\n n = c.qa;\n h = c.ra - k + B;\n r = c.Ha;\n q = c.Ia - k + B;\n C = w.M;\n N = 0 == C;\n v = C >= c.Va - 1;\n 2 == c.Aa && Oc(c, w);\n if (w.uc)\n for (E = c, z = E.D.M, x(E.D.uc), w = E.yb; w < E.Hb; ++w) {\n var Q = E;\n y = w;\n A = z;\n var S = Q.D,\n D = S.Nb;\n u = Q.R;\n var S = S.wa[S.Y + y],\n F = Q.sa,\n H = Q.ta + 16 * D * u + 16 * y,\n J = S.dd,\n G = S.tc;\n if (0 != G)\n if ((x(3 <= G), 1 == Q.L))\n 0 < y && Pc(F, H, u, G + 4),\n S.La && Qc(F, H, u, G),\n 0 < A && Rc(F, H, u, G + 4),\n S.La && Sc(F, H, u, G);\n else {\n var L = Q.B,\n O = Q.qa,\n P = Q.ra + 8 * D * L + 8 * y,\n R = Q.Ha,\n Q = Q.Ia + 8 * D * L + 8 * y,\n D = S.ld;\n 0 < y &&\n (Tc(F, H, u, G + 4, J, D),\n Uc(O, P, R, Q, L, G + 4, J, D));\n S.La && (Vc(F, H, u, G, J, D), Wc(O, P, R, Q, L, G, J, D));\n 0 < A &&\n (Xc(F, H, u, G + 4, J, D),\n Yc(O, P, R, Q, L, G + 4, J, D));\n S.La && (Zc(F, H, u, G, J, D), $c(O, P, R, Q, L, G, J, D));\n }\n }\n c.ia && alert(\"todo:DitherRow\");\n if (null != d.put) {\n w = 16 * C;\n C = 16 * (C + 1);\n N\n ? ((d.y = c.sa),\n (d.O = c.ta + p),\n (d.f = c.qa),\n (d.N = c.ra + B),\n (d.ea = c.Ha),\n (d.W = c.Ia + B))\n : ((w -= t),\n (d.y = l),\n (d.O = m),\n (d.f = n),\n (d.N = h),\n (d.ea = r),\n (d.W = q));\n v || (C -= t);\n C > d.o && (C = d.o);\n d.F = null;\n d.J = null;\n if (\n null != c.Fa &&\n 0 < c.Fa.length &&\n w < C &&\n ((d.J = Le(c, d, w, C - w)),\n (d.F = c.mb),\n null == d.F && 0 == d.F.length)\n ) {\n e = T(c, 3, \"Could not decode alpha data.\");\n break a;\n }\n w < d.j &&\n ((t = d.j - w),\n (w = d.j),\n x(!(t & 1)),\n (d.O += c.R * t),\n (d.N += c.B * (t >> 1)),\n (d.W += c.B * (t >> 1)),\n null != d.F && (d.J += d.width * t));\n w < C &&\n ((d.O += d.v),\n (d.N += d.v >> 1),\n (d.W += d.v >> 1),\n null != d.F && (d.J += d.v),\n (d.ka = w - d.j),\n (d.U = d.va - d.v),\n (d.T = C - w),\n (e = d.put(d)));\n }\n f + 1 != c.Ic ||\n v ||\n (I(c.sa, c.ta - g, l, m + 16 * c.R, g),\n I(c.qa, c.ra - k, n, h + 8 * c.B, k),\n I(c.Ha, c.Ia - k, r, q + 8 * c.B, k));\n }\n if (!e) return T(a, 6, \"Output aborted.\");\n }\n return 1;\n }\n function Me(a, b) {\n if (null == a) return 0;\n if (null == b) return T(a, 2, \"NULL VP8Io parameter in VP8Decode().\");\n if (!a.cb && !Kc(a, b)) return 0;\n x(a.cb);\n if (null == b.ac || b.ac(b)) {\n b.ob && (a.L = 0);\n var c = Ya[a.L];\n 2 == a.L\n ? ((a.yb = 0), (a.zb = 0))\n : ((a.yb = (b.v - c) >> 4),\n (a.zb = (b.j - c) >> 4),\n 0 > a.yb && (a.yb = 0),\n 0 > a.zb && (a.zb = 0));\n a.Va = (b.o + 15 + c) >> 4;\n a.Hb = (b.va + 15 + c) >> 4;\n a.Hb > a.za && (a.Hb = a.za);\n a.Va > a.Ub && (a.Va = a.Ub);\n if (0 < a.L) {\n var d = a.ed;\n for (c = 0; 4 > c; ++c) {\n var e;\n if (a.Qa.Cb) {\n var f = a.Qa.Lb[c];\n a.Qa.Fb || (f += d.Tb);\n } else f = d.Tb;\n for (e = 0; 1 >= e; ++e) {\n var g = a.gd[c][e],\n h = f;\n d.Pc && ((h += d.vd[0]), e && (h += d.od[0]));\n h = 0 > h ? 0 : 63 < h ? 63 : h;\n if (0 < h) {\n var k = h;\n 0 < d.wb &&\n ((k = 4 < d.wb ? k >> 2 : k >> 1),\n k > 9 - d.wb && (k = 9 - d.wb));\n 1 > k && (k = 1);\n g.dd = k;\n g.tc = 2 * h + k;\n g.ld = 40 <= h ? 2 : 15 <= h ? 1 : 0;\n } else g.tc = 0;\n g.La = e;\n }\n }\n }\n c = 0;\n } else T(a, 6, \"Frame setup failed\"), (c = a.a);\n if ((c = 0 == c)) {\n if (c) {\n a.$c = 0;\n 0 < a.Aa || (a.Ic = Ne);\n b: {\n c = a.Ic;\n var k = a.za,\n d = 4 * k,\n l = 32 * k,\n m = k + 1,\n n = 0 < a.L ? k * (0 < a.Aa ? 2 : 1) : 0,\n r = (2 == a.Aa ? 2 : 1) * k;\n e = ((3 * (16 * c + Ya[a.L])) / 2) * l;\n f = null != a.Fa && 0 < a.Fa.length ? a.Kc.c * a.Kc.i : 0;\n g = d + 832 + e + f;\n if (g != g) c = 0;\n else {\n if (g > a.Vb) {\n a.Vb = 0;\n a.Ec = V(g);\n a.Fc = 0;\n if (null == a.Ec) {\n c = T(a, 1, \"no memory during frame initialization.\");\n break b;\n }\n a.Vb = g;\n }\n g = a.Ec;\n h = a.Fc;\n a.Ac = g;\n a.Bc = h;\n h += d;\n a.Gd = wa(l, Ic);\n a.Hd = 0;\n a.rb = wa(m + 1, Hc);\n a.sb = 1;\n a.wa = n ? wa(n, Xa) : null;\n a.Y = 0;\n a.D.Nb = 0;\n a.D.wa = a.wa;\n a.D.Y = a.Y;\n 0 < a.Aa && (a.D.Y += k);\n x(!0);\n a.oc = g;\n a.pc = h;\n h += 832;\n a.ya = wa(r, Kb);\n a.aa = 0;\n a.D.ya = a.ya;\n a.D.aa = a.aa;\n 2 == a.Aa && (a.D.aa += k);\n a.R = 16 * k;\n a.B = 8 * k;\n l = Ya[a.L];\n k = l * a.R;\n l = (l / 2) * a.B;\n a.sa = g;\n a.ta = h + k;\n a.qa = a.sa;\n a.ra = a.ta + 16 * c * a.R + l;\n a.Ha = a.qa;\n a.Ia = a.ra + 8 * c * a.B + l;\n a.$c = 0;\n h += e;\n a.mb = f ? g : null;\n a.nb = f ? h : null;\n x(h + f <= a.Fc + a.Vb);\n Lc(a);\n M(a.Ac, a.Bc, 0, d);\n c = 1;\n }\n }\n if (c) {\n b.ka = 0;\n b.y = a.sa;\n b.O = a.ta;\n b.f = a.qa;\n b.N = a.ra;\n b.ea = a.Ha;\n b.Vd = a.Ia;\n b.fa = a.R;\n b.Rc = a.B;\n b.F = null;\n b.J = 0;\n if (!ad) {\n for (c = -255; 255 >= c; ++c) bd[255 + c] = 0 > c ? -c : c;\n for (c = -1020; 1020 >= c; ++c)\n cd[1020 + c] = -128 > c ? -128 : 127 < c ? 127 : c;\n for (c = -112; 112 >= c; ++c)\n dd[112 + c] = -16 > c ? -16 : 15 < c ? 15 : c;\n for (c = -255; 510 >= c; ++c)\n ed[255 + c] = 0 > c ? 0 : 255 < c ? 255 : c;\n ad = 1;\n }\n Nc = Oe;\n Za = Pe;\n Nb = Qe;\n pa = Re;\n Ob = Se;\n fd = Te;\n Xc = Ue;\n Tc = Ve;\n Yc = We;\n Uc = Xe;\n Zc = Ye;\n Vc = Ze;\n $c = $e;\n Wc = af;\n Rc = gd;\n Pc = hd;\n Sc = bf;\n Qc = cf;\n W[0] = df;\n W[1] = ef;\n W[2] = ff;\n W[3] = gf;\n W[4] = hf;\n W[5] = jf;\n W[6] = kf;\n W[7] = lf;\n W[8] = mf;\n W[9] = nf;\n Y[0] = of;\n Y[1] = pf;\n Y[2] = qf;\n Y[3] = rf;\n Y[4] = sf;\n Y[5] = tf;\n Y[6] = uf;\n ka[0] = vf;\n ka[1] = wf;\n ka[2] = xf;\n ka[3] = yf;\n ka[4] = zf;\n ka[5] = Af;\n ka[6] = Bf;\n c = 1;\n } else c = 0;\n }\n c && (c = Je(a, b));\n null != b.bc && b.bc(b);\n c &= 1;\n }\n if (!c) return 0;\n a.cb = 0;\n return c;\n }\n function qa(a, b, c, d, e) {\n e = a[b + c + 32 * d] + (e >> 3);\n a[b + c + 32 * d] = e & -256 ? (0 > e ? 0 : 255) : e;\n }\n function kb(a, b, c, d, e, f) {\n qa(a, b, 0, c, d + e);\n qa(a, b, 1, c, d + f);\n qa(a, b, 2, c, d - f);\n qa(a, b, 3, c, d - e);\n }\n function da(a) {\n return ((20091 * a) >> 16) + a;\n }\n function id(a, b, c, d) {\n var e = 0,\n f;\n var g = V(16);\n for (f = 0; 4 > f; ++f) {\n var h = a[b + 0] + a[b + 8];\n var k = a[b + 0] - a[b + 8];\n var l = ((35468 * a[b + 4]) >> 16) - da(a[b + 12]);\n var m = da(a[b + 4]) + ((35468 * a[b + 12]) >> 16);\n g[e + 0] = h + m;\n g[e + 1] = k + l;\n g[e + 2] = k - l;\n g[e + 3] = h - m;\n e += 4;\n b++;\n }\n for (f = e = 0; 4 > f; ++f)\n (a = g[e + 0] + 4),\n (h = a + g[e + 8]),\n (k = a - g[e + 8]),\n (l = ((35468 * g[e + 4]) >> 16) - da(g[e + 12])),\n (m = da(g[e + 4]) + ((35468 * g[e + 12]) >> 16)),\n qa(c, d, 0, 0, h + m),\n qa(c, d, 1, 0, k + l),\n qa(c, d, 2, 0, k - l),\n qa(c, d, 3, 0, h - m),\n e++,\n (d += 32);\n }\n function Te(a, b, c, d) {\n var e = a[b + 0] + 4,\n f = (35468 * a[b + 4]) >> 16,\n g = da(a[b + 4]),\n h = (35468 * a[b + 1]) >> 16;\n a = da(a[b + 1]);\n kb(c, d, 0, e + g, a, h);\n kb(c, d, 1, e + f, a, h);\n kb(c, d, 2, e - f, a, h);\n kb(c, d, 3, e - g, a, h);\n }\n function Pe(a, b, c, d, e) {\n id(a, b, c, d);\n e && id(a, b + 16, c, d + 4);\n }\n function Qe(a, b, c, d) {\n Za(a, b + 0, c, d, 1);\n Za(a, b + 32, c, d + 128, 1);\n }\n function Re(a, b, c, d) {\n a = a[b + 0] + 4;\n var e;\n for (e = 0; 4 > e; ++e) for (b = 0; 4 > b; ++b) qa(c, d, b, e, a);\n }\n function Se(a, b, c, d) {\n a[b + 0] && pa(a, b + 0, c, d);\n a[b + 16] && pa(a, b + 16, c, d + 4);\n a[b + 32] && pa(a, b + 32, c, d + 128);\n a[b + 48] && pa(a, b + 48, c, d + 128 + 4);\n }\n function Oe(a, b, c, d) {\n var e = V(16),\n f;\n for (f = 0; 4 > f; ++f) {\n var g = a[b + 0 + f] + a[b + 12 + f];\n var h = a[b + 4 + f] + a[b + 8 + f];\n var k = a[b + 4 + f] - a[b + 8 + f];\n var l = a[b + 0 + f] - a[b + 12 + f];\n e[0 + f] = g + h;\n e[8 + f] = g - h;\n e[4 + f] = l + k;\n e[12 + f] = l - k;\n }\n for (f = 0; 4 > f; ++f)\n (a = e[0 + 4 * f] + 3),\n (g = a + e[3 + 4 * f]),\n (h = e[1 + 4 * f] + e[2 + 4 * f]),\n (k = e[1 + 4 * f] - e[2 + 4 * f]),\n (l = a - e[3 + 4 * f]),\n (c[d + 0] = (g + h) >> 3),\n (c[d + 16] = (l + k) >> 3),\n (c[d + 32] = (g - h) >> 3),\n (c[d + 48] = (l - k) >> 3),\n (d += 64);\n }\n function Pb(a, b, c) {\n var d = b - 32,\n e = R,\n f = 255 - a[d - 1],\n g;\n for (g = 0; g < c; ++g) {\n var h = e,\n k = f + a[b - 1],\n l;\n for (l = 0; l < c; ++l) a[b + l] = h[k + a[d + l]];\n b += 32;\n }\n }\n function ef(a, b) {\n Pb(a, b, 4);\n }\n function wf(a, b) {\n Pb(a, b, 8);\n }\n function pf(a, b) {\n Pb(a, b, 16);\n }\n function qf(a, b) {\n var c;\n for (c = 0; 16 > c; ++c) I(a, b + 32 * c, a, b - 32, 16);\n }\n function rf(a, b) {\n var c;\n for (c = 16; 0 < c; --c) M(a, b, a[b - 1], 16), (b += 32);\n }\n function $a(a, b, c) {\n var d;\n for (d = 0; 16 > d; ++d) M(b, c + 32 * d, a, 16);\n }\n function of(a, b) {\n var c = 16,\n d;\n for (d = 0; 16 > d; ++d) c += a[b - 1 + 32 * d] + a[b + d - 32];\n $a(c >> 5, a, b);\n }\n function sf(a, b) {\n var c = 8,\n d;\n for (d = 0; 16 > d; ++d) c += a[b - 1 + 32 * d];\n $a(c >> 4, a, b);\n }\n function tf(a, b) {\n var c = 8,\n d;\n for (d = 0; 16 > d; ++d) c += a[b + d - 32];\n $a(c >> 4, a, b);\n }\n function uf(a, b) {\n $a(128, a, b);\n }\n function z(a, b, c) {\n return (a + 2 * b + c + 2) >> 2;\n }\n function ff(a, b) {\n var c = b - 32,\n c = new Uint8Array([\n z(a[c - 1], a[c + 0], a[c + 1]),\n z(a[c + 0], a[c + 1], a[c + 2]),\n z(a[c + 1], a[c + 2], a[c + 3]),\n z(a[c + 2], a[c + 3], a[c + 4])\n ]),\n d;\n for (d = 0; 4 > d; ++d) I(a, b + 32 * d, c, 0, c.length);\n }\n function gf(a, b) {\n var c = a[b - 1],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 + 96];\n ra(a, b + 0, 16843009 * z(a[b - 1 - 32], c, d));\n ra(a, b + 32, 16843009 * z(c, d, e));\n ra(a, b + 64, 16843009 * z(d, e, f));\n ra(a, b + 96, 16843009 * z(e, f, f));\n }\n function df(a, b) {\n var c = 4,\n d;\n for (d = 0; 4 > d; ++d) c += a[b + d - 32] + a[b - 1 + 32 * d];\n c >>= 3;\n for (d = 0; 4 > d; ++d) M(a, b + 32 * d, c, 4);\n }\n function hf(a, b) {\n var c = a[b - 1 + 0],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 - 32],\n g = a[b + 0 - 32],\n h = a[b + 1 - 32],\n k = a[b + 2 - 32],\n l = a[b + 3 - 32];\n a[b + 0 + 96] = z(d, e, a[b - 1 + 96]);\n a[b + 1 + 96] = a[b + 0 + 64] = z(c, d, e);\n a[b + 2 + 96] = a[b + 1 + 64] = a[b + 0 + 32] = z(f, c, d);\n a[b + 3 + 96] = a[b + 2 + 64] = a[b + 1 + 32] = a[b + 0 + 0] = z(g, f, c);\n a[b + 3 + 64] = a[b + 2 + 32] = a[b + 1 + 0] = z(h, g, f);\n a[b + 3 + 32] = a[b + 2 + 0] = z(k, h, g);\n a[b + 3 + 0] = z(l, k, h);\n }\n function kf(a, b) {\n var c = a[b + 1 - 32],\n d = a[b + 2 - 32],\n e = a[b + 3 - 32],\n f = a[b + 4 - 32],\n g = a[b + 5 - 32],\n h = a[b + 6 - 32],\n k = a[b + 7 - 32];\n a[b + 0 + 0] = z(a[b + 0 - 32], c, d);\n a[b + 1 + 0] = a[b + 0 + 32] = z(c, d, e);\n a[b + 2 + 0] = a[b + 1 + 32] = a[b + 0 + 64] = z(d, e, f);\n a[b + 3 + 0] = a[b + 2 + 32] = a[b + 1 + 64] = a[b + 0 + 96] = z(e, f, g);\n a[b + 3 + 32] = a[b + 2 + 64] = a[b + 1 + 96] = z(f, g, h);\n a[b + 3 + 64] = a[b + 2 + 96] = z(g, h, k);\n a[b + 3 + 96] = z(h, k, k);\n }\n function jf(a, b) {\n var c = a[b - 1 + 0],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 - 32],\n g = a[b + 0 - 32],\n h = a[b + 1 - 32],\n k = a[b + 2 - 32],\n l = a[b + 3 - 32];\n a[b + 0 + 0] = a[b + 1 + 64] = (f + g + 1) >> 1;\n a[b + 1 + 0] = a[b + 2 + 64] = (g + h + 1) >> 1;\n a[b + 2 + 0] = a[b + 3 + 64] = (h + k + 1) >> 1;\n a[b + 3 + 0] = (k + l + 1) >> 1;\n a[b + 0 + 96] = z(e, d, c);\n a[b + 0 + 64] = z(d, c, f);\n a[b + 0 + 32] = a[b + 1 + 96] = z(c, f, g);\n a[b + 1 + 32] = a[b + 2 + 96] = z(f, g, h);\n a[b + 2 + 32] = a[b + 3 + 96] = z(g, h, k);\n a[b + 3 + 32] = z(h, k, l);\n }\n function lf(a, b) {\n var c = a[b + 0 - 32],\n d = a[b + 1 - 32],\n e = a[b + 2 - 32],\n f = a[b + 3 - 32],\n g = a[b + 4 - 32],\n h = a[b + 5 - 32],\n k = a[b + 6 - 32],\n l = a[b + 7 - 32];\n a[b + 0 + 0] = (c + d + 1) >> 1;\n a[b + 1 + 0] = a[b + 0 + 64] = (d + e + 1) >> 1;\n a[b + 2 + 0] = a[b + 1 + 64] = (e + f + 1) >> 1;\n a[b + 3 + 0] = a[b + 2 + 64] = (f + g + 1) >> 1;\n a[b + 0 + 32] = z(c, d, e);\n a[b + 1 + 32] = a[b + 0 + 96] = z(d, e, f);\n a[b + 2 + 32] = a[b + 1 + 96] = z(e, f, g);\n a[b + 3 + 32] = a[b + 2 + 96] = z(f, g, h);\n a[b + 3 + 64] = z(g, h, k);\n a[b + 3 + 96] = z(h, k, l);\n }\n function nf(a, b) {\n var c = a[b - 1 + 0],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 + 96];\n a[b + 0 + 0] = (c + d + 1) >> 1;\n a[b + 2 + 0] = a[b + 0 + 32] = (d + e + 1) >> 1;\n a[b + 2 + 32] = a[b + 0 + 64] = (e + f + 1) >> 1;\n a[b + 1 + 0] = z(c, d, e);\n a[b + 3 + 0] = a[b + 1 + 32] = z(d, e, f);\n a[b + 3 + 32] = a[b + 1 + 64] = z(e, f, f);\n a[b + 3 + 64] = a[b + 2 + 64] = a[b + 0 + 96] = a[b + 1 + 96] = a[\n b + 2 + 96\n ] = a[b + 3 + 96] = f;\n }\n function mf(a, b) {\n var c = a[b - 1 + 0],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 + 96],\n g = a[b - 1 - 32],\n h = a[b + 0 - 32],\n k = a[b + 1 - 32],\n l = a[b + 2 - 32];\n a[b + 0 + 0] = a[b + 2 + 32] = (c + g + 1) >> 1;\n a[b + 0 + 32] = a[b + 2 + 64] = (d + c + 1) >> 1;\n a[b + 0 + 64] = a[b + 2 + 96] = (e + d + 1) >> 1;\n a[b + 0 + 96] = (f + e + 1) >> 1;\n a[b + 3 + 0] = z(h, k, l);\n a[b + 2 + 0] = z(g, h, k);\n a[b + 1 + 0] = a[b + 3 + 32] = z(c, g, h);\n a[b + 1 + 32] = a[b + 3 + 64] = z(d, c, g);\n a[b + 1 + 64] = a[b + 3 + 96] = z(e, d, c);\n a[b + 1 + 96] = z(f, e, d);\n }\n function xf(a, b) {\n var c;\n for (c = 0; 8 > c; ++c) I(a, b + 32 * c, a, b - 32, 8);\n }\n function yf(a, b) {\n var c;\n for (c = 0; 8 > c; ++c) M(a, b, a[b - 1], 8), (b += 32);\n }\n function lb(a, b, c) {\n var d;\n for (d = 0; 8 > d; ++d) M(b, c + 32 * d, a, 8);\n }\n function vf(a, b) {\n var c = 8,\n d;\n for (d = 0; 8 > d; ++d) c += a[b + d - 32] + a[b - 1 + 32 * d];\n lb(c >> 4, a, b);\n }\n function Af(a, b) {\n var c = 4,\n d;\n for (d = 0; 8 > d; ++d) c += a[b + d - 32];\n lb(c >> 3, a, b);\n }\n function zf(a, b) {\n var c = 4,\n d;\n for (d = 0; 8 > d; ++d) c += a[b - 1 + 32 * d];\n lb(c >> 3, a, b);\n }\n function Bf(a, b) {\n lb(128, a, b);\n }\n function ab(a, b, c) {\n var d = a[b - c],\n e = a[b + 0],\n f = 3 * (e - d) + Qb[1020 + a[b - 2 * c] - a[b + c]],\n g = mb[112 + ((f + 4) >> 3)];\n a[b - c] = R[255 + d + mb[112 + ((f + 3) >> 3)]];\n a[b + 0] = R[255 + e - g];\n }\n function jd(a, b, c, d) {\n var e = a[b + 0],\n f = a[b + c];\n return U[255 + a[b - 2 * c] - a[b - c]] > d || U[255 + f - e] > d;\n }\n function kd(a, b, c, d) {\n return (\n 4 * U[255 + a[b - c] - a[b + 0]] + U[255 + a[b - 2 * c] - a[b + c]] <= d\n );\n }\n function ld(a, b, c, d, e) {\n var f = a[b - 3 * c],\n g = a[b - 2 * c],\n h = a[b - c],\n k = a[b + 0],\n l = a[b + c],\n m = a[b + 2 * c],\n n = a[b + 3 * c];\n return 4 * U[255 + h - k] + U[255 + g - l] > d\n ? 0\n : U[255 + a[b - 4 * c] - f] <= e &&\n U[255 + f - g] <= e &&\n U[255 + g - h] <= e &&\n U[255 + n - m] <= e &&\n U[255 + m - l] <= e &&\n U[255 + l - k] <= e;\n }\n function gd(a, b, c, d) {\n var e = 2 * d + 1;\n for (d = 0; 16 > d; ++d) kd(a, b + d, c, e) && ab(a, b + d, c);\n }\n function hd(a, b, c, d) {\n var e = 2 * d + 1;\n for (d = 0; 16 > d; ++d) kd(a, b + d * c, 1, e) && ab(a, b + d * c, 1);\n }\n function bf(a, b, c, d) {\n var e;\n for (e = 3; 0 < e; --e) (b += 4 * c), gd(a, b, c, d);\n }\n function cf(a, b, c, d) {\n var e;\n for (e = 3; 0 < e; --e) (b += 4), hd(a, b, c, d);\n }\n function ea(a, b, c, d, e, f, g, h) {\n for (f = 2 * f + 1; 0 < e--; ) {\n if (ld(a, b, c, f, g))\n if (jd(a, b, c, h)) ab(a, b, c);\n else {\n var k = a,\n l = b,\n m = c,\n n = k[l - 2 * m],\n r = k[l - m],\n q = k[l + 0],\n t = k[l + m],\n v = k[l + 2 * m],\n p = Qb[1020 + 3 * (q - r) + Qb[1020 + n - t]],\n u = (27 * p + 63) >> 7,\n w = (18 * p + 63) >> 7,\n p = (9 * p + 63) >> 7;\n k[l - 3 * m] = R[255 + k[l - 3 * m] + p];\n k[l - 2 * m] = R[255 + n + w];\n k[l - m] = R[255 + r + u];\n k[l + 0] = R[255 + q - u];\n k[l + m] = R[255 + t - w];\n k[l + 2 * m] = R[255 + v - p];\n }\n b += d;\n }\n }\n function Fa(a, b, c, d, e, f, g, h) {\n for (f = 2 * f + 1; 0 < e--; ) {\n if (ld(a, b, c, f, g))\n if (jd(a, b, c, h)) ab(a, b, c);\n else {\n var k = a,\n l = b,\n m = c,\n n = k[l - m],\n r = k[l + 0],\n q = k[l + m],\n t = 3 * (r - n),\n v = mb[112 + ((t + 4) >> 3)],\n t = mb[112 + ((t + 3) >> 3)],\n p = (v + 1) >> 1;\n k[l - 2 * m] = R[255 + k[l - 2 * m] + p];\n k[l - m] = R[255 + n + t];\n k[l + 0] = R[255 + r - v];\n k[l + m] = R[255 + q - p];\n }\n b += d;\n }\n }\n function Ue(a, b, c, d, e, f) {\n ea(a, b, c, 1, 16, d, e, f);\n }\n function Ve(a, b, c, d, e, f) {\n ea(a, b, 1, c, 16, d, e, f);\n }\n function Ye(a, b, c, d, e, f) {\n var g;\n for (g = 3; 0 < g; --g) (b += 4 * c), Fa(a, b, c, 1, 16, d, e, f);\n }\n function Ze(a, b, c, d, e, f) {\n var g;\n for (g = 3; 0 < g; --g) (b += 4), Fa(a, b, 1, c, 16, d, e, f);\n }\n function We(a, b, c, d, e, f, g, h) {\n ea(a, b, e, 1, 8, f, g, h);\n ea(c, d, e, 1, 8, f, g, h);\n }\n function Xe(a, b, c, d, e, f, g, h) {\n ea(a, b, 1, e, 8, f, g, h);\n ea(c, d, 1, e, 8, f, g, h);\n }\n function $e(a, b, c, d, e, f, g, h) {\n Fa(a, b + 4 * e, e, 1, 8, f, g, h);\n Fa(c, d + 4 * e, e, 1, 8, f, g, h);\n }\n function af(a, b, c, d, e, f, g, h) {\n Fa(a, b + 4, 1, e, 8, f, g, h);\n Fa(c, d + 4, 1, e, 8, f, g, h);\n }\n function Cf() {\n this.ba = new Cb();\n this.ec = [];\n this.cc = [];\n this.Mc = [];\n this.Dc = this.Nc = this.dc = this.fc = 0;\n this.Oa = new Ud();\n this.memory = 0;\n this.Ib = \"OutputFunc\";\n this.Jb = \"OutputAlphaFunc\";\n this.Nd = \"OutputRowFunc\";\n }\n function md() {\n this.data = [];\n this.offset = this.kd = this.ha = this.w = 0;\n this.na = [];\n this.xa = this.gb = this.Ja = this.Sa = this.P = 0;\n }\n function Df() {\n this.nc = this.Ea = this.b = this.hc = 0;\n this.K = [];\n this.w = 0;\n }\n function Ef() {\n this.ua = 0;\n this.Wa = new ac();\n this.vb = new ac();\n this.md = this.xc = this.wc = 0;\n this.vc = [];\n this.Wb = 0;\n this.Ya = new Ub();\n this.yc = new O();\n }\n function je() {\n this.xb = this.a = 0;\n this.l = new Oa();\n this.ca = new Cb();\n this.V = [];\n this.Ba = 0;\n this.Ta = [];\n this.Ua = 0;\n this.m = new Ra();\n this.Pb = 0;\n this.wd = new Ra();\n this.Ma = this.$ = this.C = this.i = this.c = this.xd = 0;\n this.s = new Ef();\n this.ab = 0;\n this.gc = wa(4, Df);\n this.Oc = 0;\n }\n function Ff() {\n this.Lc = this.Z = this.$a = this.i = this.c = 0;\n this.l = new Oa();\n this.ic = 0;\n this.ca = [];\n this.tb = 0;\n this.qd = null;\n this.rd = 0;\n }\n function Rb(a, b, c, d, e, f, g) {\n a = null == a ? 0 : a[b + 0];\n for (b = 0; b < g; ++b) (e[f + b] = (a + c[d + b]) & 255), (a = e[f + b]);\n }\n function Gf(a, b, c, d, e, f, g) {\n if (null == a) Rb(null, null, c, d, e, f, g);\n else {\n var h;\n for (h = 0; h < g; ++h) e[f + h] = (a[b + h] + c[d + h]) & 255;\n }\n }\n function Hf(a, b, c, d, e, f, g) {\n if (null == a) Rb(null, null, c, d, e, f, g);\n else {\n var h = a[b + 0],\n k = h,\n l = h,\n m;\n for (m = 0; m < g; ++m)\n (h = a[b + m]),\n (k = l + h - k),\n (l = (c[d + m] + (k & -256 ? (0 > k ? 0 : 255) : k)) & 255),\n (k = h),\n (e[f + m] = l);\n }\n }\n function Le(a, b, c, d) {\n var e = b.width,\n f = b.o;\n x(null != a && null != b);\n if (0 > c || 0 >= d || c + d > f) return null;\n if (!a.Cc) {\n if (null == a.ga) {\n a.ga = new Ff();\n var g;\n (g = null == a.ga) ||\n ((g = b.width * b.o),\n x(0 == a.Gb.length),\n (a.Gb = V(g)),\n (a.Uc = 0),\n null == a.Gb\n ? (g = 0)\n : ((a.mb = a.Gb), (a.nb = a.Uc), (a.rc = null), (g = 1)),\n (g = !g));\n if (!g) {\n g = a.ga;\n var h = a.Fa,\n k = a.P,\n l = a.qc,\n m = a.mb,\n n = a.nb,\n r = k + 1,\n q = l - 1,\n t = g.l;\n x(null != h && null != m && null != b);\n ia[0] = null;\n ia[1] = Rb;\n ia[2] = Gf;\n ia[3] = Hf;\n g.ca = m;\n g.tb = n;\n g.c = b.width;\n g.i = b.height;\n x(0 < g.c && 0 < g.i);\n if (1 >= l) b = 0;\n else if (\n ((g.$a = (h[k + 0] >> 0) & 3),\n (g.Z = (h[k + 0] >> 2) & 3),\n (g.Lc = (h[k + 0] >> 4) & 3),\n (k = (h[k + 0] >> 6) & 3),\n 0 > g.$a || 1 < g.$a || 4 <= g.Z || 1 < g.Lc || k)\n )\n b = 0;\n else if (\n ((t.put = kc),\n (t.ac = gc),\n (t.bc = lc),\n (t.ma = g),\n (t.width = b.width),\n (t.height = b.height),\n (t.Da = b.Da),\n (t.v = b.v),\n (t.va = b.va),\n (t.j = b.j),\n (t.o = b.o),\n g.$a)\n )\n b: {\n x(1 == g.$a), (b = Bc());\n c: for (;;) {\n if (null == b) {\n b = 0;\n break b;\n }\n x(null != g);\n g.mc = b;\n b.c = g.c;\n b.i = g.i;\n b.l = g.l;\n b.l.ma = g;\n b.l.width = g.c;\n b.l.height = g.i;\n b.a = 0;\n cb(b.m, h, r, q);\n if (!rb(g.c, g.i, 1, b, null)) break c;\n 1 == b.ab && 3 == b.gc[0].hc && yc(b.s)\n ? ((g.ic = 1),\n (h = b.c * b.i),\n (b.Ta = null),\n (b.Ua = 0),\n (b.V = V(h)),\n (b.Ba = 0),\n null == b.V ? ((b.a = 1), (b = 0)) : (b = 1))\n : ((g.ic = 0), (b = Ec(b, g.c)));\n if (!b) break c;\n b = 1;\n break b;\n }\n g.mc = null;\n b = 0;\n }\n else b = q >= g.c * g.i;\n g = !b;\n }\n if (g) return null;\n 1 != a.ga.Lc ? (a.Ga = 0) : (d = f - c);\n }\n x(null != a.ga);\n x(c + d <= f);\n a: {\n h = a.ga;\n b = h.c;\n f = h.l.o;\n if (0 == h.$a) {\n r = a.rc;\n q = a.Vc;\n t = a.Fa;\n k = a.P + 1 + c * b;\n l = a.mb;\n m = a.nb + c * b;\n x(k <= a.P + a.qc);\n if (0 != h.Z)\n for (x(null != ia[h.Z]), g = 0; g < d; ++g)\n ia[h.Z](r, q, t, k, l, m, b),\n (r = l),\n (q = m),\n (m += b),\n (k += b);\n else\n for (g = 0; g < d; ++g)\n I(l, m, t, k, b), (r = l), (q = m), (m += b), (k += b);\n a.rc = r;\n a.Vc = q;\n } else {\n x(null != h.mc);\n b = c + d;\n g = h.mc;\n x(null != g);\n x(b <= g.i);\n if (g.C >= b) b = 1;\n else if ((h.ic || Aa(), h.ic)) {\n var h = g.V,\n r = g.Ba,\n q = g.c,\n v = g.i,\n t = 1,\n k = g.$ / q,\n l = g.$ % q,\n m = g.m,\n n = g.s,\n p = g.$,\n u = q * v,\n w = q * b,\n y = n.wc,\n A = p < w ? ha(n, l, k) : null;\n x(p <= u);\n x(b <= v);\n x(yc(n));\n c: for (;;) {\n for (; !m.h && p < w; ) {\n l & y || (A = ha(n, l, k));\n x(null != A);\n Sa(m);\n v = ua(A.G[0], A.H[0], m);\n if (256 > v)\n (h[r + p] = v),\n ++p,\n ++l,\n l >= q && ((l = 0), ++k, k <= b && !(k % 16) && Ib(g, k));\n else if (280 > v) {\n var v = ib(v - 256, m);\n var E = ua(A.G[4], A.H[4], m);\n Sa(m);\n E = ib(E, m);\n E = nc(q, E);\n if (p >= E && u - p >= v) {\n var B;\n for (B = 0; B < v; ++B) h[r + p + B] = h[r + p + B - E];\n } else {\n t = 0;\n break c;\n }\n p += v;\n for (l += v; l >= q; )\n (l -= q), ++k, k <= b && !(k % 16) && Ib(g, k);\n p < w && l & y && (A = ha(n, l, k));\n } else {\n t = 0;\n break c;\n }\n x(m.h == db(m));\n }\n Ib(g, k > b ? b : k);\n break c;\n }\n !t || (m.h && p < u) ? ((t = 0), (g.a = m.h ? 5 : 3)) : (g.$ = p);\n b = t;\n } else b = Jb(g, g.V, g.Ba, g.c, g.i, b, se);\n if (!b) {\n d = 0;\n break a;\n }\n }\n c + d >= f && (a.Cc = 1);\n d = 1;\n }\n if (!d) return null;\n if (\n a.Cc &&\n ((d = a.ga), null != d && (d.mc = null), (a.ga = null), 0 < a.Ga)\n )\n return alert(\"todo:WebPDequantizeLevels\"), null;\n }\n return a.nb + c * e;\n }\n function If(a, b, c, d, e, f) {\n for (; 0 < e--; ) {\n var g = a,\n h = b + (c ? 1 : 0),\n k = a,\n l = b + (c ? 0 : 3),\n m;\n for (m = 0; m < d; ++m) {\n var n = k[l + 4 * m];\n 255 != n &&\n ((n *= 32897),\n (g[h + 4 * m + 0] = (g[h + 4 * m + 0] * n) >> 23),\n (g[h + 4 * m + 1] = (g[h + 4 * m + 1] * n) >> 23),\n (g[h + 4 * m + 2] = (g[h + 4 * m + 2] * n) >> 23));\n }\n b += f;\n }\n }\n function Jf(a, b, c, d, e) {\n for (; 0 < d--; ) {\n var f;\n for (f = 0; f < c; ++f) {\n var g = a[b + 2 * f + 0],\n h = a[b + 2 * f + 1],\n k = h & 15,\n l = 4369 * k,\n h = (((h & 240) | (h >> 4)) * l) >> 16;\n a[b + 2 * f + 0] =\n (((((g & 240) | (g >> 4)) * l) >> 16) & 240) |\n ((((((g & 15) | (g << 4)) * l) >> 16) >> 4) & 15);\n a[b + 2 * f + 1] = (h & 240) | k;\n }\n b += e;\n }\n }\n function Kf(a, b, c, d, e, f, g, h) {\n var k = 255,\n l,\n m;\n for (m = 0; m < e; ++m) {\n for (l = 0; l < d; ++l) {\n var n = a[b + l];\n f[g + 4 * l] = n;\n k &= n;\n }\n b += c;\n g += h;\n }\n return 255 != k;\n }\n function Lf(a, b, c, d, e) {\n var f;\n for (f = 0; f < e; ++f) c[d + f] = a[b + f] >> 8;\n }\n function Aa() {\n za = If;\n vc = Jf;\n fc = Kf;\n Fc = Lf;\n }\n function va(a, b, c) {\n self[a] = function(a, e, f, g, h, k, l, m, n, r, q, t, v, p, u, w, y) {\n var d,\n E = (y - 1) >> 1;\n var B = h[k + 0] | (l[m + 0] << 16);\n var C = n[r + 0] | (q[t + 0] << 16);\n x(null != a);\n var z = (3 * B + C + 131074) >> 2;\n b(a[e + 0], z & 255, z >> 16, v, p);\n null != f &&\n ((z = (3 * C + B + 131074) >> 2),\n b(f[g + 0], z & 255, z >> 16, u, w));\n for (d = 1; d <= E; ++d) {\n var D = h[k + d] | (l[m + d] << 16);\n var G = n[r + d] | (q[t + d] << 16);\n var F = B + D + C + G + 524296;\n var H = (F + 2 * (D + C)) >> 3;\n F = (F + 2 * (B + G)) >> 3;\n z = (H + B) >> 1;\n B = (F + D) >> 1;\n b(a[e + 2 * d - 1], z & 255, z >> 16, v, p + (2 * d - 1) * c);\n b(a[e + 2 * d - 0], B & 255, B >> 16, v, p + (2 * d - 0) * c);\n null != f &&\n ((z = (F + C) >> 1),\n (B = (H + G) >> 1),\n b(f[g + 2 * d - 1], z & 255, z >> 16, u, w + (2 * d - 1) * c),\n b(f[g + 2 * d + 0], B & 255, B >> 16, u, w + (2 * d + 0) * c));\n B = D;\n C = G;\n }\n y & 1 ||\n ((z = (3 * B + C + 131074) >> 2),\n b(a[e + y - 1], z & 255, z >> 16, v, p + (y - 1) * c),\n null != f &&\n ((z = (3 * C + B + 131074) >> 2),\n b(f[g + y - 1], z & 255, z >> 16, u, w + (y - 1) * c)));\n };\n }\n function ic() {\n P[Ca] = Mf;\n P[Ua] = nd;\n P[tc] = Nf;\n P[Va] = od;\n P[ya] = pd;\n P[Db] = qd;\n P[wc] = Of;\n P[zb] = nd;\n P[Ab] = od;\n P[Ja] = pd;\n P[Bb] = qd;\n }\n function Sb(a) {\n return a & ~Pf ? (0 > a ? 0 : 255) : a >> rd;\n }\n function bb(a, b) {\n return Sb(((19077 * a) >> 8) + ((26149 * b) >> 8) - 14234);\n }\n function nb(a, b, c) {\n return Sb(\n ((19077 * a) >> 8) - ((6419 * b) >> 8) - ((13320 * c) >> 8) + 8708\n );\n }\n function Pa(a, b) {\n return Sb(((19077 * a) >> 8) + ((33050 * b) >> 8) - 17685);\n }\n function Ga(a, b, c, d, e) {\n d[e + 0] = bb(a, c);\n d[e + 1] = nb(a, b, c);\n d[e + 2] = Pa(a, b);\n }\n function Tb(a, b, c, d, e) {\n d[e + 0] = Pa(a, b);\n d[e + 1] = nb(a, b, c);\n d[e + 2] = bb(a, c);\n }\n function sd(a, b, c, d, e) {\n var f = nb(a, b, c);\n b = ((f << 3) & 224) | (Pa(a, b) >> 3);\n d[e + 0] = (bb(a, c) & 248) | (f >> 5);\n d[e + 1] = b;\n }\n function td(a, b, c, d, e) {\n var f = (Pa(a, b) & 240) | 15;\n d[e + 0] = (bb(a, c) & 240) | (nb(a, b, c) >> 4);\n d[e + 1] = f;\n }\n function ud(a, b, c, d, e) {\n d[e + 0] = 255;\n Ga(a, b, c, d, e + 1);\n }\n function vd(a, b, c, d, e) {\n Tb(a, b, c, d, e);\n d[e + 3] = 255;\n }\n function wd(a, b, c, d, e) {\n Ga(a, b, c, d, e);\n d[e + 3] = 255;\n }\n function ga(a, b) {\n return 0 > a ? 0 : a > b ? b : a;\n }\n function la(a, b, c) {\n self[a] = function(a, e, f, g, h, k, l, m, n) {\n for (var d = m + (n & -2) * c; m != d; )\n b(a[e + 0], f[g + 0], h[k + 0], l, m),\n b(a[e + 1], f[g + 0], h[k + 0], l, m + c),\n (e += 2),\n ++g,\n ++k,\n (m += 2 * c);\n n & 1 && b(a[e + 0], f[g + 0], h[k + 0], l, m);\n };\n }\n function xd(a, b, c) {\n return 0 == c ? (0 == a ? (0 == b ? 6 : 5) : 0 == b ? 4 : 0) : c;\n }\n function yd(a, b, c, d, e) {\n switch (a >>> 30) {\n case 3:\n Za(b, c, d, e, 0);\n break;\n case 2:\n fd(b, c, d, e);\n break;\n case 1:\n pa(b, c, d, e);\n }\n }\n function Oc(a, b) {\n var c,\n d,\n e = b.M,\n f = b.Nb,\n g = a.oc,\n h = a.pc + 40,\n k = a.oc,\n l = a.pc + 584,\n m = a.oc,\n n = a.pc + 600;\n for (c = 0; 16 > c; ++c) g[h + 32 * c - 1] = 129;\n for (c = 0; 8 > c; ++c)\n (k[l + 32 * c - 1] = 129), (m[n + 32 * c - 1] = 129);\n 0 < e\n ? (g[h - 1 - 32] = k[l - 1 - 32] = m[n - 1 - 32] = 129)\n : (M(g, h - 32 - 1, 127, 21),\n M(k, l - 32 - 1, 127, 9),\n M(m, n - 32 - 1, 127, 9));\n for (d = 0; d < a.za; ++d) {\n var r = b.ya[b.aa + d];\n if (0 < d) {\n for (c = -1; 16 > c; ++c) I(g, h + 32 * c - 4, g, h + 32 * c + 12, 4);\n for (c = -1; 8 > c; ++c)\n I(k, l + 32 * c - 4, k, l + 32 * c + 4, 4),\n I(m, n + 32 * c - 4, m, n + 32 * c + 4, 4);\n }\n var q = a.Gd,\n t = a.Hd + d,\n v = r.ad,\n p = r.Hc;\n 0 < e &&\n (I(g, h - 32, q[t].y, 0, 16),\n I(k, l - 32, q[t].f, 0, 8),\n I(m, n - 32, q[t].ea, 0, 8));\n if (r.Za) {\n var u = g;\n var w = h - 32 + 16;\n 0 < e &&\n (d >= a.za - 1\n ? M(u, w, q[t].y[15], 4)\n : I(u, w, q[t + 1].y, 0, 4));\n for (c = 0; 4 > c; c++)\n u[w + 128 + c] = u[w + 256 + c] = u[w + 384 + c] = u[w + 0 + c];\n for (c = 0; 16 > c; ++c, p <<= 2)\n (u = g), (w = h + zd[c]), W[r.Ob[c]](u, w), yd(p, v, 16 * +c, u, w);\n } else if (((u = xd(d, e, r.Ob[0])), Y[u](g, h), 0 != p))\n for (c = 0; 16 > c; ++c, p <<= 2) yd(p, v, 16 * +c, g, h + zd[c]);\n c = r.Gc;\n u = xd(d, e, r.Dd);\n ka[u](k, l);\n ka[u](m, n);\n r = c >> 0;\n p = v;\n u = k;\n w = l;\n r & 255 && (r & 170 ? Nb(p, 256, u, w) : Ob(p, 256, u, w));\n c >>= 8;\n r = m;\n p = n;\n c & 255 && (c & 170 ? Nb(v, 320, r, p) : Ob(v, 320, r, p));\n e < a.Ub - 1 &&\n (I(q[t].y, 0, g, h + 480, 16),\n I(q[t].f, 0, k, l + 224, 8),\n I(q[t].ea, 0, m, n + 224, 8));\n c = 8 * f * a.B;\n q = a.sa;\n t = a.ta + 16 * d + 16 * f * a.R;\n v = a.qa;\n r = a.ra + 8 * d + c;\n p = a.Ha;\n u = a.Ia + 8 * d + c;\n for (c = 0; 16 > c; ++c) I(q, t + c * a.R, g, h + 32 * c, 16);\n for (c = 0; 8 > c; ++c)\n I(v, r + c * a.B, k, l + 32 * c, 8),\n I(p, u + c * a.B, m, n + 32 * c, 8);\n }\n }\n function Ad(a, b, c, d, e, f, g, h, k) {\n var l = [0],\n m = [0],\n n = 0,\n r = null != k ? k.kd : 0,\n q = null != k ? k : new md();\n if (null == a || 12 > c) return 7;\n q.data = a;\n q.w = b;\n q.ha = c;\n b = [b];\n c = [c];\n q.gb = [q.gb];\n a: {\n var t = b;\n var v = c;\n var p = q.gb;\n x(null != a);\n x(null != v);\n x(null != p);\n p[0] = 0;\n if (12 <= v[0] && !fa(a, t[0], \"RIFF\")) {\n if (fa(a, t[0] + 8, \"WEBP\")) {\n p = 3;\n break a;\n }\n var u = Ha(a, t[0] + 4);\n if (12 > u || 4294967286 < u) {\n p = 3;\n break a;\n }\n if (r && u > v[0] - 8) {\n p = 7;\n break a;\n }\n p[0] = u;\n t[0] += 12;\n v[0] -= 12;\n }\n p = 0;\n }\n if (0 != p) return p;\n u = 0 < q.gb[0];\n for (c = c[0]; ; ) {\n t = [0];\n n = [n];\n a: {\n var w = a;\n v = b;\n p = c;\n var y = n,\n A = l,\n z = m,\n B = t;\n y[0] = 0;\n if (8 > p[0]) p = 7;\n else {\n if (!fa(w, v[0], \"VP8X\")) {\n if (10 != Ha(w, v[0] + 4)) {\n p = 3;\n break a;\n }\n if (18 > p[0]) {\n p = 7;\n break a;\n }\n var C = Ha(w, v[0] + 8);\n var D = 1 + Yb(w, v[0] + 12);\n w = 1 + Yb(w, v[0] + 15);\n if (2147483648 <= D * w) {\n p = 3;\n break a;\n }\n null != B && (B[0] = C);\n null != A && (A[0] = D);\n null != z && (z[0] = w);\n v[0] += 18;\n p[0] -= 18;\n y[0] = 1;\n }\n p = 0;\n }\n }\n n = n[0];\n t = t[0];\n if (0 != p) return p;\n v = !!(t & 2);\n if (!u && n) return 3;\n null != f && (f[0] = !!(t & 16));\n null != g && (g[0] = v);\n null != h && (h[0] = 0);\n g = l[0];\n t = m[0];\n if (n && v && null == k) {\n p = 0;\n break;\n }\n if (4 > c) {\n p = 7;\n break;\n }\n if ((u && n) || (!u && !n && !fa(a, b[0], \"ALPH\"))) {\n c = [c];\n q.na = [q.na];\n q.P = [q.P];\n q.Sa = [q.Sa];\n a: {\n C = a;\n p = b;\n u = c;\n var y = q.gb,\n A = q.na,\n z = q.P,\n B = q.Sa;\n D = 22;\n x(null != C);\n x(null != u);\n w = p[0];\n var F = u[0];\n x(null != A);\n x(null != B);\n A[0] = null;\n z[0] = null;\n for (B[0] = 0; ; ) {\n p[0] = w;\n u[0] = F;\n if (8 > F) {\n p = 7;\n break a;\n }\n var G = Ha(C, w + 4);\n if (4294967286 < G) {\n p = 3;\n break a;\n }\n var H = (8 + G + 1) & -2;\n D += H;\n if (0 < y && D > y) {\n p = 3;\n break a;\n }\n if (!fa(C, w, \"VP8 \") || !fa(C, w, \"VP8L\")) {\n p = 0;\n break a;\n }\n if (F[0] < H) {\n p = 7;\n break a;\n }\n fa(C, w, \"ALPH\") || ((A[0] = C), (z[0] = w + 8), (B[0] = G));\n w += H;\n F -= H;\n }\n }\n c = c[0];\n q.na = q.na[0];\n q.P = q.P[0];\n q.Sa = q.Sa[0];\n if (0 != p) break;\n }\n c = [c];\n q.Ja = [q.Ja];\n q.xa = [q.xa];\n a: if (\n ((y = a),\n (p = b),\n (u = c),\n (A = q.gb[0]),\n (z = q.Ja),\n (B = q.xa),\n (C = p[0]),\n (w = !fa(y, C, \"VP8 \")),\n (D = !fa(y, C, \"VP8L\")),\n x(null != y),\n x(null != u),\n x(null != z),\n x(null != B),\n 8 > u[0])\n )\n p = 7;\n else {\n if (w || D) {\n y = Ha(y, C + 4);\n if (12 <= A && y > A - 12) {\n p = 3;\n break a;\n }\n if (r && y > u[0] - 8) {\n p = 7;\n break a;\n }\n z[0] = y;\n p[0] += 8;\n u[0] -= 8;\n B[0] = D;\n } else\n (B[0] = 5 <= u[0] && 47 == y[C + 0] && !(y[C + 4] >> 5)),\n (z[0] = u[0]);\n p = 0;\n }\n c = c[0];\n q.Ja = q.Ja[0];\n q.xa = q.xa[0];\n b = b[0];\n if (0 != p) break;\n if (4294967286 < q.Ja) return 3;\n null == h || v || (h[0] = q.xa ? 2 : 1);\n g = [g];\n t = [t];\n if (q.xa) {\n if (5 > c) {\n p = 7;\n break;\n }\n h = g;\n r = t;\n v = f;\n null == a || 5 > c\n ? (a = 0)\n : 5 <= c && 47 == a[b + 0] && !(a[b + 4] >> 5)\n ? ((u = [0]),\n (y = [0]),\n (A = [0]),\n (z = new Ra()),\n cb(z, a, b, c),\n mc(z, u, y, A)\n ? (null != h && (h[0] = u[0]),\n null != r && (r[0] = y[0]),\n null != v && (v[0] = A[0]),\n (a = 1))\n : (a = 0))\n : (a = 0);\n } else {\n if (10 > c) {\n p = 7;\n break;\n }\n h = t;\n null == a || 10 > c || !Jc(a, b + 3, c - 3)\n ? (a = 0)\n : ((r = a[b + 0] | (a[b + 1] << 8) | (a[b + 2] << 16)),\n (v = ((a[b + 7] << 8) | a[b + 6]) & 16383),\n (a = ((a[b + 9] << 8) | a[b + 8]) & 16383),\n r & 1 ||\n 3 < ((r >> 1) & 7) ||\n !((r >> 4) & 1) ||\n r >> 5 >= q.Ja ||\n !v ||\n !a\n ? (a = 0)\n : (g && (g[0] = v), h && (h[0] = a), (a = 1)));\n }\n if (!a) return 3;\n g = g[0];\n t = t[0];\n if (n && (l[0] != g || m[0] != t)) return 3;\n null != k &&\n ((k[0] = q),\n (k.offset = b - k.w),\n x(4294967286 > b - k.w),\n x(k.offset == k.ha - c));\n break;\n }\n return 0 == p || (7 == p && n && null == k)\n ? (null != f && (f[0] |= null != q.na && 0 < q.na.length),\n null != d && (d[0] = g),\n null != e && (e[0] = t),\n 0)\n : p;\n }\n function hc(a, b, c) {\n var d = b.width,\n e = b.height,\n f = 0,\n g = 0,\n h = d,\n k = e;\n b.Da = null != a && 0 < a.Da;\n if (\n b.Da &&\n ((h = a.cd),\n (k = a.bd),\n (f = a.v),\n (g = a.j),\n 11 > c || ((f &= -2), (g &= -2)),\n 0 > f || 0 > g || 0 >= h || 0 >= k || f + h > d || g + k > e)\n )\n return 0;\n b.v = f;\n b.j = g;\n b.va = f + h;\n b.o = g + k;\n b.U = h;\n b.T = k;\n b.da = null != a && 0 < a.da;\n if (b.da) {\n c = [a.ib];\n f = [a.hb];\n if (!bc(h, k, c, f)) return 0;\n b.ib = c[0];\n b.hb = f[0];\n }\n b.ob = null != a && a.ob;\n b.Kb = null == a || !a.Sd;\n b.da && ((b.ob = b.ib < (3 * d) / 4 && b.hb < (3 * e) / 4), (b.Kb = 0));\n return 1;\n }\n function Bd(a) {\n if (null == a) return 2;\n if (11 > a.S) {\n var b = a.f.RGBA;\n b.fb += (a.height - 1) * b.A;\n b.A = -b.A;\n } else\n (b = a.f.kb),\n (a = a.height),\n (b.O += (a - 1) * b.fa),\n (b.fa = -b.fa),\n (b.N += ((a - 1) >> 1) * b.Ab),\n (b.Ab = -b.Ab),\n (b.W += ((a - 1) >> 1) * b.Db),\n (b.Db = -b.Db),\n null != b.F && ((b.J += (a - 1) * b.lb), (b.lb = -b.lb));\n return 0;\n }\n function Cd(a, b, c, d) {\n if (null == d || 0 >= a || 0 >= b) return 2;\n if (null != c) {\n if (c.Da) {\n var e = c.cd,\n f = c.bd,\n g = c.v & -2,\n h = c.j & -2;\n if (0 > g || 0 > h || 0 >= e || 0 >= f || g + e > a || h + f > b)\n return 2;\n a = e;\n b = f;\n }\n if (c.da) {\n e = [c.ib];\n f = [c.hb];\n if (!bc(a, b, e, f)) return 2;\n a = e[0];\n b = f[0];\n }\n }\n d.width = a;\n d.height = b;\n a: {\n var k = d.width;\n var l = d.height;\n a = d.S;\n if (0 >= k || 0 >= l || !(a >= Ca && 13 > a)) a = 2;\n else {\n if (0 >= d.Rd && null == d.sd) {\n var g = (f = e = b = 0),\n h = k * Dd[a],\n m = h * l;\n 11 > a ||\n ((b = (k + 1) / 2),\n (f = ((l + 1) / 2) * b),\n 12 == a && ((e = k), (g = e * l)));\n l = V(m + 2 * f + g);\n if (null == l) {\n a = 1;\n break a;\n }\n d.sd = l;\n 11 > a\n ? ((k = d.f.RGBA),\n (k.eb = l),\n (k.fb = 0),\n (k.A = h),\n (k.size = m))\n : ((k = d.f.kb),\n (k.y = l),\n (k.O = 0),\n (k.fa = h),\n (k.Fd = m),\n (k.f = l),\n (k.N = 0 + m),\n (k.Ab = b),\n (k.Cd = f),\n (k.ea = l),\n (k.W = 0 + m + f),\n (k.Db = b),\n (k.Ed = f),\n 12 == a && ((k.F = l), (k.J = 0 + m + 2 * f)),\n (k.Tc = g),\n (k.lb = e));\n }\n b = 1;\n e = d.S;\n f = d.width;\n g = d.height;\n if (e >= Ca && 13 > e)\n if (11 > e)\n (a = d.f.RGBA),\n (h = Math.abs(a.A)),\n (b &= h * (g - 1) + f <= a.size),\n (b &= h >= f * Dd[e]),\n (b &= null != a.eb);\n else {\n a = d.f.kb;\n h = (f + 1) / 2;\n m = (g + 1) / 2;\n k = Math.abs(a.fa);\n var l = Math.abs(a.Ab),\n n = Math.abs(a.Db),\n r = Math.abs(a.lb),\n q = r * (g - 1) + f;\n b &= k * (g - 1) + f <= a.Fd;\n b &= l * (m - 1) + h <= a.Cd;\n b &= n * (m - 1) + h <= a.Ed;\n b = b & (k >= f) & (l >= h) & (n >= h);\n b &= null != a.y;\n b &= null != a.f;\n b &= null != a.ea;\n 12 == e && ((b &= r >= f), (b &= q <= a.Tc), (b &= null != a.F));\n }\n else b = 0;\n a = b ? 0 : 2;\n }\n }\n if (0 != a) return a;\n null != c && c.fd && (a = Bd(d));\n return a;\n }\n var xb = 64,\n Hd = [\n 0,\n 1,\n 3,\n 7,\n 15,\n 31,\n 63,\n 127,\n 255,\n 511,\n 1023,\n 2047,\n 4095,\n 8191,\n 16383,\n 32767,\n 65535,\n 131071,\n 262143,\n 524287,\n 1048575,\n 2097151,\n 4194303,\n 8388607,\n 16777215\n ],\n Gd = 24,\n ob = 32,\n Xb = 8,\n Id = [\n 0,\n 0,\n 1,\n 1,\n 2,\n 2,\n 2,\n 2,\n 3,\n 3,\n 3,\n 3,\n 3,\n 3,\n 3,\n 3,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7\n ];\n X(\"Predictor0\", \"PredictorAdd0\");\n self.Predictor0 = function() {\n return 4278190080;\n };\n self.Predictor1 = function(a) {\n return a;\n };\n self.Predictor2 = function(a, b, c) {\n return b[c + 0];\n };\n self.Predictor3 = function(a, b, c) {\n return b[c + 1];\n };\n self.Predictor4 = function(a, b, c) {\n return b[c - 1];\n };\n self.Predictor5 = function(a, b, c) {\n return aa(aa(a, b[c + 1]), b[c + 0]);\n };\n self.Predictor6 = function(a, b, c) {\n return aa(a, b[c - 1]);\n };\n self.Predictor7 = function(a, b, c) {\n return aa(a, b[c + 0]);\n };\n self.Predictor8 = function(a, b, c) {\n return aa(b[c - 1], b[c + 0]);\n };\n self.Predictor9 = function(a, b, c) {\n return aa(b[c + 0], b[c + 1]);\n };\n self.Predictor10 = function(a, b, c) {\n return aa(aa(a, b[c - 1]), aa(b[c + 0], b[c + 1]));\n };\n self.Predictor11 = function(a, b, c) {\n var d = b[c + 0];\n b = b[c - 1];\n return 0 >=\n Ia((d >> 24) & 255, (a >> 24) & 255, (b >> 24) & 255) +\n Ia((d >> 16) & 255, (a >> 16) & 255, (b >> 16) & 255) +\n Ia((d >> 8) & 255, (a >> 8) & 255, (b >> 8) & 255) +\n Ia(d & 255, a & 255, b & 255)\n ? d\n : a;\n };\n self.Predictor12 = function(a, b, c) {\n var d = b[c + 0];\n b = b[c - 1];\n return (\n ((sa(((a >> 24) & 255) + ((d >> 24) & 255) - ((b >> 24) & 255)) << 24) |\n (sa(((a >> 16) & 255) + ((d >> 16) & 255) - ((b >> 16) & 255)) <<\n 16) |\n (sa(((a >> 8) & 255) + ((d >> 8) & 255) - ((b >> 8) & 255)) << 8) |\n sa((a & 255) + (d & 255) - (b & 255))) >>>\n 0\n );\n };\n self.Predictor13 = function(a, b, c) {\n var d = b[c - 1];\n a = aa(a, b[c + 0]);\n return (\n ((eb((a >> 24) & 255, (d >> 24) & 255) << 24) |\n (eb((a >> 16) & 255, (d >> 16) & 255) << 16) |\n (eb((a >> 8) & 255, (d >> 8) & 255) << 8) |\n eb((a >> 0) & 255, (d >> 0) & 255)) >>>\n 0\n );\n };\n var ee = self.PredictorAdd0;\n self.PredictorAdd1 = cc;\n X(\"Predictor2\", \"PredictorAdd2\");\n X(\"Predictor3\", \"PredictorAdd3\");\n X(\"Predictor4\", \"PredictorAdd4\");\n X(\"Predictor5\", \"PredictorAdd5\");\n X(\"Predictor6\", \"PredictorAdd6\");\n X(\"Predictor7\", \"PredictorAdd7\");\n X(\"Predictor8\", \"PredictorAdd8\");\n X(\"Predictor9\", \"PredictorAdd9\");\n X(\"Predictor10\", \"PredictorAdd10\");\n X(\"Predictor11\", \"PredictorAdd11\");\n X(\"Predictor12\", \"PredictorAdd12\");\n X(\"Predictor13\", \"PredictorAdd13\");\n var fe = self.PredictorAdd2;\n ec(\n \"ColorIndexInverseTransform\",\n \"MapARGB\",\n \"32b\",\n function(a) {\n return (a >> 8) & 255;\n },\n function(a) {\n return a;\n }\n );\n ec(\n \"VP8LColorIndexInverseTransformAlpha\",\n \"MapAlpha\",\n \"8b\",\n function(a) {\n return a;\n },\n function(a) {\n return (a >> 8) & 255;\n }\n );\n var rc = self.ColorIndexInverseTransform,\n ke = self.MapARGB,\n he = self.VP8LColorIndexInverseTransformAlpha,\n le = self.MapAlpha,\n pc,\n qc = (self.VP8LPredictorsAdd = []);\n qc.length = 16;\n (self.VP8LPredictors = []).length = 16;\n (self.VP8LPredictorsAdd_C = []).length = 16;\n (self.VP8LPredictors_C = []).length = 16;\n var Fb,\n sc,\n Gb,\n Hb,\n xc,\n uc,\n bd = V(511),\n cd = V(2041),\n dd = V(225),\n ed = V(767),\n ad = 0,\n Qb = cd,\n mb = dd,\n R = ed,\n U = bd,\n Ca = 0,\n Ua = 1,\n tc = 2,\n Va = 3,\n ya = 4,\n Db = 5,\n wc = 6,\n zb = 7,\n Ab = 8,\n Ja = 9,\n Bb = 10,\n pe = [2, 3, 7],\n oe = [3, 3, 11],\n Dc = [280, 256, 256, 256, 40],\n qe = [0, 1, 1, 1, 0],\n ne = [17, 18, 0, 1, 2, 3, 4, 5, 16, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],\n de = [\n 24,\n 7,\n 23,\n 25,\n 40,\n 6,\n 39,\n 41,\n 22,\n 26,\n 38,\n 42,\n 56,\n 5,\n 55,\n 57,\n 21,\n 27,\n 54,\n 58,\n 37,\n 43,\n 72,\n 4,\n 71,\n 73,\n 20,\n 28,\n 53,\n 59,\n 70,\n 74,\n 36,\n 44,\n 88,\n 69,\n 75,\n 52,\n 60,\n 3,\n 87,\n 89,\n 19,\n 29,\n 86,\n 90,\n 35,\n 45,\n 68,\n 76,\n 85,\n 91,\n 51,\n 61,\n 104,\n 2,\n 103,\n 105,\n 18,\n 30,\n 102,\n 106,\n 34,\n 46,\n 84,\n 92,\n 67,\n 77,\n 101,\n 107,\n 50,\n 62,\n 120,\n 1,\n 119,\n 121,\n 83,\n 93,\n 17,\n 31,\n 100,\n 108,\n 66,\n 78,\n 118,\n 122,\n 33,\n 47,\n 117,\n 123,\n 49,\n 63,\n 99,\n 109,\n 82,\n 94,\n 0,\n 116,\n 124,\n 65,\n 79,\n 16,\n 32,\n 98,\n 110,\n 48,\n 115,\n 125,\n 81,\n 95,\n 64,\n 114,\n 126,\n 97,\n 111,\n 80,\n 113,\n 127,\n 96,\n 112\n ],\n me = [\n 2954,\n 2956,\n 2958,\n 2962,\n 2970,\n 2986,\n 3018,\n 3082,\n 3212,\n 3468,\n 3980,\n 5004\n ],\n ie = 8,\n Lb = [\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 16,\n 17,\n 17,\n 18,\n 19,\n 20,\n 20,\n 21,\n 21,\n 22,\n 22,\n 23,\n 23,\n 24,\n 25,\n 25,\n 26,\n 27,\n 28,\n 29,\n 30,\n 31,\n 32,\n 33,\n 34,\n 35,\n 36,\n 37,\n 37,\n 38,\n 39,\n 40,\n 41,\n 42,\n 43,\n 44,\n 45,\n 46,\n 46,\n 47,\n 48,\n 49,\n 50,\n 51,\n 52,\n 53,\n 54,\n 55,\n 56,\n 57,\n 58,\n 59,\n 60,\n 61,\n 62,\n 63,\n 64,\n 65,\n 66,\n 67,\n 68,\n 69,\n 70,\n 71,\n 72,\n 73,\n 74,\n 75,\n 76,\n 76,\n 77,\n 78,\n 79,\n 80,\n 81,\n 82,\n 83,\n 84,\n 85,\n 86,\n 87,\n 88,\n 89,\n 91,\n 93,\n 95,\n 96,\n 98,\n 100,\n 101,\n 102,\n 104,\n 106,\n 108,\n 110,\n 112,\n 114,\n 116,\n 118,\n 122,\n 124,\n 126,\n 128,\n 130,\n 132,\n 134,\n 136,\n 138,\n 140,\n 143,\n 145,\n 148,\n 151,\n 154,\n 157\n ],\n Mb = [\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 16,\n 17,\n 18,\n 19,\n 20,\n 21,\n 22,\n 23,\n 24,\n 25,\n 26,\n 27,\n 28,\n 29,\n 30,\n 31,\n 32,\n 33,\n 34,\n 35,\n 36,\n 37,\n 38,\n 39,\n 40,\n 41,\n 42,\n 43,\n 44,\n 45,\n 46,\n 47,\n 48,\n 49,\n 50,\n 51,\n 52,\n 53,\n 54,\n 55,\n 56,\n 57,\n 58,\n 60,\n 62,\n 64,\n 66,\n 68,\n 70,\n 72,\n 74,\n 76,\n 78,\n 80,\n 82,\n 84,\n 86,\n 88,\n 90,\n 92,\n 94,\n 96,\n 98,\n 100,\n 102,\n 104,\n 106,\n 108,\n 110,\n 112,\n 114,\n 116,\n 119,\n 122,\n 125,\n 128,\n 131,\n 134,\n 137,\n 140,\n 143,\n 146,\n 149,\n 152,\n 155,\n 158,\n 161,\n 164,\n 167,\n 170,\n 173,\n 177,\n 181,\n 185,\n 189,\n 193,\n 197,\n 201,\n 205,\n 209,\n 213,\n 217,\n 221,\n 225,\n 229,\n 234,\n 239,\n 245,\n 249,\n 254,\n 259,\n 264,\n 269,\n 274,\n 279,\n 284\n ],\n oa = null,\n He = [\n [173, 148, 140, 0],\n [176, 155, 140, 135, 0],\n [180, 157, 141, 134, 130, 0],\n [254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129, 0]\n ],\n Ie = [0, 1, 4, 8, 5, 2, 3, 6, 9, 12, 13, 10, 7, 11, 14, 15],\n Mc = [-0, 1, -1, 2, -2, 3, 4, 6, -3, 5, -4, -5, -6, 7, -7, 8, -8, -9],\n Fe = [\n [\n [\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n ],\n [\n [253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128],\n [189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128],\n [106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128]\n ],\n [\n [1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128],\n [181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128],\n [78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128]\n ],\n [\n [1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128],\n [184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128],\n [77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128]\n ],\n [\n [1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128],\n [170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128],\n [37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128]\n ],\n [\n [1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128],\n [207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128],\n [102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128]\n ],\n [\n [1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128],\n [177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128],\n [80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128]\n ],\n [\n [1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n ]\n ],\n [\n [\n [198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62],\n [131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1],\n [68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128]\n ],\n [\n [1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128],\n [184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128],\n [81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128]\n ],\n [\n [1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128],\n [99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128],\n [23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128]\n ],\n [\n [1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128],\n [109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128],\n [44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128]\n ],\n [\n [1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128],\n [94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128],\n [22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128]\n ],\n [\n [1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128],\n [124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128],\n [35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128]\n ],\n [\n [1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128],\n [121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128],\n [45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128]\n ],\n [\n [1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128],\n [203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128],\n [137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128]\n ]\n ],\n [\n [\n [253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128],\n [175, 13, 224, 243, 193, 185, 249, 198, 255, 255, 128],\n [73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128]\n ],\n [\n [1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128],\n [239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128],\n [155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128]\n ],\n [\n [1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128],\n [201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128],\n [69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128]\n ],\n [\n [1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128],\n [223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128],\n [141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128]\n ],\n [\n [1, 16, 248, 255, 255, 128, 128, 128, 128, 128, 128],\n [190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128],\n [149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n ],\n [\n [1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n ],\n [\n [1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128],\n [213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128],\n [55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n ],\n [\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n ]\n ],\n [\n [\n [202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255],\n [126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128],\n [61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128]\n ],\n [\n [1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128],\n [166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128],\n [39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128]\n ],\n [\n [1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128],\n [124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128],\n [24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128]\n ],\n [\n [1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128],\n [149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128],\n [28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128]\n ],\n [\n [1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128],\n [123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128],\n [20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128]\n ],\n [\n [1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128],\n [168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128],\n [47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128]\n ],\n [\n [1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128],\n [141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128],\n [42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128]\n ],\n [\n [1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n ]\n ]\n ],\n Ke = [\n [\n [231, 120, 48, 89, 115, 113, 120, 152, 112],\n [152, 179, 64, 126, 170, 118, 46, 70, 95],\n [175, 69, 143, 80, 85, 82, 72, 155, 103],\n [56, 58, 10, 171, 218, 189, 17, 13, 152],\n [114, 26, 17, 163, 44, 195, 21, 10, 173],\n [121, 24, 80, 195, 26, 62, 44, 64, 85],\n [144, 71, 10, 38, 171, 213, 144, 34, 26],\n [170, 46, 55, 19, 136, 160, 33, 206, 71],\n [63, 20, 8, 114, 114, 208, 12, 9, 226],\n [81, 40, 11, 96, 182, 84, 29, 16, 36]\n ],\n [\n [134, 183, 89, 137, 98, 101, 106, 165, 148],\n [72, 187, 100, 130, 157, 111, 32, 75, 80],\n [66, 102, 167, 99, 74, 62, 40, 234, 128],\n [41, 53, 9, 178, 241, 141, 26, 8, 107],\n [74, 43, 26, 146, 73, 166, 49, 23, 157],\n [65, 38, 105, 160, 51, 52, 31, 115, 128],\n [104, 79, 12, 27, 217, 255, 87, 17, 7],\n [87, 68, 71, 44, 114, 51, 15, 186, 23],\n [47, 41, 14, 110, 182, 183, 21, 17, 194],\n [66, 45, 25, 102, 197, 189, 23, 18, 22]\n ],\n [\n [88, 88, 147, 150, 42, 46, 45, 196, 205],\n [43, 97, 183, 117, 85, 38, 35, 179, 61],\n [39, 53, 200, 87, 26, 21, 43, 232, 171],\n [56, 34, 51, 104, 114, 102, 29, 93, 77],\n [39, 28, 85, 171, 58, 165, 90, 98, 64],\n [34, 22, 116, 206, 23, 34, 43, 166, 73],\n [107, 54, 32, 26, 51, 1, 81, 43, 31],\n [68, 25, 106, 22, 64, 171, 36, 225, 114],\n [34, 19, 21, 102, 132, 188, 16, 76, 124],\n [62, 18, 78, 95, 85, 57, 50, 48, 51]\n ],\n [\n [193, 101, 35, 159, 215, 111, 89, 46, 111],\n [60, 148, 31, 172, 219, 228, 21, 18, 111],\n [112, 113, 77, 85, 179, 255, 38, 120, 114],\n [40, 42, 1, 196, 245, 209, 10, 25, 109],\n [88, 43, 29, 140, 166, 213, 37, 43, 154],\n [61, 63, 30, 155, 67, 45, 68, 1, 209],\n [100, 80, 8, 43, 154, 1, 51, 26, 71],\n [142, 78, 78, 16, 255, 128, 34, 197, 171],\n [41, 40, 5, 102, 211, 183, 4, 1, 221],\n [51, 50, 17, 168, 209, 192, 23, 25, 82]\n ],\n [\n [138, 31, 36, 171, 27, 166, 38, 44, 229],\n [67, 87, 58, 169, 82, 115, 26, 59, 179],\n [63, 59, 90, 180, 59, 166, 93, 73, 154],\n [40, 40, 21, 116, 143, 209, 34, 39, 175],\n [47, 15, 16, 183, 34, 223, 49, 45, 183],\n [46, 17, 33, 183, 6, 98, 15, 32, 183],\n [57, 46, 22, 24, 128, 1, 54, 17, 37],\n [65, 32, 73, 115, 28, 128, 23, 128, 205],\n [40, 3, 9, 115, 51, 192, 18, 6, 223],\n [87, 37, 9, 115, 59, 77, 64, 21, 47]\n ],\n [\n [104, 55, 44, 218, 9, 54, 53, 130, 226],\n [64, 90, 70, 205, 40, 41, 23, 26, 57],\n [54, 57, 112, 184, 5, 41, 38, 166, 213],\n [30, 34, 26, 133, 152, 116, 10, 32, 134],\n [39, 19, 53, 221, 26, 114, 32, 73, 255],\n [31, 9, 65, 234, 2, 15, 1, 118, 73],\n [75, 32, 12, 51, 192, 255, 160, 43, 51],\n [88, 31, 35, 67, 102, 85, 55, 186, 85],\n [56, 21, 23, 111, 59, 205, 45, 37, 192],\n [55, 38, 70, 124, 73, 102, 1, 34, 98]\n ],\n [\n [125, 98, 42, 88, 104, 85, 117, 175, 82],\n [95, 84, 53, 89, 128, 100, 113, 101, 45],\n [75, 79, 123, 47, 51, 128, 81, 171, 1],\n [57, 17, 5, 71, 102, 57, 53, 41, 49],\n [38, 33, 13, 121, 57, 73, 26, 1, 85],\n [41, 10, 67, 138, 77, 110, 90, 47, 114],\n [115, 21, 2, 10, 102, 255, 166, 23, 6],\n [101, 29, 16, 10, 85, 128, 101, 196, 26],\n [57, 18, 10, 102, 102, 213, 34, 20, 43],\n [117, 20, 15, 36, 163, 128, 68, 1, 26]\n ],\n [\n [102, 61, 71, 37, 34, 53, 31, 243, 192],\n [69, 60, 71, 38, 73, 119, 28, 222, 37],\n [68, 45, 128, 34, 1, 47, 11, 245, 171],\n [62, 17, 19, 70, 146, 85, 55, 62, 70],\n [37, 43, 37, 154, 100, 163, 85, 160, 1],\n [63, 9, 92, 136, 28, 64, 32, 201, 85],\n [75, 15, 9, 9, 64, 255, 184, 119, 16],\n [86, 6, 28, 5, 64, 255, 25, 248, 1],\n [56, 8, 17, 132, 137, 255, 55, 116, 128],\n [58, 15, 20, 82, 135, 57, 26, 121, 40]\n ],\n [\n [164, 50, 31, 137, 154, 133, 25, 35, 218],\n [51, 103, 44, 131, 131, 123, 31, 6, 158],\n [86, 40, 64, 135, 148, 224, 45, 183, 128],\n [22, 26, 17, 131, 240, 154, 14, 1, 209],\n [45, 16, 21, 91, 64, 222, 7, 1, 197],\n [56, 21, 39, 155, 60, 138, 23, 102, 213],\n [83, 12, 13, 54, 192, 255, 68, 47, 28],\n [85, 26, 85, 85, 128, 128, 32, 146, 171],\n [18, 11, 7, 63, 144, 171, 4, 4, 246],\n [35, 27, 10, 146, 174, 171, 12, 26, 128]\n ],\n [\n [190, 80, 35, 99, 180, 80, 126, 54, 45],\n [85, 126, 47, 87, 176, 51, 41, 20, 32],\n [101, 75, 128, 139, 118, 146, 116, 128, 85],\n [56, 41, 15, 176, 236, 85, 37, 9, 62],\n [71, 30, 17, 119, 118, 255, 17, 18, 138],\n [101, 38, 60, 138, 55, 70, 43, 26, 142],\n [146, 36, 19, 30, 171, 255, 97, 27, 20],\n [138, 45, 61, 62, 219, 1, 81, 188, 64],\n [32, 41, 20, 117, 151, 142, 20, 21, 163],\n [112, 19, 12, 61, 195, 128, 48, 4, 24]\n ]\n ],\n Ee = [\n [\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [223, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n [249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n [234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255],\n [250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ]\n ],\n [\n [\n [217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [225, 252, 241, 253, 255, 255, 254, 255, 255, 255, 255],\n [234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255]\n ],\n [\n [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ]\n ],\n [\n [\n [186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255],\n [234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255],\n [251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255]\n ],\n [\n [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ]\n ],\n [\n [\n [248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255],\n [248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n [248, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ]\n ]\n ],\n Ge = [0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 0],\n Nc,\n Y = [],\n W = [],\n ka = [],\n Za,\n fd,\n Nb,\n pa,\n Ob,\n Xc,\n Tc,\n Yc,\n Uc,\n Zc,\n Vc,\n $c,\n Wc,\n Rc,\n Pc,\n Sc,\n Qc,\n re = 1,\n Cc = 2,\n ia = [],\n za,\n vc,\n fc,\n Fc,\n P = [];\n va(\"UpsampleRgbLinePair\", Ga, 3);\n va(\"UpsampleBgrLinePair\", Tb, 3);\n va(\"UpsampleRgbaLinePair\", wd, 4);\n va(\"UpsampleBgraLinePair\", vd, 4);\n va(\"UpsampleArgbLinePair\", ud, 4);\n va(\"UpsampleRgba4444LinePair\", td, 2);\n va(\"UpsampleRgb565LinePair\", sd, 2);\n var Mf = self.UpsampleRgbLinePair,\n Nf = self.UpsampleBgrLinePair,\n nd = self.UpsampleRgbaLinePair,\n od = self.UpsampleBgraLinePair,\n pd = self.UpsampleArgbLinePair,\n qd = self.UpsampleRgba4444LinePair,\n Of = self.UpsampleRgb565LinePair,\n Wa = 16,\n Ba = 1 << (Wa - 1),\n ta = -227,\n Eb = 482,\n rd = 6,\n Pf = (256 << rd) - 1,\n jc = 0,\n Yd = V(256),\n ae = V(256),\n $d = V(256),\n Zd = V(256),\n be = V(Eb - ta),\n ce = V(Eb - ta);\n la(\"YuvToRgbRow\", Ga, 3);\n la(\"YuvToBgrRow\", Tb, 3);\n la(\"YuvToRgbaRow\", wd, 4);\n la(\"YuvToBgraRow\", vd, 4);\n la(\"YuvToArgbRow\", ud, 4);\n la(\"YuvToRgba4444Row\", td, 2);\n la(\"YuvToRgb565Row\", sd, 2);\n var zd = [\n 0,\n 4,\n 8,\n 12,\n 128,\n 132,\n 136,\n 140,\n 256,\n 260,\n 264,\n 268,\n 384,\n 388,\n 392,\n 396\n ],\n Ya = [0, 2, 8],\n Qf = [8, 7, 6, 4, 4, 2, 2, 2, 1, 1, 1, 1],\n Ne = 1;\n this.WebPDecodeRGBA = function(a, b, c, d, e) {\n var f = Ua;\n var g = new Cf(),\n h = new Cb();\n g.ba = h;\n h.S = f;\n h.width = [h.width];\n h.height = [h.height];\n var k = h.width;\n var l = h.height,\n m = new Td();\n if (null == m || null == a) var n = 2;\n else\n x(null != m),\n (n = Ad(a, b, c, m.width, m.height, m.Pd, m.Qd, m.format, null));\n 0 != n\n ? (k = 0)\n : (null != k && (k[0] = m.width[0]),\n null != l && (l[0] = m.height[0]),\n (k = 1));\n if (k) {\n h.width = h.width[0];\n h.height = h.height[0];\n null != d && (d[0] = h.width);\n null != e && (e[0] = h.height);\n b: {\n d = new Oa();\n e = new md();\n e.data = a;\n e.w = b;\n e.ha = c;\n e.kd = 1;\n b = [0];\n x(null != e);\n a = Ad(e.data, e.w, e.ha, null, null, null, b, null, e);\n (0 == a || 7 == a) && b[0] && (a = 4);\n b = a;\n if (0 == b) {\n x(null != g);\n d.data = e.data;\n d.w = e.w + e.offset;\n d.ha = e.ha - e.offset;\n d.put = kc;\n d.ac = gc;\n d.bc = lc;\n d.ma = g;\n if (e.xa) {\n a = Bc();\n if (null == a) {\n g = 1;\n break b;\n }\n if (te(a, d)) {\n b = Cd(d.width, d.height, g.Oa, g.ba);\n if ((d = 0 == b)) {\n c: {\n d = a;\n d: for (;;) {\n if (null == d) {\n d = 0;\n break c;\n }\n x(null != d.s.yc);\n x(null != d.s.Ya);\n x(0 < d.s.Wb);\n c = d.l;\n x(null != c);\n e = c.ma;\n x(null != e);\n if (0 != d.xb) {\n d.ca = e.ba;\n d.tb = e.tb;\n x(null != d.ca);\n if (!hc(e.Oa, c, Va)) {\n d.a = 2;\n break d;\n }\n if (!Ec(d, c.width)) break d;\n if (c.da) break d;\n (c.da || hb(d.ca.S)) && Aa();\n 11 > d.ca.S ||\n (alert(\"todo:WebPInitConvertARGBToYUV\"),\n null != d.ca.f.kb.F && Aa());\n if (\n d.Pb &&\n 0 < d.s.ua &&\n null == d.s.vb.X &&\n !Zb(d.s.vb, d.s.Wa.Xa)\n ) {\n d.a = 1;\n break d;\n }\n d.xb = 0;\n }\n if (!Jb(d, d.V, d.Ba, d.c, d.i, c.o, ge)) break d;\n e.Dc = d.Ma;\n d = 1;\n break c;\n }\n x(0 != d.a);\n d = 0;\n }\n d = !d;\n }\n d && (b = a.a);\n } else b = a.a;\n } else {\n a = new Ce();\n if (null == a) {\n g = 1;\n break b;\n }\n a.Fa = e.na;\n a.P = e.P;\n a.qc = e.Sa;\n if (Kc(a, d)) {\n if (((b = Cd(d.width, d.height, g.Oa, g.ba)), 0 == b)) {\n a.Aa = 0;\n c = g.Oa;\n e = a;\n x(null != e);\n if (null != c) {\n k = c.Md;\n k = 0 > k ? 0 : 100 < k ? 255 : (255 * k) / 100;\n if (0 < k) {\n for (l = m = 0; 4 > l; ++l)\n (n = e.pb[l]),\n 12 > n.lc &&\n (n.ia = (k * Qf[0 > n.lc ? 0 : n.lc]) >> 3),\n (m |= n.ia);\n m && (alert(\"todo:VP8InitRandom\"), (e.ia = 1));\n }\n e.Ga = c.Id;\n 100 < e.Ga ? (e.Ga = 100) : 0 > e.Ga && (e.Ga = 0);\n }\n Me(a, d) || (b = a.a);\n }\n } else b = a.a;\n }\n 0 == b && null != g.Oa && g.Oa.fd && (b = Bd(g.ba));\n }\n g = b;\n }\n f = 0 != g ? null : 11 > f ? h.f.RGBA.eb : h.f.kb.y;\n } else f = null;\n return f;\n };\n var Dd = [3, 4, 3, 4, 4, 2, 2, 4, 4, 4, 2, 1, 1];\n };\n new _WebPDecoder();\n\n /** @license\n * Copyright (c) 2017 Dominik Homberger\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nhttps://webpjs.appspot.com\nWebPRiffParser dominikhlbg@gmail.com\n*/\n\n function memcmp(data, data_off, str, size) {\n for (var i = 0; i < size; i++)\n if (data[data_off + i] != str.charCodeAt(i)) return true;\n return false;\n }\n\n function GetTag(data, data_off) {\n var str = \"\";\n for (var i = 0; i < 4; i++) str += String.fromCharCode(data[data_off++]);\n return str;\n }\n\n function GetLE16(data, data_off) {\n return (data[data_off + 0] << 0) | (data[data_off + 1] << 8);\n }\n\n function GetLE24(data, data_off) {\n return (\n ((data[data_off + 0] << 0) |\n (data[data_off + 1] << 8) |\n (data[data_off + 2] << 16)) >>>\n 0\n );\n }\n\n function GetLE32(data, data_off) {\n return (\n ((data[data_off + 0] << 0) |\n (data[data_off + 1] << 8) |\n (data[data_off + 2] << 16) |\n (data[data_off + 3] << 24)) >>>\n 0\n );\n }\n\n function WebPRiffParser(src, src_off) {\n var imagearray = {};\n var i = 0;\n var alpha_chunk = false;\n var alpha_size = 0;\n var alpha_offset = 0;\n imagearray[\"frames\"] = [];\n if (memcmp(src, src_off, \"RIFF\", 4)) return;\n src_off += 4;\n var riff_size = GetLE32(src, src_off) + 8;\n src_off += 8;\n\n while (src_off < src.length) {\n var fourcc = GetTag(src, src_off);\n src_off += 4;\n\n var payload_size = GetLE32(src, src_off);\n src_off += 4;\n var payload_size_padded = payload_size + (payload_size & 1);\n\n switch (fourcc) {\n case \"VP8 \":\n case \"VP8L\":\n if (typeof imagearray[\"frames\"][i] === \"undefined\")\n imagearray[\"frames\"][i] = {};\n var obj = imagearray[\"frames\"][i];\n var height = [0];\n var width = [0];\n obj[\"src_off\"] = alpha_chunk ? alpha_offset : src_off - 8;\n obj[\"src_size\"] = alpha_size + payload_size + 8;\n //var rgba = webpdecoder.WebPDecodeRGBA(src,(alpha_chunk?alpha_offset:src_off-8),alpha_size+payload_size+8,width,height);\n //imagearray[i]={'rgba':rgba,'width':width[0],'height':height[0]};\n i++;\n if (alpha_chunk) {\n alpha_chunk = false;\n alpha_size = 0;\n alpha_offset = 0;\n }\n break;\n case \"VP8X\":\n var obj = (imagearray[\"header\"] = {});\n var feature_flags = (obj[\"feature_flags\"] = src[src_off]);\n var src_off_ = src_off + 4;\n var canvas_width = (obj[\"canvas_width\"] = 1 + GetLE24(src, src_off_));\n src_off_ += 3;\n var canvas_height = (obj[\"canvas_height\"] =\n 1 + GetLE24(src, src_off_));\n src_off_ += 3;\n break;\n case \"ALPH\":\n alpha_chunk = true;\n alpha_size = payload_size_padded + 8;\n alpha_offset = src_off - 8;\n break;\n\n case \"ANIM\":\n var obj = imagearray[\"header\"];\n var bgcolor = (obj[\"bgcolor\"] = GetLE32(src, src_off));\n src_off_ = src_off + 4;\n\n var loop_count = (obj[\"loop_count\"] = GetLE16(src, src_off_));\n src_off_ += 2;\n break;\n case \"ANMF\":\n var offset_x = 0,\n offset_y = 0,\n width = 0,\n height = 0,\n duration = 0,\n blend = 0,\n dispose = 0,\n temp = 0;\n var obj = (imagearray[\"frames\"][i] = {});\n obj[\"offset_x\"] = offset_x = 2 * GetLE24(src, src_off);\n src_off += 3;\n obj[\"offset_y\"] = offset_y = 2 * GetLE24(src, src_off);\n src_off += 3;\n obj[\"width\"] = width = 1 + GetLE24(src, src_off);\n src_off += 3;\n obj[\"height\"] = height = 1 + GetLE24(src, src_off);\n src_off += 3;\n obj[\"duration\"] = duration = GetLE24(src, src_off);\n src_off += 3;\n temp = src[src_off++];\n obj[\"dispose\"] = dispose = temp & 1;\n obj[\"blend\"] = blend = (temp >> 1) & 1;\n break;\n default:\n }\n if (fourcc != \"ANMF\") src_off += payload_size_padded;\n }\n return imagearray;\n }\n\n var height = [0];\n var width = [0];\n var pixels = [];\n var webpdecoder = new _WebPDecoder();\n\n var response = imageData;\n var imagearray = WebPRiffParser(response, 0);\n imagearray[\"response\"] = response;\n imagearray[\"rgbaoutput\"] = true;\n imagearray[\"dataurl\"] = false;\n\n var header = imagearray[\"header\"] ? imagearray[\"header\"] : null;\n var frames = imagearray[\"frames\"] ? imagearray[\"frames\"] : null;\n\n if (header) {\n header[\"loop_counter\"] = header[\"loop_count\"];\n height = [header[\"canvas_height\"]];\n width = [header[\"canvas_width\"]];\n\n var blend = false;\n for (var f = 0; f < frames.length; f++)\n if (frames[f][\"blend\"] == 0) {\n blend = true;\n break;\n }\n }\n\n var frame = frames[0];\n var rgba = webpdecoder.WebPDecodeRGBA(\n response,\n frame[\"src_off\"],\n frame[\"src_size\"],\n width,\n height\n );\n frame[\"rgba\"] = rgba;\n frame[\"imgwidth\"] = width[0];\n frame[\"imgheight\"] = height[0];\n\n for (var i = 0; i < width[0] * height[0] * 4; i++) {\n pixels[i] = rgba[i];\n }\n\n this.width = width;\n this.height = height;\n this.data = pixels;\n return this;\n}\n\nWebPDecoder.prototype.getData = function() {\n return this.data;\n};\n\nexport { WebPDecoder };\n","/**\n * @license\n *\n * Copyright (c) 2014 James Robb, https://github.com/jamesbrobb\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { zlibSync } from \"../libs/fflate.js\";\nimport { PNG } from \"../libs/png.js\";\n\n/**\n * jsPDF PNG PlugIn\n * @name png_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /*\n * @see http://www.w3.org/TR/PNG-Chunks.html\n *\n Color Allowed Interpretation\n Type Bit Depths\n\n 0 1,2,4,8,16 Each pixel is a grayscale sample.\n\n 2 8,16 Each pixel is an R,G,B triple.\n\n 3 1,2,4,8 Each pixel is a palette index;\n a PLTE chunk must appear.\n\n 4 8,16 Each pixel is a grayscale sample,\n followed by an alpha sample.\n\n 6 8,16 Each pixel is an R,G,B triple,\n followed by an alpha sample.\n */\n\n /*\n * PNG filter method types\n *\n * @see http://www.w3.org/TR/PNG-Filters.html\n * @see http://www.libpng.org/pub/png/book/chapter09.html\n *\n * This is what the value 'Predictor' in decode params relates to\n *\n * 15 is \"optimal prediction\", which means the prediction algorithm can change from line to line.\n * In that case, you actually have to read the first byte off each line for the prediction algorthim (which should be 0-4, corresponding to PDF 10-14) and select the appropriate unprediction algorithm based on that byte.\n *\n 0 None\n 1 Sub\n 2 Up\n 3 Average\n 4 Paeth\n */\n\n var canCompress = function(value) {\n return value !== jsPDFAPI.image_compression.NONE && hasCompressionJS();\n };\n\n var hasCompressionJS = function() {\n return typeof zlibSync === \"function\";\n };\n var compressBytes = function(bytes, lineLength, colorsPerPixel, compression) {\n var level = 4;\n var filter_method = filterUp;\n\n switch (compression) {\n case jsPDFAPI.image_compression.FAST:\n level = 1;\n filter_method = filterSub;\n break;\n\n case jsPDFAPI.image_compression.MEDIUM:\n level = 6;\n filter_method = filterAverage;\n break;\n\n case jsPDFAPI.image_compression.SLOW:\n level = 9;\n filter_method = filterPaeth;\n break;\n }\n\n bytes = applyPngFilterMethod(\n bytes,\n lineLength,\n colorsPerPixel,\n filter_method\n );\n var dat = zlibSync(bytes, { level: level });\n return jsPDFAPI.__addimage__.arrayBufferToBinaryString(dat);\n };\n\n var applyPngFilterMethod = function(\n bytes,\n lineLength,\n colorsPerPixel,\n filter_method\n ) {\n var lines = bytes.length / lineLength,\n result = new Uint8Array(bytes.length + lines),\n filter_methods = getFilterMethods(),\n line,\n prevLine,\n offset;\n\n for (var i = 0; i < lines; i += 1) {\n offset = i * lineLength;\n line = bytes.subarray(offset, offset + lineLength);\n\n if (filter_method) {\n result.set(filter_method(line, colorsPerPixel, prevLine), offset + i);\n } else {\n var len = filter_methods.length,\n results = [];\n\n for (var j; j < len; j += 1) {\n results[j] = filter_methods[j](line, colorsPerPixel, prevLine);\n }\n\n var ind = getIndexOfSmallestSum(results.concat());\n\n result.set(results[ind], offset + i);\n }\n\n prevLine = line;\n }\n\n return result;\n };\n\n var filterNone = function(line) {\n /*var result = new Uint8Array(line.length + 1);\n result[0] = 0;\n result.set(line, 1);*/\n\n var result = Array.apply([], line);\n result.unshift(0);\n\n return result;\n };\n\n var filterSub = function(line, colorsPerPixel) {\n var result = [],\n len = line.length,\n left;\n\n result[0] = 1;\n\n for (var i = 0; i < len; i += 1) {\n left = line[i - colorsPerPixel] || 0;\n result[i + 1] = (line[i] - left + 0x0100) & 0xff;\n }\n\n return result;\n };\n\n var filterUp = function(line, colorsPerPixel, prevLine) {\n var result = [],\n len = line.length,\n up;\n\n result[0] = 2;\n\n for (var i = 0; i < len; i += 1) {\n up = (prevLine && prevLine[i]) || 0;\n result[i + 1] = (line[i] - up + 0x0100) & 0xff;\n }\n\n return result;\n };\n\n var filterAverage = function(line, colorsPerPixel, prevLine) {\n var result = [],\n len = line.length,\n left,\n up;\n\n result[0] = 3;\n\n for (var i = 0; i < len; i += 1) {\n left = line[i - colorsPerPixel] || 0;\n up = (prevLine && prevLine[i]) || 0;\n result[i + 1] = (line[i] + 0x0100 - ((left + up) >>> 1)) & 0xff;\n }\n\n return result;\n };\n\n var filterPaeth = function(line, colorsPerPixel, prevLine) {\n var result = [],\n len = line.length,\n left,\n up,\n upLeft,\n paeth;\n\n result[0] = 4;\n\n for (var i = 0; i < len; i += 1) {\n left = line[i - colorsPerPixel] || 0;\n up = (prevLine && prevLine[i]) || 0;\n upLeft = (prevLine && prevLine[i - colorsPerPixel]) || 0;\n paeth = paethPredictor(left, up, upLeft);\n result[i + 1] = (line[i] - paeth + 0x0100) & 0xff;\n }\n\n return result;\n };\n\n var paethPredictor = function(left, up, upLeft) {\n if (left === up && up === upLeft) {\n return left;\n }\n var pLeft = Math.abs(up - upLeft),\n pUp = Math.abs(left - upLeft),\n pUpLeft = Math.abs(left + up - upLeft - upLeft);\n return pLeft <= pUp && pLeft <= pUpLeft\n ? left\n : pUp <= pUpLeft\n ? up\n : upLeft;\n };\n\n var getFilterMethods = function() {\n return [filterNone, filterSub, filterUp, filterAverage, filterPaeth];\n };\n\n var getIndexOfSmallestSum = function(arrays) {\n var sum = arrays.map(function(value) {\n return value.reduce(function(pv, cv) {\n return pv + Math.abs(cv);\n }, 0);\n });\n return sum.indexOf(Math.min.apply(null, sum));\n };\n\n var getPredictorFromCompression = function(compression) {\n var predictor;\n switch (compression) {\n case jsPDFAPI.image_compression.FAST:\n predictor = 11;\n break;\n\n case jsPDFAPI.image_compression.MEDIUM:\n predictor = 13;\n break;\n\n case jsPDFAPI.image_compression.SLOW:\n predictor = 14;\n break;\n\n default:\n predictor = 12;\n break;\n }\n return predictor;\n };\n\n /**\n * @name processPNG\n * @function\n * @ignore\n */\n jsPDFAPI.processPNG = function(imageData, index, alias, compression) {\n \"use strict\";\n\n var colorSpace,\n filter = this.decode.FLATE_DECODE,\n bitsPerComponent,\n image,\n decodeParameters = \"\",\n trns,\n colors,\n pal,\n smask,\n pixels,\n len,\n alphaData,\n imgData,\n hasColors,\n pixel,\n i,\n n;\n\n if (this.__addimage__.isArrayBuffer(imageData))\n imageData = new Uint8Array(imageData);\n\n if (this.__addimage__.isArrayBufferView(imageData)) {\n image = new PNG(imageData);\n imageData = image.imgData;\n bitsPerComponent = image.bits;\n colorSpace = image.colorSpace;\n colors = image.colors;\n\n /*\n * colorType 6 - Each pixel is an R,G,B triple, followed by an alpha sample.\n *\n * colorType 4 - Each pixel is a grayscale sample, followed by an alpha sample.\n *\n * Extract alpha to create two separate images, using the alpha as a sMask\n */\n if ([4, 6].indexOf(image.colorType) !== -1) {\n /*\n * processes 8 bit RGBA and grayscale + alpha images\n */\n if (image.bits === 8) {\n pixels =\n image.pixelBitlength == 32\n ? new Uint32Array(image.decodePixels().buffer)\n : image.pixelBitlength == 16\n ? new Uint16Array(image.decodePixels().buffer)\n : new Uint8Array(image.decodePixels().buffer);\n len = pixels.length;\n imgData = new Uint8Array(len * image.colors);\n alphaData = new Uint8Array(len);\n var pDiff = image.pixelBitlength - image.bits;\n i = 0;\n n = 0;\n var pbl;\n\n for (; i < len; i++) {\n pixel = pixels[i];\n pbl = 0;\n\n while (pbl < pDiff) {\n imgData[n++] = (pixel >>> pbl) & 0xff;\n pbl = pbl + image.bits;\n }\n\n alphaData[i] = (pixel >>> pbl) & 0xff;\n }\n }\n\n /*\n * processes 16 bit RGBA and grayscale + alpha images\n */\n if (image.bits === 16) {\n pixels = new Uint32Array(image.decodePixels().buffer);\n len = pixels.length;\n imgData = new Uint8Array(\n len * (32 / image.pixelBitlength) * image.colors\n );\n alphaData = new Uint8Array(len * (32 / image.pixelBitlength));\n hasColors = image.colors > 1;\n i = 0;\n n = 0;\n var a = 0;\n\n while (i < len) {\n pixel = pixels[i++];\n\n imgData[n++] = (pixel >>> 0) & 0xff;\n\n if (hasColors) {\n imgData[n++] = (pixel >>> 16) & 0xff;\n\n pixel = pixels[i++];\n imgData[n++] = (pixel >>> 0) & 0xff;\n }\n\n alphaData[a++] = (pixel >>> 16) & 0xff;\n }\n bitsPerComponent = 8;\n }\n\n if (canCompress(compression)) {\n imageData = compressBytes(\n imgData,\n image.width * image.colors,\n image.colors,\n compression\n );\n smask = compressBytes(alphaData, image.width, 1, compression);\n } else {\n imageData = imgData;\n smask = alphaData;\n filter = undefined;\n }\n }\n\n /*\n * Indexed png. Each pixel is a palette index.\n */\n if (image.colorType === 3) {\n colorSpace = this.color_spaces.INDEXED;\n pal = image.palette;\n\n if (image.transparency.indexed) {\n var trans = image.transparency.indexed;\n var total = 0;\n i = 0;\n len = trans.length;\n\n for (; i < len; ++i) {\n total += trans[i];\n }\n\n total = total / 255;\n\n /*\n * a single color is specified as 100% transparent (0),\n * so we set trns to use a /Mask with that index\n */\n if (total === len - 1 && trans.indexOf(0) !== -1) {\n trns = [trans.indexOf(0)];\n\n /*\n * there's more than one colour within the palette that specifies\n * a transparency value less than 255, so we unroll the pixels to create an image sMask\n */\n } else if (total !== len) {\n pixels = image.decodePixels();\n alphaData = new Uint8Array(pixels.length);\n i = 0;\n len = pixels.length;\n\n for (; i < len; i++) {\n alphaData[i] = trans[pixels[i]];\n }\n\n smask = compressBytes(alphaData, image.width, 1);\n }\n }\n }\n\n var predictor = getPredictorFromCompression(compression);\n\n if (filter === this.decode.FLATE_DECODE) {\n decodeParameters = \"/Predictor \" + predictor + \" \";\n }\n decodeParameters +=\n \"/Colors \" +\n colors +\n \" /BitsPerComponent \" +\n bitsPerComponent +\n \" /Columns \" +\n image.width;\n\n if (\n this.__addimage__.isArrayBuffer(imageData) ||\n this.__addimage__.isArrayBufferView(imageData)\n ) {\n imageData = this.__addimage__.arrayBufferToBinaryString(imageData);\n }\n\n if (\n (smask && this.__addimage__.isArrayBuffer(smask)) ||\n this.__addimage__.isArrayBufferView(smask)\n ) {\n smask = this.__addimage__.arrayBufferToBinaryString(smask);\n }\n\n return {\n alias: alias,\n data: imageData,\n index: index,\n filter: filter,\n decodeParameters: decodeParameters,\n transparency: trns,\n palette: pal,\n sMask: smask,\n predictor: predictor,\n width: image.width,\n height: image.height,\n bitsPerComponent: bitsPerComponent,\n colorSpace: colorSpace\n };\n }\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2017 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { GifReader } from \"../libs/omggif.js\";\nimport { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\n\n/**\n * jsPDF Gif Support PlugIn\n *\n * @name gif_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n jsPDFAPI.processGIF89A = function(imageData, index, alias, compression) {\n var reader = new GifReader(imageData);\n var width = reader.width,\n height = reader.height;\n var qu = 100;\n var pixels = [];\n\n reader.decodeAndBlitFrameRGBA(0, pixels);\n var rawImageData = {\n data: pixels,\n width: width,\n height: height\n };\n\n var encoder = new JPEGEncoder(qu);\n var data = encoder.encode(rawImageData, qu);\n return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n };\n\n jsPDFAPI.processGIF87A = jsPDFAPI.processGIF89A;\n})(jsPDF.API);\n","import { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\nimport { BmpDecoder } from \"../libs/BMPDecoder.js\";\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @license\n * Copyright (c) 2018 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF bmp Support PlugIn\n * @name bmp_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n jsPDFAPI.processBMP = function(imageData, index, alias, compression) {\n var reader = new BmpDecoder(imageData, false);\n var width = reader.width,\n height = reader.height;\n var qu = 100;\n var pixels = reader.getData();\n\n var rawImageData = {\n data: pixels,\n width: width,\n height: height\n };\n\n var encoder = new JPEGEncoder(qu);\n var data = encoder.encode(rawImageData, qu);\n return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2019 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\nimport { WebPDecoder } from \"../libs/WebPDecoder.js\";\n\n/**\n * jsPDF webp Support PlugIn\n *\n * @name webp_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n jsPDFAPI.processWEBP = function(imageData, index, alias, compression) {\n var reader = new WebPDecoder(imageData, false);\n var width = reader.width,\n height = reader.height;\n var qu = 100;\n var pixels = reader.getData();\n\n var rawImageData = {\n data: pixels,\n width: width,\n height: height\n };\n\n var encoder = new JPEGEncoder(qu);\n var data = encoder.encode(rawImageData, qu);\n return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n };\n})(jsPDF.API);\n","/**\n * @license\n *\n * Copyright (c) 2021 Antti Palola, https://github.com/Pantura\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF RGBA array PlugIn\n * @name rgba_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * @name processRGBA\n * @function\n *\n * Process RGBA Array. This is a one-dimension array with pixel data [red, green, blue, alpha, red, green, ...].\n * RGBA array data can be obtained from DOM canvas getImageData.\n * @ignore\n */\n jsPDFAPI.processRGBA = function(imageData, index, alias) {\n \"use strict\";\n\n var imagePixels = imageData.data;\n var length = imagePixels.length;\n // jsPDF takes alpha data separately so extract that.\n var rgbOut = new Uint8Array((length / 4) * 3);\n var alphaOut = new Uint8Array(length / 4);\n var outIndex = 0;\n var alphaIndex = 0;\n\n for (var i = 0; i < length; i += 4) {\n var r = imagePixels[i];\n var g = imagePixels[i + 1];\n var b = imagePixels[i + 2];\n var alpha = imagePixels[i + 3];\n rgbOut[outIndex++] = r;\n rgbOut[outIndex++] = g;\n rgbOut[outIndex++] = b;\n alphaOut[alphaIndex++] = alpha;\n }\n\n var rgbData = this.__addimage__.arrayBufferToBinaryString(rgbOut);\n var alphaData = this.__addimage__.arrayBufferToBinaryString(alphaOut);\n\n return {\n alpha: alphaData,\n data: rgbData,\n index: index,\n alias: alias,\n colorSpace: \"DeviceRGB\",\n bitsPerComponent: 8,\n width: imageData.width,\n height: imageData.height\n };\n };\n})(jsPDF.API);\n","/**\n * @license\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF setLanguage Plugin\n *\n * @name setLanguage\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * Add Language Tag to the generated PDF\n *\n * @name setLanguage\n * @function\n * @param {string} langCode The Language code as ISO-639-1 (e.g. 'en') or as country language code (e.g. 'en-GB').\n * @returns {jsPDF}\n * @example\n * var doc = new jsPDF()\n * doc.text(10, 10, 'This is a test')\n * doc.setLanguage(\"en-US\")\n * doc.save('english.pdf')\n */\n jsPDFAPI.setLanguage = function(langCode) {\n \"use strict\";\n\n var langCodes = {\n af: \"Afrikaans\",\n sq: \"Albanian\",\n ar: \"Arabic (Standard)\",\n \"ar-DZ\": \"Arabic (Algeria)\",\n \"ar-BH\": \"Arabic (Bahrain)\",\n \"ar-EG\": \"Arabic (Egypt)\",\n \"ar-IQ\": \"Arabic (Iraq)\",\n \"ar-JO\": \"Arabic (Jordan)\",\n \"ar-KW\": \"Arabic (Kuwait)\",\n \"ar-LB\": \"Arabic (Lebanon)\",\n \"ar-LY\": \"Arabic (Libya)\",\n \"ar-MA\": \"Arabic (Morocco)\",\n \"ar-OM\": \"Arabic (Oman)\",\n \"ar-QA\": \"Arabic (Qatar)\",\n \"ar-SA\": \"Arabic (Saudi Arabia)\",\n \"ar-SY\": \"Arabic (Syria)\",\n \"ar-TN\": \"Arabic (Tunisia)\",\n \"ar-AE\": \"Arabic (U.A.E.)\",\n \"ar-YE\": \"Arabic (Yemen)\",\n an: \"Aragonese\",\n hy: \"Armenian\",\n as: \"Assamese\",\n ast: \"Asturian\",\n az: \"Azerbaijani\",\n eu: \"Basque\",\n be: \"Belarusian\",\n bn: \"Bengali\",\n bs: \"Bosnian\",\n br: \"Breton\",\n bg: \"Bulgarian\",\n my: \"Burmese\",\n ca: \"Catalan\",\n ch: \"Chamorro\",\n ce: \"Chechen\",\n zh: \"Chinese\",\n \"zh-HK\": \"Chinese (Hong Kong)\",\n \"zh-CN\": \"Chinese (PRC)\",\n \"zh-SG\": \"Chinese (Singapore)\",\n \"zh-TW\": \"Chinese (Taiwan)\",\n cv: \"Chuvash\",\n co: \"Corsican\",\n cr: \"Cree\",\n hr: \"Croatian\",\n cs: \"Czech\",\n da: \"Danish\",\n nl: \"Dutch (Standard)\",\n \"nl-BE\": \"Dutch (Belgian)\",\n en: \"English\",\n \"en-AU\": \"English (Australia)\",\n \"en-BZ\": \"English (Belize)\",\n \"en-CA\": \"English (Canada)\",\n \"en-IE\": \"English (Ireland)\",\n \"en-JM\": \"English (Jamaica)\",\n \"en-NZ\": \"English (New Zealand)\",\n \"en-PH\": \"English (Philippines)\",\n \"en-ZA\": \"English (South Africa)\",\n \"en-TT\": \"English (Trinidad & Tobago)\",\n \"en-GB\": \"English (United Kingdom)\",\n \"en-US\": \"English (United States)\",\n \"en-ZW\": \"English (Zimbabwe)\",\n eo: \"Esperanto\",\n et: \"Estonian\",\n fo: \"Faeroese\",\n fj: \"Fijian\",\n fi: \"Finnish\",\n fr: \"French (Standard)\",\n \"fr-BE\": \"French (Belgium)\",\n \"fr-CA\": \"French (Canada)\",\n \"fr-FR\": \"French (France)\",\n \"fr-LU\": \"French (Luxembourg)\",\n \"fr-MC\": \"French (Monaco)\",\n \"fr-CH\": \"French (Switzerland)\",\n fy: \"Frisian\",\n fur: \"Friulian\",\n gd: \"Gaelic (Scots)\",\n \"gd-IE\": \"Gaelic (Irish)\",\n gl: \"Galacian\",\n ka: \"Georgian\",\n de: \"German (Standard)\",\n \"de-AT\": \"German (Austria)\",\n \"de-DE\": \"German (Germany)\",\n \"de-LI\": \"German (Liechtenstein)\",\n \"de-LU\": \"German (Luxembourg)\",\n \"de-CH\": \"German (Switzerland)\",\n el: \"Greek\",\n gu: \"Gujurati\",\n ht: \"Haitian\",\n he: \"Hebrew\",\n hi: \"Hindi\",\n hu: \"Hungarian\",\n is: \"Icelandic\",\n id: \"Indonesian\",\n iu: \"Inuktitut\",\n ga: \"Irish\",\n it: \"Italian (Standard)\",\n \"it-CH\": \"Italian (Switzerland)\",\n ja: \"Japanese\",\n kn: \"Kannada\",\n ks: \"Kashmiri\",\n kk: \"Kazakh\",\n km: \"Khmer\",\n ky: \"Kirghiz\",\n tlh: \"Klingon\",\n ko: \"Korean\",\n \"ko-KP\": \"Korean (North Korea)\",\n \"ko-KR\": \"Korean (South Korea)\",\n la: \"Latin\",\n lv: \"Latvian\",\n lt: \"Lithuanian\",\n lb: \"Luxembourgish\",\n mk: \"North Macedonia\",\n ms: \"Malay\",\n ml: \"Malayalam\",\n mt: \"Maltese\",\n mi: \"Maori\",\n mr: \"Marathi\",\n mo: \"Moldavian\",\n nv: \"Navajo\",\n ng: \"Ndonga\",\n ne: \"Nepali\",\n no: \"Norwegian\",\n nb: \"Norwegian (Bokmal)\",\n nn: \"Norwegian (Nynorsk)\",\n oc: \"Occitan\",\n or: \"Oriya\",\n om: \"Oromo\",\n fa: \"Persian\",\n \"fa-IR\": \"Persian/Iran\",\n pl: \"Polish\",\n pt: \"Portuguese\",\n \"pt-BR\": \"Portuguese (Brazil)\",\n pa: \"Punjabi\",\n \"pa-IN\": \"Punjabi (India)\",\n \"pa-PK\": \"Punjabi (Pakistan)\",\n qu: \"Quechua\",\n rm: \"Rhaeto-Romanic\",\n ro: \"Romanian\",\n \"ro-MO\": \"Romanian (Moldavia)\",\n ru: \"Russian\",\n \"ru-MO\": \"Russian (Moldavia)\",\n sz: \"Sami (Lappish)\",\n sg: \"Sango\",\n sa: \"Sanskrit\",\n sc: \"Sardinian\",\n sd: \"Sindhi\",\n si: \"Singhalese\",\n sr: \"Serbian\",\n sk: \"Slovak\",\n sl: \"Slovenian\",\n so: \"Somani\",\n sb: \"Sorbian\",\n es: \"Spanish\",\n \"es-AR\": \"Spanish (Argentina)\",\n \"es-BO\": \"Spanish (Bolivia)\",\n \"es-CL\": \"Spanish (Chile)\",\n \"es-CO\": \"Spanish (Colombia)\",\n \"es-CR\": \"Spanish (Costa Rica)\",\n \"es-DO\": \"Spanish (Dominican Republic)\",\n \"es-EC\": \"Spanish (Ecuador)\",\n \"es-SV\": \"Spanish (El Salvador)\",\n \"es-GT\": \"Spanish (Guatemala)\",\n \"es-HN\": \"Spanish (Honduras)\",\n \"es-MX\": \"Spanish (Mexico)\",\n \"es-NI\": \"Spanish (Nicaragua)\",\n \"es-PA\": \"Spanish (Panama)\",\n \"es-PY\": \"Spanish (Paraguay)\",\n \"es-PE\": \"Spanish (Peru)\",\n \"es-PR\": \"Spanish (Puerto Rico)\",\n \"es-ES\": \"Spanish (Spain)\",\n \"es-UY\": \"Spanish (Uruguay)\",\n \"es-VE\": \"Spanish (Venezuela)\",\n sx: \"Sutu\",\n sw: \"Swahili\",\n sv: \"Swedish\",\n \"sv-FI\": \"Swedish (Finland)\",\n \"sv-SV\": \"Swedish (Sweden)\",\n ta: \"Tamil\",\n tt: \"Tatar\",\n te: \"Teluga\",\n th: \"Thai\",\n tig: \"Tigre\",\n ts: \"Tsonga\",\n tn: \"Tswana\",\n tr: \"Turkish\",\n tk: \"Turkmen\",\n uk: \"Ukrainian\",\n hsb: \"Upper Sorbian\",\n ur: \"Urdu\",\n ve: \"Venda\",\n vi: \"Vietnamese\",\n vo: \"Volapuk\",\n wa: \"Walloon\",\n cy: \"Welsh\",\n xh: \"Xhosa\",\n ji: \"Yiddish\",\n zu: \"Zulu\"\n };\n\n if (this.internal.languageSettings === undefined) {\n this.internal.languageSettings = {};\n this.internal.languageSettings.isSubscribed = false;\n }\n\n if (langCodes[langCode] !== undefined) {\n this.internal.languageSettings.languageCode = langCode;\n if (this.internal.languageSettings.isSubscribed === false) {\n this.internal.events.subscribe(\"putCatalog\", function() {\n this.internal.write(\n \"/Lang (\" + this.internal.languageSettings.languageCode + \")\"\n );\n });\n this.internal.languageSettings.isSubscribed = true;\n }\n }\n return this;\n };\n})(jsPDF.API);\n","/** @license\n jsPDF standard_fonts_metrics plugin\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n * MIT license.\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n * \n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * This file adds the standard font metrics to jsPDF.\n *\n * Font metrics data is reprocessed derivative of contents of\n * \"Font Metrics for PDF Core 14 Fonts\" package, which exhibits the following copyright and license:\n *\n * Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.\n *\n * This file and the 14 PostScript(R) AFM files it accompanies may be used,\n * copied, and distributed for any purpose and without charge, with or without\n * modification, provided that all copyright notices are retained; that the AFM\n * files are not distributed without this file; that all modifications to this\n * file or any of the AFM files are prominently noted in the modified file(s);\n * and that this paragraph is not modified. Adobe Systems has no responsibility\n * or obligation to support the use of the AFM files.\n *\n * @name standard_fonts_metrics\n * @module\n */\n\n(function(API) {\n \"use strict\";\n API.__fontmetrics__ = API.__fontmetrics__ || {};\n\n var decoded = \"0123456789abcdef\",\n encoded = \"klmnopqrstuvwxyz\",\n mappingUncompress = {},\n mappingCompress = {};\n\n for (var i = 0; i < encoded.length; i++) {\n mappingUncompress[encoded[i]] = decoded[i];\n mappingCompress[decoded[i]] = encoded[i];\n }\n\n var hex = function(value) {\n return \"0x\" + parseInt(value, 10).toString(16);\n };\n\n var compress = (API.__fontmetrics__.compress = function(data) {\n var vals = [\"{\"];\n var value, keystring, valuestring, numberprefix;\n\n for (var key in data) {\n value = data[key];\n\n if (!isNaN(parseInt(key, 10))) {\n key = parseInt(key, 10);\n keystring = hex(key).slice(2);\n keystring =\n keystring.slice(0, -1) + mappingCompress[keystring.slice(-1)];\n } else {\n keystring = \"'\" + key + \"'\";\n }\n\n if (typeof value == \"number\") {\n if (value < 0) {\n valuestring = hex(value).slice(3);\n numberprefix = \"-\";\n } else {\n valuestring = hex(value).slice(2);\n numberprefix = \"\";\n }\n valuestring =\n numberprefix +\n valuestring.slice(0, -1) +\n mappingCompress[valuestring.slice(-1)];\n } else {\n if (typeof value === \"object\") {\n valuestring = compress(value);\n } else {\n throw new Error(\n \"Don't know what to do with value type \" + typeof value + \".\"\n );\n }\n }\n vals.push(keystring + valuestring);\n }\n vals.push(\"}\");\n return vals.join(\"\");\n });\n\n /**\n * Uncompresses data compressed into custom, base16-like format.\n *\n * @public\n * @function\n * @param\n * @returns {Type}\n */\n var uncompress = (API.__fontmetrics__.uncompress = function(data) {\n if (typeof data !== \"string\") {\n throw new Error(\"Invalid argument passed to uncompress.\");\n }\n\n var output = {},\n sign = 1,\n stringparts, // undef. will be [] in string mode\n activeobject = output,\n parentchain = [],\n parent_key_pair,\n keyparts = \"\",\n valueparts = \"\",\n key, // undef. will be Truthy when Key is resolved.\n datalen = data.length - 1, // stripping ending }\n ch;\n\n for (var i = 1; i < datalen; i += 1) {\n // - { } ' are special.\n\n ch = data[i];\n\n if (ch == \"'\") {\n if (stringparts) {\n // end of string mode\n key = stringparts.join(\"\");\n stringparts = undefined;\n } else {\n // start of string mode\n stringparts = [];\n }\n } else if (stringparts) {\n stringparts.push(ch);\n } else if (ch == \"{\") {\n // start of object\n parentchain.push([activeobject, key]);\n activeobject = {};\n key = undefined;\n } else if (ch == \"}\") {\n // end of object\n parent_key_pair = parentchain.pop();\n parent_key_pair[0][parent_key_pair[1]] = activeobject;\n key = undefined;\n activeobject = parent_key_pair[0];\n } else if (ch == \"-\") {\n sign = -1;\n } else {\n // must be number\n if (key === undefined) {\n if (mappingUncompress.hasOwnProperty(ch)) {\n keyparts += mappingUncompress[ch];\n key = parseInt(keyparts, 16) * sign;\n sign = +1;\n keyparts = \"\";\n } else {\n keyparts += ch;\n }\n } else {\n if (mappingUncompress.hasOwnProperty(ch)) {\n valueparts += mappingUncompress[ch];\n activeobject[key] = parseInt(valueparts, 16) * sign;\n sign = +1;\n key = undefined;\n valueparts = \"\";\n } else {\n valueparts += ch;\n }\n }\n }\n }\n return output;\n });\n\n // encoding = 'Unicode'\n // NOT UTF8, NOT UTF16BE/LE, NOT UCS2BE/LE. NO clever BOM behavior\n // Actual 16bit char codes used.\n // no multi-byte logic here\n\n // Unicode characters to WinAnsiEncoding:\n // {402: 131, 8211: 150, 8212: 151, 8216: 145, 8217: 146, 8218: 130, 8220: 147, 8221: 148, 8222: 132, 8224: 134, 8225: 135, 8226: 149, 8230: 133, 8364: 128, 8240:137, 8249: 139, 8250: 155, 710: 136, 8482: 153, 338: 140, 339: 156, 732: 152, 352: 138, 353: 154, 376: 159, 381: 142, 382: 158}\n // as you can see, all Unicode chars are outside of 0-255 range. No char code conflicts.\n // this means that you can give Win cp1252 encoded strings to jsPDF for rendering directly\n // as well as give strings with some (supported by these fonts) Unicode characters and\n // these will be mapped to win cp1252\n // for example, you can send char code (cp1252) 0x80 or (unicode) 0x20AC, getting \"Euro\" glyph displayed in both cases.\n\n var encodingBlock = {\n codePages: [\"WinAnsiEncoding\"],\n WinAnsiEncoding: uncompress(\n \"{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}\"\n )\n };\n var encodings = {\n Unicode: {\n Courier: encodingBlock,\n \"Courier-Bold\": encodingBlock,\n \"Courier-BoldOblique\": encodingBlock,\n \"Courier-Oblique\": encodingBlock,\n Helvetica: encodingBlock,\n \"Helvetica-Bold\": encodingBlock,\n \"Helvetica-BoldOblique\": encodingBlock,\n \"Helvetica-Oblique\": encodingBlock,\n \"Times-Roman\": encodingBlock,\n \"Times-Bold\": encodingBlock,\n \"Times-BoldItalic\": encodingBlock,\n \"Times-Italic\": encodingBlock\n //\t, 'Symbol'\n //\t, 'ZapfDingbats'\n }\n };\n\n var fontMetrics = {\n Unicode: {\n // all sizing numbers are n/fontMetricsFractionOf = one font size unit\n // this means that if fontMetricsFractionOf = 1000, and letter A's width is 476, it's\n // width is 476/1000 or 47.6% of its height (regardless of font size)\n // At this time this value applies to \"widths\" and \"kerning\" numbers.\n\n // char code 0 represents \"default\" (average) width - use it for chars missing in this table.\n // key 'fof' represents the \"fontMetricsFractionOf\" value\n\n \"Courier-Oblique\": uncompress(\n \"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"\n ),\n \"Times-BoldItalic\": uncompress(\n \"{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}\"\n ),\n \"Helvetica-Bold\": uncompress(\n \"{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}\"\n ),\n Courier: uncompress(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\n \"Courier-BoldOblique\": uncompress(\n \"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"\n ),\n \"Times-Bold\": uncompress(\n \"{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}\"\n ),\n Symbol: uncompress(\n \"{'widths'{k3uaw4r19m3m2k1t2l2l202m2y2n3m2p5n202q6o3k3m2s2l2t2l2v3r2w1t3m3m2y1t2z1wbk2sbl3r'fof'6o3n3m3o3m3p3m3q3m3r3m3s3m3t3m3u1w3v1w3w3r3x3r3y3r3z2wbp3t3l3m5v2l5x2l5z3m2q4yfr3r7v3k7w1o7x3k}'kerning'{'fof'-6o}}\"\n ),\n Helvetica: uncompress(\n \"{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}\"\n ),\n \"Helvetica-BoldOblique\": uncompress(\n \"{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}\"\n ),\n ZapfDingbats: uncompress(\"{'widths'{k4u2k1w'fof'6o}'kerning'{'fof'-6o}}\"),\n \"Courier-Bold\": uncompress(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\n \"Times-Italic\": uncompress(\n \"{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}\"\n ),\n \"Times-Roman\": uncompress(\n \"{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}\"\n ),\n \"Helvetica-Oblique\": uncompress(\n \"{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}\"\n )\n }\n };\n\n /*\n\tThis event handler is fired when a new jsPDF object is initialized\n\tThis event handler appends metrics data to standard fonts within\n\tthat jsPDF instance. The metrics are mapped over Unicode character\n\tcodes, NOT CIDs or other codes matching the StandardEncoding table of the\n\tstandard PDF fonts.\n\tFuture:\n\tAlso included is the encoding maping table, converting Unicode (UCS-2, UTF-16)\n\tchar codes to StandardEncoding character codes. The encoding table is to be used\n\tsomewhere around \"pdfEscape\" call.\n\t*/\n API.events.push([\n \"addFont\",\n function(data) {\n var font = data.font;\n\n var metrics = fontMetrics[\"Unicode\"][font.postScriptName];\n if (metrics) {\n font.metadata[\"Unicode\"] = {};\n font.metadata[\"Unicode\"].widths = metrics.widths;\n font.metadata[\"Unicode\"].kerning = metrics.kerning;\n }\n\n var encodingBlock = encodings[\"Unicode\"][font.postScriptName];\n if (encodingBlock) {\n font.metadata[\"Unicode\"].encoding = encodingBlock;\n font.encoding = encodingBlock.codePages[0];\n }\n }\n ]); // end of adding event handler\n})(jsPDF.API);\n","/**\n * @license\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { atob } from \"../libs/AtobBtoa.js\";\n\n/**\n * @name ttfsupport\n * @module\n */\n(function(jsPDF) {\n \"use strict\";\n\n var binaryStringToUint8Array = function(binary_string) {\n var len = binary_string.length;\n var bytes = new Uint8Array(len);\n for (var i = 0; i < len; i++) {\n bytes[i] = binary_string.charCodeAt(i);\n }\n return bytes;\n };\n\n var addFont = function(font, file) {\n // eslint-disable-next-line no-control-regex\n if (/^\\x00\\x01\\x00\\x00/.test(file)) {\n file = binaryStringToUint8Array(file);\n } else {\n file = binaryStringToUint8Array(atob(file));\n }\n font.metadata = jsPDF.API.TTFFont.open(file);\n font.metadata.Unicode = font.metadata.Unicode || {\n encoding: {},\n kerning: {},\n widths: []\n };\n font.metadata.glyIdsUsed = [0];\n };\n\n jsPDF.API.events.push([\n \"addFont\",\n function(data) {\n var file = undefined;\n var font = data.font;\n var instance = data.instance;\n if (font.isStandardFont) {\n return;\n }\n if (typeof instance !== \"undefined\") {\n if (instance.existsFileInVFS(font.postScriptName) === false) {\n file = instance.loadFile(font.postScriptName);\n } else {\n file = instance.getFileFromVFS(font.postScriptName);\n }\n if (typeof file !== \"string\") {\n throw new Error(\n \"Font is not stored as string-data in vFS, import fonts or remove declaration doc.addFont('\" +\n font.postScriptName +\n \"').\"\n );\n }\n addFont(font, file);\n } else {\n throw new Error(\n \"Font does not exist in vFS, import fonts or remove declaration doc.addFont('\" +\n font.postScriptName +\n \"').\"\n );\n }\n }\n ]); // end of adding event handler\n})(jsPDF);\n","/** @license\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { console } from \"../libs/console.js\";\nimport { globalObject } from \"../libs/globalObject.js\";\n\n/**\n * jsPDF SVG plugin\n *\n * @name svg\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n function loadCanvg() {\n return (function() {\n if (globalObject[\"canvg\"]) {\n return Promise.resolve(globalObject[\"canvg\"]);\n }\n\n return import(\"canvg\");\n\n })()\n .catch(function(e) {\n return Promise.reject(new Error(\"Could not load canvg: \" + e));\n })\n .then(function(canvg) {\n return canvg.default ? canvg.default : canvg;\n });\n }\n\n /**\n * Parses SVG XML and saves it as image into the PDF.\n *\n * Depends on canvas-element and canvg\n *\n * @name addSvgAsImage\n * @public\n * @function\n * @param {string} SVG-Data as Text\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n * @param {number} width of SVG-Image (in units declared at inception of PDF document)\n * @param {number} height of SVG-Image (in units declared at inception of PDF document)\n * @param {string} alias of SVG-Image (if used multiple times)\n * @param {string} compression of the generated JPEG, can have the values 'NONE', 'FAST', 'MEDIUM' and 'SLOW'\n * @param {number} rotation of the image in degrees (0-359)\n *\n * @returns jsPDF jsPDF-instance\n */\n jsPDFAPI.addSvgAsImage = function(\n svg,\n x,\n y,\n w,\n h,\n alias,\n compression,\n rotation\n ) {\n if (isNaN(x) || isNaN(y)) {\n console.error(\"jsPDF.addSvgAsImage: Invalid coordinates\", arguments);\n throw new Error(\"Invalid coordinates passed to jsPDF.addSvgAsImage\");\n }\n\n if (isNaN(w) || isNaN(h)) {\n console.error(\"jsPDF.addSvgAsImage: Invalid measurements\", arguments);\n throw new Error(\n \"Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage\"\n );\n }\n\n var canvas = document.createElement(\"canvas\");\n canvas.width = w;\n canvas.height = h;\n var ctx = canvas.getContext(\"2d\");\n ctx.fillStyle = \"#fff\"; /// set white fill style\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n var options = {\n ignoreMouse: true,\n ignoreAnimation: true,\n ignoreDimensions: true\n };\n var doc = this;\n return loadCanvg()\n .then(\n function(canvg) {\n return canvg.fromString(ctx, svg, options);\n },\n function() {\n return Promise.reject(new Error(\"Could not load canvg.\"));\n }\n )\n .then(function(instance) {\n return instance.render(options);\n })\n .then(function() {\n doc.addImage(\n canvas.toDataURL(\"image/jpeg\", 1.0),\n x,\n y,\n w,\n h,\n compression,\n rotation\n );\n });\n };\n})(jsPDF.API);\n","/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Eduardo Menezes de Morais, eduardo.morais@usp.br\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF total_pages plugin\n * @name total_pages\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n /**\n * @name putTotalPages\n * @function\n * @param {string} pageExpression Regular Expression\n * @returns {jsPDF} jsPDF-instance\n */\n\n jsPDFAPI.putTotalPages = function(pageExpression) {\n \"use strict\";\n\n var replaceExpression;\n var totalNumberOfPages = 0;\n if (parseInt(this.internal.getFont().id.substr(1), 10) < 15) {\n replaceExpression = new RegExp(pageExpression, \"g\");\n totalNumberOfPages = this.internal.getNumberOfPages();\n } else {\n replaceExpression = new RegExp(\n this.pdfEscape16(pageExpression, this.internal.getFont()),\n \"g\"\n );\n totalNumberOfPages = this.pdfEscape16(\n this.internal.getNumberOfPages() + \"\",\n this.internal.getFont()\n );\n }\n\n for (var n = 1; n <= this.internal.getNumberOfPages(); n++) {\n for (var i = 0; i < this.internal.pages[n].length; i++) {\n this.internal.pages[n][i] = this.internal.pages[n][i].replace(\n replaceExpression,\n totalNumberOfPages\n );\n }\n }\n\n return this;\n };\n})(jsPDF.API);\n","/**\n * @license\n * jsPDF viewerPreferences Plugin\n * @author Aras Abbasi (github.com/arasabbasi)\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * Adds the ability to set ViewerPreferences and by thus\n * controlling the way the document is to be presented on the\n * screen or in print.\n * @name viewerpreferences\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n /**\n * Set the ViewerPreferences of the generated PDF\n *\n * @name viewerPreferences\n * @function\n * @public\n * @param {Object} options Array with the ViewerPreferences
    \n * Example: doc.viewerPreferences({\"FitWindow\":true});
    \n *
    \n * You can set following preferences:
    \n *
    \n * HideToolbar (boolean)
    \n * Default value: false
    \n *
    \n * HideMenubar (boolean)
    \n * Default value: false.
    \n *
    \n * HideWindowUI (boolean)
    \n * Default value: false.
    \n *
    \n * FitWindow (boolean)
    \n * Default value: false.
    \n *
    \n * CenterWindow (boolean)
    \n * Default value: false
    \n *
    \n * DisplayDocTitle (boolean)
    \n * Default value: false.
    \n *
    \n * NonFullScreenPageMode (string)
    \n * Possible values: UseNone, UseOutlines, UseThumbs, UseOC
    \n * Default value: UseNone
    \n *
    \n * Direction (string)
    \n * Possible values: L2R, R2L
    \n * Default value: L2R.
    \n *
    \n * ViewArea (string)
    \n * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox
    \n * Default value: CropBox.
    \n *
    \n * ViewClip (string)
    \n * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox
    \n * Default value: CropBox
    \n *
    \n * PrintArea (string)
    \n * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox
    \n * Default value: CropBox
    \n *
    \n * PrintClip (string)
    \n * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox
    \n * Default value: CropBox.
    \n *
    \n * PrintScaling (string)
    \n * Possible values: AppDefault, None
    \n * Default value: AppDefault.
    \n *
    \n * Duplex (string)
    \n * Possible values: Simplex, DuplexFlipLongEdge, DuplexFlipShortEdge\n * Default value: none
    \n *
    \n * PickTrayByPDFSize (boolean)
    \n * Default value: false
    \n *
    \n * PrintPageRange (Array)
    \n * Example: [[1,5], [7,9]]
    \n * Default value: as defined by PDF viewer application
    \n *
    \n * NumCopies (Number)
    \n * Possible values: 1, 2, 3, 4, 5
    \n * Default value: 1
    \n *
    \n * For more information see the PDF Reference, sixth edition on Page 577\n * @param {boolean} doReset True to reset the settings\n * @function\n * @returns jsPDF jsPDF-instance\n * @example\n * var doc = new jsPDF()\n * doc.text('This is a test', 10, 10)\n * doc.viewerPreferences({'FitWindow': true}, true)\n * doc.save(\"viewerPreferences.pdf\")\n *\n * // Example printing 10 copies, using cropbox, and hiding UI.\n * doc.viewerPreferences({\n * 'HideWindowUI': true,\n * 'PrintArea': 'CropBox',\n * 'NumCopies': 10\n * })\n */\n jsPDFAPI.viewerPreferences = function(options, doReset) {\n options = options || {};\n doReset = doReset || false;\n\n var configuration;\n var configurationTemplate = {\n HideToolbar: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n HideMenubar: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n HideWindowUI: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n FitWindow: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n CenterWindow: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n DisplayDocTitle: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.4\n },\n NonFullScreenPageMode: {\n defaultValue: \"UseNone\",\n value: \"UseNone\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"UseNone\", \"UseOutlines\", \"UseThumbs\", \"UseOC\"],\n pdfVersion: 1.3\n },\n Direction: {\n defaultValue: \"L2R\",\n value: \"L2R\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"L2R\", \"R2L\"],\n pdfVersion: 1.3\n },\n ViewArea: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n pdfVersion: 1.4\n },\n ViewClip: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n pdfVersion: 1.4\n },\n PrintArea: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n pdfVersion: 1.4\n },\n PrintClip: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n pdfVersion: 1.4\n },\n PrintScaling: {\n defaultValue: \"AppDefault\",\n value: \"AppDefault\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"AppDefault\", \"None\"],\n pdfVersion: 1.6\n },\n Duplex: {\n defaultValue: \"\",\n value: \"none\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\n \"Simplex\",\n \"DuplexFlipShortEdge\",\n \"DuplexFlipLongEdge\",\n \"none\"\n ],\n pdfVersion: 1.7\n },\n PickTrayByPDFSize: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.7\n },\n PrintPageRange: {\n defaultValue: \"\",\n value: \"\",\n type: \"array\",\n explicitSet: false,\n valueSet: null,\n pdfVersion: 1.7\n },\n NumCopies: {\n defaultValue: 1,\n value: 1,\n type: \"integer\",\n explicitSet: false,\n valueSet: null,\n pdfVersion: 1.7\n }\n };\n\n var configurationKeys = Object.keys(configurationTemplate);\n\n var rangeArray = [];\n var i = 0;\n var j = 0;\n var k = 0;\n var isValid;\n\n var method;\n var value;\n\n function arrayContainsElement(array, element) {\n var iterator;\n var result = false;\n\n for (iterator = 0; iterator < array.length; iterator += 1) {\n if (array[iterator] === element) {\n result = true;\n }\n }\n return result;\n }\n\n if (this.internal.viewerpreferences === undefined) {\n this.internal.viewerpreferences = {};\n this.internal.viewerpreferences.configuration = JSON.parse(\n JSON.stringify(configurationTemplate)\n );\n this.internal.viewerpreferences.isSubscribed = false;\n }\n configuration = this.internal.viewerpreferences.configuration;\n\n if (options === \"reset\" || doReset === true) {\n var len = configurationKeys.length;\n\n for (k = 0; k < len; k += 1) {\n configuration[configurationKeys[k]].value =\n configuration[configurationKeys[k]].defaultValue;\n configuration[configurationKeys[k]].explicitSet = false;\n }\n }\n\n if (typeof options === \"object\") {\n for (method in options) {\n value = options[method];\n if (\n arrayContainsElement(configurationKeys, method) &&\n value !== undefined\n ) {\n if (\n configuration[method].type === \"boolean\" &&\n typeof value === \"boolean\"\n ) {\n configuration[method].value = value;\n } else if (\n configuration[method].type === \"name\" &&\n arrayContainsElement(configuration[method].valueSet, value)\n ) {\n configuration[method].value = value;\n } else if (\n configuration[method].type === \"integer\" &&\n Number.isInteger(value)\n ) {\n configuration[method].value = value;\n } else if (configuration[method].type === \"array\") {\n for (i = 0; i < value.length; i += 1) {\n isValid = true;\n if (value[i].length === 1 && typeof value[i][0] === \"number\") {\n rangeArray.push(String(value[i] - 1));\n } else if (value[i].length > 1) {\n for (j = 0; j < value[i].length; j += 1) {\n if (typeof value[i][j] !== \"number\") {\n isValid = false;\n }\n }\n if (isValid === true) {\n rangeArray.push([value[i][0] - 1, value[i][1] - 1].join(\" \"));\n }\n }\n }\n configuration[method].value = \"[\" + rangeArray.join(\" \") + \"]\";\n } else {\n configuration[method].value = configuration[method].defaultValue;\n }\n\n configuration[method].explicitSet = true;\n }\n }\n }\n\n if (this.internal.viewerpreferences.isSubscribed === false) {\n this.internal.events.subscribe(\"putCatalog\", function() {\n var pdfDict = [];\n var vPref;\n for (vPref in configuration) {\n if (configuration[vPref].explicitSet === true) {\n if (configuration[vPref].type === \"name\") {\n pdfDict.push(\"/\" + vPref + \" /\" + configuration[vPref].value);\n } else {\n pdfDict.push(\"/\" + vPref + \" \" + configuration[vPref].value);\n }\n }\n }\n if (pdfDict.length !== 0) {\n this.internal.write(\n \"/ViewerPreferences\\n<<\\n\" + pdfDict.join(\"\\n\") + \"\\n>>\"\n );\n }\n });\n this.internal.viewerpreferences.isSubscribed = true;\n }\n\n this.internal.viewerpreferences.configuration = configuration;\n return this;\n };\n})(jsPDF.API);\n","/** ====================================================================\n * @license\n * jsPDF XMP metadata plugin\n * Copyright (c) 2016 Jussi Utunen, u-jussi@suomi24.fi\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name xmp_metadata\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n var postPutResources = function() {\n var xmpmeta_beginning = '';\n var rdf_beginning =\n '';\n var rdf_ending = \"\";\n var xmpmeta_ending = \"\";\n var utf8_xmpmeta_beginning = unescape(\n encodeURIComponent(xmpmeta_beginning)\n );\n var utf8_rdf_beginning = unescape(encodeURIComponent(rdf_beginning));\n var utf8_metadata = unescape(\n encodeURIComponent(this.internal.__metadata__.metadata)\n );\n var utf8_rdf_ending = unescape(encodeURIComponent(rdf_ending));\n var utf8_xmpmeta_ending = unescape(encodeURIComponent(xmpmeta_ending));\n\n var total_len =\n utf8_rdf_beginning.length +\n utf8_metadata.length +\n utf8_rdf_ending.length +\n utf8_xmpmeta_beginning.length +\n utf8_xmpmeta_ending.length;\n\n this.internal.__metadata__.metadata_object_number = this.internal.newObject();\n this.internal.write(\n \"<< /Type /Metadata /Subtype /XML /Length \" + total_len + \" >>\"\n );\n this.internal.write(\"stream\");\n this.internal.write(\n utf8_xmpmeta_beginning +\n utf8_rdf_beginning +\n utf8_metadata +\n utf8_rdf_ending +\n utf8_xmpmeta_ending\n );\n this.internal.write(\"endstream\");\n this.internal.write(\"endobj\");\n };\n\n var putCatalog = function() {\n if (this.internal.__metadata__.metadata_object_number) {\n this.internal.write(\n \"/Metadata \" +\n this.internal.__metadata__.metadata_object_number +\n \" 0 R\"\n );\n }\n };\n\n /**\n * Adds XMP formatted metadata to PDF\n *\n * @name addMetadata\n * @function\n * @param {String} metadata The actual metadata to be added. The metadata shall be stored as XMP simple value. Note that if the metadata string contains XML markup characters \"<\", \">\" or \"&\", those characters should be written using XML entities.\n * @param {String} namespaceuri Sets the namespace URI for the metadata. Last character should be slash or hash.\n * @returns {jsPDF} jsPDF-instance\n */\n jsPDFAPI.addMetadata = function(metadata, namespaceuri) {\n if (typeof this.internal.__metadata__ === \"undefined\") {\n this.internal.__metadata__ = {\n metadata: metadata,\n namespaceuri: namespaceuri || \"http://jspdf.default.namespaceuri/\"\n };\n this.internal.events.subscribe(\"putCatalog\", putCatalog);\n\n this.internal.events.subscribe(\"postPutResources\", postPutResources);\n }\n return this;\n };\n})(jsPDF.API);\n","import { jsPDF } from \"../jspdf.js\";\nimport { toPDFName } from \"../libs/pdfname.js\";\n\n/**\n * @name utf8\n * @module\n */\n(function(jsPDF) {\n \"use strict\";\n var jsPDFAPI = jsPDF.API;\n\n /***************************************************************************************************/\n /* function : pdfEscape16 */\n /* comment : The character id of a 2-byte string is converted to a hexadecimal number by obtaining */\n /* the corresponding glyph id and width, and then adding padding to the string. */\n /***************************************************************************************************/\n var pdfEscape16 = (jsPDFAPI.pdfEscape16 = function(text, font) {\n var widths = font.metadata.Unicode.widths;\n var padz = [\"\", \"0\", \"00\", \"000\", \"0000\"];\n var ar = [\"\"];\n for (var i = 0, l = text.length, t; i < l; ++i) {\n t = font.metadata.characterToGlyph(text.charCodeAt(i));\n font.metadata.glyIdsUsed.push(t);\n font.metadata.toUnicode[t] = text.charCodeAt(i);\n if (widths.indexOf(t) == -1) {\n widths.push(t);\n widths.push([parseInt(font.metadata.widthOfGlyph(t), 10)]);\n }\n if (t == \"0\") {\n //Spaces are not allowed in cmap.\n return ar.join(\"\");\n } else {\n t = t.toString(16);\n ar.push(padz[4 - t.length], t);\n }\n }\n return ar.join(\"\");\n });\n\n var toUnicodeCmap = function(map) {\n var code, codes, range, unicode, unicodeMap, _i, _len;\n unicodeMap =\n \"/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap\\n/CIDSystemInfo <<\\n /Registry (Adobe)\\n /Ordering (UCS)\\n /Supplement 0\\n>> def\\n/CMapName /Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange\\n<0000>\\nendcodespacerange\";\n codes = Object.keys(map).sort(function(a, b) {\n return a - b;\n });\n\n range = [];\n for (_i = 0, _len = codes.length; _i < _len; _i++) {\n code = codes[_i];\n if (range.length >= 100) {\n unicodeMap +=\n \"\\n\" +\n range.length +\n \" beginbfchar\\n\" +\n range.join(\"\\n\") +\n \"\\nendbfchar\";\n range = [];\n }\n\n if (\n map[code] !== undefined &&\n map[code] !== null &&\n typeof map[code].toString === \"function\"\n ) {\n unicode = (\"0000\" + map[code].toString(16)).slice(-4);\n code = (\"0000\" + (+code).toString(16)).slice(-4);\n range.push(\"<\" + code + \"><\" + unicode + \">\");\n }\n }\n\n if (range.length) {\n unicodeMap +=\n \"\\n\" +\n range.length +\n \" beginbfchar\\n\" +\n range.join(\"\\n\") +\n \"\\nendbfchar\\n\";\n }\n unicodeMap +=\n \"endcmap\\nCMapName currentdict /CMap defineresource pop\\nend\\nend\";\n return unicodeMap;\n };\n\n var identityHFunction = function(options) {\n var font = options.font;\n var out = options.out;\n var newObject = options.newObject;\n var putStream = options.putStream;\n\n if (\n font.metadata instanceof jsPDF.API.TTFFont &&\n font.encoding === \"Identity-H\"\n ) {\n //Tag with Identity-H\n var widths = font.metadata.Unicode.widths;\n var data = font.metadata.subset.encode(font.metadata.glyIdsUsed, 1);\n var pdfOutput = data;\n var pdfOutput2 = \"\";\n for (var i = 0; i < pdfOutput.length; i++) {\n pdfOutput2 += String.fromCharCode(pdfOutput[i]);\n }\n var fontTable = newObject();\n putStream({ data: pdfOutput2, addLength1: true, objectId: fontTable });\n out(\"endobj\");\n\n var cmap = newObject();\n var cmapData = toUnicodeCmap(font.metadata.toUnicode);\n putStream({ data: cmapData, addLength1: true, objectId: cmap });\n out(\"endobj\");\n\n var fontDescriptor = newObject();\n out(\"<<\");\n out(\"/Type /FontDescriptor\");\n out(\"/FontName /\" + toPDFName(font.fontName));\n out(\"/FontFile2 \" + fontTable + \" 0 R\");\n out(\"/FontBBox \" + jsPDF.API.PDFObject.convert(font.metadata.bbox));\n out(\"/Flags \" + font.metadata.flags);\n out(\"/StemV \" + font.metadata.stemV);\n out(\"/ItalicAngle \" + font.metadata.italicAngle);\n out(\"/Ascent \" + font.metadata.ascender);\n out(\"/Descent \" + font.metadata.decender);\n out(\"/CapHeight \" + font.metadata.capHeight);\n out(\">>\");\n out(\"endobj\");\n\n var DescendantFont = newObject();\n out(\"<<\");\n out(\"/Type /Font\");\n out(\"/BaseFont /\" + toPDFName(font.fontName));\n out(\"/FontDescriptor \" + fontDescriptor + \" 0 R\");\n out(\"/W \" + jsPDF.API.PDFObject.convert(widths));\n out(\"/CIDToGIDMap /Identity\");\n out(\"/DW 1000\");\n out(\"/Subtype /CIDFontType2\");\n out(\"/CIDSystemInfo\");\n out(\"<<\");\n out(\"/Supplement 0\");\n out(\"/Registry (Adobe)\");\n out(\"/Ordering (\" + font.encoding + \")\");\n out(\">>\");\n out(\">>\");\n out(\"endobj\");\n\n font.objectNumber = newObject();\n out(\"<<\");\n out(\"/Type /Font\");\n out(\"/Subtype /Type0\");\n out(\"/ToUnicode \" + cmap + \" 0 R\");\n out(\"/BaseFont /\" + toPDFName(font.fontName));\n out(\"/Encoding /\" + font.encoding);\n out(\"/DescendantFonts [\" + DescendantFont + \" 0 R]\");\n out(\">>\");\n out(\"endobj\");\n\n font.isAlreadyPutted = true;\n }\n };\n\n jsPDFAPI.events.push([\n \"putFont\",\n function(args) {\n identityHFunction(args);\n }\n ]);\n\n var winAnsiEncodingFunction = function(options) {\n var font = options.font;\n var out = options.out;\n var newObject = options.newObject;\n var putStream = options.putStream;\n\n if (\n font.metadata instanceof jsPDF.API.TTFFont &&\n font.encoding === \"WinAnsiEncoding\"\n ) {\n //Tag with WinAnsi encoding\n var data = font.metadata.rawData;\n var pdfOutput = data;\n var pdfOutput2 = \"\";\n for (var i = 0; i < pdfOutput.length; i++) {\n pdfOutput2 += String.fromCharCode(pdfOutput[i]);\n }\n var fontTable = newObject();\n putStream({ data: pdfOutput2, addLength1: true, objectId: fontTable });\n out(\"endobj\");\n\n var cmap = newObject();\n var cmapData = toUnicodeCmap(font.metadata.toUnicode);\n putStream({ data: cmapData, addLength1: true, objectId: cmap });\n out(\"endobj\");\n\n var fontDescriptor = newObject();\n out(\"<<\");\n out(\"/Descent \" + font.metadata.decender);\n out(\"/CapHeight \" + font.metadata.capHeight);\n out(\"/StemV \" + font.metadata.stemV);\n out(\"/Type /FontDescriptor\");\n out(\"/FontFile2 \" + fontTable + \" 0 R\");\n out(\"/Flags 96\");\n out(\"/FontBBox \" + jsPDF.API.PDFObject.convert(font.metadata.bbox));\n out(\"/FontName /\" + toPDFName(font.fontName));\n out(\"/ItalicAngle \" + font.metadata.italicAngle);\n out(\"/Ascent \" + font.metadata.ascender);\n out(\">>\");\n out(\"endobj\");\n font.objectNumber = newObject();\n for (var j = 0; j < font.metadata.hmtx.widths.length; j++) {\n font.metadata.hmtx.widths[j] = parseInt(\n font.metadata.hmtx.widths[j] * (1000 / font.metadata.head.unitsPerEm)\n ); //Change the width of Em units to Point units.\n }\n out(\n \"<>\"\n );\n out(\"endobj\");\n font.isAlreadyPutted = true;\n }\n };\n\n jsPDFAPI.events.push([\n \"putFont\",\n function(args) {\n winAnsiEncodingFunction(args);\n }\n ]);\n\n var utf8TextFunction = function(args) {\n var text = args.text || \"\";\n var x = args.x;\n var y = args.y;\n var options = args.options || {};\n var mutex = args.mutex || {};\n\n var pdfEscape = mutex.pdfEscape;\n var activeFontKey = mutex.activeFontKey;\n var fonts = mutex.fonts;\n var key = activeFontKey;\n\n var str = \"\",\n s = 0,\n cmapConfirm;\n var strText = \"\";\n var encoding = fonts[key].encoding;\n\n if (fonts[key].encoding !== \"Identity-H\") {\n return {\n text: text,\n x: x,\n y: y,\n options: options,\n mutex: mutex\n };\n }\n strText = text;\n\n key = activeFontKey;\n if (Array.isArray(text)) {\n strText = text[0];\n }\n for (s = 0; s < strText.length; s += 1) {\n if (fonts[key].metadata.hasOwnProperty(\"cmap\")) {\n cmapConfirm =\n fonts[key].metadata.cmap.unicode.codeMap[strText[s].charCodeAt(0)];\n /*\n if (Object.prototype.toString.call(text) === '[object Array]') {\n var i = 0;\n // for (i = 0; i < text.length; i += 1) {\n if (Object.prototype.toString.call(text[s]) === '[object Array]') {\n cmapConfirm = fonts[key].metadata.cmap.unicode.codeMap[strText[s][0].charCodeAt(0)]; //Make sure the cmap has the corresponding glyph id\n } else {\n\n }\n //}\n\n } else {\n cmapConfirm = fonts[key].metadata.cmap.unicode.codeMap[strText[s].charCodeAt(0)]; //Make sure the cmap has the corresponding glyph id\n }*/\n }\n if (!cmapConfirm) {\n if (\n strText[s].charCodeAt(0) < 256 &&\n fonts[key].metadata.hasOwnProperty(\"Unicode\")\n ) {\n str += strText[s];\n } else {\n str += \"\";\n }\n } else {\n str += strText[s];\n }\n }\n var result = \"\";\n if (parseInt(key.slice(1)) < 14 || encoding === \"WinAnsiEncoding\") {\n //For the default 13 font\n result = pdfEscape(str, key)\n .split(\"\")\n .map(function(cv) {\n return cv.charCodeAt(0).toString(16);\n })\n .join(\"\");\n } else if (encoding === \"Identity-H\") {\n result = pdfEscape16(str, fonts[key]);\n }\n mutex.isHex = true;\n\n return {\n text: result,\n x: x,\n y: y,\n options: options,\n mutex: mutex\n };\n };\n\n var utf8EscapeFunction = function(parms) {\n var text = parms.text || \"\",\n x = parms.x,\n y = parms.y,\n options = parms.options,\n mutex = parms.mutex;\n var tmpText = [];\n var args = {\n text: text,\n x: x,\n y: y,\n options: options,\n mutex: mutex\n };\n\n if (Array.isArray(text)) {\n var i = 0;\n for (i = 0; i < text.length; i += 1) {\n if (Array.isArray(text[i])) {\n if (text[i].length === 3) {\n tmpText.push([\n utf8TextFunction(Object.assign({}, args, { text: text[i][0] }))\n .text,\n text[i][1],\n text[i][2]\n ]);\n } else {\n tmpText.push(\n utf8TextFunction(Object.assign({}, args, { text: text[i] })).text\n );\n }\n } else {\n tmpText.push(\n utf8TextFunction(Object.assign({}, args, { text: text[i] })).text\n );\n }\n }\n parms.text = tmpText;\n } else {\n parms.text = utf8TextFunction(\n Object.assign({}, args, { text: text })\n ).text;\n }\n };\n\n jsPDFAPI.events.push([\"postProcessText\", utf8EscapeFunction]);\n})(jsPDF);\n","/**\n * @license\n * jsPDF virtual FileSystem functionality\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * Use the vFS to handle files\n *\n * @name vFS\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n var _initializeVFS = function() {\n if (typeof this.internal.vFS === \"undefined\") {\n this.internal.vFS = {};\n }\n return true;\n };\n\n /**\n * Check if the file exists in the vFS\n *\n * @name existsFileInVFS\n * @function\n * @param {string} Possible filename in the vFS.\n * @returns {boolean}\n * @example\n * doc.existsFileInVFS(\"someFile.txt\");\n */\n jsPDFAPI.existsFileInVFS = function(filename) {\n _initializeVFS.call(this);\n return typeof this.internal.vFS[filename] !== \"undefined\";\n };\n\n /**\n * Add a file to the vFS\n *\n * @name addFileToVFS\n * @function\n * @param {string} filename The name of the file which should be added.\n * @param {string} filecontent The content of the file.\n * @returns {jsPDF}\n * @example\n * doc.addFileToVFS(\"someFile.txt\", \"BADFACE1\");\n */\n jsPDFAPI.addFileToVFS = function(filename, filecontent) {\n _initializeVFS.call(this);\n this.internal.vFS[filename] = filecontent;\n return this;\n };\n\n /**\n * Get the file from the vFS\n *\n * @name getFileFromVFS\n * @function\n * @param {string} The name of the file which gets requested.\n * @returns {string}\n * @example\n * doc.getFileFromVFS(\"someFile.txt\");\n */\n jsPDFAPI.getFileFromVFS = function(filename) {\n _initializeVFS.call(this);\n\n if (typeof this.internal.vFS[filename] !== \"undefined\") {\n return this.internal.vFS[filename];\n }\n return null;\n };\n})(jsPDF.API);\n","/**\n * @license\n * Unicode Bidi Engine based on the work of Alex Shensis (@asthensis)\n * MIT License\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n(function(jsPDF) {\n \"use strict\";\n /**\n * Table of Unicode types.\n *\n * Generated by:\n *\n * var bidi = require(\"./bidi/index\");\n * var bidi_accumulate = bidi.slice(0, 256).concat(bidi.slice(0x0500, 0x0500 + 256 * 3)).\n * concat(bidi.slice(0x2000, 0x2000 + 256)).concat(bidi.slice(0xFB00, 0xFB00 + 256)).\n * concat(bidi.slice(0xFE00, 0xFE00 + 2 * 256));\n *\n * for( var i = 0; i < bidi_accumulate.length; i++) {\n * \tif(bidi_accumulate[i] === undefined || bidi_accumulate[i] === 'ON')\n * \t\tbidi_accumulate[i] = 'N'; //mark as neutral to conserve space and substitute undefined\n * }\n * var bidiAccumulateStr = 'return [ \"' + bidi_accumulate.toString().replace(/,/g, '\", \"') + '\" ];';\n * require(\"fs\").writeFile('unicode-types.js', bidiAccumulateStr);\n *\n * Based on:\n * https://github.com/mathiasbynens/unicode-8.0.0\n */\n var bidiUnicodeTypes = [\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"S\",\n \"B\",\n \"S\",\n \"WS\",\n \"B\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"B\",\n \"B\",\n \"B\",\n \"S\",\n \"WS\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ES\",\n \"CS\",\n \"ES\",\n \"CS\",\n \"CS\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"CS\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"B\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"CS\",\n \"N\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"N\",\n \"N\",\n \"BN\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"EN\",\n \"EN\",\n \"N\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"EN\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"R\",\n \"NSM\",\n \"R\",\n \"NSM\",\n \"NSM\",\n \"R\",\n \"NSM\",\n \"NSM\",\n \"R\",\n \"NSM\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"N\",\n \"N\",\n \"AL\",\n \"ET\",\n \"ET\",\n \"AL\",\n \"CS\",\n \"AL\",\n \"N\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"ET\",\n \"AN\",\n \"AN\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AN\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"N\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AL\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"R\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"L\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"WS\",\n \"B\",\n \"LRE\",\n \"RLE\",\n \"PDF\",\n \"LRO\",\n \"RLO\",\n \"CS\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"CS\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"WS\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"N\",\n \"LRI\",\n \"RLI\",\n \"FSI\",\n \"PDI\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"EN\",\n \"L\",\n \"N\",\n \"N\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"ES\",\n \"ES\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"ES\",\n \"ES\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"NSM\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"ES\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"N\",\n \"R\",\n \"N\",\n \"R\",\n \"R\",\n \"N\",\n \"R\",\n \"R\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"CS\",\n \"N\",\n \"CS\",\n \"N\",\n \"N\",\n \"CS\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"N\",\n \"N\",\n \"ES\",\n \"ES\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"N\",\n \"N\",\n \"BN\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ES\",\n \"CS\",\n \"ES\",\n \"CS\",\n \"CS\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"CS\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\"\n ];\n\n /**\n * Unicode Bidi algorithm compliant Bidi engine.\n * For reference see http://unicode.org/reports/tr9/\n */\n\n /**\n * constructor ( options )\n *\n * Initializes Bidi engine\n *\n * @param {Object} See 'setOptions' below for detailed description.\n * options are cashed between invocation of 'doBidiReorder' method\n *\n * sample usage pattern of BidiEngine:\n * var opt = {\n * \tisInputVisual: true,\n * \tisInputRtl: false,\n * \tisOutputVisual: false,\n * \tisOutputRtl: false,\n * \tisSymmetricSwapping: true\n * }\n * var sourceToTarget = [], levels = [];\n * var bidiEng = Globalize.bidiEngine(opt);\n * var src = \"text string to be reordered\";\n * var ret = bidiEng.doBidiReorder(src, sourceToTarget, levels);\n */\n\n jsPDF.__bidiEngine__ = jsPDF.prototype.__bidiEngine__ = function(options) {\n var _UNICODE_TYPES = _bidiUnicodeTypes;\n\n var _STATE_TABLE_LTR = [\n [0, 3, 0, 1, 0, 0, 0],\n [0, 3, 0, 1, 2, 2, 0],\n [0, 3, 0, 0x11, 2, 0, 1],\n [0, 3, 5, 5, 4, 1, 0],\n [0, 3, 0x15, 0x15, 4, 0, 1],\n [0, 3, 5, 5, 4, 2, 0]\n ];\n\n var _STATE_TABLE_RTL = [\n [2, 0, 1, 1, 0, 1, 0],\n [2, 0, 1, 1, 0, 2, 0],\n [2, 0, 2, 1, 3, 2, 0],\n [2, 0, 2, 0x21, 3, 1, 1]\n ];\n\n var _TYPE_NAMES_MAP = { L: 0, R: 1, EN: 2, AN: 3, N: 4, B: 5, S: 6 };\n\n var _UNICODE_RANGES_MAP = {\n 0: 0,\n 5: 1,\n 6: 2,\n 7: 3,\n 0x20: 4,\n 0xfb: 5,\n 0xfe: 6,\n 0xff: 7\n };\n\n var _SWAP_TABLE = [\n \"\\u0028\",\n \"\\u0029\",\n \"\\u0028\",\n \"\\u003C\",\n \"\\u003E\",\n \"\\u003C\",\n \"\\u005B\",\n \"\\u005D\",\n \"\\u005B\",\n \"\\u007B\",\n \"\\u007D\",\n \"\\u007B\",\n \"\\u00AB\",\n \"\\u00BB\",\n \"\\u00AB\",\n \"\\u2039\",\n \"\\u203A\",\n \"\\u2039\",\n \"\\u2045\",\n \"\\u2046\",\n \"\\u2045\",\n \"\\u207D\",\n \"\\u207E\",\n \"\\u207D\",\n \"\\u208D\",\n \"\\u208E\",\n \"\\u208D\",\n \"\\u2264\",\n \"\\u2265\",\n \"\\u2264\",\n \"\\u2329\",\n \"\\u232A\",\n \"\\u2329\",\n \"\\uFE59\",\n \"\\uFE5A\",\n \"\\uFE59\",\n \"\\uFE5B\",\n \"\\uFE5C\",\n \"\\uFE5B\",\n \"\\uFE5D\",\n \"\\uFE5E\",\n \"\\uFE5D\",\n \"\\uFE64\",\n \"\\uFE65\",\n \"\\uFE64\"\n ];\n\n var _LTR_RANGES_REG_EXPR = new RegExp(\n /^([1-4|9]|1[0-9]|2[0-9]|3[0168]|4[04589]|5[012]|7[78]|159|16[0-9]|17[0-2]|21[569]|22[03489]|250)$/\n );\n\n var _lastArabic = false,\n _hasUbatAl,\n _hasUbatB,\n _hasUbatS,\n DIR_LTR = 0,\n DIR_RTL = 1,\n _isInVisual,\n _isInRtl,\n _isOutVisual,\n _isOutRtl,\n _isSymmetricSwapping,\n _dir = DIR_LTR;\n\n this.__bidiEngine__ = {};\n\n var _init = function(text, sourceToTargetMap) {\n if (sourceToTargetMap) {\n for (var i = 0; i < text.length; i++) {\n sourceToTargetMap[i] = i;\n }\n }\n if (_isInRtl === undefined) {\n _isInRtl = _isContextualDirRtl(text);\n }\n if (_isOutRtl === undefined) {\n _isOutRtl = _isContextualDirRtl(text);\n }\n };\n\n // for reference see 3.2 in http://unicode.org/reports/tr9/\n //\n var _getCharType = function(ch) {\n var charCode = ch.charCodeAt(),\n range = charCode >> 8,\n rangeIdx = _UNICODE_RANGES_MAP[range];\n\n if (rangeIdx !== undefined) {\n return _UNICODE_TYPES[rangeIdx * 256 + (charCode & 0xff)];\n } else if (range === 0xfc || range === 0xfd) {\n return \"AL\";\n } else if (_LTR_RANGES_REG_EXPR.test(range)) {\n //unlikely case\n return \"L\";\n } else if (range === 8) {\n // even less likely\n return \"R\";\n }\n return \"N\"; //undefined type, mark as neutral\n };\n\n var _isContextualDirRtl = function(text) {\n for (var i = 0, charType; i < text.length; i++) {\n charType = _getCharType(text.charAt(i));\n if (charType === \"L\") {\n return false;\n } else if (charType === \"R\") {\n return true;\n }\n }\n return false;\n };\n\n // for reference see 3.3.4 & 3.3.5 in http://unicode.org/reports/tr9/\n //\n var _resolveCharType = function(chars, types, resolvedTypes, index) {\n var cType = types[index],\n wType,\n nType,\n i,\n len;\n switch (cType) {\n case \"L\":\n case \"R\":\n _lastArabic = false;\n break;\n case \"N\":\n case \"AN\":\n break;\n\n case \"EN\":\n if (_lastArabic) {\n cType = \"AN\";\n }\n break;\n\n case \"AL\":\n _lastArabic = true;\n _hasUbatAl = true;\n cType = \"R\";\n break;\n\n case \"WS\":\n cType = \"N\";\n break;\n\n case \"CS\":\n if (\n index < 1 ||\n index + 1 >= types.length ||\n ((wType = resolvedTypes[index - 1]) !== \"EN\" && wType !== \"AN\") ||\n ((nType = types[index + 1]) !== \"EN\" && nType !== \"AN\")\n ) {\n cType = \"N\";\n } else if (_lastArabic) {\n nType = \"AN\";\n }\n cType = nType === wType ? nType : \"N\";\n break;\n\n case \"ES\":\n wType = index > 0 ? resolvedTypes[index - 1] : \"B\";\n cType =\n wType === \"EN\" &&\n index + 1 < types.length &&\n types[index + 1] === \"EN\"\n ? \"EN\"\n : \"N\";\n break;\n\n case \"ET\":\n if (index > 0 && resolvedTypes[index - 1] === \"EN\") {\n cType = \"EN\";\n break;\n } else if (_lastArabic) {\n cType = \"N\";\n break;\n }\n i = index + 1;\n len = types.length;\n while (i < len && types[i] === \"ET\") {\n i++;\n }\n if (i < len && types[i] === \"EN\") {\n cType = \"EN\";\n } else {\n cType = \"N\";\n }\n break;\n\n case \"NSM\":\n if (_isInVisual && !_isInRtl) {\n //V->L\n len = types.length;\n i = index + 1;\n while (i < len && types[i] === \"NSM\") {\n i++;\n }\n if (i < len) {\n var c = chars[index];\n var rtlCandidate = (c >= 0x0591 && c <= 0x08ff) || c === 0xfb1e;\n wType = types[i];\n if (rtlCandidate && (wType === \"R\" || wType === \"AL\")) {\n cType = \"R\";\n break;\n }\n }\n }\n if (index < 1 || (wType = types[index - 1]) === \"B\") {\n cType = \"N\";\n } else {\n cType = resolvedTypes[index - 1];\n }\n break;\n\n case \"B\":\n _lastArabic = false;\n _hasUbatB = true;\n cType = _dir;\n break;\n\n case \"S\":\n _hasUbatS = true;\n cType = \"N\";\n break;\n\n case \"LRE\":\n case \"RLE\":\n case \"LRO\":\n case \"RLO\":\n case \"PDF\":\n _lastArabic = false;\n break;\n case \"BN\":\n cType = \"N\";\n break;\n }\n return cType;\n };\n\n var _handleUbatS = function(types, levels, length) {\n for (var i = 0; i < length; i++) {\n if (types[i] === \"S\") {\n levels[i] = _dir;\n for (var j = i - 1; j >= 0; j--) {\n if (types[j] === \"WS\") {\n levels[j] = _dir;\n } else {\n break;\n }\n }\n }\n }\n };\n\n var _invertString = function(text, sourceToTargetMap, levels) {\n var charArray = text.split(\"\");\n if (levels) {\n _computeLevels(charArray, levels, { hiLevel: _dir });\n }\n charArray.reverse();\n sourceToTargetMap && sourceToTargetMap.reverse();\n return charArray.join(\"\");\n };\n\n // For reference see 3.3 in http://unicode.org/reports/tr9/\n //\n var _computeLevels = function(chars, levels, params) {\n var action,\n condition,\n i,\n index,\n newLevel,\n prevState,\n condPos = -1,\n len = chars.length,\n newState = 0,\n resolvedTypes = [],\n stateTable = _dir ? _STATE_TABLE_RTL : _STATE_TABLE_LTR,\n types = [];\n\n _lastArabic = false;\n _hasUbatAl = false;\n _hasUbatB = false;\n _hasUbatS = false;\n for (i = 0; i < len; i++) {\n types[i] = _getCharType(chars[i]);\n }\n for (index = 0; index < len; index++) {\n prevState = newState;\n resolvedTypes[index] = _resolveCharType(\n chars,\n types,\n resolvedTypes,\n index\n );\n newState = stateTable[prevState][_TYPE_NAMES_MAP[resolvedTypes[index]]];\n action = newState & 0xf0;\n newState &= 0x0f;\n levels[index] = newLevel = stateTable[newState][5];\n if (action > 0) {\n if (action === 0x10) {\n for (i = condPos; i < index; i++) {\n levels[i] = 1;\n }\n condPos = -1;\n } else {\n condPos = -1;\n }\n }\n condition = stateTable[newState][6];\n if (condition) {\n if (condPos === -1) {\n condPos = index;\n }\n } else {\n if (condPos > -1) {\n for (i = condPos; i < index; i++) {\n levels[i] = newLevel;\n }\n condPos = -1;\n }\n }\n if (types[index] === \"B\") {\n levels[index] = 0;\n }\n params.hiLevel |= newLevel;\n }\n if (_hasUbatS) {\n _handleUbatS(types, levels, len);\n }\n };\n\n // for reference see 3.4 in http://unicode.org/reports/tr9/\n //\n var _invertByLevel = function(\n level,\n charArray,\n sourceToTargetMap,\n levels,\n params\n ) {\n if (params.hiLevel < level) {\n return;\n }\n if (level === 1 && _dir === DIR_RTL && !_hasUbatB) {\n charArray.reverse();\n sourceToTargetMap && sourceToTargetMap.reverse();\n return;\n }\n var ch,\n high,\n end,\n low,\n len = charArray.length,\n start = 0;\n\n while (start < len) {\n if (levels[start] >= level) {\n end = start + 1;\n while (end < len && levels[end] >= level) {\n end++;\n }\n for (low = start, high = end - 1; low < high; low++, high--) {\n ch = charArray[low];\n charArray[low] = charArray[high];\n charArray[high] = ch;\n if (sourceToTargetMap) {\n ch = sourceToTargetMap[low];\n sourceToTargetMap[low] = sourceToTargetMap[high];\n sourceToTargetMap[high] = ch;\n }\n }\n start = end;\n }\n start++;\n }\n };\n\n // for reference see 7 & BD16 in http://unicode.org/reports/tr9/\n //\n var _symmetricSwap = function(charArray, levels, params) {\n if (params.hiLevel !== 0 && _isSymmetricSwapping) {\n for (var i = 0, index; i < charArray.length; i++) {\n if (levels[i] === 1) {\n index = _SWAP_TABLE.indexOf(charArray[i]);\n if (index >= 0) {\n charArray[i] = _SWAP_TABLE[index + 1];\n }\n }\n }\n }\n };\n\n var _reorder = function(text, sourceToTargetMap, levels) {\n var charArray = text.split(\"\"),\n params = { hiLevel: _dir };\n\n if (!levels) {\n levels = [];\n }\n _computeLevels(charArray, levels, params);\n _symmetricSwap(charArray, levels, params);\n _invertByLevel(DIR_RTL + 1, charArray, sourceToTargetMap, levels, params);\n _invertByLevel(DIR_RTL, charArray, sourceToTargetMap, levels, params);\n return charArray.join(\"\");\n };\n\n // doBidiReorder( text, sourceToTargetMap, levels )\n // Performs Bidi reordering by implementing Unicode Bidi algorithm.\n // Returns reordered string\n // @text [String]:\n // - input string to be reordered, this is input parameter\n // $sourceToTargetMap [Array] (optional)\n // - resultant mapping between input and output strings, this is output parameter\n // $levels [Array] (optional)\n // - array of calculated Bidi levels, , this is output parameter\n this.__bidiEngine__.doBidiReorder = function(\n text,\n sourceToTargetMap,\n levels\n ) {\n _init(text, sourceToTargetMap);\n if (!_isInVisual && _isOutVisual && !_isOutRtl) {\n // LLTR->VLTR, LRTL->VLTR\n _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n } else if (_isInVisual && _isOutVisual && _isInRtl ^ _isOutRtl) {\n // VRTL->VLTR, VLTR->VRTL\n _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n text = _invertString(text, sourceToTargetMap, levels);\n } else if (!_isInVisual && _isOutVisual && _isOutRtl) {\n // LLTR->VRTL, LRTL->VRTL\n _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n text = _invertString(text, sourceToTargetMap);\n } else if (_isInVisual && !_isInRtl && !_isOutVisual && !_isOutRtl) {\n // VLTR->LLTR\n _dir = DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n } else if (_isInVisual && !_isOutVisual && _isInRtl ^ _isOutRtl) {\n // VLTR->LRTL, VRTL->LLTR\n text = _invertString(text, sourceToTargetMap);\n if (_isInRtl) {\n //LLTR -> VLTR\n _dir = DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n } else {\n //LRTL -> VRTL\n _dir = DIR_RTL;\n text = _reorder(text, sourceToTargetMap, levels);\n text = _invertString(text, sourceToTargetMap);\n }\n } else if (_isInVisual && _isInRtl && !_isOutVisual && _isOutRtl) {\n // VRTL->LRTL\n _dir = DIR_RTL;\n text = _reorder(text, sourceToTargetMap, levels);\n text = _invertString(text, sourceToTargetMap);\n } else if (!_isInVisual && !_isOutVisual && _isInRtl ^ _isOutRtl) {\n // LRTL->LLTR, LLTR->LRTL\n var isSymmetricSwappingOrig = _isSymmetricSwapping;\n if (_isInRtl) {\n //LRTL->LLTR\n _dir = DIR_RTL;\n text = _reorder(text, sourceToTargetMap, levels);\n _dir = DIR_LTR;\n _isSymmetricSwapping = false;\n text = _reorder(text, sourceToTargetMap, levels);\n _isSymmetricSwapping = isSymmetricSwappingOrig;\n } else {\n //LLTR->LRTL\n _dir = DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n text = _invertString(text, sourceToTargetMap);\n _dir = DIR_RTL;\n _isSymmetricSwapping = false;\n text = _reorder(text, sourceToTargetMap, levels);\n _isSymmetricSwapping = isSymmetricSwappingOrig;\n text = _invertString(text, sourceToTargetMap);\n }\n }\n return text;\n };\n\n /**\n * @name setOptions( options )\n * @function\n * Sets options for Bidi conversion\n * @param {Object}:\n * - isInputVisual {boolean} (defaults to false): allowed values: true(Visual mode), false(Logical mode)\n * - isInputRtl {boolean}: allowed values true(Right-to-left direction), false (Left-to-right directiion), undefined(Contectual direction, i.e.direction defined by first strong character of input string)\n * - isOutputVisual {boolean} (defaults to false): allowed values: true(Visual mode), false(Logical mode)\n * - isOutputRtl {boolean}: allowed values true(Right-to-left direction), false (Left-to-right directiion), undefined(Contectual direction, i.e.direction defined by first strong characterof input string)\n * - isSymmetricSwapping {boolean} (defaults to false): allowed values true(needs symmetric swapping), false (no need in symmetric swapping),\n */\n this.__bidiEngine__.setOptions = function(options) {\n if (options) {\n _isInVisual = options.isInputVisual;\n _isOutVisual = options.isOutputVisual;\n _isInRtl = options.isInputRtl;\n _isOutRtl = options.isOutputRtl;\n _isSymmetricSwapping = options.isSymmetricSwapping;\n }\n };\n\n this.__bidiEngine__.setOptions(options);\n return this.__bidiEngine__;\n };\n\n var _bidiUnicodeTypes = bidiUnicodeTypes;\n\n var bidiEngine = new jsPDF.__bidiEngine__({ isInputVisual: true });\n\n var bidiEngineFunction = function(args) {\n var text = args.text;\n var x = args.x;\n var y = args.y;\n var options = args.options || {};\n var mutex = args.mutex || {};\n var lang = options.lang;\n var tmpText = [];\n\n options.isInputVisual =\n typeof options.isInputVisual === \"boolean\" ? options.isInputVisual : true;\n bidiEngine.setOptions(options);\n\n if (Object.prototype.toString.call(text) === \"[object Array]\") {\n var i = 0;\n tmpText = [];\n for (i = 0; i < text.length; i += 1) {\n if (Object.prototype.toString.call(text[i]) === \"[object Array]\") {\n tmpText.push([\n bidiEngine.doBidiReorder(text[i][0]),\n text[i][1],\n text[i][2]\n ]);\n } else {\n tmpText.push([bidiEngine.doBidiReorder(text[i])]);\n }\n }\n args.text = tmpText;\n } else {\n args.text = bidiEngine.doBidiReorder(text);\n }\n bidiEngine.setOptions({ isInputVisual: true });\n };\n\n jsPDF.API.events.push([\"postProcessText\", bidiEngineFunction]);\n})(jsPDF);\n","/* eslint-disable no-control-regex */\n/************************************************\n * Title : custom font *\n * Start Data : 2017. 01. 22. *\n * Comment : TEXT API *\n ************************************************/\n\n/******************************\n * jsPDF extension API Design *\n * ****************************/\n\nimport { jsPDF } from \"../jspdf.js\";\n\njsPDF.API.TTFFont = (function() {\n /************************************************************************/\n /* function : open */\n /* comment : Decode the encoded ttf content and create a TTFFont object. */\n /************************************************************************/\n TTFFont.open = function(file) {\n return new TTFFont(file);\n };\n /***************************************************************/\n /* function : TTFFont gernerator */\n /* comment : Decode TTF contents are parsed, Data, */\n /* Subset object is created, and registerTTF function is called.*/\n /***************************************************************/\n function TTFFont(rawData) {\n var data;\n this.rawData = rawData;\n data = this.contents = new Data(rawData);\n this.contents.pos = 4;\n if (data.readString(4) === \"ttcf\") {\n throw new Error(\"TTCF not supported.\");\n } else {\n data.pos = 0;\n this.parse();\n this.subset = new Subset(this);\n this.registerTTF();\n }\n }\n /********************************************************/\n /* function : parse */\n /* comment : TTF Parses the file contents by each table.*/\n /********************************************************/\n TTFFont.prototype.parse = function() {\n this.directory = new Directory(this.contents);\n this.head = new HeadTable(this);\n this.name = new NameTable(this);\n this.cmap = new CmapTable(this);\n this.toUnicode = {};\n this.hhea = new HheaTable(this);\n this.maxp = new MaxpTable(this);\n this.hmtx = new HmtxTable(this);\n this.post = new PostTable(this);\n this.os2 = new OS2Table(this);\n this.loca = new LocaTable(this);\n this.glyf = new GlyfTable(this);\n this.ascender =\n (this.os2.exists && this.os2.ascender) || this.hhea.ascender;\n this.decender =\n (this.os2.exists && this.os2.decender) || this.hhea.decender;\n this.lineGap = (this.os2.exists && this.os2.lineGap) || this.hhea.lineGap;\n return (this.bbox = [\n this.head.xMin,\n this.head.yMin,\n this.head.xMax,\n this.head.yMax\n ]);\n };\n /***************************************************************/\n /* function : registerTTF */\n /* comment : Get the value to assign pdf font descriptors. */\n /***************************************************************/\n TTFFont.prototype.registerTTF = function() {\n var e, hi, low, raw, _ref;\n this.scaleFactor = 1000.0 / this.head.unitsPerEm;\n this.bbox = function() {\n var _i, _len, _ref, _results;\n _ref = this.bbox;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n e = _ref[_i];\n _results.push(Math.round(e * this.scaleFactor));\n }\n return _results;\n }.call(this);\n this.stemV = 0;\n if (this.post.exists) {\n raw = this.post.italic_angle;\n hi = raw >> 16;\n low = raw & 0xff;\n if ((hi & 0x8000) !== 0) {\n hi = -((hi ^ 0xffff) + 1);\n }\n this.italicAngle = +(\"\" + hi + \".\" + low);\n } else {\n this.italicAngle = 0;\n }\n this.ascender = Math.round(this.ascender * this.scaleFactor);\n this.decender = Math.round(this.decender * this.scaleFactor);\n this.lineGap = Math.round(this.lineGap * this.scaleFactor);\n this.capHeight = (this.os2.exists && this.os2.capHeight) || this.ascender;\n this.xHeight = (this.os2.exists && this.os2.xHeight) || 0;\n this.familyClass = ((this.os2.exists && this.os2.familyClass) || 0) >> 8;\n this.isSerif =\n (_ref = this.familyClass) === 1 ||\n _ref === 2 ||\n _ref === 3 ||\n _ref === 4 ||\n _ref === 5 ||\n _ref === 7;\n this.isScript = this.familyClass === 10;\n this.flags = 0;\n if (this.post.isFixedPitch) {\n this.flags |= 1 << 0;\n }\n if (this.isSerif) {\n this.flags |= 1 << 1;\n }\n if (this.isScript) {\n this.flags |= 1 << 3;\n }\n if (this.italicAngle !== 0) {\n this.flags |= 1 << 6;\n }\n this.flags |= 1 << 5;\n if (!this.cmap.unicode) {\n throw new Error(\"No unicode cmap for font\");\n }\n };\n TTFFont.prototype.characterToGlyph = function(character) {\n var _ref;\n return (\n ((_ref = this.cmap.unicode) != null ? _ref.codeMap[character] : void 0) ||\n 0\n );\n };\n TTFFont.prototype.widthOfGlyph = function(glyph) {\n var scale;\n scale = 1000.0 / this.head.unitsPerEm;\n return this.hmtx.forGlyph(glyph).advance * scale;\n };\n TTFFont.prototype.widthOfString = function(string, size, charSpace) {\n var charCode, i, scale, width, _ref;\n string = \"\" + string;\n width = 0;\n for (\n i = 0, _ref = string.length;\n 0 <= _ref ? i < _ref : i > _ref;\n i = 0 <= _ref ? ++i : --i\n ) {\n charCode = string.charCodeAt(i);\n width +=\n this.widthOfGlyph(this.characterToGlyph(charCode)) +\n charSpace * (1000 / size) || 0;\n }\n scale = size / 1000;\n return width * scale;\n };\n TTFFont.prototype.lineHeight = function(size, includeGap) {\n var gap;\n if (includeGap == null) {\n includeGap = false;\n }\n gap = includeGap ? this.lineGap : 0;\n return ((this.ascender + gap - this.decender) / 1000) * size;\n };\n return TTFFont;\n})();\n\n/************************************************************************************************/\n/* function : Data */\n/* comment : The ttf data decoded and stored in an array is read and written to the Data object.*/\n/************************************************************************************************/\nvar Data = (function() {\n function Data(data) {\n this.data = data != null ? data : [];\n this.pos = 0;\n this.length = this.data.length;\n }\n Data.prototype.readByte = function() {\n return this.data[this.pos++];\n };\n Data.prototype.writeByte = function(byte) {\n return (this.data[this.pos++] = byte);\n };\n Data.prototype.readUInt32 = function() {\n var b1, b2, b3, b4;\n b1 = this.readByte() * 0x1000000;\n b2 = this.readByte() << 16;\n b3 = this.readByte() << 8;\n b4 = this.readByte();\n return b1 + b2 + b3 + b4;\n };\n Data.prototype.writeUInt32 = function(val) {\n this.writeByte((val >>> 24) & 0xff);\n this.writeByte((val >> 16) & 0xff);\n this.writeByte((val >> 8) & 0xff);\n return this.writeByte(val & 0xff);\n };\n Data.prototype.readInt32 = function() {\n var int;\n int = this.readUInt32();\n if (int >= 0x80000000) {\n return int - 0x100000000;\n } else {\n return int;\n }\n };\n Data.prototype.writeInt32 = function(val) {\n if (val < 0) {\n val += 0x100000000;\n }\n return this.writeUInt32(val);\n };\n Data.prototype.readUInt16 = function() {\n var b1, b2;\n b1 = this.readByte() << 8;\n b2 = this.readByte();\n return b1 | b2;\n };\n Data.prototype.writeUInt16 = function(val) {\n this.writeByte((val >> 8) & 0xff);\n return this.writeByte(val & 0xff);\n };\n Data.prototype.readInt16 = function() {\n var int;\n int = this.readUInt16();\n if (int >= 0x8000) {\n return int - 0x10000;\n } else {\n return int;\n }\n };\n Data.prototype.writeInt16 = function(val) {\n if (val < 0) {\n val += 0x10000;\n }\n return this.writeUInt16(val);\n };\n Data.prototype.readString = function(length) {\n var i, ret;\n ret = [];\n for (\n i = 0;\n 0 <= length ? i < length : i > length;\n i = 0 <= length ? ++i : --i\n ) {\n ret[i] = String.fromCharCode(this.readByte());\n }\n return ret.join(\"\");\n };\n Data.prototype.writeString = function(val) {\n var i, _ref, _results;\n _results = [];\n for (\n i = 0, _ref = val.length;\n 0 <= _ref ? i < _ref : i > _ref;\n i = 0 <= _ref ? ++i : --i\n ) {\n _results.push(this.writeByte(val.charCodeAt(i)));\n }\n return _results;\n };\n /*Data.prototype.stringAt = function (pos, length) {\n this.pos = pos;\n return this.readString(length);\n };*/\n Data.prototype.readShort = function() {\n return this.readInt16();\n };\n Data.prototype.writeShort = function(val) {\n return this.writeInt16(val);\n };\n Data.prototype.readLongLong = function() {\n var b1, b2, b3, b4, b5, b6, b7, b8;\n b1 = this.readByte();\n b2 = this.readByte();\n b3 = this.readByte();\n b4 = this.readByte();\n b5 = this.readByte();\n b6 = this.readByte();\n b7 = this.readByte();\n b8 = this.readByte();\n if (b1 & 0x80) {\n return (\n ((b1 ^ 0xff) * 0x100000000000000 +\n (b2 ^ 0xff) * 0x1000000000000 +\n (b3 ^ 0xff) * 0x10000000000 +\n (b4 ^ 0xff) * 0x100000000 +\n (b5 ^ 0xff) * 0x1000000 +\n (b6 ^ 0xff) * 0x10000 +\n (b7 ^ 0xff) * 0x100 +\n (b8 ^ 0xff) +\n 1) *\n -1\n );\n }\n return (\n b1 * 0x100000000000000 +\n b2 * 0x1000000000000 +\n b3 * 0x10000000000 +\n b4 * 0x100000000 +\n b5 * 0x1000000 +\n b6 * 0x10000 +\n b7 * 0x100 +\n b8\n );\n };\n Data.prototype.writeLongLong = function(val) {\n var high, low;\n high = Math.floor(val / 0x100000000);\n low = val & 0xffffffff;\n this.writeByte((high >> 24) & 0xff);\n this.writeByte((high >> 16) & 0xff);\n this.writeByte((high >> 8) & 0xff);\n this.writeByte(high & 0xff);\n this.writeByte((low >> 24) & 0xff);\n this.writeByte((low >> 16) & 0xff);\n this.writeByte((low >> 8) & 0xff);\n return this.writeByte(low & 0xff);\n };\n Data.prototype.readInt = function() {\n return this.readInt32();\n };\n Data.prototype.writeInt = function(val) {\n return this.writeInt32(val);\n };\n /*Data.prototype.slice = function (start, end) {\n return this.data.slice(start, end);\n };*/\n Data.prototype.read = function(bytes) {\n var buf, i;\n buf = [];\n for (\n i = 0;\n 0 <= bytes ? i < bytes : i > bytes;\n i = 0 <= bytes ? ++i : --i\n ) {\n buf.push(this.readByte());\n }\n return buf;\n };\n Data.prototype.write = function(bytes) {\n var byte, i, _len, _results;\n _results = [];\n for (i = 0, _len = bytes.length; i < _len; i++) {\n byte = bytes[i];\n _results.push(this.writeByte(byte));\n }\n return _results;\n };\n return Data;\n})();\n\nvar Directory = (function() {\n var checksum;\n\n /*****************************************************************************************************/\n /* function : Directory generator */\n /* comment : Initialize the offset, tag, length, and checksum for each table for the font to be used.*/\n /*****************************************************************************************************/\n function Directory(data) {\n var entry, i, _ref;\n this.scalarType = data.readInt();\n this.tableCount = data.readShort();\n this.searchRange = data.readShort();\n this.entrySelector = data.readShort();\n this.rangeShift = data.readShort();\n this.tables = {};\n for (\n i = 0, _ref = this.tableCount;\n 0 <= _ref ? i < _ref : i > _ref;\n i = 0 <= _ref ? ++i : --i\n ) {\n entry = {\n tag: data.readString(4),\n checksum: data.readInt(),\n offset: data.readInt(),\n length: data.readInt()\n };\n this.tables[entry.tag] = entry;\n }\n }\n /********************************************************************************************************/\n /* function : encode */\n /* comment : It encodes and stores the font table object and information used for the directory object. */\n /********************************************************************************************************/\n Directory.prototype.encode = function(tables) {\n var adjustment,\n directory,\n directoryLength,\n entrySelector,\n headOffset,\n log2,\n offset,\n rangeShift,\n searchRange,\n sum,\n table,\n tableCount,\n tableData,\n tag;\n tableCount = Object.keys(tables).length;\n log2 = Math.log(2);\n searchRange = Math.floor(Math.log(tableCount) / log2) * 16;\n entrySelector = Math.floor(searchRange / log2);\n rangeShift = tableCount * 16 - searchRange;\n directory = new Data();\n directory.writeInt(this.scalarType);\n directory.writeShort(tableCount);\n directory.writeShort(searchRange);\n directory.writeShort(entrySelector);\n directory.writeShort(rangeShift);\n directoryLength = tableCount * 16;\n offset = directory.pos + directoryLength;\n headOffset = null;\n tableData = [];\n for (tag in tables) {\n table = tables[tag];\n directory.writeString(tag);\n directory.writeInt(checksum(table));\n directory.writeInt(offset);\n directory.writeInt(table.length);\n tableData = tableData.concat(table);\n if (tag === \"head\") {\n headOffset = offset;\n }\n offset += table.length;\n while (offset % 4) {\n tableData.push(0);\n offset++;\n }\n }\n directory.write(tableData);\n sum = checksum(directory.data);\n adjustment = 0xb1b0afba - sum;\n directory.pos = headOffset + 8;\n directory.writeUInt32(adjustment);\n return directory.data;\n };\n /***************************************************************/\n /* function : checksum */\n /* comment : Duplicate the table for the tag. */\n /***************************************************************/\n checksum = function(data) {\n var i, sum, tmp, _ref;\n data = __slice.call(data);\n while (data.length % 4) {\n data.push(0);\n }\n tmp = new Data(data);\n sum = 0;\n for (i = 0, _ref = data.length; i < _ref; i = i += 4) {\n sum += tmp.readUInt32();\n }\n return sum & 0xffffffff;\n };\n return Directory;\n})();\n\nvar Table,\n __hasProp = {}.hasOwnProperty,\n __extends = function(child, parent) {\n for (var key in parent) {\n if (__hasProp.call(parent, key)) child[key] = parent[key];\n }\n\n function ctor() {\n this.constructor = child;\n }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n child.__super__ = parent.prototype;\n return child;\n };\n\n/***************************************************************/\n/* function : Table */\n/* comment : Save info for each table, and parse the table. */\n/***************************************************************/\nTable = (function() {\n function Table(file) {\n var info;\n this.file = file;\n info = this.file.directory.tables[this.tag];\n this.exists = !!info;\n if (info) {\n (this.offset = info.offset), (this.length = info.length);\n this.parse(this.file.contents);\n }\n }\n Table.prototype.parse = function() {};\n Table.prototype.encode = function() {};\n Table.prototype.raw = function() {\n if (!this.exists) {\n return null;\n }\n this.file.contents.pos = this.offset;\n return this.file.contents.read(this.length);\n };\n return Table;\n})();\n\nvar HeadTable = (function(_super) {\n __extends(HeadTable, _super);\n\n function HeadTable() {\n return HeadTable.__super__.constructor.apply(this, arguments);\n }\n HeadTable.prototype.tag = \"head\";\n HeadTable.prototype.parse = function(data) {\n data.pos = this.offset;\n this.version = data.readInt();\n this.revision = data.readInt();\n this.checkSumAdjustment = data.readInt();\n this.magicNumber = data.readInt();\n this.flags = data.readShort();\n this.unitsPerEm = data.readShort();\n this.created = data.readLongLong();\n this.modified = data.readLongLong();\n this.xMin = data.readShort();\n this.yMin = data.readShort();\n this.xMax = data.readShort();\n this.yMax = data.readShort();\n this.macStyle = data.readShort();\n this.lowestRecPPEM = data.readShort();\n this.fontDirectionHint = data.readShort();\n this.indexToLocFormat = data.readShort();\n return (this.glyphDataFormat = data.readShort());\n };\n HeadTable.prototype.encode = function(indexToLocFormat) {\n var table;\n table = new Data();\n table.writeInt(this.version);\n table.writeInt(this.revision);\n table.writeInt(this.checkSumAdjustment);\n table.writeInt(this.magicNumber);\n table.writeShort(this.flags);\n table.writeShort(this.unitsPerEm);\n table.writeLongLong(this.created);\n table.writeLongLong(this.modified);\n table.writeShort(this.xMin);\n table.writeShort(this.yMin);\n table.writeShort(this.xMax);\n table.writeShort(this.yMax);\n table.writeShort(this.macStyle);\n table.writeShort(this.lowestRecPPEM);\n table.writeShort(this.fontDirectionHint);\n table.writeShort(indexToLocFormat);\n table.writeShort(this.glyphDataFormat);\n return table.data;\n };\n return HeadTable;\n})(Table);\n\n/************************************************************************************/\n/* function : CmapEntry */\n/* comment : Cmap Initializes and encodes object information (required by pdf spec).*/\n/************************************************************************************/\nvar CmapEntry = (function() {\n function CmapEntry(data, offset) {\n var code,\n count,\n endCode,\n glyphId,\n glyphIds,\n i,\n idDelta,\n idRangeOffset,\n index,\n saveOffset,\n segCount,\n segCountX2,\n start,\n startCode,\n tail,\n _j,\n _k,\n _len;\n this.platformID = data.readUInt16();\n this.encodingID = data.readShort();\n this.offset = offset + data.readInt();\n saveOffset = data.pos;\n data.pos = this.offset;\n this.format = data.readUInt16();\n this.length = data.readUInt16();\n this.language = data.readUInt16();\n this.isUnicode =\n (this.platformID === 3 && this.encodingID === 1 && this.format === 4) ||\n (this.platformID === 0 && this.format === 4);\n this.codeMap = {};\n switch (this.format) {\n case 0:\n for (i = 0; i < 256; ++i) {\n this.codeMap[i] = data.readByte();\n }\n break;\n case 4:\n segCountX2 = data.readUInt16();\n segCount = segCountX2 / 2;\n data.pos += 6;\n endCode = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= segCount ? _j < segCount : _j > segCount;\n i = 0 <= segCount ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n data.pos += 2;\n startCode = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= segCount ? _j < segCount : _j > segCount;\n i = 0 <= segCount ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n idDelta = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= segCount ? _j < segCount : _j > segCount;\n i = 0 <= segCount ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n idRangeOffset = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= segCount ? _j < segCount : _j > segCount;\n i = 0 <= segCount ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n count = (this.length - data.pos + this.offset) / 2;\n glyphIds = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= count ? _j < count : _j > count;\n i = 0 <= count ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n for (i = _j = 0, _len = endCode.length; _j < _len; i = ++_j) {\n tail = endCode[i];\n start = startCode[i];\n for (\n code = _k = start;\n start <= tail ? _k <= tail : _k >= tail;\n code = start <= tail ? ++_k : --_k\n ) {\n if (idRangeOffset[i] === 0) {\n glyphId = code + idDelta[i];\n } else {\n index = idRangeOffset[i] / 2 + (code - start) - (segCount - i);\n glyphId = glyphIds[index] || 0;\n if (glyphId !== 0) {\n glyphId += idDelta[i];\n }\n }\n this.codeMap[code] = glyphId & 0xffff;\n }\n }\n }\n data.pos = saveOffset;\n }\n CmapEntry.encode = function(charmap, encoding) {\n var charMap,\n code,\n codeMap,\n codes,\n delta,\n deltas,\n diff,\n endCode,\n endCodes,\n entrySelector,\n glyphIDs,\n i,\n id,\n indexes,\n last,\n map,\n nextID,\n offset,\n old,\n rangeOffsets,\n rangeShift,\n searchRange,\n segCount,\n segCountX2,\n startCode,\n startCodes,\n startGlyph,\n subtable,\n _i,\n _j,\n _k,\n _l,\n _len,\n _len1,\n _len2,\n _len3,\n _len4,\n _len5,\n _len6,\n _len7,\n _m,\n _n,\n _name,\n _o,\n _p,\n _q;\n subtable = new Data();\n codes = Object.keys(charmap).sort(function(a, b) {\n return a - b;\n });\n switch (encoding) {\n case \"macroman\":\n id = 0;\n indexes = (function() {\n var _results = [];\n for (i = 0; i < 256; ++i) {\n _results.push(0);\n }\n return _results;\n })();\n map = {\n 0: 0\n };\n codeMap = {};\n for (_i = 0, _len = codes.length; _i < _len; _i++) {\n code = codes[_i];\n if (map[(_name = charmap[code])] == null) {\n map[_name] = ++id;\n }\n codeMap[code] = {\n old: charmap[code],\n new: map[charmap[code]]\n };\n indexes[code] = map[charmap[code]];\n }\n subtable.writeUInt16(1);\n subtable.writeUInt16(0);\n subtable.writeUInt32(12);\n subtable.writeUInt16(0);\n subtable.writeUInt16(262);\n subtable.writeUInt16(0);\n subtable.write(indexes);\n return {\n charMap: codeMap,\n subtable: subtable.data,\n maxGlyphID: id + 1\n };\n case \"unicode\":\n startCodes = [];\n endCodes = [];\n nextID = 0;\n map = {};\n charMap = {};\n last = diff = null;\n for (_j = 0, _len1 = codes.length; _j < _len1; _j++) {\n code = codes[_j];\n old = charmap[code];\n if (map[old] == null) {\n map[old] = ++nextID;\n }\n charMap[code] = {\n old: old,\n new: map[old]\n };\n delta = map[old] - code;\n if (last == null || delta !== diff) {\n if (last) {\n endCodes.push(last);\n }\n startCodes.push(code);\n diff = delta;\n }\n last = code;\n }\n if (last) {\n endCodes.push(last);\n }\n endCodes.push(0xffff);\n startCodes.push(0xffff);\n segCount = startCodes.length;\n segCountX2 = segCount * 2;\n searchRange = 2 * Math.pow(Math.log(segCount) / Math.LN2, 2);\n entrySelector = Math.log(searchRange / 2) / Math.LN2;\n rangeShift = 2 * segCount - searchRange;\n deltas = [];\n rangeOffsets = [];\n glyphIDs = [];\n for (i = _k = 0, _len2 = startCodes.length; _k < _len2; i = ++_k) {\n startCode = startCodes[i];\n endCode = endCodes[i];\n if (startCode === 0xffff) {\n deltas.push(0);\n rangeOffsets.push(0);\n break;\n }\n startGlyph = charMap[startCode][\"new\"];\n if (startCode - startGlyph >= 0x8000) {\n deltas.push(0);\n rangeOffsets.push(2 * (glyphIDs.length + segCount - i));\n for (\n code = _l = startCode;\n startCode <= endCode ? _l <= endCode : _l >= endCode;\n code = startCode <= endCode ? ++_l : --_l\n ) {\n glyphIDs.push(charMap[code][\"new\"]);\n }\n } else {\n deltas.push(startGlyph - startCode);\n rangeOffsets.push(0);\n }\n }\n subtable.writeUInt16(3);\n subtable.writeUInt16(1);\n subtable.writeUInt32(12);\n subtable.writeUInt16(4);\n subtable.writeUInt16(16 + segCount * 8 + glyphIDs.length * 2);\n subtable.writeUInt16(0);\n subtable.writeUInt16(segCountX2);\n subtable.writeUInt16(searchRange);\n subtable.writeUInt16(entrySelector);\n subtable.writeUInt16(rangeShift);\n for (_m = 0, _len3 = endCodes.length; _m < _len3; _m++) {\n code = endCodes[_m];\n subtable.writeUInt16(code);\n }\n subtable.writeUInt16(0);\n for (_n = 0, _len4 = startCodes.length; _n < _len4; _n++) {\n code = startCodes[_n];\n subtable.writeUInt16(code);\n }\n for (_o = 0, _len5 = deltas.length; _o < _len5; _o++) {\n delta = deltas[_o];\n subtable.writeUInt16(delta);\n }\n for (_p = 0, _len6 = rangeOffsets.length; _p < _len6; _p++) {\n offset = rangeOffsets[_p];\n subtable.writeUInt16(offset);\n }\n for (_q = 0, _len7 = glyphIDs.length; _q < _len7; _q++) {\n id = glyphIDs[_q];\n subtable.writeUInt16(id);\n }\n return {\n charMap: charMap,\n subtable: subtable.data,\n maxGlyphID: nextID + 1\n };\n }\n };\n return CmapEntry;\n})();\n\nvar CmapTable = (function(_super) {\n __extends(CmapTable, _super);\n\n function CmapTable() {\n return CmapTable.__super__.constructor.apply(this, arguments);\n }\n CmapTable.prototype.tag = \"cmap\";\n CmapTable.prototype.parse = function(data) {\n var entry, i, tableCount;\n data.pos = this.offset;\n this.version = data.readUInt16();\n tableCount = data.readUInt16();\n this.tables = [];\n this.unicode = null;\n for (\n i = 0;\n 0 <= tableCount ? i < tableCount : i > tableCount;\n i = 0 <= tableCount ? ++i : --i\n ) {\n entry = new CmapEntry(data, this.offset);\n this.tables.push(entry);\n if (entry.isUnicode) {\n if (this.unicode == null) {\n this.unicode = entry;\n }\n }\n }\n return true;\n };\n /*************************************************************************/\n /* function : encode */\n /* comment : Encode the cmap table corresponding to the input character. */\n /*************************************************************************/\n CmapTable.encode = function(charmap, encoding) {\n var result, table;\n if (encoding == null) {\n encoding = \"macroman\";\n }\n result = CmapEntry.encode(charmap, encoding);\n table = new Data();\n table.writeUInt16(0);\n table.writeUInt16(1);\n result.table = table.data.concat(result.subtable);\n return result;\n };\n return CmapTable;\n})(Table);\n\nvar HheaTable = (function(_super) {\n __extends(HheaTable, _super);\n\n function HheaTable() {\n return HheaTable.__super__.constructor.apply(this, arguments);\n }\n HheaTable.prototype.tag = \"hhea\";\n HheaTable.prototype.parse = function(data) {\n data.pos = this.offset;\n this.version = data.readInt();\n this.ascender = data.readShort();\n this.decender = data.readShort();\n this.lineGap = data.readShort();\n this.advanceWidthMax = data.readShort();\n this.minLeftSideBearing = data.readShort();\n this.minRightSideBearing = data.readShort();\n this.xMaxExtent = data.readShort();\n this.caretSlopeRise = data.readShort();\n this.caretSlopeRun = data.readShort();\n this.caretOffset = data.readShort();\n data.pos += 4 * 2;\n this.metricDataFormat = data.readShort();\n return (this.numberOfMetrics = data.readUInt16());\n };\n /*HheaTable.prototype.encode = function (ids) {\n var i, table, _i, _ref;\n table = new Data;\n table.writeInt(this.version);\n table.writeShort(this.ascender);\n table.writeShort(this.decender);\n table.writeShort(this.lineGap);\n table.writeShort(this.advanceWidthMax);\n table.writeShort(this.minLeftSideBearing);\n table.writeShort(this.minRightSideBearing);\n table.writeShort(this.xMaxExtent);\n table.writeShort(this.caretSlopeRise);\n table.writeShort(this.caretSlopeRun);\n table.writeShort(this.caretOffset);\n for (i = _i = 0, _ref = 4 * 2; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n table.writeByte(0);\n }\n table.writeShort(this.metricDataFormat);\n table.writeUInt16(ids.length);\n return table.data;\n };*/\n return HheaTable;\n})(Table);\n\nvar OS2Table = (function(_super) {\n __extends(OS2Table, _super);\n\n function OS2Table() {\n return OS2Table.__super__.constructor.apply(this, arguments);\n }\n OS2Table.prototype.tag = \"OS/2\";\n OS2Table.prototype.parse = function(data) {\n data.pos = this.offset;\n this.version = data.readUInt16();\n this.averageCharWidth = data.readShort();\n this.weightClass = data.readUInt16();\n this.widthClass = data.readUInt16();\n this.type = data.readShort();\n this.ySubscriptXSize = data.readShort();\n this.ySubscriptYSize = data.readShort();\n this.ySubscriptXOffset = data.readShort();\n this.ySubscriptYOffset = data.readShort();\n this.ySuperscriptXSize = data.readShort();\n this.ySuperscriptYSize = data.readShort();\n this.ySuperscriptXOffset = data.readShort();\n this.ySuperscriptYOffset = data.readShort();\n this.yStrikeoutSize = data.readShort();\n this.yStrikeoutPosition = data.readShort();\n this.familyClass = data.readShort();\n this.panose = (function() {\n var i, _results;\n _results = [];\n for (i = 0; i < 10; ++i) {\n _results.push(data.readByte());\n }\n return _results;\n })();\n this.charRange = (function() {\n var i, _results;\n _results = [];\n for (i = 0; i < 4; ++i) {\n _results.push(data.readInt());\n }\n return _results;\n })();\n this.vendorID = data.readString(4);\n this.selection = data.readShort();\n this.firstCharIndex = data.readShort();\n this.lastCharIndex = data.readShort();\n if (this.version > 0) {\n this.ascent = data.readShort();\n this.descent = data.readShort();\n this.lineGap = data.readShort();\n this.winAscent = data.readShort();\n this.winDescent = data.readShort();\n this.codePageRange = (function() {\n var i, _results;\n _results = [];\n for (i = 0; i < 2; i = ++i) {\n _results.push(data.readInt());\n }\n return _results;\n })();\n if (this.version > 1) {\n this.xHeight = data.readShort();\n this.capHeight = data.readShort();\n this.defaultChar = data.readShort();\n this.breakChar = data.readShort();\n return (this.maxContext = data.readShort());\n }\n }\n };\n /*OS2Table.prototype.encode = function () {\n return this.raw();\n };*/\n return OS2Table;\n})(Table);\n\nvar PostTable = (function(_super) {\n var POSTSCRIPT_GLYPHS;\n __extends(PostTable, _super);\n\n function PostTable() {\n return PostTable.__super__.constructor.apply(this, arguments);\n }\n PostTable.prototype.tag = \"post\";\n PostTable.prototype.parse = function(data) {\n var length, numberOfGlyphs, _results;\n data.pos = this.offset;\n this.format = data.readInt();\n this.italicAngle = data.readInt();\n this.underlinePosition = data.readShort();\n this.underlineThickness = data.readShort();\n this.isFixedPitch = data.readInt();\n this.minMemType42 = data.readInt();\n this.maxMemType42 = data.readInt();\n this.minMemType1 = data.readInt();\n this.maxMemType1 = data.readInt();\n switch (this.format) {\n case 0x00010000:\n break;\n case 0x00020000:\n numberOfGlyphs = data.readUInt16();\n this.glyphNameIndex = [];\n var i;\n for (\n i = 0;\n 0 <= numberOfGlyphs ? i < numberOfGlyphs : i > numberOfGlyphs;\n i = 0 <= numberOfGlyphs ? ++i : --i\n ) {\n this.glyphNameIndex.push(data.readUInt16());\n }\n this.names = [];\n _results = [];\n while (data.pos < this.offset + this.length) {\n length = data.readByte();\n _results.push(this.names.push(data.readString(length)));\n }\n return _results;\n case 0x00025000:\n numberOfGlyphs = data.readUInt16();\n return (this.offsets = data.read(numberOfGlyphs));\n case 0x00030000:\n break;\n case 0x00040000:\n return (this.map = function() {\n var _j, _ref, _results1;\n _results1 = [];\n for (\n i = _j = 0, _ref = this.file.maxp.numGlyphs;\n 0 <= _ref ? _j < _ref : _j > _ref;\n i = 0 <= _ref ? ++_j : --_j\n ) {\n _results1.push(data.readUInt32());\n }\n return _results1;\n }.call(this));\n }\n };\n /*PostTable.prototype.glyphFor = function (code) {\n var index;\n switch (this.format) {\n case 0x00010000:\n return POSTSCRIPT_GLYPHS[code] || '.notdef';\n case 0x00020000:\n index = this.glyphNameIndex[code];\n if (index <= 257) {\n return POSTSCRIPT_GLYPHS[index];\n }\n else {\n return this.names[index - 258] || '.notdef';\n }\n break;\n case 0x00025000:\n return POSTSCRIPT_GLYPHS[code + this.offsets[code]] || '.notdef';\n case 0x00030000:\n return '.notdef';\n case 0x00040000:\n return this.map[code] || 0xFFFF;\n }\n };*/\n /*PostTable.prototype.encode = function (mapping) {\n var id, index, indexes, position, post, raw, string, strings, table, _i, _j, _k, _len, _len1, _len2;\n if (!this.exists) {\n return null;\n }\n raw = this.raw();\n if (this.format === 0x00030000) {\n return raw;\n }\n table = new Data(raw.slice(0, 32));\n table.writeUInt32(0x00020000);\n table.pos = 32;\n indexes = [];\n strings = [];\n for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n id = mapping[_i];\n post = this.glyphFor(id);\n position = POSTSCRIPT_GLYPHS.indexOf(post);\n if (position !== -1) {\n indexes.push(position);\n }\n else {\n indexes.push(257 + strings.length);\n strings.push(post);\n }\n }\n table.writeUInt16(Object.keys(mapping).length);\n for (_j = 0, _len1 = indexes.length; _j < _len1; _j++) {\n index = indexes[_j];\n table.writeUInt16(index);\n }\n for (_k = 0, _len2 = strings.length; _k < _len2; _k++) {\n string = strings[_k];\n table.writeByte(string.length);\n table.writeString(string);\n }\n return table.data;\n };*/\n POSTSCRIPT_GLYPHS = \".notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent\\nampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash\\nzero one two three four five six seven eight nine colon semicolon less equal greater\\nquestion at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\\nbracketleft backslash bracketright asciicircum underscore grave\\na b c d e f g h i j k l m n o p q r s t u v w x y z\\nbraceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis\\nUdieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave\\necircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve\\nocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent\\nsterling section bullet paragraph germandbls registered copyright trademark acute\\ndieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu\\npartialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash\\nquestiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft\\nguillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash\\nquotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis\\nfraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered\\nquotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis\\nEgrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute\\nUcircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla\\nhungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth\\neth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior\\nonehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla\\nCacute cacute Ccaron ccaron dcroat\".split(\n /\\s+/g\n );\n return PostTable;\n})(Table);\n\n/*********************************************************************************************************/\n/* function : NameEntry */\n/* comment : Store copyright information, platformID, encodingID, and languageID in the NameEntry object.*/\n/*********************************************************************************************************/\nvar NameEntry = (function() {\n function NameEntry(raw, entry) {\n this.raw = raw;\n this.length = raw.length;\n this.platformID = entry.platformID;\n this.encodingID = entry.encodingID;\n this.languageID = entry.languageID;\n }\n return NameEntry;\n})();\n\nvar NameTable = (function(_super) {\n var subsetTag;\n __extends(NameTable, _super);\n\n function NameTable() {\n return NameTable.__super__.constructor.apply(this, arguments);\n }\n NameTable.prototype.tag = \"name\";\n NameTable.prototype.parse = function(data) {\n var count,\n entries,\n entry,\n i,\n name,\n stringOffset,\n strings,\n text,\n _j,\n _len,\n _name;\n data.pos = this.offset;\n data.readShort(); //format\n count = data.readShort();\n stringOffset = data.readShort();\n entries = [];\n for (\n i = 0;\n 0 <= count ? i < count : i > count;\n i = 0 <= count ? ++i : --i\n ) {\n entries.push({\n platformID: data.readShort(),\n encodingID: data.readShort(),\n languageID: data.readShort(),\n nameID: data.readShort(),\n length: data.readShort(),\n offset: this.offset + stringOffset + data.readShort()\n });\n }\n strings = {};\n for (i = _j = 0, _len = entries.length; _j < _len; i = ++_j) {\n entry = entries[i];\n data.pos = entry.offset;\n text = data.readString(entry.length);\n name = new NameEntry(text, entry);\n if (strings[(_name = entry.nameID)] == null) {\n strings[_name] = [];\n }\n strings[entry.nameID].push(name);\n }\n this.strings = strings;\n this.copyright = strings[0];\n this.fontFamily = strings[1];\n this.fontSubfamily = strings[2];\n this.uniqueSubfamily = strings[3];\n this.fontName = strings[4];\n this.version = strings[5];\n try {\n this.postscriptName = strings[6][0].raw.replace(\n /[\\x00-\\x19\\x80-\\xff]/g,\n \"\"\n );\n } catch (e) {\n this.postscriptName = strings[4][0].raw.replace(\n /[\\x00-\\x19\\x80-\\xff]/g,\n \"\"\n );\n }\n this.trademark = strings[7];\n this.manufacturer = strings[8];\n this.designer = strings[9];\n this.description = strings[10];\n this.vendorUrl = strings[11];\n this.designerUrl = strings[12];\n this.license = strings[13];\n this.licenseUrl = strings[14];\n this.preferredFamily = strings[15];\n this.preferredSubfamily = strings[17];\n this.compatibleFull = strings[18];\n return (this.sampleText = strings[19]);\n };\n subsetTag = \"AAAAAA\";\n /*NameTable.prototype.encode = function () {\n var id, list, nameID, nameTable, postscriptName, strCount, strTable, string, strings, table, val, _i, _len, _ref;\n strings = {};\n _ref = this.strings;\n for (id in _ref) {\n val = _ref[id];\n strings[id] = val;\n }\n postscriptName = new NameEntry(\"\" + subsetTag + \"+\" + this.postscriptName, {\n platformID: 1\n , encodingID: 0\n , languageID: 0\n });\n strings[6] = [postscriptName];\n subsetTag = successorOf(subsetTag);\n strCount = 0;\n for (id in strings) {\n list = strings[id];\n if (list != null) {\n strCount += list.length;\n }\n }\n table = new Data;\n strTable = new Data;\n table.writeShort(0);\n table.writeShort(strCount);\n table.writeShort(6 + 12 * strCount);\n for (nameID in strings) {\n list = strings[nameID];\n if (list != null) {\n for (_i = 0, _len = list.length; _i < _len; _i++) {\n string = list[_i];\n table.writeShort(string.platformID);\n table.writeShort(string.encodingID);\n table.writeShort(string.languageID);\n table.writeShort(nameID);\n table.writeShort(string.length);\n table.writeShort(strTable.pos);\n strTable.writeString(string.raw);\n }\n }\n }\n return nameTable = {\n postscriptName: postscriptName.raw\n , table: table.data.concat(strTable.data)\n };\n };*/\n return NameTable;\n})(Table);\n\nvar MaxpTable = (function(_super) {\n __extends(MaxpTable, _super);\n\n function MaxpTable() {\n return MaxpTable.__super__.constructor.apply(this, arguments);\n }\n MaxpTable.prototype.tag = \"maxp\";\n MaxpTable.prototype.parse = function(data) {\n data.pos = this.offset;\n this.version = data.readInt();\n this.numGlyphs = data.readUInt16();\n this.maxPoints = data.readUInt16();\n this.maxContours = data.readUInt16();\n this.maxCompositePoints = data.readUInt16();\n this.maxComponentContours = data.readUInt16();\n this.maxZones = data.readUInt16();\n this.maxTwilightPoints = data.readUInt16();\n this.maxStorage = data.readUInt16();\n this.maxFunctionDefs = data.readUInt16();\n this.maxInstructionDefs = data.readUInt16();\n this.maxStackElements = data.readUInt16();\n this.maxSizeOfInstructions = data.readUInt16();\n this.maxComponentElements = data.readUInt16();\n return (this.maxComponentDepth = data.readUInt16());\n };\n /*MaxpTable.prototype.encode = function (ids) {\n var table;\n table = new Data;\n table.writeInt(this.version);\n table.writeUInt16(ids.length);\n table.writeUInt16(this.maxPoints);\n table.writeUInt16(this.maxContours);\n table.writeUInt16(this.maxCompositePoints);\n table.writeUInt16(this.maxComponentContours);\n table.writeUInt16(this.maxZones);\n table.writeUInt16(this.maxTwilightPoints);\n table.writeUInt16(this.maxStorage);\n table.writeUInt16(this.maxFunctionDefs);\n table.writeUInt16(this.maxInstructionDefs);\n table.writeUInt16(this.maxStackElements);\n table.writeUInt16(this.maxSizeOfInstructions);\n table.writeUInt16(this.maxComponentElements);\n table.writeUInt16(this.maxComponentDepth);\n return table.data;\n };*/\n return MaxpTable;\n})(Table);\n\nvar HmtxTable = (function(_super) {\n __extends(HmtxTable, _super);\n\n function HmtxTable() {\n return HmtxTable.__super__.constructor.apply(this, arguments);\n }\n HmtxTable.prototype.tag = \"hmtx\";\n HmtxTable.prototype.parse = function(data) {\n var i, last, lsbCount, m, _j, _ref, _results;\n data.pos = this.offset;\n this.metrics = [];\n for (\n i = 0, _ref = this.file.hhea.numberOfMetrics;\n 0 <= _ref ? i < _ref : i > _ref;\n i = 0 <= _ref ? ++i : --i\n ) {\n this.metrics.push({\n advance: data.readUInt16(),\n lsb: data.readInt16()\n });\n }\n lsbCount = this.file.maxp.numGlyphs - this.file.hhea.numberOfMetrics;\n this.leftSideBearings = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= lsbCount ? _j < lsbCount : _j > lsbCount;\n i = 0 <= lsbCount ? ++_j : --_j\n ) {\n _results.push(data.readInt16());\n }\n return _results;\n })();\n this.widths = function() {\n var _j, _len, _ref1, _results;\n _ref1 = this.metrics;\n _results = [];\n for (_j = 0, _len = _ref1.length; _j < _len; _j++) {\n m = _ref1[_j];\n _results.push(m.advance);\n }\n return _results;\n }.call(this);\n last = this.widths[this.widths.length - 1];\n _results = [];\n for (\n i = _j = 0;\n 0 <= lsbCount ? _j < lsbCount : _j > lsbCount;\n i = 0 <= lsbCount ? ++_j : --_j\n ) {\n _results.push(this.widths.push(last));\n }\n return _results;\n };\n /***************************************************************/\n /* function : forGlyph */\n /* comment : Returns the advance width and lsb for this glyph. */\n /***************************************************************/\n HmtxTable.prototype.forGlyph = function(id) {\n if (id in this.metrics) {\n return this.metrics[id];\n }\n return {\n advance: this.metrics[this.metrics.length - 1].advance,\n lsb: this.leftSideBearings[id - this.metrics.length]\n };\n };\n /*HmtxTable.prototype.encode = function (mapping) {\n var id, metric, table, _i, _len;\n table = new Data;\n for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n id = mapping[_i];\n metric = this.forGlyph(id);\n table.writeUInt16(metric.advance);\n table.writeUInt16(metric.lsb);\n }\n return table.data;\n };*/\n return HmtxTable;\n})(Table);\n\nvar __slice = [].slice;\n\nvar GlyfTable = (function(_super) {\n __extends(GlyfTable, _super);\n\n function GlyfTable() {\n return GlyfTable.__super__.constructor.apply(this, arguments);\n }\n GlyfTable.prototype.tag = \"glyf\";\n GlyfTable.prototype.parse = function() {\n return (this.cache = {});\n };\n GlyfTable.prototype.glyphFor = function(id) {\n var data,\n index,\n length,\n loca,\n numberOfContours,\n raw,\n xMax,\n xMin,\n yMax,\n yMin;\n if (id in this.cache) {\n return this.cache[id];\n }\n loca = this.file.loca;\n data = this.file.contents;\n index = loca.indexOf(id);\n length = loca.lengthOf(id);\n if (length === 0) {\n return (this.cache[id] = null);\n }\n data.pos = this.offset + index;\n raw = new Data(data.read(length));\n numberOfContours = raw.readShort();\n xMin = raw.readShort();\n yMin = raw.readShort();\n xMax = raw.readShort();\n yMax = raw.readShort();\n if (numberOfContours === -1) {\n this.cache[id] = new CompoundGlyph(raw, xMin, yMin, xMax, yMax);\n } else {\n this.cache[id] = new SimpleGlyph(\n raw,\n numberOfContours,\n xMin,\n yMin,\n xMax,\n yMax\n );\n }\n return this.cache[id];\n };\n GlyfTable.prototype.encode = function(glyphs, mapping, old2new) {\n var glyph, id, offsets, table, _i, _len;\n table = [];\n offsets = [];\n for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n id = mapping[_i];\n glyph = glyphs[id];\n offsets.push(table.length);\n if (glyph) {\n table = table.concat(glyph.encode(old2new));\n }\n }\n offsets.push(table.length);\n return {\n table: table,\n offsets: offsets\n };\n };\n return GlyfTable;\n})(Table);\n\nvar SimpleGlyph = (function() {\n /**************************************************************************/\n /* function : SimpleGlyph */\n /* comment : Stores raw, xMin, yMin, xMax, and yMax values for this glyph.*/\n /**************************************************************************/\n function SimpleGlyph(raw, numberOfContours, xMin, yMin, xMax, yMax) {\n this.raw = raw;\n this.numberOfContours = numberOfContours;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n this.compound = false;\n }\n SimpleGlyph.prototype.encode = function() {\n return this.raw.data;\n };\n return SimpleGlyph;\n})();\n\nvar CompoundGlyph = (function() {\n var ARG_1_AND_2_ARE_WORDS,\n MORE_COMPONENTS,\n WE_HAVE_AN_X_AND_Y_SCALE,\n WE_HAVE_A_SCALE,\n WE_HAVE_A_TWO_BY_TWO,\n WE_HAVE_INSTRUCTIONS;\n ARG_1_AND_2_ARE_WORDS = 0x0001;\n WE_HAVE_A_SCALE = 0x0008;\n MORE_COMPONENTS = 0x0020;\n WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;\n WE_HAVE_A_TWO_BY_TWO = 0x0080;\n WE_HAVE_INSTRUCTIONS = 0x0100;\n\n /********************************************************************************************************************/\n /* function : CompoundGlypg generator */\n /* comment : It stores raw, xMin, yMin, xMax, yMax, glyph id, and glyph offset for the corresponding compound glyph.*/\n /********************************************************************************************************************/\n function CompoundGlyph(raw, xMin, yMin, xMax, yMax) {\n var data, flags;\n this.raw = raw;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n this.compound = true;\n this.glyphIDs = [];\n this.glyphOffsets = [];\n data = this.raw;\n while (true) {\n flags = data.readShort();\n this.glyphOffsets.push(data.pos);\n this.glyphIDs.push(data.readUInt16());\n if (!(flags & MORE_COMPONENTS)) {\n break;\n }\n if (flags & ARG_1_AND_2_ARE_WORDS) {\n data.pos += 4;\n } else {\n data.pos += 2;\n }\n if (flags & WE_HAVE_A_TWO_BY_TWO) {\n data.pos += 8;\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n data.pos += 4;\n } else if (flags & WE_HAVE_A_SCALE) {\n data.pos += 2;\n }\n }\n }\n /****************************************************************************************************************/\n /* function : CompoundGlypg encode */\n /* comment : After creating a table for the characters you typed, you call directory.encode to encode the table.*/\n /****************************************************************************************************************/\n CompoundGlyph.prototype.encode = function() {\n var i, result, _len, _ref;\n result = new Data(__slice.call(this.raw.data));\n _ref = this.glyphIDs;\n for (i = 0, _len = _ref.length; i < _len; ++i) {\n result.pos = this.glyphOffsets[i];\n }\n return result.data;\n };\n return CompoundGlyph;\n})();\n\nvar LocaTable = (function(_super) {\n __extends(LocaTable, _super);\n\n function LocaTable() {\n return LocaTable.__super__.constructor.apply(this, arguments);\n }\n LocaTable.prototype.tag = \"loca\";\n LocaTable.prototype.parse = function(data) {\n var format, i;\n data.pos = this.offset;\n format = this.file.head.indexToLocFormat;\n if (format === 0) {\n return (this.offsets = function() {\n var _ref, _results;\n _results = [];\n for (i = 0, _ref = this.length; i < _ref; i += 2) {\n _results.push(data.readUInt16() * 2);\n }\n return _results;\n }.call(this));\n } else {\n return (this.offsets = function() {\n var _ref, _results;\n _results = [];\n for (i = 0, _ref = this.length; i < _ref; i += 4) {\n _results.push(data.readUInt32());\n }\n return _results;\n }.call(this));\n }\n };\n LocaTable.prototype.indexOf = function(id) {\n return this.offsets[id];\n };\n LocaTable.prototype.lengthOf = function(id) {\n return this.offsets[id + 1] - this.offsets[id];\n };\n LocaTable.prototype.encode = function(offsets, activeGlyphs) {\n var LocaTable = new Uint32Array(this.offsets.length);\n var glyfPtr = 0;\n var listGlyf = 0;\n for (var k = 0; k < LocaTable.length; ++k) {\n LocaTable[k] = glyfPtr;\n if (listGlyf < activeGlyphs.length && activeGlyphs[listGlyf] == k) {\n ++listGlyf;\n LocaTable[k] = glyfPtr;\n var start = this.offsets[k];\n var len = this.offsets[k + 1] - start;\n if (len > 0) {\n glyfPtr += len;\n }\n }\n }\n var newLocaTable = new Array(LocaTable.length * 4);\n for (var j = 0; j < LocaTable.length; ++j) {\n newLocaTable[4 * j + 3] = LocaTable[j] & 0x000000ff;\n newLocaTable[4 * j + 2] = (LocaTable[j] & 0x0000ff00) >> 8;\n newLocaTable[4 * j + 1] = (LocaTable[j] & 0x00ff0000) >> 16;\n newLocaTable[4 * j] = (LocaTable[j] & 0xff000000) >> 24;\n }\n return newLocaTable;\n };\n return LocaTable;\n})(Table);\n\n/************************************************************************************/\n/* function : invert */\n/* comment : Change the object's (key: value) to create an object with (value: key).*/\n/************************************************************************************/\nvar invert = function(object) {\n var key, ret, val;\n ret = {};\n for (key in object) {\n val = object[key];\n ret[val] = key;\n }\n return ret;\n};\n\n/*var successorOf = function (input) {\n var added, alphabet, carry, i, index, isUpperCase, last, length, next, result;\n alphabet = 'abcdefghijklmnopqrstuvwxyz';\n length = alphabet.length;\n result = input;\n i = input.length;\n while (i >= 0) {\n last = input.charAt(--i);\n if (isNaN(last)) {\n index = alphabet.indexOf(last.toLowerCase());\n if (index === -1) {\n next = last;\n carry = true;\n }\n else {\n next = alphabet.charAt((index + 1) % length);\n isUpperCase = last === last.toUpperCase();\n if (isUpperCase) {\n next = next.toUpperCase();\n }\n carry = index + 1 >= length;\n if (carry && i === 0) {\n added = isUpperCase ? 'A' : 'a';\n result = added + next + result.slice(1);\n break;\n }\n }\n }\n else {\n next = +last + 1;\n carry = next > 9;\n if (carry) {\n next = 0;\n }\n if (carry && i === 0) {\n result = '1' + next + result.slice(1);\n break;\n }\n }\n result = result.slice(0, i) + next + result.slice(i + 1);\n if (!carry) {\n break;\n }\n }\n return result;\n };*/\n\nvar Subset = (function() {\n function Subset(font) {\n this.font = font;\n this.subset = {};\n this.unicodes = {};\n this.next = 33;\n }\n /*Subset.prototype.use = function (character) {\n var i, _i, _ref;\n if (typeof character === 'string') {\n for (i = _i = 0, _ref = character.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n this.use(character.charCodeAt(i));\n }\n return;\n }\n if (!this.unicodes[character]) {\n this.subset[this.next] = character;\n return this.unicodes[character] = this.next++;\n }\n };*/\n /*Subset.prototype.encodeText = function (text) {\n var char, i, string, _i, _ref;\n string = '';\n for (i = _i = 0, _ref = text.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n char = this.unicodes[text.charCodeAt(i)];\n string += String.fromCharCode(char);\n }\n return string;\n };*/\n /***************************************************************/\n /* function : generateCmap */\n /* comment : Returns the unicode cmap for this font. */\n /***************************************************************/\n Subset.prototype.generateCmap = function() {\n var mapping, roman, unicode, unicodeCmap, _ref;\n unicodeCmap = this.font.cmap.tables[0].codeMap;\n mapping = {};\n _ref = this.subset;\n for (roman in _ref) {\n unicode = _ref[roman];\n mapping[roman] = unicodeCmap[unicode];\n }\n return mapping;\n };\n /*Subset.prototype.glyphIDs = function () {\n var ret, roman, unicode, unicodeCmap, val, _ref;\n unicodeCmap = this.font.cmap.tables[0].codeMap;\n ret = [0];\n _ref = this.subset;\n for (roman in _ref) {\n unicode = _ref[roman];\n val = unicodeCmap[unicode];\n if ((val != null) && __indexOf.call(ret, val) < 0) {\n ret.push(val);\n }\n }\n return ret.sort();\n };*/\n /******************************************************************/\n /* function : glyphsFor */\n /* comment : Returns simple glyph objects for the input character.*/\n /******************************************************************/\n Subset.prototype.glyphsFor = function(glyphIDs) {\n var additionalIDs, glyph, glyphs, id, _i, _len, _ref;\n glyphs = {};\n for (_i = 0, _len = glyphIDs.length; _i < _len; _i++) {\n id = glyphIDs[_i];\n glyphs[id] = this.font.glyf.glyphFor(id);\n }\n additionalIDs = [];\n for (id in glyphs) {\n glyph = glyphs[id];\n if (glyph != null ? glyph.compound : void 0) {\n additionalIDs.push.apply(additionalIDs, glyph.glyphIDs);\n }\n }\n if (additionalIDs.length > 0) {\n _ref = this.glyphsFor(additionalIDs);\n for (id in _ref) {\n glyph = _ref[id];\n glyphs[id] = glyph;\n }\n }\n return glyphs;\n };\n /***************************************************************/\n /* function : encode */\n /* comment : Encode various tables for the characters you use. */\n /***************************************************************/\n Subset.prototype.encode = function(glyID, indexToLocFormat) {\n var cmap,\n code,\n glyf,\n glyphs,\n id,\n ids,\n loca,\n new2old,\n newIDs,\n nextGlyphID,\n old2new,\n oldID,\n oldIDs,\n tables,\n _ref;\n cmap = CmapTable.encode(this.generateCmap(), \"unicode\");\n glyphs = this.glyphsFor(glyID);\n old2new = {\n 0: 0\n };\n _ref = cmap.charMap;\n for (code in _ref) {\n ids = _ref[code];\n old2new[ids.old] = ids[\"new\"];\n }\n nextGlyphID = cmap.maxGlyphID;\n for (oldID in glyphs) {\n if (!(oldID in old2new)) {\n old2new[oldID] = nextGlyphID++;\n }\n }\n new2old = invert(old2new);\n newIDs = Object.keys(new2old).sort(function(a, b) {\n return a - b;\n });\n oldIDs = (function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = newIDs.length; _i < _len; _i++) {\n id = newIDs[_i];\n _results.push(new2old[id]);\n }\n return _results;\n })();\n glyf = this.font.glyf.encode(glyphs, oldIDs, old2new);\n loca = this.font.loca.encode(glyf.offsets, oldIDs);\n tables = {\n cmap: this.font.cmap.raw(),\n glyf: glyf.table,\n loca: loca,\n hmtx: this.font.hmtx.raw(),\n hhea: this.font.hhea.raw(),\n maxp: this.font.maxp.raw(),\n post: this.font.post.raw(),\n name: this.font.name.raw(),\n head: this.font.head.encode(indexToLocFormat)\n };\n if (this.font.os2.exists) {\n tables[\"OS/2\"] = this.font.os2.raw();\n }\n return this.font.directory.encode(tables);\n };\n return Subset;\n})();\n\njsPDF.API.PDFObject = (function() {\n var pad;\n\n function PDFObject() {}\n pad = function(str, length) {\n return (Array(length + 1).join(\"0\") + str).slice(-length);\n };\n /*****************************************************************************/\n /* function : convert */\n /* comment :Converts pdf tag's / FontBBox and array values in / W to strings */\n /*****************************************************************************/\n PDFObject.convert = function(object) {\n var e, items, key, out, val;\n if (Array.isArray(object)) {\n items = (function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = object.length; _i < _len; _i++) {\n e = object[_i];\n _results.push(PDFObject.convert(e));\n }\n return _results;\n })().join(\" \");\n return \"[\" + items + \"]\";\n } else if (typeof object === \"string\") {\n return \"/\" + object;\n } else if (object != null ? object.isString : void 0) {\n return \"(\" + object + \")\";\n } else if (object instanceof Date) {\n return (\n \"(D:\" +\n pad(object.getUTCFullYear(), 4) +\n pad(object.getUTCMonth(), 2) +\n pad(object.getUTCDate(), 2) +\n pad(object.getUTCHours(), 2) +\n pad(object.getUTCMinutes(), 2) +\n pad(object.getUTCSeconds(), 2) +\n \"Z)\"\n );\n } else if ({}.toString.call(object) === \"[object Object]\") {\n out = [\"<<\"];\n for (key in object) {\n val = object[key];\n out.push(\"/\" + key + \" \" + PDFObject.convert(val));\n }\n out.push(\">>\");\n return out.join(\"\\n\");\n } else {\n return \"\" + object;\n }\n };\n return PDFObject;\n})();\n","import PropTypes from 'prop-types';\nconst alignDirection = PropTypes.oneOf(['start', 'end']);\nexport const alignPropType = PropTypes.oneOfType([alignDirection, PropTypes.shape({\n sm: alignDirection\n}), PropTypes.shape({\n md: alignDirection\n}), PropTypes.shape({\n lg: alignDirection\n}), PropTypes.shape({\n xl: alignDirection\n}), PropTypes.shape({\n xxl: alignDirection\n}), PropTypes.object]);","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport Dropdown from './Dropdown';\nimport DropdownToggle from './DropdownToggle';\nimport DropdownMenu from './DropdownMenu';\nimport { alignPropType } from './types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst propTypes = {\n /**\n * An html id attribute for the Toggle button, necessary for assistive technologies, such as screen readers.\n * @type {string}\n */\n id: PropTypes.string,\n /** An `href` passed to the Toggle component */\n href: PropTypes.string,\n /** An `onClick` handler passed to the Toggle component */\n onClick: PropTypes.func,\n /** The content of the non-toggle Button. */\n title: PropTypes.node.isRequired,\n /** Disables both Buttons */\n disabled: PropTypes.bool,\n /**\n * Aligns the dropdown menu.\n *\n * _see [DropdownMenu](#dropdown-menu-props) for more details_\n *\n * @type {\"start\"|\"end\"|{ sm: \"start\"|\"end\" }|{ md: \"start\"|\"end\" }|{ lg: \"start\"|\"end\" }|{ xl: \"start\"|\"end\"}|{ xxl: \"start\"|\"end\"} }\n */\n align: alignPropType,\n /** An ARIA accessible role applied to the Menu component. When set to 'menu', The dropdown */\n menuRole: PropTypes.string,\n /** Whether to render the dropdown menu in the DOM before the first time it is shown */\n renderMenuOnMount: PropTypes.bool,\n /**\n * Which event when fired outside the component will cause it to be closed.\n *\n * _see [DropdownMenu](#dropdown-menu-props) for more details_\n */\n rootCloseEvent: PropTypes.string,\n /**\n * Menu color variant.\n *\n * Omitting this will use the default light color.\n */\n menuVariant: PropTypes.oneOf(['dark']),\n /**\n * Allow Dropdown to flip in case of an overlapping on the reference element. For more information refer to\n * Popper.js's flip [docs](https://popper.js.org/docs/v2/modifiers/flip/).\n *\n */\n flip: PropTypes.bool,\n /** @ignore */\n bsPrefix: PropTypes.string,\n /** @ignore */\n variant: PropTypes.string,\n /** @ignore */\n size: PropTypes.string\n};\n\n/**\n * A convenience component for simple or general use dropdowns. Renders a `Button` toggle and all `children`\n * are passed directly to the default `Dropdown.Menu`. This component accepts all of\n * [`Dropdown`'s props](#dropdown-props).\n *\n * _All unknown props are passed through to the `Dropdown` component._ Only\n * the Button `variant`, `size` and `bsPrefix` props are passed to the toggle,\n * along with menu-related props are passed to the `Dropdown.Menu`\n */\nconst DropdownButton = /*#__PURE__*/React.forwardRef(({\n title,\n children,\n bsPrefix,\n rootCloseEvent,\n variant,\n size,\n menuRole,\n renderMenuOnMount,\n disabled,\n href,\n id,\n menuVariant,\n flip,\n ...props\n}, ref) => /*#__PURE__*/_jsxs(Dropdown, {\n ref: ref,\n ...props,\n children: [/*#__PURE__*/_jsx(DropdownToggle, {\n id: id,\n href: href,\n size: size,\n variant: variant,\n disabled: disabled,\n childBsPrefix: bsPrefix,\n children: title\n }), /*#__PURE__*/_jsx(DropdownMenu, {\n role: menuRole,\n renderOnMount: renderMenuOnMount,\n rootCloseEvent: rootCloseEvent,\n variant: menuVariant,\n flip: flip,\n children: children\n })]\n}));\nDropdownButton.displayName = 'DropdownButton';\nDropdownButton.propTypes = propTypes;\nexport default DropdownButton;","import React from 'react'\r\nimport Menus from '../../../Home/Menus/Menus'\r\nimport { Heading } from '../../../../../Reusable/Headings/Heading'\r\nimport { IoIosArrowBack } from \"react-icons/io\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport jsPDF from 'jspdf';\r\n\r\nimport Dropdown from 'react-bootstrap/Dropdown';\r\nimport DropdownButton from 'react-bootstrap/DropdownButton';\r\n\r\n\r\nconst SpecificHistory = () => {\r\n const navigate = useNavigate();\r\n const onFinish = () => {\r\n navigate('/home');\r\n };\r\n\r\n const specificHistoryLabel = [\r\n {\r\n label: \"Service Id\",\r\n formData: \"908\",\r\n // padding: \"30px 20px 20px 20px\",\r\n index: 1\r\n },\r\n {\r\n label: \"Service Name\",\r\n formData: \"Crawling\",\r\n // padding: \"0px 20px 20px 20px\",\r\n index: 2\r\n },\r\n {\r\n label: \"Date\",\r\n formData: \"25-01-2024\",\r\n // padding: \"0px 20px 20px 20px\",\r\n index: 3\r\n },\r\n {\r\n label: \"Start Time\",\r\n formData: \"09:19\",\r\n // padding: \"0px 20px 20px 20px\",\r\n index: 4\r\n },\r\n {\r\n label: \"Technician Name\",\r\n formData: \"XYZ\",\r\n // padding: \"0px 20px 20px 20px\",\r\n index: 5\r\n },\r\n {\r\n label: \"Status\",\r\n formData: \"Completed\",\r\n // padding: \"0px 20px 20px 20px\",\r\n index: 5\r\n },\r\n ]\r\n\r\n const downloadPdf = () => {\r\n const doc = new jsPDF();\r\n\r\n // Add title\r\n doc.text(\"Service History\", 10, 10);\r\n\r\n // Add data\r\n specificHistoryLabel.forEach((data, index) => {\r\n doc.text(`${data.label}: ${data.formData}`, 10, 20 + index * 10);\r\n });\r\n\r\n // Save the PDF\r\n doc.save('specific_history.pdf');\r\n };\r\n\r\n const downloadCSV = () => {\r\n const csvData = specificHistoryLabel.map(item => Object.values(item).join(',')).join('\\n');\r\n const blob = new Blob([csvData], { type: 'text/csv;charset=utf-8;' });\r\n const link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(blob);\r\n link.setAttribute('download', 'specific_history.csv');\r\n link.click();\r\n };\r\n\r\n\r\n \r\n return (\r\n <>\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n \r\n Pdf\r\n Excel\r\n \r\n \r\n \t
    \r\n
    \r\n
    \r\n
    \r\n {specificHistoryLabel.map((data) => {\r\n return (\r\n
    \r\n
    \r\n
    {data.label}
    \r\n
    \r\n
    :
    \r\n
    \r\n {data.formData}\r\n
    \r\n
    \r\n )\r\n })}\r\n
    \r\n
    \r\n \r\n\r\n
    \r\n\r\n \r\n\r\n\r\n \r\n \r\n\r\n \r\n )\r\n}\r\n\r\nexport default SpecificHistory","import React from 'react'\r\nimport caro2 from \"../../../../../Assets/Images/caro2.png\"\r\nimport Menus from '../../../Home/Menus/Menus'\r\nimport { Heading } from '../../../../../Reusable/Headings/Heading'\r\nimport { IoIosArrowBack } from \"react-icons/io\";\r\nimport { useNavigate } from \"react-router-dom\";\r\n\r\nconst InsideServices = () => {\r\n const navigate = useNavigate();\r\n const onFinish = () => {\r\n navigate('/home');\r\n };\r\n\r\n \r\n const specificHistoryLabel = [\r\n {\r\n label: \"Service Id\",\r\n formData: \"908\",\r\n padding: \"30px 20px 20px 20px\",\r\n index: 1\r\n },\r\n {\r\n label: \"Service Name\",\r\n formData: \"Crawling\",\r\n padding: \"0px 20px 20px 20px\",\r\n index: 2\r\n },\r\n {\r\n label: \"Date\",\r\n formData: \"25-01-2024\",\r\n padding: \"0px 20px 20px 20px\",\r\n index: 3\r\n },\r\n {\r\n label: \"Start Time\",\r\n formData: \"09:19\",\r\n padding: \"0px 20px 20px 20px\",\r\n index: 4\r\n },\r\n {\r\n label: \"Technician Name\",\r\n formData: \"XYZ\",\r\n padding: \"0px 20px 20px 20px\",\r\n index: 5\r\n },\r\n {\r\n label: \"Status\",\r\n formData: \"Completed\",\r\n padding: \"0px 20px 20px 20px\",\r\n index: 5\r\n },\r\n ]\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n {specificHistoryLabel.map((data) => {\r\n return (\r\n
    \r\n
    \r\n
    {data.label}
    \r\n
    \r\n
    :
    \r\n
    \r\n {data.formData}\r\n
    \r\n
    \r\n )\r\n })}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default InsideServices","import React from \"react\";\r\nimport { SubHeading } from \"../../Reusable/Headings/Heading\";\r\nimport s6 from '../../Assets/Images/s2.webp'\r\nimport s5 from '../../Assets/Images/s3.webp'\r\n\r\nimport { useNavigate,useLocation } from \"react-router-dom\";\r\n\r\n\r\nconst MyTask = () => {\r\n\r\n let navigate = useNavigate()\r\n let location = useLocation()\r\n\r\n const tasks = [\r\n { id: 1, name: \"Bird Control\", phone: \"8983983478\", customer: \"Gowtham\", date: \"02-03-2024\", image: s5 },\r\n { id: 2, name: \"Rodent Control\", phone: \"8983983498\", customer: \"rajesh\", date: \"02-03-2024\", image: s6 },\r\n \r\n ];\r\n\r\n return (\r\n
    \r\n {location.pathname === '/tech/home' &&(\r\n \r\n )}\r\n {tasks.map(task => (\r\n \r\n
    \r\n
    \r\n \"Product\"\r\n
    \r\n
    \r\n
    {task.name}
    \r\n
    Customer : XXX Company
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n ))}\r\n
    \r\n //
    \r\n );\r\n};\r\n\r\nexport default MyTask;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { SubHeading } from \"../../Reusable/Headings/Heading\";\r\nimport Menus from '../../Screens/Customer/Home/Menus/Menus';\r\nimport { Heading } from '../../Reusable/Headings/Heading';\r\nimport s1 from '../../Assets/Images/s1.webp'\r\nimport s2 from '../../Assets/Images/s2.webp'\r\nimport s3 from '../../Assets/Images/s3.webp';\r\nimport s4 from '../../Assets/Images/s4.webp'\r\nimport s5 from '../../Assets/Images/s5.webp'\r\nimport s6 from '../../Assets/Images/s6.webp'\r\nimport s7 from '../../Assets/Images/s7.webp'\r\nimport s8 from '../../Assets/Images/s8.webp'\r\nimport s9 from '../../Assets/Images/s9.webp'\r\n\r\nimport { useNavigate, useLocation } from 'react-router-dom';\r\n// import ApiService from '../../Services/TaskServices';\r\n\r\nconst Tasdetails = [\r\n { id:1, serviceName:\"Rodent Control\", companyName:'Test 1',img:s2 },\r\n { id:2, serviceName:\"Flying Insects Control\", companyName:'Test 2',img:s3 },\r\n { id:3, serviceName:\"Bed Bugs Control\", companyName:'Test 3',img:s7 },\r\n { id:4, serviceName:\"Termite Control\", companyName:'Test 4',img:s6 },\r\n { id:5, serviceName:\"Crawling Insects Control\", companyName:'Test 5',img:s1}, \r\n { id:6, serviceName:\"Bird Control\", companyName:'Test 6',img:s4 }, \r\n { id:7, serviceName:\"Vector Control\", companyName:'Test 7',img:s8 }, \r\n { id:8, serviceName:\"Snake and Scroption Control\", companyName:'Test 8',img:s5 }, \r\n { id:9, serviceName:\"Feral Cat Control\", companyName:'Test 9',img:s9 },\r\n\r\n\r\n]\r\n\r\nconst MyTaskList = () => {\r\n const [data, setData] = useState([]);\r\n const navigate = useNavigate();\r\n const location = useLocation();\r\n\r\n \r\n\r\n useEffect(() => {\r\n if (location.pathname === '/tech/home') {\r\n setData(Tasdetails.slice(0, 3)); // Display only the first two tasks\r\n } else {\r\n setData(Tasdetails);\r\n }\r\n // getAllTasks();\r\n }, []);\r\n\r\n // const getAllTasks = async () => {\r\n // try {\r\n // const AllTasks = await ApiService.TaskList();\r\n // const Tasks = AllTasks.data.Results;\r\n // if (location.pathname === '/tech/home') {\r\n // setData(Tasks.slice(0, 2)); // Display only the first two tasks\r\n // } else {\r\n // setData(Tasks);\r\n // }\r\n // } catch (error) {\r\n // console.error('Error fetching tasks:', error);\r\n // }\r\n // };\r\n\r\n // const handleViewDetails = (task) => {\r\n // navigate(`/taskdetails/${task._id}`, { state: { task } });\r\n // };\r\n const handleViewDetails = ()=>{\r\n navigate('/taskdetails')\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n {location.pathname !== '/tech/home' && }\r\n
    \r\n {location.pathname === '/tech/home' && }\r\n {location.pathname !== '/tech/home' && }\r\n {data.map((task) => (\r\n
    \r\n
    \r\n \"Product\"\r\n
    \r\n
    \r\n
    {task?.serviceName || 'Service Name Not Available'}
    \r\n
    Customer : {task?.companyName || 'Company Name Not Available'}
    \r\n
    \r\n
    \r\n \r\n View\r\n \r\n
    \r\n
    \r\n ))}\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default MyTaskList;\r\n","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (canUseDOM) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ModalBody = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-body');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nModalBody.displayName = 'ModalBody';\nexport default ModalBody;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ModalDialog = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n contentClassName,\n centered,\n size,\n fullscreen,\n children,\n scrollable,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n const dialogClass = `${bsPrefix}-dialog`;\n const fullScreenClass = typeof fullscreen === 'string' ? `${bsPrefix}-fullscreen-${fullscreen}` : `${bsPrefix}-fullscreen`;\n return /*#__PURE__*/_jsx(\"div\", {\n ...props,\n ref: ref,\n className: classNames(dialogClass, className, size && `${bsPrefix}-${size}`, centered && `${dialogClass}-centered`, scrollable && `${dialogClass}-scrollable`, fullscreen && fullScreenClass),\n children: /*#__PURE__*/_jsx(\"div\", {\n className: classNames(`${bsPrefix}-content`, contentClassName),\n children: children\n })\n });\n});\nModalDialog.displayName = 'ModalDialog';\nexport default ModalDialog;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ModalFooter = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-footer');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nModalFooter.displayName = 'ModalFooter';\nexport default ModalFooter;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AbstractModalHeader from './AbstractModalHeader';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ModalHeader = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n closeLabel = 'Close',\n closeButton = false,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-header');\n return /*#__PURE__*/_jsx(AbstractModalHeader, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix),\n closeLabel: closeLabel,\n closeButton: closeButton\n });\n});\nModalHeader.displayName = 'ModalHeader';\nexport default ModalHeader;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport divWithClassName from './divWithClassName';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH4 = divWithClassName('h4');\nconst ModalTitle = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = DivStyledAsH4,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-title');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nModalTitle.displayName = 'ModalTitle';\nexport default ModalTitle;","\"use client\";\n\nimport classNames from 'classnames';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport removeEventListener from 'dom-helpers/removeEventListener';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport transitionEnd from 'dom-helpers/transitionEnd';\nimport * as React from 'react';\nimport { useCallback, useMemo, useRef, useState } from 'react';\nimport BaseModal from '@restart/ui/Modal';\nimport { getSharedManager } from './BootstrapModalManager';\nimport Fade from './Fade';\nimport ModalBody from './ModalBody';\nimport ModalContext from './ModalContext';\nimport ModalDialog from './ModalDialog';\nimport ModalFooter from './ModalFooter';\nimport ModalHeader from './ModalHeader';\nimport ModalTitle from './ModalTitle';\nimport { useBootstrapPrefix, useIsRTL } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/* eslint-disable no-use-before-define, react/no-multi-comp */\nfunction DialogTransition(props) {\n return /*#__PURE__*/_jsx(Fade, {\n ...props,\n timeout: null\n });\n}\nfunction BackdropTransition(props) {\n return /*#__PURE__*/_jsx(Fade, {\n ...props,\n timeout: null\n });\n}\n\n/* eslint-enable no-use-before-define */\nconst Modal = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n style,\n dialogClassName,\n contentClassName,\n children,\n dialogAs: Dialog = ModalDialog,\n 'data-bs-theme': dataBsTheme,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n /* BaseModal props */\n\n show = false,\n animation = true,\n backdrop = true,\n keyboard = true,\n onEscapeKeyDown,\n onShow,\n onHide,\n container,\n autoFocus = true,\n enforceFocus = true,\n restoreFocus = true,\n restoreFocusOptions,\n onEntered,\n onExit,\n onExiting,\n onEnter,\n onEntering,\n onExited,\n backdropClassName,\n manager: propsManager,\n ...props\n}, ref) => {\n const [modalStyle, setStyle] = useState({});\n const [animateStaticModal, setAnimateStaticModal] = useState(false);\n const waitingForMouseUpRef = useRef(false);\n const ignoreBackdropClickRef = useRef(false);\n const removeStaticModalAnimationRef = useRef(null);\n const [modal, setModalRef] = useCallbackRef();\n const mergedRef = useMergedRefs(ref, setModalRef);\n const handleHide = useEventCallback(onHide);\n const isRTL = useIsRTL();\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n const modalContext = useMemo(() => ({\n onHide: handleHide\n }), [handleHide]);\n function getModalManager() {\n if (propsManager) return propsManager;\n return getSharedManager({\n isRTL\n });\n }\n function updateDialogStyle(node) {\n if (!canUseDOM) return;\n const containerIsOverflowing = getModalManager().getScrollbarWidth() > 0;\n const modalIsOverflowing = node.scrollHeight > ownerDocument(node).documentElement.clientHeight;\n setStyle({\n paddingRight: containerIsOverflowing && !modalIsOverflowing ? getScrollbarSize() : undefined,\n paddingLeft: !containerIsOverflowing && modalIsOverflowing ? getScrollbarSize() : undefined\n });\n }\n const handleWindowResize = useEventCallback(() => {\n if (modal) {\n updateDialogStyle(modal.dialog);\n }\n });\n useWillUnmount(() => {\n removeEventListener(window, 'resize', handleWindowResize);\n removeStaticModalAnimationRef.current == null ? void 0 : removeStaticModalAnimationRef.current();\n });\n\n // We prevent the modal from closing during a drag by detecting where the\n // click originates from. If it starts in the modal and then ends outside\n // don't close.\n const handleDialogMouseDown = () => {\n waitingForMouseUpRef.current = true;\n };\n const handleMouseUp = e => {\n if (waitingForMouseUpRef.current && modal && e.target === modal.dialog) {\n ignoreBackdropClickRef.current = true;\n }\n waitingForMouseUpRef.current = false;\n };\n const handleStaticModalAnimation = () => {\n setAnimateStaticModal(true);\n removeStaticModalAnimationRef.current = transitionEnd(modal.dialog, () => {\n setAnimateStaticModal(false);\n });\n };\n const handleStaticBackdropClick = e => {\n if (e.target !== e.currentTarget) {\n return;\n }\n handleStaticModalAnimation();\n };\n const handleClick = e => {\n if (backdrop === 'static') {\n handleStaticBackdropClick(e);\n return;\n }\n if (ignoreBackdropClickRef.current || e.target !== e.currentTarget) {\n ignoreBackdropClickRef.current = false;\n return;\n }\n onHide == null ? void 0 : onHide();\n };\n const handleEscapeKeyDown = e => {\n if (keyboard) {\n onEscapeKeyDown == null ? void 0 : onEscapeKeyDown(e);\n } else {\n // Call preventDefault to stop modal from closing in @restart/ui.\n e.preventDefault();\n if (backdrop === 'static') {\n // Play static modal animation.\n handleStaticModalAnimation();\n }\n }\n };\n const handleEnter = (node, isAppearing) => {\n if (node) {\n updateDialogStyle(node);\n }\n onEnter == null ? void 0 : onEnter(node, isAppearing);\n };\n const handleExit = node => {\n removeStaticModalAnimationRef.current == null ? void 0 : removeStaticModalAnimationRef.current();\n onExit == null ? void 0 : onExit(node);\n };\n const handleEntering = (node, isAppearing) => {\n onEntering == null ? void 0 : onEntering(node, isAppearing);\n\n // FIXME: This should work even when animation is disabled.\n addEventListener(window, 'resize', handleWindowResize);\n };\n const handleExited = node => {\n if (node) node.style.display = ''; // RHL removes it sometimes\n onExited == null ? void 0 : onExited(node);\n\n // FIXME: This should work even when animation is disabled.\n removeEventListener(window, 'resize', handleWindowResize);\n };\n const renderBackdrop = useCallback(backdropProps => /*#__PURE__*/_jsx(\"div\", {\n ...backdropProps,\n className: classNames(`${bsPrefix}-backdrop`, backdropClassName, !animation && 'show')\n }), [animation, backdropClassName, bsPrefix]);\n const baseModalStyle = {\n ...style,\n ...modalStyle\n };\n\n // If `display` is not set to block, autoFocus inside the modal fails\n // https://github.com/react-bootstrap/react-bootstrap/issues/5102\n baseModalStyle.display = 'block';\n const renderDialog = dialogProps => /*#__PURE__*/_jsx(\"div\", {\n role: \"dialog\",\n ...dialogProps,\n style: baseModalStyle,\n className: classNames(className, bsPrefix, animateStaticModal && `${bsPrefix}-static`, !animation && 'show'),\n onClick: backdrop ? handleClick : undefined,\n onMouseUp: handleMouseUp,\n \"data-bs-theme\": dataBsTheme,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n \"aria-describedby\": ariaDescribedby,\n children: /*#__PURE__*/_jsx(Dialog, {\n ...props,\n onMouseDown: handleDialogMouseDown,\n className: dialogClassName,\n contentClassName: contentClassName,\n children: children\n })\n });\n return /*#__PURE__*/_jsx(ModalContext.Provider, {\n value: modalContext,\n children: /*#__PURE__*/_jsx(BaseModal, {\n show: show,\n ref: mergedRef,\n backdrop: backdrop,\n container: container,\n keyboard: true // Always set true - see handleEscapeKeyDown\n ,\n autoFocus: autoFocus,\n enforceFocus: enforceFocus,\n restoreFocus: restoreFocus,\n restoreFocusOptions: restoreFocusOptions,\n onEscapeKeyDown: handleEscapeKeyDown,\n onShow: onShow,\n onHide: onHide,\n onEnter: handleEnter,\n onEntering: handleEntering,\n onEntered: onEntered,\n onExit: handleExit,\n onExiting: onExiting,\n onExited: handleExited,\n manager: getModalManager(),\n transition: animation ? DialogTransition : undefined,\n backdropTransition: animation ? BackdropTransition : undefined,\n renderBackdrop: renderBackdrop,\n renderDialog: renderDialog\n })\n });\n});\nModal.displayName = 'Modal';\nexport default Object.assign(Modal, {\n Body: ModalBody,\n Header: ModalHeader,\n Title: ModalTitle,\n Footer: ModalFooter,\n Dialog: ModalDialog,\n TRANSITION_DURATION: 300,\n BACKDROP_TRANSITION_DURATION: 150\n});","import React from \"react\";\r\nimport Button from \"react-bootstrap/Button\";\r\nimport Modal from \"react-bootstrap/Modal\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nconst Model = ({ modalTitle, modalContent, show, onClose, onConfirm }) => {\r\n const handleClose = () => {\r\n if (onClose) onClose();\r\n };\r\n\r\n const handleConfirm = () => {\r\n if (onConfirm) onConfirm();\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {modalTitle}\r\n \r\n {modalContent}\r\n \r\n \r\n Cancel\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nModel.propTypes = {\r\n modalTitle: PropTypes.string.isRequired,\r\n modalContent: PropTypes.string.isRequired,\r\n show: PropTypes.bool.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n onConfirm: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default Model;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport Menus from \"../../Screens/Customer/Home/Menus/Menus\";\r\nimport { Heading } from \"../../Reusable/Headings/Heading\";\r\nimport s2 from \"../../Assets/Images/s2.webp\";\r\nimport Model from \"../../Reusable/Model\";\r\n// import ApiService from '../../Services/TaskServices'\r\nimport { useParams, useLocation, useNavigate } from \"react-router-dom\";\r\n\r\nconst TaskDetails = () => {\r\n // const { taskId } = useParams();\r\n const [task, setTask] = useState({});\r\n const [showForm, setShowForm] = useState(false);\r\n const [startTask, setStartTask] = useState(false);\r\n const navigate = useNavigate();\r\n // const location = useLocation();\r\n\r\n // useEffect(() => {\r\n // if (location.state && location.state.task) {\r\n // setTask(location.state.task);\r\n // } else {\r\n // fetchTaskDetails();\r\n // }\r\n // }, [location.state, taskId]);\r\n // const fetchTaskDetails = async () => {\r\n // try {\r\n // const taskDetails = await ApiService.TaskList(taskId);\r\n // console.log('Task=============>',taskDetails);\r\n // setTask(taskDetails);\r\n // } catch (error) {\r\n // console.error('Error fetching task details:', error);\r\n // }\r\n // };\r\n\r\n const handleAddTeamMemberClick = () => {\r\n setShowForm(true);\r\n };\r\n\r\n const handleStart = () => {\r\n setStartTask(true);\r\n };\r\n\r\n const handleClose = () => {\r\n setStartTask(false);\r\n };\r\n\r\n const handleScan = () => {\r\n navigate(\"/scanqr\");\r\n };\r\n return (\r\n <>\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n Rodent Control\r\n
    \r\n
    \r\n {/*
    \r\n
    Task ID
    \r\n
    -
    \r\n
    {task?._id || 'Task ID Not Available'}
    \r\n
    */}\r\n
    \r\n
    Customer Name
    \r\n
    \r\n -\r\n
    \r\n
    Test 1
    \r\n
    \r\n
    \r\n
    Email
    \r\n
    \r\n -\r\n
    \r\n
    \r\n test1@gmail.com\r\n
    \r\n
    \r\n
    \r\n
    Phone
    \r\n
    \r\n -\r\n
    \r\n
    \r\n +973 9898787864\r\n
    \r\n
    \r\n
    \r\n
    Start Date
    \r\n
    \r\n -\r\n
    \r\n
    20/02/2024
    \r\n
    \r\n
    \r\n
    Status
    \r\n
    \r\n -\r\n
    \r\n
    Yet to start
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Task Description
    \r\n
    \r\n

    \r\n Identification and sealing of entry points to prevent\r\n future infestations. Strategic placement of bait stations\r\n and traps for effective rodent removal. Regular monitoring\r\n to ensure long-term rodent control.\r\n

    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n Add Team Member\r\n \r\n
    \r\n\r\n {showForm && (\r\n
    \r\n \r\n
    \r\n
    Add Technician
    \r\n \r\n {/* */}\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n
    \r\n \r\n Start Task{\" \"}\r\n \r\n navigate(\"/home\")}\r\n class=\"btn btn-outline-secondary fonts12\"\r\n >\r\n Cancel\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n );\r\n};\r\n\r\nexport default TaskDetails;\r\n","var _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgSuccess(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0,0,256,256\",\n width: \"144px\",\n height: \"144px\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(-25.6,-25.6) scale(1.2,1.2)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"nonzero\",\n stroke: \"none\",\n strokeWidth: \"none\",\n strokeLinecap: \"butt\",\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 10,\n strokeDasharray: \"\",\n strokeDashoffset: 0,\n fontFamily: \"none\",\n fontWeight: \"none\",\n fontSize: \"none\",\n textAnchor: \"none\",\n style: {\n mixBlendMode: \"normal\"\n }\n }, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"scale(5.33333,5.33333)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44,24c0,11 -9,20 -20,20c-11,0 -20,-9 -20,-20c0,-11 9,-20 20,-20c11,0 20,9 20,20z\",\n fillOpacity: 0.8902,\n fill: \"#96e338\",\n stroke: \"none\",\n strokeWidth: 1\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14,24l7,7l15,-15\",\n fill: \"none\",\n stroke: \"#ffffff\",\n strokeWidth: 4\n }))))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgSuccess);\nexport default __webpack_public_path__ + \"static/media/success.f40cca8276b7bbf00335f1e1f8e80455.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgQrFrame(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 128,\n height: 128,\n viewBox: \"0 0 128 128\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 127C32 127.55 31.55 128 31 128L1 128C0.45 128 5.3662e-09 127.55 1.19249e-08 127L3.69671e-07 97C3.7623e-07 96.45 0.45 96 1 96C1.55 96 2 96.45 2 97L2 126L31 126C31.55 126 32 126.45 32 127Z\",\n fill: \"#FEFEFE\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M127 96C127.55 96 128 96.45 128 97L128 127C128 127.55 127.55 128 127 128L97 128C96.45 128 96 127.55 96 127C96 126.45 96.45 126 97 126L126 126L126 97C126 96.45 126.45 96 127 96Z\",\n fill: \"#FEFEFE\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1 32C0.45 32 0 31.55 0 31V1C0 0.45 0.45 0 1 0H31C31.55 0 32 0.45 32 1C32 1.55 31.55 2 31 2H2V31C2 31.55 1.55 32 1 32Z\",\n fill: \"#FEFEFE\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M96 0.999999C96 0.449999 96.45 -1.37909e-06 97 -1.35505e-06L127 -4.37114e-08C127.55 -1.96701e-08 128 0.45 128 1L128 31C128 31.55 127.55 32 127 32C126.45 32 126 31.55 126 31L126 2L97 2C96.45 2 96 1.55 96 0.999999Z\",\n fill: \"#FEFEFE\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgQrFrame);\nexport default __webpack_public_path__ + \"static/media/qr-frame.b85d57aa190dd4bfec8c3d66933ecfb8.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState } from \"react\";\r\nimport QrScanner from \"react-qr-scanner\";\r\nimport Menus from \"../../Screens/Customer/Home/Menus/Menus\";\r\nimport success from '../../Assets/Images/success.svg'\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport QrFrame from \"../../Assets/Images/qr-frame.svg\";\r\n\r\n\r\nexport default function App() {\r\n const [result, setResult] = useState(null); // Initialize as null\r\n let navigate = useNavigate()\r\n\r\n const handleError = (error) => {\r\n console.error(error);\r\n };\r\n\r\n const handleScan = (data) => {\r\n if (data) {\r\n setResult(data); // Store the result object\r\n }\r\n };\r\n\r\n const handleScanAgain = () => {\r\n setResult(null); // Reset result to null to trigger scanning again\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {!result && (\r\n
    \r\n

    Scan the QRCode

    \r\n
    )}\r\n
    \r\n {!result && ( // Render the scanner if result is null\r\n <>\r\n \r\n
    \r\n \r\n
    \r\n \r\n )}\r\n {result && ( // Render the result if result is not null\r\n
    \r\n\r\n
    \r\n \r\n \"success\"\r\n

    Successfully Scanned

    \r\n
    \r\n

    Scanned Result

    \r\n
    \r\n
    {result.text}\r\n
    \r\n
    \r\n
    \r\n \r\n\r\n \r\n Cancel\r\n \r\n
    \r\n
    \r\n\r\n\r\n\r\n {/*

    Scanned QR Code: {result.text}

    */}\r\n \r\n
    \r\n )}\r\n
    \r\n \r\n );\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n// import React, { useEffect, useRef, useState } from \"react\";\r\n// import Menus from \"../../Screens/Customer/Home/Menus/Menus\";\r\n// import QrScanner from \"qr-scanner\";\r\n// import QrFrame from \"../../Assets/Images/qr-frame.svg\";\r\n// import success from '../../Assets/Images/success.svg'\r\n// import { useNavigate } from \"react-router-dom\";\r\n\r\n// const ScanQrCode = () => {\r\n// // QR States\r\n// const scanner = useRef(null);\r\n// const videoEl = useRef(null);\r\n// const qrBoxEl = useRef(null);\r\n// const [qrOn, setQrOn] = useState(true);\r\n// const [scannedResult, setScannedResult] = useState(undefined);\r\n\r\n// let navigate = useNavigate()\r\n\r\n// useEffect(() => {\r\n// if (videoEl.current && !scanner.current) {\r\n// scanner.current = new QrScanner(videoEl.current, onScanSuccess, {\r\n// onDecodeError: onScanFail,\r\n// preferredCamera: \"environment\",\r\n// highlightScanRegion: true,\r\n// highlightCodeOutline: true,\r\n// overlay: qrBoxEl.current || undefined,\r\n// });\r\n\r\n// scanner.current\r\n// .start()\r\n// .then(() => setQrOn(true))\r\n// .catch((err) => {\r\n// if (err) setQrOn(false);\r\n// });\r\n// }\r\n\r\n// return () => {\r\n// if (!videoEl.current) {\r\n// scanner.current?.stop();\r\n// }\r\n// };\r\n// }, []);\r\n\r\n// const onScanSuccess = (result) => {\r\n// console.log(result);\r\n// setScannedResult(result?.data);\r\n// scanner.current?.stop();\r\n// };\r\n\r\n// const onScanFail = (err) => {\r\n// console.log(err);\r\n// };\r\n\r\n// useEffect(() => {\r\n// if (!qrOn) {\r\n// alert(\r\n// \"Camera is blocked or not accessible. Please allow camera in your browser permissions and reload.\"\r\n// );\r\n// }\r\n// }, [qrOn]);\r\n\r\n// return (\r\n// <>\r\n// \r\n// {!scannedResult && (
    \r\n//

    Scan the QRCode

    \r\n//
    )}\r\n//
    \r\n// {!scannedResult && (\r\n// \r\n// )}\r\n// \r\n// \r\n//
    \r\n\r\n// {scannedResult && (\r\n//
    \r\n \r\n// \"success\"\r\n//

    Successfully Scanned

    \r\n//
    \r\n//

    Scanned Result

    \r\n//
    \r\n//
    {scannedResult}\r\n//
    \r\n//
    \r\n//
    \r\n// \r\n\r\n// \r\n// Cancel\r\n// \r\n//
    \r\n//
    \r\n// )}\r\n// \r\n// \r\n// );\r\n// };\r\n\r\n// export default ScanQrCode;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport Model from \"../../Reusable/Model\";\r\nimport Menus from \"../../Screens/Customer/Home/Menus/Menus\";\r\nimport clock from \"../../Assets/Images/icons8-clock-100.png\";\r\nimport { useNavigate } from \"react-router-dom\";\r\n\r\nconst StartTask = () => {\r\n const [time, setTime] = useState({ hours: 0, minutes: 0, seconds: 0 });\r\n const [isRunning, setIsRunning] = useState(true);\r\n\r\n let [stopTask, setStopTask] = useState(false);\r\n\r\n let navigate = useNavigate();\r\n\r\n let handleshow = () => {\r\n setStopTask(true);\r\n };\r\n\r\n let handleClose = () => {\r\n setStopTask(false);\r\n };\r\n let handlestop = () => {\r\n setIsRunning(false);\r\n setTime({ hours: 0, minutes: 0, seconds: 0 });\r\n navigate(\"/chemical/list\");\r\n };\r\n\r\n useEffect(() => {\r\n let interval;\r\n if (isRunning) {\r\n interval = setInterval(() => {\r\n setTime((prevTime) => {\r\n const newSeconds = prevTime.seconds + 1;\r\n const newMinutes = prevTime.minutes + Math.floor(newSeconds / 60);\r\n const newHours = prevTime.hours + Math.floor(newMinutes / 60);\r\n\r\n return {\r\n hours: newHours,\r\n minutes: newMinutes % 60,\r\n seconds: newSeconds % 60,\r\n };\r\n });\r\n }, 1000);\r\n }\r\n\r\n return () => clearInterval(interval);\r\n }, [isRunning]);\r\n\r\n const formatTime = (time) => {\r\n return time < 10 ? `0${time}` : time;\r\n };\r\n\r\n const pauseTimer = () => {\r\n setIsRunning(false);\r\n };\r\n\r\n const resumeTimer = () => {\r\n setIsRunning(true);\r\n };\r\n\r\n // const stopTimer = () => {\r\n // setIsRunning(false);\r\n // setTime({ hours: 0, minutes: 0, seconds: 0 });\r\n // };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n {\" \"}\r\n 🕒 NOTE: Work has commenced and the timer is now running. Once the\r\n task is completed, kindly hit the stop button. Thank you!\r\n

    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n Customer Name\r\n \r\n
    -
    \r\n
    Test 1
    \r\n
    \r\n
    \r\n \r\n Service Name\r\n \r\n
    -
    \r\n
    Rodent Control
    \r\n
    \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n

    Timer

    \r\n \"clock\"\r\n
    \r\n
    \r\n

    \r\n {formatTime(time.hours)}:{formatTime(time.minutes)}:\r\n {formatTime(time.seconds)}\r\n

    \r\n
    \r\n
    \r\n {isRunning ? (\r\n <>\r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nexport default StartTask;\r\n","import React from \"react\";\r\nimport SignatureCanvas from \"react-signature-canvas\";\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport Menus from \"../../Screens/Customer/Home/Menus/Menus\";\r\nconst SignnaturePage = () => {\r\n const sigRef = useRef();\r\n const [signature, setSignature] = useState(null);\r\n const [showSignaturePad, setShowSignaturePad] = useState(false);\r\n const handleSignatureEnd = () => {\r\n setSignature(sigRef.current.toDataURL());\r\n };\r\n const clearSignature = () => {\r\n sigRef.current.clear();\r\n setSignature(null);\r\n };\r\n\r\n useEffect(() => {\r\n console.log(signature);\r\n }, [signature]);\r\n\r\n \r\n\r\n\r\n const handleToggleChange = () => {\r\n setShowSignaturePad(!showSignaturePad);\r\n };\r\n\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n

    \r\n Service Acknowledgement\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n Technician Name : \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n Customer Name:\r\n \r\n \r\n
    \r\n
    \r\n Customer available:\r\n \r\n \r\n
    \r\n\r\n {showSignaturePad && (\r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n )}\r\n\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SignnaturePage;\r\n","import * as React from 'react';\nconst RadioGroupContext = /*#__PURE__*/React.createContext(null);\nexport const RadioGroupContextProvider = RadioGroupContext.Provider;\nexport default RadioGroupContext;\nexport const RadioOptionTypeContext = /*#__PURE__*/React.createContext(null);\nexport const RadioOptionTypeContextProvider = RadioOptionTypeContext.Provider;","import { unit } from '@ant-design/cssinjs';\nimport { genFocusOutline, resetComponent } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\n// ============================== Styles ==============================\n// styles from RadioGroup only\nconst getGroupRadioStyle = token => {\n const {\n componentCls,\n antCls\n } = token;\n const groupPrefixCls = `${componentCls}-group`;\n return {\n [groupPrefixCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n display: 'inline-block',\n fontSize: 0,\n // RTL\n [`&${groupPrefixCls}-rtl`]: {\n direction: 'rtl'\n },\n [`${antCls}-badge ${antCls}-badge-count`]: {\n zIndex: 1\n },\n [`> ${antCls}-badge:not(:first-child) > ${antCls}-button-wrapper`]: {\n borderInlineStart: 'none'\n }\n })\n };\n};\n// Styles from radio-wrapper\nconst getRadioBasicStyle = token => {\n const {\n componentCls,\n wrapperMarginInlineEnd,\n colorPrimary,\n radioSize,\n motionDurationSlow,\n motionDurationMid,\n motionEaseInOutCirc,\n colorBgContainer,\n colorBorder,\n lineWidth,\n colorBgContainerDisabled,\n colorTextDisabled,\n paddingXS,\n dotColorDisabled,\n lineType,\n radioColor,\n radioBgColor,\n calc\n } = token;\n const radioInnerPrefixCls = `${componentCls}-inner`;\n const dotPadding = 4;\n const radioDotDisabledSize = calc(radioSize).sub(calc(dotPadding).mul(2));\n const radioSizeCalc = calc(1).mul(radioSize).equal();\n return {\n [`${componentCls}-wrapper`]: Object.assign(Object.assign({}, resetComponent(token)), {\n display: 'inline-flex',\n alignItems: 'baseline',\n marginInlineStart: 0,\n marginInlineEnd: wrapperMarginInlineEnd,\n cursor: 'pointer',\n // RTL\n [`&${componentCls}-wrapper-rtl`]: {\n direction: 'rtl'\n },\n '&-disabled': {\n cursor: 'not-allowed',\n color: token.colorTextDisabled\n },\n '&::after': {\n display: 'inline-block',\n width: 0,\n overflow: 'hidden',\n content: '\"\\\\a0\"'\n },\n // hashId 在 wrapper 上,只能铺平\n [`${componentCls}-checked::after`]: {\n position: 'absolute',\n insetBlockStart: 0,\n insetInlineStart: 0,\n width: '100%',\n height: '100%',\n border: `${unit(lineWidth)} ${lineType} ${colorPrimary}`,\n borderRadius: '50%',\n visibility: 'hidden',\n content: '\"\"'\n },\n [componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n position: 'relative',\n display: 'inline-block',\n outline: 'none',\n cursor: 'pointer',\n alignSelf: 'center',\n borderRadius: '50%'\n }),\n [`${componentCls}-wrapper:hover &,\n &:hover ${radioInnerPrefixCls}`]: {\n borderColor: colorPrimary\n },\n [`${componentCls}-input:focus-visible + ${radioInnerPrefixCls}`]: Object.assign({}, genFocusOutline(token)),\n [`${componentCls}:hover::after, ${componentCls}-wrapper:hover &::after`]: {\n visibility: 'visible'\n },\n [`${componentCls}-inner`]: {\n '&::after': {\n boxSizing: 'border-box',\n position: 'absolute',\n insetBlockStart: '50%',\n insetInlineStart: '50%',\n display: 'block',\n width: radioSizeCalc,\n height: radioSizeCalc,\n marginBlockStart: calc(1).mul(radioSize).div(-2).equal(),\n marginInlineStart: calc(1).mul(radioSize).div(-2).equal(),\n backgroundColor: radioColor,\n borderBlockStart: 0,\n borderInlineStart: 0,\n borderRadius: radioSizeCalc,\n transform: 'scale(0)',\n opacity: 0,\n transition: `all ${motionDurationSlow} ${motionEaseInOutCirc}`,\n content: '\"\"'\n },\n boxSizing: 'border-box',\n position: 'relative',\n insetBlockStart: 0,\n insetInlineStart: 0,\n display: 'block',\n width: radioSizeCalc,\n height: radioSizeCalc,\n backgroundColor: colorBgContainer,\n borderColor: colorBorder,\n borderStyle: 'solid',\n borderWidth: lineWidth,\n borderRadius: '50%',\n transition: `all ${motionDurationMid}`\n },\n [`${componentCls}-input`]: {\n position: 'absolute',\n inset: 0,\n zIndex: 1,\n cursor: 'pointer',\n opacity: 0\n },\n // 选中状态\n [`${componentCls}-checked`]: {\n [radioInnerPrefixCls]: {\n borderColor: colorPrimary,\n backgroundColor: radioBgColor,\n '&::after': {\n transform: `scale(${token.calc(token.dotSize).div(radioSize).equal()})`,\n opacity: 1,\n transition: `all ${motionDurationSlow} ${motionEaseInOutCirc}`\n }\n }\n },\n [`${componentCls}-disabled`]: {\n cursor: 'not-allowed',\n [radioInnerPrefixCls]: {\n backgroundColor: colorBgContainerDisabled,\n borderColor: colorBorder,\n cursor: 'not-allowed',\n '&::after': {\n backgroundColor: dotColorDisabled\n }\n },\n [`${componentCls}-input`]: {\n cursor: 'not-allowed'\n },\n [`${componentCls}-disabled + span`]: {\n color: colorTextDisabled,\n cursor: 'not-allowed'\n },\n [`&${componentCls}-checked`]: {\n [radioInnerPrefixCls]: {\n '&::after': {\n transform: `scale(${calc(radioDotDisabledSize).div(radioSize).equal({\n unit: false\n })})`\n }\n }\n }\n },\n [`span${componentCls} + *`]: {\n paddingInlineStart: paddingXS,\n paddingInlineEnd: paddingXS\n }\n })\n };\n};\n// Styles from radio-button\nconst getRadioButtonStyle = token => {\n const {\n buttonColor,\n controlHeight,\n componentCls,\n lineWidth,\n lineType,\n colorBorder,\n motionDurationSlow,\n motionDurationMid,\n buttonPaddingInline,\n fontSize,\n buttonBg,\n fontSizeLG,\n controlHeightLG,\n controlHeightSM,\n paddingXS,\n borderRadius,\n borderRadiusSM,\n borderRadiusLG,\n buttonCheckedBg,\n buttonSolidCheckedColor,\n colorTextDisabled,\n colorBgContainerDisabled,\n buttonCheckedBgDisabled,\n buttonCheckedColorDisabled,\n colorPrimary,\n colorPrimaryHover,\n colorPrimaryActive,\n buttonSolidCheckedBg,\n buttonSolidCheckedHoverBg,\n buttonSolidCheckedActiveBg,\n calc\n } = token;\n return {\n [`${componentCls}-button-wrapper`]: {\n position: 'relative',\n display: 'inline-block',\n height: controlHeight,\n margin: 0,\n paddingInline: buttonPaddingInline,\n paddingBlock: 0,\n color: buttonColor,\n fontSize,\n lineHeight: unit(calc(controlHeight).sub(calc(lineWidth).mul(2)).equal()),\n background: buttonBg,\n border: `${unit(lineWidth)} ${lineType} ${colorBorder}`,\n // strange align fix for chrome but works\n // https://gw.alipayobjects.com/zos/rmsportal/VFTfKXJuogBAXcvfAUWJ.gif\n borderBlockStartWidth: calc(lineWidth).add(0.02).equal(),\n borderInlineStartWidth: 0,\n borderInlineEndWidth: lineWidth,\n cursor: 'pointer',\n transition: [`color ${motionDurationMid}`, `background ${motionDurationMid}`, `box-shadow ${motionDurationMid}`].join(','),\n a: {\n color: buttonColor\n },\n [`> ${componentCls}-button`]: {\n position: 'absolute',\n insetBlockStart: 0,\n insetInlineStart: 0,\n zIndex: -1,\n width: '100%',\n height: '100%'\n },\n '&:not(:first-child)': {\n '&::before': {\n position: 'absolute',\n insetBlockStart: calc(lineWidth).mul(-1).equal(),\n insetInlineStart: calc(lineWidth).mul(-1).equal(),\n display: 'block',\n boxSizing: 'content-box',\n width: 1,\n height: '100%',\n paddingBlock: lineWidth,\n paddingInline: 0,\n backgroundColor: colorBorder,\n transition: `background-color ${motionDurationSlow}`,\n content: '\"\"'\n }\n },\n '&:first-child': {\n borderInlineStart: `${unit(lineWidth)} ${lineType} ${colorBorder}`,\n borderStartStartRadius: borderRadius,\n borderEndStartRadius: borderRadius\n },\n '&:last-child': {\n borderStartEndRadius: borderRadius,\n borderEndEndRadius: borderRadius\n },\n '&:first-child:last-child': {\n borderRadius\n },\n [`${componentCls}-group-large &`]: {\n height: controlHeightLG,\n fontSize: fontSizeLG,\n lineHeight: unit(calc(controlHeightLG).sub(calc(lineWidth).mul(2)).equal()),\n '&:first-child': {\n borderStartStartRadius: borderRadiusLG,\n borderEndStartRadius: borderRadiusLG\n },\n '&:last-child': {\n borderStartEndRadius: borderRadiusLG,\n borderEndEndRadius: borderRadiusLG\n }\n },\n [`${componentCls}-group-small &`]: {\n height: controlHeightSM,\n paddingInline: calc(paddingXS).sub(lineWidth).equal(),\n paddingBlock: 0,\n lineHeight: unit(calc(controlHeightSM).sub(calc(lineWidth).mul(2)).equal()),\n '&:first-child': {\n borderStartStartRadius: borderRadiusSM,\n borderEndStartRadius: borderRadiusSM\n },\n '&:last-child': {\n borderStartEndRadius: borderRadiusSM,\n borderEndEndRadius: borderRadiusSM\n }\n },\n '&:hover': {\n position: 'relative',\n color: colorPrimary\n },\n '&:has(:focus-visible)': Object.assign({}, genFocusOutline(token)),\n [`${componentCls}-inner, input[type='checkbox'], input[type='radio']`]: {\n width: 0,\n height: 0,\n opacity: 0,\n pointerEvents: 'none'\n },\n [`&-checked:not(${componentCls}-button-wrapper-disabled)`]: {\n zIndex: 1,\n color: colorPrimary,\n background: buttonCheckedBg,\n borderColor: colorPrimary,\n '&::before': {\n backgroundColor: colorPrimary\n },\n '&:first-child': {\n borderColor: colorPrimary\n },\n '&:hover': {\n color: colorPrimaryHover,\n borderColor: colorPrimaryHover,\n '&::before': {\n backgroundColor: colorPrimaryHover\n }\n },\n '&:active': {\n color: colorPrimaryActive,\n borderColor: colorPrimaryActive,\n '&::before': {\n backgroundColor: colorPrimaryActive\n }\n }\n },\n [`${componentCls}-group-solid &-checked:not(${componentCls}-button-wrapper-disabled)`]: {\n color: buttonSolidCheckedColor,\n background: buttonSolidCheckedBg,\n borderColor: buttonSolidCheckedBg,\n '&:hover': {\n color: buttonSolidCheckedColor,\n background: buttonSolidCheckedHoverBg,\n borderColor: buttonSolidCheckedHoverBg\n },\n '&:active': {\n color: buttonSolidCheckedColor,\n background: buttonSolidCheckedActiveBg,\n borderColor: buttonSolidCheckedActiveBg\n }\n },\n '&-disabled': {\n color: colorTextDisabled,\n backgroundColor: colorBgContainerDisabled,\n borderColor: colorBorder,\n cursor: 'not-allowed',\n '&:first-child, &:hover': {\n color: colorTextDisabled,\n backgroundColor: colorBgContainerDisabled,\n borderColor: colorBorder\n }\n },\n [`&-disabled${componentCls}-button-wrapper-checked`]: {\n color: buttonCheckedColorDisabled,\n backgroundColor: buttonCheckedBgDisabled,\n borderColor: colorBorder,\n boxShadow: 'none'\n }\n }\n };\n};\n// ============================== Export ==============================\nexport const prepareComponentToken = token => {\n const {\n wireframe,\n padding,\n marginXS,\n lineWidth,\n fontSizeLG,\n colorText,\n colorBgContainer,\n colorTextDisabled,\n controlItemBgActiveDisabled,\n colorTextLightSolid,\n colorPrimary,\n colorPrimaryHover,\n colorPrimaryActive,\n colorWhite\n } = token;\n const dotPadding = 4; // Fixed value\n const radioSize = fontSizeLG;\n const radioDotSize = wireframe ? radioSize - dotPadding * 2 : radioSize - (dotPadding + lineWidth) * 2;\n return {\n // Radio\n radioSize,\n dotSize: radioDotSize,\n dotColorDisabled: colorTextDisabled,\n // Radio buttons\n buttonSolidCheckedColor: colorTextLightSolid,\n buttonSolidCheckedBg: colorPrimary,\n buttonSolidCheckedHoverBg: colorPrimaryHover,\n buttonSolidCheckedActiveBg: colorPrimaryActive,\n buttonBg: colorBgContainer,\n buttonCheckedBg: colorBgContainer,\n buttonColor: colorText,\n buttonCheckedBgDisabled: controlItemBgActiveDisabled,\n buttonCheckedColorDisabled: colorTextDisabled,\n buttonPaddingInline: padding - lineWidth,\n wrapperMarginInlineEnd: marginXS,\n // internal\n radioColor: wireframe ? colorPrimary : colorWhite,\n radioBgColor: wireframe ? colorBgContainer : colorPrimary\n };\n};\nexport default genStyleHooks('Radio', token => {\n const {\n controlOutline,\n controlOutlineWidth\n } = token;\n const radioFocusShadow = `0 0 0 ${unit(controlOutlineWidth)} ${controlOutline}`;\n const radioButtonFocusShadow = radioFocusShadow;\n const radioToken = mergeToken(token, {\n radioFocusShadow,\n radioButtonFocusShadow\n });\n return [getGroupRadioStyle(radioToken), getRadioBasicStyle(radioToken), getRadioButtonStyle(radioToken)];\n}, prepareComponentToken, {\n unitless: {\n radioSize: true,\n dotSize: true\n }\n});","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport RcCheckbox from 'rc-checkbox';\nimport { composeRef } from \"rc-util/es/ref\";\nimport { devUseWarning } from '../_util/warning';\nimport Wave from '../_util/wave';\nimport { TARGET_CLS } from '../_util/wave/interface';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport { FormItemInputContext } from '../form/context';\nimport RadioGroupContext, { RadioOptionTypeContext } from './context';\nimport useStyle from './style';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nconst InternalRadio = (props, ref) => {\n var _a, _b;\n const groupContext = React.useContext(RadioGroupContext);\n const radioOptionTypeContext = React.useContext(RadioOptionTypeContext);\n const {\n getPrefixCls,\n direction,\n radio\n } = React.useContext(ConfigContext);\n const innerRef = React.useRef(null);\n const mergedRef = composeRef(ref, innerRef);\n const {\n isFormItemInput\n } = React.useContext(FormItemInputContext);\n if (process.env.NODE_ENV !== 'production') {\n const warning = devUseWarning('Radio');\n process.env.NODE_ENV !== \"production\" ? warning(!('optionType' in props), 'usage', '`optionType` is only support in Radio.Group.') : void 0;\n }\n const onChange = e => {\n var _a, _b;\n (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, e);\n (_b = groupContext === null || groupContext === void 0 ? void 0 : groupContext.onChange) === null || _b === void 0 ? void 0 : _b.call(groupContext, e);\n };\n const {\n prefixCls: customizePrefixCls,\n className,\n rootClassName,\n children,\n style,\n title\n } = props,\n restProps = __rest(props, [\"prefixCls\", \"className\", \"rootClassName\", \"children\", \"style\", \"title\"]);\n const radioPrefixCls = getPrefixCls('radio', customizePrefixCls);\n const isButtonType = ((groupContext === null || groupContext === void 0 ? void 0 : groupContext.optionType) || radioOptionTypeContext) === 'button';\n const prefixCls = isButtonType ? `${radioPrefixCls}-button` : radioPrefixCls;\n // Style\n const rootCls = useCSSVarCls(radioPrefixCls);\n const [wrapCSSVar, hashId, cssVarCls] = useStyle(radioPrefixCls, rootCls);\n const radioProps = Object.assign({}, restProps);\n // ===================== Disabled =====================\n const disabled = React.useContext(DisabledContext);\n if (groupContext) {\n radioProps.name = groupContext.name;\n radioProps.onChange = onChange;\n radioProps.checked = props.value === groupContext.value;\n radioProps.disabled = (_a = radioProps.disabled) !== null && _a !== void 0 ? _a : groupContext.disabled;\n }\n radioProps.disabled = (_b = radioProps.disabled) !== null && _b !== void 0 ? _b : disabled;\n const wrapperClassString = classNames(`${prefixCls}-wrapper`, {\n [`${prefixCls}-wrapper-checked`]: radioProps.checked,\n [`${prefixCls}-wrapper-disabled`]: radioProps.disabled,\n [`${prefixCls}-wrapper-rtl`]: direction === 'rtl',\n [`${prefixCls}-wrapper-in-form-item`]: isFormItemInput\n }, radio === null || radio === void 0 ? void 0 : radio.className, className, rootClassName, hashId, cssVarCls, rootCls);\n return wrapCSSVar( /*#__PURE__*/React.createElement(Wave, {\n component: \"Radio\",\n disabled: radioProps.disabled\n }, /*#__PURE__*/React.createElement(\"label\", {\n className: wrapperClassString,\n style: Object.assign(Object.assign({}, radio === null || radio === void 0 ? void 0 : radio.style), style),\n onMouseEnter: props.onMouseEnter,\n onMouseLeave: props.onMouseLeave,\n title: title\n }, /*#__PURE__*/React.createElement(RcCheckbox, Object.assign({}, radioProps, {\n className: classNames(radioProps.className, !isButtonType && TARGET_CLS),\n type: \"radio\",\n prefixCls: prefixCls,\n ref: mergedRef\n })), children !== undefined ? /*#__PURE__*/React.createElement(\"span\", null, children) : null)));\n};\nconst Radio = /*#__PURE__*/React.forwardRef(InternalRadio);\nif (process.env.NODE_ENV !== 'production') {\n Radio.displayName = 'Radio';\n}\nexport default Radio;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport { ConfigContext } from '../config-provider';\nimport useSize from '../config-provider/hooks/useSize';\nimport { RadioGroupContextProvider } from './context';\nimport Radio from './radio';\nimport useStyle from './style';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nconst RadioGroup = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n getPrefixCls,\n direction\n } = React.useContext(ConfigContext);\n const [value, setValue] = useMergedState(props.defaultValue, {\n value: props.value\n });\n const onRadioChange = ev => {\n const lastValue = value;\n const val = ev.target.value;\n if (!('value' in props)) {\n setValue(val);\n }\n const {\n onChange\n } = props;\n if (onChange && val !== lastValue) {\n onChange(ev);\n }\n };\n const {\n prefixCls: customizePrefixCls,\n className,\n rootClassName,\n options,\n buttonStyle = 'outline',\n disabled,\n children,\n size: customizeSize,\n style,\n id,\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur\n } = props;\n const prefixCls = getPrefixCls('radio', customizePrefixCls);\n const groupPrefixCls = `${prefixCls}-group`;\n // Style\n const rootCls = useCSSVarCls(prefixCls);\n const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n let childrenToRender = children;\n // 如果存在 options, 优先使用\n if (options && options.length > 0) {\n childrenToRender = options.map(option => {\n if (typeof option === 'string' || typeof option === 'number') {\n // 此处类型自动推导为 string\n return /*#__PURE__*/React.createElement(Radio, {\n key: option.toString(),\n prefixCls: prefixCls,\n disabled: disabled,\n value: option,\n checked: value === option\n }, option);\n }\n // 此处类型自动推导为 { label: string value: string }\n return /*#__PURE__*/React.createElement(Radio, {\n key: `radio-group-value-options-${option.value}`,\n prefixCls: prefixCls,\n disabled: option.disabled || disabled,\n value: option.value,\n checked: value === option.value,\n title: option.title,\n style: option.style,\n id: option.id,\n required: option.required\n }, option.label);\n });\n }\n const mergedSize = useSize(customizeSize);\n const classString = classNames(groupPrefixCls, `${groupPrefixCls}-${buttonStyle}`, {\n [`${groupPrefixCls}-${mergedSize}`]: mergedSize,\n [`${groupPrefixCls}-rtl`]: direction === 'rtl'\n }, className, rootClassName, hashId, cssVarCls, rootCls);\n return wrapCSSVar( /*#__PURE__*/React.createElement(\"div\", Object.assign({}, pickAttrs(props, {\n aria: true,\n data: true\n }), {\n className: classString,\n style: style,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onFocus: onFocus,\n onBlur: onBlur,\n id: id,\n ref: ref\n }), /*#__PURE__*/React.createElement(RadioGroupContextProvider, {\n value: {\n onChange: onRadioChange,\n value,\n disabled: props.disabled,\n name: props.name,\n optionType: props.optionType\n }\n }, childrenToRender)));\n});\nexport default /*#__PURE__*/React.memo(RadioGroup);","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { RadioOptionTypeContextProvider } from './context';\nimport Radio from './radio';\nconst RadioButton = (props, ref) => {\n const {\n getPrefixCls\n } = React.useContext(ConfigContext);\n const {\n prefixCls: customizePrefixCls\n } = props,\n radioProps = __rest(props, [\"prefixCls\"]);\n const prefixCls = getPrefixCls('radio', customizePrefixCls);\n return /*#__PURE__*/React.createElement(RadioOptionTypeContextProvider, {\n value: \"button\"\n }, /*#__PURE__*/React.createElement(Radio, Object.assign({\n prefixCls: prefixCls\n }, radioProps, {\n type: \"radio\",\n ref: ref\n })));\n};\nexport default /*#__PURE__*/React.forwardRef(RadioButton);","\"use client\";\n\nimport Group from './group';\nimport InternalRadio from './radio';\nimport Button from './radioButton';\nexport { Button, Group };\nconst Radio = InternalRadio;\nRadio.Button = Button;\nRadio.Group = Group;\nRadio.__ANT_RADIO = true;\nexport default Radio;","import { unit } from '@ant-design/cssinjs';\nimport { resetComponent } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\n// ============================== Shared ==============================\nconst genSharedDividerStyle = token => {\n const {\n componentCls,\n sizePaddingEdgeHorizontal,\n colorSplit,\n lineWidth,\n textPaddingInline,\n orientationMargin,\n verticalMarginInline\n } = token;\n return {\n [componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n borderBlockStart: `${unit(lineWidth)} solid ${colorSplit}`,\n // vertical\n '&-vertical': {\n position: 'relative',\n top: '-0.06em',\n display: 'inline-block',\n height: '0.9em',\n marginInline: verticalMarginInline,\n marginBlock: 0,\n verticalAlign: 'middle',\n borderTop: 0,\n borderInlineStart: `${unit(lineWidth)} solid ${colorSplit}`\n },\n '&-horizontal': {\n display: 'flex',\n clear: 'both',\n width: '100%',\n minWidth: '100%',\n // Fix https://github.com/ant-design/ant-design/issues/10914\n margin: `${unit(token.dividerHorizontalGutterMargin)} 0`\n },\n [`&-horizontal${componentCls}-with-text`]: {\n display: 'flex',\n alignItems: 'center',\n margin: `${unit(token.dividerHorizontalWithTextGutterMargin)} 0`,\n color: token.colorTextHeading,\n fontWeight: 500,\n fontSize: token.fontSizeLG,\n whiteSpace: 'nowrap',\n textAlign: 'center',\n borderBlockStart: `0 ${colorSplit}`,\n '&::before, &::after': {\n position: 'relative',\n width: '50%',\n borderBlockStart: `${unit(lineWidth)} solid transparent`,\n // Chrome not accept `inherit` in `border-top`\n borderBlockStartColor: 'inherit',\n borderBlockEnd: 0,\n transform: 'translateY(50%)',\n content: \"''\"\n }\n },\n [`&-horizontal${componentCls}-with-text-left`]: {\n '&::before': {\n width: `calc(${orientationMargin} * 100%)`\n },\n '&::after': {\n width: `calc(100% - ${orientationMargin} * 100%)`\n }\n },\n [`&-horizontal${componentCls}-with-text-right`]: {\n '&::before': {\n width: `calc(100% - ${orientationMargin} * 100%)`\n },\n '&::after': {\n width: `calc(${orientationMargin} * 100%)`\n }\n },\n [`${componentCls}-inner-text`]: {\n display: 'inline-block',\n paddingBlock: 0,\n paddingInline: textPaddingInline\n },\n '&-dashed': {\n background: 'none',\n borderColor: colorSplit,\n borderStyle: 'dashed',\n borderWidth: `${unit(lineWidth)} 0 0`\n },\n [`&-horizontal${componentCls}-with-text${componentCls}-dashed`]: {\n '&::before, &::after': {\n borderStyle: 'dashed none none'\n }\n },\n [`&-vertical${componentCls}-dashed`]: {\n borderInlineStartWidth: lineWidth,\n borderInlineEnd: 0,\n borderBlockStart: 0,\n borderBlockEnd: 0\n },\n [`&-plain${componentCls}-with-text`]: {\n color: token.colorText,\n fontWeight: 'normal',\n fontSize: token.fontSize\n },\n [`&-horizontal${componentCls}-with-text-left${componentCls}-no-default-orientation-margin-left`]: {\n '&::before': {\n width: 0\n },\n '&::after': {\n width: '100%'\n },\n [`${componentCls}-inner-text`]: {\n paddingInlineStart: sizePaddingEdgeHorizontal\n }\n },\n [`&-horizontal${componentCls}-with-text-right${componentCls}-no-default-orientation-margin-right`]: {\n '&::before': {\n width: '100%'\n },\n '&::after': {\n width: 0\n },\n [`${componentCls}-inner-text`]: {\n paddingInlineEnd: sizePaddingEdgeHorizontal\n }\n }\n })\n };\n};\nexport const prepareComponentToken = token => ({\n textPaddingInline: '1em',\n orientationMargin: 0.05,\n verticalMarginInline: token.marginXS\n});\n// ============================== Export ==============================\nexport default genStyleHooks('Divider', token => {\n const dividerToken = mergeToken(token, {\n dividerHorizontalWithTextGutterMargin: token.margin,\n dividerHorizontalGutterMargin: token.marginLG,\n sizePaddingEdgeHorizontal: 0\n });\n return [genSharedDividerStyle(dividerToken)];\n}, prepareComponentToken, {\n unitless: {\n orientationMargin: true\n }\n});","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { devUseWarning } from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nconst Divider = props => {\n const {\n getPrefixCls,\n direction,\n divider\n } = React.useContext(ConfigContext);\n const {\n prefixCls: customizePrefixCls,\n type = 'horizontal',\n orientation = 'center',\n orientationMargin,\n className,\n rootClassName,\n children,\n dashed,\n plain,\n style\n } = props,\n restProps = __rest(props, [\"prefixCls\", \"type\", \"orientation\", \"orientationMargin\", \"className\", \"rootClassName\", \"children\", \"dashed\", \"plain\", \"style\"]);\n const prefixCls = getPrefixCls('divider', customizePrefixCls);\n const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n const orientationPrefix = orientation.length > 0 ? `-${orientation}` : orientation;\n const hasChildren = !!children;\n const hasCustomMarginLeft = orientation === 'left' && orientationMargin != null;\n const hasCustomMarginRight = orientation === 'right' && orientationMargin != null;\n const classString = classNames(prefixCls, divider === null || divider === void 0 ? void 0 : divider.className, hashId, cssVarCls, `${prefixCls}-${type}`, {\n [`${prefixCls}-with-text`]: hasChildren,\n [`${prefixCls}-with-text${orientationPrefix}`]: hasChildren,\n [`${prefixCls}-dashed`]: !!dashed,\n [`${prefixCls}-plain`]: !!plain,\n [`${prefixCls}-rtl`]: direction === 'rtl',\n [`${prefixCls}-no-default-orientation-margin-left`]: hasCustomMarginLeft,\n [`${prefixCls}-no-default-orientation-margin-right`]: hasCustomMarginRight\n }, className, rootClassName);\n const memoizedOrientationMargin = React.useMemo(() => {\n if (typeof orientationMargin === 'number') {\n return orientationMargin;\n }\n if (/^\\d+$/.test(orientationMargin)) {\n return Number(orientationMargin);\n }\n return orientationMargin;\n }, [orientationMargin]);\n const innerStyle = Object.assign(Object.assign({}, hasCustomMarginLeft && {\n marginLeft: memoizedOrientationMargin\n }), hasCustomMarginRight && {\n marginRight: memoizedOrientationMargin\n });\n // Warning children not work in vertical mode\n if (process.env.NODE_ENV !== 'production') {\n const warning = devUseWarning('Divider');\n process.env.NODE_ENV !== \"production\" ? warning(!children || type !== 'vertical', 'usage', '`children` not working in `vertical` mode.') : void 0;\n }\n return wrapCSSVar( /*#__PURE__*/React.createElement(\"div\", Object.assign({\n className: classString,\n style: Object.assign(Object.assign({}, divider === null || divider === void 0 ? void 0 : divider.style), style)\n }, restProps, {\n role: \"separator\"\n }), children && type !== 'vertical' && ( /*#__PURE__*/React.createElement(\"span\", {\n className: `${prefixCls}-inner-text`,\n style: innerStyle\n }, children))));\n};\nif (process.env.NODE_ENV !== 'production') {\n Divider.displayName = 'Divider';\n}\nexport default Divider;","export var EXPAND_COLUMN = {};\nexport var INTERNAL_HOOKS = 'rc-table-internal-hook';","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport * as React from 'react';\nimport { unstable_batchedUpdates } from 'react-dom';\nexport function createContext(defaultValue) {\n var Context = /*#__PURE__*/React.createContext(undefined);\n var Provider = function Provider(_ref) {\n var value = _ref.value,\n children = _ref.children;\n var valueRef = React.useRef(value);\n valueRef.current = value;\n var _React$useState = React.useState(function () {\n return {\n getValue: function getValue() {\n return valueRef.current;\n },\n listeners: new Set()\n };\n }),\n _React$useState2 = _slicedToArray(_React$useState, 1),\n context = _React$useState2[0];\n useLayoutEffect(function () {\n unstable_batchedUpdates(function () {\n context.listeners.forEach(function (listener) {\n listener(value);\n });\n });\n }, [value]);\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: context\n }, children);\n };\n return {\n Context: Context,\n Provider: Provider,\n defaultValue: defaultValue\n };\n}\n\n/** e.g. useSelect(userContext) => user */\n\n/** e.g. useSelect(userContext, user => user.name) => user.name */\n\n/** e.g. useSelect(userContext, ['name', 'age']) => user { name, age } */\n\n/** e.g. useSelect(userContext, 'name') => user.name */\n\nexport function useContext(holder, selector) {\n var eventSelector = useEvent(typeof selector === 'function' ? selector : function (ctx) {\n if (selector === undefined) {\n return ctx;\n }\n if (!Array.isArray(selector)) {\n return ctx[selector];\n }\n var obj = {};\n selector.forEach(function (key) {\n obj[key] = ctx[key];\n });\n return obj;\n });\n var context = React.useContext(holder === null || holder === void 0 ? void 0 : holder.Context);\n var _ref2 = context || {},\n listeners = _ref2.listeners,\n getValue = _ref2.getValue;\n var valueRef = React.useRef();\n valueRef.current = eventSelector(context ? getValue() : holder === null || holder === void 0 ? void 0 : holder.defaultValue);\n var _React$useState3 = React.useState({}),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n forceUpdate = _React$useState4[1];\n useLayoutEffect(function () {\n if (!context) {\n return;\n }\n function trigger(nextValue) {\n var nextSelectorValue = eventSelector(nextValue);\n if (!isEqual(valueRef.current, nextSelectorValue, true)) {\n forceUpdate({});\n }\n }\n listeners.add(trigger);\n return function () {\n listeners.delete(trigger);\n };\n }, [context]);\n return valueRef.current;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { supportRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\n/**\n * Create Immutable pair for `makeImmutable` and `responseImmutable`.\n */\nexport default function createImmutable() {\n var ImmutableContext = /*#__PURE__*/React.createContext(null);\n\n /**\n * Get render update mark by `makeImmutable` root.\n * Do not deps on the return value as render times\n * but only use for `useMemo` or `useCallback` deps.\n */\n function useImmutableMark() {\n return React.useContext(ImmutableContext);\n }\n\n /**\n * Wrapped Component will be marked as Immutable.\n * When Component parent trigger render,\n * it will notice children component (use with `responseImmutable`) node that parent has updated.\n * @param Component Passed Component\n * @param triggerRender Customize trigger `responseImmutable` children re-render logic. Default will always trigger re-render when this component re-render.\n */\n function makeImmutable(Component, shouldTriggerRender) {\n var refAble = supportRef(Component);\n var ImmutableComponent = function ImmutableComponent(props, ref) {\n var refProps = refAble ? {\n ref: ref\n } : {};\n var renderTimesRef = React.useRef(0);\n var prevProps = React.useRef(props);\n\n // If parent has the context, we do not wrap it\n var mark = useImmutableMark();\n if (mark !== null) {\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, refProps));\n }\n if (\n // Always trigger re-render if not provide `notTriggerRender`\n !shouldTriggerRender || shouldTriggerRender(prevProps.current, props)) {\n renderTimesRef.current += 1;\n }\n prevProps.current = props;\n return /*#__PURE__*/React.createElement(ImmutableContext.Provider, {\n value: renderTimesRef.current\n }, /*#__PURE__*/React.createElement(Component, _extends({}, props, refProps)));\n };\n if (process.env.NODE_ENV !== 'production') {\n ImmutableComponent.displayName = \"ImmutableRoot(\".concat(Component.displayName || Component.name, \")\");\n }\n return refAble ? /*#__PURE__*/React.forwardRef(ImmutableComponent) : ImmutableComponent;\n }\n\n /**\n * Wrapped Component with `React.memo`.\n * But will rerender when parent with `makeImmutable` rerender.\n */\n function responseImmutable(Component, propsAreEqual) {\n var refAble = supportRef(Component);\n var ImmutableComponent = function ImmutableComponent(props, ref) {\n var refProps = refAble ? {\n ref: ref\n } : {};\n useImmutableMark();\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, refProps));\n };\n if (process.env.NODE_ENV !== 'production') {\n ImmutableComponent.displayName = \"ImmutableResponse(\".concat(Component.displayName || Component.name, \")\");\n }\n return refAble ? /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(ImmutableComponent), propsAreEqual) : /*#__PURE__*/React.memo(ImmutableComponent, propsAreEqual);\n }\n return {\n makeImmutable: makeImmutable,\n responseImmutable: responseImmutable,\n useImmutableMark: useImmutableMark\n };\n}","import { createContext, useContext } from \"./context\";\nimport createImmutable from \"./Immutable\";\n\n// For legacy usage, we export it directly\nvar _createImmutable = createImmutable(),\n makeImmutable = _createImmutable.makeImmutable,\n responseImmutable = _createImmutable.responseImmutable,\n useImmutableMark = _createImmutable.useImmutableMark;\nexport { createContext, useContext, createImmutable, makeImmutable, responseImmutable, useImmutableMark };","import { createContext, createImmutable } from '@rc-component/context';\nvar _createImmutable = createImmutable(),\n makeImmutable = _createImmutable.makeImmutable,\n responseImmutable = _createImmutable.responseImmutable,\n useImmutableMark = _createImmutable.useImmutableMark;\nexport { makeImmutable, responseImmutable, useImmutableMark };\nvar TableContext = createContext();\nexport default TableContext;","/* istanbul ignore file */\nimport * as React from 'react';\nfunction useRenderTimes(props, debug) {\n // Render times\n var timesRef = React.useRef(0);\n timesRef.current += 1;\n\n // Props changed\n var propsRef = React.useRef(props);\n var keys = [];\n Object.keys(props || {}).map(function (key) {\n var _propsRef$current;\n if ((props === null || props === void 0 ? void 0 : props[key]) !== ((_propsRef$current = propsRef.current) === null || _propsRef$current === void 0 ? void 0 : _propsRef$current[key])) {\n keys.push(key);\n }\n });\n propsRef.current = props;\n\n // Cache keys since React rerender may cause it lost\n var keysRef = React.useRef([]);\n if (keys.length) {\n keysRef.current = keys;\n }\n React.useDebugValue(timesRef.current);\n React.useDebugValue(keysRef.current.join(', '));\n if (debug) {\n console.log(\"\".concat(debug, \":\"), timesRef.current, keysRef.current);\n }\n return timesRef.current;\n}\nexport default process.env.NODE_ENV !== 'production' ? useRenderTimes : function () {};\nexport var RenderBlock = /*#__PURE__*/React.memo(function () {\n var times = useRenderTimes();\n return /*#__PURE__*/React.createElement(\"h1\", null, \"Render Times: \", times);\n});\nRenderBlock.displayName = 'RenderBlock';","import * as React from 'react';\n// TODO: Remove when use `responsiveImmutable`\nvar PerfContext = /*#__PURE__*/React.createContext({\n renderWithProps: false\n});\nexport default PerfContext;","var INTERNAL_KEY_PREFIX = 'RC_TABLE_KEY';\nfunction toArray(arr) {\n if (arr === undefined || arr === null) {\n return [];\n }\n return Array.isArray(arr) ? arr : [arr];\n}\nexport function getColumnsKey(columns) {\n var columnKeys = [];\n var keys = {};\n columns.forEach(function (column) {\n var _ref = column || {},\n key = _ref.key,\n dataIndex = _ref.dataIndex;\n var mergedKey = key || toArray(dataIndex).join('-') || INTERNAL_KEY_PREFIX;\n while (keys[mergedKey]) {\n mergedKey = \"\".concat(mergedKey, \"_next\");\n }\n keys[mergedKey] = true;\n columnKeys.push(mergedKey);\n });\n return columnKeys;\n}\nexport function validateValue(val) {\n return val !== null && val !== undefined;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport getValue from \"rc-util/es/utils/get\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport PerfContext from \"../context/PerfContext\";\nimport { validateValue } from \"../utils/valueUtil\";\nimport { useImmutableMark } from \"../context/TableContext\";\nfunction isRenderCell(data) {\n return data && _typeof(data) === 'object' && !Array.isArray(data) && ! /*#__PURE__*/React.isValidElement(data);\n}\nexport default function useCellRender(record, dataIndex, renderIndex, children, render, shouldCellUpdate) {\n // TODO: Remove this after next major version\n var perfRecord = React.useContext(PerfContext);\n var mark = useImmutableMark();\n\n // ======================== Render ========================\n var retData = useMemo(function () {\n if (validateValue(children)) {\n return [children];\n }\n var path = dataIndex === null || dataIndex === undefined || dataIndex === '' ? [] : Array.isArray(dataIndex) ? dataIndex : [dataIndex];\n var value = getValue(record, path);\n\n // Customize render node\n var returnChildNode = value;\n var returnCellProps = undefined;\n if (render) {\n var renderData = render(value, record, renderIndex);\n if (isRenderCell(renderData)) {\n if (process.env.NODE_ENV !== 'production') {\n warning(false, '`columns.render` return cell props is deprecated with perf issue, please use `onCell` instead.');\n }\n returnChildNode = renderData.children;\n returnCellProps = renderData.props;\n perfRecord.renderWithProps = true;\n } else {\n returnChildNode = renderData;\n }\n }\n return [returnChildNode, returnCellProps];\n }, [\n // Force update deps\n mark,\n // Normal deps\n record, children, dataIndex, render, renderIndex], function (prev, next) {\n if (shouldCellUpdate) {\n var _prev = _slicedToArray(prev, 2),\n prevRecord = _prev[1];\n var _next = _slicedToArray(next, 2),\n nextRecord = _next[1];\n return shouldCellUpdate(nextRecord, prevRecord);\n }\n\n // Legacy mode should always update\n if (perfRecord.renderWithProps) {\n return true;\n }\n return !isEqual(prev, next, true);\n });\n return retData;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useContext } from '@rc-component/context';\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport TableContext from \"../context/TableContext\";\nimport devRenderTimes from \"../hooks/useRenderTimes\";\nimport useCellRender from \"./useCellRender\";\nimport useHoverState from \"./useHoverState\";\nimport { useEvent } from 'rc-util';\nvar getTitleFromCellRenderChildren = function getTitleFromCellRenderChildren(_ref) {\n var ellipsis = _ref.ellipsis,\n rowType = _ref.rowType,\n children = _ref.children;\n var title;\n var ellipsisConfig = ellipsis === true ? {\n showTitle: true\n } : ellipsis;\n if (ellipsisConfig && (ellipsisConfig.showTitle || rowType === 'header')) {\n if (typeof children === 'string' || typeof children === 'number') {\n title = children.toString();\n } else if ( /*#__PURE__*/React.isValidElement(children) && typeof children.props.children === 'string') {\n title = children.props.children;\n }\n }\n return title;\n};\nfunction Cell(props) {\n var _ref2, _ref3, _legacyCellProps$colS, _ref4, _ref5, _legacyCellProps$rowS, _additionalProps$titl, _classNames;\n if (process.env.NODE_ENV !== 'production') {\n devRenderTimes(props);\n }\n var Component = props.component,\n children = props.children,\n ellipsis = props.ellipsis,\n scope = props.scope,\n prefixCls = props.prefixCls,\n className = props.className,\n align = props.align,\n record = props.record,\n render = props.render,\n dataIndex = props.dataIndex,\n renderIndex = props.renderIndex,\n shouldCellUpdate = props.shouldCellUpdate,\n index = props.index,\n rowType = props.rowType,\n colSpan = props.colSpan,\n rowSpan = props.rowSpan,\n fixLeft = props.fixLeft,\n fixRight = props.fixRight,\n firstFixLeft = props.firstFixLeft,\n lastFixLeft = props.lastFixLeft,\n firstFixRight = props.firstFixRight,\n lastFixRight = props.lastFixRight,\n appendNode = props.appendNode,\n _props$additionalProp = props.additionalProps,\n additionalProps = _props$additionalProp === void 0 ? {} : _props$additionalProp,\n isSticky = props.isSticky;\n var cellPrefixCls = \"\".concat(prefixCls, \"-cell\");\n var _useContext = useContext(TableContext, ['supportSticky', 'allColumnsFixedLeft']),\n supportSticky = _useContext.supportSticky,\n allColumnsFixedLeft = _useContext.allColumnsFixedLeft;\n\n // ====================== Value =======================\n var _useCellRender = useCellRender(record, dataIndex, renderIndex, children, render, shouldCellUpdate),\n _useCellRender2 = _slicedToArray(_useCellRender, 2),\n childNode = _useCellRender2[0],\n legacyCellProps = _useCellRender2[1];\n\n // ====================== Fixed =======================\n var fixedStyle = {};\n var isFixLeft = typeof fixLeft === 'number' && supportSticky;\n var isFixRight = typeof fixRight === 'number' && supportSticky;\n if (isFixLeft) {\n fixedStyle.position = 'sticky';\n fixedStyle.left = fixLeft;\n }\n if (isFixRight) {\n fixedStyle.position = 'sticky';\n fixedStyle.right = fixRight;\n }\n\n // ================ RowSpan & ColSpan =================\n var mergedColSpan = (_ref2 = (_ref3 = (_legacyCellProps$colS = legacyCellProps === null || legacyCellProps === void 0 ? void 0 : legacyCellProps.colSpan) !== null && _legacyCellProps$colS !== void 0 ? _legacyCellProps$colS : additionalProps.colSpan) !== null && _ref3 !== void 0 ? _ref3 : colSpan) !== null && _ref2 !== void 0 ? _ref2 : 1;\n var mergedRowSpan = (_ref4 = (_ref5 = (_legacyCellProps$rowS = legacyCellProps === null || legacyCellProps === void 0 ? void 0 : legacyCellProps.rowSpan) !== null && _legacyCellProps$rowS !== void 0 ? _legacyCellProps$rowS : additionalProps.rowSpan) !== null && _ref5 !== void 0 ? _ref5 : rowSpan) !== null && _ref4 !== void 0 ? _ref4 : 1;\n\n // ====================== Hover =======================\n var _useHoverState = useHoverState(index, mergedRowSpan),\n _useHoverState2 = _slicedToArray(_useHoverState, 2),\n hovering = _useHoverState2[0],\n onHover = _useHoverState2[1];\n var onMouseEnter = useEvent(function (event) {\n var _additionalProps$onMo;\n if (record) {\n onHover(index, index + mergedRowSpan - 1);\n }\n additionalProps === null || additionalProps === void 0 || (_additionalProps$onMo = additionalProps.onMouseEnter) === null || _additionalProps$onMo === void 0 || _additionalProps$onMo.call(additionalProps, event);\n });\n var onMouseLeave = useEvent(function (event) {\n var _additionalProps$onMo2;\n if (record) {\n onHover(-1, -1);\n }\n additionalProps === null || additionalProps === void 0 || (_additionalProps$onMo2 = additionalProps.onMouseLeave) === null || _additionalProps$onMo2 === void 0 || _additionalProps$onMo2.call(additionalProps, event);\n });\n\n // ====================== Render ======================\n if (mergedColSpan === 0 || mergedRowSpan === 0) {\n return null;\n }\n\n // >>>>> Title\n var title = (_additionalProps$titl = additionalProps.title) !== null && _additionalProps$titl !== void 0 ? _additionalProps$titl : getTitleFromCellRenderChildren({\n rowType: rowType,\n ellipsis: ellipsis,\n children: childNode\n });\n\n // >>>>> ClassName\n var mergedClassName = classNames(cellPrefixCls, className, (_classNames = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-fix-left\"), isFixLeft && supportSticky), \"\".concat(cellPrefixCls, \"-fix-left-first\"), firstFixLeft && supportSticky), \"\".concat(cellPrefixCls, \"-fix-left-last\"), lastFixLeft && supportSticky), \"\".concat(cellPrefixCls, \"-fix-left-all\"), lastFixLeft && allColumnsFixedLeft && supportSticky), \"\".concat(cellPrefixCls, \"-fix-right\"), isFixRight && supportSticky), \"\".concat(cellPrefixCls, \"-fix-right-first\"), firstFixRight && supportSticky), \"\".concat(cellPrefixCls, \"-fix-right-last\"), lastFixRight && supportSticky), \"\".concat(cellPrefixCls, \"-ellipsis\"), ellipsis), \"\".concat(cellPrefixCls, \"-with-append\"), appendNode), \"\".concat(cellPrefixCls, \"-fix-sticky\"), (isFixLeft || isFixRight) && isSticky && supportSticky), _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-row-hover\"), !legacyCellProps && hovering)), additionalProps.className, legacyCellProps === null || legacyCellProps === void 0 ? void 0 : legacyCellProps.className);\n\n // >>>>> Style\n var alignStyle = {};\n if (align) {\n alignStyle.textAlign = align;\n }\n var mergedStyle = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, fixedStyle), additionalProps.style), alignStyle), legacyCellProps === null || legacyCellProps === void 0 ? void 0 : legacyCellProps.style);\n\n // >>>>> Children Node\n var mergedChildNode = childNode;\n\n // Not crash if final `childNode` is not validate ReactNode\n if (_typeof(mergedChildNode) === 'object' && !Array.isArray(mergedChildNode) && ! /*#__PURE__*/React.isValidElement(mergedChildNode)) {\n mergedChildNode = null;\n }\n if (ellipsis && (lastFixLeft || firstFixRight)) {\n mergedChildNode = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(cellPrefixCls, \"-content\")\n }, mergedChildNode);\n }\n return /*#__PURE__*/React.createElement(Component, _extends({}, legacyCellProps, additionalProps, {\n className: mergedClassName,\n style: mergedStyle\n // A11y\n ,\n title: title,\n scope: scope\n // Hover\n ,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave\n //Span\n ,\n colSpan: mergedColSpan !== 1 ? mergedColSpan : null,\n rowSpan: mergedRowSpan !== 1 ? mergedRowSpan : null\n }), appendNode, mergedChildNode);\n}\nexport default /*#__PURE__*/React.memo(Cell);","import { useContext } from '@rc-component/context';\nimport TableContext from \"../context/TableContext\";\n/** Check if cell is in hover range */\nfunction inHoverRange(cellStartRow, cellRowSpan, startRow, endRow) {\n var cellEndRow = cellStartRow + cellRowSpan - 1;\n return cellStartRow <= endRow && cellEndRow >= startRow;\n}\nexport default function useHoverState(rowIndex, rowSpan) {\n return useContext(TableContext, function (ctx) {\n var hovering = inHoverRange(rowIndex, rowSpan || 1, ctx.hoverStartRow, ctx.hoverEndRow);\n return [hovering, ctx.onHover];\n });\n}","export function getCellFixedInfo(colStart, colEnd, columns, stickyOffsets, direction, curColumns) {\n var startColumn = columns[colStart] || {};\n var endColumn = columns[colEnd] || {};\n var fixLeft;\n var fixRight;\n if (startColumn.fixed === 'left') {\n fixLeft = stickyOffsets.left[direction === 'rtl' ? colEnd : colStart];\n } else if (endColumn.fixed === 'right') {\n fixRight = stickyOffsets.right[direction === 'rtl' ? colStart : colEnd];\n }\n var lastFixLeft = false;\n var firstFixRight = false;\n var lastFixRight = false;\n var firstFixLeft = false;\n var nextColumn = columns[colEnd + 1];\n var prevColumn = columns[colStart - 1];\n\n // no children only\n var canLastFix = !(curColumns !== null && curColumns !== void 0 && curColumns.children);\n if (direction === 'rtl') {\n if (fixLeft !== undefined) {\n var prevFixLeft = prevColumn && prevColumn.fixed === 'left';\n firstFixLeft = !prevFixLeft && canLastFix;\n } else if (fixRight !== undefined) {\n var nextFixRight = nextColumn && nextColumn.fixed === 'right';\n lastFixRight = !nextFixRight && canLastFix;\n }\n } else if (fixLeft !== undefined) {\n var nextFixLeft = nextColumn && nextColumn.fixed === 'left';\n lastFixLeft = !nextFixLeft && canLastFix;\n } else if (fixRight !== undefined) {\n var prevFixRight = prevColumn && prevColumn.fixed === 'right';\n firstFixRight = !prevFixRight && canLastFix;\n }\n return {\n fixLeft: fixLeft,\n fixRight: fixRight,\n lastFixLeft: lastFixLeft,\n firstFixRight: firstFixRight,\n lastFixRight: lastFixRight,\n firstFixLeft: firstFixLeft,\n isSticky: stickyOffsets.isSticky\n };\n}","import * as React from 'react';\nvar SummaryContext = /*#__PURE__*/React.createContext({});\nexport default SummaryContext;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport * as React from 'react';\nexport default function FooterRow(_ref) {\n var children = _ref.children,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"tr\", props, children);\n}","import Cell from \"./Cell\";\nimport Row from \"./Row\";\n/**\n * Syntactic sugar. Do not support HOC.\n */\nfunction Summary(_ref) {\n var children = _ref.children;\n return children;\n}\nSummary.Row = Row;\nSummary.Cell = Cell;\nexport default Summary;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Cell from \"../Cell\";\nimport TableContext from \"../context/TableContext\";\nimport { useContext } from '@rc-component/context';\nimport { getCellFixedInfo } from \"../utils/fixUtil\";\nimport SummaryContext from \"./SummaryContext\";\nexport default function SummaryCell(_ref) {\n var className = _ref.className,\n index = _ref.index,\n children = _ref.children,\n _ref$colSpan = _ref.colSpan,\n colSpan = _ref$colSpan === void 0 ? 1 : _ref$colSpan,\n rowSpan = _ref.rowSpan,\n align = _ref.align;\n var _useContext = useContext(TableContext, ['prefixCls', 'direction']),\n prefixCls = _useContext.prefixCls,\n direction = _useContext.direction;\n var _React$useContext = React.useContext(SummaryContext),\n scrollColumnIndex = _React$useContext.scrollColumnIndex,\n stickyOffsets = _React$useContext.stickyOffsets,\n flattenColumns = _React$useContext.flattenColumns,\n columns = _React$useContext.columns;\n var lastIndex = index + colSpan - 1;\n var mergedColSpan = lastIndex + 1 === scrollColumnIndex ? colSpan + 1 : colSpan;\n var fixedInfo = getCellFixedInfo(index, index + mergedColSpan - 1, flattenColumns, stickyOffsets, direction, columns === null || columns === void 0 ? void 0 : columns[index]);\n return /*#__PURE__*/React.createElement(Cell, _extends({\n className: className,\n index: index,\n component: \"td\",\n prefixCls: prefixCls,\n record: null,\n dataIndex: null,\n align: align,\n colSpan: mergedColSpan,\n rowSpan: rowSpan,\n render: function render() {\n return children;\n }\n }, fixedInfo));\n}","import { useContext } from '@rc-component/context';\nimport * as React from 'react';\nimport TableContext, { responseImmutable } from \"../context/TableContext\";\nimport devRenderTimes from \"../hooks/useRenderTimes\";\nimport Summary from \"./Summary\";\nimport SummaryContext from \"./SummaryContext\";\nfunction Footer(props) {\n if (process.env.NODE_ENV !== 'production') {\n devRenderTimes(props);\n }\n var children = props.children,\n stickyOffsets = props.stickyOffsets,\n flattenColumns = props.flattenColumns,\n columns = props.columns;\n var prefixCls = useContext(TableContext, 'prefixCls');\n var lastColumnIndex = flattenColumns.length - 1;\n var scrollColumn = flattenColumns[lastColumnIndex];\n var summaryContext = React.useMemo(function () {\n return {\n stickyOffsets: stickyOffsets,\n flattenColumns: flattenColumns,\n scrollColumnIndex: scrollColumn !== null && scrollColumn !== void 0 && scrollColumn.scrollbar ? lastColumnIndex : null,\n columns: columns\n };\n }, [scrollColumn, flattenColumns, lastColumnIndex, stickyOffsets, columns]);\n return /*#__PURE__*/React.createElement(SummaryContext.Provider, {\n value: summaryContext\n }, /*#__PURE__*/React.createElement(\"tfoot\", {\n className: \"\".concat(prefixCls, \"-summary\")\n }, children));\n}\nexport default responseImmutable(Footer);\nexport var FooterComponents = Summary;","import canUseDom from \"./canUseDom\";\nvar isStyleNameSupport = function isStyleNameSupport(styleName) {\n if (canUseDom() && window.document.documentElement) {\n var styleNameList = Array.isArray(styleName) ? styleName : [styleName];\n var documentElement = window.document.documentElement;\n return styleNameList.some(function (name) {\n return name in documentElement.style;\n });\n }\n return false;\n};\nvar isStyleValueSupport = function isStyleValueSupport(styleName, value) {\n if (!isStyleNameSupport(styleName)) {\n return false;\n }\n var ele = document.createElement('div');\n var origin = ele.style[styleName];\n ele.style[styleName] = value;\n return ele.style[styleName] !== origin;\n};\nexport function isStyleSupport(styleName, styleValue) {\n if (!Array.isArray(styleName) && styleValue !== undefined) {\n return isStyleValueSupport(styleName, styleValue);\n }\n return isStyleNameSupport(styleName);\n}","import * as React from 'react';\n// recursion (flat tree structure)\nfunction fillRecords(list, record, indent, childrenColumnName, expandedKeys, getRowKey, index) {\n list.push({\n record: record,\n indent: indent,\n index: index\n });\n var key = getRowKey(record);\n var expanded = expandedKeys === null || expandedKeys === void 0 ? void 0 : expandedKeys.has(key);\n if (record && Array.isArray(record[childrenColumnName]) && expanded) {\n // expanded state, flat record\n for (var i = 0; i < record[childrenColumnName].length; i += 1) {\n fillRecords(list, record[childrenColumnName][i], indent + 1, childrenColumnName, expandedKeys, getRowKey, i);\n }\n }\n}\n/**\n * flat tree data on expanded state\n *\n * @export\n * @template T\n * @param {*} data : table data\n * @param {string} childrenColumnName : 指定树形结构的列名\n * @param {Set} expandedKeys : 展开的行对应的keys\n * @param {GetRowKey} getRowKey : 获取当前rowKey的方法\n * @returns flattened data\n */\nexport default function useFlattenRecords(data, childrenColumnName, expandedKeys, getRowKey) {\n var arr = React.useMemo(function () {\n if (expandedKeys !== null && expandedKeys !== void 0 && expandedKeys.size) {\n var list = [];\n\n // collect flattened record\n for (var i = 0; i < (data === null || data === void 0 ? void 0 : data.length); i += 1) {\n var record = data[i];\n\n // using array.push or spread operator may cause \"Maximum call stack size exceeded\" exception if array size is big enough.\n fillRecords(list, record, 0, childrenColumnName, expandedKeys, getRowKey, i);\n }\n return list;\n }\n return data === null || data === void 0 ? void 0 : data.map(function (item, index) {\n return {\n record: item,\n indent: 0,\n index: index\n };\n });\n }, [data, childrenColumnName, expandedKeys, getRowKey]);\n return arr;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { useContext } from '@rc-component/context';\nimport TableContext from \"../context/TableContext\";\nimport { getColumnsKey } from \"../utils/valueUtil\";\nimport { useEvent } from 'rc-util';\nimport classNames from 'classnames';\nexport default function useRowInfo(record, rowKey, recordIndex, indent) {\n var context = useContext(TableContext, ['prefixCls', 'fixedInfoList', 'flattenColumns', 'expandableType', 'expandRowByClick', 'onTriggerExpand', 'rowClassName', 'expandedRowClassName', 'indentSize', 'expandIcon', 'expandedRowRender', 'expandIconColumnIndex', 'expandedKeys', 'childrenColumnName', 'rowExpandable', 'onRow']);\n var flattenColumns = context.flattenColumns,\n expandableType = context.expandableType,\n expandedKeys = context.expandedKeys,\n childrenColumnName = context.childrenColumnName,\n onTriggerExpand = context.onTriggerExpand,\n rowExpandable = context.rowExpandable,\n onRow = context.onRow,\n expandRowByClick = context.expandRowByClick,\n rowClassName = context.rowClassName;\n\n // ======================= Expandable =======================\n // Only when row is not expandable and `children` exist in record\n var nestExpandable = expandableType === 'nest';\n var rowSupportExpand = expandableType === 'row' && (!rowExpandable || rowExpandable(record));\n var mergedExpandable = rowSupportExpand || nestExpandable;\n var expanded = expandedKeys && expandedKeys.has(rowKey);\n var hasNestChildren = childrenColumnName && record && record[childrenColumnName];\n var onInternalTriggerExpand = useEvent(onTriggerExpand);\n\n // ========================= onRow ==========================\n var rowProps = onRow === null || onRow === void 0 ? void 0 : onRow(record, recordIndex);\n var onRowClick = rowProps === null || rowProps === void 0 ? void 0 : rowProps.onClick;\n var onClick = function onClick(event) {\n if (expandRowByClick && mergedExpandable) {\n onTriggerExpand(record, event);\n }\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n onRowClick === null || onRowClick === void 0 || onRowClick.apply(void 0, [event].concat(args));\n };\n\n // ====================== RowClassName ======================\n var computeRowClassName;\n if (typeof rowClassName === 'string') {\n computeRowClassName = rowClassName;\n } else if (typeof rowClassName === 'function') {\n computeRowClassName = rowClassName(record, recordIndex, indent);\n }\n\n // ========================= Column =========================\n var columnsKey = getColumnsKey(flattenColumns);\n return _objectSpread(_objectSpread({}, context), {}, {\n columnsKey: columnsKey,\n nestExpandable: nestExpandable,\n expanded: expanded,\n hasNestChildren: hasNestChildren,\n record: record,\n onTriggerExpand: onInternalTriggerExpand,\n rowSupportExpand: rowSupportExpand,\n expandable: mergedExpandable,\n rowProps: _objectSpread(_objectSpread({}, rowProps), {}, {\n className: classNames(computeRowClassName, rowProps === null || rowProps === void 0 ? void 0 : rowProps.className),\n onClick: onClick\n })\n });\n}","import { useContext } from '@rc-component/context';\nimport * as React from 'react';\nimport Cell from \"../Cell\";\nimport TableContext from \"../context/TableContext\";\nimport devRenderTimes from \"../hooks/useRenderTimes\";\nfunction ExpandedRow(props) {\n if (process.env.NODE_ENV !== 'production') {\n devRenderTimes(props);\n }\n var prefixCls = props.prefixCls,\n children = props.children,\n Component = props.component,\n cellComponent = props.cellComponent,\n className = props.className,\n expanded = props.expanded,\n colSpan = props.colSpan,\n isEmpty = props.isEmpty;\n var _useContext = useContext(TableContext, ['scrollbarSize', 'fixHeader', 'fixColumn', 'componentWidth', 'horizonScroll']),\n scrollbarSize = _useContext.scrollbarSize,\n fixHeader = _useContext.fixHeader,\n fixColumn = _useContext.fixColumn,\n componentWidth = _useContext.componentWidth,\n horizonScroll = _useContext.horizonScroll;\n\n // Cache render node\n var contentNode = children;\n if (isEmpty ? horizonScroll && componentWidth : fixColumn) {\n contentNode = /*#__PURE__*/React.createElement(\"div\", {\n style: {\n width: componentWidth - (fixHeader ? scrollbarSize : 0),\n position: 'sticky',\n left: 0,\n overflow: 'hidden'\n },\n className: \"\".concat(prefixCls, \"-expanded-row-fixed\")\n }, contentNode);\n }\n return /*#__PURE__*/React.createElement(Component, {\n className: className,\n style: {\n display: expanded ? null : 'none'\n }\n }, /*#__PURE__*/React.createElement(Cell, {\n component: cellComponent,\n prefixCls: prefixCls,\n colSpan: colSpan\n }, contentNode));\n}\nexport default ExpandedRow;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport Cell from \"../Cell\";\nimport { responseImmutable } from \"../context/TableContext\";\nimport devRenderTimes from \"../hooks/useRenderTimes\";\nimport useRowInfo from \"../hooks/useRowInfo\";\nimport ExpandedRow from \"./ExpandedRow\";\n// ==================================================================================\n// == getCellProps ==\n// ==================================================================================\nexport function getCellProps(rowInfo, column, colIndex, indent, index) {\n var record = rowInfo.record,\n prefixCls = rowInfo.prefixCls,\n columnsKey = rowInfo.columnsKey,\n fixedInfoList = rowInfo.fixedInfoList,\n expandIconColumnIndex = rowInfo.expandIconColumnIndex,\n nestExpandable = rowInfo.nestExpandable,\n indentSize = rowInfo.indentSize,\n expandIcon = rowInfo.expandIcon,\n expanded = rowInfo.expanded,\n hasNestChildren = rowInfo.hasNestChildren,\n onTriggerExpand = rowInfo.onTriggerExpand;\n var key = columnsKey[colIndex];\n var fixedInfo = fixedInfoList[colIndex];\n\n // ============= Used for nest expandable =============\n var appendCellNode;\n if (colIndex === (expandIconColumnIndex || 0) && nestExpandable) {\n appendCellNode = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"span\", {\n style: {\n paddingLeft: \"\".concat(indentSize * indent, \"px\")\n },\n className: \"\".concat(prefixCls, \"-row-indent indent-level-\").concat(indent)\n }), expandIcon({\n prefixCls: prefixCls,\n expanded: expanded,\n expandable: hasNestChildren,\n record: record,\n onExpand: onTriggerExpand\n }));\n }\n var additionalCellProps;\n if (column.onCell) {\n additionalCellProps = column.onCell(record, index);\n }\n return {\n key: key,\n fixedInfo: fixedInfo,\n appendCellNode: appendCellNode,\n additionalCellProps: additionalCellProps || {}\n };\n}\n\n// ==================================================================================\n// == getCellProps ==\n// ==================================================================================\nfunction BodyRow(props) {\n if (process.env.NODE_ENV !== 'production') {\n devRenderTimes(props);\n }\n var className = props.className,\n style = props.style,\n record = props.record,\n index = props.index,\n renderIndex = props.renderIndex,\n rowKey = props.rowKey,\n _props$indent = props.indent,\n indent = _props$indent === void 0 ? 0 : _props$indent,\n RowComponent = props.rowComponent,\n cellComponent = props.cellComponent,\n scopeCellComponent = props.scopeCellComponent;\n var rowInfo = useRowInfo(record, rowKey, index, indent);\n var prefixCls = rowInfo.prefixCls,\n flattenColumns = rowInfo.flattenColumns,\n expandedRowClassName = rowInfo.expandedRowClassName,\n expandedRowRender = rowInfo.expandedRowRender,\n rowProps = rowInfo.rowProps,\n expanded = rowInfo.expanded,\n rowSupportExpand = rowInfo.rowSupportExpand;\n\n // Force render expand row if expanded before\n var expandedRef = React.useRef(false);\n expandedRef.current || (expandedRef.current = expanded);\n if (process.env.NODE_ENV !== 'production') {\n devRenderTimes(props);\n }\n\n // ======================== Base tr row ========================\n var baseRowNode = /*#__PURE__*/React.createElement(RowComponent, _extends({}, rowProps, {\n \"data-row-key\": rowKey,\n className: classNames(className, \"\".concat(prefixCls, \"-row\"), \"\".concat(prefixCls, \"-row-level-\").concat(indent), rowProps === null || rowProps === void 0 ? void 0 : rowProps.className),\n style: _objectSpread(_objectSpread({}, style), rowProps === null || rowProps === void 0 ? void 0 : rowProps.style)\n }), flattenColumns.map(function (column, colIndex) {\n var render = column.render,\n dataIndex = column.dataIndex,\n columnClassName = column.className;\n var _getCellProps = getCellProps(rowInfo, column, colIndex, indent, index),\n key = _getCellProps.key,\n fixedInfo = _getCellProps.fixedInfo,\n appendCellNode = _getCellProps.appendCellNode,\n additionalCellProps = _getCellProps.additionalCellProps;\n return /*#__PURE__*/React.createElement(Cell, _extends({\n className: columnClassName,\n ellipsis: column.ellipsis,\n align: column.align,\n scope: column.rowScope,\n component: column.rowScope ? scopeCellComponent : cellComponent,\n prefixCls: prefixCls,\n key: key,\n record: record,\n index: index,\n renderIndex: renderIndex,\n dataIndex: dataIndex,\n render: render,\n shouldCellUpdate: column.shouldCellUpdate\n }, fixedInfo, {\n appendNode: appendCellNode,\n additionalProps: additionalCellProps\n }));\n }));\n\n // ======================== Expand Row =========================\n var expandRowNode;\n if (rowSupportExpand && (expandedRef.current || expanded)) {\n var expandContent = expandedRowRender(record, index, indent + 1, expanded);\n var computedExpandedRowClassName = expandedRowClassName && expandedRowClassName(record, index, indent);\n expandRowNode = /*#__PURE__*/React.createElement(ExpandedRow, {\n expanded: expanded,\n className: classNames(\"\".concat(prefixCls, \"-expanded-row\"), \"\".concat(prefixCls, \"-expanded-row-level-\").concat(indent + 1), computedExpandedRowClassName),\n prefixCls: prefixCls,\n component: RowComponent,\n cellComponent: cellComponent,\n colSpan: flattenColumns.length,\n isEmpty: false\n }, expandContent);\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, baseRowNode, expandRowNode);\n}\nBodyRow.displayName = 'BodyRow';\nexport default responseImmutable(BodyRow);","import * as React from 'react';\nimport ResizeObserver from 'rc-resize-observer';\nexport default function MeasureCell(_ref) {\n var columnKey = _ref.columnKey,\n onColumnResize = _ref.onColumnResize;\n var cellRef = React.useRef();\n React.useEffect(function () {\n if (cellRef.current) {\n onColumnResize(columnKey, cellRef.current.offsetWidth);\n }\n }, []);\n return /*#__PURE__*/React.createElement(ResizeObserver, {\n data: columnKey\n }, /*#__PURE__*/React.createElement(\"td\", {\n ref: cellRef,\n style: {\n padding: 0,\n border: 0,\n height: 0\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n style: {\n height: 0,\n overflow: 'hidden'\n }\n }, \"\\xA0\")));\n}","import * as React from 'react';\nimport ResizeObserver from 'rc-resize-observer';\nimport MeasureCell from \"./MeasureCell\";\nexport default function MeasureRow(_ref) {\n var prefixCls = _ref.prefixCls,\n columnsKey = _ref.columnsKey,\n onColumnResize = _ref.onColumnResize;\n return /*#__PURE__*/React.createElement(\"tr\", {\n \"aria-hidden\": \"true\",\n className: \"\".concat(prefixCls, \"-measure-row\"),\n style: {\n height: 0,\n fontSize: 0\n }\n }, /*#__PURE__*/React.createElement(ResizeObserver.Collection, {\n onBatchResize: function onBatchResize(infoList) {\n infoList.forEach(function (_ref2) {\n var columnKey = _ref2.data,\n size = _ref2.size;\n onColumnResize(columnKey, size.offsetWidth);\n });\n }\n }, columnsKey.map(function (columnKey) {\n return /*#__PURE__*/React.createElement(MeasureCell, {\n key: columnKey,\n columnKey: columnKey,\n onColumnResize: onColumnResize\n });\n })));\n}","import { useContext } from '@rc-component/context';\nimport * as React from 'react';\nimport PerfContext from \"../context/PerfContext\";\nimport TableContext, { responseImmutable } from \"../context/TableContext\";\nimport useFlattenRecords from \"../hooks/useFlattenRecords\";\nimport devRenderTimes from \"../hooks/useRenderTimes\";\nimport { getColumnsKey } from \"../utils/valueUtil\";\nimport BodyRow from \"./BodyRow\";\nimport ExpandedRow from \"./ExpandedRow\";\nimport MeasureRow from \"./MeasureRow\";\nfunction Body(props) {\n if (process.env.NODE_ENV !== 'production') {\n devRenderTimes(props);\n }\n var data = props.data,\n measureColumnWidth = props.measureColumnWidth;\n var _useContext = useContext(TableContext, ['prefixCls', 'getComponent', 'onColumnResize', 'flattenColumns', 'getRowKey', 'expandedKeys', 'childrenColumnName', 'emptyNode']),\n prefixCls = _useContext.prefixCls,\n getComponent = _useContext.getComponent,\n onColumnResize = _useContext.onColumnResize,\n flattenColumns = _useContext.flattenColumns,\n getRowKey = _useContext.getRowKey,\n expandedKeys = _useContext.expandedKeys,\n childrenColumnName = _useContext.childrenColumnName,\n emptyNode = _useContext.emptyNode;\n var flattenData = useFlattenRecords(data, childrenColumnName, expandedKeys, getRowKey);\n\n // =================== Performance ====================\n var perfRef = React.useRef({\n renderWithProps: false\n });\n\n // ====================== Render ======================\n var WrapperComponent = getComponent(['body', 'wrapper'], 'tbody');\n var trComponent = getComponent(['body', 'row'], 'tr');\n var tdComponent = getComponent(['body', 'cell'], 'td');\n var thComponent = getComponent(['body', 'cell'], 'th');\n var rows;\n if (data.length) {\n rows = flattenData.map(function (item, idx) {\n var record = item.record,\n indent = item.indent,\n renderIndex = item.index;\n var key = getRowKey(record, idx);\n return /*#__PURE__*/React.createElement(BodyRow, {\n key: key,\n rowKey: key,\n record: record,\n index: idx,\n renderIndex: renderIndex,\n rowComponent: trComponent,\n cellComponent: tdComponent,\n scopeCellComponent: thComponent,\n getRowKey: getRowKey,\n indent: indent\n });\n });\n } else {\n rows = /*#__PURE__*/React.createElement(ExpandedRow, {\n expanded: true,\n className: \"\".concat(prefixCls, \"-placeholder\"),\n prefixCls: prefixCls,\n component: trComponent,\n cellComponent: tdComponent,\n colSpan: flattenColumns.length,\n isEmpty: true\n }, emptyNode);\n }\n var columnsKey = getColumnsKey(flattenColumns);\n return /*#__PURE__*/React.createElement(PerfContext.Provider, {\n value: perfRef.current\n }, /*#__PURE__*/React.createElement(WrapperComponent, {\n className: \"\".concat(prefixCls, \"-tbody\")\n }, measureColumnWidth && /*#__PURE__*/React.createElement(MeasureRow, {\n prefixCls: prefixCls,\n columnsKey: columnsKey,\n onColumnResize: onColumnResize\n }), rows));\n}\nBody.displayName = 'Body';\nexport default responseImmutable(Body);","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"expandable\"];\nimport warning from \"rc-util/es/warning\";\nexport var INTERNAL_COL_DEFINE = 'RC_TABLE_INTERNAL_COL_DEFINE';\nexport function getExpandableProps(props) {\n var expandable = props.expandable,\n legacyExpandableConfig = _objectWithoutProperties(props, _excluded);\n var config;\n if ('expandable' in props) {\n config = _objectSpread(_objectSpread({}, legacyExpandableConfig), expandable);\n } else {\n if (process.env.NODE_ENV !== 'production' && ['indentSize', 'expandedRowKeys', 'defaultExpandedRowKeys', 'defaultExpandAllRows', 'expandedRowRender', 'expandRowByClick', 'expandIcon', 'onExpand', 'onExpandedRowsChange', 'expandedRowClassName', 'expandIconColumnIndex', 'showExpandColumn', 'title'].some(function (prop) {\n return prop in props;\n })) {\n warning(false, 'expanded related props have been moved into `expandable`.');\n }\n config = legacyExpandableConfig;\n }\n if (config.showExpandColumn === false) {\n config.expandIconColumnIndex = -1;\n }\n return config;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"columnType\"];\nimport * as React from 'react';\nimport { INTERNAL_COL_DEFINE } from \"./utils/legacyUtil\";\nfunction ColGroup(_ref) {\n var colWidths = _ref.colWidths,\n columns = _ref.columns,\n columCount = _ref.columCount;\n var cols = [];\n var len = columCount || columns.length;\n\n // Only insert col with width & additional props\n // Skip if rest col do not have any useful info\n var mustInsert = false;\n for (var i = len - 1; i >= 0; i -= 1) {\n var width = colWidths[i];\n var column = columns && columns[i];\n var additionalProps = column && column[INTERNAL_COL_DEFINE];\n if (width || additionalProps || mustInsert) {\n var _ref2 = additionalProps || {},\n columnType = _ref2.columnType,\n restAdditionalProps = _objectWithoutProperties(_ref2, _excluded);\n cols.unshift( /*#__PURE__*/React.createElement(\"col\", _extends({\n key: i,\n style: {\n width: width\n }\n }, restAdditionalProps)));\n mustInsert = true;\n }\n }\n return /*#__PURE__*/React.createElement(\"colgroup\", null, cols);\n}\nexport default ColGroup;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"noData\", \"columns\", \"flattenColumns\", \"colWidths\", \"columCount\", \"stickyOffsets\", \"direction\", \"fixHeader\", \"stickyTopOffset\", \"stickyBottomOffset\", \"stickyClassName\", \"onScroll\", \"maxContentScroll\", \"children\"];\nimport { useContext } from '@rc-component/context';\nimport classNames from 'classnames';\nimport { fillRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport ColGroup from \"../ColGroup\";\nimport TableContext from \"../context/TableContext\";\nimport devRenderTimes from \"../hooks/useRenderTimes\";\nfunction useColumnWidth(colWidths, columCount) {\n return useMemo(function () {\n var cloneColumns = [];\n for (var i = 0; i < columCount; i += 1) {\n var val = colWidths[i];\n if (val !== undefined) {\n cloneColumns[i] = val;\n } else {\n return null;\n }\n }\n return cloneColumns;\n }, [colWidths.join('_'), columCount]);\n}\nvar FixedHolder = /*#__PURE__*/React.forwardRef(function (props, ref) {\n if (process.env.NODE_ENV !== 'production') {\n devRenderTimes(props);\n }\n var className = props.className,\n noData = props.noData,\n columns = props.columns,\n flattenColumns = props.flattenColumns,\n colWidths = props.colWidths,\n columCount = props.columCount,\n stickyOffsets = props.stickyOffsets,\n direction = props.direction,\n fixHeader = props.fixHeader,\n stickyTopOffset = props.stickyTopOffset,\n stickyBottomOffset = props.stickyBottomOffset,\n stickyClassName = props.stickyClassName,\n onScroll = props.onScroll,\n maxContentScroll = props.maxContentScroll,\n children = props.children,\n restProps = _objectWithoutProperties(props, _excluded);\n var _useContext = useContext(TableContext, ['prefixCls', 'scrollbarSize', 'isSticky']),\n prefixCls = _useContext.prefixCls,\n scrollbarSize = _useContext.scrollbarSize,\n isSticky = _useContext.isSticky;\n var combinationScrollBarSize = isSticky && !fixHeader ? 0 : scrollbarSize;\n\n // Pass wheel to scroll event\n var scrollRef = React.useRef(null);\n var setScrollRef = React.useCallback(function (element) {\n fillRef(ref, element);\n fillRef(scrollRef, element);\n }, []);\n React.useEffect(function () {\n var _scrollRef$current;\n function onWheel(e) {\n var _ref = e,\n currentTarget = _ref.currentTarget,\n deltaX = _ref.deltaX;\n if (deltaX) {\n onScroll({\n currentTarget: currentTarget,\n scrollLeft: currentTarget.scrollLeft + deltaX\n });\n e.preventDefault();\n }\n }\n (_scrollRef$current = scrollRef.current) === null || _scrollRef$current === void 0 || _scrollRef$current.addEventListener('wheel', onWheel);\n return function () {\n var _scrollRef$current2;\n (_scrollRef$current2 = scrollRef.current) === null || _scrollRef$current2 === void 0 || _scrollRef$current2.removeEventListener('wheel', onWheel);\n };\n }, []);\n\n // Check if all flattenColumns has width\n var allFlattenColumnsWithWidth = React.useMemo(function () {\n return flattenColumns.every(function (column) {\n return column.width;\n });\n }, [flattenColumns]);\n\n // Add scrollbar column\n var lastColumn = flattenColumns[flattenColumns.length - 1];\n var ScrollBarColumn = {\n fixed: lastColumn ? lastColumn.fixed : null,\n scrollbar: true,\n onHeaderCell: function onHeaderCell() {\n return {\n className: \"\".concat(prefixCls, \"-cell-scrollbar\")\n };\n }\n };\n var columnsWithScrollbar = useMemo(function () {\n return combinationScrollBarSize ? [].concat(_toConsumableArray(columns), [ScrollBarColumn]) : columns;\n }, [combinationScrollBarSize, columns]);\n var flattenColumnsWithScrollbar = useMemo(function () {\n return combinationScrollBarSize ? [].concat(_toConsumableArray(flattenColumns), [ScrollBarColumn]) : flattenColumns;\n }, [combinationScrollBarSize, flattenColumns]);\n\n // Calculate the sticky offsets\n var headerStickyOffsets = useMemo(function () {\n var right = stickyOffsets.right,\n left = stickyOffsets.left;\n return _objectSpread(_objectSpread({}, stickyOffsets), {}, {\n left: direction === 'rtl' ? [].concat(_toConsumableArray(left.map(function (width) {\n return width + combinationScrollBarSize;\n })), [0]) : left,\n right: direction === 'rtl' ? right : [].concat(_toConsumableArray(right.map(function (width) {\n return width + combinationScrollBarSize;\n })), [0]),\n isSticky: isSticky\n });\n }, [combinationScrollBarSize, stickyOffsets, isSticky]);\n var mergedColumnWidth = useColumnWidth(colWidths, columCount);\n return /*#__PURE__*/React.createElement(\"div\", {\n style: _objectSpread({\n overflow: 'hidden'\n }, isSticky ? {\n top: stickyTopOffset,\n bottom: stickyBottomOffset\n } : {}),\n ref: setScrollRef,\n className: classNames(className, _defineProperty({}, stickyClassName, !!stickyClassName))\n }, /*#__PURE__*/React.createElement(\"table\", {\n style: {\n tableLayout: 'fixed',\n visibility: noData || mergedColumnWidth ? null : 'hidden'\n }\n }, (!noData || !maxContentScroll || allFlattenColumnsWithWidth) && /*#__PURE__*/React.createElement(ColGroup, {\n colWidths: mergedColumnWidth ? [].concat(_toConsumableArray(mergedColumnWidth), [combinationScrollBarSize]) : [],\n columCount: columCount + 1,\n columns: flattenColumnsWithScrollbar\n }), children(_objectSpread(_objectSpread({}, restProps), {}, {\n stickyOffsets: headerStickyOffsets,\n columns: columnsWithScrollbar,\n flattenColumns: flattenColumnsWithScrollbar\n }))));\n});\nFixedHolder.displayName = 'FixedHolder';\n\n/** Return a table in div as fixed element which contains sticky info */\n// export default responseImmutable(FixedHolder);\nexport default /*#__PURE__*/React.memo(FixedHolder);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Cell from \"../Cell\";\nimport TableContext from \"../context/TableContext\";\nimport { useContext } from '@rc-component/context';\nimport { getCellFixedInfo } from \"../utils/fixUtil\";\nimport { getColumnsKey } from \"../utils/valueUtil\";\nfunction HeaderRow(_ref) {\n var cells = _ref.cells,\n stickyOffsets = _ref.stickyOffsets,\n flattenColumns = _ref.flattenColumns,\n RowComponent = _ref.rowComponent,\n CellComponent = _ref.cellComponent,\n tdCellComponent = _ref.tdCellComponent,\n onHeaderRow = _ref.onHeaderRow,\n index = _ref.index;\n var _useContext = useContext(TableContext, ['prefixCls', 'direction']),\n prefixCls = _useContext.prefixCls,\n direction = _useContext.direction;\n var rowProps;\n if (onHeaderRow) {\n rowProps = onHeaderRow(cells.map(function (cell) {\n return cell.column;\n }), index);\n }\n var columnsKey = getColumnsKey(cells.map(function (cell) {\n return cell.column;\n }));\n return /*#__PURE__*/React.createElement(RowComponent, rowProps, cells.map(function (cell, cellIndex) {\n var column = cell.column;\n var fixedInfo = getCellFixedInfo(cell.colStart, cell.colEnd, flattenColumns, stickyOffsets, direction, column);\n var additionalProps;\n if (column && column.onHeaderCell) {\n additionalProps = cell.column.onHeaderCell(column);\n }\n return /*#__PURE__*/React.createElement(Cell, _extends({}, cell, {\n scope: column.title ? cell.colSpan > 1 ? 'colgroup' : 'col' : null,\n ellipsis: column.ellipsis,\n align: column.align,\n component: column.title ? CellComponent : tdCellComponent,\n prefixCls: prefixCls,\n key: columnsKey[cellIndex]\n }, fixedInfo, {\n additionalProps: additionalProps,\n rowType: \"header\"\n }));\n }));\n}\nHeaderRow.displayName = 'HeaderRow';\nexport default HeaderRow;","import { useContext } from '@rc-component/context';\nimport * as React from 'react';\nimport TableContext, { responseImmutable } from \"../context/TableContext\";\nimport devRenderTimes from \"../hooks/useRenderTimes\";\nimport HeaderRow from \"./HeaderRow\";\nfunction parseHeaderRows(rootColumns) {\n var rows = [];\n function fillRowCells(columns, colIndex) {\n var rowIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n // Init rows\n rows[rowIndex] = rows[rowIndex] || [];\n var currentColIndex = colIndex;\n var colSpans = columns.filter(Boolean).map(function (column) {\n var cell = {\n key: column.key,\n className: column.className || '',\n children: column.title,\n column: column,\n colStart: currentColIndex\n };\n var colSpan = 1;\n var subColumns = column.children;\n if (subColumns && subColumns.length > 0) {\n colSpan = fillRowCells(subColumns, currentColIndex, rowIndex + 1).reduce(function (total, count) {\n return total + count;\n }, 0);\n cell.hasSubColumns = true;\n }\n if ('colSpan' in column) {\n colSpan = column.colSpan;\n }\n if ('rowSpan' in column) {\n cell.rowSpan = column.rowSpan;\n }\n cell.colSpan = colSpan;\n cell.colEnd = cell.colStart + colSpan - 1;\n rows[rowIndex].push(cell);\n currentColIndex += colSpan;\n return colSpan;\n });\n return colSpans;\n }\n\n // Generate `rows` cell data\n fillRowCells(rootColumns, 0);\n\n // Handle `rowSpan`\n var rowCount = rows.length;\n var _loop = function _loop(rowIndex) {\n rows[rowIndex].forEach(function (cell) {\n if (!('rowSpan' in cell) && !cell.hasSubColumns) {\n // eslint-disable-next-line no-param-reassign\n cell.rowSpan = rowCount - rowIndex;\n }\n });\n };\n for (var rowIndex = 0; rowIndex < rowCount; rowIndex += 1) {\n _loop(rowIndex);\n }\n return rows;\n}\nfunction Header(props) {\n if (process.env.NODE_ENV !== 'production') {\n devRenderTimes(props);\n }\n var stickyOffsets = props.stickyOffsets,\n columns = props.columns,\n flattenColumns = props.flattenColumns,\n onHeaderRow = props.onHeaderRow;\n var _useContext = useContext(TableContext, ['prefixCls', 'getComponent']),\n prefixCls = _useContext.prefixCls,\n getComponent = _useContext.getComponent;\n var rows = React.useMemo(function () {\n return parseHeaderRows(columns);\n }, [columns]);\n var WrapperComponent = getComponent(['header', 'wrapper'], 'thead');\n var trComponent = getComponent(['header', 'row'], 'tr');\n var thComponent = getComponent(['header', 'cell'], 'th');\n var tdComponent = getComponent(['header', 'cell'], 'td');\n return /*#__PURE__*/React.createElement(WrapperComponent, {\n className: \"\".concat(prefixCls, \"-thead\")\n }, rows.map(function (row, rowIndex) {\n var rowNode = /*#__PURE__*/React.createElement(HeaderRow, {\n key: rowIndex,\n flattenColumns: flattenColumns,\n cells: row,\n stickyOffsets: stickyOffsets,\n rowComponent: trComponent,\n cellComponent: thComponent,\n tdCellComponent: tdComponent,\n onHeaderRow: onHeaderRow,\n index: rowIndex\n });\n return rowNode;\n }));\n}\nexport default responseImmutable(Header);","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nfunction parseColWidth(totalWidth) {\n var width = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n if (typeof width === 'number') {\n return width;\n }\n if (width.endsWith('%')) {\n return totalWidth * parseFloat(width) / 100;\n }\n return null;\n}\n\n/**\n * Fill all column with width\n */\nexport default function useWidthColumns(flattenColumns, scrollWidth, clientWidth) {\n return React.useMemo(function () {\n // Fill width if needed\n if (scrollWidth && scrollWidth > 0) {\n var totalWidth = 0;\n var missWidthCount = 0;\n\n // collect not given width column\n flattenColumns.forEach(function (col) {\n var colWidth = parseColWidth(scrollWidth, col.width);\n if (colWidth) {\n totalWidth += colWidth;\n } else {\n missWidthCount += 1;\n }\n });\n\n // Fill width\n var maxFitWidth = Math.max(scrollWidth, clientWidth);\n var restWidth = Math.max(maxFitWidth - totalWidth, missWidthCount);\n var restCount = missWidthCount;\n var avgWidth = restWidth / missWidthCount;\n var realTotal = 0;\n var filledColumns = flattenColumns.map(function (col) {\n var clone = _objectSpread({}, col);\n var colWidth = parseColWidth(scrollWidth, clone.width);\n if (colWidth) {\n clone.width = colWidth;\n } else {\n var colAvgWidth = Math.floor(avgWidth);\n clone.width = restCount === 1 ? restWidth : colAvgWidth;\n restWidth -= colAvgWidth;\n restCount -= 1;\n }\n realTotal += clone.width;\n return clone;\n });\n\n // If realTotal is less than clientWidth,\n // We need extend column width\n if (realTotal < maxFitWidth) {\n var scale = maxFitWidth / realTotal;\n restWidth = maxFitWidth;\n filledColumns.forEach(function (col, index) {\n var colWidth = Math.floor(col.width * scale);\n col.width = index === filledColumns.length - 1 ? restWidth : colWidth;\n restWidth -= colWidth;\n });\n }\n return [filledColumns, Math.max(realTotal, maxFitWidth)];\n }\n return [flattenColumns, scrollWidth];\n }, [flattenColumns, scrollWidth, clientWidth]);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\"],\n _excluded2 = [\"fixed\"];\nimport toArray from \"rc-util/es/Children/toArray\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { EXPAND_COLUMN } from \"../../constant\";\nimport { INTERNAL_COL_DEFINE } from \"../../utils/legacyUtil\";\nimport useWidthColumns from \"./useWidthColumns\";\nexport function convertChildrenToColumns(children) {\n return toArray(children).filter(function (node) {\n return /*#__PURE__*/React.isValidElement(node);\n }).map(function (_ref) {\n var key = _ref.key,\n props = _ref.props;\n var nodeChildren = props.children,\n restProps = _objectWithoutProperties(props, _excluded);\n var column = _objectSpread({\n key: key\n }, restProps);\n if (nodeChildren) {\n column.children = convertChildrenToColumns(nodeChildren);\n }\n return column;\n });\n}\nfunction filterHiddenColumns(columns) {\n return columns.filter(function (column) {\n return column && _typeof(column) === 'object' && !column.hidden;\n }).map(function (column) {\n var subColumns = column.children;\n if (subColumns && subColumns.length > 0) {\n return _objectSpread(_objectSpread({}, column), {}, {\n children: filterHiddenColumns(subColumns)\n });\n }\n return column;\n });\n}\nfunction flatColumns(columns) {\n var parentKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key';\n return columns.filter(function (column) {\n return column && _typeof(column) === 'object';\n }).reduce(function (list, column, index) {\n var fixed = column.fixed;\n // Convert `fixed='true'` to `fixed='left'` instead\n var parsedFixed = fixed === true ? 'left' : fixed;\n var mergedKey = \"\".concat(parentKey, \"-\").concat(index);\n var subColumns = column.children;\n if (subColumns && subColumns.length > 0) {\n return [].concat(_toConsumableArray(list), _toConsumableArray(flatColumns(subColumns, mergedKey).map(function (subColum) {\n return _objectSpread({\n fixed: parsedFixed\n }, subColum);\n })));\n }\n return [].concat(_toConsumableArray(list), [_objectSpread(_objectSpread({\n key: mergedKey\n }, column), {}, {\n fixed: parsedFixed\n })]);\n }, []);\n}\nfunction warningFixed(flattenColumns) {\n var allFixLeft = true;\n for (var i = 0; i < flattenColumns.length; i += 1) {\n var col = flattenColumns[i];\n if (allFixLeft && col.fixed !== 'left') {\n allFixLeft = false;\n } else if (!allFixLeft && col.fixed === 'left') {\n warning(false, \"Index \".concat(i - 1, \" of `columns` missing `fixed='left'` prop.\"));\n break;\n }\n }\n var allFixRight = true;\n for (var _i = flattenColumns.length - 1; _i >= 0; _i -= 1) {\n var _col = flattenColumns[_i];\n if (allFixRight && _col.fixed !== 'right') {\n allFixRight = false;\n } else if (!allFixRight && _col.fixed === 'right') {\n warning(false, \"Index \".concat(_i + 1, \" of `columns` missing `fixed='right'` prop.\"));\n break;\n }\n }\n}\nfunction revertForRtl(columns) {\n return columns.map(function (column) {\n var fixed = column.fixed,\n restProps = _objectWithoutProperties(column, _excluded2);\n\n // Convert `fixed='left'` to `fixed='right'` instead\n var parsedFixed = fixed;\n if (fixed === 'left') {\n parsedFixed = 'right';\n } else if (fixed === 'right') {\n parsedFixed = 'left';\n }\n return _objectSpread({\n fixed: parsedFixed\n }, restProps);\n });\n}\n\n/**\n * Parse `columns` & `children` into `columns`.\n */\nfunction useColumns(_ref2, transformColumns) {\n var prefixCls = _ref2.prefixCls,\n columns = _ref2.columns,\n children = _ref2.children,\n expandable = _ref2.expandable,\n expandedKeys = _ref2.expandedKeys,\n columnTitle = _ref2.columnTitle,\n getRowKey = _ref2.getRowKey,\n onTriggerExpand = _ref2.onTriggerExpand,\n expandIcon = _ref2.expandIcon,\n rowExpandable = _ref2.rowExpandable,\n expandIconColumnIndex = _ref2.expandIconColumnIndex,\n direction = _ref2.direction,\n expandRowByClick = _ref2.expandRowByClick,\n columnWidth = _ref2.columnWidth,\n fixed = _ref2.fixed,\n scrollWidth = _ref2.scrollWidth,\n clientWidth = _ref2.clientWidth;\n var baseColumns = React.useMemo(function () {\n var newColumns = columns || convertChildrenToColumns(children) || [];\n return filterHiddenColumns(newColumns.slice());\n }, [columns, children]);\n\n // ========================== Expand ==========================\n var withExpandColumns = React.useMemo(function () {\n if (expandable) {\n var cloneColumns = baseColumns.slice();\n\n // >>> Warning if use `expandIconColumnIndex`\n if (process.env.NODE_ENV !== 'production' && expandIconColumnIndex >= 0) {\n warning(false, '`expandIconColumnIndex` is deprecated. Please use `Table.EXPAND_COLUMN` in `columns` instead.');\n }\n\n // >>> Insert expand column if not exist\n if (!cloneColumns.includes(EXPAND_COLUMN)) {\n var expandColIndex = expandIconColumnIndex || 0;\n if (expandColIndex >= 0) {\n cloneColumns.splice(expandColIndex, 0, EXPAND_COLUMN);\n }\n }\n\n // >>> Deduplicate additional expand column\n if (process.env.NODE_ENV !== 'production' && cloneColumns.filter(function (c) {\n return c === EXPAND_COLUMN;\n }).length > 1) {\n warning(false, 'There exist more than one `EXPAND_COLUMN` in `columns`.');\n }\n var expandColumnIndex = cloneColumns.indexOf(EXPAND_COLUMN);\n cloneColumns = cloneColumns.filter(function (column, index) {\n return column !== EXPAND_COLUMN || index === expandColumnIndex;\n });\n\n // >>> Check if expand column need to fixed\n var prevColumn = baseColumns[expandColumnIndex];\n var fixedColumn;\n if ((fixed === 'left' || fixed) && !expandIconColumnIndex) {\n fixedColumn = 'left';\n } else if ((fixed === 'right' || fixed) && expandIconColumnIndex === baseColumns.length) {\n fixedColumn = 'right';\n } else {\n fixedColumn = prevColumn ? prevColumn.fixed : null;\n }\n\n // >>> Create expandable column\n var expandColumn = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, INTERNAL_COL_DEFINE, {\n className: \"\".concat(prefixCls, \"-expand-icon-col\"),\n columnType: 'EXPAND_COLUMN'\n }), \"title\", columnTitle), \"fixed\", fixedColumn), \"className\", \"\".concat(prefixCls, \"-row-expand-icon-cell\")), \"width\", columnWidth), \"render\", function render(_, record, index) {\n var rowKey = getRowKey(record, index);\n var expanded = expandedKeys.has(rowKey);\n var recordExpandable = rowExpandable ? rowExpandable(record) : true;\n var icon = expandIcon({\n prefixCls: prefixCls,\n expanded: expanded,\n expandable: recordExpandable,\n record: record,\n onExpand: onTriggerExpand\n });\n if (expandRowByClick) {\n return /*#__PURE__*/React.createElement(\"span\", {\n onClick: function onClick(e) {\n return e.stopPropagation();\n }\n }, icon);\n }\n return icon;\n });\n return cloneColumns.map(function (col) {\n return col === EXPAND_COLUMN ? expandColumn : col;\n });\n }\n if (process.env.NODE_ENV !== 'production' && baseColumns.includes(EXPAND_COLUMN)) {\n warning(false, '`expandable` is not config but there exist `EXPAND_COLUMN` in `columns`.');\n }\n return baseColumns.filter(function (col) {\n return col !== EXPAND_COLUMN;\n });\n }, [expandable, baseColumns, getRowKey, expandedKeys, expandIcon, direction]);\n\n // ========================= Transform ========================\n var mergedColumns = React.useMemo(function () {\n var finalColumns = withExpandColumns;\n if (transformColumns) {\n finalColumns = transformColumns(finalColumns);\n }\n\n // Always provides at least one column for table display\n if (!finalColumns.length) {\n finalColumns = [{\n render: function render() {\n return null;\n }\n }];\n }\n return finalColumns;\n }, [transformColumns, withExpandColumns, direction]);\n\n // ========================== Flatten =========================\n var flattenColumns = React.useMemo(function () {\n if (direction === 'rtl') {\n return revertForRtl(flatColumns(mergedColumns));\n }\n return flatColumns(mergedColumns);\n }, [mergedColumns, direction, scrollWidth]);\n\n // Only check out of production since it's waste for each render\n if (process.env.NODE_ENV !== 'production') {\n warningFixed(direction === 'rtl' ? flattenColumns.slice().reverse() : flattenColumns);\n }\n\n // ========================= FillWidth ========================\n var _useWidthColumns = useWidthColumns(flattenColumns, scrollWidth, clientWidth),\n _useWidthColumns2 = _slicedToArray(_useWidthColumns, 2),\n filledColumns = _useWidthColumns2[0],\n realScrollWidth = _useWidthColumns2[1];\n return [mergedColumns, filledColumns, realScrollWidth];\n}\nexport default useColumns;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nexport function renderExpandIcon(_ref) {\n var prefixCls = _ref.prefixCls,\n record = _ref.record,\n onExpand = _ref.onExpand,\n expanded = _ref.expanded,\n expandable = _ref.expandable;\n var expandClassName = \"\".concat(prefixCls, \"-row-expand-icon\");\n if (!expandable) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(expandClassName, \"\".concat(prefixCls, \"-row-spaced\"))\n });\n }\n var onClick = function onClick(event) {\n onExpand(record, event);\n event.stopPropagation();\n };\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(expandClassName, _defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-row-expanded\"), expanded), \"\".concat(prefixCls, \"-row-collapsed\"), !expanded)),\n onClick: onClick\n });\n}\nexport function findAllChildrenKeys(data, getRowKey, childrenColumnName) {\n var keys = [];\n function dig(list) {\n (list || []).forEach(function (item, index) {\n keys.push(getRowKey(item, index));\n dig(item[childrenColumnName]);\n });\n }\n dig(data);\n return keys;\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { INTERNAL_HOOKS } from \"../constant\";\nimport { findAllChildrenKeys, renderExpandIcon } from \"../utils/expandUtil\";\nimport { getExpandableProps } from \"../utils/legacyUtil\";\nexport default function useExpand(props, mergedData, getRowKey) {\n var expandableConfig = getExpandableProps(props);\n var expandIcon = expandableConfig.expandIcon,\n expandedRowKeys = expandableConfig.expandedRowKeys,\n defaultExpandedRowKeys = expandableConfig.defaultExpandedRowKeys,\n defaultExpandAllRows = expandableConfig.defaultExpandAllRows,\n expandedRowRender = expandableConfig.expandedRowRender,\n onExpand = expandableConfig.onExpand,\n onExpandedRowsChange = expandableConfig.onExpandedRowsChange,\n childrenColumnName = expandableConfig.childrenColumnName;\n var mergedExpandIcon = expandIcon || renderExpandIcon;\n var mergedChildrenColumnName = childrenColumnName || 'children';\n var expandableType = React.useMemo(function () {\n if (expandedRowRender) {\n return 'row';\n }\n /* eslint-disable no-underscore-dangle */\n /**\n * Fix https://github.com/ant-design/ant-design/issues/21154\n * This is a workaround to not to break current behavior.\n * We can remove follow code after final release.\n *\n * To other developer:\n * Do not use `__PARENT_RENDER_ICON__` in prod since we will remove this when refactor\n */\n if (props.expandable && props.internalHooks === INTERNAL_HOOKS && props.expandable.__PARENT_RENDER_ICON__ || mergedData.some(function (record) {\n return record && _typeof(record) === 'object' && record[mergedChildrenColumnName];\n })) {\n return 'nest';\n }\n /* eslint-enable */\n return false;\n }, [!!expandedRowRender, mergedData]);\n var _React$useState = React.useState(function () {\n if (defaultExpandedRowKeys) {\n return defaultExpandedRowKeys;\n }\n if (defaultExpandAllRows) {\n return findAllChildrenKeys(mergedData, getRowKey, mergedChildrenColumnName);\n }\n return [];\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerExpandedKeys = _React$useState2[0],\n setInnerExpandedKeys = _React$useState2[1];\n var mergedExpandedKeys = React.useMemo(function () {\n return new Set(expandedRowKeys || innerExpandedKeys || []);\n }, [expandedRowKeys, innerExpandedKeys]);\n var onTriggerExpand = React.useCallback(function (record) {\n var key = getRowKey(record, mergedData.indexOf(record));\n var newExpandedKeys;\n var hasKey = mergedExpandedKeys.has(key);\n if (hasKey) {\n mergedExpandedKeys.delete(key);\n newExpandedKeys = _toConsumableArray(mergedExpandedKeys);\n } else {\n newExpandedKeys = [].concat(_toConsumableArray(mergedExpandedKeys), [key]);\n }\n setInnerExpandedKeys(newExpandedKeys);\n if (onExpand) {\n onExpand(!hasKey, record);\n }\n if (onExpandedRowsChange) {\n onExpandedRowsChange(newExpandedKeys);\n }\n }, [getRowKey, mergedExpandedKeys, mergedData, onExpand, onExpandedRowsChange]);\n\n // Warning if use `expandedRowRender` and nest children in the same time\n if (process.env.NODE_ENV !== 'production' && expandedRowRender && mergedData.some(function (record) {\n return Array.isArray(record === null || record === void 0 ? void 0 : record[mergedChildrenColumnName]);\n })) {\n warning(false, '`expandedRowRender` should not use with nested Table');\n }\n return [expandableConfig, expandableType, mergedExpandedKeys, mergedExpandIcon, mergedChildrenColumnName, onTriggerExpand];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useRef, useState, useEffect } from 'react';\n/**\n * Execute code before next frame but async\n */\nexport function useLayoutState(defaultState) {\n var stateRef = useRef(defaultState);\n var _useState = useState({}),\n _useState2 = _slicedToArray(_useState, 2),\n forceUpdate = _useState2[1];\n var lastPromiseRef = useRef(null);\n var updateBatchRef = useRef([]);\n function setFrameState(updater) {\n updateBatchRef.current.push(updater);\n var promise = Promise.resolve();\n lastPromiseRef.current = promise;\n promise.then(function () {\n if (lastPromiseRef.current === promise) {\n var prevBatch = updateBatchRef.current;\n var prevState = stateRef.current;\n updateBatchRef.current = [];\n prevBatch.forEach(function (batchUpdater) {\n stateRef.current = batchUpdater(stateRef.current);\n });\n lastPromiseRef.current = null;\n if (prevState !== stateRef.current) {\n forceUpdate({});\n }\n }\n });\n }\n useEffect(function () {\n return function () {\n lastPromiseRef.current = null;\n };\n }, []);\n return [stateRef.current, setFrameState];\n}\n\n/** Lock frame, when frame pass reset the lock. */\nexport function useTimeoutLock(defaultState) {\n var frameRef = useRef(defaultState || null);\n var timeoutRef = useRef();\n function cleanUp() {\n window.clearTimeout(timeoutRef.current);\n }\n function setState(newState) {\n frameRef.current = newState;\n cleanUp();\n timeoutRef.current = window.setTimeout(function () {\n frameRef.current = null;\n timeoutRef.current = undefined;\n }, 100);\n }\n function getState() {\n return frameRef.current;\n }\n useEffect(function () {\n return cleanUp;\n }, []);\n return [setState, getState];\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\n// fix ssr render\nvar defaultContainer = canUseDom() ? window : null;\n\n/** Sticky header hooks */\nexport default function useSticky(sticky, prefixCls) {\n var _ref = _typeof(sticky) === 'object' ? sticky : {},\n _ref$offsetHeader = _ref.offsetHeader,\n offsetHeader = _ref$offsetHeader === void 0 ? 0 : _ref$offsetHeader,\n _ref$offsetSummary = _ref.offsetSummary,\n offsetSummary = _ref$offsetSummary === void 0 ? 0 : _ref$offsetSummary,\n _ref$offsetScroll = _ref.offsetScroll,\n offsetScroll = _ref$offsetScroll === void 0 ? 0 : _ref$offsetScroll,\n _ref$getContainer = _ref.getContainer,\n getContainer = _ref$getContainer === void 0 ? function () {\n return defaultContainer;\n } : _ref$getContainer;\n var container = getContainer() || defaultContainer;\n return React.useMemo(function () {\n var isSticky = !!sticky;\n return {\n isSticky: isSticky,\n stickyClassName: isSticky ? \"\".concat(prefixCls, \"-sticky-holder\") : '',\n offsetHeader: offsetHeader,\n offsetSummary: offsetSummary,\n offsetScroll: offsetScroll,\n container: container\n };\n }, [offsetScroll, offsetHeader, offsetSummary, prefixCls, container]);\n}","import { useMemo } from 'react';\n/**\n * Get sticky column offset width\n */\nfunction useStickyOffsets(colWidths, columnCount, direction) {\n var stickyOffsets = useMemo(function () {\n var leftOffsets = [];\n var rightOffsets = [];\n var left = 0;\n var right = 0;\n for (var start = 0; start < columnCount; start += 1) {\n if (direction === 'rtl') {\n // Left offset\n rightOffsets[start] = right;\n right += colWidths[start] || 0;\n\n // Right offset\n var end = columnCount - start - 1;\n leftOffsets[end] = left;\n left += colWidths[end] || 0;\n } else {\n // Left offset\n leftOffsets[start] = left;\n left += colWidths[start] || 0;\n\n // Right offset\n var _end = columnCount - start - 1;\n rightOffsets[_end] = right;\n right += colWidths[_end] || 0;\n }\n }\n return {\n left: leftOffsets,\n right: rightOffsets\n };\n }, [colWidths, columnCount, direction]);\n return stickyOffsets;\n}\nexport default useStickyOffsets;","import * as React from 'react';\nfunction Panel(_ref) {\n var className = _ref.className,\n children = _ref.children;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className\n }, children);\n}\nexport default Panel;","import ReactDOM from 'react-dom';\nexport default function addEventListenerWrap(target, eventType, cb, option) {\n /* eslint camelcase: 2 */\n var callback = ReactDOM.unstable_batchedUpdates ? function run(e) {\n ReactDOM.unstable_batchedUpdates(cb, e);\n } : cb;\n if (target !== null && target !== void 0 && target.addEventListener) {\n target.addEventListener(eventType, callback, option);\n }\n return {\n remove: function remove() {\n if (target !== null && target !== void 0 && target.removeEventListener) {\n target.removeEventListener(eventType, callback, option);\n }\n }\n };\n}","/* eslint-disable no-nested-ternary */\nvar PIXEL_PATTERN = /margin|padding|width|height|max|min|offset/;\nvar removePixel = {\n left: true,\n top: true\n};\nvar floatMap = {\n cssFloat: 1,\n styleFloat: 1,\n float: 1\n};\nfunction getComputedStyle(node) {\n return node.nodeType === 1 ? node.ownerDocument.defaultView.getComputedStyle(node, null) : {};\n}\nfunction getStyleValue(node, type, value) {\n type = type.toLowerCase();\n if (value === 'auto') {\n if (type === 'height') {\n return node.offsetHeight;\n }\n if (type === 'width') {\n return node.offsetWidth;\n }\n }\n if (!(type in removePixel)) {\n removePixel[type] = PIXEL_PATTERN.test(type);\n }\n return removePixel[type] ? parseFloat(value) || 0 : value;\n}\nexport function get(node, name) {\n var length = arguments.length;\n var style = getComputedStyle(node);\n name = floatMap[name] ? 'cssFloat' in node.style ? 'cssFloat' : 'styleFloat' : name;\n return length === 1 ? style : getStyleValue(node, name, style[name] || node.style[name]);\n}\nexport function set(node, name, value) {\n var length = arguments.length;\n name = floatMap[name] ? 'cssFloat' in node.style ? 'cssFloat' : 'styleFloat' : name;\n if (length === 3) {\n if (typeof value === 'number' && PIXEL_PATTERN.test(name)) {\n value = \"\".concat(value, \"px\");\n }\n node.style[name] = value; // Number\n return value;\n }\n for (var x in name) {\n if (name.hasOwnProperty(x)) {\n set(node, x, name[x]);\n }\n }\n return getComputedStyle(node);\n}\nexport function getOuterWidth(el) {\n if (el === document.body) {\n return document.documentElement.clientWidth;\n }\n return el.offsetWidth;\n}\nexport function getOuterHeight(el) {\n if (el === document.body) {\n return window.innerHeight || document.documentElement.clientHeight;\n }\n return el.offsetHeight;\n}\nexport function getDocSize() {\n var width = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth);\n var height = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n return {\n width: width,\n height: height\n };\n}\nexport function getClientSize() {\n var width = document.documentElement.clientWidth;\n var height = window.innerHeight || document.documentElement.clientHeight;\n return {\n width: width,\n height: height\n };\n}\nexport function getScroll() {\n return {\n scrollLeft: Math.max(document.documentElement.scrollLeft, document.body.scrollLeft),\n scrollTop: Math.max(document.documentElement.scrollTop, document.body.scrollTop)\n };\n}\nexport function getOffset(node) {\n var box = node.getBoundingClientRect();\n var docElem = document.documentElement;\n\n // < ie8 不支持 win.pageXOffset, 则使用 docElem.scrollLeft\n return {\n left: box.left + (window.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || document.body.clientLeft || 0),\n top: box.top + (window.pageYOffset || docElem.scrollTop) - (docElem.clientTop || document.body.clientTop || 0)\n };\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useContext } from '@rc-component/context';\nimport classNames from 'classnames';\nimport addEventListener from \"rc-util/es/Dom/addEventListener\";\nimport { getOffset } from \"rc-util/es/Dom/css\";\nimport getScrollBarSize from \"rc-util/es/getScrollBarSize\";\nimport * as React from 'react';\nimport TableContext from \"./context/TableContext\";\nimport { useLayoutState } from \"./hooks/useFrame\";\nvar StickyScrollBar = function StickyScrollBar(_ref, ref) {\n var _scrollBodyRef$curren, _scrollBodyRef$curren2;\n var scrollBodyRef = _ref.scrollBodyRef,\n onScroll = _ref.onScroll,\n offsetScroll = _ref.offsetScroll,\n container = _ref.container;\n var prefixCls = useContext(TableContext, 'prefixCls');\n var bodyScrollWidth = ((_scrollBodyRef$curren = scrollBodyRef.current) === null || _scrollBodyRef$curren === void 0 ? void 0 : _scrollBodyRef$curren.scrollWidth) || 0;\n var bodyWidth = ((_scrollBodyRef$curren2 = scrollBodyRef.current) === null || _scrollBodyRef$curren2 === void 0 ? void 0 : _scrollBodyRef$curren2.clientWidth) || 0;\n var scrollBarWidth = bodyScrollWidth && bodyWidth * (bodyWidth / bodyScrollWidth);\n var scrollBarRef = React.useRef();\n var _useLayoutState = useLayoutState({\n scrollLeft: 0,\n isHiddenScrollBar: false\n }),\n _useLayoutState2 = _slicedToArray(_useLayoutState, 2),\n scrollState = _useLayoutState2[0],\n setScrollState = _useLayoutState2[1];\n var refState = React.useRef({\n delta: 0,\n x: 0\n });\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n isActive = _React$useState2[0],\n setActive = _React$useState2[1];\n var onMouseUp = function onMouseUp() {\n setActive(false);\n };\n var onMouseDown = function onMouseDown(event) {\n event.persist();\n refState.current.delta = event.pageX - scrollState.scrollLeft;\n refState.current.x = 0;\n setActive(true);\n event.preventDefault();\n };\n var onMouseMove = function onMouseMove(event) {\n var _window;\n // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\n var _ref2 = event || ((_window = window) === null || _window === void 0 ? void 0 : _window.event),\n buttons = _ref2.buttons;\n if (!isActive || buttons === 0) {\n // If out body mouse up, we can set isActive false when mouse move\n if (isActive) {\n setActive(false);\n }\n return;\n }\n var left = refState.current.x + event.pageX - refState.current.x - refState.current.delta;\n if (left <= 0) {\n left = 0;\n }\n if (left + scrollBarWidth >= bodyWidth) {\n left = bodyWidth - scrollBarWidth;\n }\n onScroll({\n scrollLeft: left / bodyWidth * (bodyScrollWidth + 2)\n });\n refState.current.x = event.pageX;\n };\n var onContainerScroll = function onContainerScroll() {\n if (!scrollBodyRef.current) {\n return;\n }\n var tableOffsetTop = getOffset(scrollBodyRef.current).top;\n var tableBottomOffset = tableOffsetTop + scrollBodyRef.current.offsetHeight;\n var currentClientOffset = container === window ? document.documentElement.scrollTop + window.innerHeight : getOffset(container).top + container.clientHeight;\n if (tableBottomOffset - getScrollBarSize() <= currentClientOffset || tableOffsetTop >= currentClientOffset - offsetScroll) {\n setScrollState(function (state) {\n return _objectSpread(_objectSpread({}, state), {}, {\n isHiddenScrollBar: true\n });\n });\n } else {\n setScrollState(function (state) {\n return _objectSpread(_objectSpread({}, state), {}, {\n isHiddenScrollBar: false\n });\n });\n }\n };\n var setScrollLeft = function setScrollLeft(left) {\n setScrollState(function (state) {\n return _objectSpread(_objectSpread({}, state), {}, {\n scrollLeft: left / bodyScrollWidth * bodyWidth || 0\n });\n });\n };\n React.useImperativeHandle(ref, function () {\n return {\n setScrollLeft: setScrollLeft\n };\n });\n React.useEffect(function () {\n var onMouseUpListener = addEventListener(document.body, 'mouseup', onMouseUp, false);\n var onMouseMoveListener = addEventListener(document.body, 'mousemove', onMouseMove, false);\n onContainerScroll();\n return function () {\n onMouseUpListener.remove();\n onMouseMoveListener.remove();\n };\n }, [scrollBarWidth, isActive]);\n React.useEffect(function () {\n var onScrollListener = addEventListener(container, 'scroll', onContainerScroll, false);\n var onResizeListener = addEventListener(window, 'resize', onContainerScroll, false);\n return function () {\n onScrollListener.remove();\n onResizeListener.remove();\n };\n }, [container]);\n React.useEffect(function () {\n if (!scrollState.isHiddenScrollBar) {\n setScrollState(function (state) {\n var bodyNode = scrollBodyRef.current;\n if (!bodyNode) {\n return state;\n }\n return _objectSpread(_objectSpread({}, state), {}, {\n scrollLeft: bodyNode.scrollLeft / bodyNode.scrollWidth * bodyNode.clientWidth\n });\n });\n }\n }, [scrollState.isHiddenScrollBar]);\n if (bodyScrollWidth <= bodyWidth || !scrollBarWidth || scrollState.isHiddenScrollBar) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n style: {\n height: getScrollBarSize(),\n width: bodyWidth,\n bottom: offsetScroll\n },\n className: \"\".concat(prefixCls, \"-sticky-scroll\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n onMouseDown: onMouseDown,\n ref: scrollBarRef,\n className: classNames(\"\".concat(prefixCls, \"-sticky-scroll-bar\"), _defineProperty({}, \"\".concat(prefixCls, \"-sticky-scroll-bar-active\"), isActive)),\n style: {\n width: \"\".concat(scrollBarWidth, \"px\"),\n transform: \"translate3d(\".concat(scrollState.scrollLeft, \"px, 0, 0)\")\n }\n }));\n};\nexport default /*#__PURE__*/React.forwardRef(StickyScrollBar);","/* istanbul ignore next */\n/**\n * This is a syntactic sugar for `columns` prop.\n * So HOC will not work on this.\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction Column(_) {\n return null;\n}\nexport default Column;","/* istanbul ignore next */\n/**\n * This is a syntactic sugar for `columns` prop.\n * So HOC will not work on this.\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction ColumnGroup(_) {\n return null;\n}\nexport default ColumnGroup;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n/**\n * Feature:\n * - fixed not need to set width\n * - support `rowExpandable` to config row expand logic\n * - add `summary` to support `() => ReactNode`\n *\n * Update:\n * - `dataIndex` is `array[]` now\n * - `expandable` wrap all the expand related props\n *\n * Removed:\n * - expandIconAsCell\n * - useFixedHeader\n * - rowRef\n * - columns[number].onCellClick\n * - onRowClick\n * - onRowDoubleClick\n * - onRowMouseEnter\n * - onRowMouseLeave\n * - getBodyWrapper\n * - bodyStyle\n *\n * Deprecated:\n * - All expanded props, move into expandable\n */\n\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nimport { isStyleSupport } from \"rc-util/es/Dom/styleChecker\";\nimport { getTargetScrollBarSize } from \"rc-util/es/getScrollBarSize\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport getValue from \"rc-util/es/utils/get\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport Body from \"./Body\";\nimport ColGroup from \"./ColGroup\";\nimport { EXPAND_COLUMN, INTERNAL_HOOKS } from \"./constant\";\nimport TableContext, { makeImmutable } from \"./context/TableContext\";\nimport FixedHolder from \"./FixedHolder\";\nimport Footer, { FooterComponents } from \"./Footer\";\nimport Summary from \"./Footer/Summary\";\nimport Header from \"./Header/Header\";\nimport useColumns from \"./hooks/useColumns\";\nimport useExpand from \"./hooks/useExpand\";\nimport useFixedInfo from \"./hooks/useFixedInfo\";\nimport { useLayoutState, useTimeoutLock } from \"./hooks/useFrame\";\nimport useHover from \"./hooks/useHover\";\nimport useSticky from \"./hooks/useSticky\";\nimport useStickyOffsets from \"./hooks/useStickyOffsets\";\nimport Panel from \"./Panel\";\nimport StickyScrollBar from \"./stickyScrollBar\";\nimport Column from \"./sugar/Column\";\nimport ColumnGroup from \"./sugar/ColumnGroup\";\nimport { getColumnsKey, validateValue } from \"./utils/valueUtil\";\nexport var DEFAULT_PREFIX = 'rc-table';\n\n// Used for conditions cache\nvar EMPTY_DATA = [];\n\n// Used for customize scroll\nvar EMPTY_SCROLL_TARGET = {};\nfunction defaultEmpty() {\n return 'No Data';\n}\nfunction Table(tableProps, ref) {\n var props = _objectSpread({\n rowKey: 'key',\n prefixCls: DEFAULT_PREFIX,\n emptyText: defaultEmpty\n }, tableProps);\n var prefixCls = props.prefixCls,\n className = props.className,\n rowClassName = props.rowClassName,\n style = props.style,\n data = props.data,\n rowKey = props.rowKey,\n scroll = props.scroll,\n tableLayout = props.tableLayout,\n direction = props.direction,\n title = props.title,\n footer = props.footer,\n summary = props.summary,\n caption = props.caption,\n id = props.id,\n showHeader = props.showHeader,\n components = props.components,\n emptyText = props.emptyText,\n onRow = props.onRow,\n onHeaderRow = props.onHeaderRow,\n internalHooks = props.internalHooks,\n transformColumns = props.transformColumns,\n internalRefs = props.internalRefs,\n tailor = props.tailor,\n getContainerWidth = props.getContainerWidth,\n sticky = props.sticky;\n var mergedData = data || EMPTY_DATA;\n var hasData = !!mergedData.length;\n var useInternalHooks = internalHooks === INTERNAL_HOOKS;\n\n // ===================== Warning ======================\n if (process.env.NODE_ENV !== 'production') {\n ['onRowClick', 'onRowDoubleClick', 'onRowContextMenu', 'onRowMouseEnter', 'onRowMouseLeave'].forEach(function (name) {\n warning(props[name] === undefined, \"`\".concat(name, \"` is removed, please use `onRow` instead.\"));\n });\n warning(!('getBodyWrapper' in props), '`getBodyWrapper` is deprecated, please use custom `components` instead.');\n }\n\n // ==================== Customize =====================\n var getComponent = React.useCallback(function (path, defaultComponent) {\n return getValue(components, path) || defaultComponent;\n }, [components]);\n var getRowKey = React.useMemo(function () {\n if (typeof rowKey === 'function') {\n return rowKey;\n }\n return function (record) {\n var key = record && record[rowKey];\n if (process.env.NODE_ENV !== 'production') {\n warning(key !== undefined, 'Each record in table should have a unique `key` prop, or set `rowKey` to an unique primary key.');\n }\n return key;\n };\n }, [rowKey]);\n var customizeScrollBody = getComponent(['body']);\n\n // ====================== Hover =======================\n var _useHover = useHover(),\n _useHover2 = _slicedToArray(_useHover, 3),\n startRow = _useHover2[0],\n endRow = _useHover2[1],\n onHover = _useHover2[2];\n\n // ====================== Expand ======================\n var _useExpand = useExpand(props, mergedData, getRowKey),\n _useExpand2 = _slicedToArray(_useExpand, 6),\n expandableConfig = _useExpand2[0],\n expandableType = _useExpand2[1],\n mergedExpandedKeys = _useExpand2[2],\n mergedExpandIcon = _useExpand2[3],\n mergedChildrenColumnName = _useExpand2[4],\n onTriggerExpand = _useExpand2[5];\n\n // ====================== Column ======================\n var scrollX = scroll === null || scroll === void 0 ? void 0 : scroll.x;\n var _React$useState = React.useState(0),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n componentWidth = _React$useState2[0],\n setComponentWidth = _React$useState2[1];\n var _useColumns = useColumns(_objectSpread(_objectSpread(_objectSpread({}, props), expandableConfig), {}, {\n expandable: !!expandableConfig.expandedRowRender,\n columnTitle: expandableConfig.columnTitle,\n expandedKeys: mergedExpandedKeys,\n getRowKey: getRowKey,\n // https://github.com/ant-design/ant-design/issues/23894\n onTriggerExpand: onTriggerExpand,\n expandIcon: mergedExpandIcon,\n expandIconColumnIndex: expandableConfig.expandIconColumnIndex,\n direction: direction,\n scrollWidth: useInternalHooks && tailor && typeof scrollX === 'number' ? scrollX : null,\n clientWidth: componentWidth\n }), useInternalHooks ? transformColumns : null),\n _useColumns2 = _slicedToArray(_useColumns, 3),\n columns = _useColumns2[0],\n flattenColumns = _useColumns2[1],\n flattenScrollX = _useColumns2[2];\n var mergedScrollX = flattenScrollX !== null && flattenScrollX !== void 0 ? flattenScrollX : scrollX;\n var columnContext = React.useMemo(function () {\n return {\n columns: columns,\n flattenColumns: flattenColumns\n };\n }, [columns, flattenColumns]);\n\n // ======================= Refs =======================\n var fullTableRef = React.useRef();\n var scrollHeaderRef = React.useRef();\n var scrollBodyRef = React.useRef();\n var scrollBodyContainerRef = React.useRef();\n React.useImperativeHandle(ref, function () {\n return {\n nativeElement: fullTableRef.current,\n scrollTo: function scrollTo(config) {\n var _scrollBodyRef$curren3;\n if (scrollBodyRef.current instanceof HTMLElement) {\n // Native scroll\n var index = config.index,\n top = config.top,\n key = config.key;\n if (top) {\n var _scrollBodyRef$curren;\n (_scrollBodyRef$curren = scrollBodyRef.current) === null || _scrollBodyRef$curren === void 0 || _scrollBodyRef$curren.scrollTo({\n top: top\n });\n } else {\n var _scrollBodyRef$curren2;\n var mergedKey = key !== null && key !== void 0 ? key : getRowKey(mergedData[index]);\n (_scrollBodyRef$curren2 = scrollBodyRef.current.querySelector(\"[data-row-key=\\\"\".concat(mergedKey, \"\\\"]\"))) === null || _scrollBodyRef$curren2 === void 0 || _scrollBodyRef$curren2.scrollIntoView();\n }\n } else if ((_scrollBodyRef$curren3 = scrollBodyRef.current) !== null && _scrollBodyRef$curren3 !== void 0 && _scrollBodyRef$curren3.scrollTo) {\n // Pass to proxy\n scrollBodyRef.current.scrollTo(config);\n }\n }\n };\n });\n\n // ====================== Scroll ======================\n var scrollSummaryRef = React.useRef();\n var _React$useState3 = React.useState(false),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n pingedLeft = _React$useState4[0],\n setPingedLeft = _React$useState4[1];\n var _React$useState5 = React.useState(false),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n pingedRight = _React$useState6[0],\n setPingedRight = _React$useState6[1];\n var _useLayoutState = useLayoutState(new Map()),\n _useLayoutState2 = _slicedToArray(_useLayoutState, 2),\n colsWidths = _useLayoutState2[0],\n updateColsWidths = _useLayoutState2[1];\n\n // Convert map to number width\n var colsKeys = getColumnsKey(flattenColumns);\n var pureColWidths = colsKeys.map(function (columnKey) {\n return colsWidths.get(columnKey);\n });\n var colWidths = React.useMemo(function () {\n return pureColWidths;\n }, [pureColWidths.join('_')]);\n var stickyOffsets = useStickyOffsets(colWidths, flattenColumns.length, direction);\n var fixHeader = scroll && validateValue(scroll.y);\n var horizonScroll = scroll && validateValue(mergedScrollX) || Boolean(expandableConfig.fixed);\n var fixColumn = horizonScroll && flattenColumns.some(function (_ref) {\n var fixed = _ref.fixed;\n return fixed;\n });\n\n // Sticky\n var stickyRef = React.useRef();\n var _useSticky = useSticky(sticky, prefixCls),\n isSticky = _useSticky.isSticky,\n offsetHeader = _useSticky.offsetHeader,\n offsetSummary = _useSticky.offsetSummary,\n offsetScroll = _useSticky.offsetScroll,\n stickyClassName = _useSticky.stickyClassName,\n container = _useSticky.container;\n\n // Footer (Fix footer must fixed header)\n var summaryNode = React.useMemo(function () {\n return summary === null || summary === void 0 ? void 0 : summary(mergedData);\n }, [summary, mergedData]);\n var fixFooter = (fixHeader || isSticky) && /*#__PURE__*/React.isValidElement(summaryNode) && summaryNode.type === Summary && summaryNode.props.fixed;\n\n // Scroll\n var scrollXStyle;\n var scrollYStyle;\n var scrollTableStyle;\n if (fixHeader) {\n scrollYStyle = {\n overflowY: 'scroll',\n maxHeight: scroll.y\n };\n }\n if (horizonScroll) {\n scrollXStyle = {\n overflowX: 'auto'\n };\n // When no vertical scrollbar, should hide it\n // https://github.com/ant-design/ant-design/pull/20705\n // https://github.com/ant-design/ant-design/issues/21879\n if (!fixHeader) {\n scrollYStyle = {\n overflowY: 'hidden'\n };\n }\n scrollTableStyle = {\n width: mergedScrollX === true ? 'auto' : mergedScrollX,\n minWidth: '100%'\n };\n }\n var onColumnResize = React.useCallback(function (columnKey, width) {\n if (isVisible(fullTableRef.current)) {\n updateColsWidths(function (widths) {\n if (widths.get(columnKey) !== width) {\n var newWidths = new Map(widths);\n newWidths.set(columnKey, width);\n return newWidths;\n }\n return widths;\n });\n }\n }, []);\n var _useTimeoutLock = useTimeoutLock(null),\n _useTimeoutLock2 = _slicedToArray(_useTimeoutLock, 2),\n setScrollTarget = _useTimeoutLock2[0],\n getScrollTarget = _useTimeoutLock2[1];\n function forceScroll(scrollLeft, target) {\n if (!target) {\n return;\n }\n if (typeof target === 'function') {\n target(scrollLeft);\n } else if (target.scrollLeft !== scrollLeft) {\n target.scrollLeft = scrollLeft;\n\n // Delay to force scroll position if not sync\n // ref: https://github.com/ant-design/ant-design/issues/37179\n if (target.scrollLeft !== scrollLeft) {\n setTimeout(function () {\n target.scrollLeft = scrollLeft;\n }, 0);\n }\n }\n }\n var onScroll = useEvent(function (_ref2) {\n var currentTarget = _ref2.currentTarget,\n scrollLeft = _ref2.scrollLeft;\n var isRTL = direction === 'rtl';\n var mergedScrollLeft = typeof scrollLeft === 'number' ? scrollLeft : currentTarget.scrollLeft;\n var compareTarget = currentTarget || EMPTY_SCROLL_TARGET;\n if (!getScrollTarget() || getScrollTarget() === compareTarget) {\n var _stickyRef$current;\n setScrollTarget(compareTarget);\n forceScroll(mergedScrollLeft, scrollHeaderRef.current);\n forceScroll(mergedScrollLeft, scrollBodyRef.current);\n forceScroll(mergedScrollLeft, scrollSummaryRef.current);\n forceScroll(mergedScrollLeft, (_stickyRef$current = stickyRef.current) === null || _stickyRef$current === void 0 ? void 0 : _stickyRef$current.setScrollLeft);\n }\n var measureTarget = currentTarget || scrollHeaderRef.current;\n if (measureTarget) {\n var scrollWidth = measureTarget.scrollWidth,\n clientWidth = measureTarget.clientWidth;\n // There is no space to scroll\n if (scrollWidth === clientWidth) {\n setPingedLeft(false);\n setPingedRight(false);\n return;\n }\n if (isRTL) {\n setPingedLeft(-mergedScrollLeft < scrollWidth - clientWidth);\n setPingedRight(-mergedScrollLeft > 0);\n } else {\n setPingedLeft(mergedScrollLeft > 0);\n setPingedRight(mergedScrollLeft < scrollWidth - clientWidth);\n }\n }\n });\n var triggerOnScroll = function triggerOnScroll() {\n if (horizonScroll && scrollBodyRef.current) {\n onScroll({\n currentTarget: scrollBodyRef.current\n });\n } else {\n setPingedLeft(false);\n setPingedRight(false);\n }\n };\n var onFullTableResize = function onFullTableResize(_ref3) {\n var width = _ref3.width;\n var mergedWidth = fullTableRef.current ? fullTableRef.current.offsetWidth : width;\n if (useInternalHooks && getContainerWidth && fullTableRef.current) {\n mergedWidth = getContainerWidth(fullTableRef.current, mergedWidth) || mergedWidth;\n }\n if (mergedWidth !== componentWidth) {\n triggerOnScroll();\n setComponentWidth(mergedWidth);\n }\n };\n\n // Sync scroll bar when init or `horizonScroll`, `data` and `columns.length` changed\n var mounted = React.useRef(false);\n React.useEffect(function () {\n // onFullTableResize will be trigger once when ResizeObserver is mounted\n // This will reduce one duplicated triggerOnScroll time\n if (mounted.current) {\n triggerOnScroll();\n }\n }, [horizonScroll, data, columns.length]);\n React.useEffect(function () {\n mounted.current = true;\n }, []);\n\n // ===================== Effects ======================\n var _React$useState7 = React.useState(0),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n scrollbarSize = _React$useState8[0],\n setScrollbarSize = _React$useState8[1];\n var _React$useState9 = React.useState(true),\n _React$useState10 = _slicedToArray(_React$useState9, 2),\n supportSticky = _React$useState10[0],\n setSupportSticky = _React$useState10[1]; // Only IE not support, we mark as support first\n\n React.useEffect(function () {\n if (!tailor || !useInternalHooks) {\n if (scrollBodyRef.current instanceof Element) {\n setScrollbarSize(getTargetScrollBarSize(scrollBodyRef.current).width);\n } else {\n setScrollbarSize(getTargetScrollBarSize(scrollBodyContainerRef.current).width);\n }\n }\n setSupportSticky(isStyleSupport('position', 'sticky'));\n }, []);\n\n // ================== INTERNAL HOOKS ==================\n React.useEffect(function () {\n if (useInternalHooks && internalRefs) {\n internalRefs.body.current = scrollBodyRef.current;\n }\n });\n\n // ========================================================================\n // == Render ==\n // ========================================================================\n // =================== Render: Func ===================\n var renderFixedHeaderTable = React.useCallback(function (fixedHolderPassProps) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Header, fixedHolderPassProps), fixFooter === 'top' && /*#__PURE__*/React.createElement(Footer, fixedHolderPassProps, summaryNode));\n }, [fixFooter, summaryNode]);\n var renderFixedFooterTable = React.useCallback(function (fixedHolderPassProps) {\n return /*#__PURE__*/React.createElement(Footer, fixedHolderPassProps, summaryNode);\n }, [summaryNode]);\n\n // =================== Render: Node ===================\n var TableComponent = getComponent(['table'], 'table');\n\n // Table layout\n var mergedTableLayout = React.useMemo(function () {\n if (tableLayout) {\n return tableLayout;\n }\n // https://github.com/ant-design/ant-design/issues/25227\n // When scroll.x is max-content, no need to fix table layout\n // it's width should stretch out to fit content\n if (fixColumn) {\n return mergedScrollX === 'max-content' ? 'auto' : 'fixed';\n }\n if (fixHeader || isSticky || flattenColumns.some(function (_ref4) {\n var ellipsis = _ref4.ellipsis;\n return ellipsis;\n })) {\n return 'fixed';\n }\n return 'auto';\n }, [fixHeader, fixColumn, flattenColumns, tableLayout, isSticky]);\n var groupTableNode;\n\n // Header props\n var headerProps = {\n colWidths: colWidths,\n columCount: flattenColumns.length,\n stickyOffsets: stickyOffsets,\n onHeaderRow: onHeaderRow,\n fixHeader: fixHeader,\n scroll: scroll\n };\n\n // Empty\n var emptyNode = React.useMemo(function () {\n if (hasData) {\n return null;\n }\n if (typeof emptyText === 'function') {\n return emptyText();\n }\n return emptyText;\n }, [hasData, emptyText]);\n\n // Body\n var bodyTable = /*#__PURE__*/React.createElement(Body, {\n data: mergedData,\n measureColumnWidth: fixHeader || horizonScroll || isSticky\n });\n var bodyColGroup = /*#__PURE__*/React.createElement(ColGroup, {\n colWidths: flattenColumns.map(function (_ref5) {\n var width = _ref5.width;\n return width;\n }),\n columns: flattenColumns\n });\n var captionElement = caption !== null && caption !== undefined ? /*#__PURE__*/React.createElement(\"caption\", {\n className: \"\".concat(prefixCls, \"-caption\")\n }, caption) : undefined;\n var dataProps = pickAttrs(props, {\n data: true\n });\n var ariaProps = pickAttrs(props, {\n aria: true\n });\n if (fixHeader || isSticky) {\n // >>>>>> Fixed Header\n var bodyContent;\n if (typeof customizeScrollBody === 'function') {\n bodyContent = customizeScrollBody(mergedData, {\n scrollbarSize: scrollbarSize,\n ref: scrollBodyRef,\n onScroll: onScroll\n });\n headerProps.colWidths = flattenColumns.map(function (_ref6, index) {\n var width = _ref6.width;\n var colWidth = index === flattenColumns.length - 1 ? width - scrollbarSize : width;\n if (typeof colWidth === 'number' && !Number.isNaN(colWidth)) {\n return colWidth;\n }\n if (process.env.NODE_ENV !== 'production') {\n warning(props.columns.length === 0, 'When use `components.body` with render props. Each column should have a fixed `width` value.');\n }\n return 0;\n });\n } else {\n bodyContent = /*#__PURE__*/React.createElement(\"div\", {\n style: _objectSpread(_objectSpread({}, scrollXStyle), scrollYStyle),\n onScroll: onScroll,\n ref: scrollBodyRef,\n className: classNames(\"\".concat(prefixCls, \"-body\"))\n }, /*#__PURE__*/React.createElement(TableComponent, _extends({\n style: _objectSpread(_objectSpread({}, scrollTableStyle), {}, {\n tableLayout: mergedTableLayout\n })\n }, ariaProps), captionElement, bodyColGroup, bodyTable, !fixFooter && summaryNode && /*#__PURE__*/React.createElement(Footer, {\n stickyOffsets: stickyOffsets,\n flattenColumns: flattenColumns,\n columns: columns\n }, summaryNode)));\n }\n\n // Fixed holder share the props\n var fixedHolderProps = _objectSpread(_objectSpread(_objectSpread({\n noData: !mergedData.length,\n maxContentScroll: horizonScroll && mergedScrollX === 'max-content'\n }, headerProps), columnContext), {}, {\n direction: direction,\n stickyClassName: stickyClassName,\n onScroll: onScroll\n });\n groupTableNode = /*#__PURE__*/React.createElement(React.Fragment, null, showHeader !== false && /*#__PURE__*/React.createElement(FixedHolder, _extends({}, fixedHolderProps, {\n stickyTopOffset: offsetHeader,\n className: \"\".concat(prefixCls, \"-header\"),\n ref: scrollHeaderRef\n }), renderFixedHeaderTable), bodyContent, fixFooter && fixFooter !== 'top' && /*#__PURE__*/React.createElement(FixedHolder, _extends({}, fixedHolderProps, {\n stickyBottomOffset: offsetSummary,\n className: \"\".concat(prefixCls, \"-summary\"),\n ref: scrollSummaryRef\n }), renderFixedFooterTable), isSticky && scrollBodyRef.current && scrollBodyRef.current instanceof Element && /*#__PURE__*/React.createElement(StickyScrollBar, {\n ref: stickyRef,\n offsetScroll: offsetScroll,\n scrollBodyRef: scrollBodyRef,\n onScroll: onScroll,\n container: container\n }));\n } else {\n // >>>>>> Unique table\n groupTableNode = /*#__PURE__*/React.createElement(\"div\", {\n style: _objectSpread(_objectSpread({}, scrollXStyle), scrollYStyle),\n className: classNames(\"\".concat(prefixCls, \"-content\")),\n onScroll: onScroll,\n ref: scrollBodyRef\n }, /*#__PURE__*/React.createElement(TableComponent, _extends({\n style: _objectSpread(_objectSpread({}, scrollTableStyle), {}, {\n tableLayout: mergedTableLayout\n })\n }, ariaProps), captionElement, bodyColGroup, showHeader !== false && /*#__PURE__*/React.createElement(Header, _extends({}, headerProps, columnContext)), bodyTable, summaryNode && /*#__PURE__*/React.createElement(Footer, {\n stickyOffsets: stickyOffsets,\n flattenColumns: flattenColumns,\n columns: columns\n }, summaryNode)));\n }\n var fullTable = /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classNames(prefixCls, className, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), \"\".concat(prefixCls, \"-ping-left\"), pingedLeft), \"\".concat(prefixCls, \"-ping-right\"), pingedRight), \"\".concat(prefixCls, \"-layout-fixed\"), tableLayout === 'fixed'), \"\".concat(prefixCls, \"-fixed-header\"), fixHeader), \"\".concat(prefixCls, \"-fixed-column\"), fixColumn), \"\".concat(prefixCls, \"-scroll-horizontal\"), horizonScroll), \"\".concat(prefixCls, \"-has-fix-left\"), flattenColumns[0] && flattenColumns[0].fixed), \"\".concat(prefixCls, \"-has-fix-right\"), flattenColumns[flattenColumns.length - 1] && flattenColumns[flattenColumns.length - 1].fixed === 'right')),\n style: style,\n id: id,\n ref: fullTableRef\n }, dataProps), title && /*#__PURE__*/React.createElement(Panel, {\n className: \"\".concat(prefixCls, \"-title\")\n }, title(mergedData)), /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollBodyContainerRef,\n className: \"\".concat(prefixCls, \"-container\")\n }, groupTableNode), footer && /*#__PURE__*/React.createElement(Panel, {\n className: \"\".concat(prefixCls, \"-footer\")\n }, footer(mergedData)));\n if (horizonScroll) {\n fullTable = /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onFullTableResize\n }, fullTable);\n }\n var fixedInfoList = useFixedInfo(flattenColumns, stickyOffsets, direction, columns);\n var TableContextValue = React.useMemo(function () {\n return {\n // Scroll\n scrollX: mergedScrollX,\n // Table\n prefixCls: prefixCls,\n getComponent: getComponent,\n scrollbarSize: scrollbarSize,\n direction: direction,\n fixedInfoList: fixedInfoList,\n isSticky: isSticky,\n supportSticky: supportSticky,\n componentWidth: componentWidth,\n fixHeader: fixHeader,\n fixColumn: fixColumn,\n horizonScroll: horizonScroll,\n // Body\n tableLayout: mergedTableLayout,\n rowClassName: rowClassName,\n expandedRowClassName: expandableConfig.expandedRowClassName,\n expandIcon: mergedExpandIcon,\n expandableType: expandableType,\n expandRowByClick: expandableConfig.expandRowByClick,\n expandedRowRender: expandableConfig.expandedRowRender,\n onTriggerExpand: onTriggerExpand,\n expandIconColumnIndex: expandableConfig.expandIconColumnIndex,\n indentSize: expandableConfig.indentSize,\n allColumnsFixedLeft: flattenColumns.every(function (col) {\n return col.fixed === 'left';\n }),\n emptyNode: emptyNode,\n // Column\n columns: columns,\n flattenColumns: flattenColumns,\n onColumnResize: onColumnResize,\n // Row\n hoverStartRow: startRow,\n hoverEndRow: endRow,\n onHover: onHover,\n rowExpandable: expandableConfig.rowExpandable,\n onRow: onRow,\n getRowKey: getRowKey,\n expandedKeys: mergedExpandedKeys,\n childrenColumnName: mergedChildrenColumnName\n };\n }, [\n // Scroll\n mergedScrollX,\n // Table\n prefixCls, getComponent, scrollbarSize, direction, fixedInfoList, isSticky, supportSticky, componentWidth, fixHeader, fixColumn, horizonScroll,\n // Body\n mergedTableLayout, rowClassName, expandableConfig.expandedRowClassName, mergedExpandIcon, expandableType, expandableConfig.expandRowByClick, expandableConfig.expandedRowRender, onTriggerExpand, expandableConfig.expandIconColumnIndex, expandableConfig.indentSize, emptyNode,\n // Column\n columns, flattenColumns, onColumnResize,\n // Row\n startRow, endRow, onHover, expandableConfig.rowExpandable, onRow, getRowKey, mergedExpandedKeys, mergedChildrenColumnName]);\n return /*#__PURE__*/React.createElement(TableContext.Provider, {\n value: TableContextValue\n }, fullTable);\n}\nvar RefTable = /*#__PURE__*/React.forwardRef(Table);\nif (process.env.NODE_ENV !== 'production') {\n RefTable.displayName = 'Table';\n}\nexport function genTable(shouldTriggerRender) {\n return makeImmutable(RefTable, shouldTriggerRender);\n}\nvar ImmutableTable = genTable();\nImmutableTable.EXPAND_COLUMN = EXPAND_COLUMN;\nImmutableTable.INTERNAL_HOOKS = INTERNAL_HOOKS;\nImmutableTable.Column = Column;\nImmutableTable.ColumnGroup = ColumnGroup;\nImmutableTable.Summary = FooterComponents;\nexport default ImmutableTable;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default function useHover() {\n var _React$useState = React.useState(-1),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n startRow = _React$useState2[0],\n setStartRow = _React$useState2[1];\n var _React$useState3 = React.useState(-1),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n endRow = _React$useState4[0],\n setEndRow = _React$useState4[1];\n var onHover = React.useCallback(function (start, end) {\n setStartRow(start);\n setEndRow(end);\n }, []);\n return [startRow, endRow, onHover];\n}","import useMemo from \"rc-util/es/hooks/useMemo\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport { getCellFixedInfo } from \"../utils/fixUtil\";\nexport default function useFixedInfo(flattenColumns, stickyOffsets, direction, columns) {\n var fixedInfoList = flattenColumns.map(function (_, colIndex) {\n return getCellFixedInfo(colIndex, colIndex, flattenColumns, stickyOffsets, direction, columns === null || columns === void 0 ? void 0 : columns[colIndex]);\n });\n return useMemo(function () {\n return fixedInfoList;\n }, [fixedInfoList], function (prev, next) {\n return !isEqual(prev, next);\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport ResizeObserver from 'rc-resize-observer';\nimport classNames from 'classnames';\n/**\n * Fill component to provided the scroll content real height.\n */\nvar Filler = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var height = _ref.height,\n offsetY = _ref.offsetY,\n offsetX = _ref.offsetX,\n children = _ref.children,\n prefixCls = _ref.prefixCls,\n onInnerResize = _ref.onInnerResize,\n innerProps = _ref.innerProps,\n rtl = _ref.rtl,\n extra = _ref.extra;\n var outerStyle = {};\n var innerStyle = {\n display: 'flex',\n flexDirection: 'column'\n };\n if (offsetY !== undefined) {\n var _objectSpread2;\n // Not set `width` since this will break `sticky: right`\n outerStyle = {\n height: height,\n position: 'relative',\n overflow: 'hidden'\n };\n innerStyle = _objectSpread(_objectSpread({}, innerStyle), {}, (_objectSpread2 = {\n transform: \"translateY(\".concat(offsetY, \"px)\")\n }, _defineProperty(_objectSpread2, rtl ? 'marginRight' : 'marginLeft', -offsetX), _defineProperty(_objectSpread2, \"position\", 'absolute'), _defineProperty(_objectSpread2, \"left\", 0), _defineProperty(_objectSpread2, \"right\", 0), _defineProperty(_objectSpread2, \"top\", 0), _objectSpread2));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n style: outerStyle\n }, /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: function onResize(_ref2) {\n var offsetHeight = _ref2.offsetHeight;\n if (offsetHeight && onInnerResize) {\n onInnerResize();\n }\n }\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n style: innerStyle,\n className: classNames(_defineProperty({}, \"\".concat(prefixCls, \"-holder-inner\"), prefixCls)),\n ref: ref\n }, innerProps), children, extra)));\n});\nFiller.displayName = 'Filler';\nexport default Filler;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport raf from \"rc-util/es/raf\";\nfunction getPageXY(e, horizontal) {\n var obj = 'touches' in e ? e.touches[0] : e;\n return obj[horizontal ? 'pageX' : 'pageY'];\n}\nvar ScrollBar = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var prefixCls = props.prefixCls,\n rtl = props.rtl,\n scrollOffset = props.scrollOffset,\n scrollRange = props.scrollRange,\n onStartMove = props.onStartMove,\n onStopMove = props.onStopMove,\n onScroll = props.onScroll,\n horizontal = props.horizontal,\n spinSize = props.spinSize,\n containerSize = props.containerSize,\n style = props.style,\n propsThumbStyle = props.thumbStyle;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n dragging = _React$useState2[0],\n setDragging = _React$useState2[1];\n var _React$useState3 = React.useState(null),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n pageXY = _React$useState4[0],\n setPageXY = _React$useState4[1];\n var _React$useState5 = React.useState(null),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n startTop = _React$useState6[0],\n setStartTop = _React$useState6[1];\n var isLTR = !rtl;\n // ========================= Refs =========================\n var scrollbarRef = React.useRef();\n var thumbRef = React.useRef();\n // ======================= Visible ========================\n var _React$useState7 = React.useState(false),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n visible = _React$useState8[0],\n setVisible = _React$useState8[1];\n var visibleTimeoutRef = React.useRef();\n var delayHidden = function delayHidden() {\n clearTimeout(visibleTimeoutRef.current);\n setVisible(true);\n visibleTimeoutRef.current = setTimeout(function () {\n setVisible(false);\n }, 3000);\n };\n // ======================== Range =========================\n var enableScrollRange = scrollRange - containerSize || 0;\n var enableOffsetRange = containerSize - spinSize || 0;\n // `scrollWidth` < `clientWidth` means no need to show scrollbar\n var canScroll = enableScrollRange > 0;\n // ========================= Top ==========================\n var top = React.useMemo(function () {\n if (scrollOffset === 0 || enableScrollRange === 0) {\n return 0;\n }\n var ptg = scrollOffset / enableScrollRange;\n return ptg * enableOffsetRange;\n }, [scrollOffset, enableScrollRange, enableOffsetRange]);\n // ====================== Container =======================\n var onContainerMouseDown = function onContainerMouseDown(e) {\n e.stopPropagation();\n e.preventDefault();\n };\n // ======================== Thumb =========================\n var stateRef = React.useRef({\n top: top,\n dragging: dragging,\n pageY: pageXY,\n startTop: startTop\n });\n stateRef.current = {\n top: top,\n dragging: dragging,\n pageY: pageXY,\n startTop: startTop\n };\n var onThumbMouseDown = function onThumbMouseDown(e) {\n setDragging(true);\n setPageXY(getPageXY(e, horizontal));\n setStartTop(stateRef.current.top);\n onStartMove();\n e.stopPropagation();\n e.preventDefault();\n };\n // ======================== Effect ========================\n // React make event as passive, but we need to preventDefault\n // Add event on dom directly instead.\n // ref: https://github.com/facebook/react/issues/9809\n React.useEffect(function () {\n var onScrollbarTouchStart = function onScrollbarTouchStart(e) {\n e.preventDefault();\n };\n var scrollbarEle = scrollbarRef.current;\n var thumbEle = thumbRef.current;\n scrollbarEle.addEventListener('touchstart', onScrollbarTouchStart);\n thumbEle.addEventListener('touchstart', onThumbMouseDown);\n return function () {\n scrollbarEle.removeEventListener('touchstart', onScrollbarTouchStart);\n thumbEle.removeEventListener('touchstart', onThumbMouseDown);\n };\n }, []);\n // Pass to effect\n var enableScrollRangeRef = React.useRef();\n enableScrollRangeRef.current = enableScrollRange;\n var enableOffsetRangeRef = React.useRef();\n enableOffsetRangeRef.current = enableOffsetRange;\n React.useEffect(function () {\n if (dragging) {\n var moveRafId;\n var onMouseMove = function onMouseMove(e) {\n var _stateRef$current = stateRef.current,\n stateDragging = _stateRef$current.dragging,\n statePageY = _stateRef$current.pageY,\n stateStartTop = _stateRef$current.startTop;\n raf.cancel(moveRafId);\n if (stateDragging) {\n var offset = getPageXY(e, horizontal) - statePageY;\n var newTop = stateStartTop;\n if (!isLTR && horizontal) {\n newTop -= offset;\n } else {\n newTop += offset;\n }\n var tmpEnableScrollRange = enableScrollRangeRef.current;\n var tmpEnableOffsetRange = enableOffsetRangeRef.current;\n var ptg = tmpEnableOffsetRange ? newTop / tmpEnableOffsetRange : 0;\n var newScrollTop = Math.ceil(ptg * tmpEnableScrollRange);\n newScrollTop = Math.max(newScrollTop, 0);\n newScrollTop = Math.min(newScrollTop, tmpEnableScrollRange);\n moveRafId = raf(function () {\n onScroll(newScrollTop, horizontal);\n });\n }\n };\n var onMouseUp = function onMouseUp() {\n setDragging(false);\n onStopMove();\n };\n window.addEventListener('mousemove', onMouseMove);\n window.addEventListener('touchmove', onMouseMove);\n window.addEventListener('mouseup', onMouseUp);\n window.addEventListener('touchend', onMouseUp);\n return function () {\n window.removeEventListener('mousemove', onMouseMove);\n window.removeEventListener('touchmove', onMouseMove);\n window.removeEventListener('mouseup', onMouseUp);\n window.removeEventListener('touchend', onMouseUp);\n raf.cancel(moveRafId);\n };\n }\n }, [dragging]);\n React.useEffect(function () {\n delayHidden();\n }, [scrollOffset]);\n // ====================== Imperative ======================\n React.useImperativeHandle(ref, function () {\n return {\n delayHidden: delayHidden\n };\n });\n // ======================== Render ========================\n var scrollbarPrefixCls = \"\".concat(prefixCls, \"-scrollbar\");\n var containerStyle = {\n position: 'absolute',\n visibility: visible && canScroll ? null : 'hidden'\n };\n var thumbStyle = {\n position: 'absolute',\n background: 'rgba(0, 0, 0, 0.5)',\n borderRadius: 99,\n cursor: 'pointer',\n userSelect: 'none'\n };\n if (horizontal) {\n // Container\n containerStyle.height = 8;\n containerStyle.left = 0;\n containerStyle.right = 0;\n containerStyle.bottom = 0;\n // Thumb\n thumbStyle.height = '100%';\n thumbStyle.width = spinSize;\n if (isLTR) {\n thumbStyle.left = top;\n } else {\n thumbStyle.right = top;\n }\n } else {\n // Container\n containerStyle.width = 8;\n containerStyle.top = 0;\n containerStyle.bottom = 0;\n if (isLTR) {\n containerStyle.right = 0;\n } else {\n containerStyle.left = 0;\n }\n // Thumb\n thumbStyle.width = '100%';\n thumbStyle.height = spinSize;\n thumbStyle.top = top;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollbarRef,\n className: classNames(scrollbarPrefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(scrollbarPrefixCls, \"-horizontal\"), horizontal), _defineProperty(_classNames, \"\".concat(scrollbarPrefixCls, \"-vertical\"), !horizontal), _defineProperty(_classNames, \"\".concat(scrollbarPrefixCls, \"-visible\"), visible), _classNames)),\n style: _objectSpread(_objectSpread({}, containerStyle), style),\n onMouseDown: onContainerMouseDown,\n onMouseMove: delayHidden\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: thumbRef,\n className: classNames(\"\".concat(scrollbarPrefixCls, \"-thumb\"), _defineProperty({}, \"\".concat(scrollbarPrefixCls, \"-thumb-moving\"), dragging)),\n style: _objectSpread(_objectSpread({}, thumbStyle), propsThumbStyle),\n onMouseDown: onThumbMouseDown\n }));\n});\nif (process.env.NODE_ENV !== 'production') {\n ScrollBar.displayName = 'ScrollBar';\n}\nexport default ScrollBar;","import * as React from 'react';\nexport function Item(_ref) {\n var children = _ref.children,\n setRef = _ref.setRef;\n var refFunc = React.useCallback(function (node) {\n setRef(node);\n }, []);\n return /*#__PURE__*/React.cloneElement(children, {\n ref: refFunc\n });\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\n// Firefox has low performance of map.\nvar CacheMap = /*#__PURE__*/function () {\n function CacheMap() {\n _classCallCheck(this, CacheMap);\n this.maps = void 0;\n // Used for cache key\n // `useMemo` no need to update if `id` not change\n this.id = 0;\n this.maps = Object.create(null);\n }\n _createClass(CacheMap, [{\n key: \"set\",\n value: function set(key, value) {\n this.maps[key] = value;\n this.id += 1;\n }\n }, {\n key: \"get\",\n value: function get(key) {\n return this.maps[key];\n }\n }]);\n return CacheMap;\n}();\nexport default CacheMap;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/* eslint-disable no-param-reassign */\nimport * as React from 'react';\nimport raf from \"rc-util/es/raf\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { warning } from 'rc-util';\nvar MAX_TIMES = 10;\nexport default function useScrollTo(containerRef, data, heights, itemHeight, getKey, collectHeight, syncScrollTop, triggerFlash) {\n var scrollRef = React.useRef();\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n syncState = _React$useState2[0],\n setSyncState = _React$useState2[1];\n // ========================== Sync Scroll ==========================\n useLayoutEffect(function () {\n if (syncState && syncState.times < MAX_TIMES) {\n // Never reach\n if (!containerRef.current) {\n setSyncState(function (ori) {\n return _objectSpread({}, ori);\n });\n return;\n }\n collectHeight();\n var targetAlign = syncState.targetAlign,\n originAlign = syncState.originAlign,\n index = syncState.index,\n offset = syncState.offset;\n var height = containerRef.current.clientHeight;\n var needCollectHeight = false;\n var newTargetAlign = targetAlign;\n var targetTop = null;\n // Go to next frame if height not exist\n if (height) {\n var mergedAlign = targetAlign || originAlign;\n // Get top & bottom\n var stackTop = 0;\n var itemTop = 0;\n var itemBottom = 0;\n var maxLen = Math.min(data.length - 1, index);\n for (var i = 0; i <= maxLen; i += 1) {\n var key = getKey(data[i]);\n itemTop = stackTop;\n var cacheHeight = heights.get(key);\n itemBottom = itemTop + (cacheHeight === undefined ? itemHeight : cacheHeight);\n stackTop = itemBottom;\n }\n // Check if need sync height (visible range has item not record height)\n var leftHeight = mergedAlign === 'top' ? offset : height - offset;\n for (var _i = maxLen; _i >= 0; _i -= 1) {\n var _key = getKey(data[_i]);\n var _cacheHeight = heights.get(_key);\n if (_cacheHeight === undefined) {\n needCollectHeight = true;\n break;\n }\n leftHeight -= _cacheHeight;\n if (leftHeight <= 0) {\n break;\n }\n }\n // Scroll to\n switch (mergedAlign) {\n case 'top':\n targetTop = itemTop - offset;\n break;\n case 'bottom':\n targetTop = itemBottom - height + offset;\n break;\n default:\n {\n var scrollTop = containerRef.current.scrollTop;\n var scrollBottom = scrollTop + height;\n if (itemTop < scrollTop) {\n newTargetAlign = 'top';\n } else if (itemBottom > scrollBottom) {\n newTargetAlign = 'bottom';\n }\n }\n }\n if (targetTop !== null) {\n syncScrollTop(targetTop);\n }\n // One more time for sync\n if (targetTop !== syncState.lastTop) {\n needCollectHeight = true;\n }\n }\n // Trigger next effect\n if (needCollectHeight) {\n setSyncState(_objectSpread(_objectSpread({}, syncState), {}, {\n times: syncState.times + 1,\n targetAlign: newTargetAlign,\n lastTop: targetTop\n }));\n }\n } else if (process.env.NODE_ENV !== 'production' && (syncState === null || syncState === void 0 ? void 0 : syncState.times) === MAX_TIMES) {\n warning(false, 'Seems `scrollTo` with `rc-virtual-list` reach the max limitation. Please fire issue for us. Thanks.');\n }\n }, [syncState, containerRef.current]);\n // =========================== Scroll To ===========================\n return function (arg) {\n // When not argument provided, we think dev may want to show the scrollbar\n if (arg === null || arg === undefined) {\n triggerFlash();\n return;\n }\n // Normal scroll logic\n raf.cancel(scrollRef.current);\n if (typeof arg === 'number') {\n syncScrollTop(arg);\n } else if (arg && _typeof(arg) === 'object') {\n var index;\n var align = arg.align;\n if ('index' in arg) {\n index = arg.index;\n } else {\n index = data.findIndex(function (item) {\n return getKey(item) === arg.key;\n });\n }\n var _arg$offset = arg.offset,\n offset = _arg$offset === void 0 ? 0 : _arg$offset;\n setSyncState({\n times: 0,\n index: index,\n offset: offset,\n originAlign: align\n });\n }\n };\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { findListDiffIndex } from '../utils/algorithmUtil';\nexport default function useDiffItem(data, getKey, onDiff) {\n var _React$useState = React.useState(data),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n prevData = _React$useState2[0],\n setPrevData = _React$useState2[1];\n var _React$useState3 = React.useState(null),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n diffItem = _React$useState4[0],\n setDiffItem = _React$useState4[1];\n React.useEffect(function () {\n var diff = findListDiffIndex(prevData || [], data || [], getKey);\n if ((diff === null || diff === void 0 ? void 0 : diff.index) !== undefined) {\n onDiff === null || onDiff === void 0 ? void 0 : onDiff(diff.index);\n setDiffItem(data[diff.index]);\n }\n setPrevData(data);\n }, [data]);\n return [diffItem];\n}","/**\n * Get index with specific start index one by one. e.g.\n * min: 3, max: 9, start: 6\n *\n * Return index is:\n * [0]: 6\n * [1]: 7\n * [2]: 5\n * [3]: 8\n * [4]: 4\n * [5]: 9\n * [6]: 3\n */\nexport function getIndexByStartLoc(min, max, start, index) {\n var beforeCount = start - min;\n var afterCount = max - start;\n var balanceCount = Math.min(beforeCount, afterCount) * 2;\n // Balance\n if (index <= balanceCount) {\n var stepIndex = Math.floor(index / 2);\n if (index % 2) {\n return start + stepIndex + 1;\n }\n return start - stepIndex;\n }\n // One is out of range\n if (beforeCount > afterCount) {\n return start - (index - afterCount);\n }\n return start + (index - beforeCount);\n}\n/**\n * We assume that 2 list has only 1 item diff and others keeping the order.\n * So we can use dichotomy algorithm to find changed one.\n */\nexport function findListDiffIndex(originList, targetList, getKey) {\n var originLen = originList.length;\n var targetLen = targetList.length;\n var shortList;\n var longList;\n if (originLen === 0 && targetLen === 0) {\n return null;\n }\n if (originLen < targetLen) {\n shortList = originList;\n longList = targetList;\n } else {\n shortList = targetList;\n longList = originList;\n }\n var notExistKey = {\n __EMPTY_ITEM__: true\n };\n function getItemKey(item) {\n if (item !== undefined) {\n return getKey(item);\n }\n return notExistKey;\n }\n // Loop to find diff one\n var diffIndex = null;\n var multiple = Math.abs(originLen - targetLen) !== 1;\n for (var i = 0; i < longList.length; i += 1) {\n var shortKey = getItemKey(shortList[i]);\n var longKey = getItemKey(longList[i]);\n if (shortKey !== longKey) {\n diffIndex = i;\n multiple = multiple || shortKey !== getItemKey(longList[i + 1]);\n break;\n }\n }\n return diffIndex === null ? null : {\n index: diffIndex,\n multiple: multiple\n };\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar isFF = (typeof navigator === \"undefined\" ? \"undefined\" : _typeof(navigator)) === 'object' && /Firefox/i.test(navigator.userAgent);\nexport default isFF;","import { useRef } from 'react';\nexport default (function (isScrollAtTop, isScrollAtBottom) {\n // Do lock for a wheel when scrolling\n var lockRef = useRef(false);\n var lockTimeoutRef = useRef(null);\n function lockScroll() {\n clearTimeout(lockTimeoutRef.current);\n lockRef.current = true;\n lockTimeoutRef.current = setTimeout(function () {\n lockRef.current = false;\n }, 50);\n }\n // Pass to ref since global add is in closure\n var scrollPingRef = useRef({\n top: isScrollAtTop,\n bottom: isScrollAtBottom\n });\n scrollPingRef.current.top = isScrollAtTop;\n scrollPingRef.current.bottom = isScrollAtBottom;\n return function (deltaY) {\n var smoothOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var originScroll =\n // Pass origin wheel when on the top\n deltaY < 0 && scrollPingRef.current.top ||\n // Pass origin wheel when on the bottom\n deltaY > 0 && scrollPingRef.current.bottom;\n if (smoothOffset && originScroll) {\n // No need lock anymore when it's smooth offset from touchMove interval\n clearTimeout(lockTimeoutRef.current);\n lockRef.current = false;\n } else if (!originScroll || lockRef.current) {\n lockScroll();\n }\n return !lockRef.current && originScroll;\n };\n});","import { useRef } from 'react';\nimport raf from \"rc-util/es/raf\";\nimport isFF from '../utils/isFirefox';\nimport useOriginScroll from './useOriginScroll';\nexport default function useFrameWheel(inVirtual, isScrollAtTop, isScrollAtBottom, horizontalScroll,\n/***\n * Return `true` when you need to prevent default event\n */\nonWheelDelta) {\n var offsetRef = useRef(0);\n var nextFrameRef = useRef(null);\n // Firefox patch\n var wheelValueRef = useRef(null);\n var isMouseScrollRef = useRef(false);\n // Scroll status sync\n var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom);\n function onWheelY(event, deltaY) {\n raf.cancel(nextFrameRef.current);\n offsetRef.current += deltaY;\n wheelValueRef.current = deltaY;\n // Do nothing when scroll at the edge, Skip check when is in scroll\n if (originScroll(deltaY)) return;\n // Proxy of scroll events\n if (!isFF) {\n event.preventDefault();\n }\n nextFrameRef.current = raf(function () {\n // Patch a multiple for Firefox to fix wheel number too small\n // ref: https://github.com/ant-design/ant-design/issues/26372#issuecomment-679460266\n var patchMultiple = isMouseScrollRef.current ? 10 : 1;\n onWheelDelta(offsetRef.current * patchMultiple);\n offsetRef.current = 0;\n });\n }\n function onWheelX(event, deltaX) {\n onWheelDelta(deltaX, true);\n if (!isFF) {\n event.preventDefault();\n }\n }\n // Check for which direction does wheel do. `sx` means `shift + wheel`\n var wheelDirectionRef = useRef(null);\n var wheelDirectionCleanRef = useRef(null);\n function onWheel(event) {\n if (!inVirtual) return;\n // Wait for 2 frame to clean direction\n raf.cancel(wheelDirectionCleanRef.current);\n wheelDirectionCleanRef.current = raf(function () {\n wheelDirectionRef.current = null;\n }, 2);\n var deltaX = event.deltaX,\n deltaY = event.deltaY,\n shiftKey = event.shiftKey;\n var mergedDeltaX = deltaX;\n var mergedDeltaY = deltaY;\n if (wheelDirectionRef.current === 'sx' || !wheelDirectionRef.current && (shiftKey || false) && deltaY && !deltaX) {\n mergedDeltaX = deltaY;\n mergedDeltaY = 0;\n wheelDirectionRef.current = 'sx';\n }\n var absX = Math.abs(mergedDeltaX);\n var absY = Math.abs(mergedDeltaY);\n if (wheelDirectionRef.current === null) {\n wheelDirectionRef.current = horizontalScroll && absX > absY ? 'x' : 'y';\n }\n if (wheelDirectionRef.current === 'y') {\n onWheelY(event, mergedDeltaY);\n } else {\n onWheelX(event, mergedDeltaX);\n }\n }\n // A patch for firefox\n function onFireFoxScroll(event) {\n if (!inVirtual) return;\n isMouseScrollRef.current = event.detail === wheelValueRef.current;\n }\n return [onWheel, onFireFoxScroll];\n}","import { useRef } from 'react';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nvar SMOOTH_PTG = 14 / 15;\nexport default function useMobileTouchMove(inVirtual, listRef, callback) {\n var touchedRef = useRef(false);\n var touchYRef = useRef(0);\n var elementRef = useRef(null);\n // Smooth scroll\n var intervalRef = useRef(null);\n /* eslint-disable prefer-const */\n var cleanUpEvents;\n var onTouchMove = function onTouchMove(e) {\n if (touchedRef.current) {\n var currentY = Math.ceil(e.touches[0].pageY);\n var offsetY = touchYRef.current - currentY;\n touchYRef.current = currentY;\n if (callback(offsetY)) {\n e.preventDefault();\n }\n // Smooth interval\n clearInterval(intervalRef.current);\n intervalRef.current = setInterval(function () {\n offsetY *= SMOOTH_PTG;\n if (!callback(offsetY, true) || Math.abs(offsetY) <= 0.1) {\n clearInterval(intervalRef.current);\n }\n }, 16);\n }\n };\n var onTouchEnd = function onTouchEnd() {\n touchedRef.current = false;\n cleanUpEvents();\n };\n var onTouchStart = function onTouchStart(e) {\n cleanUpEvents();\n if (e.touches.length === 1 && !touchedRef.current) {\n touchedRef.current = true;\n touchYRef.current = Math.ceil(e.touches[0].pageY);\n elementRef.current = e.target;\n elementRef.current.addEventListener('touchmove', onTouchMove);\n elementRef.current.addEventListener('touchend', onTouchEnd);\n }\n };\n cleanUpEvents = function cleanUpEvents() {\n if (elementRef.current) {\n elementRef.current.removeEventListener('touchmove', onTouchMove);\n elementRef.current.removeEventListener('touchend', onTouchEnd);\n }\n };\n useLayoutEffect(function () {\n if (inVirtual) {\n listRef.current.addEventListener('touchstart', onTouchStart);\n }\n return function () {\n var _listRef$current;\n (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.removeEventListener('touchstart', onTouchStart);\n cleanUpEvents();\n clearInterval(intervalRef.current);\n };\n }, [inVirtual]);\n}","var MIN_SIZE = 20;\nexport function getSpinSize() {\n var containerSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var scrollRange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var baseSize = containerSize / scrollRange * 100;\n if (isNaN(baseSize)) {\n baseSize = 0;\n }\n baseSize = Math.max(baseSize, MIN_SIZE);\n baseSize = Math.min(baseSize, containerSize / 2);\n return Math.floor(baseSize);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"className\", \"height\", \"itemHeight\", \"fullHeight\", \"style\", \"data\", \"children\", \"itemKey\", \"virtual\", \"direction\", \"scrollWidth\", \"component\", \"onScroll\", \"onVirtualScroll\", \"onVisibleChange\", \"innerProps\", \"extraRender\", \"styles\"];\nimport * as React from 'react';\nimport { useRef, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport Filler from './Filler';\nimport ScrollBar from './ScrollBar';\nimport useChildren from './hooks/useChildren';\nimport useHeights from './hooks/useHeights';\nimport useScrollTo from './hooks/useScrollTo';\nimport useDiffItem from './hooks/useDiffItem';\nimport useFrameWheel from './hooks/useFrameWheel';\nimport useMobileTouchMove from './hooks/useMobileTouchMove';\nimport useOriginScroll from './hooks/useOriginScroll';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { getSpinSize } from './utils/scrollbarUtil';\nimport { useEvent } from 'rc-util';\nimport { useGetSize } from './hooks/useGetSize';\nvar EMPTY_DATA = [];\nvar ScrollStyle = {\n overflowY: 'auto',\n overflowAnchor: 'none'\n};\nexport function RawList(props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-virtual-list' : _props$prefixCls,\n className = props.className,\n height = props.height,\n itemHeight = props.itemHeight,\n _props$fullHeight = props.fullHeight,\n fullHeight = _props$fullHeight === void 0 ? true : _props$fullHeight,\n style = props.style,\n data = props.data,\n children = props.children,\n itemKey = props.itemKey,\n virtual = props.virtual,\n direction = props.direction,\n scrollWidth = props.scrollWidth,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n onScroll = props.onScroll,\n onVirtualScroll = props.onVirtualScroll,\n onVisibleChange = props.onVisibleChange,\n innerProps = props.innerProps,\n extraRender = props.extraRender,\n styles = props.styles,\n restProps = _objectWithoutProperties(props, _excluded);\n // ================================= MISC =================================\n var useVirtual = !!(virtual !== false && height && itemHeight);\n var inVirtual = useVirtual && data && (itemHeight * data.length > height || !!scrollWidth);\n var isRTL = direction === 'rtl';\n var mergedClassName = classNames(prefixCls, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), isRTL), className);\n var mergedData = data || EMPTY_DATA;\n var componentRef = useRef();\n var fillerInnerRef = useRef();\n // =============================== Item Key ===============================\n var _useState = useState(0),\n _useState2 = _slicedToArray(_useState, 2),\n offsetTop = _useState2[0],\n setOffsetTop = _useState2[1];\n var _useState3 = useState(0),\n _useState4 = _slicedToArray(_useState3, 2),\n offsetLeft = _useState4[0],\n setOffsetLeft = _useState4[1];\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n scrollMoving = _useState6[0],\n setScrollMoving = _useState6[1];\n var onScrollbarStartMove = function onScrollbarStartMove() {\n setScrollMoving(true);\n };\n var onScrollbarStopMove = function onScrollbarStopMove() {\n setScrollMoving(false);\n };\n // =============================== Item Key ===============================\n var getKey = React.useCallback(function (item) {\n if (typeof itemKey === 'function') {\n return itemKey(item);\n }\n return item === null || item === void 0 ? void 0 : item[itemKey];\n }, [itemKey]);\n var sharedConfig = {\n getKey: getKey\n };\n // ================================ Scroll ================================\n function syncScrollTop(newTop) {\n setOffsetTop(function (origin) {\n var value;\n if (typeof newTop === 'function') {\n value = newTop(origin);\n } else {\n value = newTop;\n }\n var alignedTop = keepInRange(value);\n componentRef.current.scrollTop = alignedTop;\n return alignedTop;\n });\n }\n // ================================ Legacy ================================\n // Put ref here since the range is generate by follow\n var rangeRef = useRef({\n start: 0,\n end: mergedData.length\n });\n var diffItemRef = useRef();\n var _useDiffItem = useDiffItem(mergedData, getKey),\n _useDiffItem2 = _slicedToArray(_useDiffItem, 1),\n diffItem = _useDiffItem2[0];\n diffItemRef.current = diffItem;\n // ================================ Height ================================\n var _useHeights = useHeights(getKey, null, null),\n _useHeights2 = _slicedToArray(_useHeights, 4),\n setInstanceRef = _useHeights2[0],\n collectHeight = _useHeights2[1],\n heights = _useHeights2[2],\n heightUpdatedMark = _useHeights2[3];\n // ========================== Visible Calculation =========================\n var _React$useMemo = React.useMemo(function () {\n if (!useVirtual) {\n return {\n scrollHeight: undefined,\n start: 0,\n end: mergedData.length - 1,\n offset: undefined\n };\n }\n // Always use virtual scroll bar in avoid shaking\n if (!inVirtual) {\n var _fillerInnerRef$curre;\n return {\n scrollHeight: ((_fillerInnerRef$curre = fillerInnerRef.current) === null || _fillerInnerRef$curre === void 0 ? void 0 : _fillerInnerRef$curre.offsetHeight) || 0,\n start: 0,\n end: mergedData.length - 1,\n offset: undefined\n };\n }\n var itemTop = 0;\n var startIndex;\n var startOffset;\n var endIndex;\n var dataLen = mergedData.length;\n for (var i = 0; i < dataLen; i += 1) {\n var item = mergedData[i];\n var key = getKey(item);\n var cacheHeight = heights.get(key);\n var currentItemBottom = itemTop + (cacheHeight === undefined ? itemHeight : cacheHeight);\n // Check item top in the range\n if (currentItemBottom >= offsetTop && startIndex === undefined) {\n startIndex = i;\n startOffset = itemTop;\n }\n // Check item bottom in the range. We will render additional one item for motion usage\n if (currentItemBottom > offsetTop + height && endIndex === undefined) {\n endIndex = i;\n }\n itemTop = currentItemBottom;\n }\n // When scrollTop at the end but data cut to small count will reach this\n if (startIndex === undefined) {\n startIndex = 0;\n startOffset = 0;\n endIndex = Math.ceil(height / itemHeight);\n }\n if (endIndex === undefined) {\n endIndex = mergedData.length - 1;\n }\n // Give cache to improve scroll experience\n endIndex = Math.min(endIndex + 1, mergedData.length - 1);\n return {\n scrollHeight: itemTop,\n start: startIndex,\n end: endIndex,\n offset: startOffset\n };\n }, [inVirtual, useVirtual, offsetTop, mergedData, heightUpdatedMark, height]),\n scrollHeight = _React$useMemo.scrollHeight,\n start = _React$useMemo.start,\n end = _React$useMemo.end,\n fillerOffset = _React$useMemo.offset;\n rangeRef.current.start = start;\n rangeRef.current.end = end;\n // ================================= Size =================================\n var _React$useState = React.useState({\n width: 0,\n height: height\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n size = _React$useState2[0],\n setSize = _React$useState2[1];\n var onHolderResize = function onHolderResize(sizeInfo) {\n setSize({\n width: sizeInfo.width || sizeInfo.offsetWidth,\n height: sizeInfo.height || sizeInfo.offsetHeight\n });\n };\n // Hack on scrollbar to enable flash call\n var verticalScrollBarRef = useRef();\n var horizontalScrollBarRef = useRef();\n var horizontalScrollBarSpinSize = React.useMemo(function () {\n return getSpinSize(size.width, scrollWidth);\n }, [size.width, scrollWidth]);\n var verticalScrollBarSpinSize = React.useMemo(function () {\n return getSpinSize(size.height, scrollHeight);\n }, [size.height, scrollHeight]);\n // =============================== In Range ===============================\n var maxScrollHeight = scrollHeight - height;\n var maxScrollHeightRef = useRef(maxScrollHeight);\n maxScrollHeightRef.current = maxScrollHeight;\n function keepInRange(newScrollTop) {\n var newTop = newScrollTop;\n if (!Number.isNaN(maxScrollHeightRef.current)) {\n newTop = Math.min(newTop, maxScrollHeightRef.current);\n }\n newTop = Math.max(newTop, 0);\n return newTop;\n }\n var isScrollAtTop = offsetTop <= 0;\n var isScrollAtBottom = offsetTop >= maxScrollHeight;\n var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom);\n // ================================ Scroll ================================\n var getVirtualScrollInfo = function getVirtualScrollInfo() {\n return {\n x: isRTL ? -offsetLeft : offsetLeft,\n y: offsetTop\n };\n };\n var lastVirtualScrollInfoRef = useRef(getVirtualScrollInfo());\n var triggerScroll = useEvent(function () {\n if (onVirtualScroll) {\n var nextInfo = getVirtualScrollInfo();\n // Trigger when offset changed\n if (lastVirtualScrollInfoRef.current.x !== nextInfo.x || lastVirtualScrollInfoRef.current.y !== nextInfo.y) {\n onVirtualScroll(nextInfo);\n lastVirtualScrollInfoRef.current = nextInfo;\n }\n }\n });\n function onScrollBar(newScrollOffset, horizontal) {\n var newOffset = newScrollOffset;\n if (horizontal) {\n flushSync(function () {\n setOffsetLeft(newOffset);\n });\n triggerScroll();\n } else {\n syncScrollTop(newOffset);\n }\n }\n // When data size reduce. It may trigger native scroll event back to fit scroll position\n function onFallbackScroll(e) {\n var newScrollTop = e.currentTarget.scrollTop;\n if (newScrollTop !== offsetTop) {\n syncScrollTop(newScrollTop);\n }\n // Trigger origin onScroll\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(e);\n triggerScroll();\n }\n var keepInHorizontalRange = function keepInHorizontalRange(nextOffsetLeft) {\n var tmpOffsetLeft = nextOffsetLeft;\n var max = scrollWidth - size.width;\n tmpOffsetLeft = Math.max(tmpOffsetLeft, 0);\n tmpOffsetLeft = Math.min(tmpOffsetLeft, max);\n return tmpOffsetLeft;\n };\n var onWheelDelta = useEvent(function (offsetXY, fromHorizontal) {\n if (fromHorizontal) {\n // Horizontal scroll no need sync virtual position\n flushSync(function () {\n setOffsetLeft(function (left) {\n var nextOffsetLeft = left + (isRTL ? -offsetXY : offsetXY);\n return keepInHorizontalRange(nextOffsetLeft);\n });\n });\n triggerScroll();\n } else {\n syncScrollTop(function (top) {\n var newTop = top + offsetXY;\n return newTop;\n });\n }\n });\n // Since this added in global,should use ref to keep update\n var _useFrameWheel = useFrameWheel(useVirtual, isScrollAtTop, isScrollAtBottom, !!scrollWidth, onWheelDelta),\n _useFrameWheel2 = _slicedToArray(_useFrameWheel, 2),\n onRawWheel = _useFrameWheel2[0],\n onFireFoxScroll = _useFrameWheel2[1];\n // Mobile touch move\n useMobileTouchMove(useVirtual, componentRef, function (deltaY, smoothOffset) {\n if (originScroll(deltaY, smoothOffset)) {\n return false;\n }\n onRawWheel({\n preventDefault: function preventDefault() {},\n deltaY: deltaY\n });\n return true;\n });\n useLayoutEffect(function () {\n // Firefox only\n function onMozMousePixelScroll(e) {\n if (useVirtual) {\n e.preventDefault();\n }\n }\n var componentEle = componentRef.current;\n componentEle.addEventListener('wheel', onRawWheel);\n componentEle.addEventListener('DOMMouseScroll', onFireFoxScroll);\n componentEle.addEventListener('MozMousePixelScroll', onMozMousePixelScroll);\n return function () {\n componentEle.removeEventListener('wheel', onRawWheel);\n componentEle.removeEventListener('DOMMouseScroll', onFireFoxScroll);\n componentEle.removeEventListener('MozMousePixelScroll', onMozMousePixelScroll);\n };\n }, [useVirtual]);\n // Sync scroll left\n useLayoutEffect(function () {\n if (scrollWidth) {\n setOffsetLeft(function (left) {\n return keepInHorizontalRange(left);\n });\n }\n }, [size.width, scrollWidth]);\n // ================================= Ref ==================================\n var delayHideScrollBar = function delayHideScrollBar() {\n var _verticalScrollBarRef, _horizontalScrollBarR;\n (_verticalScrollBarRef = verticalScrollBarRef.current) === null || _verticalScrollBarRef === void 0 ? void 0 : _verticalScrollBarRef.delayHidden();\n (_horizontalScrollBarR = horizontalScrollBarRef.current) === null || _horizontalScrollBarR === void 0 ? void 0 : _horizontalScrollBarR.delayHidden();\n };\n var _scrollTo = useScrollTo(componentRef, mergedData, heights, itemHeight, getKey, function () {\n return collectHeight(true);\n }, syncScrollTop, delayHideScrollBar);\n React.useImperativeHandle(ref, function () {\n return {\n getScrollInfo: getVirtualScrollInfo,\n scrollTo: function scrollTo(config) {\n function isPosScroll(arg) {\n return arg && _typeof(arg) === 'object' && ('left' in arg || 'top' in arg);\n }\n if (isPosScroll(config)) {\n // Scroll X\n if (config.left !== undefined) {\n setOffsetLeft(keepInHorizontalRange(config.left));\n }\n // Scroll Y\n _scrollTo(config.top);\n } else {\n _scrollTo(config);\n }\n }\n };\n });\n // ================================ Effect ================================\n /** We need told outside that some list not rendered */\n useLayoutEffect(function () {\n if (onVisibleChange) {\n var renderList = mergedData.slice(start, end + 1);\n onVisibleChange(renderList, mergedData);\n }\n }, [start, end, mergedData]);\n // ================================ Extra =================================\n var getSize = useGetSize(mergedData, getKey, heights, itemHeight);\n var extraContent = extraRender === null || extraRender === void 0 ? void 0 : extraRender({\n start: start,\n end: end,\n virtual: inVirtual,\n offsetX: offsetLeft,\n offsetY: fillerOffset,\n rtl: isRTL,\n getSize: getSize\n });\n // ================================ Render ================================\n var listChildren = useChildren(mergedData, start, end, scrollWidth, setInstanceRef, children, sharedConfig);\n var componentStyle = null;\n if (height) {\n componentStyle = _objectSpread(_defineProperty({}, fullHeight ? 'height' : 'maxHeight', height), ScrollStyle);\n if (useVirtual) {\n componentStyle.overflowY = 'hidden';\n if (scrollWidth) {\n componentStyle.overflowX = 'hidden';\n }\n if (scrollMoving) {\n componentStyle.pointerEvents = 'none';\n }\n }\n }\n var containerProps = {};\n if (isRTL) {\n containerProps.dir = 'rtl';\n }\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n style: _objectSpread(_objectSpread({}, style), {}, {\n position: 'relative'\n }),\n className: mergedClassName\n }, containerProps, restProps), /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onHolderResize\n }, /*#__PURE__*/React.createElement(Component, {\n className: \"\".concat(prefixCls, \"-holder\"),\n style: componentStyle,\n ref: componentRef,\n onScroll: onFallbackScroll,\n onMouseEnter: delayHideScrollBar\n }, /*#__PURE__*/React.createElement(Filler, {\n prefixCls: prefixCls,\n height: scrollHeight,\n offsetX: offsetLeft,\n offsetY: fillerOffset,\n scrollWidth: scrollWidth,\n onInnerResize: collectHeight,\n ref: fillerInnerRef,\n innerProps: innerProps,\n rtl: isRTL,\n extra: extraContent\n }, listChildren))), inVirtual && scrollHeight > height && /*#__PURE__*/React.createElement(ScrollBar, {\n ref: verticalScrollBarRef,\n prefixCls: prefixCls,\n scrollOffset: offsetTop,\n scrollRange: scrollHeight,\n rtl: isRTL,\n onScroll: onScrollBar,\n onStartMove: onScrollbarStartMove,\n onStopMove: onScrollbarStopMove,\n spinSize: verticalScrollBarSpinSize,\n containerSize: size.height,\n style: styles === null || styles === void 0 ? void 0 : styles.verticalScrollBar,\n thumbStyle: styles === null || styles === void 0 ? void 0 : styles.verticalScrollBarThumb\n }), inVirtual && scrollWidth && /*#__PURE__*/React.createElement(ScrollBar, {\n ref: horizontalScrollBarRef,\n prefixCls: prefixCls,\n scrollOffset: offsetLeft,\n scrollRange: scrollWidth,\n rtl: isRTL,\n onScroll: onScrollBar,\n onStartMove: onScrollbarStartMove,\n onStopMove: onScrollbarStopMove,\n spinSize: horizontalScrollBarSpinSize,\n containerSize: size.width,\n horizontal: true,\n style: styles === null || styles === void 0 ? void 0 : styles.horizontalScrollBar,\n thumbStyle: styles === null || styles === void 0 ? void 0 : styles.horizontalScrollBarThumb\n }));\n}\nvar List = /*#__PURE__*/React.forwardRef(RawList);\nList.displayName = 'List';\nexport default List;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useEffect } from 'react';\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport raf from \"rc-util/es/raf\";\nimport CacheMap from '../utils/CacheMap';\nexport default function useHeights(getKey, onItemAdd, onItemRemove) {\n var _React$useState = React.useState(0),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n updatedMark = _React$useState2[0],\n setUpdatedMark = _React$useState2[1];\n var instanceRef = useRef(new Map());\n var heightsRef = useRef(new CacheMap());\n var collectRafRef = useRef();\n function cancelRaf() {\n raf.cancel(collectRafRef.current);\n }\n function collectHeight() {\n var sync = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n cancelRaf();\n var doCollect = function doCollect() {\n instanceRef.current.forEach(function (element, key) {\n if (element && element.offsetParent) {\n var htmlElement = findDOMNode(element);\n var offsetHeight = htmlElement.offsetHeight;\n if (heightsRef.current.get(key) !== offsetHeight) {\n heightsRef.current.set(key, htmlElement.offsetHeight);\n }\n }\n });\n // Always trigger update mark to tell parent that should re-calculate heights when resized\n setUpdatedMark(function (c) {\n return c + 1;\n });\n };\n if (sync) {\n doCollect();\n } else {\n collectRafRef.current = raf(doCollect);\n }\n }\n function setInstanceRef(item, instance) {\n var key = getKey(item);\n var origin = instanceRef.current.get(key);\n if (instance) {\n instanceRef.current.set(key, instance);\n collectHeight();\n } else {\n instanceRef.current.delete(key);\n }\n // Instance changed\n if (!origin !== !instance) {\n if (instance) {\n onItemAdd === null || onItemAdd === void 0 ? void 0 : onItemAdd(item);\n } else {\n onItemRemove === null || onItemRemove === void 0 ? void 0 : onItemRemove(item);\n }\n }\n }\n useEffect(function () {\n return cancelRaf;\n }, []);\n return [setInstanceRef, collectHeight, heightsRef.current, updatedMark];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n/**\n * Size info need loop query for the `heights` which will has the perf issue.\n * Let cache result for each render phase.\n */\nexport function useGetSize(mergedData, getKey, heights, itemHeight) {\n var _React$useMemo = React.useMemo(function () {\n return [new Map(), []];\n }, [mergedData, heights.id, itemHeight]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n key2Index = _React$useMemo2[0],\n bottomList = _React$useMemo2[1];\n var getSize = function getSize(startKey) {\n var endKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : startKey;\n // Get from cache first\n var startIndex = key2Index.get(startKey);\n var endIndex = key2Index.get(endKey);\n // Loop to fill the cache\n if (startIndex === undefined || endIndex === undefined) {\n var dataLen = mergedData.length;\n for (var i = bottomList.length; i < dataLen; i += 1) {\n var _heights$get;\n var item = mergedData[i];\n var key = getKey(item);\n key2Index.set(key, i);\n var cacheHeight = (_heights$get = heights.get(key)) !== null && _heights$get !== void 0 ? _heights$get : itemHeight;\n bottomList[i] = (bottomList[i - 1] || 0) + cacheHeight;\n if (key === startKey) {\n startIndex = i;\n }\n if (key === endKey) {\n endIndex = i;\n }\n if (startIndex !== undefined && endIndex !== undefined) {\n break;\n }\n }\n }\n return {\n top: bottomList[startIndex - 1] || 0,\n bottom: bottomList[endIndex]\n };\n };\n return getSize;\n}","import * as React from 'react';\nimport { Item } from '../Item';\nexport default function useChildren(list, startIndex, endIndex, scrollWidth, setNodeRef, renderFunc, _ref) {\n var getKey = _ref.getKey;\n return list.slice(startIndex, endIndex + 1).map(function (item, index) {\n var eleIndex = startIndex + index;\n var node = renderFunc(item, eleIndex, {\n style: {\n width: scrollWidth\n }\n });\n var key = getKey(item);\n return /*#__PURE__*/React.createElement(Item, {\n key: key,\n setRef: function setRef(ele) {\n return setNodeRef(item, ele);\n }\n }, node);\n });\n}","import List from './List';\nexport default List;","import { createContext } from '@rc-component/context';\nexport var StaticContext = createContext(null);\nexport var GridContext = createContext(null);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { useContext } from '@rc-component/context';\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { getCellProps } from \"../Body/BodyRow\";\nimport Cell from \"../Cell\";\nimport { GridContext } from \"./context\";\n/**\n * Return the width of the column by `colSpan`.\n * When `colSpan` is `0` will be trade as `1`.\n */\nexport function getColumnWidth(colIndex, colSpan, columnsOffset) {\n var mergedColSpan = colSpan || 1;\n return columnsOffset[colIndex + mergedColSpan] - (columnsOffset[colIndex] || 0);\n}\nfunction VirtualCell(props) {\n var rowInfo = props.rowInfo,\n column = props.column,\n colIndex = props.colIndex,\n indent = props.indent,\n index = props.index,\n renderIndex = props.renderIndex,\n record = props.record,\n style = props.style,\n className = props.className,\n inverse = props.inverse,\n getHeight = props.getHeight;\n var render = column.render,\n dataIndex = column.dataIndex,\n columnClassName = column.className,\n colWidth = column.width;\n var _useContext = useContext(GridContext, ['columnsOffset']),\n columnsOffset = _useContext.columnsOffset;\n var _getCellProps = getCellProps(rowInfo, column, colIndex, indent, index),\n key = _getCellProps.key,\n fixedInfo = _getCellProps.fixedInfo,\n appendCellNode = _getCellProps.appendCellNode,\n additionalCellProps = _getCellProps.additionalCellProps;\n var cellStyle = additionalCellProps.style,\n _additionalCellProps$ = additionalCellProps.colSpan,\n colSpan = _additionalCellProps$ === void 0 ? 1 : _additionalCellProps$,\n _additionalCellProps$2 = additionalCellProps.rowSpan,\n rowSpan = _additionalCellProps$2 === void 0 ? 1 : _additionalCellProps$2;\n\n // ========================= ColWidth =========================\n // column width\n var startColIndex = colIndex - 1;\n var concatColWidth = getColumnWidth(startColIndex, colSpan, columnsOffset);\n\n // margin offset\n var marginOffset = colSpan > 1 ? colWidth - concatColWidth : 0;\n\n // ========================== Style ===========================\n var mergedStyle = _objectSpread(_objectSpread(_objectSpread({}, cellStyle), style), {}, {\n flex: \"0 0 \".concat(concatColWidth, \"px\"),\n width: \"\".concat(concatColWidth, \"px\"),\n marginRight: marginOffset,\n pointerEvents: 'auto'\n });\n\n // When `colSpan` or `rowSpan` is `0`, should skip render.\n var needHide = React.useMemo(function () {\n if (inverse) {\n return rowSpan <= 1;\n } else {\n return colSpan === 0 || rowSpan === 0 || rowSpan > 1;\n }\n }, [rowSpan, colSpan, inverse]);\n\n // 0 rowSpan or colSpan should not render\n if (needHide) {\n mergedStyle.visibility = 'hidden';\n } else if (inverse) {\n mergedStyle.height = getHeight === null || getHeight === void 0 ? void 0 : getHeight(rowSpan);\n }\n var mergedRender = needHide ? function () {\n return null;\n } : render;\n\n // ========================== Render ==========================\n var cellSpan = {};\n\n // Virtual should reset `colSpan` & `rowSpan`\n if (rowSpan === 0 || colSpan === 0) {\n cellSpan.rowSpan = 1;\n cellSpan.colSpan = 1;\n }\n return /*#__PURE__*/React.createElement(Cell, _extends({\n className: classNames(columnClassName, className),\n ellipsis: column.ellipsis,\n align: column.align,\n scope: column.rowScope,\n component: \"div\",\n prefixCls: rowInfo.prefixCls,\n key: key,\n record: record,\n index: index,\n renderIndex: renderIndex,\n dataIndex: dataIndex,\n render: mergedRender,\n shouldCellUpdate: column.shouldCellUpdate\n }, fixedInfo, {\n appendNode: appendCellNode,\n additionalProps: _objectSpread(_objectSpread({}, additionalCellProps), {}, {\n style: mergedStyle\n }, cellSpan)\n }));\n}\nexport default VirtualCell;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"data\", \"index\", \"className\", \"rowKey\", \"style\", \"extra\", \"getHeight\"];\nimport { useContext } from '@rc-component/context';\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport Cell from \"../Cell\";\nimport TableContext, { responseImmutable } from \"../context/TableContext\";\nimport useRowInfo from \"../hooks/useRowInfo\";\nimport VirtualCell from \"./VirtualCell\";\nvar BodyLine = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var data = props.data,\n index = props.index,\n className = props.className,\n rowKey = props.rowKey,\n style = props.style,\n extra = props.extra,\n getHeight = props.getHeight,\n restProps = _objectWithoutProperties(props, _excluded);\n var record = data.record,\n indent = data.indent,\n renderIndex = data.index;\n var _useContext = useContext(TableContext, ['prefixCls', 'flattenColumns', 'fixColumn', 'componentWidth', 'scrollX']),\n scrollX = _useContext.scrollX,\n flattenColumns = _useContext.flattenColumns,\n prefixCls = _useContext.prefixCls,\n fixColumn = _useContext.fixColumn,\n componentWidth = _useContext.componentWidth;\n var rowInfo = useRowInfo(record, rowKey, index, indent);\n\n // ========================== Expand ==========================\n var rowSupportExpand = rowInfo.rowSupportExpand,\n expanded = rowInfo.expanded,\n rowProps = rowInfo.rowProps,\n expandedRowRender = rowInfo.expandedRowRender,\n expandedRowClassName = rowInfo.expandedRowClassName;\n var expandRowNode;\n if (rowSupportExpand && expanded) {\n var expandContent = expandedRowRender(record, index, indent + 1, expanded);\n var computedExpandedRowClassName = expandedRowClassName === null || expandedRowClassName === void 0 ? void 0 : expandedRowClassName(record, index, indent);\n var additionalProps = {};\n if (fixColumn) {\n additionalProps = {\n style: _defineProperty({}, '--virtual-width', \"\".concat(componentWidth, \"px\"))\n };\n }\n var rowCellCls = \"\".concat(prefixCls, \"-expanded-row-cell\");\n expandRowNode = /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-expanded-row\"), \"\".concat(prefixCls, \"-expanded-row-level-\").concat(indent + 1), computedExpandedRowClassName)\n }, /*#__PURE__*/React.createElement(Cell, {\n component: \"div\",\n prefixCls: prefixCls,\n className: classNames(rowCellCls, _defineProperty({}, \"\".concat(rowCellCls, \"-fixed\"), fixColumn)),\n additionalProps: additionalProps\n }, expandContent));\n }\n\n // ========================== Render ==========================\n\n var rowStyle = _objectSpread(_objectSpread({}, style), {}, {\n width: scrollX\n });\n if (extra) {\n rowStyle.position = 'absolute';\n rowStyle.pointerEvents = 'none';\n }\n var rowNode = /*#__PURE__*/React.createElement(\"div\", _extends({}, rowProps, restProps, {\n ref: rowSupportExpand ? null : ref,\n className: classNames(className, \"\".concat(prefixCls, \"-row\"), rowProps === null || rowProps === void 0 ? void 0 : rowProps.className, _defineProperty({}, \"\".concat(prefixCls, \"-row-extra\"), extra)),\n style: _objectSpread(_objectSpread({}, rowStyle), rowProps === null || rowProps === void 0 ? void 0 : rowProps.style)\n }), flattenColumns.map(function (column, colIndex) {\n return /*#__PURE__*/React.createElement(VirtualCell, {\n key: colIndex,\n rowInfo: rowInfo,\n column: column,\n colIndex: colIndex,\n indent: indent,\n index: index,\n renderIndex: renderIndex,\n record: record,\n inverse: extra,\n getHeight: getHeight\n });\n }));\n if (rowSupportExpand) {\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: ref\n }, rowNode, expandRowNode);\n }\n return rowNode;\n});\nvar ResponseBodyLine = responseImmutable(BodyLine);\nif (process.env.NODE_ENV !== 'production') {\n ResponseBodyLine.displayName = 'BodyLine';\n}\nexport default ResponseBodyLine;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useContext } from '@rc-component/context';\nimport classNames from 'classnames';\nimport VirtualList from 'rc-virtual-list';\nimport * as React from 'react';\nimport Cell from \"../Cell\";\nimport TableContext, { responseImmutable } from \"../context/TableContext\";\nimport useFlattenRecords from \"../hooks/useFlattenRecords\";\nimport BodyLine from \"./BodyLine\";\nimport { GridContext, StaticContext } from \"./context\";\nvar Grid = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var data = props.data,\n onScroll = props.onScroll;\n var _useContext = useContext(TableContext, ['flattenColumns', 'onColumnResize', 'getRowKey', 'prefixCls', 'expandedKeys', 'childrenColumnName', 'emptyNode', 'scrollX']),\n flattenColumns = _useContext.flattenColumns,\n onColumnResize = _useContext.onColumnResize,\n getRowKey = _useContext.getRowKey,\n expandedKeys = _useContext.expandedKeys,\n prefixCls = _useContext.prefixCls,\n childrenColumnName = _useContext.childrenColumnName,\n emptyNode = _useContext.emptyNode,\n scrollX = _useContext.scrollX;\n var _useContext2 = useContext(StaticContext),\n sticky = _useContext2.sticky,\n scrollY = _useContext2.scrollY,\n listItemHeight = _useContext2.listItemHeight;\n\n // =========================== Ref ============================\n var listRef = React.useRef();\n\n // =========================== Data ===========================\n var flattenData = useFlattenRecords(data, childrenColumnName, expandedKeys, getRowKey);\n\n // ========================== Column ==========================\n var columnsWidth = React.useMemo(function () {\n var total = 0;\n return flattenColumns.map(function (_ref) {\n var width = _ref.width,\n key = _ref.key;\n total += width;\n return [key, width, total];\n });\n }, [flattenColumns]);\n var columnsOffset = React.useMemo(function () {\n return columnsWidth.map(function (colWidth) {\n return colWidth[2];\n });\n }, [columnsWidth]);\n React.useEffect(function () {\n columnsWidth.forEach(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n key = _ref3[0],\n width = _ref3[1];\n onColumnResize(key, width);\n });\n }, [columnsWidth]);\n\n // =========================== Ref ============================\n React.useImperativeHandle(ref, function () {\n var obj = {\n scrollTo: function scrollTo(config) {\n var _listRef$current;\n (_listRef$current = listRef.current) === null || _listRef$current === void 0 || _listRef$current.scrollTo(config);\n }\n };\n Object.defineProperty(obj, 'scrollLeft', {\n get: function get() {\n var _listRef$current2;\n return ((_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 ? void 0 : _listRef$current2.getScrollInfo().x) || 0;\n },\n set: function set(value) {\n var _listRef$current3;\n (_listRef$current3 = listRef.current) === null || _listRef$current3 === void 0 || _listRef$current3.scrollTo({\n left: value\n });\n }\n });\n return obj;\n });\n\n // ======================= Col/Row Span =======================\n var getRowSpan = function getRowSpan(column, index) {\n var _flattenData$index;\n var record = (_flattenData$index = flattenData[index]) === null || _flattenData$index === void 0 ? void 0 : _flattenData$index.record;\n var onCell = column.onCell;\n if (onCell) {\n var _cellProps$rowSpan;\n var cellProps = onCell(record, index);\n return (_cellProps$rowSpan = cellProps === null || cellProps === void 0 ? void 0 : cellProps.rowSpan) !== null && _cellProps$rowSpan !== void 0 ? _cellProps$rowSpan : 1;\n }\n return 1;\n };\n var extraRender = function extraRender(info) {\n var start = info.start,\n end = info.end,\n getSize = info.getSize,\n offsetY = info.offsetY;\n\n // Do nothing if no data\n if (end < 0) {\n return null;\n }\n\n // Find first rowSpan column\n var firstRowSpanColumns = flattenColumns.filter(\n // rowSpan is 0\n function (column) {\n return getRowSpan(column, start) === 0;\n });\n var startIndex = start;\n var _loop = function _loop(i) {\n firstRowSpanColumns = firstRowSpanColumns.filter(function (column) {\n return getRowSpan(column, i) === 0;\n });\n if (!firstRowSpanColumns.length) {\n startIndex = i;\n return 1; // break\n }\n };\n for (var i = start; i >= 0; i -= 1) {\n if (_loop(i)) break;\n }\n\n // Find last rowSpan column\n var lastRowSpanColumns = flattenColumns.filter(\n // rowSpan is not 1\n function (column) {\n return getRowSpan(column, end) !== 1;\n });\n var endIndex = end;\n var _loop2 = function _loop2(_i) {\n lastRowSpanColumns = lastRowSpanColumns.filter(function (column) {\n return getRowSpan(column, _i) !== 1;\n });\n if (!lastRowSpanColumns.length) {\n endIndex = Math.max(_i - 1, end);\n return 1; // break\n }\n };\n for (var _i = end; _i < flattenData.length; _i += 1) {\n if (_loop2(_i)) break;\n }\n\n // Collect the line who has rowSpan\n var spanLines = [];\n var _loop3 = function _loop3(_i2) {\n var item = flattenData[_i2];\n\n // This code will never reach, just incase\n if (!item) {\n return 1; // continue\n }\n if (flattenColumns.some(function (column) {\n return getRowSpan(column, _i2) > 1;\n })) {\n spanLines.push(_i2);\n }\n };\n for (var _i2 = startIndex; _i2 <= endIndex; _i2 += 1) {\n if (_loop3(_i2)) continue;\n }\n\n // Patch extra line on the page\n var nodes = spanLines.map(function (index) {\n var item = flattenData[index];\n var rowKey = getRowKey(item.record, index);\n var getHeight = function getHeight(rowSpan) {\n var endItemIndex = index + rowSpan - 1;\n var endItemKey = getRowKey(flattenData[endItemIndex].record, endItemIndex);\n var sizeInfo = getSize(rowKey, endItemKey);\n return sizeInfo.bottom - sizeInfo.top;\n };\n var sizeInfo = getSize(rowKey);\n return /*#__PURE__*/React.createElement(BodyLine, {\n key: index,\n data: item,\n rowKey: rowKey,\n index: index,\n style: {\n top: -offsetY + sizeInfo.top\n },\n extra: true,\n getHeight: getHeight\n });\n });\n return nodes;\n };\n\n // ========================= Context ==========================\n var gridContext = React.useMemo(function () {\n return {\n columnsOffset: columnsOffset\n };\n }, [columnsOffset]);\n\n // ========================== Render ==========================\n var tblPrefixCls = \"\".concat(prefixCls, \"-tbody\");\n var bodyContent;\n if (flattenData.length) {\n // ========================== Sticky Scroll Bar ==========================\n var horizontalScrollBarStyle = {};\n if (sticky) {\n horizontalScrollBarStyle.position = 'sticky';\n horizontalScrollBarStyle.bottom = 0;\n if (_typeof(sticky) === 'object' && sticky.offsetScroll) {\n horizontalScrollBarStyle.bottom = sticky.offsetScroll;\n }\n }\n bodyContent = /*#__PURE__*/React.createElement(VirtualList, {\n fullHeight: false,\n ref: listRef,\n styles: {\n horizontalScrollBar: horizontalScrollBarStyle\n },\n className: classNames(tblPrefixCls, \"\".concat(tblPrefixCls, \"-virtual\")),\n height: scrollY,\n itemHeight: listItemHeight || 24,\n data: flattenData,\n itemKey: function itemKey(item) {\n return getRowKey(item.record);\n },\n scrollWidth: scrollX,\n onVirtualScroll: function onVirtualScroll(_ref4) {\n var x = _ref4.x;\n onScroll({\n scrollLeft: x\n });\n },\n extraRender: extraRender\n }, function (item, index, itemProps) {\n var rowKey = getRowKey(item.record, index);\n return /*#__PURE__*/React.createElement(BodyLine, _extends({\n data: item,\n rowKey: rowKey,\n index: index\n }, itemProps));\n });\n } else {\n bodyContent = /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-placeholder\"))\n }, /*#__PURE__*/React.createElement(Cell, {\n component: \"div\",\n prefixCls: prefixCls\n }, emptyNode));\n }\n return /*#__PURE__*/React.createElement(GridContext.Provider, {\n value: gridContext\n }, bodyContent);\n});\nvar ResponseGrid = responseImmutable(Grid);\nif (process.env.NODE_ENV !== 'production') {\n ResponseGrid.displayName = 'ResponseGrid';\n}\nexport default ResponseGrid;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport classNames from 'classnames';\nimport { warning } from 'rc-util';\nimport * as React from 'react';\nimport { INTERNAL_HOOKS } from \"../constant\";\nimport { makeImmutable } from \"../context/TableContext\";\nimport Table, { DEFAULT_PREFIX } from \"../Table\";\nimport Grid from \"./BodyGrid\";\nimport { StaticContext } from \"./context\";\nvar renderBody = function renderBody(rawData, props) {\n var ref = props.ref,\n onScroll = props.onScroll;\n return /*#__PURE__*/React.createElement(Grid, {\n ref: ref,\n data: rawData,\n onScroll: onScroll\n });\n};\nfunction VirtualTable(props, ref) {\n var columns = props.columns,\n scroll = props.scroll,\n sticky = props.sticky,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? DEFAULT_PREFIX : _props$prefixCls,\n className = props.className,\n listItemHeight = props.listItemHeight,\n components = props.components;\n var _ref = scroll || {},\n scrollX = _ref.x,\n scrollY = _ref.y;\n\n // Fill scrollX\n if (typeof scrollX !== 'number') {\n if (process.env.NODE_ENV !== 'production') {\n warning(!scrollX, '`scroll.x` in virtual table must be number.');\n }\n scrollX = 1;\n }\n\n // Fill scrollY\n if (typeof scrollY !== 'number') {\n scrollY = 500;\n if (process.env.NODE_ENV !== 'production') {\n warning(false, '`scroll.y` in virtual table must be number.');\n }\n }\n\n // ========================= Context ==========================\n var context = React.useMemo(function () {\n return {\n sticky: sticky,\n scrollY: scrollY,\n listItemHeight: listItemHeight\n };\n }, [sticky, scrollY, listItemHeight]);\n\n // ========================== Render ==========================\n return /*#__PURE__*/React.createElement(StaticContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(Table, _extends({}, props, {\n className: classNames(className, \"\".concat(prefixCls, \"-virtual\")),\n scroll: _objectSpread(_objectSpread({}, scroll), {}, {\n x: scrollX\n }),\n components: _objectSpread(_objectSpread({}, components), {}, {\n body: renderBody\n }),\n columns: columns,\n internalHooks: INTERNAL_HOOKS,\n tailor: true,\n ref: ref\n })));\n}\nvar RefVirtualTable = /*#__PURE__*/React.forwardRef(VirtualTable);\nif (process.env.NODE_ENV !== 'production') {\n RefVirtualTable.displayName = 'VirtualTable';\n}\nexport function genVirtualTable(shouldTriggerRender) {\n return makeImmutable(RefVirtualTable, shouldTriggerRender);\n}\nexport default genVirtualTable();","/* istanbul ignore next */\n/** This is a syntactic sugar for `columns` prop. So HOC will not work on this. */\n// eslint-disable-next-line no-unused-vars\nfunction Column(_) {\n return null;\n}\nexport default Column;","/* istanbul ignore next */\n/** This is a syntactic sugar for `columns` prop. So HOC will not work on this. */\n// eslint-disable-next-line no-unused-vars\nfunction ColumnGroup(_) {\n return null;\n}\nexport default ColumnGroup;","// This icon file is generated automatically.\nvar DownOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\" } }] }, \"name\": \"down\", \"theme\": \"outlined\" };\nexport default DownOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DownOutlinedSvg from \"@ant-design/icons-svg/es/asn/DownOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DownOutlined = function DownOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DownOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n DownOutlined.displayName = 'DownOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(DownOutlined);","/**\n * Webpack has bug for import loop, which is not the same behavior as ES module.\n * When util.js imports the TreeNode for tree generate will cause treeContextTypes be empty.\n */\nimport * as React from 'react';\nexport var TreeContext = /*#__PURE__*/React.createContext(null);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nvar Indent = function Indent(_ref) {\n var prefixCls = _ref.prefixCls,\n level = _ref.level,\n isStart = _ref.isStart,\n isEnd = _ref.isEnd;\n var baseClassName = \"\".concat(prefixCls, \"-indent-unit\");\n var list = [];\n for (var i = 0; i < level; i += 1) {\n list.push( /*#__PURE__*/React.createElement(\"span\", {\n key: i,\n className: classNames(baseClassName, _defineProperty(_defineProperty({}, \"\".concat(baseClassName, \"-start\"), isStart[i]), \"\".concat(baseClassName, \"-end\"), isEnd[i]))\n }));\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": \"true\",\n className: \"\".concat(prefixCls, \"-indent\")\n }, list);\n};\nexport default /*#__PURE__*/React.memo(Indent);","export default function getEntity(keyEntities, key) {\n return keyEntities[key];\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport toArray from \"rc-util/es/Children/toArray\";\nimport omit from \"rc-util/es/omit\";\nimport warning from \"rc-util/es/warning\";\nimport getEntity from \"./keyUtil\";\nexport function getPosition(level, index) {\n return \"\".concat(level, \"-\").concat(index);\n}\nexport function isTreeNode(node) {\n return node && node.type && node.type.isTreeNode;\n}\nexport function getKey(key, pos) {\n if (key !== null && key !== undefined) {\n return key;\n }\n return pos;\n}\nexport function fillFieldNames(fieldNames) {\n var _ref = fieldNames || {},\n title = _ref.title,\n _title = _ref._title,\n key = _ref.key,\n children = _ref.children;\n var mergedTitle = title || 'title';\n return {\n title: mergedTitle,\n _title: _title || [mergedTitle],\n key: key || 'key',\n children: children || 'children'\n };\n}\n\n/**\n * Warning if TreeNode do not provides key\n */\nexport function warningWithoutKey(treeData, fieldNames) {\n var keys = new Map();\n function dig(list) {\n var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n (list || []).forEach(function (treeNode) {\n var key = treeNode[fieldNames.key];\n var children = treeNode[fieldNames.children];\n warning(key !== null && key !== undefined, \"Tree node must have a certain key: [\".concat(path).concat(key, \"]\"));\n var recordKey = String(key);\n warning(!keys.has(recordKey) || key === null || key === undefined, \"Same 'key' exist in the Tree: \".concat(recordKey));\n keys.set(recordKey, true);\n dig(children, \"\".concat(path).concat(recordKey, \" > \"));\n });\n }\n dig(treeData);\n}\n\n/**\n * Convert `children` of Tree into `treeData` structure.\n */\nexport function convertTreeToData(rootNodes) {\n function dig(node) {\n var treeNodes = toArray(node);\n return treeNodes.map(function (treeNode) {\n // Filter invalidate node\n if (!isTreeNode(treeNode)) {\n warning(!treeNode, 'Tree/TreeNode can only accept TreeNode as children.');\n return null;\n }\n var key = treeNode.key;\n var _treeNode$props = treeNode.props,\n children = _treeNode$props.children,\n rest = _objectWithoutProperties(_treeNode$props, _excluded);\n var dataNode = _objectSpread({\n key: key\n }, rest);\n var parsedChildren = dig(children);\n if (parsedChildren.length) {\n dataNode.children = parsedChildren;\n }\n return dataNode;\n }).filter(function (dataNode) {\n return dataNode;\n });\n }\n return dig(rootNodes);\n}\n\n/**\n * Flat nest tree data into flatten list. This is used for virtual list render.\n * @param treeNodeList Origin data node list\n * @param expandedKeys\n * need expanded keys, provides `true` means all expanded (used in `rc-tree-select`).\n */\nexport function flattenTreeData(treeNodeList, expandedKeys, fieldNames) {\n var _fillFieldNames = fillFieldNames(fieldNames),\n fieldTitles = _fillFieldNames._title,\n fieldKey = _fillFieldNames.key,\n fieldChildren = _fillFieldNames.children;\n var expandedKeySet = new Set(expandedKeys === true ? [] : expandedKeys);\n var flattenList = [];\n function dig(list) {\n var parent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n return list.map(function (treeNode, index) {\n var pos = getPosition(parent ? parent.pos : '0', index);\n var mergedKey = getKey(treeNode[fieldKey], pos);\n\n // Pick matched title in field title list\n var mergedTitle;\n for (var i = 0; i < fieldTitles.length; i += 1) {\n var fieldTitle = fieldTitles[i];\n if (treeNode[fieldTitle] !== undefined) {\n mergedTitle = treeNode[fieldTitle];\n break;\n }\n }\n\n // Add FlattenDataNode into list\n var flattenNode = _objectSpread(_objectSpread({}, omit(treeNode, [].concat(_toConsumableArray(fieldTitles), [fieldKey, fieldChildren]))), {}, {\n title: mergedTitle,\n key: mergedKey,\n parent: parent,\n pos: pos,\n children: null,\n data: treeNode,\n isStart: [].concat(_toConsumableArray(parent ? parent.isStart : []), [index === 0]),\n isEnd: [].concat(_toConsumableArray(parent ? parent.isEnd : []), [index === list.length - 1])\n });\n flattenList.push(flattenNode);\n\n // Loop treeNode children\n if (expandedKeys === true || expandedKeySet.has(mergedKey)) {\n flattenNode.children = dig(treeNode[fieldChildren] || [], flattenNode);\n } else {\n flattenNode.children = [];\n }\n return flattenNode;\n });\n }\n dig(treeNodeList);\n return flattenList;\n}\n/**\n * Traverse all the data by `treeData`.\n * Please not use it out of the `rc-tree` since we may refactor this code.\n */\nexport function traverseDataNodes(dataNodes, callback,\n// To avoid too many params, let use config instead of origin param\nconfig) {\n var mergedConfig = {};\n if (_typeof(config) === 'object') {\n mergedConfig = config;\n } else {\n mergedConfig = {\n externalGetKey: config\n };\n }\n mergedConfig = mergedConfig || {};\n\n // Init config\n var _mergedConfig = mergedConfig,\n childrenPropName = _mergedConfig.childrenPropName,\n externalGetKey = _mergedConfig.externalGetKey,\n fieldNames = _mergedConfig.fieldNames;\n var _fillFieldNames2 = fillFieldNames(fieldNames),\n fieldKey = _fillFieldNames2.key,\n fieldChildren = _fillFieldNames2.children;\n var mergeChildrenPropName = childrenPropName || fieldChildren;\n\n // Get keys\n var syntheticGetKey;\n if (externalGetKey) {\n if (typeof externalGetKey === 'string') {\n syntheticGetKey = function syntheticGetKey(node) {\n return node[externalGetKey];\n };\n } else if (typeof externalGetKey === 'function') {\n syntheticGetKey = function syntheticGetKey(node) {\n return externalGetKey(node);\n };\n }\n } else {\n syntheticGetKey = function syntheticGetKey(node, pos) {\n return getKey(node[fieldKey], pos);\n };\n }\n\n // Process\n function processNode(node, index, parent, pathNodes) {\n var children = node ? node[mergeChildrenPropName] : dataNodes;\n var pos = node ? getPosition(parent.pos, index) : '0';\n var connectNodes = node ? [].concat(_toConsumableArray(pathNodes), [node]) : [];\n\n // Process node if is not root\n if (node) {\n var key = syntheticGetKey(node, pos);\n var _data = {\n node: node,\n index: index,\n pos: pos,\n key: key,\n parentPos: parent.node ? parent.pos : null,\n level: parent.level + 1,\n nodes: connectNodes\n };\n callback(_data);\n }\n\n // Process children node\n if (children) {\n children.forEach(function (subNode, subIndex) {\n processNode(subNode, subIndex, {\n node: node,\n pos: pos,\n level: parent ? parent.level + 1 : -1\n }, connectNodes);\n });\n }\n }\n processNode(null);\n}\n/**\n * Convert `treeData` into entity records.\n */\nexport function convertDataToEntities(dataNodes) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n initWrapper = _ref2.initWrapper,\n processEntity = _ref2.processEntity,\n onProcessFinished = _ref2.onProcessFinished,\n externalGetKey = _ref2.externalGetKey,\n childrenPropName = _ref2.childrenPropName,\n fieldNames = _ref2.fieldNames;\n var /** @deprecated Use `config.externalGetKey` instead */\n legacyExternalGetKey = arguments.length > 2 ? arguments[2] : undefined;\n // Init config\n var mergedExternalGetKey = externalGetKey || legacyExternalGetKey;\n var posEntities = {};\n var keyEntities = {};\n var wrapper = {\n posEntities: posEntities,\n keyEntities: keyEntities\n };\n if (initWrapper) {\n wrapper = initWrapper(wrapper) || wrapper;\n }\n traverseDataNodes(dataNodes, function (item) {\n var node = item.node,\n index = item.index,\n pos = item.pos,\n key = item.key,\n parentPos = item.parentPos,\n level = item.level,\n nodes = item.nodes;\n var entity = {\n node: node,\n nodes: nodes,\n index: index,\n key: key,\n pos: pos,\n level: level\n };\n var mergedKey = getKey(key, pos);\n posEntities[pos] = entity;\n keyEntities[mergedKey] = entity;\n\n // Fill children\n entity.parent = posEntities[parentPos];\n if (entity.parent) {\n entity.parent.children = entity.parent.children || [];\n entity.parent.children.push(entity);\n }\n if (processEntity) {\n processEntity(entity, wrapper);\n }\n }, {\n externalGetKey: mergedExternalGetKey,\n childrenPropName: childrenPropName,\n fieldNames: fieldNames\n });\n if (onProcessFinished) {\n onProcessFinished(wrapper);\n }\n return wrapper;\n}\n/**\n * Get TreeNode props with Tree props.\n */\nexport function getTreeNodeProps(key, _ref3) {\n var expandedKeys = _ref3.expandedKeys,\n selectedKeys = _ref3.selectedKeys,\n loadedKeys = _ref3.loadedKeys,\n loadingKeys = _ref3.loadingKeys,\n checkedKeys = _ref3.checkedKeys,\n halfCheckedKeys = _ref3.halfCheckedKeys,\n dragOverNodeKey = _ref3.dragOverNodeKey,\n dropPosition = _ref3.dropPosition,\n keyEntities = _ref3.keyEntities;\n var entity = getEntity(keyEntities, key);\n var treeNodeProps = {\n eventKey: key,\n expanded: expandedKeys.indexOf(key) !== -1,\n selected: selectedKeys.indexOf(key) !== -1,\n loaded: loadedKeys.indexOf(key) !== -1,\n loading: loadingKeys.indexOf(key) !== -1,\n checked: checkedKeys.indexOf(key) !== -1,\n halfChecked: halfCheckedKeys.indexOf(key) !== -1,\n pos: String(entity ? entity.pos : ''),\n // [Legacy] Drag props\n // Since the interaction of drag is changed, the semantic of the props are\n // not accuracy, I think it should be finally removed\n dragOver: dragOverNodeKey === key && dropPosition === 0,\n dragOverGapTop: dragOverNodeKey === key && dropPosition === -1,\n dragOverGapBottom: dragOverNodeKey === key && dropPosition === 1\n };\n return treeNodeProps;\n}\nexport function convertNodePropsToEventData(props) {\n var data = props.data,\n expanded = props.expanded,\n selected = props.selected,\n checked = props.checked,\n loaded = props.loaded,\n loading = props.loading,\n halfChecked = props.halfChecked,\n dragOver = props.dragOver,\n dragOverGapTop = props.dragOverGapTop,\n dragOverGapBottom = props.dragOverGapBottom,\n pos = props.pos,\n active = props.active,\n eventKey = props.eventKey;\n var eventData = _objectSpread(_objectSpread({}, data), {}, {\n expanded: expanded,\n selected: selected,\n checked: checked,\n loaded: loaded,\n loading: loading,\n halfChecked: halfChecked,\n dragOver: dragOver,\n dragOverGapTop: dragOverGapTop,\n dragOverGapBottom: dragOverGapBottom,\n pos: pos,\n active: active,\n key: eventKey\n });\n if (!('props' in eventData)) {\n Object.defineProperty(eventData, 'props', {\n get: function get() {\n warning(false, 'Second param return from event is node data instead of TreeNode instance. Please read value directly instead of reading from `props`.');\n return props;\n }\n });\n }\n return eventData;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"eventKey\", \"className\", \"style\", \"dragOver\", \"dragOverGapTop\", \"dragOverGapBottom\", \"isLeaf\", \"isStart\", \"isEnd\", \"expanded\", \"selected\", \"checked\", \"halfChecked\", \"loading\", \"domRef\", \"active\", \"data\", \"onMouseMove\", \"selectable\"];\nimport classNames from 'classnames';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport * as React from 'react';\n// @ts-ignore\nimport { TreeContext } from \"./contextTypes\";\nimport Indent from \"./Indent\";\nimport getEntity from \"./utils/keyUtil\";\nimport { convertNodePropsToEventData } from \"./utils/treeUtil\";\nvar ICON_OPEN = 'open';\nvar ICON_CLOSE = 'close';\nvar defaultTitle = '---';\nvar InternalTreeNode = /*#__PURE__*/function (_React$Component) {\n _inherits(InternalTreeNode, _React$Component);\n var _super = _createSuper(InternalTreeNode);\n function InternalTreeNode() {\n var _this;\n _classCallCheck(this, InternalTreeNode);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n dragNodeHighlight: false\n });\n _defineProperty(_assertThisInitialized(_this), \"selectHandle\", void 0);\n _defineProperty(_assertThisInitialized(_this), \"cacheIndent\", void 0);\n _defineProperty(_assertThisInitialized(_this), \"onSelectorClick\", function (e) {\n // Click trigger before select/check operation\n var onNodeClick = _this.props.context.onNodeClick;\n onNodeClick(e, convertNodePropsToEventData(_this.props));\n if (_this.isSelectable()) {\n _this.onSelect(e);\n } else {\n _this.onCheck(e);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onSelectorDoubleClick\", function (e) {\n var onNodeDoubleClick = _this.props.context.onNodeDoubleClick;\n onNodeDoubleClick(e, convertNodePropsToEventData(_this.props));\n });\n _defineProperty(_assertThisInitialized(_this), \"onSelect\", function (e) {\n if (_this.isDisabled()) return;\n var onNodeSelect = _this.props.context.onNodeSelect;\n onNodeSelect(e, convertNodePropsToEventData(_this.props));\n });\n _defineProperty(_assertThisInitialized(_this), \"onCheck\", function (e) {\n if (_this.isDisabled()) return;\n var _this$props = _this.props,\n disableCheckbox = _this$props.disableCheckbox,\n checked = _this$props.checked;\n var onNodeCheck = _this.props.context.onNodeCheck;\n if (!_this.isCheckable() || disableCheckbox) return;\n var targetChecked = !checked;\n onNodeCheck(e, convertNodePropsToEventData(_this.props), targetChecked);\n });\n _defineProperty(_assertThisInitialized(_this), \"onMouseEnter\", function (e) {\n var onNodeMouseEnter = _this.props.context.onNodeMouseEnter;\n onNodeMouseEnter(e, convertNodePropsToEventData(_this.props));\n });\n _defineProperty(_assertThisInitialized(_this), \"onMouseLeave\", function (e) {\n var onNodeMouseLeave = _this.props.context.onNodeMouseLeave;\n onNodeMouseLeave(e, convertNodePropsToEventData(_this.props));\n });\n _defineProperty(_assertThisInitialized(_this), \"onContextMenu\", function (e) {\n var onNodeContextMenu = _this.props.context.onNodeContextMenu;\n onNodeContextMenu(e, convertNodePropsToEventData(_this.props));\n });\n _defineProperty(_assertThisInitialized(_this), \"onDragStart\", function (e) {\n var onNodeDragStart = _this.props.context.onNodeDragStart;\n e.stopPropagation();\n _this.setState({\n dragNodeHighlight: true\n });\n onNodeDragStart(e, _assertThisInitialized(_this));\n try {\n // ie throw error\n // firefox-need-it\n e.dataTransfer.setData('text/plain', '');\n } catch (error) {\n // empty\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onDragEnter\", function (e) {\n var onNodeDragEnter = _this.props.context.onNodeDragEnter;\n e.preventDefault();\n e.stopPropagation();\n onNodeDragEnter(e, _assertThisInitialized(_this));\n });\n _defineProperty(_assertThisInitialized(_this), \"onDragOver\", function (e) {\n var onNodeDragOver = _this.props.context.onNodeDragOver;\n e.preventDefault();\n e.stopPropagation();\n onNodeDragOver(e, _assertThisInitialized(_this));\n });\n _defineProperty(_assertThisInitialized(_this), \"onDragLeave\", function (e) {\n var onNodeDragLeave = _this.props.context.onNodeDragLeave;\n e.stopPropagation();\n onNodeDragLeave(e, _assertThisInitialized(_this));\n });\n _defineProperty(_assertThisInitialized(_this), \"onDragEnd\", function (e) {\n var onNodeDragEnd = _this.props.context.onNodeDragEnd;\n e.stopPropagation();\n _this.setState({\n dragNodeHighlight: false\n });\n onNodeDragEnd(e, _assertThisInitialized(_this));\n });\n _defineProperty(_assertThisInitialized(_this), \"onDrop\", function (e) {\n var onNodeDrop = _this.props.context.onNodeDrop;\n e.preventDefault();\n e.stopPropagation();\n _this.setState({\n dragNodeHighlight: false\n });\n onNodeDrop(e, _assertThisInitialized(_this));\n });\n // Disabled item still can be switch\n _defineProperty(_assertThisInitialized(_this), \"onExpand\", function (e) {\n var _this$props2 = _this.props,\n loading = _this$props2.loading,\n onNodeExpand = _this$props2.context.onNodeExpand;\n if (loading) return;\n onNodeExpand(e, convertNodePropsToEventData(_this.props));\n });\n // Drag usage\n _defineProperty(_assertThisInitialized(_this), \"setSelectHandle\", function (node) {\n _this.selectHandle = node;\n });\n _defineProperty(_assertThisInitialized(_this), \"getNodeState\", function () {\n var expanded = _this.props.expanded;\n if (_this.isLeaf()) {\n return null;\n }\n return expanded ? ICON_OPEN : ICON_CLOSE;\n });\n _defineProperty(_assertThisInitialized(_this), \"hasChildren\", function () {\n var eventKey = _this.props.eventKey;\n var keyEntities = _this.props.context.keyEntities;\n var _ref = getEntity(keyEntities, eventKey) || {},\n children = _ref.children;\n return !!(children || []).length;\n });\n _defineProperty(_assertThisInitialized(_this), \"isLeaf\", function () {\n var _this$props3 = _this.props,\n isLeaf = _this$props3.isLeaf,\n loaded = _this$props3.loaded;\n var loadData = _this.props.context.loadData;\n var hasChildren = _this.hasChildren();\n if (isLeaf === false) {\n return false;\n }\n return isLeaf || !loadData && !hasChildren || loadData && loaded && !hasChildren;\n });\n _defineProperty(_assertThisInitialized(_this), \"isDisabled\", function () {\n var disabled = _this.props.disabled;\n var treeDisabled = _this.props.context.disabled;\n return !!(treeDisabled || disabled);\n });\n _defineProperty(_assertThisInitialized(_this), \"isCheckable\", function () {\n var checkable = _this.props.checkable;\n var treeCheckable = _this.props.context.checkable;\n\n // Return false if tree or treeNode is not checkable\n if (!treeCheckable || checkable === false) return false;\n return treeCheckable;\n });\n // Load data to avoid default expanded tree without data\n _defineProperty(_assertThisInitialized(_this), \"syncLoadData\", function (props) {\n var expanded = props.expanded,\n loading = props.loading,\n loaded = props.loaded;\n var _this$props$context = _this.props.context,\n loadData = _this$props$context.loadData,\n onNodeLoad = _this$props$context.onNodeLoad;\n if (loading) {\n return;\n }\n\n // read from state to avoid loadData at same time\n if (loadData && expanded && !_this.isLeaf()) {\n // We needn't reload data when has children in sync logic\n // It's only needed in node expanded\n if (!_this.hasChildren() && !loaded) {\n onNodeLoad(convertNodePropsToEventData(_this.props));\n }\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"isDraggable\", function () {\n var _this$props4 = _this.props,\n data = _this$props4.data,\n draggable = _this$props4.context.draggable;\n return !!(draggable && (!draggable.nodeDraggable || draggable.nodeDraggable(data)));\n });\n // ==================== Render: Drag Handler ====================\n _defineProperty(_assertThisInitialized(_this), \"renderDragHandler\", function () {\n var _this$props$context2 = _this.props.context,\n draggable = _this$props$context2.draggable,\n prefixCls = _this$props$context2.prefixCls;\n return draggable !== null && draggable !== void 0 && draggable.icon ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-draggable-icon\")\n }, draggable.icon) : null;\n });\n // ====================== Render: Switcher ======================\n _defineProperty(_assertThisInitialized(_this), \"renderSwitcherIconDom\", function (isLeaf) {\n var switcherIconFromProps = _this.props.switcherIcon;\n var switcherIconFromCtx = _this.props.context.switcherIcon;\n var switcherIcon = switcherIconFromProps || switcherIconFromCtx;\n // if switcherIconDom is null, no render switcher span\n if (typeof switcherIcon === 'function') {\n return switcherIcon(_objectSpread(_objectSpread({}, _this.props), {}, {\n isLeaf: isLeaf\n }));\n }\n return switcherIcon;\n });\n // Switcher\n _defineProperty(_assertThisInitialized(_this), \"renderSwitcher\", function () {\n var expanded = _this.props.expanded;\n var prefixCls = _this.props.context.prefixCls;\n if (_this.isLeaf()) {\n // if switcherIconDom is null, no render switcher span\n var _switcherIconDom = _this.renderSwitcherIconDom(true);\n return _switcherIconDom !== false ? /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(prefixCls, \"-switcher\"), \"\".concat(prefixCls, \"-switcher-noop\"))\n }, _switcherIconDom) : null;\n }\n var switcherCls = classNames(\"\".concat(prefixCls, \"-switcher\"), \"\".concat(prefixCls, \"-switcher_\").concat(expanded ? ICON_OPEN : ICON_CLOSE));\n var switcherIconDom = _this.renderSwitcherIconDom(false);\n return switcherIconDom !== false ? /*#__PURE__*/React.createElement(\"span\", {\n onClick: _this.onExpand,\n className: switcherCls\n }, switcherIconDom) : null;\n });\n // ====================== Render: Checkbox ======================\n // Checkbox\n _defineProperty(_assertThisInitialized(_this), \"renderCheckbox\", function () {\n var _this$props5 = _this.props,\n checked = _this$props5.checked,\n halfChecked = _this$props5.halfChecked,\n disableCheckbox = _this$props5.disableCheckbox;\n var prefixCls = _this.props.context.prefixCls;\n var disabled = _this.isDisabled();\n var checkable = _this.isCheckable();\n if (!checkable) return null;\n\n // [Legacy] Custom element should be separate with `checkable` in future\n var $custom = typeof checkable !== 'boolean' ? checkable : null;\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(prefixCls, \"-checkbox\"), checked && \"\".concat(prefixCls, \"-checkbox-checked\"), !checked && halfChecked && \"\".concat(prefixCls, \"-checkbox-indeterminate\"), (disabled || disableCheckbox) && \"\".concat(prefixCls, \"-checkbox-disabled\")),\n onClick: _this.onCheck\n }, $custom);\n });\n // ==================== Render: Title + Icon ====================\n _defineProperty(_assertThisInitialized(_this), \"renderIcon\", function () {\n var loading = _this.props.loading;\n var prefixCls = _this.props.context.prefixCls;\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(prefixCls, \"-iconEle\"), \"\".concat(prefixCls, \"-icon__\").concat(_this.getNodeState() || 'docu'), loading && \"\".concat(prefixCls, \"-icon_loading\"))\n });\n });\n // Icon + Title\n _defineProperty(_assertThisInitialized(_this), \"renderSelector\", function () {\n var dragNodeHighlight = _this.state.dragNodeHighlight;\n var _this$props6 = _this.props,\n _this$props6$title = _this$props6.title,\n title = _this$props6$title === void 0 ? defaultTitle : _this$props6$title,\n selected = _this$props6.selected,\n icon = _this$props6.icon,\n loading = _this$props6.loading,\n data = _this$props6.data;\n var _this$props$context3 = _this.props.context,\n prefixCls = _this$props$context3.prefixCls,\n showIcon = _this$props$context3.showIcon,\n treeIcon = _this$props$context3.icon,\n loadData = _this$props$context3.loadData,\n titleRender = _this$props$context3.titleRender;\n var disabled = _this.isDisabled();\n var wrapClass = \"\".concat(prefixCls, \"-node-content-wrapper\");\n\n // Icon - Still show loading icon when loading without showIcon\n var $icon;\n if (showIcon) {\n var currentIcon = icon || treeIcon;\n $icon = currentIcon ? /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(prefixCls, \"-iconEle\"), \"\".concat(prefixCls, \"-icon__customize\"))\n }, typeof currentIcon === 'function' ? currentIcon(_this.props) : currentIcon) : _this.renderIcon();\n } else if (loadData && loading) {\n $icon = _this.renderIcon();\n }\n\n // Title\n var titleNode;\n if (typeof title === 'function') {\n titleNode = title(data);\n } else if (titleRender) {\n titleNode = titleRender(data);\n } else {\n titleNode = title;\n }\n var $title = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-title\")\n }, titleNode);\n return /*#__PURE__*/React.createElement(\"span\", {\n ref: _this.setSelectHandle,\n title: typeof title === 'string' ? title : '',\n className: classNames(\"\".concat(wrapClass), \"\".concat(wrapClass, \"-\").concat(_this.getNodeState() || 'normal'), !disabled && (selected || dragNodeHighlight) && \"\".concat(prefixCls, \"-node-selected\")),\n onMouseEnter: _this.onMouseEnter,\n onMouseLeave: _this.onMouseLeave,\n onContextMenu: _this.onContextMenu,\n onClick: _this.onSelectorClick,\n onDoubleClick: _this.onSelectorDoubleClick\n }, $icon, $title, _this.renderDropIndicator());\n });\n // =================== Render: Drop Indicator ===================\n _defineProperty(_assertThisInitialized(_this), \"renderDropIndicator\", function () {\n var _this$props7 = _this.props,\n disabled = _this$props7.disabled,\n eventKey = _this$props7.eventKey;\n var _this$props$context4 = _this.props.context,\n draggable = _this$props$context4.draggable,\n dropLevelOffset = _this$props$context4.dropLevelOffset,\n dropPosition = _this$props$context4.dropPosition,\n prefixCls = _this$props$context4.prefixCls,\n indent = _this$props$context4.indent,\n dropIndicatorRender = _this$props$context4.dropIndicatorRender,\n dragOverNodeKey = _this$props$context4.dragOverNodeKey,\n direction = _this$props$context4.direction;\n var rootDraggable = !!draggable;\n // allowDrop is calculated in Tree.tsx, there is no need for calc it here\n var showIndicator = !disabled && rootDraggable && dragOverNodeKey === eventKey;\n\n // This is a hot fix which is already fixed in\n // https://github.com/react-component/tree/pull/743/files\n // But some case need break point so we hack on this\n // ref https://github.com/ant-design/ant-design/issues/43493\n var mergedIndent = indent !== null && indent !== void 0 ? indent : _this.cacheIndent;\n _this.cacheIndent = indent;\n return showIndicator ? dropIndicatorRender({\n dropPosition: dropPosition,\n dropLevelOffset: dropLevelOffset,\n indent: mergedIndent,\n prefixCls: prefixCls,\n direction: direction\n }) : null;\n });\n return _this;\n }\n _createClass(InternalTreeNode, [{\n key: \"componentDidMount\",\n value:\n // Isomorphic needn't load data in server side\n function componentDidMount() {\n this.syncLoadData(this.props);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.syncLoadData(this.props);\n }\n }, {\n key: \"isSelectable\",\n value: function isSelectable() {\n var selectable = this.props.selectable;\n var treeSelectable = this.props.context.selectable;\n\n // Ignore when selectable is undefined or null\n if (typeof selectable === 'boolean') {\n return selectable;\n }\n return treeSelectable;\n }\n }, {\n key: \"render\",\n value:\n // =========================== Render ===========================\n function render() {\n var _classNames;\n var _this$props8 = this.props,\n eventKey = _this$props8.eventKey,\n className = _this$props8.className,\n style = _this$props8.style,\n dragOver = _this$props8.dragOver,\n dragOverGapTop = _this$props8.dragOverGapTop,\n dragOverGapBottom = _this$props8.dragOverGapBottom,\n isLeaf = _this$props8.isLeaf,\n isStart = _this$props8.isStart,\n isEnd = _this$props8.isEnd,\n expanded = _this$props8.expanded,\n selected = _this$props8.selected,\n checked = _this$props8.checked,\n halfChecked = _this$props8.halfChecked,\n loading = _this$props8.loading,\n domRef = _this$props8.domRef,\n active = _this$props8.active,\n data = _this$props8.data,\n onMouseMove = _this$props8.onMouseMove,\n selectable = _this$props8.selectable,\n otherProps = _objectWithoutProperties(_this$props8, _excluded);\n var _this$props$context5 = this.props.context,\n prefixCls = _this$props$context5.prefixCls,\n filterTreeNode = _this$props$context5.filterTreeNode,\n keyEntities = _this$props$context5.keyEntities,\n dropContainerKey = _this$props$context5.dropContainerKey,\n dropTargetKey = _this$props$context5.dropTargetKey,\n draggingNodeKey = _this$props$context5.draggingNodeKey;\n var disabled = this.isDisabled();\n var dataOrAriaAttributeProps = pickAttrs(otherProps, {\n aria: true,\n data: true\n });\n var _ref2 = getEntity(keyEntities, eventKey) || {},\n level = _ref2.level;\n var isEndNode = isEnd[isEnd.length - 1];\n var mergedDraggable = this.isDraggable();\n var draggableWithoutDisabled = !disabled && mergedDraggable;\n var dragging = draggingNodeKey === eventKey;\n var ariaSelected = selectable !== undefined ? {\n 'aria-selected': !!selectable\n } : undefined;\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: domRef,\n className: classNames(className, \"\".concat(prefixCls, \"-treenode\"), (_classNames = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_classNames, \"\".concat(prefixCls, \"-treenode-disabled\"), disabled), \"\".concat(prefixCls, \"-treenode-switcher-\").concat(expanded ? 'open' : 'close'), !isLeaf), \"\".concat(prefixCls, \"-treenode-checkbox-checked\"), checked), \"\".concat(prefixCls, \"-treenode-checkbox-indeterminate\"), halfChecked), \"\".concat(prefixCls, \"-treenode-selected\"), selected), \"\".concat(prefixCls, \"-treenode-loading\"), loading), \"\".concat(prefixCls, \"-treenode-active\"), active), \"\".concat(prefixCls, \"-treenode-leaf-last\"), isEndNode), \"\".concat(prefixCls, \"-treenode-draggable\"), mergedDraggable), \"dragging\", dragging), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_classNames, 'drop-target', dropTargetKey === eventKey), 'drop-container', dropContainerKey === eventKey), 'drag-over', !disabled && dragOver), 'drag-over-gap-top', !disabled && dragOverGapTop), 'drag-over-gap-bottom', !disabled && dragOverGapBottom), 'filter-node', filterTreeNode && filterTreeNode(convertNodePropsToEventData(this.props))))),\n style: style\n // Draggable config\n ,\n draggable: draggableWithoutDisabled,\n \"aria-grabbed\": dragging,\n onDragStart: draggableWithoutDisabled ? this.onDragStart : undefined\n // Drop config\n ,\n onDragEnter: mergedDraggable ? this.onDragEnter : undefined,\n onDragOver: mergedDraggable ? this.onDragOver : undefined,\n onDragLeave: mergedDraggable ? this.onDragLeave : undefined,\n onDrop: mergedDraggable ? this.onDrop : undefined,\n onDragEnd: mergedDraggable ? this.onDragEnd : undefined,\n onMouseMove: onMouseMove\n }, ariaSelected, dataOrAriaAttributeProps), /*#__PURE__*/React.createElement(Indent, {\n prefixCls: prefixCls,\n level: level,\n isStart: isStart,\n isEnd: isEnd\n }), this.renderDragHandler(), this.renderSwitcher(), this.renderCheckbox(), this.renderSelector());\n }\n }]);\n return InternalTreeNode;\n}(React.Component);\nvar ContextTreeNode = function ContextTreeNode(props) {\n return /*#__PURE__*/React.createElement(TreeContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(InternalTreeNode, _extends({}, props, {\n context: context\n }));\n });\n};\nContextTreeNode.displayName = 'TreeNode';\nContextTreeNode.isTreeNode = 1;\nexport default ContextTreeNode;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\"];\n/* eslint-disable no-lonely-if */\n/**\n * Legacy code. Should avoid to use if you are new to import these code.\n */\n\nimport warning from \"rc-util/es/warning\";\nimport React from 'react';\nimport TreeNode from \"./TreeNode\";\nimport getEntity from \"./utils/keyUtil\";\nexport { getPosition, isTreeNode } from \"./utils/treeUtil\";\nexport function arrDel(list, value) {\n if (!list) return [];\n var clone = list.slice();\n var index = clone.indexOf(value);\n if (index >= 0) {\n clone.splice(index, 1);\n }\n return clone;\n}\nexport function arrAdd(list, value) {\n var clone = (list || []).slice();\n if (clone.indexOf(value) === -1) {\n clone.push(value);\n }\n return clone;\n}\nexport function posToArr(pos) {\n return pos.split('-');\n}\nexport function getDragChildrenKeys(dragNodeKey, keyEntities) {\n // not contains self\n // self for left or right drag\n var dragChildrenKeys = [];\n var entity = getEntity(keyEntities, dragNodeKey);\n function dig() {\n var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n list.forEach(function (_ref) {\n var key = _ref.key,\n children = _ref.children;\n dragChildrenKeys.push(key);\n dig(children);\n });\n }\n dig(entity.children);\n return dragChildrenKeys;\n}\nexport function isLastChild(treeNodeEntity) {\n if (treeNodeEntity.parent) {\n var posArr = posToArr(treeNodeEntity.pos);\n return Number(posArr[posArr.length - 1]) === treeNodeEntity.parent.children.length - 1;\n }\n return false;\n}\nexport function isFirstChild(treeNodeEntity) {\n var posArr = posToArr(treeNodeEntity.pos);\n return Number(posArr[posArr.length - 1]) === 0;\n}\n\n// Only used when drag, not affect SSR.\nexport function calcDropPosition(event, dragNode, targetNode, indent, startMousePosition, allowDrop, flattenedNodes, keyEntities, expandKeys, direction) {\n var _abstractDropNodeEnti;\n var clientX = event.clientX,\n clientY = event.clientY;\n var _getBoundingClientRec = event.target.getBoundingClientRect(),\n top = _getBoundingClientRec.top,\n height = _getBoundingClientRec.height;\n // optional chain for testing\n var horizontalMouseOffset = (direction === 'rtl' ? -1 : 1) * (((startMousePosition === null || startMousePosition === void 0 ? void 0 : startMousePosition.x) || 0) - clientX);\n var rawDropLevelOffset = (horizontalMouseOffset - 12) / indent;\n\n // Filter the expanded keys to exclude the node that not has children currently (like async nodes).\n var filteredExpandKeys = expandKeys.filter(function (key) {\n var _keyEntities$key;\n return (_keyEntities$key = keyEntities[key]) === null || _keyEntities$key === void 0 || (_keyEntities$key = _keyEntities$key.children) === null || _keyEntities$key === void 0 ? void 0 : _keyEntities$key.length;\n });\n\n // find abstract drop node by horizontal offset\n var abstractDropNodeEntity = getEntity(keyEntities, targetNode.props.eventKey);\n if (clientY < top + height / 2) {\n // first half, set abstract drop node to previous node\n var nodeIndex = flattenedNodes.findIndex(function (flattenedNode) {\n return flattenedNode.key === abstractDropNodeEntity.key;\n });\n var prevNodeIndex = nodeIndex <= 0 ? 0 : nodeIndex - 1;\n var prevNodeKey = flattenedNodes[prevNodeIndex].key;\n abstractDropNodeEntity = getEntity(keyEntities, prevNodeKey);\n }\n var initialAbstractDropNodeKey = abstractDropNodeEntity.key;\n var abstractDragOverEntity = abstractDropNodeEntity;\n var dragOverNodeKey = abstractDropNodeEntity.key;\n var dropPosition = 0;\n var dropLevelOffset = 0;\n\n // Only allow cross level drop when dragging on a non-expanded node\n if (!filteredExpandKeys.includes(initialAbstractDropNodeKey)) {\n for (var i = 0; i < rawDropLevelOffset; i += 1) {\n if (isLastChild(abstractDropNodeEntity)) {\n abstractDropNodeEntity = abstractDropNodeEntity.parent;\n dropLevelOffset += 1;\n } else {\n break;\n }\n }\n }\n var abstractDragDataNode = dragNode.props.data;\n var abstractDropDataNode = abstractDropNodeEntity.node;\n var dropAllowed = true;\n if (isFirstChild(abstractDropNodeEntity) && abstractDropNodeEntity.level === 0 && clientY < top + height / 2 && allowDrop({\n dragNode: abstractDragDataNode,\n dropNode: abstractDropDataNode,\n dropPosition: -1\n }) && abstractDropNodeEntity.key === targetNode.props.eventKey) {\n // first half of first node in first level\n dropPosition = -1;\n } else if ((abstractDragOverEntity.children || []).length && filteredExpandKeys.includes(dragOverNodeKey)) {\n // drop on expanded node\n // only allow drop inside\n if (allowDrop({\n dragNode: abstractDragDataNode,\n dropNode: abstractDropDataNode,\n dropPosition: 0\n })) {\n dropPosition = 0;\n } else {\n dropAllowed = false;\n }\n } else if (dropLevelOffset === 0) {\n if (rawDropLevelOffset > -1.5) {\n // | Node | <- abstractDropNode\n // | -^-===== | <- mousePosition\n // 1. try drop after\n // 2. do not allow drop\n if (allowDrop({\n dragNode: abstractDragDataNode,\n dropNode: abstractDropDataNode,\n dropPosition: 1\n })) {\n dropPosition = 1;\n } else {\n dropAllowed = false;\n }\n } else {\n // | Node | <- abstractDropNode\n // | ---==^== | <- mousePosition\n // whether it has children or doesn't has children\n // always\n // 1. try drop inside\n // 2. try drop after\n // 3. do not allow drop\n if (allowDrop({\n dragNode: abstractDragDataNode,\n dropNode: abstractDropDataNode,\n dropPosition: 0\n })) {\n dropPosition = 0;\n } else if (allowDrop({\n dragNode: abstractDragDataNode,\n dropNode: abstractDropDataNode,\n dropPosition: 1\n })) {\n dropPosition = 1;\n } else {\n dropAllowed = false;\n }\n }\n } else {\n // | Node1 | <- abstractDropNode\n // | Node2 |\n // --^--|----=====| <- mousePosition\n // 1. try insert after Node1\n // 2. do not allow drop\n if (allowDrop({\n dragNode: abstractDragDataNode,\n dropNode: abstractDropDataNode,\n dropPosition: 1\n })) {\n dropPosition = 1;\n } else {\n dropAllowed = false;\n }\n }\n return {\n dropPosition: dropPosition,\n dropLevelOffset: dropLevelOffset,\n dropTargetKey: abstractDropNodeEntity.key,\n dropTargetPos: abstractDropNodeEntity.pos,\n dragOverNodeKey: dragOverNodeKey,\n dropContainerKey: dropPosition === 0 ? null : ((_abstractDropNodeEnti = abstractDropNodeEntity.parent) === null || _abstractDropNodeEnti === void 0 ? void 0 : _abstractDropNodeEnti.key) || null,\n dropAllowed: dropAllowed\n };\n}\n\n/**\n * Return selectedKeys according with multiple prop\n * @param selectedKeys\n * @param props\n * @returns [string]\n */\nexport function calcSelectedKeys(selectedKeys, props) {\n if (!selectedKeys) return undefined;\n var multiple = props.multiple;\n if (multiple) {\n return selectedKeys.slice();\n }\n if (selectedKeys.length) {\n return [selectedKeys[0]];\n }\n return selectedKeys;\n}\nvar internalProcessProps = function internalProcessProps(props) {\n return props;\n};\nexport function convertDataToTree(treeData, processor) {\n if (!treeData) return [];\n var _ref2 = processor || {},\n _ref2$processProps = _ref2.processProps,\n processProps = _ref2$processProps === void 0 ? internalProcessProps : _ref2$processProps;\n var list = Array.isArray(treeData) ? treeData : [treeData];\n return list.map(function (_ref3) {\n var children = _ref3.children,\n props = _objectWithoutProperties(_ref3, _excluded);\n var childrenNodes = convertDataToTree(children, processor);\n return /*#__PURE__*/React.createElement(TreeNode, _extends({\n key: props.key\n }, processProps(props)), childrenNodes);\n });\n}\n\n/**\n * Parse `checkedKeys` to { checkedKeys, halfCheckedKeys } style\n */\nexport function parseCheckedKeys(keys) {\n if (!keys) {\n return null;\n }\n\n // Convert keys to object format\n var keyProps;\n if (Array.isArray(keys)) {\n // [Legacy] Follow the api doc\n keyProps = {\n checkedKeys: keys,\n halfCheckedKeys: undefined\n };\n } else if (_typeof(keys) === 'object') {\n keyProps = {\n checkedKeys: keys.checked || undefined,\n halfCheckedKeys: keys.halfChecked || undefined\n };\n } else {\n warning(false, '`checkedKeys` is not an array or an object');\n return null;\n }\n return keyProps;\n}\n\n/**\n * If user use `autoExpandParent` we should get the list of parent node\n * @param keyList\n * @param keyEntities\n */\nexport function conductExpandParent(keyList, keyEntities) {\n var expandedKeys = new Set();\n function conductUp(key) {\n if (expandedKeys.has(key)) return;\n var entity = getEntity(keyEntities, key);\n if (!entity) return;\n expandedKeys.add(key);\n var parent = entity.parent,\n node = entity.node;\n if (node.disabled) return;\n if (parent) {\n conductUp(parent.key);\n }\n }\n (keyList || []).forEach(function (key) {\n conductUp(key);\n });\n return _toConsumableArray(expandedKeys);\n}","import warning from \"rc-util/es/warning\";\nimport getEntity from \"./keyUtil\";\nfunction removeFromCheckedKeys(halfCheckedKeys, checkedKeys) {\n var filteredKeys = new Set();\n halfCheckedKeys.forEach(function (key) {\n if (!checkedKeys.has(key)) {\n filteredKeys.add(key);\n }\n });\n return filteredKeys;\n}\nexport function isCheckDisabled(node) {\n var _ref = node || {},\n disabled = _ref.disabled,\n disableCheckbox = _ref.disableCheckbox,\n checkable = _ref.checkable;\n return !!(disabled || disableCheckbox) || checkable === false;\n}\n\n// Fill miss keys\nfunction fillConductCheck(keys, levelEntities, maxLevel, syntheticGetCheckDisabled) {\n var checkedKeys = new Set(keys);\n var halfCheckedKeys = new Set();\n\n // Add checked keys top to bottom\n for (var level = 0; level <= maxLevel; level += 1) {\n var entities = levelEntities.get(level) || new Set();\n entities.forEach(function (entity) {\n var key = entity.key,\n node = entity.node,\n _entity$children = entity.children,\n children = _entity$children === void 0 ? [] : _entity$children;\n if (checkedKeys.has(key) && !syntheticGetCheckDisabled(node)) {\n children.filter(function (childEntity) {\n return !syntheticGetCheckDisabled(childEntity.node);\n }).forEach(function (childEntity) {\n checkedKeys.add(childEntity.key);\n });\n }\n });\n }\n\n // Add checked keys from bottom to top\n var visitedKeys = new Set();\n for (var _level = maxLevel; _level >= 0; _level -= 1) {\n var _entities = levelEntities.get(_level) || new Set();\n _entities.forEach(function (entity) {\n var parent = entity.parent,\n node = entity.node;\n\n // Skip if no need to check\n if (syntheticGetCheckDisabled(node) || !entity.parent || visitedKeys.has(entity.parent.key)) {\n return;\n }\n\n // Skip if parent is disabled\n if (syntheticGetCheckDisabled(entity.parent.node)) {\n visitedKeys.add(parent.key);\n return;\n }\n var allChecked = true;\n var partialChecked = false;\n (parent.children || []).filter(function (childEntity) {\n return !syntheticGetCheckDisabled(childEntity.node);\n }).forEach(function (_ref2) {\n var key = _ref2.key;\n var checked = checkedKeys.has(key);\n if (allChecked && !checked) {\n allChecked = false;\n }\n if (!partialChecked && (checked || halfCheckedKeys.has(key))) {\n partialChecked = true;\n }\n });\n if (allChecked) {\n checkedKeys.add(parent.key);\n }\n if (partialChecked) {\n halfCheckedKeys.add(parent.key);\n }\n visitedKeys.add(parent.key);\n });\n }\n return {\n checkedKeys: Array.from(checkedKeys),\n halfCheckedKeys: Array.from(removeFromCheckedKeys(halfCheckedKeys, checkedKeys))\n };\n}\n\n// Remove useless key\nfunction cleanConductCheck(keys, halfKeys, levelEntities, maxLevel, syntheticGetCheckDisabled) {\n var checkedKeys = new Set(keys);\n var halfCheckedKeys = new Set(halfKeys);\n\n // Remove checked keys from top to bottom\n for (var level = 0; level <= maxLevel; level += 1) {\n var entities = levelEntities.get(level) || new Set();\n entities.forEach(function (entity) {\n var key = entity.key,\n node = entity.node,\n _entity$children2 = entity.children,\n children = _entity$children2 === void 0 ? [] : _entity$children2;\n if (!checkedKeys.has(key) && !halfCheckedKeys.has(key) && !syntheticGetCheckDisabled(node)) {\n children.filter(function (childEntity) {\n return !syntheticGetCheckDisabled(childEntity.node);\n }).forEach(function (childEntity) {\n checkedKeys.delete(childEntity.key);\n });\n }\n });\n }\n\n // Remove checked keys form bottom to top\n halfCheckedKeys = new Set();\n var visitedKeys = new Set();\n for (var _level2 = maxLevel; _level2 >= 0; _level2 -= 1) {\n var _entities2 = levelEntities.get(_level2) || new Set();\n _entities2.forEach(function (entity) {\n var parent = entity.parent,\n node = entity.node;\n\n // Skip if no need to check\n if (syntheticGetCheckDisabled(node) || !entity.parent || visitedKeys.has(entity.parent.key)) {\n return;\n }\n\n // Skip if parent is disabled\n if (syntheticGetCheckDisabled(entity.parent.node)) {\n visitedKeys.add(parent.key);\n return;\n }\n var allChecked = true;\n var partialChecked = false;\n (parent.children || []).filter(function (childEntity) {\n return !syntheticGetCheckDisabled(childEntity.node);\n }).forEach(function (_ref3) {\n var key = _ref3.key;\n var checked = checkedKeys.has(key);\n if (allChecked && !checked) {\n allChecked = false;\n }\n if (!partialChecked && (checked || halfCheckedKeys.has(key))) {\n partialChecked = true;\n }\n });\n if (!allChecked) {\n checkedKeys.delete(parent.key);\n }\n if (partialChecked) {\n halfCheckedKeys.add(parent.key);\n }\n visitedKeys.add(parent.key);\n });\n }\n return {\n checkedKeys: Array.from(checkedKeys),\n halfCheckedKeys: Array.from(removeFromCheckedKeys(halfCheckedKeys, checkedKeys))\n };\n}\n\n/**\n * Conduct with keys.\n * @param keyList current key list\n * @param keyEntities key - dataEntity map\n * @param mode `fill` to fill missing key, `clean` to remove useless key\n */\nexport function conductCheck(keyList, checked, keyEntities, getCheckDisabled) {\n var warningMissKeys = [];\n var syntheticGetCheckDisabled;\n if (getCheckDisabled) {\n syntheticGetCheckDisabled = getCheckDisabled;\n } else {\n syntheticGetCheckDisabled = isCheckDisabled;\n }\n\n // We only handle exist keys\n var keys = new Set(keyList.filter(function (key) {\n var hasEntity = !!getEntity(keyEntities, key);\n if (!hasEntity) {\n warningMissKeys.push(key);\n }\n return hasEntity;\n }));\n var levelEntities = new Map();\n var maxLevel = 0;\n\n // Convert entities by level for calculation\n Object.keys(keyEntities).forEach(function (key) {\n var entity = keyEntities[key];\n var level = entity.level;\n var levelSet = levelEntities.get(level);\n if (!levelSet) {\n levelSet = new Set();\n levelEntities.set(level, levelSet);\n }\n levelSet.add(entity);\n maxLevel = Math.max(maxLevel, level);\n });\n warning(!warningMissKeys.length, \"Tree missing follow keys: \".concat(warningMissKeys.slice(0, 100).map(function (key) {\n return \"'\".concat(key, \"'\");\n }).join(', ')));\n var result;\n if (checked === true) {\n result = fillConductCheck(keys, levelEntities, maxLevel, syntheticGetCheckDisabled);\n } else {\n result = cleanConductCheck(keys, checked.halfCheckedKeys, levelEntities, maxLevel, syntheticGetCheckDisabled);\n }\n return result;\n}","// This icon file is generated automatically.\nvar RightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\" } }] }, \"name\": \"right\", \"theme\": \"outlined\" };\nexport default RightOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport RightOutlinedSvg from \"@ant-design/icons-svg/es/asn/RightOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar RightOutlined = function RightOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: RightOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n RightOutlined.displayName = 'RightOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(RightOutlined);","import KeyCode from \"rc-util/es/KeyCode\";\nimport raf from \"rc-util/es/raf\";\nimport * as React from \"react\";\nvar ESC = KeyCode.ESC,\n TAB = KeyCode.TAB;\nexport default function useAccessibility(_ref) {\n var visible = _ref.visible,\n triggerRef = _ref.triggerRef,\n onVisibleChange = _ref.onVisibleChange,\n autoFocus = _ref.autoFocus,\n overlayRef = _ref.overlayRef;\n var focusMenuRef = React.useRef(false);\n var handleCloseMenuAndReturnFocus = function handleCloseMenuAndReturnFocus() {\n if (visible) {\n var _triggerRef$current, _triggerRef$current$f;\n (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : (_triggerRef$current$f = _triggerRef$current.focus) === null || _triggerRef$current$f === void 0 ? void 0 : _triggerRef$current$f.call(_triggerRef$current);\n onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(false);\n }\n };\n var focusMenu = function focusMenu() {\n var _overlayRef$current;\n if ((_overlayRef$current = overlayRef.current) !== null && _overlayRef$current !== void 0 && _overlayRef$current.focus) {\n overlayRef.current.focus();\n focusMenuRef.current = true;\n return true;\n }\n return false;\n };\n var handleKeyDown = function handleKeyDown(event) {\n switch (event.keyCode) {\n case ESC:\n handleCloseMenuAndReturnFocus();\n break;\n case TAB:\n {\n var focusResult = false;\n if (!focusMenuRef.current) {\n focusResult = focusMenu();\n }\n if (focusResult) {\n event.preventDefault();\n } else {\n handleCloseMenuAndReturnFocus();\n }\n break;\n }\n }\n };\n React.useEffect(function () {\n if (visible) {\n window.addEventListener(\"keydown\", handleKeyDown);\n if (autoFocus) {\n // FIXME: hack with raf\n raf(focusMenu, 3);\n }\n return function () {\n window.removeEventListener(\"keydown\", handleKeyDown);\n focusMenuRef.current = false;\n };\n }\n return function () {\n focusMenuRef.current = false;\n };\n }, [visible]); // eslint-disable-line react-hooks/exhaustive-deps\n}","import React, { forwardRef, useMemo } from 'react';\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nvar Overlay = /*#__PURE__*/forwardRef(function (props, ref) {\n var overlay = props.overlay,\n arrow = props.arrow,\n prefixCls = props.prefixCls;\n var overlayNode = useMemo(function () {\n var overlayElement;\n if (typeof overlay === 'function') {\n overlayElement = overlay();\n } else {\n overlayElement = overlay;\n }\n return overlayElement;\n }, [overlay]);\n var composedRef = composeRef(ref, overlayNode === null || overlayNode === void 0 ? void 0 : overlayNode.ref);\n return /*#__PURE__*/React.createElement(React.Fragment, null, arrow && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-arrow\")\n }), /*#__PURE__*/React.cloneElement(overlayNode, {\n ref: supportRef(overlayNode) ? composedRef : undefined\n }));\n});\nexport default Overlay;","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\nvar targetOffset = [0, 0];\nvar placements = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n top: {\n points: ['bc', 'tc'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n bottom: {\n points: ['tc', 'bc'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n }\n};\nexport default placements;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"arrow\", \"prefixCls\", \"transitionName\", \"animation\", \"align\", \"placement\", \"placements\", \"getPopupContainer\", \"showAction\", \"hideAction\", \"overlayClassName\", \"overlayStyle\", \"visible\", \"trigger\", \"autoFocus\", \"overlay\", \"children\", \"onVisibleChange\"];\nimport Trigger from '@rc-component/trigger';\nimport classNames from 'classnames';\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nimport React from 'react';\nimport useAccessibility from \"./hooks/useAccessibility\";\nimport Overlay from \"./Overlay\";\nimport Placements from \"./placements\";\nfunction Dropdown(props, ref) {\n var _children$props;\n var _props$arrow = props.arrow,\n arrow = _props$arrow === void 0 ? false : _props$arrow,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-dropdown' : _props$prefixCls,\n transitionName = props.transitionName,\n animation = props.animation,\n align = props.align,\n _props$placement = props.placement,\n placement = _props$placement === void 0 ? 'bottomLeft' : _props$placement,\n _props$placements = props.placements,\n placements = _props$placements === void 0 ? Placements : _props$placements,\n getPopupContainer = props.getPopupContainer,\n showAction = props.showAction,\n hideAction = props.hideAction,\n overlayClassName = props.overlayClassName,\n overlayStyle = props.overlayStyle,\n visible = props.visible,\n _props$trigger = props.trigger,\n trigger = _props$trigger === void 0 ? ['hover'] : _props$trigger,\n autoFocus = props.autoFocus,\n overlay = props.overlay,\n children = props.children,\n onVisibleChange = props.onVisibleChange,\n otherProps = _objectWithoutProperties(props, _excluded);\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n triggerVisible = _React$useState2[0],\n setTriggerVisible = _React$useState2[1];\n var mergedVisible = 'visible' in props ? visible : triggerVisible;\n var triggerRef = React.useRef(null);\n var overlayRef = React.useRef(null);\n var childRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return triggerRef.current;\n });\n var handleVisibleChange = function handleVisibleChange(newVisible) {\n setTriggerVisible(newVisible);\n onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(newVisible);\n };\n useAccessibility({\n visible: mergedVisible,\n triggerRef: childRef,\n onVisibleChange: handleVisibleChange,\n autoFocus: autoFocus,\n overlayRef: overlayRef\n });\n var onClick = function onClick(e) {\n var onOverlayClick = props.onOverlayClick;\n setTriggerVisible(false);\n if (onOverlayClick) {\n onOverlayClick(e);\n }\n };\n var getMenuElement = function getMenuElement() {\n return /*#__PURE__*/React.createElement(Overlay, {\n ref: overlayRef,\n overlay: overlay,\n prefixCls: prefixCls,\n arrow: arrow\n });\n };\n var getMenuElementOrLambda = function getMenuElementOrLambda() {\n if (typeof overlay === 'function') {\n return getMenuElement;\n }\n return getMenuElement();\n };\n var getMinOverlayWidthMatchTrigger = function getMinOverlayWidthMatchTrigger() {\n var minOverlayWidthMatchTrigger = props.minOverlayWidthMatchTrigger,\n alignPoint = props.alignPoint;\n if ('minOverlayWidthMatchTrigger' in props) {\n return minOverlayWidthMatchTrigger;\n }\n return !alignPoint;\n };\n var getOpenClassName = function getOpenClassName() {\n var openClassName = props.openClassName;\n if (openClassName !== undefined) {\n return openClassName;\n }\n return \"\".concat(prefixCls, \"-open\");\n };\n var childrenNode = /*#__PURE__*/React.cloneElement(children, {\n className: classNames((_children$props = children.props) === null || _children$props === void 0 ? void 0 : _children$props.className, mergedVisible && getOpenClassName()),\n ref: supportRef(children) ? composeRef(childRef, children.ref) : undefined\n });\n var triggerHideAction = hideAction;\n if (!triggerHideAction && trigger.indexOf('contextMenu') !== -1) {\n triggerHideAction = ['click'];\n }\n return /*#__PURE__*/React.createElement(Trigger, _extends({\n builtinPlacements: placements\n }, otherProps, {\n prefixCls: prefixCls,\n ref: triggerRef,\n popupClassName: classNames(overlayClassName, _defineProperty({}, \"\".concat(prefixCls, \"-show-arrow\"), arrow)),\n popupStyle: overlayStyle,\n action: trigger,\n showAction: showAction,\n hideAction: triggerHideAction,\n popupPlacement: placement,\n popupAlign: align,\n popupTransitionName: transitionName,\n popupAnimation: animation,\n popupVisible: mergedVisible,\n stretch: getMinOverlayWidthMatchTrigger() ? 'minWidth' : '',\n popup: getMenuElementOrLambda(),\n onPopupVisibleChange: handleVisibleChange,\n onPopupClick: onClick,\n getPopupContainer: getPopupContainer\n }), childrenNode);\n}\nexport default /*#__PURE__*/React.forwardRef(Dropdown);","import Dropdown from \"./Dropdown\";\nexport default Dropdown;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"invalidate\", \"item\", \"renderItem\", \"responsive\", \"responsiveDisabled\", \"registerSize\", \"itemKey\", \"className\", \"style\", \"children\", \"display\", \"order\", \"component\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\n// Use shared variable to save bundle size\nvar UNDEFINED = undefined;\nfunction InternalItem(props, ref) {\n var prefixCls = props.prefixCls,\n invalidate = props.invalidate,\n item = props.item,\n renderItem = props.renderItem,\n responsive = props.responsive,\n responsiveDisabled = props.responsiveDisabled,\n registerSize = props.registerSize,\n itemKey = props.itemKey,\n className = props.className,\n style = props.style,\n children = props.children,\n display = props.display,\n order = props.order,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n restProps = _objectWithoutProperties(props, _excluded);\n var mergedHidden = responsive && !display;\n // ================================ Effect ================================\n function internalRegisterSize(width) {\n registerSize(itemKey, width);\n }\n React.useEffect(function () {\n return function () {\n internalRegisterSize(null);\n };\n }, []);\n // ================================ Render ================================\n var childNode = renderItem && item !== UNDEFINED ? renderItem(item) : children;\n var overflowStyle;\n if (!invalidate) {\n overflowStyle = {\n opacity: mergedHidden ? 0 : 1,\n height: mergedHidden ? 0 : UNDEFINED,\n overflowY: mergedHidden ? 'hidden' : UNDEFINED,\n order: responsive ? order : UNDEFINED,\n pointerEvents: mergedHidden ? 'none' : UNDEFINED,\n position: mergedHidden ? 'absolute' : UNDEFINED\n };\n }\n var overflowProps = {};\n if (mergedHidden) {\n overflowProps['aria-hidden'] = true;\n }\n var itemNode = /*#__PURE__*/React.createElement(Component, _extends({\n className: classNames(!invalidate && prefixCls, className),\n style: _objectSpread(_objectSpread({}, overflowStyle), style)\n }, overflowProps, restProps, {\n ref: ref\n }), childNode);\n if (responsive) {\n itemNode = /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: function onResize(_ref) {\n var offsetWidth = _ref.offsetWidth;\n internalRegisterSize(offsetWidth);\n },\n disabled: responsiveDisabled\n }, itemNode);\n }\n return itemNode;\n}\nvar Item = /*#__PURE__*/React.forwardRef(InternalItem);\nItem.displayName = 'Item';\nexport default Item;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport * as React from 'react';\nimport { unstable_batchedUpdates } from 'react-dom';\nimport channelUpdate from './channelUpdate';\n/**\n * Batcher for record any `useEffectState` need update.\n */\nexport function useBatcher() {\n // Updater Trigger\n var updateFuncRef = React.useRef(null);\n // Notify update\n var notifyEffectUpdate = function notifyEffectUpdate(callback) {\n if (!updateFuncRef.current) {\n updateFuncRef.current = [];\n channelUpdate(function () {\n unstable_batchedUpdates(function () {\n updateFuncRef.current.forEach(function (fn) {\n fn();\n });\n updateFuncRef.current = null;\n });\n });\n }\n updateFuncRef.current.push(callback);\n };\n return notifyEffectUpdate;\n}\n/**\n * Trigger state update by `useLayoutEffect` to save perf.\n */\nexport default function useEffectState(notifyEffectUpdate, defaultValue) {\n // Value\n var _React$useState = React.useState(defaultValue),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n stateValue = _React$useState2[0],\n setStateValue = _React$useState2[1];\n // Set State\n var setEffectVal = useEvent(function (nextValue) {\n notifyEffectUpdate(function () {\n setStateValue(nextValue);\n });\n });\n return [stateValue, setEffectVal];\n}","import raf from \"rc-util/es/raf\";\nexport default function channelUpdate(callback) {\n if (typeof MessageChannel === 'undefined') {\n raf(callback);\n } else {\n var channel = new MessageChannel();\n channel.port1.onmessage = function () {\n return callback();\n };\n channel.port2.postMessage(undefined);\n }\n}","import React from 'react';\nexport var OverflowContext = /*#__PURE__*/React.createContext(null);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"component\"],\n _excluded2 = [\"className\"],\n _excluded3 = [\"className\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Item from './Item';\nimport { OverflowContext } from './context';\nvar InternalRawItem = function InternalRawItem(props, ref) {\n var context = React.useContext(OverflowContext);\n // Render directly when context not provided\n if (!context) {\n var _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _restProps = _objectWithoutProperties(props, _excluded);\n return /*#__PURE__*/React.createElement(Component, _extends({}, _restProps, {\n ref: ref\n }));\n }\n var contextClassName = context.className,\n restContext = _objectWithoutProperties(context, _excluded2);\n var className = props.className,\n restProps = _objectWithoutProperties(props, _excluded3);\n // Do not pass context to sub item to avoid multiple measure\n return /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n value: null\n }, /*#__PURE__*/React.createElement(Item, _extends({\n ref: ref,\n className: classNames(contextClassName, className)\n }, restContext, restProps)));\n};\nvar RawItem = /*#__PURE__*/React.forwardRef(InternalRawItem);\nRawItem.displayName = 'RawItem';\nexport default RawItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"data\", \"renderItem\", \"renderRawItem\", \"itemKey\", \"itemWidth\", \"ssr\", \"style\", \"className\", \"maxCount\", \"renderRest\", \"renderRawRest\", \"suffix\", \"component\", \"itemComponent\", \"onVisibleChange\"];\nimport * as React from 'react';\nimport { useState, useMemo, useCallback } from 'react';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport Item from './Item';\nimport useEffectState, { useBatcher } from './hooks/useEffectState';\nimport RawItem from './RawItem';\nimport { OverflowContext } from './context';\nvar RESPONSIVE = 'responsive';\nvar INVALIDATE = 'invalidate';\nexport { OverflowContext } from './context';\nfunction defaultRenderRest(omittedItems) {\n return \"+ \".concat(omittedItems.length, \" ...\");\n}\nfunction Overflow(props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-overflow' : _props$prefixCls,\n _props$data = props.data,\n data = _props$data === void 0 ? [] : _props$data,\n renderItem = props.renderItem,\n renderRawItem = props.renderRawItem,\n itemKey = props.itemKey,\n _props$itemWidth = props.itemWidth,\n itemWidth = _props$itemWidth === void 0 ? 10 : _props$itemWidth,\n ssr = props.ssr,\n style = props.style,\n className = props.className,\n maxCount = props.maxCount,\n renderRest = props.renderRest,\n renderRawRest = props.renderRawRest,\n suffix = props.suffix,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n itemComponent = props.itemComponent,\n onVisibleChange = props.onVisibleChange,\n restProps = _objectWithoutProperties(props, _excluded);\n var fullySSR = ssr === 'full';\n var notifyEffectUpdate = useBatcher();\n var _useEffectState = useEffectState(notifyEffectUpdate, null),\n _useEffectState2 = _slicedToArray(_useEffectState, 2),\n containerWidth = _useEffectState2[0],\n setContainerWidth = _useEffectState2[1];\n var mergedContainerWidth = containerWidth || 0;\n var _useEffectState3 = useEffectState(notifyEffectUpdate, new Map()),\n _useEffectState4 = _slicedToArray(_useEffectState3, 2),\n itemWidths = _useEffectState4[0],\n setItemWidths = _useEffectState4[1];\n var _useEffectState5 = useEffectState(notifyEffectUpdate, 0),\n _useEffectState6 = _slicedToArray(_useEffectState5, 2),\n prevRestWidth = _useEffectState6[0],\n setPrevRestWidth = _useEffectState6[1];\n var _useEffectState7 = useEffectState(notifyEffectUpdate, 0),\n _useEffectState8 = _slicedToArray(_useEffectState7, 2),\n restWidth = _useEffectState8[0],\n setRestWidth = _useEffectState8[1];\n var _useEffectState9 = useEffectState(notifyEffectUpdate, 0),\n _useEffectState10 = _slicedToArray(_useEffectState9, 2),\n suffixWidth = _useEffectState10[0],\n setSuffixWidth = _useEffectState10[1];\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n suffixFixedStart = _useState2[0],\n setSuffixFixedStart = _useState2[1];\n var _useState3 = useState(null),\n _useState4 = _slicedToArray(_useState3, 2),\n displayCount = _useState4[0],\n setDisplayCount = _useState4[1];\n var mergedDisplayCount = React.useMemo(function () {\n if (displayCount === null && fullySSR) {\n return Number.MAX_SAFE_INTEGER;\n }\n return displayCount || 0;\n }, [displayCount, containerWidth]);\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n restReady = _useState6[0],\n setRestReady = _useState6[1];\n var itemPrefixCls = \"\".concat(prefixCls, \"-item\");\n // Always use the max width to avoid blink\n var mergedRestWidth = Math.max(prevRestWidth, restWidth);\n // ================================= Data =================================\n var isResponsive = maxCount === RESPONSIVE;\n var shouldResponsive = data.length && isResponsive;\n var invalidate = maxCount === INVALIDATE;\n /**\n * When is `responsive`, we will always render rest node to get the real width of it for calculation\n */\n var showRest = shouldResponsive || typeof maxCount === 'number' && data.length > maxCount;\n var mergedData = useMemo(function () {\n var items = data;\n if (shouldResponsive) {\n if (containerWidth === null && fullySSR) {\n items = data;\n } else {\n items = data.slice(0, Math.min(data.length, mergedContainerWidth / itemWidth));\n }\n } else if (typeof maxCount === 'number') {\n items = data.slice(0, maxCount);\n }\n return items;\n }, [data, itemWidth, containerWidth, maxCount, shouldResponsive]);\n var omittedItems = useMemo(function () {\n if (shouldResponsive) {\n return data.slice(mergedDisplayCount + 1);\n }\n return data.slice(mergedData.length);\n }, [data, mergedData, shouldResponsive, mergedDisplayCount]);\n // ================================= Item =================================\n var getKey = useCallback(function (item, index) {\n var _ref;\n if (typeof itemKey === 'function') {\n return itemKey(item);\n }\n return (_ref = itemKey && (item === null || item === void 0 ? void 0 : item[itemKey])) !== null && _ref !== void 0 ? _ref : index;\n }, [itemKey]);\n var mergedRenderItem = useCallback(renderItem || function (item) {\n return item;\n }, [renderItem]);\n function updateDisplayCount(count, suffixFixedStartVal, notReady) {\n // React 18 will sync render even when the value is same in some case.\n // We take `mergedData` as deps which may cause dead loop if it's dynamic generate.\n // ref: https://github.com/ant-design/ant-design/issues/36559\n if (displayCount === count && (suffixFixedStartVal === undefined || suffixFixedStartVal === suffixFixedStart)) {\n return;\n }\n setDisplayCount(count);\n if (!notReady) {\n setRestReady(count < data.length - 1);\n onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(count);\n }\n if (suffixFixedStartVal !== undefined) {\n setSuffixFixedStart(suffixFixedStartVal);\n }\n }\n // ================================= Size =================================\n function onOverflowResize(_, element) {\n setContainerWidth(element.clientWidth);\n }\n function registerSize(key, width) {\n setItemWidths(function (origin) {\n var clone = new Map(origin);\n if (width === null) {\n clone.delete(key);\n } else {\n clone.set(key, width);\n }\n return clone;\n });\n }\n function registerOverflowSize(_, width) {\n setRestWidth(width);\n setPrevRestWidth(restWidth);\n }\n function registerSuffixSize(_, width) {\n setSuffixWidth(width);\n }\n // ================================ Effect ================================\n function getItemWidth(index) {\n return itemWidths.get(getKey(mergedData[index], index));\n }\n useLayoutEffect(function () {\n if (mergedContainerWidth && typeof mergedRestWidth === 'number' && mergedData) {\n var totalWidth = suffixWidth;\n var len = mergedData.length;\n var lastIndex = len - 1;\n // When data count change to 0, reset this since not loop will reach\n if (!len) {\n updateDisplayCount(0, null);\n return;\n }\n for (var i = 0; i < len; i += 1) {\n var currentItemWidth = getItemWidth(i);\n // Fully will always render\n if (fullySSR) {\n currentItemWidth = currentItemWidth || 0;\n }\n // Break since data not ready\n if (currentItemWidth === undefined) {\n updateDisplayCount(i - 1, undefined, true);\n break;\n }\n // Find best match\n totalWidth += currentItemWidth;\n if (\n // Only one means `totalWidth` is the final width\n lastIndex === 0 && totalWidth <= mergedContainerWidth ||\n // Last two width will be the final width\n i === lastIndex - 1 && totalWidth + getItemWidth(lastIndex) <= mergedContainerWidth) {\n // Additional check if match the end\n updateDisplayCount(lastIndex, null);\n break;\n } else if (totalWidth + mergedRestWidth > mergedContainerWidth) {\n // Can not hold all the content to show rest\n updateDisplayCount(i - 1, totalWidth - currentItemWidth - suffixWidth + restWidth);\n break;\n }\n }\n if (suffix && getItemWidth(0) + suffixWidth > mergedContainerWidth) {\n setSuffixFixedStart(null);\n }\n }\n }, [mergedContainerWidth, itemWidths, restWidth, suffixWidth, getKey, mergedData]);\n // ================================ Render ================================\n var displayRest = restReady && !!omittedItems.length;\n var suffixStyle = {};\n if (suffixFixedStart !== null && shouldResponsive) {\n suffixStyle = {\n position: 'absolute',\n left: suffixFixedStart,\n top: 0\n };\n }\n var itemSharedProps = {\n prefixCls: itemPrefixCls,\n responsive: shouldResponsive,\n component: itemComponent,\n invalidate: invalidate\n };\n // >>>>> Choice render fun by `renderRawItem`\n var internalRenderItemNode = renderRawItem ? function (item, index) {\n var key = getKey(item, index);\n return /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n key: key,\n value: _objectSpread(_objectSpread({}, itemSharedProps), {}, {\n order: index,\n item: item,\n itemKey: key,\n registerSize: registerSize,\n display: index <= mergedDisplayCount\n })\n }, renderRawItem(item, index));\n } : function (item, index) {\n var key = getKey(item, index);\n return /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, {\n order: index,\n key: key,\n item: item,\n renderItem: mergedRenderItem,\n itemKey: key,\n registerSize: registerSize,\n display: index <= mergedDisplayCount\n }));\n };\n // >>>>> Rest node\n var restNode;\n var restContextProps = {\n order: displayRest ? mergedDisplayCount : Number.MAX_SAFE_INTEGER,\n className: \"\".concat(itemPrefixCls, \"-rest\"),\n registerSize: registerOverflowSize,\n display: displayRest\n };\n if (!renderRawRest) {\n var mergedRenderRest = renderRest || defaultRenderRest;\n restNode = /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, restContextProps), typeof mergedRenderRest === 'function' ? mergedRenderRest(omittedItems) : mergedRenderRest);\n } else if (renderRawRest) {\n restNode = /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n value: _objectSpread(_objectSpread({}, itemSharedProps), restContextProps)\n }, renderRawRest(omittedItems));\n }\n var overflowNode = /*#__PURE__*/React.createElement(Component, _extends({\n className: classNames(!invalidate && prefixCls, className),\n style: style,\n ref: ref\n }, restProps), mergedData.map(internalRenderItemNode), showRest ? restNode : null, suffix && /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, {\n responsive: isResponsive,\n responsiveDisabled: !shouldResponsive,\n order: mergedDisplayCount,\n className: \"\".concat(itemPrefixCls, \"-suffix\"),\n registerSize: registerSuffixSize,\n display: true,\n style: suffixStyle\n }), suffix));\n if (isResponsive) {\n overflowNode = /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onOverflowResize,\n disabled: !shouldResponsive\n }, overflowNode);\n }\n return overflowNode;\n}\nvar ForwardOverflow = /*#__PURE__*/React.forwardRef(Overflow);\nForwardOverflow.displayName = 'Overflow';\nForwardOverflow.Item = RawItem;\nForwardOverflow.RESPONSIVE = RESPONSIVE;\nForwardOverflow.INVALIDATE = INVALIDATE;\n// Convert to generic type\nexport default ForwardOverflow;","import Overflow from './Overflow';\nexport default Overflow;","import * as React from 'react';\nexport var IdContext = /*#__PURE__*/React.createContext(null);\nexport function getMenuId(uuid, eventKey) {\n if (uuid === undefined) {\n return null;\n }\n return \"\".concat(uuid, \"-\").concat(eventKey);\n}\n\n/**\n * Get `data-menu-id`\n */\nexport function useMenuId(eventKey) {\n var id = React.useContext(IdContext);\n return getMenuId(id, eventKey);\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nvar _excluded = [\"children\", \"locked\"];\nimport * as React from 'react';\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport isEqual from \"rc-util/es/isEqual\";\nexport var MenuContext = /*#__PURE__*/React.createContext(null);\nfunction mergeProps(origin, target) {\n var clone = _objectSpread({}, origin);\n Object.keys(target).forEach(function (key) {\n var value = target[key];\n if (value !== undefined) {\n clone[key] = value;\n }\n });\n return clone;\n}\nexport default function InheritableContextProvider(_ref) {\n var children = _ref.children,\n locked = _ref.locked,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var context = React.useContext(MenuContext);\n var inheritableContext = useMemo(function () {\n return mergeProps(context, restProps);\n }, [context, restProps], function (prev, next) {\n return !locked && (prev[0] !== next[0] || !isEqual(prev[1], next[1], true));\n });\n return /*#__PURE__*/React.createElement(MenuContext.Provider, {\n value: inheritableContext\n }, children);\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nvar EmptyList = [];\n\n// ========================= Path Register =========================\n\nexport var PathRegisterContext = /*#__PURE__*/React.createContext(null);\nexport function useMeasure() {\n return React.useContext(PathRegisterContext);\n}\n\n// ========================= Path Tracker ==========================\nexport var PathTrackerContext = /*#__PURE__*/React.createContext(EmptyList);\nexport function useFullPath(eventKey) {\n var parentKeyPath = React.useContext(PathTrackerContext);\n return React.useMemo(function () {\n return eventKey !== undefined ? [].concat(_toConsumableArray(parentKeyPath), [eventKey]) : parentKeyPath;\n }, [parentKeyPath, eventKey]);\n}\n\n// =========================== Path User ===========================\n\nexport var PathUserContext = /*#__PURE__*/React.createContext(null);","import * as React from 'react';\nvar PrivateContext = /*#__PURE__*/React.createContext({});\nexport default PrivateContext;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport isVisible from \"./isVisible\";\nfunction focusable(node) {\n var includePositive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (isVisible(node)) {\n var nodeName = node.nodeName.toLowerCase();\n var isFocusableElement =\n // Focusable element\n ['input', 'select', 'textarea', 'button'].includes(nodeName) ||\n // Editable element\n node.isContentEditable ||\n // Anchor with href element\n nodeName === 'a' && !!node.getAttribute('href');\n\n // Get tabIndex\n var tabIndexAttr = node.getAttribute('tabindex');\n var tabIndexNum = Number(tabIndexAttr);\n\n // Parse as number if validate\n var tabIndex = null;\n if (tabIndexAttr && !Number.isNaN(tabIndexNum)) {\n tabIndex = tabIndexNum;\n } else if (isFocusableElement && tabIndex === null) {\n tabIndex = 0;\n }\n\n // Block focusable if disabled\n if (isFocusableElement && node.disabled) {\n tabIndex = null;\n }\n return tabIndex !== null && (tabIndex >= 0 || includePositive && tabIndex < 0);\n }\n return false;\n}\nexport function getFocusNodeList(node) {\n var includePositive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var res = _toConsumableArray(node.querySelectorAll('*')).filter(function (child) {\n return focusable(child, includePositive);\n });\n if (focusable(node, includePositive)) {\n res.unshift(node);\n }\n return res;\n}\nvar lastFocusElement = null;\n\n/** @deprecated Do not use since this may failed when used in async */\nexport function saveLastFocusNode() {\n lastFocusElement = document.activeElement;\n}\n\n/** @deprecated Do not use since this may failed when used in async */\nexport function clearLastFocusNode() {\n lastFocusElement = null;\n}\n\n/** @deprecated Do not use since this may failed when used in async */\nexport function backLastFocusNode() {\n if (lastFocusElement) {\n try {\n // 元素可能已经被移动了\n lastFocusElement.focus();\n\n /* eslint-disable no-empty */\n } catch (e) {\n // empty\n }\n /* eslint-enable no-empty */\n }\n}\n\nexport function limitTabRange(node, e) {\n if (e.keyCode === 9) {\n var tabNodeList = getFocusNodeList(node);\n var lastTabNode = tabNodeList[e.shiftKey ? 0 : tabNodeList.length - 1];\n var leavingTab = lastTabNode === document.activeElement || node === document.activeElement;\n if (leavingTab) {\n var target = tabNodeList[e.shiftKey ? tabNodeList.length - 1 : 0];\n target.focus();\n e.preventDefault();\n }\n }\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { getFocusNodeList } from \"rc-util/es/Dom/focus\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport raf from \"rc-util/es/raf\";\nimport * as React from 'react';\nimport { getMenuId } from \"../context/IdContext\";\n// destruct to reduce minify size\nvar LEFT = KeyCode.LEFT,\n RIGHT = KeyCode.RIGHT,\n UP = KeyCode.UP,\n DOWN = KeyCode.DOWN,\n ENTER = KeyCode.ENTER,\n ESC = KeyCode.ESC,\n HOME = KeyCode.HOME,\n END = KeyCode.END;\nvar ArrowKeys = [UP, DOWN, LEFT, RIGHT];\nfunction getOffset(mode, isRootLevel, isRtl, which) {\n var _inline, _horizontal, _vertical, _offsets;\n var prev = 'prev';\n var next = 'next';\n var children = 'children';\n var parent = 'parent';\n\n // Inline enter is special that we use unique operation\n if (mode === 'inline' && which === ENTER) {\n return {\n inlineTrigger: true\n };\n }\n var inline = (_inline = {}, _defineProperty(_inline, UP, prev), _defineProperty(_inline, DOWN, next), _inline);\n var horizontal = (_horizontal = {}, _defineProperty(_horizontal, LEFT, isRtl ? next : prev), _defineProperty(_horizontal, RIGHT, isRtl ? prev : next), _defineProperty(_horizontal, DOWN, children), _defineProperty(_horizontal, ENTER, children), _horizontal);\n var vertical = (_vertical = {}, _defineProperty(_vertical, UP, prev), _defineProperty(_vertical, DOWN, next), _defineProperty(_vertical, ENTER, children), _defineProperty(_vertical, ESC, parent), _defineProperty(_vertical, LEFT, isRtl ? children : parent), _defineProperty(_vertical, RIGHT, isRtl ? parent : children), _vertical);\n var offsets = {\n inline: inline,\n horizontal: horizontal,\n vertical: vertical,\n inlineSub: inline,\n horizontalSub: vertical,\n verticalSub: vertical\n };\n var type = (_offsets = offsets[\"\".concat(mode).concat(isRootLevel ? '' : 'Sub')]) === null || _offsets === void 0 ? void 0 : _offsets[which];\n switch (type) {\n case prev:\n return {\n offset: -1,\n sibling: true\n };\n case next:\n return {\n offset: 1,\n sibling: true\n };\n case parent:\n return {\n offset: -1,\n sibling: false\n };\n case children:\n return {\n offset: 1,\n sibling: false\n };\n default:\n return null;\n }\n}\nfunction findContainerUL(element) {\n var current = element;\n while (current) {\n if (current.getAttribute('data-menu-list')) {\n return current;\n }\n current = current.parentElement;\n }\n\n // Normally should not reach this line\n /* istanbul ignore next */\n return null;\n}\n\n/**\n * Find focused element within element set provided\n */\nfunction getFocusElement(activeElement, elements) {\n var current = activeElement || document.activeElement;\n while (current) {\n if (elements.has(current)) {\n return current;\n }\n current = current.parentElement;\n }\n return null;\n}\n\n/**\n * Get focusable elements from the element set under provided container\n */\nexport function getFocusableElements(container, elements) {\n var list = getFocusNodeList(container, true);\n return list.filter(function (ele) {\n return elements.has(ele);\n });\n}\nfunction getNextFocusElement(parentQueryContainer, elements, focusMenuElement) {\n var offset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n // Key on the menu item will not get validate parent container\n if (!parentQueryContainer) {\n return null;\n }\n\n // List current level menu item elements\n var sameLevelFocusableMenuElementList = getFocusableElements(parentQueryContainer, elements);\n\n // Find next focus index\n var count = sameLevelFocusableMenuElementList.length;\n var focusIndex = sameLevelFocusableMenuElementList.findIndex(function (ele) {\n return focusMenuElement === ele;\n });\n if (offset < 0) {\n if (focusIndex === -1) {\n focusIndex = count - 1;\n } else {\n focusIndex -= 1;\n }\n } else if (offset > 0) {\n focusIndex += 1;\n }\n focusIndex = (focusIndex + count) % count;\n\n // Focus menu item\n return sameLevelFocusableMenuElementList[focusIndex];\n}\nexport var refreshElements = function refreshElements(keys, id) {\n var elements = new Set();\n var key2element = new Map();\n var element2key = new Map();\n keys.forEach(function (key) {\n var element = document.querySelector(\"[data-menu-id='\".concat(getMenuId(id, key), \"']\"));\n if (element) {\n elements.add(element);\n element2key.set(element, key);\n key2element.set(key, element);\n }\n });\n return {\n elements: elements,\n key2element: key2element,\n element2key: element2key\n };\n};\nexport function useAccessibility(mode, activeKey, isRtl, id, containerRef, getKeys, getKeyPath, triggerActiveKey, triggerAccessibilityOpen, originOnKeyDown) {\n var rafRef = React.useRef();\n var activeRef = React.useRef();\n activeRef.current = activeKey;\n var cleanRaf = function cleanRaf() {\n raf.cancel(rafRef.current);\n };\n React.useEffect(function () {\n return function () {\n cleanRaf();\n };\n }, []);\n return function (e) {\n var which = e.which;\n if ([].concat(ArrowKeys, [ENTER, ESC, HOME, END]).includes(which)) {\n var keys = getKeys();\n var refreshedElements = refreshElements(keys, id);\n var _refreshedElements = refreshedElements,\n elements = _refreshedElements.elements,\n key2element = _refreshedElements.key2element,\n element2key = _refreshedElements.element2key;\n\n // First we should find current focused MenuItem/SubMenu element\n var activeElement = key2element.get(activeKey);\n var focusMenuElement = getFocusElement(activeElement, elements);\n var focusMenuKey = element2key.get(focusMenuElement);\n var offsetObj = getOffset(mode, getKeyPath(focusMenuKey, true).length === 1, isRtl, which);\n\n // Some mode do not have fully arrow operation like inline\n if (!offsetObj && which !== HOME && which !== END) {\n return;\n }\n\n // Arrow prevent default to avoid page scroll\n if (ArrowKeys.includes(which) || [HOME, END].includes(which)) {\n e.preventDefault();\n }\n var tryFocus = function tryFocus(menuElement) {\n if (menuElement) {\n var focusTargetElement = menuElement;\n\n // Focus to link instead of menu item if possible\n var link = menuElement.querySelector('a');\n if (link !== null && link !== void 0 && link.getAttribute('href')) {\n focusTargetElement = link;\n }\n var targetKey = element2key.get(menuElement);\n triggerActiveKey(targetKey);\n\n /**\n * Do not `useEffect` here since `tryFocus` may trigger async\n * which makes React sync update the `activeKey`\n * that force render before `useRef` set the next activeKey\n */\n cleanRaf();\n rafRef.current = raf(function () {\n if (activeRef.current === targetKey) {\n focusTargetElement.focus();\n }\n });\n }\n };\n if ([HOME, END].includes(which) || offsetObj.sibling || !focusMenuElement) {\n // ========================== Sibling ==========================\n // Find walkable focus menu element container\n var parentQueryContainer;\n if (!focusMenuElement || mode === 'inline') {\n parentQueryContainer = containerRef.current;\n } else {\n parentQueryContainer = findContainerUL(focusMenuElement);\n }\n\n // Get next focus element\n var targetElement;\n var focusableElements = getFocusableElements(parentQueryContainer, elements);\n if (which === HOME) {\n targetElement = focusableElements[0];\n } else if (which === END) {\n targetElement = focusableElements[focusableElements.length - 1];\n } else {\n targetElement = getNextFocusElement(parentQueryContainer, elements, focusMenuElement, offsetObj.offset);\n }\n // Focus menu item\n tryFocus(targetElement);\n\n // ======================= InlineTrigger =======================\n } else if (offsetObj.inlineTrigger) {\n // Inline trigger no need switch to sub menu item\n triggerAccessibilityOpen(focusMenuKey);\n // =========================== Level ===========================\n } else if (offsetObj.offset > 0) {\n triggerAccessibilityOpen(focusMenuKey, true);\n cleanRaf();\n rafRef.current = raf(function () {\n // Async should resync elements\n refreshedElements = refreshElements(keys, id);\n var controlId = focusMenuElement.getAttribute('aria-controls');\n var subQueryContainer = document.getElementById(controlId);\n\n // Get sub focusable menu item\n var targetElement = getNextFocusElement(subQueryContainer, refreshedElements.elements);\n\n // Focus menu item\n tryFocus(targetElement);\n }, 5);\n } else if (offsetObj.offset < 0) {\n var keyPath = getKeyPath(focusMenuKey, true);\n var parentKey = keyPath[keyPath.length - 2];\n var parentMenuElement = key2element.get(parentKey);\n\n // Focus menu item\n triggerAccessibilityOpen(parentKey, false);\n tryFocus(parentMenuElement);\n }\n }\n\n // Pass origin key down event\n originOnKeyDown === null || originOnKeyDown === void 0 || originOnKeyDown(e);\n };\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useCallback } from 'react';\nimport warning from \"rc-util/es/warning\";\nimport { nextSlice } from \"../utils/timeUtil\";\nvar PATH_SPLIT = '__RC_UTIL_PATH_SPLIT__';\nvar getPathStr = function getPathStr(keyPath) {\n return keyPath.join(PATH_SPLIT);\n};\nvar getPathKeys = function getPathKeys(keyPathStr) {\n return keyPathStr.split(PATH_SPLIT);\n};\nexport var OVERFLOW_KEY = 'rc-menu-more';\nexport default function useKeyRecords() {\n var _React$useState = React.useState({}),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n internalForceUpdate = _React$useState2[1];\n var key2pathRef = useRef(new Map());\n var path2keyRef = useRef(new Map());\n var _React$useState3 = React.useState([]),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n overflowKeys = _React$useState4[0],\n setOverflowKeys = _React$useState4[1];\n var updateRef = useRef(0);\n var destroyRef = useRef(false);\n var forceUpdate = function forceUpdate() {\n if (!destroyRef.current) {\n internalForceUpdate({});\n }\n };\n var registerPath = useCallback(function (key, keyPath) {\n // Warning for invalidate or duplicated `key`\n if (process.env.NODE_ENV !== 'production') {\n warning(!key2pathRef.current.has(key), \"Duplicated key '\".concat(key, \"' used in Menu by path [\").concat(keyPath.join(' > '), \"]\"));\n }\n\n // Fill map\n var connectedPath = getPathStr(keyPath);\n path2keyRef.current.set(connectedPath, key);\n key2pathRef.current.set(key, connectedPath);\n updateRef.current += 1;\n var id = updateRef.current;\n nextSlice(function () {\n if (id === updateRef.current) {\n forceUpdate();\n }\n });\n }, []);\n var unregisterPath = useCallback(function (key, keyPath) {\n var connectedPath = getPathStr(keyPath);\n path2keyRef.current.delete(connectedPath);\n key2pathRef.current.delete(key);\n }, []);\n var refreshOverflowKeys = useCallback(function (keys) {\n setOverflowKeys(keys);\n }, []);\n var getKeyPath = useCallback(function (eventKey, includeOverflow) {\n var fullPath = key2pathRef.current.get(eventKey) || '';\n var keys = getPathKeys(fullPath);\n if (includeOverflow && overflowKeys.includes(keys[0])) {\n keys.unshift(OVERFLOW_KEY);\n }\n return keys;\n }, [overflowKeys]);\n var isSubPathKey = useCallback(function (pathKeys, eventKey) {\n return pathKeys.some(function (pathKey) {\n var pathKeyList = getKeyPath(pathKey, true);\n return pathKeyList.includes(eventKey);\n });\n }, [getKeyPath]);\n var getKeys = function getKeys() {\n var keys = _toConsumableArray(key2pathRef.current.keys());\n if (overflowKeys.length) {\n keys.push(OVERFLOW_KEY);\n }\n return keys;\n };\n\n /**\n * Find current key related child path keys\n */\n var getSubPathKeys = useCallback(function (key) {\n var connectedPath = \"\".concat(key2pathRef.current.get(key)).concat(PATH_SPLIT);\n var pathKeys = new Set();\n _toConsumableArray(path2keyRef.current.keys()).forEach(function (pathKey) {\n if (pathKey.startsWith(connectedPath)) {\n pathKeys.add(path2keyRef.current.get(pathKey));\n }\n });\n return pathKeys;\n }, []);\n React.useEffect(function () {\n return function () {\n destroyRef.current = true;\n };\n }, []);\n return {\n // Register\n registerPath: registerPath,\n unregisterPath: unregisterPath,\n refreshOverflowKeys: refreshOverflowKeys,\n // Util\n isSubPathKey: isSubPathKey,\n getKeyPath: getKeyPath,\n getKeys: getKeys,\n getSubPathKeys: getSubPathKeys\n };\n}","export function nextSlice(callback) {\n /* istanbul ignore next */\n Promise.resolve().then(callback);\n}","import * as React from 'react';\n\n/**\n * Cache callback function that always return same ref instead.\n * This is used for context optimization.\n */\nexport default function useMemoCallback(func) {\n var funRef = React.useRef(func);\n funRef.current = func;\n var callback = React.useCallback(function () {\n var _funRef$current;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_funRef$current = funRef.current) === null || _funRef$current === void 0 ? void 0 : _funRef$current.call.apply(_funRef$current, [funRef].concat(args));\n }, []);\n return func ? callback : undefined;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nvar uniquePrefix = Math.random().toFixed(5).toString().slice(2);\nvar internalId = 0;\nexport default function useUUID(id) {\n var _useMergedState = useMergedState(id, {\n value: id\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n uuid = _useMergedState2[0],\n setUUID = _useMergedState2[1];\n React.useEffect(function () {\n internalId += 1;\n var newId = process.env.NODE_ENV === 'test' ? 'test' : \"\".concat(uniquePrefix, \"-\").concat(internalId);\n setUUID(\"rc-menu-uuid-\".concat(newId));\n }, []);\n return uuid;\n}","import * as React from 'react';\nimport { MenuContext } from \"../context/MenuContext\";\nexport default function useActive(eventKey, disabled, onMouseEnter, onMouseLeave) {\n var _React$useContext = React.useContext(MenuContext),\n activeKey = _React$useContext.activeKey,\n onActive = _React$useContext.onActive,\n onInactive = _React$useContext.onInactive;\n var ret = {\n active: activeKey === eventKey\n };\n\n // Skip when disabled\n if (!disabled) {\n ret.onMouseEnter = function (domEvent) {\n onMouseEnter === null || onMouseEnter === void 0 || onMouseEnter({\n key: eventKey,\n domEvent: domEvent\n });\n onActive(eventKey);\n };\n ret.onMouseLeave = function (domEvent) {\n onMouseLeave === null || onMouseLeave === void 0 || onMouseLeave({\n key: eventKey,\n domEvent: domEvent\n });\n onInactive(eventKey);\n };\n }\n return ret;\n}","import * as React from 'react';\nimport { MenuContext } from \"../context/MenuContext\";\nexport default function useDirectionStyle(level) {\n var _React$useContext = React.useContext(MenuContext),\n mode = _React$useContext.mode,\n rtl = _React$useContext.rtl,\n inlineIndent = _React$useContext.inlineIndent;\n if (mode !== 'inline') {\n return null;\n }\n var len = level;\n return rtl ? {\n paddingRight: len * inlineIndent\n } : {\n paddingLeft: len * inlineIndent\n };\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nexport default function Icon(_ref) {\n var icon = _ref.icon,\n props = _ref.props,\n children = _ref.children;\n var iconNode;\n if (icon === null || icon === false) {\n return null;\n }\n if (typeof icon === 'function') {\n iconNode = /*#__PURE__*/React.createElement(icon, _objectSpread({}, props));\n } else if (typeof icon !== \"boolean\") {\n // Compatible for origin definition\n iconNode = icon;\n }\n return iconNode || children || null;\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"item\"];\nimport warning from \"rc-util/es/warning\";\n\n/**\n * `onClick` event return `info.item` which point to react node directly.\n * We should warning this since it will not work on FC.\n */\nexport function warnItemProp(_ref) {\n var item = _ref.item,\n restInfo = _objectWithoutProperties(_ref, _excluded);\n Object.defineProperty(restInfo, 'item', {\n get: function get() {\n warning(false, '`info.item` is deprecated since we will move to function component that not provides React Node instance in future.');\n return item;\n }\n });\n return restInfo;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nvar _excluded = [\"title\", \"attribute\", \"elementRef\"],\n _excluded2 = [\"style\", \"className\", \"eventKey\", \"warnKey\", \"disabled\", \"itemIcon\", \"children\", \"role\", \"onMouseEnter\", \"onMouseLeave\", \"onClick\", \"onKeyDown\", \"onFocus\"],\n _excluded3 = [\"active\"];\nimport classNames from 'classnames';\nimport Overflow from 'rc-overflow';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport omit from \"rc-util/es/omit\";\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { useMenuId } from \"./context/IdContext\";\nimport { MenuContext } from \"./context/MenuContext\";\nimport { useFullPath, useMeasure } from \"./context/PathContext\";\nimport PrivateContext from \"./context/PrivateContext\";\nimport useActive from \"./hooks/useActive\";\nimport useDirectionStyle from \"./hooks/useDirectionStyle\";\nimport Icon from \"./Icon\";\nimport { warnItemProp } from \"./utils/warnUtil\";\n// Since Menu event provide the `info.item` which point to the MenuItem node instance.\n// We have to use class component here.\n// This should be removed from doc & api in future.\nvar LegacyMenuItem = /*#__PURE__*/function (_React$Component) {\n _inherits(LegacyMenuItem, _React$Component);\n var _super = _createSuper(LegacyMenuItem);\n function LegacyMenuItem() {\n _classCallCheck(this, LegacyMenuItem);\n return _super.apply(this, arguments);\n }\n _createClass(LegacyMenuItem, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n title = _this$props.title,\n attribute = _this$props.attribute,\n elementRef = _this$props.elementRef,\n restProps = _objectWithoutProperties(_this$props, _excluded);\n\n // Here the props are eventually passed to the DOM element.\n // React does not recognize non-standard attributes.\n // Therefore, remove the props that is not used here.\n // ref: https://github.com/ant-design/ant-design/issues/41395\n var passedProps = omit(restProps, ['eventKey', 'popupClassName', 'popupOffset', 'onTitleClick']);\n warning(!attribute, '`attribute` of Menu.Item is deprecated. Please pass attribute directly.');\n return /*#__PURE__*/React.createElement(Overflow.Item, _extends({}, attribute, {\n title: typeof title === 'string' ? title : undefined\n }, passedProps, {\n ref: elementRef\n }));\n }\n }]);\n return LegacyMenuItem;\n}(React.Component);\n/**\n * Real Menu Item component\n */\nvar InternalMenuItem = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var style = props.style,\n className = props.className,\n eventKey = props.eventKey,\n warnKey = props.warnKey,\n disabled = props.disabled,\n itemIcon = props.itemIcon,\n children = props.children,\n role = props.role,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onClick = props.onClick,\n onKeyDown = props.onKeyDown,\n onFocus = props.onFocus,\n restProps = _objectWithoutProperties(props, _excluded2);\n var domDataId = useMenuId(eventKey);\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls,\n onItemClick = _React$useContext.onItemClick,\n contextDisabled = _React$useContext.disabled,\n overflowDisabled = _React$useContext.overflowDisabled,\n contextItemIcon = _React$useContext.itemIcon,\n selectedKeys = _React$useContext.selectedKeys,\n onActive = _React$useContext.onActive;\n var _React$useContext2 = React.useContext(PrivateContext),\n _internalRenderMenuItem = _React$useContext2._internalRenderMenuItem;\n var itemCls = \"\".concat(prefixCls, \"-item\");\n var legacyMenuItemRef = React.useRef();\n var elementRef = React.useRef();\n var mergedDisabled = contextDisabled || disabled;\n var mergedEleRef = useComposeRef(ref, elementRef);\n var connectedKeys = useFullPath(eventKey);\n\n // ================================ Warn ================================\n if (process.env.NODE_ENV !== 'production' && warnKey) {\n warning(false, 'MenuItem should not leave undefined `key`.');\n }\n\n // ============================= Info =============================\n var getEventInfo = function getEventInfo(e) {\n return {\n key: eventKey,\n // Note: For legacy code is reversed which not like other antd component\n keyPath: _toConsumableArray(connectedKeys).reverse(),\n item: legacyMenuItemRef.current,\n domEvent: e\n };\n };\n\n // ============================= Icon =============================\n var mergedItemIcon = itemIcon || contextItemIcon;\n\n // ============================ Active ============================\n var _useActive = useActive(eventKey, mergedDisabled, onMouseEnter, onMouseLeave),\n active = _useActive.active,\n activeProps = _objectWithoutProperties(_useActive, _excluded3);\n\n // ============================ Select ============================\n var selected = selectedKeys.includes(eventKey);\n\n // ======================== DirectionStyle ========================\n var directionStyle = useDirectionStyle(connectedKeys.length);\n\n // ============================ Events ============================\n var onInternalClick = function onInternalClick(e) {\n if (mergedDisabled) {\n return;\n }\n var info = getEventInfo(e);\n onClick === null || onClick === void 0 || onClick(warnItemProp(info));\n onItemClick(info);\n };\n var onInternalKeyDown = function onInternalKeyDown(e) {\n onKeyDown === null || onKeyDown === void 0 || onKeyDown(e);\n if (e.which === KeyCode.ENTER) {\n var info = getEventInfo(e);\n\n // Legacy. Key will also trigger click event\n onClick === null || onClick === void 0 || onClick(warnItemProp(info));\n onItemClick(info);\n }\n };\n\n /**\n * Used for accessibility. Helper will focus element without key board.\n * We should manually trigger an active\n */\n var onInternalFocus = function onInternalFocus(e) {\n onActive(eventKey);\n onFocus === null || onFocus === void 0 || onFocus(e);\n };\n\n // ============================ Render ============================\n var optionRoleProps = {};\n if (props.role === 'option') {\n optionRoleProps['aria-selected'] = selected;\n }\n var renderNode = /*#__PURE__*/React.createElement(LegacyMenuItem, _extends({\n ref: legacyMenuItemRef,\n elementRef: mergedEleRef,\n role: role === null ? 'none' : role || 'menuitem',\n tabIndex: disabled ? null : -1,\n \"data-menu-id\": overflowDisabled && domDataId ? null : domDataId\n }, restProps, activeProps, optionRoleProps, {\n component: \"li\",\n \"aria-disabled\": disabled,\n style: _objectSpread(_objectSpread({}, directionStyle), style),\n className: classNames(itemCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(itemCls, \"-active\"), active), _defineProperty(_classNames, \"\".concat(itemCls, \"-selected\"), selected), _defineProperty(_classNames, \"\".concat(itemCls, \"-disabled\"), mergedDisabled), _classNames), className),\n onClick: onInternalClick,\n onKeyDown: onInternalKeyDown,\n onFocus: onInternalFocus\n }), children, /*#__PURE__*/React.createElement(Icon, {\n props: _objectSpread(_objectSpread({}, props), {}, {\n isSelected: selected\n }),\n icon: mergedItemIcon\n }));\n if (_internalRenderMenuItem) {\n renderNode = _internalRenderMenuItem(renderNode, props, {\n selected: selected\n });\n }\n return renderNode;\n});\nfunction MenuItem(props, ref) {\n var eventKey = props.eventKey;\n\n // ==================== Record KeyPath ====================\n var measure = useMeasure();\n var connectedKeyPath = useFullPath(eventKey);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(function () {\n if (measure) {\n measure.registerPath(eventKey, connectedKeyPath);\n return function () {\n measure.unregisterPath(eventKey, connectedKeyPath);\n };\n }\n }, [connectedKeyPath]);\n if (measure) {\n return null;\n }\n\n // ======================== Render ========================\n return /*#__PURE__*/React.createElement(InternalMenuItem, _extends({}, props, {\n ref: ref\n }));\n}\nexport default /*#__PURE__*/React.forwardRef(MenuItem);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"children\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { MenuContext } from \"../context/MenuContext\";\nvar InternalSubMenuList = function InternalSubMenuList(_ref, ref) {\n var className = _ref.className,\n children = _ref.children,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls,\n mode = _React$useContext.mode,\n rtl = _React$useContext.rtl;\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, rtl && \"\".concat(prefixCls, \"-rtl\"), \"\".concat(prefixCls, \"-sub\"), \"\".concat(prefixCls, \"-\").concat(mode === 'inline' ? 'inline' : 'vertical'), className),\n role: \"menu\"\n }, restProps, {\n \"data-menu-list\": true,\n ref: ref\n }), children);\n};\nvar SubMenuList = /*#__PURE__*/React.forwardRef(InternalSubMenuList);\nSubMenuList.displayName = 'SubMenuList';\nexport default SubMenuList;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport toArray from \"rc-util/es/Children/toArray\";\nimport * as React from 'react';\nexport function parseChildren(children, keyPath) {\n return toArray(children).map(function (child, index) {\n if ( /*#__PURE__*/React.isValidElement(child)) {\n var _eventKey, _child$props;\n var key = child.key;\n var eventKey = (_eventKey = (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.eventKey) !== null && _eventKey !== void 0 ? _eventKey : key;\n var emptyKey = eventKey === null || eventKey === undefined;\n if (emptyKey) {\n eventKey = \"tmp_key-\".concat([].concat(_toConsumableArray(keyPath), [index]).join('-'));\n }\n var cloneProps = {\n key: eventKey,\n eventKey: eventKey\n };\n if (process.env.NODE_ENV !== 'production' && emptyKey) {\n cloneProps.warnKey = true;\n }\n return /*#__PURE__*/React.cloneElement(child, cloneProps);\n }\n return child;\n });\n}","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\nexport var placements = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflow\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflow\n },\n leftTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow\n },\n leftBottom: {\n points: ['br', 'bl'],\n overflow: autoAdjustOverflow\n },\n rightTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow\n },\n rightBottom: {\n points: ['bl', 'br'],\n overflow: autoAdjustOverflow\n }\n};\nexport var placementsRtl = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflow\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflow\n },\n rightTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow\n },\n rightBottom: {\n points: ['br', 'bl'],\n overflow: autoAdjustOverflow\n },\n leftTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow\n },\n leftBottom: {\n points: ['bl', 'br'],\n overflow: autoAdjustOverflow\n }\n};\nexport default placements;","export function getMotion(mode, motion, defaultMotions) {\n if (motion) {\n return motion;\n }\n if (defaultMotions) {\n return defaultMotions[mode] || defaultMotions.other;\n }\n return undefined;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport Trigger from '@rc-component/trigger';\nimport classNames from 'classnames';\nimport raf from \"rc-util/es/raf\";\nimport { MenuContext } from \"../context/MenuContext\";\nimport { placements, placementsRtl } from \"../placements\";\nimport { getMotion } from \"../utils/motionUtil\";\nvar popupPlacementMap = {\n horizontal: 'bottomLeft',\n vertical: 'rightTop',\n 'vertical-left': 'rightTop',\n 'vertical-right': 'leftTop'\n};\nexport default function PopupTrigger(_ref) {\n var prefixCls = _ref.prefixCls,\n visible = _ref.visible,\n children = _ref.children,\n popup = _ref.popup,\n popupStyle = _ref.popupStyle,\n popupClassName = _ref.popupClassName,\n popupOffset = _ref.popupOffset,\n disabled = _ref.disabled,\n mode = _ref.mode,\n onVisibleChange = _ref.onVisibleChange;\n var _React$useContext = React.useContext(MenuContext),\n getPopupContainer = _React$useContext.getPopupContainer,\n rtl = _React$useContext.rtl,\n subMenuOpenDelay = _React$useContext.subMenuOpenDelay,\n subMenuCloseDelay = _React$useContext.subMenuCloseDelay,\n builtinPlacements = _React$useContext.builtinPlacements,\n triggerSubMenuAction = _React$useContext.triggerSubMenuAction,\n forceSubMenuRender = _React$useContext.forceSubMenuRender,\n rootClassName = _React$useContext.rootClassName,\n motion = _React$useContext.motion,\n defaultMotions = _React$useContext.defaultMotions;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerVisible = _React$useState2[0],\n setInnerVisible = _React$useState2[1];\n var placement = rtl ? _objectSpread(_objectSpread({}, placementsRtl), builtinPlacements) : _objectSpread(_objectSpread({}, placements), builtinPlacements);\n var popupPlacement = popupPlacementMap[mode];\n var targetMotion = getMotion(mode, motion, defaultMotions);\n var targetMotionRef = React.useRef(targetMotion);\n if (mode !== 'inline') {\n /**\n * PopupTrigger is only used for vertical and horizontal types.\n * When collapsed is unfolded, the inline animation will destroy the vertical animation.\n */\n targetMotionRef.current = targetMotion;\n }\n var mergedMotion = _objectSpread(_objectSpread({}, targetMotionRef.current), {}, {\n leavedClassName: \"\".concat(prefixCls, \"-hidden\"),\n removeOnLeave: false,\n motionAppear: true\n });\n\n // Delay to change visible\n var visibleRef = React.useRef();\n React.useEffect(function () {\n visibleRef.current = raf(function () {\n setInnerVisible(visible);\n });\n return function () {\n raf.cancel(visibleRef.current);\n };\n }, [visible]);\n return /*#__PURE__*/React.createElement(Trigger, {\n prefixCls: prefixCls,\n popupClassName: classNames(\"\".concat(prefixCls, \"-popup\"), _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), rtl), popupClassName, rootClassName),\n stretch: mode === 'horizontal' ? 'minWidth' : null,\n getPopupContainer: getPopupContainer,\n builtinPlacements: placement,\n popupPlacement: popupPlacement,\n popupVisible: innerVisible,\n popup: popup,\n popupStyle: popupStyle,\n popupAlign: popupOffset && {\n offset: popupOffset\n },\n action: disabled ? [] : [triggerSubMenuAction],\n mouseEnterDelay: subMenuOpenDelay,\n mouseLeaveDelay: subMenuCloseDelay,\n onPopupVisibleChange: onVisibleChange,\n forceRender: forceSubMenuRender,\n popupMotion: mergedMotion,\n fresh: true\n }, children);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport CSSMotion from 'rc-motion';\nimport { getMotion } from \"../utils/motionUtil\";\nimport MenuContextProvider, { MenuContext } from \"../context/MenuContext\";\nimport SubMenuList from \"./SubMenuList\";\nexport default function InlineSubMenuList(_ref) {\n var id = _ref.id,\n open = _ref.open,\n keyPath = _ref.keyPath,\n children = _ref.children;\n var fixedMode = 'inline';\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls,\n forceSubMenuRender = _React$useContext.forceSubMenuRender,\n motion = _React$useContext.motion,\n defaultMotions = _React$useContext.defaultMotions,\n mode = _React$useContext.mode;\n\n // Always use latest mode check\n var sameModeRef = React.useRef(false);\n sameModeRef.current = mode === fixedMode;\n\n // We record `destroy` mark here since when mode change from `inline` to others.\n // The inline list should remove when motion end.\n var _React$useState = React.useState(!sameModeRef.current),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n destroy = _React$useState2[0],\n setDestroy = _React$useState2[1];\n var mergedOpen = sameModeRef.current ? open : false;\n\n // ================================= Effect =================================\n // Reset destroy state when mode change back\n React.useEffect(function () {\n if (sameModeRef.current) {\n setDestroy(false);\n }\n }, [mode]);\n\n // ================================= Render =================================\n var mergedMotion = _objectSpread({}, getMotion(fixedMode, motion, defaultMotions));\n\n // No need appear since nest inlineCollapse changed\n if (keyPath.length > 1) {\n mergedMotion.motionAppear = false;\n }\n\n // Hide inline list when mode changed and motion end\n var originOnVisibleChanged = mergedMotion.onVisibleChanged;\n mergedMotion.onVisibleChanged = function (newVisible) {\n if (!sameModeRef.current && !newVisible) {\n setDestroy(true);\n }\n return originOnVisibleChanged === null || originOnVisibleChanged === void 0 ? void 0 : originOnVisibleChanged(newVisible);\n };\n if (destroy) {\n return null;\n }\n return /*#__PURE__*/React.createElement(MenuContextProvider, {\n mode: fixedMode,\n locked: !sameModeRef.current\n }, /*#__PURE__*/React.createElement(CSSMotion, _extends({\n visible: mergedOpen\n }, mergedMotion, {\n forceRender: forceSubMenuRender,\n removeOnLeave: false,\n leavedClassName: \"\".concat(prefixCls, \"-hidden\")\n }), function (_ref2) {\n var motionClassName = _ref2.className,\n motionStyle = _ref2.style;\n return /*#__PURE__*/React.createElement(SubMenuList, {\n id: id,\n className: motionClassName,\n style: motionStyle\n }, children);\n }));\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"style\", \"className\", \"title\", \"eventKey\", \"warnKey\", \"disabled\", \"internalPopupClose\", \"children\", \"itemIcon\", \"expandIcon\", \"popupClassName\", \"popupOffset\", \"popupStyle\", \"onClick\", \"onMouseEnter\", \"onMouseLeave\", \"onTitleClick\", \"onTitleMouseEnter\", \"onTitleMouseLeave\"],\n _excluded2 = [\"active\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Overflow from 'rc-overflow';\nimport warning from \"rc-util/es/warning\";\nimport SubMenuList from \"./SubMenuList\";\nimport { parseChildren } from \"../utils/commonUtil\";\nimport MenuContextProvider, { MenuContext } from \"../context/MenuContext\";\nimport useMemoCallback from \"../hooks/useMemoCallback\";\nimport PopupTrigger from \"./PopupTrigger\";\nimport Icon from \"../Icon\";\nimport useActive from \"../hooks/useActive\";\nimport { warnItemProp } from \"../utils/warnUtil\";\nimport useDirectionStyle from \"../hooks/useDirectionStyle\";\nimport InlineSubMenuList from \"./InlineSubMenuList\";\nimport { PathTrackerContext, PathUserContext, useFullPath, useMeasure } from \"../context/PathContext\";\nimport { useMenuId } from \"../context/IdContext\";\nimport PrivateContext from \"../context/PrivateContext\";\nvar InternalSubMenu = function InternalSubMenu(props) {\n var _classNames;\n var style = props.style,\n className = props.className,\n title = props.title,\n eventKey = props.eventKey,\n warnKey = props.warnKey,\n disabled = props.disabled,\n internalPopupClose = props.internalPopupClose,\n children = props.children,\n itemIcon = props.itemIcon,\n expandIcon = props.expandIcon,\n popupClassName = props.popupClassName,\n popupOffset = props.popupOffset,\n popupStyle = props.popupStyle,\n onClick = props.onClick,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onTitleClick = props.onTitleClick,\n onTitleMouseEnter = props.onTitleMouseEnter,\n onTitleMouseLeave = props.onTitleMouseLeave,\n restProps = _objectWithoutProperties(props, _excluded);\n var domDataId = useMenuId(eventKey);\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls,\n mode = _React$useContext.mode,\n openKeys = _React$useContext.openKeys,\n contextDisabled = _React$useContext.disabled,\n overflowDisabled = _React$useContext.overflowDisabled,\n activeKey = _React$useContext.activeKey,\n selectedKeys = _React$useContext.selectedKeys,\n contextItemIcon = _React$useContext.itemIcon,\n contextExpandIcon = _React$useContext.expandIcon,\n onItemClick = _React$useContext.onItemClick,\n onOpenChange = _React$useContext.onOpenChange,\n onActive = _React$useContext.onActive;\n var _React$useContext2 = React.useContext(PrivateContext),\n _internalRenderSubMenuItem = _React$useContext2._internalRenderSubMenuItem;\n var _React$useContext3 = React.useContext(PathUserContext),\n isSubPathKey = _React$useContext3.isSubPathKey;\n var connectedPath = useFullPath();\n var subMenuPrefixCls = \"\".concat(prefixCls, \"-submenu\");\n var mergedDisabled = contextDisabled || disabled;\n var elementRef = React.useRef();\n var popupRef = React.useRef();\n\n // ================================ Warn ================================\n if (process.env.NODE_ENV !== 'production' && warnKey) {\n warning(false, 'SubMenu should not leave undefined `key`.');\n }\n\n // ================================ Icon ================================\n var mergedItemIcon = itemIcon !== null && itemIcon !== void 0 ? itemIcon : contextItemIcon;\n var mergedExpandIcon = expandIcon !== null && expandIcon !== void 0 ? expandIcon : contextExpandIcon;\n\n // ================================ Open ================================\n var originOpen = openKeys.includes(eventKey);\n var open = !overflowDisabled && originOpen;\n\n // =============================== Select ===============================\n var childrenSelected = isSubPathKey(selectedKeys, eventKey);\n\n // =============================== Active ===============================\n var _useActive = useActive(eventKey, mergedDisabled, onTitleMouseEnter, onTitleMouseLeave),\n active = _useActive.active,\n activeProps = _objectWithoutProperties(_useActive, _excluded2);\n\n // Fallback of active check to avoid hover on menu title or disabled item\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n childrenActive = _React$useState2[0],\n setChildrenActive = _React$useState2[1];\n var triggerChildrenActive = function triggerChildrenActive(newActive) {\n if (!mergedDisabled) {\n setChildrenActive(newActive);\n }\n };\n var onInternalMouseEnter = function onInternalMouseEnter(domEvent) {\n triggerChildrenActive(true);\n onMouseEnter === null || onMouseEnter === void 0 || onMouseEnter({\n key: eventKey,\n domEvent: domEvent\n });\n };\n var onInternalMouseLeave = function onInternalMouseLeave(domEvent) {\n triggerChildrenActive(false);\n onMouseLeave === null || onMouseLeave === void 0 || onMouseLeave({\n key: eventKey,\n domEvent: domEvent\n });\n };\n var mergedActive = React.useMemo(function () {\n if (active) {\n return active;\n }\n if (mode !== 'inline') {\n return childrenActive || isSubPathKey([activeKey], eventKey);\n }\n return false;\n }, [mode, active, activeKey, childrenActive, eventKey, isSubPathKey]);\n\n // ========================== DirectionStyle ==========================\n var directionStyle = useDirectionStyle(connectedPath.length);\n\n // =============================== Events ===============================\n // >>>> Title click\n var onInternalTitleClick = function onInternalTitleClick(e) {\n // Skip if disabled\n if (mergedDisabled) {\n return;\n }\n onTitleClick === null || onTitleClick === void 0 || onTitleClick({\n key: eventKey,\n domEvent: e\n });\n\n // Trigger open by click when mode is `inline`\n if (mode === 'inline') {\n onOpenChange(eventKey, !originOpen);\n }\n };\n\n // >>>> Context for children click\n var onMergedItemClick = useMemoCallback(function (info) {\n onClick === null || onClick === void 0 || onClick(warnItemProp(info));\n onItemClick(info);\n });\n\n // >>>>> Visible change\n var onPopupVisibleChange = function onPopupVisibleChange(newVisible) {\n if (mode !== 'inline') {\n onOpenChange(eventKey, newVisible);\n }\n };\n\n /**\n * Used for accessibility. Helper will focus element without key board.\n * We should manually trigger an active\n */\n var onInternalFocus = function onInternalFocus() {\n onActive(eventKey);\n };\n\n // =============================== Render ===============================\n var popupId = domDataId && \"\".concat(domDataId, \"-popup\");\n\n // >>>>> Title\n var titleNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n role: \"menuitem\",\n style: directionStyle,\n className: \"\".concat(subMenuPrefixCls, \"-title\"),\n tabIndex: mergedDisabled ? null : -1,\n ref: elementRef,\n title: typeof title === 'string' ? title : null,\n \"data-menu-id\": overflowDisabled && domDataId ? null : domDataId,\n \"aria-expanded\": open,\n \"aria-haspopup\": true,\n \"aria-controls\": popupId,\n \"aria-disabled\": mergedDisabled,\n onClick: onInternalTitleClick,\n onFocus: onInternalFocus\n }, activeProps), title, /*#__PURE__*/React.createElement(Icon, {\n icon: mode !== 'horizontal' ? mergedExpandIcon : undefined,\n props: _objectSpread(_objectSpread({}, props), {}, {\n isOpen: open,\n // [Legacy] Not sure why need this mark\n isSubMenu: true\n })\n }, /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(subMenuPrefixCls, \"-arrow\")\n })));\n\n // Cache mode if it change to `inline` which do not have popup motion\n var triggerModeRef = React.useRef(mode);\n if (mode !== 'inline' && connectedPath.length > 1) {\n triggerModeRef.current = 'vertical';\n } else {\n triggerModeRef.current = mode;\n }\n if (!overflowDisabled) {\n var triggerMode = triggerModeRef.current;\n\n // Still wrap with Trigger here since we need avoid react re-mount dom node\n // Which makes motion failed\n titleNode = /*#__PURE__*/React.createElement(PopupTrigger, {\n mode: triggerMode,\n prefixCls: subMenuPrefixCls,\n visible: !internalPopupClose && open && mode !== 'inline',\n popupClassName: popupClassName,\n popupOffset: popupOffset,\n popupStyle: popupStyle,\n popup: /*#__PURE__*/React.createElement(MenuContextProvider\n // Special handle of horizontal mode\n , {\n mode: triggerMode === 'horizontal' ? 'vertical' : triggerMode\n }, /*#__PURE__*/React.createElement(SubMenuList, {\n id: popupId,\n ref: popupRef\n }, children)),\n disabled: mergedDisabled,\n onVisibleChange: onPopupVisibleChange\n }, titleNode);\n }\n\n // >>>>> List node\n var listNode = /*#__PURE__*/React.createElement(Overflow.Item, _extends({\n role: \"none\"\n }, restProps, {\n component: \"li\",\n style: style,\n className: classNames(subMenuPrefixCls, \"\".concat(subMenuPrefixCls, \"-\").concat(mode), className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(subMenuPrefixCls, \"-open\"), open), _defineProperty(_classNames, \"\".concat(subMenuPrefixCls, \"-active\"), mergedActive), _defineProperty(_classNames, \"\".concat(subMenuPrefixCls, \"-selected\"), childrenSelected), _defineProperty(_classNames, \"\".concat(subMenuPrefixCls, \"-disabled\"), mergedDisabled), _classNames)),\n onMouseEnter: onInternalMouseEnter,\n onMouseLeave: onInternalMouseLeave\n }), titleNode, !overflowDisabled && /*#__PURE__*/React.createElement(InlineSubMenuList, {\n id: popupId,\n open: open,\n keyPath: connectedPath\n }, children));\n if (_internalRenderSubMenuItem) {\n listNode = _internalRenderSubMenuItem(listNode, props, {\n selected: childrenSelected,\n active: mergedActive,\n open: open,\n disabled: mergedDisabled\n });\n }\n\n // >>>>> Render\n return /*#__PURE__*/React.createElement(MenuContextProvider, {\n onItemClick: onMergedItemClick,\n mode: mode === 'horizontal' ? 'vertical' : mode,\n itemIcon: mergedItemIcon,\n expandIcon: mergedExpandIcon\n }, listNode);\n};\nexport default function SubMenu(props) {\n var eventKey = props.eventKey,\n children = props.children;\n var connectedKeyPath = useFullPath(eventKey);\n var childList = parseChildren(children, connectedKeyPath);\n\n // ==================== Record KeyPath ====================\n var measure = useMeasure();\n\n // eslint-disable-next-line consistent-return\n React.useEffect(function () {\n if (measure) {\n measure.registerPath(eventKey, connectedKeyPath);\n return function () {\n measure.unregisterPath(eventKey, connectedKeyPath);\n };\n }\n }, [connectedKeyPath]);\n var renderNode;\n\n // ======================== Render ========================\n if (measure) {\n renderNode = childList;\n } else {\n renderNode = /*#__PURE__*/React.createElement(InternalSubMenu, props, childList);\n }\n return /*#__PURE__*/React.createElement(PathTrackerContext.Provider, {\n value: connectedKeyPath\n }, renderNode);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"title\", \"eventKey\", \"children\"],\n _excluded2 = [\"children\"];\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { MenuContext } from \"./context/MenuContext\";\nimport { useFullPath, useMeasure } from \"./context/PathContext\";\nimport { parseChildren } from \"./utils/commonUtil\";\nvar InternalMenuItemGroup = function InternalMenuItemGroup(_ref) {\n var className = _ref.className,\n title = _ref.title,\n eventKey = _ref.eventKey,\n children = _ref.children,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls;\n var groupPrefixCls = \"\".concat(prefixCls, \"-item-group\");\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n role: \"presentation\"\n }, restProps, {\n onClick: function onClick(e) {\n return e.stopPropagation();\n },\n className: classNames(groupPrefixCls, className)\n }), /*#__PURE__*/React.createElement(\"div\", {\n role: \"presentation\",\n className: \"\".concat(groupPrefixCls, \"-title\"),\n title: typeof title === 'string' ? title : undefined\n }, title), /*#__PURE__*/React.createElement(\"ul\", {\n role: \"group\",\n className: \"\".concat(groupPrefixCls, \"-list\")\n }, children));\n};\nexport default function MenuItemGroup(_ref2) {\n var children = _ref2.children,\n props = _objectWithoutProperties(_ref2, _excluded2);\n var connectedKeyPath = useFullPath(props.eventKey);\n var childList = parseChildren(children, connectedKeyPath);\n var measure = useMeasure();\n if (measure) {\n return childList;\n }\n return /*#__PURE__*/React.createElement(InternalMenuItemGroup, omit(props, ['warnKey']), childList);\n}","import * as React from 'react';\nimport classNames from 'classnames';\nimport { MenuContext } from \"./context/MenuContext\";\nimport { useMeasure } from \"./context/PathContext\";\nexport default function Divider(_ref) {\n var className = _ref.className,\n style = _ref.style;\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls;\n var measure = useMeasure();\n if (measure) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"li\", {\n role: \"separator\",\n className: classNames(\"\".concat(prefixCls, \"-item-divider\"), className),\n style: style\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar _excluded = [\"label\", \"children\", \"key\", \"type\"];\nimport * as React from 'react';\nimport MenuItemGroup from \"../MenuItemGroup\";\nimport SubMenu from \"../SubMenu\";\nimport Divider from \"../Divider\";\nimport MenuItem from \"../MenuItem\";\nimport { parseChildren } from \"./commonUtil\";\nfunction convertItemsToNodes(list) {\n return (list || []).map(function (opt, index) {\n if (opt && _typeof(opt) === 'object') {\n var _ref = opt,\n label = _ref.label,\n children = _ref.children,\n key = _ref.key,\n type = _ref.type,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var mergedKey = key !== null && key !== void 0 ? key : \"tmp-\".concat(index);\n\n // MenuItemGroup & SubMenuItem\n if (children || type === 'group') {\n if (type === 'group') {\n // Group\n return /*#__PURE__*/React.createElement(MenuItemGroup, _extends({\n key: mergedKey\n }, restProps, {\n title: label\n }), convertItemsToNodes(children));\n }\n\n // Sub Menu\n return /*#__PURE__*/React.createElement(SubMenu, _extends({\n key: mergedKey\n }, restProps, {\n title: label\n }), convertItemsToNodes(children));\n }\n\n // MenuItem & Divider\n if (type === 'divider') {\n return /*#__PURE__*/React.createElement(Divider, _extends({\n key: mergedKey\n }, restProps));\n }\n return /*#__PURE__*/React.createElement(MenuItem, _extends({\n key: mergedKey\n }, restProps), label);\n }\n return null;\n }).filter(function (opt) {\n return opt;\n });\n}\nexport function parseItems(children, items, keyPath) {\n var childNodes = children;\n if (items) {\n childNodes = convertItemsToNodes(items);\n }\n return parseChildren(childNodes, keyPath);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"rootClassName\", \"style\", \"className\", \"tabIndex\", \"items\", \"children\", \"direction\", \"id\", \"mode\", \"inlineCollapsed\", \"disabled\", \"disabledOverflow\", \"subMenuOpenDelay\", \"subMenuCloseDelay\", \"forceSubMenuRender\", \"defaultOpenKeys\", \"openKeys\", \"activeKey\", \"defaultActiveFirst\", \"selectable\", \"multiple\", \"defaultSelectedKeys\", \"selectedKeys\", \"onSelect\", \"onDeselect\", \"inlineIndent\", \"motion\", \"defaultMotions\", \"triggerSubMenuAction\", \"builtinPlacements\", \"itemIcon\", \"expandIcon\", \"overflowedIndicator\", \"overflowedIndicatorPopupClassName\", \"getPopupContainer\", \"onClick\", \"onOpenChange\", \"onKeyDown\", \"openAnimation\", \"openTransitionName\", \"_internalRenderMenuItem\", \"_internalRenderSubMenuItem\"];\nimport classNames from 'classnames';\nimport Overflow from 'rc-overflow';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { useImperativeHandle } from 'react';\nimport { flushSync } from 'react-dom';\nimport { IdContext } from \"./context/IdContext\";\nimport MenuContextProvider from \"./context/MenuContext\";\nimport { PathRegisterContext, PathUserContext } from \"./context/PathContext\";\nimport PrivateContext from \"./context/PrivateContext\";\nimport { getFocusableElements, refreshElements, useAccessibility } from \"./hooks/useAccessibility\";\nimport useKeyRecords, { OVERFLOW_KEY } from \"./hooks/useKeyRecords\";\nimport useMemoCallback from \"./hooks/useMemoCallback\";\nimport useUUID from \"./hooks/useUUID\";\nimport MenuItem from \"./MenuItem\";\nimport SubMenu from \"./SubMenu\";\nimport { parseItems } from \"./utils/nodeUtil\";\nimport { warnItemProp } from \"./utils/warnUtil\";\n\n/**\n * Menu modify after refactor:\n * ## Add\n * - disabled\n *\n * ## Remove\n * - openTransitionName\n * - openAnimation\n * - onDestroy\n * - siderCollapsed: Seems antd do not use this prop (Need test in antd)\n * - collapsedWidth: Seems this logic should be handle by antd Layout.Sider\n */\n\n// optimize for render\nvar EMPTY_LIST = [];\nvar Menu = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _childList$, _classNames;\n var _ref = props,\n _ref$prefixCls = _ref.prefixCls,\n prefixCls = _ref$prefixCls === void 0 ? 'rc-menu' : _ref$prefixCls,\n rootClassName = _ref.rootClassName,\n style = _ref.style,\n className = _ref.className,\n _ref$tabIndex = _ref.tabIndex,\n tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex,\n items = _ref.items,\n children = _ref.children,\n direction = _ref.direction,\n id = _ref.id,\n _ref$mode = _ref.mode,\n mode = _ref$mode === void 0 ? 'vertical' : _ref$mode,\n inlineCollapsed = _ref.inlineCollapsed,\n disabled = _ref.disabled,\n disabledOverflow = _ref.disabledOverflow,\n _ref$subMenuOpenDelay = _ref.subMenuOpenDelay,\n subMenuOpenDelay = _ref$subMenuOpenDelay === void 0 ? 0.1 : _ref$subMenuOpenDelay,\n _ref$subMenuCloseDela = _ref.subMenuCloseDelay,\n subMenuCloseDelay = _ref$subMenuCloseDela === void 0 ? 0.1 : _ref$subMenuCloseDela,\n forceSubMenuRender = _ref.forceSubMenuRender,\n defaultOpenKeys = _ref.defaultOpenKeys,\n openKeys = _ref.openKeys,\n activeKey = _ref.activeKey,\n defaultActiveFirst = _ref.defaultActiveFirst,\n _ref$selectable = _ref.selectable,\n selectable = _ref$selectable === void 0 ? true : _ref$selectable,\n _ref$multiple = _ref.multiple,\n multiple = _ref$multiple === void 0 ? false : _ref$multiple,\n defaultSelectedKeys = _ref.defaultSelectedKeys,\n selectedKeys = _ref.selectedKeys,\n onSelect = _ref.onSelect,\n onDeselect = _ref.onDeselect,\n _ref$inlineIndent = _ref.inlineIndent,\n inlineIndent = _ref$inlineIndent === void 0 ? 24 : _ref$inlineIndent,\n motion = _ref.motion,\n defaultMotions = _ref.defaultMotions,\n _ref$triggerSubMenuAc = _ref.triggerSubMenuAction,\n triggerSubMenuAction = _ref$triggerSubMenuAc === void 0 ? 'hover' : _ref$triggerSubMenuAc,\n builtinPlacements = _ref.builtinPlacements,\n itemIcon = _ref.itemIcon,\n expandIcon = _ref.expandIcon,\n _ref$overflowedIndica = _ref.overflowedIndicator,\n overflowedIndicator = _ref$overflowedIndica === void 0 ? '...' : _ref$overflowedIndica,\n overflowedIndicatorPopupClassName = _ref.overflowedIndicatorPopupClassName,\n getPopupContainer = _ref.getPopupContainer,\n onClick = _ref.onClick,\n onOpenChange = _ref.onOpenChange,\n onKeyDown = _ref.onKeyDown,\n openAnimation = _ref.openAnimation,\n openTransitionName = _ref.openTransitionName,\n _internalRenderMenuItem = _ref._internalRenderMenuItem,\n _internalRenderSubMenuItem = _ref._internalRenderSubMenuItem,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var childList = React.useMemo(function () {\n return parseItems(children, items, EMPTY_LIST);\n }, [children, items]);\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n mounted = _React$useState2[0],\n setMounted = _React$useState2[1];\n var containerRef = React.useRef();\n var uuid = useUUID(id);\n var isRtl = direction === 'rtl';\n\n // ========================= Warn =========================\n if (process.env.NODE_ENV !== 'production') {\n warning(!openAnimation && !openTransitionName, '`openAnimation` and `openTransitionName` is removed. Please use `motion` or `defaultMotion` instead.');\n }\n\n // ========================= Open =========================\n var _useMergedState = useMergedState(defaultOpenKeys, {\n value: openKeys,\n postState: function postState(keys) {\n return keys || EMPTY_LIST;\n }\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedOpenKeys = _useMergedState2[0],\n setMergedOpenKeys = _useMergedState2[1];\n\n // React 18 will merge mouse event which means we open key will not sync\n // ref: https://github.com/ant-design/ant-design/issues/38818\n var triggerOpenKeys = function triggerOpenKeys(keys) {\n var forceFlush = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n function doUpdate() {\n setMergedOpenKeys(keys);\n onOpenChange === null || onOpenChange === void 0 || onOpenChange(keys);\n }\n if (forceFlush) {\n flushSync(doUpdate);\n } else {\n doUpdate();\n }\n };\n\n // >>>>> Cache & Reset open keys when inlineCollapsed changed\n var _React$useState3 = React.useState(mergedOpenKeys),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n inlineCacheOpenKeys = _React$useState4[0],\n setInlineCacheOpenKeys = _React$useState4[1];\n var mountRef = React.useRef(false);\n\n // ========================= Mode =========================\n var _React$useMemo = React.useMemo(function () {\n if ((mode === 'inline' || mode === 'vertical') && inlineCollapsed) {\n return ['vertical', inlineCollapsed];\n }\n return [mode, false];\n }, [mode, inlineCollapsed]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n mergedMode = _React$useMemo2[0],\n mergedInlineCollapsed = _React$useMemo2[1];\n var isInlineMode = mergedMode === 'inline';\n var _React$useState5 = React.useState(mergedMode),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n internalMode = _React$useState6[0],\n setInternalMode = _React$useState6[1];\n var _React$useState7 = React.useState(mergedInlineCollapsed),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n internalInlineCollapsed = _React$useState8[0],\n setInternalInlineCollapsed = _React$useState8[1];\n React.useEffect(function () {\n setInternalMode(mergedMode);\n setInternalInlineCollapsed(mergedInlineCollapsed);\n if (!mountRef.current) {\n return;\n }\n // Synchronously update MergedOpenKeys\n if (isInlineMode) {\n setMergedOpenKeys(inlineCacheOpenKeys);\n } else {\n // Trigger open event in case its in control\n triggerOpenKeys(EMPTY_LIST);\n }\n }, [mergedMode, mergedInlineCollapsed]);\n\n // ====================== Responsive ======================\n var _React$useState9 = React.useState(0),\n _React$useState10 = _slicedToArray(_React$useState9, 2),\n lastVisibleIndex = _React$useState10[0],\n setLastVisibleIndex = _React$useState10[1];\n var allVisible = lastVisibleIndex >= childList.length - 1 || internalMode !== 'horizontal' || disabledOverflow;\n\n // Cache\n React.useEffect(function () {\n if (isInlineMode) {\n setInlineCacheOpenKeys(mergedOpenKeys);\n }\n }, [mergedOpenKeys]);\n React.useEffect(function () {\n mountRef.current = true;\n return function () {\n mountRef.current = false;\n };\n }, []);\n\n // ========================= Path =========================\n var _useKeyRecords = useKeyRecords(),\n registerPath = _useKeyRecords.registerPath,\n unregisterPath = _useKeyRecords.unregisterPath,\n refreshOverflowKeys = _useKeyRecords.refreshOverflowKeys,\n isSubPathKey = _useKeyRecords.isSubPathKey,\n getKeyPath = _useKeyRecords.getKeyPath,\n getKeys = _useKeyRecords.getKeys,\n getSubPathKeys = _useKeyRecords.getSubPathKeys;\n var registerPathContext = React.useMemo(function () {\n return {\n registerPath: registerPath,\n unregisterPath: unregisterPath\n };\n }, [registerPath, unregisterPath]);\n var pathUserContext = React.useMemo(function () {\n return {\n isSubPathKey: isSubPathKey\n };\n }, [isSubPathKey]);\n React.useEffect(function () {\n refreshOverflowKeys(allVisible ? EMPTY_LIST : childList.slice(lastVisibleIndex + 1).map(function (child) {\n return child.key;\n }));\n }, [lastVisibleIndex, allVisible]);\n\n // ======================== Active ========================\n var _useMergedState3 = useMergedState(activeKey || defaultActiveFirst && ((_childList$ = childList[0]) === null || _childList$ === void 0 ? void 0 : _childList$.key), {\n value: activeKey\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n mergedActiveKey = _useMergedState4[0],\n setMergedActiveKey = _useMergedState4[1];\n var onActive = useMemoCallback(function (key) {\n setMergedActiveKey(key);\n });\n var onInactive = useMemoCallback(function () {\n setMergedActiveKey(undefined);\n });\n useImperativeHandle(ref, function () {\n return {\n list: containerRef.current,\n focus: function focus(options) {\n var _childList$find;\n var keys = getKeys();\n var _refreshElements = refreshElements(keys, uuid),\n elements = _refreshElements.elements,\n key2element = _refreshElements.key2element,\n element2key = _refreshElements.element2key;\n var focusableElements = getFocusableElements(containerRef.current, elements);\n var shouldFocusKey = mergedActiveKey !== null && mergedActiveKey !== void 0 ? mergedActiveKey : focusableElements[0] ? element2key.get(focusableElements[0]) : (_childList$find = childList.find(function (node) {\n return !node.props.disabled;\n })) === null || _childList$find === void 0 ? void 0 : _childList$find.key;\n var elementToFocus = key2element.get(shouldFocusKey);\n if (shouldFocusKey && elementToFocus) {\n var _elementToFocus$focus;\n elementToFocus === null || elementToFocus === void 0 || (_elementToFocus$focus = elementToFocus.focus) === null || _elementToFocus$focus === void 0 || _elementToFocus$focus.call(elementToFocus, options);\n }\n }\n };\n });\n\n // ======================== Select ========================\n // >>>>> Select keys\n var _useMergedState5 = useMergedState(defaultSelectedKeys || [], {\n value: selectedKeys,\n // Legacy convert key to array\n postState: function postState(keys) {\n if (Array.isArray(keys)) {\n return keys;\n }\n if (keys === null || keys === undefined) {\n return EMPTY_LIST;\n }\n return [keys];\n }\n }),\n _useMergedState6 = _slicedToArray(_useMergedState5, 2),\n mergedSelectKeys = _useMergedState6[0],\n setMergedSelectKeys = _useMergedState6[1];\n\n // >>>>> Trigger select\n var triggerSelection = function triggerSelection(info) {\n if (selectable) {\n // Insert or Remove\n var targetKey = info.key;\n var exist = mergedSelectKeys.includes(targetKey);\n var newSelectKeys;\n if (multiple) {\n if (exist) {\n newSelectKeys = mergedSelectKeys.filter(function (key) {\n return key !== targetKey;\n });\n } else {\n newSelectKeys = [].concat(_toConsumableArray(mergedSelectKeys), [targetKey]);\n }\n } else {\n newSelectKeys = [targetKey];\n }\n setMergedSelectKeys(newSelectKeys);\n\n // Trigger event\n var selectInfo = _objectSpread(_objectSpread({}, info), {}, {\n selectedKeys: newSelectKeys\n });\n if (exist) {\n onDeselect === null || onDeselect === void 0 || onDeselect(selectInfo);\n } else {\n onSelect === null || onSelect === void 0 || onSelect(selectInfo);\n }\n }\n\n // Whatever selectable, always close it\n if (!multiple && mergedOpenKeys.length && internalMode !== 'inline') {\n triggerOpenKeys(EMPTY_LIST);\n }\n };\n\n // ========================= Open =========================\n /**\n * Click for item. SubMenu do not have selection status\n */\n var onInternalClick = useMemoCallback(function (info) {\n onClick === null || onClick === void 0 || onClick(warnItemProp(info));\n triggerSelection(info);\n });\n var onInternalOpenChange = useMemoCallback(function (key, open) {\n var newOpenKeys = mergedOpenKeys.filter(function (k) {\n return k !== key;\n });\n if (open) {\n newOpenKeys.push(key);\n } else if (internalMode !== 'inline') {\n // We need find all related popup to close\n var subPathKeys = getSubPathKeys(key);\n newOpenKeys = newOpenKeys.filter(function (k) {\n return !subPathKeys.has(k);\n });\n }\n if (!isEqual(mergedOpenKeys, newOpenKeys, true)) {\n triggerOpenKeys(newOpenKeys, true);\n }\n });\n\n // ==================== Accessibility =====================\n var triggerAccessibilityOpen = function triggerAccessibilityOpen(key, open) {\n var nextOpen = open !== null && open !== void 0 ? open : !mergedOpenKeys.includes(key);\n onInternalOpenChange(key, nextOpen);\n };\n var onInternalKeyDown = useAccessibility(internalMode, mergedActiveKey, isRtl, uuid, containerRef, getKeys, getKeyPath, setMergedActiveKey, triggerAccessibilityOpen, onKeyDown);\n\n // ======================== Effect ========================\n React.useEffect(function () {\n setMounted(true);\n }, []);\n\n // ======================= Context ========================\n var privateContext = React.useMemo(function () {\n return {\n _internalRenderMenuItem: _internalRenderMenuItem,\n _internalRenderSubMenuItem: _internalRenderSubMenuItem\n };\n }, [_internalRenderMenuItem, _internalRenderSubMenuItem]);\n\n // ======================== Render ========================\n\n // >>>>> Children\n var wrappedChildList = internalMode !== 'horizontal' || disabledOverflow ? childList :\n // Need wrap for overflow dropdown that do not response for open\n childList.map(function (child, index) {\n return (\n /*#__PURE__*/\n // Always wrap provider to avoid sub node re-mount\n React.createElement(MenuContextProvider, {\n key: child.key,\n overflowDisabled: index > lastVisibleIndex\n }, child)\n );\n });\n\n // >>>>> Container\n var container = /*#__PURE__*/React.createElement(Overflow, _extends({\n id: id,\n ref: containerRef,\n prefixCls: \"\".concat(prefixCls, \"-overflow\"),\n component: \"ul\",\n itemComponent: MenuItem,\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-root\"), \"\".concat(prefixCls, \"-\").concat(internalMode), className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-inline-collapsed\"), internalInlineCollapsed), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), isRtl), _classNames), rootClassName),\n dir: direction,\n style: style,\n role: \"menu\",\n tabIndex: tabIndex,\n data: wrappedChildList,\n renderRawItem: function renderRawItem(node) {\n return node;\n },\n renderRawRest: function renderRawRest(omitItems) {\n // We use origin list since wrapped list use context to prevent open\n var len = omitItems.length;\n var originOmitItems = len ? childList.slice(-len) : null;\n return /*#__PURE__*/React.createElement(SubMenu, {\n eventKey: OVERFLOW_KEY,\n title: overflowedIndicator,\n disabled: allVisible,\n internalPopupClose: len === 0,\n popupClassName: overflowedIndicatorPopupClassName\n }, originOmitItems);\n },\n maxCount: internalMode !== 'horizontal' || disabledOverflow ? Overflow.INVALIDATE : Overflow.RESPONSIVE,\n ssr: \"full\",\n \"data-menu-list\": true,\n onVisibleChange: function onVisibleChange(newLastIndex) {\n setLastVisibleIndex(newLastIndex);\n },\n onKeyDown: onInternalKeyDown\n }, restProps));\n\n // >>>>> Render\n return /*#__PURE__*/React.createElement(PrivateContext.Provider, {\n value: privateContext\n }, /*#__PURE__*/React.createElement(IdContext.Provider, {\n value: uuid\n }, /*#__PURE__*/React.createElement(MenuContextProvider, {\n prefixCls: prefixCls,\n rootClassName: rootClassName,\n mode: internalMode,\n openKeys: mergedOpenKeys,\n rtl: isRtl\n // Disabled\n ,\n disabled: disabled\n // Motion\n ,\n motion: mounted ? motion : null,\n defaultMotions: mounted ? defaultMotions : null\n // Active\n ,\n activeKey: mergedActiveKey,\n onActive: onActive,\n onInactive: onInactive\n // Selection\n ,\n selectedKeys: mergedSelectKeys\n // Level\n ,\n inlineIndent: inlineIndent\n // Popup\n ,\n subMenuOpenDelay: subMenuOpenDelay,\n subMenuCloseDelay: subMenuCloseDelay,\n forceSubMenuRender: forceSubMenuRender,\n builtinPlacements: builtinPlacements,\n triggerSubMenuAction: triggerSubMenuAction,\n getPopupContainer: getPopupContainer\n // Icon\n ,\n itemIcon: itemIcon,\n expandIcon: expandIcon\n // Events\n ,\n onItemClick: onInternalClick,\n onOpenChange: onInternalOpenChange\n }, /*#__PURE__*/React.createElement(PathUserContext.Provider, {\n value: pathUserContext\n }, container), /*#__PURE__*/React.createElement(\"div\", {\n style: {\n display: 'none'\n },\n \"aria-hidden\": true\n }, /*#__PURE__*/React.createElement(PathRegisterContext.Provider, {\n value: registerPathContext\n }, childList)))));\n});\nexport default Menu;","import Menu from \"./Menu\";\nimport MenuItem from \"./MenuItem\";\nimport SubMenu from \"./SubMenu\";\nimport MenuItemGroup from \"./MenuItemGroup\";\nimport { useFullPath } from \"./context/PathContext\";\nimport Divider from \"./Divider\";\nexport { SubMenu, MenuItem as Item, MenuItem, MenuItemGroup, MenuItemGroup as ItemGroup, Divider, /** @private Only used for antd internal. Do not use in your production. */\nuseFullPath };\nvar ExportMenu = Menu;\nExportMenu.Item = MenuItem;\nExportMenu.SubMenu = SubMenu;\nExportMenu.ItemGroup = MenuItemGroup;\nExportMenu.Divider = Divider;\nexport default ExportMenu;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { useContext, useEffect, useRef, useState } from 'react';\nimport BarsOutlined from \"@ant-design/icons/es/icons/BarsOutlined\";\nimport LeftOutlined from \"@ant-design/icons/es/icons/LeftOutlined\";\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport isNumeric from '../_util/isNumeric';\nimport { ConfigContext } from '../config-provider';\nimport { LayoutContext } from './context';\nconst dimensionMaxMap = {\n xs: '479.98px',\n sm: '575.98px',\n md: '767.98px',\n lg: '991.98px',\n xl: '1199.98px',\n xxl: '1599.98px'\n};\nexport const SiderContext = /*#__PURE__*/React.createContext({});\nconst generateId = (() => {\n let i = 0;\n return function () {\n let prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n i += 1;\n return `${prefix}${i}`;\n };\n})();\nconst Sider = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n prefixCls: customizePrefixCls,\n className,\n trigger,\n children,\n defaultCollapsed = false,\n theme = 'dark',\n style = {},\n collapsible = false,\n reverseArrow = false,\n width = 200,\n collapsedWidth = 80,\n zeroWidthTriggerStyle,\n breakpoint,\n onCollapse,\n onBreakpoint\n } = props,\n otherProps = __rest(props, [\"prefixCls\", \"className\", \"trigger\", \"children\", \"defaultCollapsed\", \"theme\", \"style\", \"collapsible\", \"reverseArrow\", \"width\", \"collapsedWidth\", \"zeroWidthTriggerStyle\", \"breakpoint\", \"onCollapse\", \"onBreakpoint\"]);\n const {\n siderHook\n } = useContext(LayoutContext);\n const [collapsed, setCollapsed] = useState('collapsed' in props ? props.collapsed : defaultCollapsed);\n const [below, setBelow] = useState(false);\n useEffect(() => {\n if ('collapsed' in props) {\n setCollapsed(props.collapsed);\n }\n }, [props.collapsed]);\n const handleSetCollapsed = (value, type) => {\n if (!('collapsed' in props)) {\n setCollapsed(value);\n }\n onCollapse === null || onCollapse === void 0 ? void 0 : onCollapse(value, type);\n };\n // ========================= Responsive =========================\n const responsiveHandlerRef = useRef();\n responsiveHandlerRef.current = mql => {\n setBelow(mql.matches);\n onBreakpoint === null || onBreakpoint === void 0 ? void 0 : onBreakpoint(mql.matches);\n if (collapsed !== mql.matches) {\n handleSetCollapsed(mql.matches, 'responsive');\n }\n };\n useEffect(() => {\n function responsiveHandler(mql) {\n return responsiveHandlerRef.current(mql);\n }\n let mql;\n if (typeof window !== 'undefined') {\n const {\n matchMedia\n } = window;\n if (matchMedia && breakpoint && breakpoint in dimensionMaxMap) {\n mql = matchMedia(`screen and (max-width: ${dimensionMaxMap[breakpoint]})`);\n try {\n mql.addEventListener('change', responsiveHandler);\n } catch (error) {\n mql.addListener(responsiveHandler);\n }\n responsiveHandler(mql);\n }\n }\n return () => {\n try {\n mql === null || mql === void 0 ? void 0 : mql.removeEventListener('change', responsiveHandler);\n } catch (error) {\n mql === null || mql === void 0 ? void 0 : mql.removeListener(responsiveHandler);\n }\n };\n }, [breakpoint]); // in order to accept dynamic 'breakpoint' property, we need to add 'breakpoint' into dependency array.\n useEffect(() => {\n const uniqueId = generateId('ant-sider-');\n siderHook.addSider(uniqueId);\n return () => siderHook.removeSider(uniqueId);\n }, []);\n const toggle = () => {\n handleSetCollapsed(!collapsed, 'clickTrigger');\n };\n const {\n getPrefixCls\n } = useContext(ConfigContext);\n const renderSider = () => {\n const prefixCls = getPrefixCls('layout-sider', customizePrefixCls);\n const divProps = omit(otherProps, ['collapsed']);\n const rawWidth = collapsed ? collapsedWidth : width;\n // use \"px\" as fallback unit for width\n const siderWidth = isNumeric(rawWidth) ? `${rawWidth}px` : String(rawWidth);\n // special trigger when collapsedWidth == 0\n const zeroWidthTrigger = parseFloat(String(collapsedWidth || 0)) === 0 ? ( /*#__PURE__*/React.createElement(\"span\", {\n onClick: toggle,\n className: classNames(`${prefixCls}-zero-width-trigger`, `${prefixCls}-zero-width-trigger-${reverseArrow ? 'right' : 'left'}`),\n style: zeroWidthTriggerStyle\n }, trigger || /*#__PURE__*/React.createElement(BarsOutlined, null))) : null;\n const iconObj = {\n expanded: reverseArrow ? /*#__PURE__*/React.createElement(RightOutlined, null) : /*#__PURE__*/React.createElement(LeftOutlined, null),\n collapsed: reverseArrow ? /*#__PURE__*/React.createElement(LeftOutlined, null) : /*#__PURE__*/React.createElement(RightOutlined, null)\n };\n const status = collapsed ? 'collapsed' : 'expanded';\n const defaultTrigger = iconObj[status];\n const triggerDom = trigger !== null ? zeroWidthTrigger || ( /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-trigger`,\n onClick: toggle,\n style: {\n width: siderWidth\n }\n }, trigger || defaultTrigger)) : null;\n const divStyle = Object.assign(Object.assign({}, style), {\n flex: `0 0 ${siderWidth}`,\n maxWidth: siderWidth,\n minWidth: siderWidth,\n width: siderWidth\n });\n const siderCls = classNames(prefixCls, `${prefixCls}-${theme}`, {\n [`${prefixCls}-collapsed`]: !!collapsed,\n [`${prefixCls}-has-trigger`]: collapsible && trigger !== null && !zeroWidthTrigger,\n [`${prefixCls}-below`]: !!below,\n [`${prefixCls}-zero-width`]: parseFloat(siderWidth) === 0\n }, className);\n return /*#__PURE__*/React.createElement(\"aside\", Object.assign({\n className: siderCls\n }, divProps, {\n style: divStyle,\n ref: ref\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-children`\n }, children), collapsible || below && zeroWidthTrigger ? triggerDom : null);\n };\n const contextValue = React.useMemo(() => ({\n siderCollapsed: collapsed\n }), [collapsed]);\n return /*#__PURE__*/React.createElement(SiderContext.Provider, {\n value: contextValue\n }, renderSider());\n});\nif (process.env.NODE_ENV !== 'production') {\n Sider.displayName = 'Sider';\n}\nexport default Sider;","// This icon file is generated automatically.\nvar EllipsisOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\" } }] }, \"name\": \"ellipsis\", \"theme\": \"outlined\" };\nexport default EllipsisOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport EllipsisOutlinedSvg from \"@ant-design/icons-svg/es/asn/EllipsisOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar EllipsisOutlined = function EllipsisOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: EllipsisOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n EllipsisOutlined.displayName = 'EllipsisOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(EllipsisOutlined);","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport { Divider } from 'rc-menu';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nconst MenuDivider = props => {\n const {\n prefixCls: customizePrefixCls,\n className,\n dashed\n } = props,\n restProps = __rest(props, [\"prefixCls\", \"className\", \"dashed\"]);\n const {\n getPrefixCls\n } = React.useContext(ConfigContext);\n const prefixCls = getPrefixCls('menu', customizePrefixCls);\n const classString = classNames({\n [`${prefixCls}-item-divider-dashed`]: !!dashed\n }, className);\n return /*#__PURE__*/React.createElement(Divider, Object.assign({\n className: classString\n }, restProps));\n};\nexport default MenuDivider;","\"use client\";\n\nimport { createContext } from 'react';\nconst MenuContext = /*#__PURE__*/createContext({\n prefixCls: '',\n firstLevel: true,\n inlineCollapsed: false\n});\nexport default MenuContext;","\"use client\";\n\nimport classNames from 'classnames';\nimport { Item } from 'rc-menu';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { SiderContext } from '../layout/Sider';\nimport Tooltip from '../tooltip';\nimport { cloneElement, isValidElement } from '../_util/reactNode';\nimport MenuContext from './MenuContext';\nconst MenuItem = props => {\n var _a;\n const {\n className,\n children,\n icon,\n title,\n danger\n } = props;\n const {\n prefixCls,\n firstLevel,\n direction,\n disableMenuItemTitleTooltip,\n inlineCollapsed: isInlineCollapsed\n } = React.useContext(MenuContext);\n const renderItemChildren = inlineCollapsed => {\n const wrapNode = /*#__PURE__*/React.createElement(\"span\", {\n className: `${prefixCls}-title-content`\n }, children);\n // inline-collapsed.md demo 依赖 span 来隐藏文字,有 icon 属性,则内部包裹一个 span\n // ref: https://github.com/ant-design/ant-design/pull/23456\n if (!icon || isValidElement(children) && children.type === 'span') {\n if (children && inlineCollapsed && firstLevel && typeof children === 'string') {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-inline-collapsed-noicon`\n }, children.charAt(0));\n }\n }\n return wrapNode;\n };\n const {\n siderCollapsed\n } = React.useContext(SiderContext);\n let tooltipTitle = title;\n if (typeof title === 'undefined') {\n tooltipTitle = firstLevel ? children : '';\n } else if (title === false) {\n tooltipTitle = '';\n }\n const tooltipProps = {\n title: tooltipTitle\n };\n if (!siderCollapsed && !isInlineCollapsed) {\n tooltipProps.title = null;\n // Reset `open` to fix control mode tooltip display not correct\n // ref: https://github.com/ant-design/ant-design/issues/16742\n tooltipProps.open = false;\n }\n const childrenLength = toArray(children).length;\n let returnNode = /*#__PURE__*/React.createElement(Item, Object.assign({}, omit(props, ['title', 'icon', 'danger']), {\n className: classNames({\n [`${prefixCls}-item-danger`]: danger,\n [`${prefixCls}-item-only-child`]: (icon ? childrenLength + 1 : childrenLength) === 1\n }, className),\n title: typeof title === 'string' ? title : undefined\n }), cloneElement(icon, {\n className: classNames(isValidElement(icon) ? (_a = icon.props) === null || _a === void 0 ? void 0 : _a.className : '', `${prefixCls}-item-icon`)\n }), renderItemChildren(isInlineCollapsed));\n if (!disableMenuItemTitleTooltip) {\n returnNode = /*#__PURE__*/React.createElement(Tooltip, Object.assign({}, tooltipProps, {\n placement: direction === 'rtl' ? 'left' : 'right',\n overlayClassName: `${prefixCls}-inline-collapsed-tooltip`\n }), returnNode);\n }\n return returnNode;\n};\nexport default MenuItem;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { SubMenu as RcSubMenu, useFullPath } from 'rc-menu';\nimport omit from \"rc-util/es/omit\";\nimport { useZIndex } from '../_util/hooks/useZIndex';\nimport { cloneElement, isValidElement } from '../_util/reactNode';\nimport MenuContext from './MenuContext';\nconst SubMenu = props => {\n var _a;\n const {\n popupClassName,\n icon,\n title,\n theme: customTheme\n } = props;\n const context = React.useContext(MenuContext);\n const {\n prefixCls,\n inlineCollapsed,\n theme: contextTheme\n } = context;\n const parentPath = useFullPath();\n let titleNode;\n if (!icon) {\n titleNode = inlineCollapsed && !parentPath.length && title && typeof title === 'string' ? ( /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-inline-collapsed-noicon`\n }, title.charAt(0))) : ( /*#__PURE__*/React.createElement(\"span\", {\n className: `${prefixCls}-title-content`\n }, title));\n } else {\n // inline-collapsed.md demo 依赖 span 来隐藏文字,有 icon 属性,则内部包裹一个 span\n // ref: https://github.com/ant-design/ant-design/pull/23456\n const titleIsSpan = isValidElement(title) && title.type === 'span';\n titleNode = /*#__PURE__*/React.createElement(React.Fragment, null, cloneElement(icon, {\n className: classNames(isValidElement(icon) ? (_a = icon.props) === null || _a === void 0 ? void 0 : _a.className : '', `${prefixCls}-item-icon`)\n }), titleIsSpan ? title : /*#__PURE__*/React.createElement(\"span\", {\n className: `${prefixCls}-title-content`\n }, title));\n }\n const contextValue = React.useMemo(() => Object.assign(Object.assign({}, context), {\n firstLevel: false\n }), [context]);\n // ============================ zIndex ============================\n const [zIndex] = useZIndex('Menu');\n return /*#__PURE__*/React.createElement(MenuContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(RcSubMenu, Object.assign({}, omit(props, ['icon']), {\n title: titleNode,\n popupClassName: classNames(prefixCls, popupClassName, `${prefixCls}-${customTheme || contextTheme}`),\n popupStyle: {\n zIndex\n }\n })));\n};\nexport default SubMenu;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { ItemGroup } from 'rc-menu';\nimport * as React from 'react';\nimport MenuDivider from '../MenuDivider';\nimport MenuItem from '../MenuItem';\nimport SubMenu from '../SubMenu';\nfunction convertItemsToNodes(list) {\n return (list || []).map((opt, index) => {\n if (opt && typeof opt === 'object') {\n const _a = opt,\n {\n label,\n children,\n key,\n type\n } = _a,\n restProps = __rest(_a, [\"label\", \"children\", \"key\", \"type\"]);\n const mergedKey = key !== null && key !== void 0 ? key : `tmp-${index}`;\n // MenuItemGroup & SubMenuItem\n if (children || type === 'group') {\n if (type === 'group') {\n // Group\n return /*#__PURE__*/React.createElement(ItemGroup, Object.assign({\n key: mergedKey\n }, restProps, {\n title: label\n }), convertItemsToNodes(children));\n }\n // Sub Menu\n return /*#__PURE__*/React.createElement(SubMenu, Object.assign({\n key: mergedKey\n }, restProps, {\n title: label\n }), convertItemsToNodes(children));\n }\n // MenuItem & Divider\n if (type === 'divider') {\n return /*#__PURE__*/React.createElement(MenuDivider, Object.assign({\n key: mergedKey\n }, restProps));\n }\n return /*#__PURE__*/React.createElement(MenuItem, Object.assign({\n key: mergedKey\n }, restProps), label);\n }\n return null;\n }).filter(opt => opt);\n}\n// FIXME: Move logic here in v5\n/**\n * We simply convert `items` to ReactNode for reuse origin component logic. But we need move all the\n * logic from component into this hooks when in v5\n */\nexport default function useItems(items) {\n return React.useMemo(() => {\n if (!items) {\n return items;\n }\n return convertItemsToNodes(items);\n }, [items]);\n}","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { supportNodeRef, useComposeRef } from 'rc-util';\nimport { NoCompactStyle } from '../space/Compact';\nconst OverrideContext = /*#__PURE__*/React.createContext(null);\n/** @internal Only used for Dropdown component. Do not use this in your production. */\nexport const OverrideProvider = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n children\n } = props,\n restProps = __rest(props, [\"children\"]);\n const override = React.useContext(OverrideContext);\n const context = React.useMemo(() => Object.assign(Object.assign({}, override), restProps), [override, restProps.prefixCls,\n // restProps.expandIcon, Not mark as deps since this is a ReactNode\n restProps.mode, restProps.selectable, restProps.rootClassName\n // restProps.validator, Not mark as deps since this is a function\n ]);\n const canRef = supportNodeRef(children);\n const mergedRef = useComposeRef(ref, canRef ? children.ref : null);\n return /*#__PURE__*/React.createElement(OverrideContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(NoCompactStyle, null, canRef ? /*#__PURE__*/React.cloneElement(children, {\n ref: mergedRef\n }) : children));\n});\n/** @internal Only used for Dropdown component. Do not use this in your production. */\nexport default OverrideContext;","import { unit } from '@ant-design/cssinjs';\nconst getHorizontalStyle = token => {\n const {\n componentCls,\n motionDurationSlow,\n horizontalLineHeight,\n colorSplit,\n lineWidth,\n lineType,\n itemPaddingInline\n } = token;\n return {\n [`${componentCls}-horizontal`]: {\n lineHeight: horizontalLineHeight,\n border: 0,\n borderBottom: `${unit(lineWidth)} ${lineType} ${colorSplit}`,\n boxShadow: 'none',\n '&::after': {\n display: 'block',\n clear: 'both',\n height: 0,\n content: '\"\\\\20\"'\n },\n // ======================= Item =======================\n [`${componentCls}-item, ${componentCls}-submenu`]: {\n position: 'relative',\n display: 'inline-block',\n verticalAlign: 'bottom',\n paddingInline: itemPaddingInline\n },\n [`> ${componentCls}-item:hover,\n > ${componentCls}-item-active,\n > ${componentCls}-submenu ${componentCls}-submenu-title:hover`]: {\n backgroundColor: 'transparent'\n },\n [`${componentCls}-item, ${componentCls}-submenu-title`]: {\n transition: [`border-color ${motionDurationSlow}`, `background ${motionDurationSlow}`].join(',')\n },\n // ===================== Sub Menu =====================\n [`${componentCls}-submenu-arrow`]: {\n display: 'none'\n }\n }\n };\n};\nexport default getHorizontalStyle;","import { unit } from '@ant-design/cssinjs';\nconst getRTLStyle = _ref => {\n let {\n componentCls,\n menuArrowOffset,\n calc\n } = _ref;\n return {\n [`${componentCls}-rtl`]: {\n direction: 'rtl'\n },\n [`${componentCls}-submenu-rtl`]: {\n transformOrigin: '100% 0'\n },\n // Vertical Arrow\n [`${componentCls}-rtl${componentCls}-vertical,\n ${componentCls}-submenu-rtl ${componentCls}-vertical`]: {\n [`${componentCls}-submenu-arrow`]: {\n '&::before': {\n transform: `rotate(-45deg) translateY(${unit(calc(menuArrowOffset).mul(-1).equal())})`\n },\n '&::after': {\n transform: `rotate(45deg) translateY(${unit(menuArrowOffset)})`\n }\n }\n }\n };\n};\nexport default getRTLStyle;","import { unit } from '@ant-design/cssinjs';\nimport { genFocusOutline } from '../../style';\nconst accessibilityFocus = token => Object.assign({}, genFocusOutline(token));\nconst getThemeStyle = (token, themeSuffix) => {\n const {\n componentCls,\n itemColor,\n itemSelectedColor,\n groupTitleColor,\n itemBg,\n subMenuItemBg,\n itemSelectedBg,\n activeBarHeight,\n activeBarWidth,\n activeBarBorderWidth,\n motionDurationSlow,\n motionEaseInOut,\n motionEaseOut,\n itemPaddingInline,\n motionDurationMid,\n itemHoverColor,\n lineType,\n colorSplit,\n // Disabled\n itemDisabledColor,\n // Danger\n dangerItemColor,\n dangerItemHoverColor,\n dangerItemSelectedColor,\n dangerItemActiveBg,\n dangerItemSelectedBg,\n // Bg\n popupBg,\n itemHoverBg,\n itemActiveBg,\n menuSubMenuBg,\n // Horizontal\n horizontalItemSelectedColor,\n horizontalItemSelectedBg,\n horizontalItemBorderRadius,\n horizontalItemHoverBg\n } = token;\n return {\n [`${componentCls}-${themeSuffix}, ${componentCls}-${themeSuffix} > ${componentCls}`]: {\n color: itemColor,\n background: itemBg,\n [`&${componentCls}-root:focus-visible`]: Object.assign({}, accessibilityFocus(token)),\n // ======================== Item ========================\n [`${componentCls}-item-group-title`]: {\n color: groupTitleColor\n },\n [`${componentCls}-submenu-selected`]: {\n [`> ${componentCls}-submenu-title`]: {\n color: itemSelectedColor\n }\n },\n // Disabled\n [`${componentCls}-item-disabled, ${componentCls}-submenu-disabled`]: {\n color: `${itemDisabledColor} !important`\n },\n // Hover\n [`${componentCls}-item:not(${componentCls}-item-selected):not(${componentCls}-submenu-selected)`]: {\n [`&:hover, > ${componentCls}-submenu-title:hover`]: {\n color: itemHoverColor\n }\n },\n [`&:not(${componentCls}-horizontal)`]: {\n [`${componentCls}-item:not(${componentCls}-item-selected)`]: {\n '&:hover': {\n backgroundColor: itemHoverBg\n },\n '&:active': {\n backgroundColor: itemActiveBg\n }\n },\n [`${componentCls}-submenu-title`]: {\n '&:hover': {\n backgroundColor: itemHoverBg\n },\n '&:active': {\n backgroundColor: itemActiveBg\n }\n }\n },\n // Danger - only Item has\n [`${componentCls}-item-danger`]: {\n color: dangerItemColor,\n [`&${componentCls}-item:hover`]: {\n [`&:not(${componentCls}-item-selected):not(${componentCls}-submenu-selected)`]: {\n color: dangerItemHoverColor\n }\n },\n [`&${componentCls}-item:active`]: {\n background: dangerItemActiveBg\n }\n },\n [`${componentCls}-item a`]: {\n '&, &:hover': {\n color: 'inherit'\n }\n },\n [`${componentCls}-item-selected`]: {\n color: itemSelectedColor,\n // Danger\n [`&${componentCls}-item-danger`]: {\n color: dangerItemSelectedColor\n },\n [`a, a:hover`]: {\n color: 'inherit'\n }\n },\n [`& ${componentCls}-item-selected`]: {\n backgroundColor: itemSelectedBg,\n // Danger\n [`&${componentCls}-item-danger`]: {\n backgroundColor: dangerItemSelectedBg\n }\n },\n [`${componentCls}-item, ${componentCls}-submenu-title`]: {\n [`&:not(${componentCls}-item-disabled):focus-visible`]: Object.assign({}, accessibilityFocus(token))\n },\n [`&${componentCls}-submenu > ${componentCls}`]: {\n backgroundColor: menuSubMenuBg\n },\n // ===== 设置浮层的颜色 =======\n // !dark 模式会被popupBg 会被rest 为 darkPopupBg\n [`&${componentCls}-popup > ${componentCls}`]: {\n backgroundColor: popupBg\n },\n [`&${componentCls}-submenu-popup > ${componentCls}`]: {\n backgroundColor: popupBg\n },\n // ===== 设置浮层的颜色 end =======\n // ====================== Horizontal ======================\n [`&${componentCls}-horizontal`]: Object.assign(Object.assign({}, themeSuffix === 'dark' ? {\n borderBottom: 0\n } : {}), {\n [`> ${componentCls}-item, > ${componentCls}-submenu`]: {\n top: activeBarBorderWidth,\n marginTop: token.calc(activeBarBorderWidth).mul(-1).equal(),\n marginBottom: 0,\n borderRadius: horizontalItemBorderRadius,\n '&::after': {\n position: 'absolute',\n insetInline: itemPaddingInline,\n bottom: 0,\n borderBottom: `${unit(activeBarHeight)} solid transparent`,\n transition: `border-color ${motionDurationSlow} ${motionEaseInOut}`,\n content: '\"\"'\n },\n [`&:hover, &-active, &-open`]: {\n background: horizontalItemHoverBg,\n '&::after': {\n borderBottomWidth: activeBarHeight,\n borderBottomColor: horizontalItemSelectedColor\n }\n },\n [`&-selected`]: {\n color: horizontalItemSelectedColor,\n backgroundColor: horizontalItemSelectedBg,\n '&:hover': {\n backgroundColor: horizontalItemSelectedBg\n },\n '&::after': {\n borderBottomWidth: activeBarHeight,\n borderBottomColor: horizontalItemSelectedColor\n }\n }\n }\n }),\n // ================== Inline & Vertical ===================\n //\n [`&${componentCls}-root`]: {\n [`&${componentCls}-inline, &${componentCls}-vertical`]: {\n borderInlineEnd: `${unit(activeBarBorderWidth)} ${lineType} ${colorSplit}`\n }\n },\n // ======================== Inline ========================\n [`&${componentCls}-inline`]: {\n // Sub\n [`${componentCls}-sub${componentCls}-inline`]: {\n background: subMenuItemBg\n },\n [`${componentCls}-item`]: {\n position: 'relative',\n '&::after': {\n position: 'absolute',\n insetBlock: 0,\n insetInlineEnd: 0,\n borderInlineEnd: `${unit(activeBarWidth)} solid ${itemSelectedColor}`,\n transform: 'scaleY(0.0001)',\n opacity: 0,\n transition: [`transform ${motionDurationMid} ${motionEaseOut}`, `opacity ${motionDurationMid} ${motionEaseOut}`].join(','),\n content: '\"\"'\n },\n // Danger\n [`&${componentCls}-item-danger`]: {\n '&::after': {\n borderInlineEndColor: dangerItemSelectedColor\n }\n }\n },\n [`${componentCls}-selected, ${componentCls}-item-selected`]: {\n '&::after': {\n transform: 'scaleY(1)',\n opacity: 1,\n transition: [`transform ${motionDurationMid} ${motionEaseInOut}`, `opacity ${motionDurationMid} ${motionEaseInOut}`].join(',')\n }\n }\n }\n }\n };\n};\nexport default getThemeStyle;","import { unit } from '@ant-design/cssinjs';\nimport { textEllipsis } from '../../style';\nconst getVerticalInlineStyle = token => {\n const {\n componentCls,\n itemHeight,\n itemMarginInline,\n padding,\n menuArrowSize,\n marginXS,\n itemMarginBlock,\n itemWidth\n } = token;\n const paddingWithArrow = token.calc(menuArrowSize).add(padding).add(marginXS).equal();\n return {\n [`${componentCls}-item`]: {\n position: 'relative',\n overflow: 'hidden'\n },\n [`${componentCls}-item, ${componentCls}-submenu-title`]: {\n height: itemHeight,\n lineHeight: unit(itemHeight),\n paddingInline: padding,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n marginInline: itemMarginInline,\n marginBlock: itemMarginBlock,\n width: itemWidth\n },\n [`> ${componentCls}-item,\n > ${componentCls}-submenu > ${componentCls}-submenu-title`]: {\n height: itemHeight,\n lineHeight: unit(itemHeight)\n },\n [`${componentCls}-item-group-list ${componentCls}-submenu-title,\n ${componentCls}-submenu-title`]: {\n paddingInlineEnd: paddingWithArrow\n }\n };\n};\nconst getVerticalStyle = token => {\n const {\n componentCls,\n iconCls,\n itemHeight,\n colorTextLightSolid,\n dropdownWidth,\n controlHeightLG,\n motionDurationMid,\n motionEaseOut,\n paddingXL,\n itemMarginInline,\n fontSizeLG,\n motionDurationSlow,\n paddingXS,\n boxShadowSecondary,\n collapsedWidth,\n collapsedIconSize\n } = token;\n const inlineItemStyle = {\n height: itemHeight,\n lineHeight: unit(itemHeight),\n listStylePosition: 'inside',\n listStyleType: 'disc'\n };\n return [{\n [componentCls]: {\n [`&-inline, &-vertical`]: Object.assign({\n [`&${componentCls}-root`]: {\n boxShadow: 'none'\n }\n }, getVerticalInlineStyle(token))\n },\n [`${componentCls}-submenu-popup`]: {\n [`${componentCls}-vertical`]: Object.assign(Object.assign({}, getVerticalInlineStyle(token)), {\n boxShadow: boxShadowSecondary\n })\n }\n },\n // Vertical only\n {\n [`${componentCls}-submenu-popup ${componentCls}-vertical${componentCls}-sub`]: {\n minWidth: dropdownWidth,\n maxHeight: `calc(100vh - ${unit(token.calc(controlHeightLG).mul(2.5).equal())})`,\n padding: '0',\n overflow: 'hidden',\n borderInlineEnd: 0,\n // https://github.com/ant-design/ant-design/issues/22244\n // https://github.com/ant-design/ant-design/issues/26812\n \"&:not([class*='-active'])\": {\n overflowX: 'hidden',\n overflowY: 'auto'\n }\n }\n },\n // Inline Only\n {\n [`${componentCls}-inline`]: {\n width: '100%',\n // Motion enhance for first level\n [`&${componentCls}-root`]: {\n [`${componentCls}-item, ${componentCls}-submenu-title`]: {\n display: 'flex',\n alignItems: 'center',\n transition: [`border-color ${motionDurationSlow}`, `background ${motionDurationSlow}`, `padding ${motionDurationMid} ${motionEaseOut}`].join(','),\n [`> ${componentCls}-title-content`]: {\n flex: 'auto',\n minWidth: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n '> *': {\n flex: 'none'\n }\n }\n },\n // >>>>> Sub\n [`${componentCls}-sub${componentCls}-inline`]: {\n padding: 0,\n border: 0,\n borderRadius: 0,\n boxShadow: 'none',\n [`& > ${componentCls}-submenu > ${componentCls}-submenu-title`]: inlineItemStyle,\n [`& ${componentCls}-item-group-title`]: {\n paddingInlineStart: paddingXL\n }\n },\n // >>>>> Item\n [`${componentCls}-item`]: inlineItemStyle\n }\n },\n // Inline Collapse Only\n {\n [`${componentCls}-inline-collapsed`]: {\n width: collapsedWidth,\n [`&${componentCls}-root`]: {\n [`${componentCls}-item, ${componentCls}-submenu ${componentCls}-submenu-title`]: {\n [`> ${componentCls}-inline-collapsed-noicon`]: {\n fontSize: fontSizeLG,\n textAlign: 'center'\n }\n }\n },\n [`> ${componentCls}-item,\n > ${componentCls}-item-group > ${componentCls}-item-group-list > ${componentCls}-item,\n > ${componentCls}-item-group > ${componentCls}-item-group-list > ${componentCls}-submenu > ${componentCls}-submenu-title,\n > ${componentCls}-submenu > ${componentCls}-submenu-title`]: {\n insetInlineStart: 0,\n paddingInline: `calc(50% - ${unit(token.calc(fontSizeLG).div(2).equal())} - ${unit(itemMarginInline)})`,\n textOverflow: 'clip',\n [`\n ${componentCls}-submenu-arrow,\n ${componentCls}-submenu-expand-icon\n `]: {\n opacity: 0\n },\n [`${componentCls}-item-icon, ${iconCls}`]: {\n margin: 0,\n fontSize: collapsedIconSize,\n lineHeight: unit(itemHeight),\n '+ span': {\n display: 'inline-block',\n opacity: 0\n }\n }\n },\n [`${componentCls}-item-icon, ${iconCls}`]: {\n display: 'inline-block'\n },\n '&-tooltip': {\n pointerEvents: 'none',\n [`${componentCls}-item-icon, ${iconCls}`]: {\n display: 'none'\n },\n 'a, a:hover': {\n color: colorTextLightSolid\n }\n },\n [`${componentCls}-item-group-title`]: Object.assign(Object.assign({}, textEllipsis), {\n paddingInline: paddingXS\n })\n }\n }];\n};\nexport default getVerticalStyle;","import { unit } from '@ant-design/cssinjs';\nimport { TinyColor } from '@ctrl/tinycolor';\nimport { clearFix, resetComponent, resetIcon } from '../../style';\nimport { genCollapseMotion, initSlideMotion, initZoomMotion } from '../../style/motion';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nimport getHorizontalStyle from './horizontal';\nimport getRTLStyle from './rtl';\nimport getThemeStyle from './theme';\nimport getVerticalStyle from './vertical';\nconst genMenuItemStyle = token => {\n const {\n componentCls,\n motionDurationSlow,\n motionDurationMid,\n motionEaseInOut,\n motionEaseOut,\n iconCls,\n iconSize,\n iconMarginInlineEnd\n } = token;\n return {\n // >>>>> Item\n [`${componentCls}-item, ${componentCls}-submenu-title`]: {\n position: 'relative',\n display: 'block',\n margin: 0,\n whiteSpace: 'nowrap',\n cursor: 'pointer',\n transition: [`border-color ${motionDurationSlow}`, `background ${motionDurationSlow}`, `padding ${motionDurationSlow} ${motionEaseInOut}`].join(','),\n [`${componentCls}-item-icon, ${iconCls}`]: {\n minWidth: iconSize,\n fontSize: iconSize,\n transition: [`font-size ${motionDurationMid} ${motionEaseOut}`, `margin ${motionDurationSlow} ${motionEaseInOut}`, `color ${motionDurationSlow}`].join(','),\n '+ span': {\n marginInlineStart: iconMarginInlineEnd,\n opacity: 1,\n transition: [`opacity ${motionDurationSlow} ${motionEaseInOut}`, `margin ${motionDurationSlow}`, `color ${motionDurationSlow}`].join(',')\n }\n },\n [`${componentCls}-item-icon`]: Object.assign({}, resetIcon()),\n [`&${componentCls}-item-only-child`]: {\n [`> ${iconCls}, > ${componentCls}-item-icon`]: {\n marginInlineEnd: 0\n }\n }\n },\n // Disabled state sets text to gray and nukes hover/tab effects\n [`${componentCls}-item-disabled, ${componentCls}-submenu-disabled`]: {\n background: 'none !important',\n cursor: 'not-allowed',\n '&::after': {\n borderColor: 'transparent !important'\n },\n a: {\n color: 'inherit !important'\n },\n [`> ${componentCls}-submenu-title`]: {\n color: 'inherit !important',\n cursor: 'not-allowed'\n }\n }\n };\n};\nconst genSubMenuArrowStyle = token => {\n const {\n componentCls,\n motionDurationSlow,\n motionEaseInOut,\n borderRadius,\n menuArrowSize,\n menuArrowOffset\n } = token;\n return {\n [`${componentCls}-submenu`]: {\n [`&-expand-icon, &-arrow`]: {\n position: 'absolute',\n top: '50%',\n insetInlineEnd: token.margin,\n width: menuArrowSize,\n color: 'currentcolor',\n transform: 'translateY(-50%)',\n transition: `transform ${motionDurationSlow} ${motionEaseInOut}, opacity ${motionDurationSlow}`\n },\n '&-arrow': {\n // →\n '&::before, &::after': {\n position: 'absolute',\n width: token.calc(menuArrowSize).mul(0.6).equal(),\n height: token.calc(menuArrowSize).mul(0.15).equal(),\n backgroundColor: 'currentcolor',\n borderRadius,\n transition: [`background ${motionDurationSlow} ${motionEaseInOut}`, `transform ${motionDurationSlow} ${motionEaseInOut}`, `top ${motionDurationSlow} ${motionEaseInOut}`, `color ${motionDurationSlow} ${motionEaseInOut}`].join(','),\n content: '\"\"'\n },\n '&::before': {\n transform: `rotate(45deg) translateY(${unit(token.calc(menuArrowOffset).mul(-1).equal())})`\n },\n '&::after': {\n transform: `rotate(-45deg) translateY(${unit(menuArrowOffset)})`\n }\n }\n }\n };\n};\n// =============================== Base ===============================\nconst getBaseStyle = token => {\n const {\n antCls,\n componentCls,\n fontSize,\n motionDurationSlow,\n motionDurationMid,\n motionEaseInOut,\n paddingXS,\n padding,\n colorSplit,\n lineWidth,\n zIndexPopup,\n borderRadiusLG,\n subMenuItemBorderRadius,\n menuArrowSize,\n menuArrowOffset,\n lineType,\n menuPanelMaskInset,\n groupTitleLineHeight,\n groupTitleFontSize\n } = token;\n return [\n // Misc\n {\n '': {\n [`${componentCls}`]: Object.assign(Object.assign({}, clearFix()), {\n // Hidden\n [`&-hidden`]: {\n display: 'none'\n }\n })\n },\n [`${componentCls}-submenu-hidden`]: {\n display: 'none'\n }\n }, {\n [componentCls]: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token)), clearFix()), {\n marginBottom: 0,\n paddingInlineStart: 0,\n // Override default ul/ol\n fontSize,\n lineHeight: 0,\n listStyle: 'none',\n outline: 'none',\n // Magic cubic here but smooth transition\n transition: `width ${motionDurationSlow} cubic-bezier(0.2, 0, 0, 1) 0s`,\n [`ul, ol`]: {\n margin: 0,\n padding: 0,\n listStyle: 'none'\n },\n // Overflow ellipsis\n [`&-overflow`]: {\n display: 'flex',\n [`${componentCls}-item`]: {\n flex: 'none'\n }\n },\n [`${componentCls}-item, ${componentCls}-submenu, ${componentCls}-submenu-title`]: {\n borderRadius: token.itemBorderRadius\n },\n [`${componentCls}-item-group-title`]: {\n padding: `${unit(paddingXS)} ${unit(padding)}`,\n fontSize: groupTitleFontSize,\n lineHeight: groupTitleLineHeight,\n transition: `all ${motionDurationSlow}`\n },\n [`&-horizontal ${componentCls}-submenu`]: {\n transition: [`border-color ${motionDurationSlow} ${motionEaseInOut}`, `background ${motionDurationSlow} ${motionEaseInOut}`].join(',')\n },\n [`${componentCls}-submenu, ${componentCls}-submenu-inline`]: {\n transition: [`border-color ${motionDurationSlow} ${motionEaseInOut}`, `background ${motionDurationSlow} ${motionEaseInOut}`, `padding ${motionDurationMid} ${motionEaseInOut}`].join(',')\n },\n [`${componentCls}-submenu ${componentCls}-sub`]: {\n cursor: 'initial',\n transition: [`background ${motionDurationSlow} ${motionEaseInOut}`, `padding ${motionDurationSlow} ${motionEaseInOut}`].join(',')\n },\n [`${componentCls}-title-content`]: {\n transition: `color ${motionDurationSlow}`,\n // https://github.com/ant-design/ant-design/issues/41143\n [`> ${antCls}-typography-ellipsis-single-line`]: {\n display: 'inline',\n verticalAlign: 'unset'\n }\n },\n [`${componentCls}-item a`]: {\n '&::before': {\n position: 'absolute',\n inset: 0,\n backgroundColor: 'transparent',\n content: '\"\"'\n }\n },\n // Removed a Badge related style seems it's safe\n // https://github.com/ant-design/ant-design/issues/19809\n // >>>>> Divider\n [`${componentCls}-item-divider`]: {\n overflow: 'hidden',\n lineHeight: 0,\n borderColor: colorSplit,\n borderStyle: lineType,\n borderWidth: 0,\n borderTopWidth: lineWidth,\n marginBlock: lineWidth,\n padding: 0,\n '&-dashed': {\n borderStyle: 'dashed'\n }\n }\n }), genMenuItemStyle(token)), {\n [`${componentCls}-item-group`]: {\n [`${componentCls}-item-group-list`]: {\n margin: 0,\n padding: 0,\n [`${componentCls}-item, ${componentCls}-submenu-title`]: {\n paddingInline: `${unit(token.calc(fontSize).mul(2).equal())} ${unit(padding)}`\n }\n }\n },\n // ======================= Sub Menu =======================\n '&-submenu': {\n '&-popup': {\n position: 'absolute',\n zIndex: zIndexPopup,\n borderRadius: borderRadiusLG,\n boxShadow: 'none',\n transformOrigin: '0 0',\n [`&${componentCls}-submenu`]: {\n background: 'transparent'\n },\n // https://github.com/ant-design/ant-design/issues/13955\n '&::before': {\n position: 'absolute',\n inset: `${unit(menuPanelMaskInset)} 0 0`,\n zIndex: -1,\n width: '100%',\n height: '100%',\n opacity: 0,\n content: '\"\"'\n }\n },\n // https://github.com/ant-design/ant-design/issues/13955\n '&-placement-rightTop::before': {\n top: 0,\n insetInlineStart: menuPanelMaskInset\n },\n [`\n &-placement-leftTop,\n &-placement-bottomRight,\n `]: {\n transformOrigin: '100% 0'\n },\n [`\n &-placement-leftBottom,\n &-placement-topRight,\n `]: {\n transformOrigin: '100% 100%'\n },\n [`\n &-placement-rightBottom,\n &-placement-topLeft,\n `]: {\n transformOrigin: '0 100%'\n },\n [`\n &-placement-bottomLeft,\n &-placement-rightTop,\n `]: {\n transformOrigin: '0 0'\n },\n [`\n &-placement-leftTop,\n &-placement-leftBottom\n `]: {\n paddingInlineEnd: token.paddingXS\n },\n [`\n &-placement-rightTop,\n &-placement-rightBottom\n `]: {\n paddingInlineStart: token.paddingXS\n },\n [`\n &-placement-topRight,\n &-placement-topLeft\n `]: {\n paddingBottom: token.paddingXS\n },\n [`\n &-placement-bottomRight,\n &-placement-bottomLeft\n `]: {\n paddingTop: token.paddingXS\n },\n [`> ${componentCls}`]: Object.assign(Object.assign(Object.assign({\n borderRadius: borderRadiusLG\n }, genMenuItemStyle(token)), genSubMenuArrowStyle(token)), {\n [`${componentCls}-item, ${componentCls}-submenu > ${componentCls}-submenu-title`]: {\n borderRadius: subMenuItemBorderRadius\n },\n [`${componentCls}-submenu-title::after`]: {\n transition: `transform ${motionDurationSlow} ${motionEaseInOut}`\n }\n })\n }\n }), genSubMenuArrowStyle(token)), {\n [`&-inline-collapsed ${componentCls}-submenu-arrow,\n &-inline ${componentCls}-submenu-arrow`]: {\n // ↓\n '&::before': {\n transform: `rotate(-45deg) translateX(${unit(menuArrowOffset)})`\n },\n '&::after': {\n transform: `rotate(45deg) translateX(${unit(token.calc(menuArrowOffset).mul(-1).equal())})`\n }\n },\n [`${componentCls}-submenu-open${componentCls}-submenu-inline > ${componentCls}-submenu-title > ${componentCls}-submenu-arrow`]: {\n // ↑\n transform: `translateY(${unit(token.calc(menuArrowSize).mul(0.2).mul(-1).equal())})`,\n '&::after': {\n transform: `rotate(-45deg) translateX(${unit(token.calc(menuArrowOffset).mul(-1).equal())})`\n },\n '&::before': {\n transform: `rotate(45deg) translateX(${unit(menuArrowOffset)})`\n }\n }\n })\n },\n // Integration with header element so menu items have the same height\n {\n [`${antCls}-layout-header`]: {\n [componentCls]: {\n lineHeight: 'inherit'\n }\n }\n }];\n};\nexport const prepareComponentToken = token => {\n var _a, _b, _c;\n const {\n colorPrimary,\n colorError,\n colorTextDisabled,\n colorErrorBg,\n colorText,\n colorTextDescription,\n colorBgContainer,\n colorFillAlter,\n colorFillContent,\n lineWidth,\n lineWidthBold,\n controlItemBgActive,\n colorBgTextHover,\n controlHeightLG,\n lineHeight,\n colorBgElevated,\n marginXXS,\n padding,\n fontSize,\n controlHeightSM,\n fontSizeLG,\n colorTextLightSolid,\n colorErrorHover\n } = token;\n const activeBarWidth = (_a = token.activeBarWidth) !== null && _a !== void 0 ? _a : 0;\n const activeBarBorderWidth = (_b = token.activeBarBorderWidth) !== null && _b !== void 0 ? _b : lineWidth;\n const itemMarginInline = (_c = token.itemMarginInline) !== null && _c !== void 0 ? _c : token.marginXXS;\n const colorTextDark = new TinyColor(colorTextLightSolid).setAlpha(0.65).toRgbString();\n return {\n dropdownWidth: 160,\n zIndexPopup: token.zIndexPopupBase + 50,\n radiusItem: token.borderRadiusLG,\n itemBorderRadius: token.borderRadiusLG,\n radiusSubMenuItem: token.borderRadiusSM,\n subMenuItemBorderRadius: token.borderRadiusSM,\n colorItemText: colorText,\n itemColor: colorText,\n colorItemTextHover: colorText,\n itemHoverColor: colorText,\n colorItemTextHoverHorizontal: colorPrimary,\n horizontalItemHoverColor: colorPrimary,\n colorGroupTitle: colorTextDescription,\n groupTitleColor: colorTextDescription,\n colorItemTextSelected: colorPrimary,\n itemSelectedColor: colorPrimary,\n colorItemTextSelectedHorizontal: colorPrimary,\n horizontalItemSelectedColor: colorPrimary,\n colorItemBg: colorBgContainer,\n itemBg: colorBgContainer,\n colorItemBgHover: colorBgTextHover,\n itemHoverBg: colorBgTextHover,\n colorItemBgActive: colorFillContent,\n itemActiveBg: controlItemBgActive,\n colorSubItemBg: colorFillAlter,\n subMenuItemBg: colorFillAlter,\n colorItemBgSelected: controlItemBgActive,\n itemSelectedBg: controlItemBgActive,\n colorItemBgSelectedHorizontal: 'transparent',\n horizontalItemSelectedBg: 'transparent',\n colorActiveBarWidth: 0,\n activeBarWidth,\n colorActiveBarHeight: lineWidthBold,\n activeBarHeight: lineWidthBold,\n colorActiveBarBorderSize: lineWidth,\n activeBarBorderWidth,\n // Disabled\n colorItemTextDisabled: colorTextDisabled,\n itemDisabledColor: colorTextDisabled,\n // Danger\n colorDangerItemText: colorError,\n dangerItemColor: colorError,\n colorDangerItemTextHover: colorError,\n dangerItemHoverColor: colorError,\n colorDangerItemTextSelected: colorError,\n dangerItemSelectedColor: colorError,\n colorDangerItemBgActive: colorErrorBg,\n dangerItemActiveBg: colorErrorBg,\n colorDangerItemBgSelected: colorErrorBg,\n dangerItemSelectedBg: colorErrorBg,\n itemMarginInline,\n horizontalItemBorderRadius: 0,\n horizontalItemHoverBg: 'transparent',\n itemHeight: controlHeightLG,\n groupTitleLineHeight: lineHeight,\n collapsedWidth: controlHeightLG * 2,\n popupBg: colorBgElevated,\n itemMarginBlock: marginXXS,\n itemPaddingInline: padding,\n horizontalLineHeight: `${controlHeightLG * 1.15}px`,\n iconSize: fontSize,\n iconMarginInlineEnd: controlHeightSM - fontSize,\n collapsedIconSize: fontSizeLG,\n groupTitleFontSize: fontSize,\n // Disabled\n darkItemDisabledColor: new TinyColor(colorTextLightSolid).setAlpha(0.25).toRgbString(),\n // Dark\n darkItemColor: colorTextDark,\n darkDangerItemColor: colorError,\n darkItemBg: '#001529',\n darkPopupBg: '#001529',\n darkSubMenuItemBg: '#000c17',\n darkItemSelectedColor: colorTextLightSolid,\n darkItemSelectedBg: colorPrimary,\n darkDangerItemSelectedBg: colorError,\n darkItemHoverBg: 'transparent',\n darkGroupTitleColor: colorTextDark,\n darkItemHoverColor: colorTextLightSolid,\n darkDangerItemHoverColor: colorErrorHover,\n darkDangerItemSelectedColor: colorTextLightSolid,\n darkDangerItemActiveBg: colorError,\n // internal\n itemWidth: activeBarWidth ? `calc(100% + ${activeBarBorderWidth}px)` : `calc(100% - ${itemMarginInline * 2}px)`\n };\n};\n// ============================== Export ==============================\nexport default (function (prefixCls) {\n let rootCls = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : prefixCls;\n let injectStyle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n const useStyle = genStyleHooks('Menu', token => {\n const {\n colorBgElevated,\n colorPrimary,\n colorTextLightSolid,\n controlHeightLG,\n fontSize,\n darkItemColor,\n darkDangerItemColor,\n darkItemBg,\n darkSubMenuItemBg,\n darkItemSelectedColor,\n darkItemSelectedBg,\n darkDangerItemSelectedBg,\n darkItemHoverBg,\n darkGroupTitleColor,\n darkItemHoverColor,\n darkItemDisabledColor,\n darkDangerItemHoverColor,\n darkDangerItemSelectedColor,\n darkDangerItemActiveBg,\n popupBg,\n darkPopupBg\n } = token;\n const menuArrowSize = token.calc(fontSize).div(7).mul(5).equal();\n // Menu Token\n const menuToken = mergeToken(token, {\n menuArrowSize,\n menuHorizontalHeight: token.calc(controlHeightLG).mul(1.15).equal(),\n menuArrowOffset: token.calc(menuArrowSize).mul(0.25).equal(),\n menuPanelMaskInset: -7,\n // Still a hardcode here since it's offset by rc-align\n menuSubMenuBg: colorBgElevated,\n calc: token.calc,\n popupBg\n });\n const menuDarkToken = mergeToken(menuToken, {\n itemColor: darkItemColor,\n itemHoverColor: darkItemHoverColor,\n groupTitleColor: darkGroupTitleColor,\n itemSelectedColor: darkItemSelectedColor,\n itemBg: darkItemBg,\n popupBg: darkPopupBg,\n subMenuItemBg: darkSubMenuItemBg,\n itemActiveBg: 'transparent',\n itemSelectedBg: darkItemSelectedBg,\n activeBarHeight: 0,\n activeBarBorderWidth: 0,\n itemHoverBg: darkItemHoverBg,\n // Disabled\n itemDisabledColor: darkItemDisabledColor,\n // Danger\n dangerItemColor: darkDangerItemColor,\n dangerItemHoverColor: darkDangerItemHoverColor,\n dangerItemSelectedColor: darkDangerItemSelectedColor,\n dangerItemActiveBg: darkDangerItemActiveBg,\n dangerItemSelectedBg: darkDangerItemSelectedBg,\n menuSubMenuBg: darkSubMenuItemBg,\n // Horizontal\n horizontalItemSelectedColor: colorTextLightSolid,\n horizontalItemSelectedBg: colorPrimary\n });\n return [\n // Basic\n getBaseStyle(menuToken),\n // Horizontal\n getHorizontalStyle(menuToken),\n // Hard code for some light style\n // Vertical\n getVerticalStyle(menuToken),\n // Hard code for some light style\n // Theme\n getThemeStyle(menuToken, 'light'), getThemeStyle(menuDarkToken, 'dark'),\n // RTL\n getRTLStyle(menuToken),\n // Motion\n genCollapseMotion(menuToken), initSlideMotion(menuToken, 'slide-up'), initSlideMotion(menuToken, 'slide-down'), initZoomMotion(menuToken, 'zoom-big')];\n }, prepareComponentToken, {\n deprecatedTokens: [['colorGroupTitle', 'groupTitleColor'], ['radiusItem', 'itemBorderRadius'], ['radiusSubMenuItem', 'subMenuItemBorderRadius'], ['colorItemText', 'itemColor'], ['colorItemTextHover', 'itemHoverColor'], ['colorItemTextHoverHorizontal', 'horizontalItemHoverColor'], ['colorItemTextSelected', 'itemSelectedColor'], ['colorItemTextSelectedHorizontal', 'horizontalItemSelectedColor'], ['colorItemTextDisabled', 'itemDisabledColor'], ['colorDangerItemText', 'dangerItemColor'], ['colorDangerItemTextHover', 'dangerItemHoverColor'], ['colorDangerItemTextSelected', 'dangerItemSelectedColor'], ['colorDangerItemBgActive', 'dangerItemActiveBg'], ['colorDangerItemBgSelected', 'dangerItemSelectedBg'], ['colorItemBg', 'itemBg'], ['colorItemBgHover', 'itemHoverBg'], ['colorSubItemBg', 'subMenuItemBg'], ['colorItemBgActive', 'itemActiveBg'], ['colorItemBgSelectedHorizontal', 'horizontalItemSelectedBg'], ['colorActiveBarWidth', 'activeBarWidth'], ['colorActiveBarHeight', 'activeBarHeight'], ['colorActiveBarBorderSize', 'activeBarBorderWidth'], ['colorItemBgSelected', 'itemSelectedBg']],\n // Dropdown will handle menu style self. We do not need to handle this.\n injectStyle,\n unitless: {\n groupTitleLineHeight: true\n }\n });\n return useStyle(prefixCls, rootCls);\n});","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { forwardRef } from 'react';\nimport EllipsisOutlined from \"@ant-design/icons/es/icons/EllipsisOutlined\";\nimport classNames from 'classnames';\nimport RcMenu from 'rc-menu';\nimport { useEvent } from 'rc-util';\nimport omit from \"rc-util/es/omit\";\nimport initCollapseMotion from '../_util/motion';\nimport { cloneElement, isValidElement } from '../_util/reactNode';\nimport { devUseWarning } from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport useItems from './hooks/useItems';\nimport MenuContext from './MenuContext';\nimport OverrideContext from './OverrideContext';\nimport useStyle from './style';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nconst InternalMenu = /*#__PURE__*/forwardRef((props, ref) => {\n var _a, _b;\n const override = React.useContext(OverrideContext);\n const overrideObj = override || {};\n const {\n getPrefixCls,\n getPopupContainer,\n direction,\n menu\n } = React.useContext(ConfigContext);\n const rootPrefixCls = getPrefixCls();\n const {\n prefixCls: customizePrefixCls,\n className,\n style,\n theme = 'light',\n expandIcon,\n _internalDisableMenuItemTitleTooltip,\n inlineCollapsed,\n siderCollapsed,\n items,\n children,\n rootClassName,\n mode,\n selectable,\n onClick,\n overflowedIndicatorPopupClassName\n } = props,\n restProps = __rest(props, [\"prefixCls\", \"className\", \"style\", \"theme\", \"expandIcon\", \"_internalDisableMenuItemTitleTooltip\", \"inlineCollapsed\", \"siderCollapsed\", \"items\", \"children\", \"rootClassName\", \"mode\", \"selectable\", \"onClick\", \"overflowedIndicatorPopupClassName\"]);\n const passedProps = omit(restProps, ['collapsedWidth']);\n // ========================= Items ===========================\n const mergedChildren = useItems(items) || children;\n // ======================== Warning ==========================\n if (process.env.NODE_ENV !== 'production') {\n const warning = devUseWarning('Menu');\n process.env.NODE_ENV !== \"production\" ? warning(!('inlineCollapsed' in props && mode !== 'inline'), 'usage', '`inlineCollapsed` should only be used when `mode` is inline.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(props.siderCollapsed !== undefined && 'inlineCollapsed' in props), 'usage', '`inlineCollapsed` not control Menu under Sider. Should set `collapsed` on Sider instead.') : void 0;\n warning.deprecated('items' in props && !children, 'children', 'items');\n }\n (_a = overrideObj.validator) === null || _a === void 0 ? void 0 : _a.call(overrideObj, {\n mode\n });\n // ========================== Click ==========================\n // Tell dropdown that item clicked\n const onItemClick = useEvent(function () {\n var _a;\n onClick === null || onClick === void 0 ? void 0 : onClick.apply(void 0, arguments);\n (_a = overrideObj.onClick) === null || _a === void 0 ? void 0 : _a.call(overrideObj);\n });\n // ========================== Mode ===========================\n const mergedMode = overrideObj.mode || mode;\n // ======================= Selectable ========================\n const mergedSelectable = selectable !== null && selectable !== void 0 ? selectable : overrideObj.selectable;\n // ======================== Collapsed ========================\n // Inline Collapsed\n const mergedInlineCollapsed = React.useMemo(() => {\n if (siderCollapsed !== undefined) {\n return siderCollapsed;\n }\n return inlineCollapsed;\n }, [inlineCollapsed, siderCollapsed]);\n const defaultMotions = {\n horizontal: {\n motionName: `${rootPrefixCls}-slide-up`\n },\n inline: initCollapseMotion(rootPrefixCls),\n other: {\n motionName: `${rootPrefixCls}-zoom-big`\n }\n };\n const prefixCls = getPrefixCls('menu', customizePrefixCls || overrideObj.prefixCls);\n const rootCls = useCSSVarCls(prefixCls);\n const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls, !override);\n const menuClassName = classNames(`${prefixCls}-${theme}`, menu === null || menu === void 0 ? void 0 : menu.className, className);\n // ====================== Expand Icon ========================\n let mergedExpandIcon;\n if (typeof expandIcon === 'function') {\n mergedExpandIcon = expandIcon;\n } else if (expandIcon === null || expandIcon === false) {\n mergedExpandIcon = null;\n } else if (overrideObj.expandIcon === null || overrideObj.expandIcon === false) {\n mergedExpandIcon = null;\n } else {\n const beClone = expandIcon !== null && expandIcon !== void 0 ? expandIcon : overrideObj.expandIcon;\n mergedExpandIcon = cloneElement(beClone, {\n className: classNames(`${prefixCls}-submenu-expand-icon`, isValidElement(beClone) ? (_b = beClone.props) === null || _b === void 0 ? void 0 : _b.className : '')\n });\n }\n // ======================== Context ==========================\n const contextValue = React.useMemo(() => ({\n prefixCls,\n inlineCollapsed: mergedInlineCollapsed || false,\n direction,\n firstLevel: true,\n theme,\n mode: mergedMode,\n disableMenuItemTitleTooltip: _internalDisableMenuItemTitleTooltip\n }), [prefixCls, mergedInlineCollapsed, direction, _internalDisableMenuItemTitleTooltip, theme]);\n // ========================= Render ==========================\n return wrapCSSVar( /*#__PURE__*/React.createElement(OverrideContext.Provider, {\n value: null\n }, /*#__PURE__*/React.createElement(MenuContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(RcMenu, Object.assign({\n getPopupContainer: getPopupContainer,\n overflowedIndicator: /*#__PURE__*/React.createElement(EllipsisOutlined, null),\n overflowedIndicatorPopupClassName: classNames(prefixCls, `${prefixCls}-${theme}`, overflowedIndicatorPopupClassName),\n mode: mergedMode,\n selectable: mergedSelectable,\n onClick: onItemClick\n }, passedProps, {\n inlineCollapsed: mergedInlineCollapsed,\n style: Object.assign(Object.assign({}, menu === null || menu === void 0 ? void 0 : menu.style), style),\n className: menuClassName,\n prefixCls: prefixCls,\n direction: direction,\n defaultMotions: defaultMotions,\n expandIcon: mergedExpandIcon,\n ref: ref,\n rootClassName: classNames(rootClassName, hashId, overrideObj.rootClassName, cssVarCls, rootCls)\n }), mergedChildren))));\n});\nexport default InternalMenu;","\"use client\";\n\nimport * as React from 'react';\nimport { forwardRef, useImperativeHandle, useRef } from 'react';\nimport { ItemGroup } from 'rc-menu';\nimport { SiderContext } from '../layout/Sider';\nimport InternalMenu from './menu';\nimport MenuDivider from './MenuDivider';\nimport Item from './MenuItem';\nimport SubMenu from './SubMenu';\nconst Menu = /*#__PURE__*/forwardRef((props, ref) => {\n const menuRef = useRef(null);\n const context = React.useContext(SiderContext);\n useImperativeHandle(ref, () => ({\n menu: menuRef.current,\n focus: options => {\n var _a;\n (_a = menuRef.current) === null || _a === void 0 ? void 0 : _a.focus(options);\n }\n }));\n return /*#__PURE__*/React.createElement(InternalMenu, Object.assign({\n ref: menuRef\n }, props, context));\n});\nMenu.Item = Item;\nMenu.SubMenu = SubMenu;\nMenu.Divider = MenuDivider;\nMenu.ItemGroup = ItemGroup;\nif (process.env.NODE_ENV !== 'production') {\n Menu.displayName = 'Menu';\n}\nexport default Menu;","const genStatusStyle = token => {\n const {\n componentCls,\n menuCls,\n colorError,\n colorTextLightSolid\n } = token;\n const itemCls = `${menuCls}-item`;\n return {\n [`${componentCls}, ${componentCls}-menu-submenu`]: {\n [`${menuCls} ${itemCls}`]: {\n [`&${itemCls}-danger:not(${itemCls}-disabled)`]: {\n color: colorError,\n '&:hover': {\n color: colorTextLightSolid,\n backgroundColor: colorError\n }\n }\n }\n }\n };\n};\nexport default genStatusStyle;","import { genFocusStyle, resetComponent } from '../../style';\nimport { initMoveMotion, initSlideMotion, initZoomMotion, slideDownIn, slideDownOut, slideUpIn, slideUpOut } from '../../style/motion';\nimport getArrowStyle, { getArrowOffsetToken } from '../../style/placementArrow';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nimport genStatusStyle from './status';\nimport { getArrowToken } from '../../style/roundedArrow';\nimport { unit } from '@ant-design/cssinjs';\n// =============================== Base ===============================\nconst genBaseStyle = token => {\n const {\n componentCls,\n menuCls,\n zIndexPopup,\n dropdownArrowDistance,\n sizePopupArrow,\n antCls,\n iconCls,\n motionDurationMid,\n paddingBlock,\n fontSize,\n dropdownEdgeChildPadding,\n colorTextDisabled,\n fontSizeIcon,\n controlPaddingHorizontal,\n colorBgElevated\n } = token;\n return [{\n [componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n position: 'absolute',\n top: -9999,\n left: {\n _skip_check_: true,\n value: -9999\n },\n zIndex: zIndexPopup,\n display: 'block',\n // A placeholder out of dropdown visible range to avoid close when user moving\n '&::before': {\n position: 'absolute',\n insetBlock: token.calc(sizePopupArrow).div(2).sub(dropdownArrowDistance).equal(),\n // insetInlineStart: -7, // FIXME: Seems not work for hidden element\n zIndex: -9999,\n opacity: 0.0001,\n content: '\"\"'\n },\n [`&-trigger${antCls}-btn`]: {\n [`& > ${iconCls}-down, & > ${antCls}-btn-icon > ${iconCls}-down`]: {\n fontSize: fontSizeIcon\n }\n },\n [`${componentCls}-wrap`]: {\n position: 'relative',\n [`${antCls}-btn > ${iconCls}-down`]: {\n fontSize: fontSizeIcon\n },\n [`${iconCls}-down::before`]: {\n transition: `transform ${motionDurationMid}`\n }\n },\n [`${componentCls}-wrap-open`]: {\n [`${iconCls}-down::before`]: {\n transform: `rotate(180deg)`\n }\n },\n [`\n &-hidden,\n &-menu-hidden,\n &-menu-submenu-hidden\n `]: {\n display: 'none'\n },\n // =============================================================\n // == Motion ==\n // =============================================================\n // When position is not enough for dropdown, the placement will revert.\n // We will handle this with revert motion name.\n [`&${antCls}-slide-down-enter${antCls}-slide-down-enter-active${componentCls}-placement-bottomLeft,\n &${antCls}-slide-down-appear${antCls}-slide-down-appear-active${componentCls}-placement-bottomLeft,\n &${antCls}-slide-down-enter${antCls}-slide-down-enter-active${componentCls}-placement-bottom,\n &${antCls}-slide-down-appear${antCls}-slide-down-appear-active${componentCls}-placement-bottom,\n &${antCls}-slide-down-enter${antCls}-slide-down-enter-active${componentCls}-placement-bottomRight,\n &${antCls}-slide-down-appear${antCls}-slide-down-appear-active${componentCls}-placement-bottomRight`]: {\n animationName: slideUpIn\n },\n [`&${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-placement-topLeft,\n &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-placement-topLeft,\n &${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-placement-top,\n &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-placement-top,\n &${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-placement-topRight,\n &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-placement-topRight`]: {\n animationName: slideDownIn\n },\n [`&${antCls}-slide-down-leave${antCls}-slide-down-leave-active${componentCls}-placement-bottomLeft,\n &${antCls}-slide-down-leave${antCls}-slide-down-leave-active${componentCls}-placement-bottom,\n &${antCls}-slide-down-leave${antCls}-slide-down-leave-active${componentCls}-placement-bottomRight`]: {\n animationName: slideUpOut\n },\n [`&${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-placement-topLeft,\n &${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-placement-top,\n &${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-placement-topRight`]: {\n animationName: slideDownOut\n }\n })\n },\n // =============================================================\n // == Arrow style ==\n // =============================================================\n getArrowStyle(token, colorBgElevated, {\n arrowPlacement: {\n top: true,\n bottom: true\n }\n }), {\n // =============================================================\n // == Menu ==\n // =============================================================\n [`${componentCls} ${menuCls}`]: {\n position: 'relative',\n margin: 0\n },\n [`${menuCls}-submenu-popup`]: {\n position: 'absolute',\n zIndex: zIndexPopup,\n background: 'transparent',\n boxShadow: 'none',\n transformOrigin: '0 0',\n 'ul, li': {\n listStyle: 'none',\n margin: 0\n }\n },\n [`${componentCls}, ${componentCls}-menu-submenu`]: {\n [menuCls]: Object.assign(Object.assign({\n padding: dropdownEdgeChildPadding,\n listStyleType: 'none',\n backgroundColor: colorBgElevated,\n backgroundClip: 'padding-box',\n borderRadius: token.borderRadiusLG,\n outline: 'none',\n boxShadow: token.boxShadowSecondary\n }, genFocusStyle(token)), {\n [`${menuCls}-item-group-title`]: {\n padding: `${unit(paddingBlock)} ${unit(controlPaddingHorizontal)}`,\n color: token.colorTextDescription,\n transition: `all ${motionDurationMid}`\n },\n // ======================= Item Content =======================\n [`${menuCls}-item`]: {\n position: 'relative',\n display: 'flex',\n alignItems: 'center'\n },\n [`${menuCls}-item-icon`]: {\n minWidth: fontSize,\n marginInlineEnd: token.marginXS,\n fontSize: token.fontSizeSM\n },\n [`${menuCls}-title-content`]: {\n flex: 'auto',\n '> a': {\n color: 'inherit',\n transition: `all ${motionDurationMid}`,\n '&:hover': {\n color: 'inherit'\n },\n '&::after': {\n position: 'absolute',\n inset: 0,\n content: '\"\"'\n }\n }\n },\n // =========================== Item ===========================\n [`${menuCls}-item, ${menuCls}-submenu-title`]: Object.assign(Object.assign({\n clear: 'both',\n margin: 0,\n padding: `${unit(paddingBlock)} ${unit(controlPaddingHorizontal)}`,\n color: token.colorText,\n fontWeight: 'normal',\n fontSize,\n lineHeight: token.lineHeight,\n cursor: 'pointer',\n transition: `all ${motionDurationMid}`,\n borderRadius: token.borderRadiusSM,\n [`&:hover, &-active`]: {\n backgroundColor: token.controlItemBgHover\n }\n }, genFocusStyle(token)), {\n '&-selected': {\n color: token.colorPrimary,\n backgroundColor: token.controlItemBgActive,\n '&:hover, &-active': {\n backgroundColor: token.controlItemBgActiveHover\n }\n },\n '&-disabled': {\n color: colorTextDisabled,\n cursor: 'not-allowed',\n '&:hover': {\n color: colorTextDisabled,\n backgroundColor: colorBgElevated,\n cursor: 'not-allowed'\n },\n a: {\n pointerEvents: 'none'\n }\n },\n '&-divider': {\n height: 1,\n // By design\n margin: `${unit(token.marginXXS)} 0`,\n overflow: 'hidden',\n lineHeight: 0,\n backgroundColor: token.colorSplit\n },\n [`${componentCls}-menu-submenu-expand-icon`]: {\n position: 'absolute',\n insetInlineEnd: token.paddingXS,\n [`${componentCls}-menu-submenu-arrow-icon`]: {\n marginInlineEnd: '0 !important',\n color: token.colorTextDescription,\n fontSize: fontSizeIcon,\n fontStyle: 'normal'\n }\n }\n }),\n [`${menuCls}-item-group-list`]: {\n margin: `0 ${unit(token.marginXS)}`,\n padding: 0,\n listStyle: 'none'\n },\n [`${menuCls}-submenu-title`]: {\n paddingInlineEnd: token.calc(controlPaddingHorizontal).add(token.fontSizeSM).equal()\n },\n [`${menuCls}-submenu-vertical`]: {\n position: 'relative'\n },\n [`${menuCls}-submenu${menuCls}-submenu-disabled ${componentCls}-menu-submenu-title`]: {\n [`&, ${componentCls}-menu-submenu-arrow-icon`]: {\n color: colorTextDisabled,\n backgroundColor: colorBgElevated,\n cursor: 'not-allowed'\n }\n },\n // https://github.com/ant-design/ant-design/issues/19264\n [`${menuCls}-submenu-selected ${componentCls}-menu-submenu-title`]: {\n color: token.colorPrimary\n }\n })\n }\n },\n // Follow code may reuse in other components\n [initSlideMotion(token, 'slide-up'), initSlideMotion(token, 'slide-down'), initMoveMotion(token, 'move-up'), initMoveMotion(token, 'move-down'), initZoomMotion(token, 'zoom-big')]];\n};\n// ============================== Export ==============================\nexport const prepareComponentToken = token => Object.assign(Object.assign({\n zIndexPopup: token.zIndexPopupBase + 50,\n paddingBlock: (token.controlHeight - token.fontSize * token.lineHeight) / 2\n}, getArrowOffsetToken({\n contentRadius: token.borderRadiusLG,\n limitVerticalRadius: true\n})), getArrowToken(token));\nexport default genStyleHooks('Dropdown', token => {\n const {\n marginXXS,\n sizePopupArrow,\n paddingXXS,\n componentCls\n } = token;\n const dropdownToken = mergeToken(token, {\n menuCls: `${componentCls}-menu`,\n dropdownArrowDistance: token.calc(sizePopupArrow).div(2).add(marginXXS).equal(),\n dropdownEdgeChildPadding: paddingXXS\n });\n return [genBaseStyle(dropdownToken), genStatusStyle(dropdownToken)];\n}, prepareComponentToken);","\"use client\";\n\nimport * as React from 'react';\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport classNames from 'classnames';\nimport RcDropdown from 'rc-dropdown';\nimport { useEvent } from 'rc-util';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport omit from \"rc-util/es/omit\";\nimport { useZIndex } from '../_util/hooks/useZIndex';\nimport getPlacements from '../_util/placements';\nimport genPurePanel from '../_util/PurePanel';\nimport { cloneElement } from '../_util/reactNode';\nimport { devUseWarning } from '../_util/warning';\nimport zIndexContext from '../_util/zindexContext';\nimport { ConfigContext } from '../config-provider';\nimport Menu from '../menu';\nimport { OverrideProvider } from '../menu/OverrideContext';\nimport { useToken } from '../theme/internal';\nimport useStyle from './style';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nconst Placements = ['topLeft', 'topCenter', 'topRight', 'bottomLeft', 'bottomCenter', 'bottomRight', 'top', 'bottom'];\nconst Dropdown = props => {\n const {\n menu,\n arrow,\n prefixCls: customizePrefixCls,\n children,\n trigger,\n disabled,\n dropdownRender,\n getPopupContainer,\n overlayClassName,\n rootClassName,\n overlayStyle,\n open,\n onOpenChange,\n // Deprecated\n visible,\n onVisibleChange,\n mouseEnterDelay = 0.15,\n mouseLeaveDelay = 0.1,\n autoAdjustOverflow = true,\n placement = '',\n overlay,\n transitionName\n } = props;\n const {\n getPopupContainer: getContextPopupContainer,\n getPrefixCls,\n direction,\n dropdown\n } = React.useContext(ConfigContext);\n // Warning for deprecated usage\n const warning = devUseWarning('Dropdown');\n if (process.env.NODE_ENV !== 'production') {\n [['visible', 'open'], ['onVisibleChange', 'onOpenChange']].forEach(_ref => {\n let [deprecatedName, newName] = _ref;\n warning.deprecated(!(deprecatedName in props), deprecatedName, newName);\n });\n warning.deprecated(!('overlay' in props), 'overlay', 'menu');\n }\n const memoTransitionName = React.useMemo(() => {\n const rootPrefixCls = getPrefixCls();\n if (transitionName !== undefined) {\n return transitionName;\n }\n if (placement.includes('top')) {\n return `${rootPrefixCls}-slide-down`;\n }\n return `${rootPrefixCls}-slide-up`;\n }, [getPrefixCls, placement, transitionName]);\n const memoPlacement = React.useMemo(() => {\n if (!placement) {\n return direction === 'rtl' ? 'bottomRight' : 'bottomLeft';\n }\n if (placement.includes('Center')) {\n return placement.slice(0, placement.indexOf('Center'));\n }\n return placement;\n }, [placement, direction]);\n if (process.env.NODE_ENV !== 'production') {\n if (placement.includes('Center')) {\n const newPlacement = placement.slice(0, placement.indexOf('Center'));\n process.env.NODE_ENV !== \"production\" ? warning(!placement.includes('Center'), 'deprecated', `You are using '${placement}' placement in Dropdown, which is deprecated. Try to use '${newPlacement}' instead.`) : void 0;\n }\n [['visible', 'open'], ['onVisibleChange', 'onOpenChange']].forEach(_ref2 => {\n let [deprecatedName, newName] = _ref2;\n warning.deprecated(!(deprecatedName in props), deprecatedName, newName);\n });\n }\n const prefixCls = getPrefixCls('dropdown', customizePrefixCls);\n const rootCls = useCSSVarCls(prefixCls);\n const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n const [, token] = useToken();\n const child = React.Children.only(children);\n const dropdownTrigger = cloneElement(child, {\n className: classNames(`${prefixCls}-trigger`, {\n [`${prefixCls}-rtl`]: direction === 'rtl'\n }, child.props.className),\n disabled\n });\n const triggerActions = disabled ? [] : trigger;\n let alignPoint;\n if (triggerActions && triggerActions.includes('contextMenu')) {\n alignPoint = true;\n }\n // =========================== Open ============================\n const [mergedOpen, setOpen] = useMergedState(false, {\n value: open !== null && open !== void 0 ? open : visible\n });\n const onInnerOpenChange = useEvent(nextOpen => {\n onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(nextOpen, {\n source: 'trigger'\n });\n onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(nextOpen);\n setOpen(nextOpen);\n });\n // =========================== Overlay ============================\n const overlayClassNameCustomized = classNames(overlayClassName, rootClassName, hashId, cssVarCls, rootCls, dropdown === null || dropdown === void 0 ? void 0 : dropdown.className, {\n [`${prefixCls}-rtl`]: direction === 'rtl'\n });\n const builtinPlacements = getPlacements({\n arrowPointAtCenter: typeof arrow === 'object' && arrow.pointAtCenter,\n autoAdjustOverflow,\n offset: token.marginXXS,\n arrowWidth: arrow ? token.sizePopupArrow : 0,\n borderRadius: token.borderRadius\n });\n const onMenuClick = React.useCallback(() => {\n if ((menu === null || menu === void 0 ? void 0 : menu.selectable) && (menu === null || menu === void 0 ? void 0 : menu.multiple)) {\n return;\n }\n onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(false, {\n source: 'menu'\n });\n setOpen(false);\n }, [menu === null || menu === void 0 ? void 0 : menu.selectable, menu === null || menu === void 0 ? void 0 : menu.multiple]);\n const renderOverlay = () => {\n // rc-dropdown already can process the function of overlay, but we have check logic here.\n // So we need render the element to check and pass back to rc-dropdown.\n let overlayNode;\n if (menu === null || menu === void 0 ? void 0 : menu.items) {\n overlayNode = /*#__PURE__*/React.createElement(Menu, Object.assign({}, menu));\n } else if (typeof overlay === 'function') {\n overlayNode = overlay();\n } else {\n overlayNode = overlay;\n }\n if (dropdownRender) {\n overlayNode = dropdownRender(overlayNode);\n }\n overlayNode = React.Children.only(typeof overlayNode === 'string' ? /*#__PURE__*/React.createElement(\"span\", null, overlayNode) : overlayNode);\n return /*#__PURE__*/React.createElement(OverrideProvider, {\n prefixCls: `${prefixCls}-menu`,\n rootClassName: classNames(cssVarCls, rootCls),\n expandIcon: /*#__PURE__*/React.createElement(\"span\", {\n className: `${prefixCls}-menu-submenu-arrow`\n }, /*#__PURE__*/React.createElement(RightOutlined, {\n className: `${prefixCls}-menu-submenu-arrow-icon`\n })),\n mode: \"vertical\",\n selectable: false,\n onClick: onMenuClick,\n validator: _ref3 => {\n let {\n mode\n } = _ref3;\n // Warning if use other mode\n process.env.NODE_ENV !== \"production\" ? warning(!mode || mode === 'vertical', 'usage', `mode=\"${mode}\" is not supported for Dropdown's Menu.`) : void 0;\n }\n }, overlayNode);\n };\n // =========================== zIndex ============================\n const [zIndex, contextZIndex] = useZIndex('Dropdown', overlayStyle === null || overlayStyle === void 0 ? void 0 : overlayStyle.zIndex);\n // ============================ Render ============================\n let renderNode = /*#__PURE__*/React.createElement(RcDropdown, Object.assign({\n alignPoint: alignPoint\n }, omit(props, ['rootClassName']), {\n mouseEnterDelay: mouseEnterDelay,\n mouseLeaveDelay: mouseLeaveDelay,\n visible: mergedOpen,\n builtinPlacements: builtinPlacements,\n arrow: !!arrow,\n overlayClassName: overlayClassNameCustomized,\n prefixCls: prefixCls,\n getPopupContainer: getPopupContainer || getContextPopupContainer,\n transitionName: memoTransitionName,\n trigger: triggerActions,\n overlay: renderOverlay,\n placement: memoPlacement,\n onVisibleChange: onInnerOpenChange,\n overlayStyle: Object.assign(Object.assign(Object.assign({}, dropdown === null || dropdown === void 0 ? void 0 : dropdown.style), overlayStyle), {\n zIndex\n })\n }), dropdownTrigger);\n if (zIndex) {\n renderNode = /*#__PURE__*/React.createElement(zIndexContext.Provider, {\n value: contextZIndex\n }, renderNode);\n }\n return wrapCSSVar(renderNode);\n};\nfunction postPureProps(props) {\n return Object.assign(Object.assign({}, props), {\n align: {\n overflow: {\n adjustX: false,\n adjustY: false\n }\n }\n });\n}\n// We don't care debug panel\nconst PurePanel = genPurePanel(Dropdown, 'dropdown', prefixCls => prefixCls, postPureProps);\n/* istanbul ignore next */\nconst WrapPurePanel = props => ( /*#__PURE__*/React.createElement(PurePanel, Object.assign({}, props), /*#__PURE__*/React.createElement(\"span\", null)));\nDropdown._InternalPanelDoNotUseOrYouWillBeFired = WrapPurePanel;\nif (process.env.NODE_ENV !== 'production') {\n Dropdown.displayName = 'Dropdown';\n}\nexport default Dropdown;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport EllipsisOutlined from \"@ant-design/icons/es/icons/EllipsisOutlined\";\nimport Button from '../button';\nimport { ConfigContext } from '../config-provider';\nimport Space from '../space';\nimport { useCompactItemContext } from '../space/Compact';\nimport Dropdown from './dropdown';\nconst DropdownButton = props => {\n const {\n getPopupContainer: getContextPopupContainer,\n getPrefixCls,\n direction\n } = React.useContext(ConfigContext);\n const {\n prefixCls: customizePrefixCls,\n type = 'default',\n danger,\n disabled,\n loading,\n onClick,\n htmlType,\n children,\n className,\n menu,\n arrow,\n autoFocus,\n overlay,\n trigger,\n align,\n open,\n onOpenChange,\n placement,\n getPopupContainer,\n href,\n icon = /*#__PURE__*/React.createElement(EllipsisOutlined, null),\n title,\n buttonsRender = buttons => buttons,\n mouseEnterDelay,\n mouseLeaveDelay,\n overlayClassName,\n overlayStyle,\n destroyPopupOnHide,\n dropdownRender\n } = props,\n restProps = __rest(props, [\"prefixCls\", \"type\", \"danger\", \"disabled\", \"loading\", \"onClick\", \"htmlType\", \"children\", \"className\", \"menu\", \"arrow\", \"autoFocus\", \"overlay\", \"trigger\", \"align\", \"open\", \"onOpenChange\", \"placement\", \"getPopupContainer\", \"href\", \"icon\", \"title\", \"buttonsRender\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"overlayClassName\", \"overlayStyle\", \"destroyPopupOnHide\", \"dropdownRender\"]);\n const prefixCls = getPrefixCls('dropdown', customizePrefixCls);\n const buttonPrefixCls = `${prefixCls}-button`;\n const dropdownProps = {\n menu,\n arrow,\n autoFocus,\n align,\n disabled,\n trigger: disabled ? [] : trigger,\n onOpenChange,\n getPopupContainer: getPopupContainer || getContextPopupContainer,\n mouseEnterDelay,\n mouseLeaveDelay,\n overlayClassName,\n overlayStyle,\n destroyPopupOnHide,\n dropdownRender\n };\n const {\n compactSize,\n compactItemClassnames\n } = useCompactItemContext(prefixCls, direction);\n const classes = classNames(buttonPrefixCls, compactItemClassnames, className);\n if ('overlay' in props) {\n dropdownProps.overlay = overlay;\n }\n if ('open' in props) {\n dropdownProps.open = open;\n }\n if ('placement' in props) {\n dropdownProps.placement = placement;\n } else {\n dropdownProps.placement = direction === 'rtl' ? 'bottomLeft' : 'bottomRight';\n }\n const leftButton = /*#__PURE__*/React.createElement(Button, {\n type: type,\n danger: danger,\n disabled: disabled,\n loading: loading,\n onClick: onClick,\n htmlType: htmlType,\n href: href,\n title: title\n }, children);\n const rightButton = /*#__PURE__*/React.createElement(Button, {\n type: type,\n danger: danger,\n icon: icon\n });\n const [leftButtonToRender, rightButtonToRender] = buttonsRender([leftButton, rightButton]);\n return /*#__PURE__*/React.createElement(Space.Compact, Object.assign({\n className: classes,\n size: compactSize,\n block: true\n }, restProps), leftButtonToRender, /*#__PURE__*/React.createElement(Dropdown, Object.assign({}, dropdownProps), rightButtonToRender));\n};\nDropdownButton.__ANT_BUTTON = true;\nexport default DropdownButton;","\"use client\";\n\nimport InternalDropdown from './dropdown';\nimport DropdownButton from './dropdown-button';\nconst Dropdown = InternalDropdown;\nDropdown.Button = DropdownButton;\nexport default Dropdown;","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport { useCallback, useMemo } from 'react';\nimport DownOutlined from \"@ant-design/icons/es/icons/DownOutlined\";\nimport classNames from 'classnames';\nimport { INTERNAL_COL_DEFINE } from 'rc-table';\nimport { arrAdd, arrDel } from \"rc-tree/es/util\";\nimport { conductCheck } from \"rc-tree/es/utils/conductUtil\";\nimport { convertDataToEntities } from \"rc-tree/es/utils/treeUtil\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport useMultipleSelect from '../../_util/hooks/useMultipleSelect';\nimport { devUseWarning } from '../../_util/warning';\nimport Checkbox from '../../checkbox';\nimport Dropdown from '../../dropdown';\nimport Radio from '../../radio';\n// TODO: warning if use ajax!!!\nexport const SELECTION_COLUMN = {};\nexport const SELECTION_ALL = 'SELECT_ALL';\nexport const SELECTION_INVERT = 'SELECT_INVERT';\nexport const SELECTION_NONE = 'SELECT_NONE';\nconst EMPTY_LIST = [];\nconst flattenData = (childrenColumnName, data) => {\n let list = [];\n (data || []).forEach(record => {\n list.push(record);\n if (record && typeof record === 'object' && childrenColumnName in record) {\n list = [].concat(_toConsumableArray(list), _toConsumableArray(flattenData(childrenColumnName, record[childrenColumnName])));\n }\n });\n return list;\n};\nconst useSelection = (config, rowSelection) => {\n const {\n preserveSelectedRowKeys,\n selectedRowKeys,\n defaultSelectedRowKeys,\n getCheckboxProps,\n onChange: onSelectionChange,\n onSelect,\n onSelectAll,\n onSelectInvert,\n onSelectNone,\n onSelectMultiple,\n columnWidth: selectionColWidth,\n type: selectionType,\n selections,\n fixed,\n renderCell: customizeRenderCell,\n hideSelectAll,\n checkStrictly = true\n } = rowSelection || {};\n const {\n prefixCls,\n data,\n pageData,\n getRecordByKey,\n getRowKey,\n expandType,\n childrenColumnName,\n locale: tableLocale,\n getPopupContainer\n } = config;\n const warning = devUseWarning('Table');\n // ========================= MultipleSelect =========================\n const [multipleSelect, updatePrevSelectedIndex] = useMultipleSelect(item => item);\n // ========================= Keys =========================\n const [mergedSelectedKeys, setMergedSelectedKeys] = useMergedState(selectedRowKeys || defaultSelectedRowKeys || EMPTY_LIST, {\n value: selectedRowKeys\n });\n // ======================== Caches ========================\n const preserveRecordsRef = React.useRef(new Map());\n const updatePreserveRecordsCache = useCallback(keys => {\n if (preserveSelectedRowKeys) {\n const newCache = new Map();\n // Keep key if mark as preserveSelectedRowKeys\n keys.forEach(key => {\n let record = getRecordByKey(key);\n if (!record && preserveRecordsRef.current.has(key)) {\n record = preserveRecordsRef.current.get(key);\n }\n newCache.set(key, record);\n });\n // Refresh to new cache\n preserveRecordsRef.current = newCache;\n }\n }, [getRecordByKey, preserveSelectedRowKeys]);\n // Update cache with selectedKeys\n React.useEffect(() => {\n updatePreserveRecordsCache(mergedSelectedKeys);\n }, [mergedSelectedKeys]);\n const {\n keyEntities\n } = useMemo(() => {\n if (checkStrictly) {\n return {\n keyEntities: null\n };\n }\n let convertData = data;\n if (preserveSelectedRowKeys) {\n const keysSet = new Set(data.map((record, index) => getRowKey(record, index)));\n // remove preserveRecords that duplicate data\n const preserveRecords = Array.from(preserveRecordsRef.current).reduce((total, _ref) => {\n let [key, value] = _ref;\n return keysSet.has(key) ? total : total.concat(value);\n }, []);\n convertData = [].concat(_toConsumableArray(convertData), _toConsumableArray(preserveRecords));\n }\n return convertDataToEntities(convertData, {\n externalGetKey: getRowKey,\n childrenPropName: childrenColumnName\n });\n }, [data, getRowKey, checkStrictly, childrenColumnName, preserveSelectedRowKeys]);\n // Get flatten data\n const flattedData = useMemo(() => flattenData(childrenColumnName, pageData), [childrenColumnName, pageData]);\n // Get all checkbox props\n const checkboxPropsMap = useMemo(() => {\n const map = new Map();\n flattedData.forEach((record, index) => {\n const key = getRowKey(record, index);\n const checkboxProps = (getCheckboxProps ? getCheckboxProps(record) : null) || {};\n map.set(key, checkboxProps);\n process.env.NODE_ENV !== \"production\" ? warning(!('checked' in checkboxProps || 'defaultChecked' in checkboxProps), 'usage', 'Do not set `checked` or `defaultChecked` in `getCheckboxProps`. Please use `selectedRowKeys` instead.') : void 0;\n });\n return map;\n }, [flattedData, getRowKey, getCheckboxProps]);\n const isCheckboxDisabled = useCallback(r => {\n var _a;\n return !!((_a = checkboxPropsMap.get(getRowKey(r))) === null || _a === void 0 ? void 0 : _a.disabled);\n }, [checkboxPropsMap, getRowKey]);\n const [derivedSelectedKeys, derivedHalfSelectedKeys] = useMemo(() => {\n if (checkStrictly) {\n return [mergedSelectedKeys || [], []];\n }\n const {\n checkedKeys,\n halfCheckedKeys\n } = conductCheck(mergedSelectedKeys, true, keyEntities, isCheckboxDisabled);\n return [checkedKeys || [], halfCheckedKeys];\n }, [mergedSelectedKeys, checkStrictly, keyEntities, isCheckboxDisabled]);\n const derivedSelectedKeySet = useMemo(() => {\n const keys = selectionType === 'radio' ? derivedSelectedKeys.slice(0, 1) : derivedSelectedKeys;\n return new Set(keys);\n }, [derivedSelectedKeys, selectionType]);\n const derivedHalfSelectedKeySet = useMemo(() => selectionType === 'radio' ? new Set() : new Set(derivedHalfSelectedKeys), [derivedHalfSelectedKeys, selectionType]);\n // Reset if rowSelection reset\n React.useEffect(() => {\n if (!rowSelection) {\n setMergedSelectedKeys(EMPTY_LIST);\n }\n }, [!!rowSelection]);\n const setSelectedKeys = useCallback((keys, method) => {\n let availableKeys;\n let records;\n updatePreserveRecordsCache(keys);\n if (preserveSelectedRowKeys) {\n availableKeys = keys;\n records = keys.map(key => preserveRecordsRef.current.get(key));\n } else {\n // Filter key which not exist in the `dataSource`\n availableKeys = [];\n records = [];\n keys.forEach(key => {\n const record = getRecordByKey(key);\n if (record !== undefined) {\n availableKeys.push(key);\n records.push(record);\n }\n });\n }\n setMergedSelectedKeys(availableKeys);\n onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange(availableKeys, records, {\n type: method\n });\n }, [setMergedSelectedKeys, getRecordByKey, onSelectionChange, preserveSelectedRowKeys]);\n // ====================== Selections ======================\n // Trigger single `onSelect` event\n const triggerSingleSelection = useCallback((key, selected, keys, event) => {\n if (onSelect) {\n const rows = keys.map(k => getRecordByKey(k));\n onSelect(getRecordByKey(key), selected, rows, event);\n }\n setSelectedKeys(keys, 'single');\n }, [onSelect, getRecordByKey, setSelectedKeys]);\n const mergedSelections = useMemo(() => {\n if (!selections || hideSelectAll) {\n return null;\n }\n const selectionList = selections === true ? [SELECTION_ALL, SELECTION_INVERT, SELECTION_NONE] : selections;\n return selectionList.map(selection => {\n if (selection === SELECTION_ALL) {\n return {\n key: 'all',\n text: tableLocale.selectionAll,\n onSelect() {\n setSelectedKeys(data.map((record, index) => getRowKey(record, index)).filter(key => {\n const checkProps = checkboxPropsMap.get(key);\n return !(checkProps === null || checkProps === void 0 ? void 0 : checkProps.disabled) || derivedSelectedKeySet.has(key);\n }), 'all');\n }\n };\n }\n if (selection === SELECTION_INVERT) {\n return {\n key: 'invert',\n text: tableLocale.selectInvert,\n onSelect() {\n const keySet = new Set(derivedSelectedKeySet);\n pageData.forEach((record, index) => {\n const key = getRowKey(record, index);\n const checkProps = checkboxPropsMap.get(key);\n if (!(checkProps === null || checkProps === void 0 ? void 0 : checkProps.disabled)) {\n if (keySet.has(key)) {\n keySet.delete(key);\n } else {\n keySet.add(key);\n }\n }\n });\n const keys = Array.from(keySet);\n if (onSelectInvert) {\n warning.deprecated(false, 'onSelectInvert', 'onChange');\n onSelectInvert(keys);\n }\n setSelectedKeys(keys, 'invert');\n }\n };\n }\n if (selection === SELECTION_NONE) {\n return {\n key: 'none',\n text: tableLocale.selectNone,\n onSelect() {\n onSelectNone === null || onSelectNone === void 0 ? void 0 : onSelectNone();\n setSelectedKeys(Array.from(derivedSelectedKeySet).filter(key => {\n const checkProps = checkboxPropsMap.get(key);\n return checkProps === null || checkProps === void 0 ? void 0 : checkProps.disabled;\n }), 'none');\n }\n };\n }\n return selection;\n }).map(selection => Object.assign(Object.assign({}, selection), {\n onSelect: function () {\n var _a2;\n var _a;\n for (var _len = arguments.length, rest = new Array(_len), _key = 0; _key < _len; _key++) {\n rest[_key] = arguments[_key];\n }\n (_a = selection.onSelect) === null || _a === void 0 ? void 0 : (_a2 = _a).call.apply(_a2, [selection].concat(rest));\n updatePrevSelectedIndex(null);\n }\n }));\n }, [selections, derivedSelectedKeySet, pageData, getRowKey, onSelectInvert, setSelectedKeys]);\n // ======================= Columns ========================\n const transformColumns = useCallback(columns => {\n var _a;\n // >>>>>>>>>>> Skip if not exists `rowSelection`\n if (!rowSelection) {\n process.env.NODE_ENV !== \"production\" ? warning(!columns.includes(SELECTION_COLUMN), 'usage', '`rowSelection` is not config but `SELECTION_COLUMN` exists in the `columns`.') : void 0;\n return columns.filter(col => col !== SELECTION_COLUMN);\n }\n // >>>>>>>>>>> Support selection\n let cloneColumns = _toConsumableArray(columns);\n const keySet = new Set(derivedSelectedKeySet);\n // Record key only need check with enabled\n const recordKeys = flattedData.map(getRowKey).filter(key => !checkboxPropsMap.get(key).disabled);\n const checkedCurrentAll = recordKeys.every(key => keySet.has(key));\n const checkedCurrentSome = recordKeys.some(key => keySet.has(key));\n const onSelectAllChange = () => {\n const changeKeys = [];\n if (checkedCurrentAll) {\n recordKeys.forEach(key => {\n keySet.delete(key);\n changeKeys.push(key);\n });\n } else {\n recordKeys.forEach(key => {\n if (!keySet.has(key)) {\n keySet.add(key);\n changeKeys.push(key);\n }\n });\n }\n const keys = Array.from(keySet);\n onSelectAll === null || onSelectAll === void 0 ? void 0 : onSelectAll(!checkedCurrentAll, keys.map(k => getRecordByKey(k)), changeKeys.map(k => getRecordByKey(k)));\n setSelectedKeys(keys, 'all');\n updatePrevSelectedIndex(null);\n };\n // ===================== Render =====================\n // Title Cell\n let title;\n let columnTitleCheckbox;\n if (selectionType !== 'radio') {\n let customizeSelections;\n if (mergedSelections) {\n const menu = {\n getPopupContainer,\n items: mergedSelections.map((selection, index) => {\n const {\n key,\n text,\n onSelect: onSelectionClick\n } = selection;\n return {\n key: key !== null && key !== void 0 ? key : index,\n onClick: () => {\n onSelectionClick === null || onSelectionClick === void 0 ? void 0 : onSelectionClick(recordKeys);\n },\n label: text\n };\n })\n };\n customizeSelections = /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-selection-extra`\n }, /*#__PURE__*/React.createElement(Dropdown, {\n menu: menu,\n getPopupContainer: getPopupContainer\n }, /*#__PURE__*/React.createElement(\"span\", null, /*#__PURE__*/React.createElement(DownOutlined, null))));\n }\n const allDisabledData = flattedData.map((record, index) => {\n const key = getRowKey(record, index);\n const checkboxProps = checkboxPropsMap.get(key) || {};\n return Object.assign({\n checked: keySet.has(key)\n }, checkboxProps);\n }).filter(_ref2 => {\n let {\n disabled\n } = _ref2;\n return disabled;\n });\n const allDisabled = !!allDisabledData.length && allDisabledData.length === flattedData.length;\n const allDisabledAndChecked = allDisabled && allDisabledData.every(_ref3 => {\n let {\n checked\n } = _ref3;\n return checked;\n });\n const allDisabledSomeChecked = allDisabled && allDisabledData.some(_ref4 => {\n let {\n checked\n } = _ref4;\n return checked;\n });\n columnTitleCheckbox = /*#__PURE__*/React.createElement(Checkbox, {\n checked: !allDisabled ? !!flattedData.length && checkedCurrentAll : allDisabledAndChecked,\n indeterminate: !allDisabled ? !checkedCurrentAll && checkedCurrentSome : !allDisabledAndChecked && allDisabledSomeChecked,\n onChange: onSelectAllChange,\n disabled: flattedData.length === 0 || allDisabled,\n \"aria-label\": customizeSelections ? 'Custom selection' : 'Select all',\n skipGroup: true\n });\n title = !hideSelectAll && ( /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-selection`\n }, columnTitleCheckbox, customizeSelections));\n }\n // Body Cell\n let renderCell;\n if (selectionType === 'radio') {\n renderCell = (_, record, index) => {\n const key = getRowKey(record, index);\n const checked = keySet.has(key);\n return {\n node: ( /*#__PURE__*/React.createElement(Radio, Object.assign({}, checkboxPropsMap.get(key), {\n checked: checked,\n onClick: e => e.stopPropagation(),\n onChange: event => {\n if (!keySet.has(key)) {\n triggerSingleSelection(key, true, [key], event.nativeEvent);\n }\n }\n }))),\n checked\n };\n };\n } else {\n renderCell = (_, record, index) => {\n var _a;\n const key = getRowKey(record, index);\n const checked = keySet.has(key);\n const indeterminate = derivedHalfSelectedKeySet.has(key);\n const checkboxProps = checkboxPropsMap.get(key);\n let mergedIndeterminate;\n if (expandType === 'nest') {\n mergedIndeterminate = indeterminate;\n process.env.NODE_ENV !== \"production\" ? warning(typeof (checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.indeterminate) !== 'boolean', 'usage', 'set `indeterminate` using `rowSelection.getCheckboxProps` is not allowed with tree structured dataSource.') : void 0;\n } else {\n mergedIndeterminate = (_a = checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.indeterminate) !== null && _a !== void 0 ? _a : indeterminate;\n }\n // Record checked\n return {\n node: ( /*#__PURE__*/React.createElement(Checkbox, Object.assign({}, checkboxProps, {\n indeterminate: mergedIndeterminate,\n checked: checked,\n skipGroup: true,\n onClick: e => e.stopPropagation(),\n onChange: _ref5 => {\n let {\n nativeEvent\n } = _ref5;\n const {\n shiftKey\n } = nativeEvent;\n const currentSelectedIndex = recordKeys.findIndex(item => item === key);\n const isMultiple = derivedSelectedKeys.some(item => recordKeys.includes(item));\n if (shiftKey && checkStrictly && isMultiple) {\n const changedKeys = multipleSelect(currentSelectedIndex, recordKeys, keySet);\n const keys = Array.from(keySet);\n onSelectMultiple === null || onSelectMultiple === void 0 ? void 0 : onSelectMultiple(!checked, keys.map(recordKey => getRecordByKey(recordKey)), changedKeys.map(recordKey => getRecordByKey(recordKey)));\n setSelectedKeys(keys, 'multiple');\n } else {\n // Single record selected\n const originCheckedKeys = derivedSelectedKeys;\n if (checkStrictly) {\n const checkedKeys = checked ? arrDel(originCheckedKeys, key) : arrAdd(originCheckedKeys, key);\n triggerSingleSelection(key, !checked, checkedKeys, nativeEvent);\n } else {\n // Always fill first\n const result = conductCheck([].concat(_toConsumableArray(originCheckedKeys), [key]), true, keyEntities, isCheckboxDisabled);\n const {\n checkedKeys,\n halfCheckedKeys\n } = result;\n let nextCheckedKeys = checkedKeys;\n // If remove, we do it again to correction\n if (checked) {\n const tempKeySet = new Set(checkedKeys);\n tempKeySet.delete(key);\n nextCheckedKeys = conductCheck(Array.from(tempKeySet), {\n checked: false,\n halfCheckedKeys\n }, keyEntities, isCheckboxDisabled).checkedKeys;\n }\n triggerSingleSelection(key, !checked, nextCheckedKeys, nativeEvent);\n }\n }\n if (checked) {\n updatePrevSelectedIndex(null);\n } else {\n updatePrevSelectedIndex(currentSelectedIndex);\n }\n }\n }))),\n checked\n };\n };\n }\n const renderSelectionCell = (_, record, index) => {\n const {\n node,\n checked\n } = renderCell(_, record, index);\n if (customizeRenderCell) {\n return customizeRenderCell(checked, record, index, node);\n }\n return node;\n };\n // Insert selection column if not exist\n if (!cloneColumns.includes(SELECTION_COLUMN)) {\n // Always after expand icon\n if (cloneColumns.findIndex(col => {\n var _a;\n return ((_a = col[INTERNAL_COL_DEFINE]) === null || _a === void 0 ? void 0 : _a.columnType) === 'EXPAND_COLUMN';\n }) === 0) {\n const [expandColumn, ...restColumns] = cloneColumns;\n cloneColumns = [expandColumn, SELECTION_COLUMN].concat(_toConsumableArray(restColumns));\n } else {\n // Normal insert at first column\n cloneColumns = [SELECTION_COLUMN].concat(_toConsumableArray(cloneColumns));\n }\n }\n // Deduplicate selection column\n const selectionColumnIndex = cloneColumns.indexOf(SELECTION_COLUMN);\n process.env.NODE_ENV !== \"production\" ? warning(cloneColumns.filter(col => col === SELECTION_COLUMN).length <= 1, 'usage', 'Multiple `SELECTION_COLUMN` exist in `columns`.') : void 0;\n cloneColumns = cloneColumns.filter((column, index) => column !== SELECTION_COLUMN || index === selectionColumnIndex);\n // Fixed column logic\n const prevCol = cloneColumns[selectionColumnIndex - 1];\n const nextCol = cloneColumns[selectionColumnIndex + 1];\n let mergedFixed = fixed;\n if (mergedFixed === undefined) {\n if ((nextCol === null || nextCol === void 0 ? void 0 : nextCol.fixed) !== undefined) {\n mergedFixed = nextCol.fixed;\n } else if ((prevCol === null || prevCol === void 0 ? void 0 : prevCol.fixed) !== undefined) {\n mergedFixed = prevCol.fixed;\n }\n }\n if (mergedFixed && prevCol && ((_a = prevCol[INTERNAL_COL_DEFINE]) === null || _a === void 0 ? void 0 : _a.columnType) === 'EXPAND_COLUMN' && prevCol.fixed === undefined) {\n prevCol.fixed = mergedFixed;\n }\n const columnCls = classNames(`${prefixCls}-selection-col`, {\n [`${prefixCls}-selection-col-with-dropdown`]: selections && selectionType === 'checkbox'\n });\n const renderColumnTitle = () => {\n if (!(rowSelection === null || rowSelection === void 0 ? void 0 : rowSelection.columnTitle)) {\n return title;\n }\n if (typeof rowSelection.columnTitle === 'function') {\n return rowSelection.columnTitle(columnTitleCheckbox);\n }\n return rowSelection.columnTitle;\n };\n // Replace with real selection column\n const selectionColumn = {\n fixed: mergedFixed,\n width: selectionColWidth,\n className: `${prefixCls}-selection-column`,\n title: renderColumnTitle(),\n render: renderSelectionCell,\n onCell: rowSelection.onCell,\n [INTERNAL_COL_DEFINE]: {\n className: columnCls\n }\n };\n return cloneColumns.map(col => col === SELECTION_COLUMN ? selectionColumn : col);\n }, [getRowKey, flattedData, rowSelection, derivedSelectedKeys, derivedSelectedKeySet, derivedHalfSelectedKeySet, selectionColWidth, mergedSelections, expandType, checkboxPropsMap, onSelectMultiple, triggerSingleSelection, isCheckboxDisabled]);\n return [transformColumns, derivedSelectedKeySet];\n};\nexport default useSelection;","import { useCallback, useState } from 'react';\n/**\n * @title multipleSelect hooks\n * @description multipleSelect by hold down shift key\n */\nexport default function useMultipleSelect(getKey) {\n const [prevSelectedIndex, setPrevSelectedIndex] = useState(null);\n const multipleSelect = useCallback((currentSelectedIndex, data, selectedKeys) => {\n const configPrevSelectedIndex = prevSelectedIndex !== null && prevSelectedIndex !== void 0 ? prevSelectedIndex : currentSelectedIndex;\n // add/delete the selected range\n const startIndex = Math.min(configPrevSelectedIndex || 0, currentSelectedIndex);\n const endIndex = Math.max(configPrevSelectedIndex || 0, currentSelectedIndex);\n const rangeKeys = data.slice(startIndex, endIndex + 1).map(item => getKey(item));\n const shouldSelected = rangeKeys.some(rangeKey => !selectedKeys.has(rangeKey));\n const changedKeys = [];\n rangeKeys.forEach(item => {\n if (shouldSelected) {\n if (!selectedKeys.has(item)) {\n changedKeys.push(item);\n }\n selectedKeys.add(item);\n } else {\n selectedKeys.delete(item);\n changedKeys.push(item);\n }\n });\n setPrevSelectedIndex(shouldSelected ? endIndex : null);\n return changedKeys;\n }, [prevSelectedIndex]);\n const updatePrevSelectedIndex = val => {\n setPrevSelectedIndex(val);\n };\n return [multipleSelect, updatePrevSelectedIndex];\n}","// Proxy the dom ref with `{ nativeElement, otherFn }` type\n// ref: https://github.com/ant-design/ant-design/discussions/45242\nimport { useImperativeHandle } from 'react';\nfunction fillProxy(element, handler) {\n element._antProxy = element._antProxy || {};\n Object.keys(handler).forEach(key => {\n if (!(key in element._antProxy)) {\n const ori = element[key];\n element._antProxy[key] = ori;\n element[key] = handler[key];\n }\n });\n return element;\n}\nexport default function useProxyImperativeHandle(ref, init) {\n return useImperativeHandle(ref, () => {\n const refObj = init();\n const {\n nativeElement\n } = refObj;\n if (typeof Proxy !== 'undefined') {\n return new Proxy(nativeElement, {\n get(obj, prop) {\n if (refObj[prop]) {\n return refObj[prop];\n }\n return Reflect.get(obj, prop);\n }\n });\n }\n // Fallback of IE\n return fillProxy(nativeElement, refObj);\n });\n}","export function isWindow(obj) {\n return obj !== null && obj !== undefined && obj === obj.window;\n}\nexport default function getScroll(target, top) {\n var _a, _b;\n if (typeof window === 'undefined') {\n return 0;\n }\n const method = top ? 'scrollTop' : 'scrollLeft';\n let result = 0;\n if (isWindow(target)) {\n result = target[top ? 'pageYOffset' : 'pageXOffset'];\n } else if (target instanceof Document) {\n result = target.documentElement[method];\n } else if (target instanceof HTMLElement) {\n result = target[method];\n } else if (target) {\n // According to the type inference, the `target` is `never` type.\n // Since we configured the loose mode type checking, and supports mocking the target with such shape below::\n // `{ documentElement: { scrollLeft: 200, scrollTop: 400 } }`,\n // the program may falls into this branch.\n // Check the corresponding tests for details. Don't sure what is the real scenario this happens.\n result = target[method];\n }\n if (target && !isWindow(target) && typeof result !== 'number') {\n result = (_b = ((_a = target.ownerDocument) !== null && _a !== void 0 ? _a : target).documentElement) === null || _b === void 0 ? void 0 : _b[method];\n }\n return result;\n}","import raf from \"rc-util/es/raf\";\nimport { easeInOutCubic } from './easings';\nimport getScroll, { isWindow } from './getScroll';\nexport default function scrollTo(y) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n getContainer = () => window,\n callback,\n duration = 450\n } = options;\n const container = getContainer();\n const scrollTop = getScroll(container, true);\n const startTime = Date.now();\n const frameFunc = () => {\n const timestamp = Date.now();\n const time = timestamp - startTime;\n const nextScrollTop = easeInOutCubic(time > duration ? duration : time, scrollTop, y, duration);\n if (isWindow(container)) {\n container.scrollTo(window.pageXOffset, nextScrollTop);\n } else if (container instanceof Document || container.constructor.name === 'HTMLDocument') {\n container.documentElement.scrollTop = nextScrollTop;\n } else {\n container.scrollTop = nextScrollTop;\n }\n if (time < duration) {\n raf(frameFunc);\n } else if (typeof callback === 'function') {\n callback();\n }\n };\n raf(frameFunc);\n}","// eslint-disable-next-line import/prefer-default-export\nexport function easeInOutCubic(t, b, c, d) {\n const cc = c - b;\n t /= d / 2;\n if (t < 1) {\n return cc / 2 * t * t * t + b;\n }\n // eslint-disable-next-line no-return-assign\n return cc / 2 * ((t -= 2) * t * t + 2) + b;\n}","\"use client\";\n\nimport { TinyColor } from '@ctrl/tinycolor';\nimport * as React from 'react';\nimport { useToken } from '../theme/internal';\nconst Empty = () => {\n const [, token] = useToken();\n const bgColor = new TinyColor(token.colorBgBase);\n // Dark Theme need more dark of this\n const themeStyle = bgColor.toHsl().l < 0.5 ? {\n opacity: 0.65\n } : {};\n return /*#__PURE__*/React.createElement(\"svg\", {\n style: themeStyle,\n width: \"184\",\n height: \"152\",\n viewBox: \"0 0 184 152\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(24 31.67)\"\n }, /*#__PURE__*/React.createElement(\"ellipse\", {\n fillOpacity: \".8\",\n fill: \"#F5F5F7\",\n cx: \"67.797\",\n cy: \"106.89\",\n rx: \"67.797\",\n ry: \"12.668\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z\",\n fill: \"#AEB8C2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z\",\n fill: \"url(#linearGradient-1)\",\n transform: \"translate(13.56)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z\",\n fill: \"#F5F5F7\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z\",\n fill: \"#DCE0E6\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z\",\n fill: \"#DCE0E6\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(149.65 15.383)\",\n fill: \"#FFF\"\n }, /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: \"20.654\",\n cy: \"3.167\",\n rx: \"2.849\",\n ry: \"2.815\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z\"\n }))));\n};\nif (process.env.NODE_ENV !== 'production') {\n Empty.displayName = 'EmptyImage';\n}\nexport default Empty;","\"use client\";\n\nimport { TinyColor } from '@ctrl/tinycolor';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { useToken } from '../theme/internal';\nconst Simple = () => {\n const [, token] = useToken();\n const {\n colorFill,\n colorFillTertiary,\n colorFillQuaternary,\n colorBgContainer\n } = token;\n const {\n borderColor,\n shadowColor,\n contentColor\n } = useMemo(() => ({\n borderColor: new TinyColor(colorFill).onBackground(colorBgContainer).toHexShortString(),\n shadowColor: new TinyColor(colorFillTertiary).onBackground(colorBgContainer).toHexShortString(),\n contentColor: new TinyColor(colorFillQuaternary).onBackground(colorBgContainer).toHexShortString()\n }), [colorFill, colorFillTertiary, colorFillQuaternary, colorBgContainer]);\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"64\",\n height: \"41\",\n viewBox: \"0 0 64 41\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(0 1)\",\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"ellipse\", {\n fill: shadowColor,\n cx: \"32\",\n cy: \"33\",\n rx: \"32\",\n ry: \"7\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n fillRule: \"nonzero\",\n stroke: borderColor\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\",\n fill: contentColor\n }))));\n};\nif (process.env.NODE_ENV !== 'production') {\n Simple.displayName = 'SimpleImage';\n}\nexport default Simple;","import { genStyleHooks, mergeToken } from '../../theme/internal';\n// ============================== Shared ==============================\nconst genSharedEmptyStyle = token => {\n const {\n componentCls,\n margin,\n marginXS,\n marginXL,\n fontSize,\n lineHeight\n } = token;\n return {\n [componentCls]: {\n marginInline: marginXS,\n fontSize,\n lineHeight,\n textAlign: 'center',\n // 原来 &-image 没有父子结构,现在为了外层承担我们的hashId,改成父子结果\n [`${componentCls}-image`]: {\n height: token.emptyImgHeight,\n marginBottom: marginXS,\n opacity: token.opacityImage,\n img: {\n height: '100%'\n },\n svg: {\n maxWidth: '100%',\n height: '100%',\n margin: 'auto'\n }\n },\n [`${componentCls}-description`]: {\n color: token.colorText\n },\n // 原来 &-footer 没有父子结构,现在为了外层承担我们的hashId,改成父子结果\n [`${componentCls}-footer`]: {\n marginTop: margin\n },\n '&-normal': {\n marginBlock: marginXL,\n color: token.colorTextDisabled,\n [`${componentCls}-description`]: {\n color: token.colorTextDisabled\n },\n [`${componentCls}-image`]: {\n height: token.emptyImgHeightMD\n }\n },\n '&-small': {\n marginBlock: marginXS,\n color: token.colorTextDisabled,\n [`${componentCls}-image`]: {\n height: token.emptyImgHeightSM\n }\n }\n }\n };\n};\n// ============================== Export ==============================\nexport default genStyleHooks('Empty', token => {\n const {\n componentCls,\n controlHeightLG,\n calc\n } = token;\n const emptyToken = mergeToken(token, {\n emptyImgCls: `${componentCls}-img`,\n emptyImgHeight: calc(controlHeightLG).mul(2.5).equal(),\n emptyImgHeightMD: controlHeightLG,\n emptyImgHeightSM: calc(controlHeightLG).mul(0.875).equal()\n });\n return [genSharedEmptyStyle(emptyToken)];\n});","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { useLocale } from '../locale';\nimport DefaultEmptyImg from './empty';\nimport SimpleEmptyImg from './simple';\nimport useStyle from './style';\nconst defaultEmptyImg = /*#__PURE__*/React.createElement(DefaultEmptyImg, null);\nconst simpleEmptyImg = /*#__PURE__*/React.createElement(SimpleEmptyImg, null);\nconst Empty = _a => {\n var {\n className,\n rootClassName,\n prefixCls: customizePrefixCls,\n image = defaultEmptyImg,\n description,\n children,\n imageStyle,\n style\n } = _a,\n restProps = __rest(_a, [\"className\", \"rootClassName\", \"prefixCls\", \"image\", \"description\", \"children\", \"imageStyle\", \"style\"]);\n const {\n getPrefixCls,\n direction,\n empty\n } = React.useContext(ConfigContext);\n const prefixCls = getPrefixCls('empty', customizePrefixCls);\n const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n const [locale] = useLocale('Empty');\n const des = typeof description !== 'undefined' ? description : locale === null || locale === void 0 ? void 0 : locale.description;\n const alt = typeof des === 'string' ? des : 'empty';\n let imageNode = null;\n if (typeof image === 'string') {\n imageNode = /*#__PURE__*/React.createElement(\"img\", {\n alt: alt,\n src: image\n });\n } else {\n imageNode = image;\n }\n return wrapCSSVar( /*#__PURE__*/React.createElement(\"div\", Object.assign({\n className: classNames(hashId, cssVarCls, prefixCls, empty === null || empty === void 0 ? void 0 : empty.className, {\n [`${prefixCls}-normal`]: image === simpleEmptyImg,\n [`${prefixCls}-rtl`]: direction === 'rtl'\n }, className, rootClassName),\n style: Object.assign(Object.assign({}, empty === null || empty === void 0 ? void 0 : empty.style), style)\n }, restProps), /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-image`,\n style: imageStyle\n }, imageNode), des && /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-description`\n }, des), children && /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-footer`\n }, children)));\n};\nEmpty.PRESENTED_IMAGE_DEFAULT = defaultEmptyImg;\nEmpty.PRESENTED_IMAGE_SIMPLE = simpleEmptyImg;\nif (process.env.NODE_ENV !== 'production') {\n Empty.displayName = 'Empty';\n}\nexport default Empty;","\"use client\";\n\nimport React, { useContext } from 'react';\nimport { ConfigContext } from '.';\nimport Empty from '../empty';\nconst DefaultRenderEmpty = props => {\n const {\n componentName\n } = props;\n const {\n getPrefixCls\n } = useContext(ConfigContext);\n const prefix = getPrefixCls('empty');\n switch (componentName) {\n case 'Table':\n case 'List':\n return /*#__PURE__*/React.createElement(Empty, {\n image: Empty.PRESENTED_IMAGE_SIMPLE\n });\n case 'Select':\n case 'TreeSelect':\n case 'Cascader':\n case 'Transfer':\n case 'Mentions':\n return /*#__PURE__*/React.createElement(Empty, {\n image: Empty.PRESENTED_IMAGE_SIMPLE,\n className: `${prefix}-small`\n });\n /* istanbul ignore next */\n default:\n // Should never hit if we take all the component into consider.\n return /*#__PURE__*/React.createElement(Empty, null);\n }\n};\nexport default DefaultRenderEmpty;","import * as React from 'react';\nexport default function useForceUpdate() {\n const [, forceUpdate] = React.useReducer(x => x + 1, 0);\n return forceUpdate;\n}","\"use client\";\n\nimport { useRef } from 'react';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport useForceUpdate from '../../_util/hooks/useForceUpdate';\nimport useResponsiveObserver from '../../_util/responsiveObserver';\nfunction useBreakpoint() {\n let refreshOnChange = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n const screensRef = useRef({});\n const forceUpdate = useForceUpdate();\n const responsiveObserver = useResponsiveObserver();\n useLayoutEffect(() => {\n const token = responsiveObserver.subscribe(supportScreens => {\n screensRef.current = supportScreens;\n if (refreshOnChange) {\n forceUpdate();\n }\n });\n return () => responsiveObserver.unsubscribe(token);\n }, []);\n return screensRef.current;\n}\nexport default useBreakpoint;","// This icon file is generated automatically.\nvar DoubleLeftOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z\" } }] }, \"name\": \"double-left\", \"theme\": \"outlined\" };\nexport default DoubleLeftOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DoubleLeftOutlinedSvg from \"@ant-design/icons-svg/es/asn/DoubleLeftOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DoubleLeftOutlined = function DoubleLeftOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DoubleLeftOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n DoubleLeftOutlined.displayName = 'DoubleLeftOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(DoubleLeftOutlined);","// This icon file is generated automatically.\nvar DoubleRightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\" } }] }, \"name\": \"double-right\", \"theme\": \"outlined\" };\nexport default DoubleRightOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DoubleRightOutlinedSvg from \"@ant-design/icons-svg/es/asn/DoubleRightOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DoubleRightOutlined = function DoubleRightOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DoubleRightOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n DoubleRightOutlined.displayName = 'DoubleRightOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(DoubleRightOutlined);","// This icon file is generated automatically.\nvar LeftOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\" } }] }, \"name\": \"left\", \"theme\": \"outlined\" };\nexport default LeftOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport LeftOutlinedSvg from \"@ant-design/icons-svg/es/asn/LeftOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar LeftOutlined = function LeftOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: LeftOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n LeftOutlined.displayName = 'LeftOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(LeftOutlined);","var locale = {\n // Options\n items_per_page: '条/页',\n jump_to: '跳至',\n jump_to_confirm: '确定',\n page: '页',\n // Pagination\n prev_page: '上一页',\n next_page: '下一页',\n prev_5: '向前 5 页',\n next_5: '向后 5 页',\n prev_3: '向前 3 页',\n next_3: '向后 3 页',\n page_size: '页码'\n};\nexport default locale;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport KEYCODE from \"rc-util/es/KeyCode\";\nimport React from 'react';\nvar defaultPageSizeOptions = ['10', '20', '50', '100'];\nvar Options = function Options(props) {\n var _props$pageSizeOption = props.pageSizeOptions,\n pageSizeOptions = _props$pageSizeOption === void 0 ? defaultPageSizeOptions : _props$pageSizeOption,\n locale = props.locale,\n changeSize = props.changeSize,\n pageSize = props.pageSize,\n goButton = props.goButton,\n quickGo = props.quickGo,\n rootPrefixCls = props.rootPrefixCls,\n Select = props.selectComponentClass,\n selectPrefixCls = props.selectPrefixCls,\n disabled = props.disabled,\n buildOptionText = props.buildOptionText;\n var _React$useState = React.useState(''),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n goInputText = _React$useState2[0],\n setGoInputText = _React$useState2[1];\n var getValidValue = function getValidValue() {\n return !goInputText || Number.isNaN(goInputText) ? undefined : Number(goInputText);\n };\n var mergeBuildOptionText = typeof buildOptionText === 'function' ? buildOptionText : function (value) {\n return \"\".concat(value, \" \").concat(locale.items_per_page);\n };\n var changeSizeHandle = function changeSizeHandle(value) {\n changeSize === null || changeSize === void 0 || changeSize(Number(value));\n };\n var handleChange = function handleChange(e) {\n setGoInputText(e.target.value);\n };\n var handleBlur = function handleBlur(e) {\n if (goButton || goInputText === '') {\n return;\n }\n setGoInputText('');\n if (e.relatedTarget && (e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-item-link\")) >= 0 || e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-item\")) >= 0)) {\n return;\n }\n quickGo === null || quickGo === void 0 || quickGo(getValidValue());\n };\n var go = function go(e) {\n if (goInputText === '') {\n return;\n }\n if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n setGoInputText('');\n quickGo === null || quickGo === void 0 || quickGo(getValidValue());\n }\n };\n var getPageSizeOptions = function getPageSizeOptions() {\n if (pageSizeOptions.some(function (option) {\n return option.toString() === pageSize.toString();\n })) {\n return pageSizeOptions;\n }\n return pageSizeOptions.concat([pageSize.toString()]).sort(function (a, b) {\n var numberA = Number.isNaN(Number(a)) ? 0 : Number(a);\n var numberB = Number.isNaN(Number(b)) ? 0 : Number(b);\n return numberA - numberB;\n });\n };\n // ============== cls ==============\n var prefixCls = \"\".concat(rootPrefixCls, \"-options\");\n\n // ============== render ==============\n\n if (!changeSize && !quickGo) {\n return null;\n }\n var changeSelect = null;\n var goInput = null;\n var gotoButton = null;\n if (changeSize && Select) {\n var options = getPageSizeOptions().map(function (opt, i) {\n return /*#__PURE__*/React.createElement(Select.Option, {\n key: i,\n value: opt.toString()\n }, mergeBuildOptionText(opt));\n });\n changeSelect = /*#__PURE__*/React.createElement(Select, {\n disabled: disabled,\n prefixCls: selectPrefixCls,\n showSearch: false,\n className: \"\".concat(prefixCls, \"-size-changer\"),\n optionLabelProp: \"children\",\n popupMatchSelectWidth: false,\n value: (pageSize || pageSizeOptions[0]).toString(),\n onChange: changeSizeHandle,\n getPopupContainer: function getPopupContainer(triggerNode) {\n return triggerNode.parentNode;\n },\n \"aria-label\": locale.page_size,\n defaultOpen: false\n }, options);\n }\n if (quickGo) {\n if (goButton) {\n gotoButton = typeof goButton === 'boolean' ? /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: go,\n onKeyUp: go,\n disabled: disabled,\n className: \"\".concat(prefixCls, \"-quick-jumper-button\")\n }, locale.jump_to_confirm) : /*#__PURE__*/React.createElement(\"span\", {\n onClick: go,\n onKeyUp: go\n }, goButton);\n }\n goInput = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-quick-jumper\")\n }, locale.jump_to, /*#__PURE__*/React.createElement(\"input\", {\n disabled: disabled,\n type: \"text\",\n value: goInputText,\n onChange: handleChange,\n onKeyUp: go,\n onBlur: handleBlur,\n \"aria-label\": locale.page\n }), locale.page, gotoButton);\n }\n return /*#__PURE__*/React.createElement(\"li\", {\n className: prefixCls\n }, changeSelect, goInput);\n};\nif (process.env.NODE_ENV !== 'production') {\n Options.displayName = 'Options';\n}\nexport default Options;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n/* eslint react/prop-types: 0 */\nimport classNames from 'classnames';\nimport React from 'react';\nvar Pager = function Pager(props) {\n var _classNames;\n var rootPrefixCls = props.rootPrefixCls,\n page = props.page,\n active = props.active,\n className = props.className,\n showTitle = props.showTitle,\n onClick = props.onClick,\n onKeyPress = props.onKeyPress,\n itemRender = props.itemRender;\n var prefixCls = \"\".concat(rootPrefixCls, \"-item\");\n var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(page), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-active\"), active), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), !page), _classNames), className);\n var handleClick = function handleClick() {\n onClick(page);\n };\n var handleKeyPress = function handleKeyPress(e) {\n onKeyPress(e, onClick, page);\n };\n var pager = itemRender(page, 'page', /*#__PURE__*/React.createElement(\"a\", {\n rel: \"nofollow\"\n }, page));\n return pager ? /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? String(page) : null,\n className: cls,\n onClick: handleClick,\n onKeyDown: handleKeyPress,\n tabIndex: 0\n }, pager) : null;\n};\nif (process.env.NODE_ENV !== 'production') {\n Pager.displayName = 'Pager';\n}\nexport default Pager;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport warning from \"rc-util/es/warning\";\nimport React, { useEffect } from 'react';\nimport zhCN from \"./locale/zh_CN\";\nimport Options from \"./Options\";\nimport Pager from \"./Pager\";\nvar defaultItemRender = function defaultItemRender(page, type, element) {\n return element;\n};\nfunction noop() {}\nfunction isInteger(v) {\n var value = Number(v);\n return typeof value === 'number' && !Number.isNaN(value) && isFinite(value) && Math.floor(value) === value;\n}\nfunction calculatePage(p, pageSize, total) {\n var _pageSize = typeof p === 'undefined' ? pageSize : p;\n return Math.floor((total - 1) / _pageSize) + 1;\n}\nvar Pagination = function Pagination(props) {\n var _classNames5;\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-pagination' : _props$prefixCls,\n _props$selectPrefixCl = props.selectPrefixCls,\n selectPrefixCls = _props$selectPrefixCl === void 0 ? 'rc-select' : _props$selectPrefixCl,\n className = props.className,\n selectComponentClass = props.selectComponentClass,\n currentProp = props.current,\n _props$defaultCurrent = props.defaultCurrent,\n defaultCurrent = _props$defaultCurrent === void 0 ? 1 : _props$defaultCurrent,\n _props$total = props.total,\n total = _props$total === void 0 ? 0 : _props$total,\n pageSizeProp = props.pageSize,\n _props$defaultPageSiz = props.defaultPageSize,\n defaultPageSize = _props$defaultPageSiz === void 0 ? 10 : _props$defaultPageSiz,\n _props$onChange = props.onChange,\n onChange = _props$onChange === void 0 ? noop : _props$onChange,\n hideOnSinglePage = props.hideOnSinglePage,\n _props$showPrevNextJu = props.showPrevNextJumpers,\n showPrevNextJumpers = _props$showPrevNextJu === void 0 ? true : _props$showPrevNextJu,\n showQuickJumper = props.showQuickJumper,\n showLessItems = props.showLessItems,\n _props$showTitle = props.showTitle,\n showTitle = _props$showTitle === void 0 ? true : _props$showTitle,\n _props$onShowSizeChan = props.onShowSizeChange,\n onShowSizeChange = _props$onShowSizeChan === void 0 ? noop : _props$onShowSizeChan,\n _props$locale = props.locale,\n locale = _props$locale === void 0 ? zhCN : _props$locale,\n style = props.style,\n _props$totalBoundaryS = props.totalBoundaryShowSizeChanger,\n totalBoundaryShowSizeChanger = _props$totalBoundaryS === void 0 ? 50 : _props$totalBoundaryS,\n disabled = props.disabled,\n simple = props.simple,\n showTotal = props.showTotal,\n showSizeChangerProp = props.showSizeChanger,\n pageSizeOptions = props.pageSizeOptions,\n _props$itemRender = props.itemRender,\n itemRender = _props$itemRender === void 0 ? defaultItemRender : _props$itemRender,\n jumpPrevIcon = props.jumpPrevIcon,\n jumpNextIcon = props.jumpNextIcon,\n prevIcon = props.prevIcon,\n nextIcon = props.nextIcon;\n var paginationRef = React.useRef(null);\n var _useMergedState = useMergedState(10, {\n value: pageSizeProp,\n defaultValue: defaultPageSize\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n pageSize = _useMergedState2[0],\n setPageSize = _useMergedState2[1];\n var _useMergedState3 = useMergedState(1, {\n value: currentProp,\n defaultValue: defaultCurrent,\n postState: function postState(c) {\n return Math.max(1, Math.min(c, calculatePage(undefined, pageSize, total)));\n }\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n current = _useMergedState4[0],\n setCurrent = _useMergedState4[1];\n var _React$useState = React.useState(current),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n internalInputVal = _React$useState2[0],\n setInternalInputVal = _React$useState2[1];\n useEffect(function () {\n setInternalInputVal(current);\n }, [current]);\n var hasOnChange = onChange !== noop;\n var hasCurrent = ('current' in props);\n if (process.env.NODE_ENV !== 'production') {\n warning(hasCurrent ? hasOnChange : true, 'You provided a `current` prop to a Pagination component without an `onChange` handler. This will render a read-only component.');\n }\n var jumpPrevPage = Math.max(1, current - (showLessItems ? 3 : 5));\n var jumpNextPage = Math.min(calculatePage(undefined, pageSize, total), current + (showLessItems ? 3 : 5));\n function getItemIcon(icon, label) {\n var iconNode = icon || /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": label,\n className: \"\".concat(prefixCls, \"-item-link\")\n });\n if (typeof icon === 'function') {\n iconNode = /*#__PURE__*/React.createElement(icon, _objectSpread({}, props));\n }\n return iconNode;\n }\n function getValidValue(e) {\n var inputValue = e.target.value;\n var allPages = calculatePage(undefined, pageSize, total);\n var value;\n if (inputValue === '') {\n value = inputValue;\n } else if (Number.isNaN(Number(inputValue))) {\n value = internalInputVal;\n } else if (inputValue >= allPages) {\n value = allPages;\n } else {\n value = Number(inputValue);\n }\n return value;\n }\n function isValid(page) {\n return isInteger(page) && page !== current && isInteger(total) && total > 0;\n }\n var shouldDisplayQuickJumper = total > pageSize ? showQuickJumper : false;\n\n /**\n * prevent \"up arrow\" key reseting cursor position within textbox\n * @see https://stackoverflow.com/a/1081114\n */\n function handleKeyDown(event) {\n if (event.keyCode === KeyCode.UP || event.keyCode === KeyCode.DOWN) {\n event.preventDefault();\n }\n }\n function handleKeyUp(event) {\n var value = getValidValue(event);\n if (value !== internalInputVal) {\n setInternalInputVal(value);\n }\n switch (event.keyCode) {\n case KeyCode.ENTER:\n handleChange(value);\n break;\n case KeyCode.UP:\n handleChange(value - 1);\n break;\n case KeyCode.DOWN:\n handleChange(value + 1);\n break;\n default:\n break;\n }\n }\n function handleBlur(event) {\n handleChange(getValidValue(event));\n }\n function changePageSize(size) {\n var newCurrent = calculatePage(size, pageSize, total);\n var nextCurrent = current > newCurrent && newCurrent !== 0 ? newCurrent : current;\n setPageSize(size);\n setInternalInputVal(nextCurrent);\n onShowSizeChange === null || onShowSizeChange === void 0 || onShowSizeChange(current, size);\n setCurrent(nextCurrent);\n onChange === null || onChange === void 0 || onChange(nextCurrent, size);\n }\n function handleChange(page) {\n if (isValid(page) && !disabled) {\n var currentPage = calculatePage(undefined, pageSize, total);\n var newPage = page;\n if (page > currentPage) {\n newPage = currentPage;\n } else if (page < 1) {\n newPage = 1;\n }\n if (newPage !== internalInputVal) {\n setInternalInputVal(newPage);\n }\n setCurrent(newPage);\n onChange === null || onChange === void 0 || onChange(newPage, pageSize);\n return newPage;\n }\n return current;\n }\n var hasPrev = current > 1;\n var hasNext = current < calculatePage(undefined, pageSize, total);\n var showSizeChanger = showSizeChangerProp !== null && showSizeChangerProp !== void 0 ? showSizeChangerProp : total > totalBoundaryShowSizeChanger;\n function prevHandle() {\n if (hasPrev) handleChange(current - 1);\n }\n function nextHandle() {\n if (hasNext) handleChange(current + 1);\n }\n function jumpPrevHandle() {\n handleChange(jumpPrevPage);\n }\n function jumpNextHandle() {\n handleChange(jumpNextPage);\n }\n function runIfEnter(event, callback) {\n if (event.key === 'Enter' || event.charCode === KeyCode.ENTER || event.keyCode === KeyCode.ENTER) {\n for (var _len = arguments.length, restParams = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n restParams[_key - 2] = arguments[_key];\n }\n callback.apply(void 0, restParams);\n }\n }\n function runIfEnterPrev(event) {\n runIfEnter(event, prevHandle);\n }\n function runIfEnterNext(event) {\n runIfEnter(event, nextHandle);\n }\n function runIfEnterJumpPrev(event) {\n runIfEnter(event, jumpPrevHandle);\n }\n function runIfEnterJumpNext(event) {\n runIfEnter(event, jumpNextHandle);\n }\n function renderPrev(prevPage) {\n var prevButton = itemRender(prevPage, 'prev', getItemIcon(prevIcon, 'prev page'));\n return /*#__PURE__*/React.isValidElement(prevButton) ? /*#__PURE__*/React.cloneElement(prevButton, {\n disabled: !hasPrev\n }) : prevButton;\n }\n function renderNext(nextPage) {\n var nextButton = itemRender(nextPage, 'next', getItemIcon(nextIcon, 'next page'));\n return /*#__PURE__*/React.isValidElement(nextButton) ? /*#__PURE__*/React.cloneElement(nextButton, {\n disabled: !hasNext\n }) : nextButton;\n }\n function handleGoTO(event) {\n if (event.type === 'click' || event.keyCode === KeyCode.ENTER) {\n handleChange(internalInputVal);\n }\n }\n var jumpPrev = null;\n var dataOrAriaAttributeProps = pickAttrs(props, {\n aria: true,\n data: true\n });\n var totalText = showTotal && /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(prefixCls, \"-total-text\")\n }, showTotal(total, [total === 0 ? 0 : (current - 1) * pageSize + 1, current * pageSize > total ? total : current * pageSize]));\n var jumpNext = null;\n var allPages = calculatePage(undefined, pageSize, total);\n\n // ================== Render ==================\n // When hideOnSinglePage is true and there is only 1 page, hide the pager\n if (hideOnSinglePage && total <= pageSize) {\n return null;\n }\n var pagerList = [];\n var pagerProps = {\n rootPrefixCls: prefixCls,\n onClick: handleChange,\n onKeyPress: runIfEnter,\n showTitle: showTitle,\n itemRender: itemRender,\n page: -1\n };\n var prevPage = current - 1 > 0 ? current - 1 : 0;\n var nextPage = current + 1 < allPages ? current + 1 : allPages;\n var goButton = showQuickJumper && showQuickJumper.goButton;\n\n // ================== Simple ==================\n // FIXME: ts type\n var gotoButton = goButton;\n var simplePager = null;\n if (simple) {\n // ====== Simple quick jump ======\n if (goButton) {\n if (typeof goButton === 'boolean') {\n gotoButton = /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: handleGoTO,\n onKeyUp: handleGoTO\n }, locale.jump_to_confirm);\n } else {\n gotoButton = /*#__PURE__*/React.createElement(\"span\", {\n onClick: handleGoTO,\n onKeyUp: handleGoTO\n }, goButton);\n }\n gotoButton = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? \"\".concat(locale.jump_to).concat(current, \"/\").concat(allPages) : null,\n className: \"\".concat(prefixCls, \"-simple-pager\")\n }, gotoButton);\n }\n simplePager = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? \"\".concat(current, \"/\").concat(allPages) : null,\n className: \"\".concat(prefixCls, \"-simple-pager\")\n }, /*#__PURE__*/React.createElement(\"input\", {\n type: \"text\",\n value: internalInputVal,\n disabled: disabled,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n onChange: handleKeyUp,\n onBlur: handleBlur,\n size: 3\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-slash\")\n }, \"/\"), allPages);\n }\n\n // ====================== Normal ======================\n var pageBufferSize = showLessItems ? 1 : 2;\n if (allPages <= 3 + pageBufferSize * 2) {\n if (!allPages) {\n pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: \"noPager\",\n page: 1,\n className: \"\".concat(prefixCls, \"-item-disabled\")\n })));\n }\n for (var i = 1; i <= allPages; i += 1) {\n pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: i,\n page: i,\n active: current === i\n })));\n }\n } else {\n var prevItemTitle = showLessItems ? locale.prev_3 : locale.prev_5;\n var nextItemTitle = showLessItems ? locale.next_3 : locale.next_5;\n var jumpPrevContent = itemRender(jumpPrevPage, 'jump-prev', getItemIcon(jumpPrevIcon, 'prev page'));\n var jumpNextContent = itemRender(jumpNextPage, 'jump-next', getItemIcon(jumpNextIcon, 'next page'));\n if (showPrevNextJumpers) {\n jumpPrev = jumpPrevContent ? /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? prevItemTitle : null,\n key: \"prev\",\n onClick: jumpPrevHandle,\n tabIndex: 0,\n onKeyDown: runIfEnterJumpPrev,\n className: classNames(\"\".concat(prefixCls, \"-jump-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-prev-custom-icon\"), !!jumpPrevIcon))\n }, jumpPrevContent) : null;\n jumpNext = jumpNextContent ? /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? nextItemTitle : null,\n key: \"next\",\n onClick: jumpNextHandle,\n tabIndex: 0,\n onKeyDown: runIfEnterJumpNext,\n className: classNames(\"\".concat(prefixCls, \"-jump-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-next-custom-icon\"), !!jumpNextIcon))\n }, jumpNextContent) : null;\n }\n var left = Math.max(1, current - pageBufferSize);\n var right = Math.min(current + pageBufferSize, allPages);\n if (current - 1 <= pageBufferSize) {\n right = 1 + pageBufferSize * 2;\n }\n if (allPages - current <= pageBufferSize) {\n left = allPages - pageBufferSize * 2;\n }\n for (var _i = left; _i <= right; _i += 1) {\n pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: _i,\n page: _i,\n active: current === _i\n })));\n }\n if (current - 1 >= pageBufferSize * 2 && current !== 1 + 2) {\n pagerList[0] = /*#__PURE__*/React.cloneElement(pagerList[0], {\n className: classNames(\"\".concat(prefixCls, \"-item-after-jump-prev\"), pagerList[0].props.className)\n });\n pagerList.unshift(jumpPrev);\n }\n if (allPages - current >= pageBufferSize * 2 && current !== allPages - 2) {\n var lastOne = pagerList[pagerList.length - 1];\n pagerList[pagerList.length - 1] = /*#__PURE__*/React.cloneElement(lastOne, {\n className: classNames(\"\".concat(prefixCls, \"-item-before-jump-next\"), lastOne.props.className)\n });\n pagerList.push(jumpNext);\n }\n if (left !== 1) {\n pagerList.unshift( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: 1,\n page: 1\n })));\n }\n if (right !== allPages) {\n pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: allPages,\n page: allPages\n })));\n }\n }\n var prev = renderPrev(prevPage);\n if (prev) {\n var prevDisabled = !hasPrev || !allPages;\n prev = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.prev_page : null,\n onClick: prevHandle,\n tabIndex: prevDisabled ? null : 0,\n onKeyDown: runIfEnterPrev,\n className: classNames(\"\".concat(prefixCls, \"-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), prevDisabled)),\n \"aria-disabled\": prevDisabled\n }, prev);\n }\n var next = renderNext(nextPage);\n if (next) {\n var nextDisabled, nextTabIndex;\n if (simple) {\n nextDisabled = !hasNext;\n nextTabIndex = hasPrev ? 0 : null;\n } else {\n nextDisabled = !hasNext || !allPages;\n nextTabIndex = nextDisabled ? null : 0;\n }\n next = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.next_page : null,\n onClick: nextHandle,\n tabIndex: nextTabIndex,\n onKeyDown: runIfEnterNext,\n className: classNames(\"\".concat(prefixCls, \"-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), nextDisabled)),\n \"aria-disabled\": nextDisabled\n }, next);\n }\n var cls = classNames(prefixCls, className, (_classNames5 = {}, _defineProperty(_classNames5, \"\".concat(prefixCls, \"-simple\"), simple), _defineProperty(_classNames5, \"\".concat(prefixCls, \"-disabled\"), disabled), _classNames5));\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: cls,\n style: style,\n ref: paginationRef\n }, dataOrAriaAttributeProps), totalText, prev, simple ? simplePager : pagerList, next, /*#__PURE__*/React.createElement(Options, {\n locale: locale,\n rootPrefixCls: prefixCls,\n disabled: disabled,\n selectComponentClass: selectComponentClass,\n selectPrefixCls: selectPrefixCls,\n changeSize: showSizeChanger ? changePageSize : null,\n pageSize: pageSize,\n pageSizeOptions: pageSizeOptions,\n quickGo: shouldDisplayQuickJumper ? handleChange : null,\n goButton: gotoButton\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n Pagination.displayName = 'Pagination';\n}\nexport default Pagination;","import * as React from 'react';\nimport classNames from 'classnames';\nvar TransBtn = function TransBtn(props) {\n var className = props.className,\n customizeIcon = props.customizeIcon,\n customizeIconProps = props.customizeIconProps,\n children = props.children,\n _onMouseDown = props.onMouseDown,\n onClick = props.onClick;\n var icon = typeof customizeIcon === 'function' ? customizeIcon(customizeIconProps) : customizeIcon;\n return /*#__PURE__*/React.createElement(\"span\", {\n className: className,\n onMouseDown: function onMouseDown(event) {\n event.preventDefault();\n _onMouseDown === null || _onMouseDown === void 0 || _onMouseDown(event);\n },\n style: {\n userSelect: 'none',\n WebkitUserSelect: 'none'\n },\n unselectable: \"on\",\n onClick: onClick,\n \"aria-hidden\": true\n }, icon !== undefined ? icon : /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(className.split(/\\s+/).map(function (cls) {\n return \"\".concat(cls, \"-icon\");\n }))\n }, children));\n};\nexport default TransBtn;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport TransBtn from \"../TransBtn\";\nimport React from 'react';\nexport var useAllowClear = function useAllowClear(prefixCls, onClearMouseDown, displayValues, allowClear, clearIcon) {\n var disabled = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n var mergedSearchValue = arguments.length > 6 ? arguments[6] : undefined;\n var mode = arguments.length > 7 ? arguments[7] : undefined;\n var mergedClearIcon = React.useMemo(function () {\n if (_typeof(allowClear) === 'object') {\n return allowClear.clearIcon;\n }\n if (clearIcon) {\n return clearIcon;\n }\n }, [allowClear, clearIcon]);\n var mergedAllowClear = React.useMemo(function () {\n if (!disabled && !!allowClear && (displayValues.length || mergedSearchValue) && !(mode === 'combobox' && mergedSearchValue === '')) {\n return true;\n }\n return false;\n }, [allowClear, disabled, displayValues.length, mergedSearchValue, mode]);\n return {\n allowClear: mergedAllowClear,\n clearIcon: /*#__PURE__*/React.createElement(TransBtn, {\n className: \"\".concat(prefixCls, \"-clear\"),\n onMouseDown: onClearMouseDown,\n customizeIcon: mergedClearIcon\n }, \"\\xD7\")\n };\n};","/**\n * BaseSelect provide some parsed data into context.\n * You can use this hooks to get them.\n */\n\nimport * as React from 'react';\nexport var BaseSelectContext = /*#__PURE__*/React.createContext(null);\nexport default function useBaseProps() {\n return React.useContext(BaseSelectContext);\n}","import * as React from 'react';\n\n/**\n * Locker return cached mark.\n * If set to `true`, will return `true` in a short time even if set `false`.\n * If set to `false` and then set to `true`, will change to `true`.\n * And after time duration, it will back to `null` automatically.\n */\nexport default function useLock() {\n var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 250;\n var lockRef = React.useRef(null);\n var timeoutRef = React.useRef(null);\n\n // Clean up\n React.useEffect(function () {\n return function () {\n window.clearTimeout(timeoutRef.current);\n };\n }, []);\n function doLock(locked) {\n if (locked || lockRef.current === null) {\n lockRef.current = locked;\n }\n window.clearTimeout(timeoutRef.current);\n timeoutRef.current = window.setTimeout(function () {\n lockRef.current = null;\n }, duration);\n }\n return [function () {\n return lockRef.current;\n }, doLock];\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { composeRef } from \"rc-util/es/ref\";\nimport { warning } from \"rc-util/es/warning\";\nvar Input = function Input(props, ref) {\n var _inputNode2;\n var prefixCls = props.prefixCls,\n id = props.id,\n inputElement = props.inputElement,\n disabled = props.disabled,\n tabIndex = props.tabIndex,\n autoFocus = props.autoFocus,\n autoComplete = props.autoComplete,\n editable = props.editable,\n activeDescendantId = props.activeDescendantId,\n value = props.value,\n maxLength = props.maxLength,\n _onKeyDown = props.onKeyDown,\n _onMouseDown = props.onMouseDown,\n _onChange = props.onChange,\n onPaste = props.onPaste,\n _onCompositionStart = props.onCompositionStart,\n _onCompositionEnd = props.onCompositionEnd,\n open = props.open,\n attrs = props.attrs;\n var inputNode = inputElement || /*#__PURE__*/React.createElement(\"input\", null);\n var _inputNode = inputNode,\n originRef = _inputNode.ref,\n originProps = _inputNode.props;\n var onOriginKeyDown = originProps.onKeyDown,\n onOriginChange = originProps.onChange,\n onOriginMouseDown = originProps.onMouseDown,\n onOriginCompositionStart = originProps.onCompositionStart,\n onOriginCompositionEnd = originProps.onCompositionEnd,\n style = originProps.style;\n warning(!('maxLength' in inputNode.props), \"Passing 'maxLength' to input element directly may not work because input in BaseSelect is controlled.\");\n inputNode = /*#__PURE__*/React.cloneElement(inputNode, _objectSpread(_objectSpread(_objectSpread({\n type: 'search'\n }, originProps), {}, {\n // Override over origin props\n id: id,\n ref: composeRef(ref, originRef),\n disabled: disabled,\n tabIndex: tabIndex,\n autoComplete: autoComplete || 'off',\n autoFocus: autoFocus,\n className: classNames(\"\".concat(prefixCls, \"-selection-search-input\"), (_inputNode2 = inputNode) === null || _inputNode2 === void 0 || (_inputNode2 = _inputNode2.props) === null || _inputNode2 === void 0 ? void 0 : _inputNode2.className),\n role: 'combobox',\n 'aria-expanded': open || false,\n 'aria-haspopup': 'listbox',\n 'aria-owns': \"\".concat(id, \"_list\"),\n 'aria-autocomplete': 'list',\n 'aria-controls': \"\".concat(id, \"_list\"),\n 'aria-activedescendant': open ? activeDescendantId : undefined\n }, attrs), {}, {\n value: editable ? value : '',\n maxLength: maxLength,\n readOnly: !editable,\n unselectable: !editable ? 'on' : null,\n style: _objectSpread(_objectSpread({}, style), {}, {\n opacity: editable ? null : 0\n }),\n onKeyDown: function onKeyDown(event) {\n _onKeyDown(event);\n if (onOriginKeyDown) {\n onOriginKeyDown(event);\n }\n },\n onMouseDown: function onMouseDown(event) {\n _onMouseDown(event);\n if (onOriginMouseDown) {\n onOriginMouseDown(event);\n }\n },\n onChange: function onChange(event) {\n _onChange(event);\n if (onOriginChange) {\n onOriginChange(event);\n }\n },\n onCompositionStart: function onCompositionStart(event) {\n _onCompositionStart(event);\n if (onOriginCompositionStart) {\n onOriginCompositionStart(event);\n }\n },\n onCompositionEnd: function onCompositionEnd(event) {\n _onCompositionEnd(event);\n if (onOriginCompositionEnd) {\n onOriginCompositionEnd(event);\n }\n },\n onPaste: onPaste\n }));\n return inputNode;\n};\nvar RefInput = /*#__PURE__*/React.forwardRef(Input);\nif (process.env.NODE_ENV !== 'production') {\n RefInput.displayName = 'Input';\n}\nexport default RefInput;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport function toArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n return value !== undefined ? [value] : [];\n}\nexport var isClient = typeof window !== 'undefined' && window.document && window.document.documentElement;\n\n/** Is client side and not jsdom */\nexport var isBrowserClient = process.env.NODE_ENV !== 'test' && isClient;\nexport function hasValue(value) {\n return value !== undefined && value !== null;\n}\n\n/** combo mode no value judgment function */\nexport function isComboNoValue(value) {\n return !value && value !== 0;\n}\nfunction isTitleType(title) {\n return ['string', 'number'].includes(_typeof(title));\n}\nexport function getTitle(item) {\n var title = undefined;\n if (item) {\n if (isTitleType(item.title)) {\n title = item.title.toString();\n } else if (isTitleType(item.label)) {\n title = item.label.toString();\n }\n }\n return title;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useState } from 'react';\nimport classNames from 'classnames';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport Overflow from 'rc-overflow';\nimport TransBtn from \"../TransBtn\";\nimport Input from \"./Input\";\nimport useLayoutEffect from \"../hooks/useLayoutEffect\";\nimport { getTitle } from \"../utils/commonUtil\";\nfunction itemKey(value) {\n var _value$key;\n return (_value$key = value.key) !== null && _value$key !== void 0 ? _value$key : value.value;\n}\nvar onPreventMouseDown = function onPreventMouseDown(event) {\n event.preventDefault();\n event.stopPropagation();\n};\nvar SelectSelector = function SelectSelector(props) {\n var id = props.id,\n prefixCls = props.prefixCls,\n values = props.values,\n open = props.open,\n searchValue = props.searchValue,\n autoClearSearchValue = props.autoClearSearchValue,\n inputRef = props.inputRef,\n placeholder = props.placeholder,\n disabled = props.disabled,\n mode = props.mode,\n showSearch = props.showSearch,\n autoFocus = props.autoFocus,\n autoComplete = props.autoComplete,\n activeDescendantId = props.activeDescendantId,\n tabIndex = props.tabIndex,\n removeIcon = props.removeIcon,\n maxTagCount = props.maxTagCount,\n maxTagTextLength = props.maxTagTextLength,\n _props$maxTagPlacehol = props.maxTagPlaceholder,\n maxTagPlaceholder = _props$maxTagPlacehol === void 0 ? function (omittedValues) {\n return \"+ \".concat(omittedValues.length, \" ...\");\n } : _props$maxTagPlacehol,\n tagRender = props.tagRender,\n onToggleOpen = props.onToggleOpen,\n onRemove = props.onRemove,\n onInputChange = props.onInputChange,\n onInputPaste = props.onInputPaste,\n onInputKeyDown = props.onInputKeyDown,\n onInputMouseDown = props.onInputMouseDown,\n onInputCompositionStart = props.onInputCompositionStart,\n onInputCompositionEnd = props.onInputCompositionEnd;\n var measureRef = React.useRef(null);\n var _useState = useState(0),\n _useState2 = _slicedToArray(_useState, 2),\n inputWidth = _useState2[0],\n setInputWidth = _useState2[1];\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n focused = _useState4[0],\n setFocused = _useState4[1];\n var selectionPrefixCls = \"\".concat(prefixCls, \"-selection\");\n\n // ===================== Search ======================\n var inputValue = open || mode === 'multiple' && autoClearSearchValue === false || mode === 'tags' ? searchValue : '';\n var inputEditable = mode === 'tags' || mode === 'multiple' && autoClearSearchValue === false || showSearch && (open || focused);\n\n // We measure width and set to the input immediately\n useLayoutEffect(function () {\n setInputWidth(measureRef.current.scrollWidth);\n }, [inputValue]);\n\n // ===================== Render ======================\n // >>> Render Selector Node. Includes Item & Rest\n var defaultRenderSelector = function defaultRenderSelector(item, content, itemDisabled, closable, onClose) {\n return /*#__PURE__*/React.createElement(\"span\", {\n title: getTitle(item),\n className: classNames(\"\".concat(selectionPrefixCls, \"-item\"), _defineProperty({}, \"\".concat(selectionPrefixCls, \"-item-disabled\"), itemDisabled))\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(selectionPrefixCls, \"-item-content\")\n }, content), closable && /*#__PURE__*/React.createElement(TransBtn, {\n className: \"\".concat(selectionPrefixCls, \"-item-remove\"),\n onMouseDown: onPreventMouseDown,\n onClick: onClose,\n customizeIcon: removeIcon\n }, \"\\xD7\"));\n };\n var customizeRenderSelector = function customizeRenderSelector(value, content, itemDisabled, closable, onClose) {\n var onMouseDown = function onMouseDown(e) {\n onPreventMouseDown(e);\n onToggleOpen(!open);\n };\n return /*#__PURE__*/React.createElement(\"span\", {\n onMouseDown: onMouseDown\n }, tagRender({\n label: content,\n value: value,\n disabled: itemDisabled,\n closable: closable,\n onClose: onClose\n }));\n };\n var renderItem = function renderItem(valueItem) {\n var itemDisabled = valueItem.disabled,\n label = valueItem.label,\n value = valueItem.value;\n var closable = !disabled && !itemDisabled;\n var displayLabel = label;\n if (typeof maxTagTextLength === 'number') {\n if (typeof label === 'string' || typeof label === 'number') {\n var strLabel = String(displayLabel);\n if (strLabel.length > maxTagTextLength) {\n displayLabel = \"\".concat(strLabel.slice(0, maxTagTextLength), \"...\");\n }\n }\n }\n var onClose = function onClose(event) {\n if (event) {\n event.stopPropagation();\n }\n onRemove(valueItem);\n };\n return typeof tagRender === 'function' ? customizeRenderSelector(value, displayLabel, itemDisabled, closable, onClose) : defaultRenderSelector(valueItem, displayLabel, itemDisabled, closable, onClose);\n };\n var renderRest = function renderRest(omittedValues) {\n var content = typeof maxTagPlaceholder === 'function' ? maxTagPlaceholder(omittedValues) : maxTagPlaceholder;\n return defaultRenderSelector({\n title: content\n }, content, false);\n };\n\n // >>> Input Node\n var inputNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(selectionPrefixCls, \"-search\"),\n style: {\n width: inputWidth\n },\n onFocus: function onFocus() {\n setFocused(true);\n },\n onBlur: function onBlur() {\n setFocused(false);\n }\n }, /*#__PURE__*/React.createElement(Input, {\n ref: inputRef,\n open: open,\n prefixCls: prefixCls,\n id: id,\n inputElement: null,\n disabled: disabled,\n autoFocus: autoFocus,\n autoComplete: autoComplete,\n editable: inputEditable,\n activeDescendantId: activeDescendantId,\n value: inputValue,\n onKeyDown: onInputKeyDown,\n onMouseDown: onInputMouseDown,\n onChange: onInputChange,\n onPaste: onInputPaste,\n onCompositionStart: onInputCompositionStart,\n onCompositionEnd: onInputCompositionEnd,\n tabIndex: tabIndex,\n attrs: pickAttrs(props, true)\n }), /*#__PURE__*/React.createElement(\"span\", {\n ref: measureRef,\n className: \"\".concat(selectionPrefixCls, \"-search-mirror\"),\n \"aria-hidden\": true\n }, inputValue, \"\\xA0\"));\n\n // >>> Selections\n var selectionNode = /*#__PURE__*/React.createElement(Overflow, {\n prefixCls: \"\".concat(selectionPrefixCls, \"-overflow\"),\n data: values,\n renderItem: renderItem,\n renderRest: renderRest,\n suffix: inputNode,\n itemKey: itemKey,\n maxCount: maxTagCount\n });\n return /*#__PURE__*/React.createElement(React.Fragment, null, selectionNode, !values.length && !inputValue && /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(selectionPrefixCls, \"-placeholder\")\n }, placeholder));\n};\nexport default SelectSelector;","/* eslint-disable react-hooks/rules-of-hooks */\nimport * as React from 'react';\nimport { isBrowserClient } from \"../utils/commonUtil\";\n\n/**\n * Wrap `React.useLayoutEffect` which will not throw warning message in test env\n */\nexport default function useLayoutEffect(effect, deps) {\n // Never happen in test env\n if (isBrowserClient) {\n /* istanbul ignore next */\n React.useLayoutEffect(effect, deps);\n } else {\n React.useEffect(effect, deps);\n }\n}\n/* eslint-enable */","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport Input from \"./Input\";\nimport { getTitle } from \"../utils/commonUtil\";\nvar SingleSelector = function SingleSelector(props) {\n var inputElement = props.inputElement,\n prefixCls = props.prefixCls,\n id = props.id,\n inputRef = props.inputRef,\n disabled = props.disabled,\n autoFocus = props.autoFocus,\n autoComplete = props.autoComplete,\n activeDescendantId = props.activeDescendantId,\n mode = props.mode,\n open = props.open,\n values = props.values,\n placeholder = props.placeholder,\n tabIndex = props.tabIndex,\n showSearch = props.showSearch,\n searchValue = props.searchValue,\n activeValue = props.activeValue,\n maxLength = props.maxLength,\n onInputKeyDown = props.onInputKeyDown,\n onInputMouseDown = props.onInputMouseDown,\n onInputChange = props.onInputChange,\n onInputPaste = props.onInputPaste,\n onInputCompositionStart = props.onInputCompositionStart,\n onInputCompositionEnd = props.onInputCompositionEnd,\n title = props.title;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n inputChanged = _React$useState2[0],\n setInputChanged = _React$useState2[1];\n var combobox = mode === 'combobox';\n var inputEditable = combobox || showSearch;\n var item = values[0];\n var inputValue = searchValue || '';\n if (combobox && activeValue && !inputChanged) {\n inputValue = activeValue;\n }\n React.useEffect(function () {\n if (combobox) {\n setInputChanged(false);\n }\n }, [combobox, activeValue]);\n\n // Not show text when closed expect combobox mode\n var hasTextInput = mode !== 'combobox' && !open && !showSearch ? false : !!inputValue;\n\n // Get title of selection item\n var selectionTitle = title === undefined ? getTitle(item) : title;\n var placeholderNode = React.useMemo(function () {\n if (item) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-selection-placeholder\"),\n style: hasTextInput ? {\n visibility: 'hidden'\n } : undefined\n }, placeholder);\n }, [item, hasTextInput, placeholder, prefixCls]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-selection-search\")\n }, /*#__PURE__*/React.createElement(Input, {\n ref: inputRef,\n prefixCls: prefixCls,\n id: id,\n open: open,\n inputElement: inputElement,\n disabled: disabled,\n autoFocus: autoFocus,\n autoComplete: autoComplete,\n editable: inputEditable,\n activeDescendantId: activeDescendantId,\n value: inputValue,\n onKeyDown: onInputKeyDown,\n onMouseDown: onInputMouseDown,\n onChange: function onChange(e) {\n setInputChanged(true);\n onInputChange(e);\n },\n onPaste: onInputPaste,\n onCompositionStart: onInputCompositionStart,\n onCompositionEnd: onInputCompositionEnd,\n tabIndex: tabIndex,\n attrs: pickAttrs(props, true),\n maxLength: combobox ? maxLength : undefined\n })), !combobox && item ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-selection-item\"),\n title: selectionTitle\n // 当 Select 已经选中选项时,还需 selection 隐藏但留在原地占位\n // https://github.com/ant-design/ant-design/issues/27688\n // https://github.com/ant-design/ant-design/issues/41530\n ,\n style: hasTextInput ? {\n visibility: 'hidden'\n } : undefined\n }, item.label) : null, placeholderNode);\n};\nexport default SingleSelector;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/**\n * Cursor rule:\n * 1. Only `showSearch` enabled\n * 2. Only `open` is `true`\n * 3. When typing, set `open` to `true` which hit rule of 2\n *\n * Accessibility:\n * - https://www.w3.org/TR/wai-aria-practices/examples/combobox/aria1.1pattern/listbox-combo.html\n */\n\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport MultipleSelector from \"./MultipleSelector\";\nimport SingleSelector from \"./SingleSelector\";\nimport useLock from \"../hooks/useLock\";\nimport { isValidateOpenKey } from \"../utils/keyUtil\";\nvar Selector = function Selector(props, ref) {\n var inputRef = useRef(null);\n var compositionStatusRef = useRef(false);\n var prefixCls = props.prefixCls,\n open = props.open,\n mode = props.mode,\n showSearch = props.showSearch,\n tokenWithEnter = props.tokenWithEnter,\n autoClearSearchValue = props.autoClearSearchValue,\n onSearch = props.onSearch,\n onSearchSubmit = props.onSearchSubmit,\n onToggleOpen = props.onToggleOpen,\n onInputKeyDown = props.onInputKeyDown,\n domRef = props.domRef;\n\n // ======================= Ref =======================\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus() {\n inputRef.current.focus();\n },\n blur: function blur() {\n inputRef.current.blur();\n }\n };\n });\n\n // ====================== Input ======================\n var _useLock = useLock(0),\n _useLock2 = _slicedToArray(_useLock, 2),\n getInputMouseDown = _useLock2[0],\n setInputMouseDown = _useLock2[1];\n var onInternalInputKeyDown = function onInternalInputKeyDown(event) {\n var which = event.which;\n if (which === KeyCode.UP || which === KeyCode.DOWN) {\n event.preventDefault();\n }\n if (onInputKeyDown) {\n onInputKeyDown(event);\n }\n if (which === KeyCode.ENTER && mode === 'tags' && !compositionStatusRef.current && !open) {\n // When menu isn't open, OptionList won't trigger a value change\n // So when enter is pressed, the tag's input value should be emitted here to let selector know\n onSearchSubmit === null || onSearchSubmit === void 0 || onSearchSubmit(event.target.value);\n }\n if (isValidateOpenKey(which)) {\n onToggleOpen(true);\n }\n };\n\n /**\n * We can not use `findDOMNode` sine it will get warning,\n * have to use timer to check if is input element.\n */\n var onInternalInputMouseDown = function onInternalInputMouseDown() {\n setInputMouseDown(true);\n };\n\n // When paste come, ignore next onChange\n var pastedTextRef = useRef(null);\n var triggerOnSearch = function triggerOnSearch(value) {\n if (onSearch(value, true, compositionStatusRef.current) !== false) {\n onToggleOpen(true);\n }\n };\n var onInputCompositionStart = function onInputCompositionStart() {\n compositionStatusRef.current = true;\n };\n var onInputCompositionEnd = function onInputCompositionEnd(e) {\n compositionStatusRef.current = false;\n\n // Trigger search again to support `tokenSeparators` with typewriting\n if (mode !== 'combobox') {\n triggerOnSearch(e.target.value);\n }\n };\n var onInputChange = function onInputChange(event) {\n var value = event.target.value;\n\n // Pasted text should replace back to origin content\n if (tokenWithEnter && pastedTextRef.current && /[\\r\\n]/.test(pastedTextRef.current)) {\n // CRLF will be treated as a single space for input element\n var replacedText = pastedTextRef.current.replace(/[\\r\\n]+$/, '').replace(/\\r\\n/g, ' ').replace(/[\\r\\n]/g, ' ');\n value = value.replace(replacedText, pastedTextRef.current);\n }\n pastedTextRef.current = null;\n triggerOnSearch(value);\n };\n var onInputPaste = function onInputPaste(e) {\n var clipboardData = e.clipboardData;\n var value = clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.getData('text');\n pastedTextRef.current = value || '';\n };\n var onClick = function onClick(_ref) {\n var target = _ref.target;\n if (target !== inputRef.current) {\n // Should focus input if click the selector\n var isIE = document.body.style.msTouchAction !== undefined;\n if (isIE) {\n setTimeout(function () {\n inputRef.current.focus();\n });\n } else {\n inputRef.current.focus();\n }\n }\n };\n var onMouseDown = function onMouseDown(event) {\n var inputMouseDown = getInputMouseDown();\n\n // when mode is combobox, don't prevent default behavior\n // https://github.com/ant-design/ant-design/issues/37320\n if (event.target !== inputRef.current && !inputMouseDown && mode !== 'combobox') {\n event.preventDefault();\n }\n if (mode !== 'combobox' && (!showSearch || !inputMouseDown) || !open) {\n if (open && autoClearSearchValue !== false) {\n onSearch('', true, false);\n }\n onToggleOpen();\n }\n };\n\n // ================= Inner Selector ==================\n var sharedProps = {\n inputRef: inputRef,\n onInputKeyDown: onInternalInputKeyDown,\n onInputMouseDown: onInternalInputMouseDown,\n onInputChange: onInputChange,\n onInputPaste: onInputPaste,\n onInputCompositionStart: onInputCompositionStart,\n onInputCompositionEnd: onInputCompositionEnd\n };\n var selectNode = mode === 'multiple' || mode === 'tags' ? /*#__PURE__*/React.createElement(MultipleSelector, _extends({}, props, sharedProps)) : /*#__PURE__*/React.createElement(SingleSelector, _extends({}, props, sharedProps));\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: domRef,\n className: \"\".concat(prefixCls, \"-selector\"),\n onClick: onClick,\n onMouseDown: onMouseDown\n }, selectNode);\n};\nvar ForwardSelector = /*#__PURE__*/React.forwardRef(Selector);\nif (process.env.NODE_ENV !== 'production') {\n ForwardSelector.displayName = 'Selector';\n}\nexport default ForwardSelector;","import KeyCode from \"rc-util/es/KeyCode\";\n\n/** keyCode Judgment function */\nexport function isValidateOpenKey(currentKeyCode) {\n return ![\n // System function button\n KeyCode.ESC, KeyCode.SHIFT, KeyCode.BACKSPACE, KeyCode.TAB, KeyCode.WIN_KEY, KeyCode.ALT, KeyCode.META, KeyCode.WIN_KEY_RIGHT, KeyCode.CTRL, KeyCode.SEMICOLON, KeyCode.EQUALS, KeyCode.CAPS_LOCK, KeyCode.CONTEXT_MENU,\n // F1-F12\n KeyCode.F1, KeyCode.F2, KeyCode.F3, KeyCode.F4, KeyCode.F5, KeyCode.F6, KeyCode.F7, KeyCode.F8, KeyCode.F9, KeyCode.F10, KeyCode.F11, KeyCode.F12].includes(currentKeyCode);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"disabled\", \"visible\", \"children\", \"popupElement\", \"animation\", \"transitionName\", \"dropdownStyle\", \"dropdownClassName\", \"direction\", \"placement\", \"builtinPlacements\", \"dropdownMatchSelectWidth\", \"dropdownRender\", \"dropdownAlign\", \"getPopupContainer\", \"empty\", \"getTriggerDOMNode\", \"onPopupVisibleChange\", \"onPopupMouseEnter\"];\nimport Trigger from '@rc-component/trigger';\nimport classNames from 'classnames';\nimport * as React from 'react';\nvar getBuiltInPlacements = function getBuiltInPlacements(dropdownMatchSelectWidth) {\n // Enable horizontal overflow auto-adjustment when a custom dropdown width is provided\n var adjustX = dropdownMatchSelectWidth === true ? 0 : 1;\n return {\n bottomLeft: {\n points: ['tl', 'bl'],\n offset: [0, 4],\n overflow: {\n adjustX: adjustX,\n adjustY: 1\n },\n htmlRegion: 'scroll'\n },\n bottomRight: {\n points: ['tr', 'br'],\n offset: [0, 4],\n overflow: {\n adjustX: adjustX,\n adjustY: 1\n },\n htmlRegion: 'scroll'\n },\n topLeft: {\n points: ['bl', 'tl'],\n offset: [0, -4],\n overflow: {\n adjustX: adjustX,\n adjustY: 1\n },\n htmlRegion: 'scroll'\n },\n topRight: {\n points: ['br', 'tr'],\n offset: [0, -4],\n overflow: {\n adjustX: adjustX,\n adjustY: 1\n },\n htmlRegion: 'scroll'\n }\n };\n};\nvar SelectTrigger = function SelectTrigger(props, ref) {\n var prefixCls = props.prefixCls,\n disabled = props.disabled,\n visible = props.visible,\n children = props.children,\n popupElement = props.popupElement,\n animation = props.animation,\n transitionName = props.transitionName,\n dropdownStyle = props.dropdownStyle,\n dropdownClassName = props.dropdownClassName,\n _props$direction = props.direction,\n direction = _props$direction === void 0 ? 'ltr' : _props$direction,\n placement = props.placement,\n builtinPlacements = props.builtinPlacements,\n dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,\n dropdownRender = props.dropdownRender,\n dropdownAlign = props.dropdownAlign,\n getPopupContainer = props.getPopupContainer,\n empty = props.empty,\n getTriggerDOMNode = props.getTriggerDOMNode,\n onPopupVisibleChange = props.onPopupVisibleChange,\n onPopupMouseEnter = props.onPopupMouseEnter,\n restProps = _objectWithoutProperties(props, _excluded);\n var dropdownPrefixCls = \"\".concat(prefixCls, \"-dropdown\");\n var popupNode = popupElement;\n if (dropdownRender) {\n popupNode = dropdownRender(popupElement);\n }\n var mergedBuiltinPlacements = React.useMemo(function () {\n return builtinPlacements || getBuiltInPlacements(dropdownMatchSelectWidth);\n }, [builtinPlacements, dropdownMatchSelectWidth]);\n\n // ===================== Motion ======================\n var mergedTransitionName = animation ? \"\".concat(dropdownPrefixCls, \"-\").concat(animation) : transitionName;\n\n // =================== Popup Width ===================\n var isNumberPopupWidth = typeof dropdownMatchSelectWidth === 'number';\n var stretch = React.useMemo(function () {\n if (isNumberPopupWidth) {\n return null;\n }\n return dropdownMatchSelectWidth === false ? 'minWidth' : 'width';\n }, [dropdownMatchSelectWidth, isNumberPopupWidth]);\n var popupStyle = dropdownStyle;\n if (isNumberPopupWidth) {\n popupStyle = _objectSpread(_objectSpread({}, popupStyle), {}, {\n width: dropdownMatchSelectWidth\n });\n }\n\n // ======================= Ref =======================\n var popupRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return {\n getPopupElement: function getPopupElement() {\n return popupRef.current;\n }\n };\n });\n return /*#__PURE__*/React.createElement(Trigger, _extends({}, restProps, {\n showAction: onPopupVisibleChange ? ['click'] : [],\n hideAction: onPopupVisibleChange ? ['click'] : [],\n popupPlacement: placement || (direction === 'rtl' ? 'bottomRight' : 'bottomLeft'),\n builtinPlacements: mergedBuiltinPlacements,\n prefixCls: dropdownPrefixCls,\n popupTransitionName: mergedTransitionName,\n popup: /*#__PURE__*/React.createElement(\"div\", {\n ref: popupRef,\n onMouseEnter: onPopupMouseEnter\n }, popupNode),\n stretch: stretch,\n popupAlign: dropdownAlign,\n popupVisible: visible,\n getPopupContainer: getPopupContainer,\n popupClassName: classNames(dropdownClassName, _defineProperty({}, \"\".concat(dropdownPrefixCls, \"-empty\"), empty)),\n popupStyle: popupStyle,\n getTriggerDOMNode: getTriggerDOMNode,\n onPopupVisibleChange: onPopupVisibleChange\n }), children);\n};\nvar RefSelectTrigger = /*#__PURE__*/React.forwardRef(SelectTrigger);\nif (process.env.NODE_ENV !== 'production') {\n RefSelectTrigger.displayName = 'SelectTrigger';\n}\nexport default RefSelectTrigger;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _toArray from \"@babel/runtime/helpers/esm/toArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport warning from \"rc-util/es/warning\";\nfunction getKey(data, index) {\n var key = data.key;\n var value;\n if ('value' in data) {\n value = data.value;\n }\n if (key !== null && key !== undefined) {\n return key;\n }\n if (value !== undefined) {\n return value;\n }\n return \"rc-index-key-\".concat(index);\n}\nexport function fillFieldNames(fieldNames, childrenAsData) {\n var _ref = fieldNames || {},\n label = _ref.label,\n value = _ref.value,\n options = _ref.options,\n groupLabel = _ref.groupLabel;\n var mergedLabel = label || (childrenAsData ? 'children' : 'label');\n return {\n label: mergedLabel,\n value: value || 'value',\n options: options || 'options',\n groupLabel: groupLabel || mergedLabel\n };\n}\n\n/**\n * Flat options into flatten list.\n * We use `optionOnly` here is aim to avoid user use nested option group.\n * Here is simply set `key` to the index if not provided.\n */\nexport function flattenOptions(options) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n fieldNames = _ref2.fieldNames,\n childrenAsData = _ref2.childrenAsData;\n var flattenList = [];\n var _fillFieldNames = fillFieldNames(fieldNames, false),\n fieldLabel = _fillFieldNames.label,\n fieldValue = _fillFieldNames.value,\n fieldOptions = _fillFieldNames.options,\n groupLabel = _fillFieldNames.groupLabel;\n function dig(list, isGroupOption) {\n if (!Array.isArray(list)) {\n return;\n }\n list.forEach(function (data) {\n if (isGroupOption || !(fieldOptions in data)) {\n var value = data[fieldValue];\n\n // Option\n flattenList.push({\n key: getKey(data, flattenList.length),\n groupOption: isGroupOption,\n data: data,\n label: data[fieldLabel],\n value: value\n });\n } else {\n var grpLabel = data[groupLabel];\n if (grpLabel === undefined && childrenAsData) {\n grpLabel = data.label;\n }\n\n // Option Group\n flattenList.push({\n key: getKey(data, flattenList.length),\n group: true,\n data: data,\n label: grpLabel\n });\n dig(data[fieldOptions], true);\n }\n });\n }\n dig(options, false);\n return flattenList;\n}\n\n/**\n * Inject `props` into `option` for legacy usage\n */\nexport function injectPropsWithOption(option) {\n var newOption = _objectSpread({}, option);\n if (!('props' in newOption)) {\n Object.defineProperty(newOption, 'props', {\n get: function get() {\n warning(false, 'Return type is option instead of Option instance. Please read value directly instead of reading from `props`.');\n return newOption;\n }\n });\n }\n return newOption;\n}\nexport var getSeparatedContent = function getSeparatedContent(text, tokens, end) {\n if (!tokens || !tokens.length) {\n return null;\n }\n var match = false;\n var separate = function separate(str, _ref3) {\n var _ref4 = _toArray(_ref3),\n token = _ref4[0],\n restTokens = _ref4.slice(1);\n if (!token) {\n return [str];\n }\n var list = str.split(token);\n match = match || list.length > 1;\n return list.reduce(function (prevList, unitStr) {\n return [].concat(_toConsumableArray(prevList), _toConsumableArray(separate(unitStr, restTokens)));\n }, []).filter(Boolean);\n };\n var list = separate(text, tokens);\n if (match) {\n return typeof end !== 'undefined' ? list.slice(0, end) : list;\n } else {\n return null;\n }\n};","import * as React from 'react';\n\n// Use any here since we do not get the type during compilation\n\nvar SelectContext = /*#__PURE__*/React.createContext(null);\nexport default SelectContext;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"id\", \"prefixCls\", \"className\", \"showSearch\", \"tagRender\", \"direction\", \"omitDomProps\", \"displayValues\", \"onDisplayValuesChange\", \"emptyOptions\", \"notFoundContent\", \"onClear\", \"mode\", \"disabled\", \"loading\", \"getInputElement\", \"getRawInputElement\", \"open\", \"defaultOpen\", \"onDropdownVisibleChange\", \"activeValue\", \"onActiveValueChange\", \"activeDescendantId\", \"searchValue\", \"autoClearSearchValue\", \"onSearch\", \"onSearchSplit\", \"tokenSeparators\", \"allowClear\", \"suffixIcon\", \"clearIcon\", \"OptionList\", \"animation\", \"transitionName\", \"dropdownStyle\", \"dropdownClassName\", \"dropdownMatchSelectWidth\", \"dropdownRender\", \"dropdownAlign\", \"placement\", \"builtinPlacements\", \"getPopupContainer\", \"showAction\", \"onFocus\", \"onBlur\", \"onKeyUp\", \"onKeyDown\", \"onMouseDown\"];\nimport classNames from 'classnames';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport isMobile from \"rc-util/es/isMobile\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { useAllowClear } from \"./hooks/useAllowClear\";\nimport { BaseSelectContext } from \"./hooks/useBaseProps\";\nimport useDelayReset from \"./hooks/useDelayReset\";\nimport useLock from \"./hooks/useLock\";\nimport useSelectTriggerControl from \"./hooks/useSelectTriggerControl\";\nimport Selector from \"./Selector\";\nimport SelectTrigger from \"./SelectTrigger\";\nimport TransBtn from \"./TransBtn\";\nimport { getSeparatedContent } from \"./utils/valueUtil\";\nimport SelectContext from \"./SelectContext\";\nvar DEFAULT_OMIT_PROPS = ['value', 'onChange', 'removeIcon', 'placeholder', 'autoFocus', 'maxTagCount', 'maxTagTextLength', 'maxTagPlaceholder', 'choiceTransitionName', 'onInputKeyDown', 'onPopupScroll', 'tabIndex'];\nexport var isMultiple = function isMultiple(mode) {\n return mode === 'tags' || mode === 'multiple';\n};\nvar BaseSelect = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _customizeRawInputEle, _classNames2;\n var id = props.id,\n prefixCls = props.prefixCls,\n className = props.className,\n showSearch = props.showSearch,\n tagRender = props.tagRender,\n direction = props.direction,\n omitDomProps = props.omitDomProps,\n displayValues = props.displayValues,\n onDisplayValuesChange = props.onDisplayValuesChange,\n emptyOptions = props.emptyOptions,\n _props$notFoundConten = props.notFoundContent,\n notFoundContent = _props$notFoundConten === void 0 ? 'Not Found' : _props$notFoundConten,\n onClear = props.onClear,\n mode = props.mode,\n disabled = props.disabled,\n loading = props.loading,\n getInputElement = props.getInputElement,\n getRawInputElement = props.getRawInputElement,\n open = props.open,\n defaultOpen = props.defaultOpen,\n onDropdownVisibleChange = props.onDropdownVisibleChange,\n activeValue = props.activeValue,\n onActiveValueChange = props.onActiveValueChange,\n activeDescendantId = props.activeDescendantId,\n searchValue = props.searchValue,\n autoClearSearchValue = props.autoClearSearchValue,\n onSearch = props.onSearch,\n onSearchSplit = props.onSearchSplit,\n tokenSeparators = props.tokenSeparators,\n allowClear = props.allowClear,\n suffixIcon = props.suffixIcon,\n clearIcon = props.clearIcon,\n OptionList = props.OptionList,\n animation = props.animation,\n transitionName = props.transitionName,\n dropdownStyle = props.dropdownStyle,\n dropdownClassName = props.dropdownClassName,\n dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,\n dropdownRender = props.dropdownRender,\n dropdownAlign = props.dropdownAlign,\n placement = props.placement,\n builtinPlacements = props.builtinPlacements,\n getPopupContainer = props.getPopupContainer,\n _props$showAction = props.showAction,\n showAction = _props$showAction === void 0 ? [] : _props$showAction,\n onFocus = props.onFocus,\n onBlur = props.onBlur,\n onKeyUp = props.onKeyUp,\n onKeyDown = props.onKeyDown,\n onMouseDown = props.onMouseDown,\n restProps = _objectWithoutProperties(props, _excluded);\n\n // ============================== MISC ==============================\n var multiple = isMultiple(mode);\n var mergedShowSearch = (showSearch !== undefined ? showSearch : multiple) || mode === 'combobox';\n var domProps = _objectSpread({}, restProps);\n DEFAULT_OMIT_PROPS.forEach(function (propName) {\n delete domProps[propName];\n });\n omitDomProps === null || omitDomProps === void 0 || omitDomProps.forEach(function (propName) {\n delete domProps[propName];\n });\n\n // ============================= Mobile =============================\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n mobile = _React$useState2[0],\n setMobile = _React$useState2[1];\n React.useEffect(function () {\n // Only update on the client side\n setMobile(isMobile());\n }, []);\n\n // ============================== Refs ==============================\n var containerRef = React.useRef(null);\n var selectorDomRef = React.useRef(null);\n var triggerRef = React.useRef(null);\n var selectorRef = React.useRef(null);\n var listRef = React.useRef(null);\n var blurRef = React.useRef(false);\n\n /** Used for component focused management */\n var _useDelayReset = useDelayReset(),\n _useDelayReset2 = _slicedToArray(_useDelayReset, 3),\n mockFocused = _useDelayReset2[0],\n setMockFocused = _useDelayReset2[1],\n cancelSetMockFocused = _useDelayReset2[2];\n\n // =========================== Imperative ===========================\n React.useImperativeHandle(ref, function () {\n var _selectorRef$current, _selectorRef$current2;\n return {\n focus: (_selectorRef$current = selectorRef.current) === null || _selectorRef$current === void 0 ? void 0 : _selectorRef$current.focus,\n blur: (_selectorRef$current2 = selectorRef.current) === null || _selectorRef$current2 === void 0 ? void 0 : _selectorRef$current2.blur,\n scrollTo: function scrollTo(arg) {\n var _listRef$current;\n return (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.scrollTo(arg);\n }\n };\n });\n\n // ========================== Search Value ==========================\n var mergedSearchValue = React.useMemo(function () {\n var _displayValues$;\n if (mode !== 'combobox') {\n return searchValue;\n }\n var val = (_displayValues$ = displayValues[0]) === null || _displayValues$ === void 0 ? void 0 : _displayValues$.value;\n return typeof val === 'string' || typeof val === 'number' ? String(val) : '';\n }, [searchValue, mode, displayValues]);\n\n // ========================== Custom Input ==========================\n // Only works in `combobox`\n var customizeInputElement = mode === 'combobox' && typeof getInputElement === 'function' && getInputElement() || null;\n\n // Used for customize replacement for `rc-cascader`\n var customizeRawInputElement = typeof getRawInputElement === 'function' && getRawInputElement();\n var customizeRawInputRef = useComposeRef(selectorDomRef, customizeRawInputElement === null || customizeRawInputElement === void 0 || (_customizeRawInputEle = customizeRawInputElement.props) === null || _customizeRawInputEle === void 0 ? void 0 : _customizeRawInputEle.ref);\n\n // ============================== Open ==============================\n // SSR not support Portal which means we need delay `open` for the first time render\n var _React$useState3 = React.useState(false),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n rendered = _React$useState4[0],\n setRendered = _React$useState4[1];\n useLayoutEffect(function () {\n setRendered(true);\n }, []);\n var _useMergedState = useMergedState(false, {\n defaultValue: defaultOpen,\n value: open\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n innerOpen = _useMergedState2[0],\n setInnerOpen = _useMergedState2[1];\n var mergedOpen = rendered ? innerOpen : false;\n\n // Not trigger `open` in `combobox` when `notFoundContent` is empty\n var emptyListContent = !notFoundContent && emptyOptions;\n if (disabled || emptyListContent && mergedOpen && mode === 'combobox') {\n mergedOpen = false;\n }\n var triggerOpen = emptyListContent ? false : mergedOpen;\n var onToggleOpen = React.useCallback(function (newOpen) {\n var nextOpen = newOpen !== undefined ? newOpen : !mergedOpen;\n if (!disabled) {\n setInnerOpen(nextOpen);\n if (mergedOpen !== nextOpen) {\n onDropdownVisibleChange === null || onDropdownVisibleChange === void 0 || onDropdownVisibleChange(nextOpen);\n }\n }\n }, [disabled, mergedOpen, setInnerOpen, onDropdownVisibleChange]);\n\n // ============================= Search =============================\n var tokenWithEnter = React.useMemo(function () {\n return (tokenSeparators || []).some(function (tokenSeparator) {\n return ['\\n', '\\r\\n'].includes(tokenSeparator);\n });\n }, [tokenSeparators]);\n var _ref = React.useContext(SelectContext) || {},\n maxCount = _ref.maxCount,\n rawValues = _ref.rawValues;\n var onInternalSearch = function onInternalSearch(searchText, fromTyping, isCompositing) {\n if ((rawValues === null || rawValues === void 0 ? void 0 : rawValues.size) >= maxCount) {\n return;\n }\n var ret = true;\n var newSearchText = searchText;\n onActiveValueChange === null || onActiveValueChange === void 0 || onActiveValueChange(null);\n var separatedList = getSeparatedContent(searchText, tokenSeparators, maxCount && maxCount - rawValues.size);\n\n // Check if match the `tokenSeparators`\n var patchLabels = isCompositing ? null : separatedList;\n\n // Ignore combobox since it's not split-able\n if (mode !== 'combobox' && patchLabels) {\n newSearchText = '';\n onSearchSplit === null || onSearchSplit === void 0 || onSearchSplit(patchLabels);\n\n // Should close when paste finish\n onToggleOpen(false);\n\n // Tell Selector that break next actions\n ret = false;\n }\n if (onSearch && mergedSearchValue !== newSearchText) {\n onSearch(newSearchText, {\n source: fromTyping ? 'typing' : 'effect'\n });\n }\n return ret;\n };\n\n // Only triggered when menu is closed & mode is tags\n // If menu is open, OptionList will take charge\n // If mode isn't tags, press enter is not meaningful when you can't see any option\n var onInternalSearchSubmit = function onInternalSearchSubmit(searchText) {\n // prevent empty tags from appearing when you click the Enter button\n if (!searchText || !searchText.trim()) {\n return;\n }\n onSearch(searchText, {\n source: 'submit'\n });\n };\n\n // Close will clean up single mode search text\n React.useEffect(function () {\n if (!mergedOpen && !multiple && mode !== 'combobox') {\n onInternalSearch('', false, false);\n }\n }, [mergedOpen]);\n\n // ============================ Disabled ============================\n // Close dropdown & remove focus state when disabled change\n React.useEffect(function () {\n if (innerOpen && disabled) {\n setInnerOpen(false);\n }\n\n // After onBlur is triggered, the focused does not need to be reset\n if (disabled && !blurRef.current) {\n setMockFocused(false);\n }\n }, [disabled]);\n\n // ============================ Keyboard ============================\n /**\n * We record input value here to check if can press to clean up by backspace\n * - null: Key is not down, this is reset by key up\n * - true: Search text is empty when first time backspace down\n * - false: Search text is not empty when first time backspace down\n */\n var _useLock = useLock(),\n _useLock2 = _slicedToArray(_useLock, 2),\n getClearLock = _useLock2[0],\n setClearLock = _useLock2[1];\n\n // KeyDown\n var onInternalKeyDown = function onInternalKeyDown(event) {\n var clearLock = getClearLock();\n var which = event.which;\n if (which === KeyCode.ENTER) {\n // Do not submit form when type in the input\n if (mode !== 'combobox') {\n event.preventDefault();\n }\n\n // We only manage open state here, close logic should handle by list component\n if (!mergedOpen) {\n onToggleOpen(true);\n }\n }\n setClearLock(!!mergedSearchValue);\n\n // Remove value by `backspace`\n if (which === KeyCode.BACKSPACE && !clearLock && multiple && !mergedSearchValue && displayValues.length) {\n var cloneDisplayValues = _toConsumableArray(displayValues);\n var removedDisplayValue = null;\n for (var i = cloneDisplayValues.length - 1; i >= 0; i -= 1) {\n var current = cloneDisplayValues[i];\n if (!current.disabled) {\n cloneDisplayValues.splice(i, 1);\n removedDisplayValue = current;\n break;\n }\n }\n if (removedDisplayValue) {\n onDisplayValuesChange(cloneDisplayValues, {\n type: 'remove',\n values: [removedDisplayValue]\n });\n }\n }\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n if (mergedOpen) {\n var _listRef$current2;\n (_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 || _listRef$current2.onKeyDown.apply(_listRef$current2, [event].concat(rest));\n }\n onKeyDown === null || onKeyDown === void 0 || onKeyDown.apply(void 0, [event].concat(rest));\n };\n\n // KeyUp\n var onInternalKeyUp = function onInternalKeyUp(event) {\n for (var _len2 = arguments.length, rest = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n rest[_key2 - 1] = arguments[_key2];\n }\n if (mergedOpen) {\n var _listRef$current3;\n (_listRef$current3 = listRef.current) === null || _listRef$current3 === void 0 || _listRef$current3.onKeyUp.apply(_listRef$current3, [event].concat(rest));\n }\n onKeyUp === null || onKeyUp === void 0 || onKeyUp.apply(void 0, [event].concat(rest));\n };\n\n // ============================ Selector ============================\n var onSelectorRemove = function onSelectorRemove(val) {\n var newValues = displayValues.filter(function (i) {\n return i !== val;\n });\n onDisplayValuesChange(newValues, {\n type: 'remove',\n values: [val]\n });\n };\n\n // ========================== Focus / Blur ==========================\n /** Record real focus status */\n var focusRef = React.useRef(false);\n var onContainerFocus = function onContainerFocus() {\n setMockFocused(true);\n if (!disabled) {\n if (onFocus && !focusRef.current) {\n onFocus.apply(void 0, arguments);\n }\n\n // `showAction` should handle `focus` if set\n if (showAction.includes('focus')) {\n onToggleOpen(true);\n }\n }\n focusRef.current = true;\n };\n var onContainerBlur = function onContainerBlur() {\n blurRef.current = true;\n setMockFocused(false, function () {\n focusRef.current = false;\n blurRef.current = false;\n onToggleOpen(false);\n });\n if (disabled) {\n return;\n }\n if (mergedSearchValue) {\n // `tags` mode should move `searchValue` into values\n if (mode === 'tags') {\n onSearch(mergedSearchValue, {\n source: 'submit'\n });\n } else if (mode === 'multiple') {\n // `multiple` mode only clean the search value but not trigger event\n onSearch('', {\n source: 'blur'\n });\n }\n }\n if (onBlur) {\n onBlur.apply(void 0, arguments);\n }\n };\n\n // Give focus back of Select\n var activeTimeoutIds = [];\n React.useEffect(function () {\n return function () {\n activeTimeoutIds.forEach(function (timeoutId) {\n return clearTimeout(timeoutId);\n });\n activeTimeoutIds.splice(0, activeTimeoutIds.length);\n };\n }, []);\n var onInternalMouseDown = function onInternalMouseDown(event) {\n var _triggerRef$current;\n var target = event.target;\n var popupElement = (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.getPopupElement();\n\n // We should give focus back to selector if clicked item is not focusable\n if (popupElement && popupElement.contains(target)) {\n var timeoutId = setTimeout(function () {\n var index = activeTimeoutIds.indexOf(timeoutId);\n if (index !== -1) {\n activeTimeoutIds.splice(index, 1);\n }\n cancelSetMockFocused();\n if (!mobile && !popupElement.contains(document.activeElement)) {\n var _selectorRef$current3;\n (_selectorRef$current3 = selectorRef.current) === null || _selectorRef$current3 === void 0 || _selectorRef$current3.focus();\n }\n });\n activeTimeoutIds.push(timeoutId);\n }\n for (var _len3 = arguments.length, restArgs = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n restArgs[_key3 - 1] = arguments[_key3];\n }\n onMouseDown === null || onMouseDown === void 0 || onMouseDown.apply(void 0, [event].concat(restArgs));\n };\n\n // ============================ Dropdown ============================\n var _React$useState5 = React.useState({}),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n forceUpdate = _React$useState6[1];\n // We need force update here since popup dom is render async\n function onPopupMouseEnter() {\n forceUpdate({});\n }\n\n // Used for raw custom input trigger\n var onTriggerVisibleChange;\n if (customizeRawInputElement) {\n onTriggerVisibleChange = function onTriggerVisibleChange(newOpen) {\n onToggleOpen(newOpen);\n };\n }\n\n // Close when click on non-select element\n useSelectTriggerControl(function () {\n var _triggerRef$current2;\n return [containerRef.current, (_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : _triggerRef$current2.getPopupElement()];\n }, triggerOpen, onToggleOpen, !!customizeRawInputElement);\n\n // ============================ Context =============================\n var baseSelectContext = React.useMemo(function () {\n return _objectSpread(_objectSpread({}, props), {}, {\n notFoundContent: notFoundContent,\n open: mergedOpen,\n triggerOpen: triggerOpen,\n id: id,\n showSearch: mergedShowSearch,\n multiple: multiple,\n toggleOpen: onToggleOpen\n });\n }, [props, notFoundContent, triggerOpen, mergedOpen, id, mergedShowSearch, multiple, onToggleOpen]);\n\n // ==================================================================\n // == Render ==\n // ==================================================================\n\n // ============================= Arrow ==============================\n var showSuffixIcon = !!suffixIcon || loading;\n var arrowNode;\n if (showSuffixIcon) {\n arrowNode = /*#__PURE__*/React.createElement(TransBtn, {\n className: classNames(\"\".concat(prefixCls, \"-arrow\"), _defineProperty({}, \"\".concat(prefixCls, \"-arrow-loading\"), loading)),\n customizeIcon: suffixIcon,\n customizeIconProps: {\n loading: loading,\n searchValue: mergedSearchValue,\n open: mergedOpen,\n focused: mockFocused,\n showSearch: mergedShowSearch\n }\n });\n }\n\n // ============================= Clear ==============================\n var onClearMouseDown = function onClearMouseDown() {\n var _selectorRef$current4;\n onClear === null || onClear === void 0 || onClear();\n (_selectorRef$current4 = selectorRef.current) === null || _selectorRef$current4 === void 0 || _selectorRef$current4.focus();\n onDisplayValuesChange([], {\n type: 'clear',\n values: displayValues\n });\n onInternalSearch('', false, false);\n };\n var _useAllowClear = useAllowClear(prefixCls, onClearMouseDown, displayValues, allowClear, clearIcon, disabled, mergedSearchValue, mode),\n mergedAllowClear = _useAllowClear.allowClear,\n clearNode = _useAllowClear.clearIcon;\n\n // =========================== OptionList ===========================\n var optionList = /*#__PURE__*/React.createElement(OptionList, {\n ref: listRef\n });\n\n // ============================= Select =============================\n var mergedClassName = classNames(prefixCls, className, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-focused\"), mockFocused), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-multiple\"), multiple), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-single\"), !multiple), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-allow-clear\"), allowClear), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-show-arrow\"), showSuffixIcon), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-loading\"), loading), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-open\"), mergedOpen), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-customize-input\"), customizeInputElement), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-show-search\"), mergedShowSearch), _classNames2));\n\n // >>> Selector\n var selectorNode = /*#__PURE__*/React.createElement(SelectTrigger, {\n ref: triggerRef,\n disabled: disabled,\n prefixCls: prefixCls,\n visible: triggerOpen,\n popupElement: optionList,\n animation: animation,\n transitionName: transitionName,\n dropdownStyle: dropdownStyle,\n dropdownClassName: dropdownClassName,\n direction: direction,\n dropdownMatchSelectWidth: dropdownMatchSelectWidth,\n dropdownRender: dropdownRender,\n dropdownAlign: dropdownAlign,\n placement: placement,\n builtinPlacements: builtinPlacements,\n getPopupContainer: getPopupContainer,\n empty: emptyOptions,\n getTriggerDOMNode: function getTriggerDOMNode() {\n return selectorDomRef.current;\n },\n onPopupVisibleChange: onTriggerVisibleChange,\n onPopupMouseEnter: onPopupMouseEnter\n }, customizeRawInputElement ? /*#__PURE__*/React.cloneElement(customizeRawInputElement, {\n ref: customizeRawInputRef\n }) : /*#__PURE__*/React.createElement(Selector, _extends({}, props, {\n domRef: selectorDomRef,\n prefixCls: prefixCls,\n inputElement: customizeInputElement,\n ref: selectorRef,\n id: id,\n showSearch: mergedShowSearch,\n autoClearSearchValue: autoClearSearchValue,\n mode: mode,\n activeDescendantId: activeDescendantId,\n tagRender: tagRender,\n values: displayValues,\n open: mergedOpen,\n onToggleOpen: onToggleOpen,\n activeValue: activeValue,\n searchValue: mergedSearchValue,\n onSearch: onInternalSearch,\n onSearchSubmit: onInternalSearchSubmit,\n onRemove: onSelectorRemove,\n tokenWithEnter: tokenWithEnter\n })));\n\n // >>> Render\n var renderNode;\n\n // Render raw\n if (customizeRawInputElement) {\n renderNode = selectorNode;\n } else {\n renderNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n className: mergedClassName\n }, domProps, {\n ref: containerRef,\n onMouseDown: onInternalMouseDown,\n onKeyDown: onInternalKeyDown,\n onKeyUp: onInternalKeyUp,\n onFocus: onContainerFocus,\n onBlur: onContainerBlur\n }), mockFocused && !mergedOpen && /*#__PURE__*/React.createElement(\"span\", {\n \"aria-live\": \"polite\",\n style: {\n width: 0,\n height: 0,\n position: 'absolute',\n overflow: 'hidden',\n opacity: 0\n }\n }, \"\".concat(displayValues.map(function (_ref2) {\n var label = _ref2.label,\n value = _ref2.value;\n return ['number', 'string'].includes(_typeof(label)) ? label : value;\n }).join(', '))), selectorNode, arrowNode, mergedAllowClear && clearNode);\n }\n return /*#__PURE__*/React.createElement(BaseSelectContext.Provider, {\n value: baseSelectContext\n }, renderNode);\n});\n\n// Set display name for dev\nif (process.env.NODE_ENV !== 'production') {\n BaseSelect.displayName = 'BaseSelect';\n}\nexport default BaseSelect;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n\n/**\n * Similar with `useLock`, but this hook will always execute last value.\n * When set to `true`, it will keep `true` for a short time even if `false` is set.\n */\nexport default function useDelayReset() {\n var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n bool = _React$useState2[0],\n setBool = _React$useState2[1];\n var delayRef = React.useRef(null);\n var cancelLatest = function cancelLatest() {\n window.clearTimeout(delayRef.current);\n };\n React.useEffect(function () {\n return cancelLatest;\n }, []);\n var delaySetBool = function delaySetBool(value, callback) {\n cancelLatest();\n delayRef.current = window.setTimeout(function () {\n setBool(value);\n if (callback) {\n callback();\n }\n }, timeout);\n };\n return [bool, delaySetBool, cancelLatest];\n}","import * as React from 'react';\nexport default function useSelectTriggerControl(elements, open, triggerOpen, customizedTrigger) {\n var propsRef = React.useRef(null);\n propsRef.current = {\n open: open,\n triggerOpen: triggerOpen,\n customizedTrigger: customizedTrigger\n };\n React.useEffect(function () {\n function onGlobalMouseDown(event) {\n var _propsRef$current;\n // If trigger is customized, Trigger will take control of popupVisible\n if ((_propsRef$current = propsRef.current) !== null && _propsRef$current !== void 0 && _propsRef$current.customizedTrigger) {\n return;\n }\n var target = event.target;\n if (target.shadowRoot && event.composed) {\n target = event.composedPath()[0] || target;\n }\n if (propsRef.current.open && elements().filter(function (element) {\n return element;\n }).every(function (element) {\n return !element.contains(target) && element !== target;\n })) {\n // Should trigger close\n propsRef.current.triggerOpen(false);\n }\n }\n window.addEventListener('mousedown', onGlobalMouseDown);\n return function () {\n return window.removeEventListener('mousedown', onGlobalMouseDown);\n };\n }, []);\n}","/* istanbul ignore file */\n\n/** This is a placeholder, not real render in dom */\nvar OptGroup = function OptGroup() {\n return null;\n};\nOptGroup.isSelectOptGroup = true;\nexport default OptGroup;","/* istanbul ignore file */\n\n/** This is a placeholder, not real render in dom */\nvar Option = function Option() {\n return null;\n};\nOption.isSelectOption = true;\nexport default Option;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar _excluded = [\"disabled\", \"title\", \"children\", \"style\", \"className\"];\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport omit from \"rc-util/es/omit\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport List from 'rc-virtual-list';\nimport * as React from 'react';\nimport { useEffect } from 'react';\nimport SelectContext from \"./SelectContext\";\nimport TransBtn from \"./TransBtn\";\nimport useBaseProps from \"./hooks/useBaseProps\";\nimport { isPlatformMac } from \"./utils/platformUtil\";\n\n// export interface OptionListProps {\n\nfunction isTitleType(content) {\n return typeof content === 'string' || typeof content === 'number';\n}\n\n/**\n * Using virtual list of option display.\n * Will fallback to dom if use customize render.\n */\nvar OptionList = function OptionList(_, ref) {\n var _useBaseProps = useBaseProps(),\n prefixCls = _useBaseProps.prefixCls,\n id = _useBaseProps.id,\n open = _useBaseProps.open,\n multiple = _useBaseProps.multiple,\n mode = _useBaseProps.mode,\n searchValue = _useBaseProps.searchValue,\n toggleOpen = _useBaseProps.toggleOpen,\n notFoundContent = _useBaseProps.notFoundContent,\n onPopupScroll = _useBaseProps.onPopupScroll;\n var _React$useContext = React.useContext(SelectContext),\n maxCount = _React$useContext.maxCount,\n flattenOptions = _React$useContext.flattenOptions,\n onActiveValue = _React$useContext.onActiveValue,\n defaultActiveFirstOption = _React$useContext.defaultActiveFirstOption,\n onSelect = _React$useContext.onSelect,\n menuItemSelectedIcon = _React$useContext.menuItemSelectedIcon,\n rawValues = _React$useContext.rawValues,\n fieldNames = _React$useContext.fieldNames,\n virtual = _React$useContext.virtual,\n direction = _React$useContext.direction,\n listHeight = _React$useContext.listHeight,\n listItemHeight = _React$useContext.listItemHeight,\n optionRender = _React$useContext.optionRender;\n var itemPrefixCls = \"\".concat(prefixCls, \"-item\");\n var memoFlattenOptions = useMemo(function () {\n return flattenOptions;\n }, [open, flattenOptions], function (prev, next) {\n return next[0] && prev[1] !== next[1];\n });\n\n // =========================== List ===========================\n var listRef = React.useRef(null);\n var overMaxCount = React.useMemo(function () {\n return multiple && typeof maxCount !== 'undefined' && (rawValues === null || rawValues === void 0 ? void 0 : rawValues.size) >= maxCount;\n }, [multiple, maxCount, rawValues === null || rawValues === void 0 ? void 0 : rawValues.size]);\n var onListMouseDown = function onListMouseDown(event) {\n event.preventDefault();\n };\n var scrollIntoView = function scrollIntoView(args) {\n var _listRef$current;\n (_listRef$current = listRef.current) === null || _listRef$current === void 0 || _listRef$current.scrollTo(typeof args === 'number' ? {\n index: args\n } : args);\n };\n\n // ========================== Active ==========================\n var getEnabledActiveIndex = function getEnabledActiveIndex(index) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var len = memoFlattenOptions.length;\n for (var i = 0; i < len; i += 1) {\n var current = (index + i * offset + len) % len;\n var _ref = memoFlattenOptions[current] || {},\n group = _ref.group,\n data = _ref.data;\n if (!group && !(data !== null && data !== void 0 && data.disabled) && !overMaxCount) {\n return current;\n }\n }\n return -1;\n };\n var _React$useState = React.useState(function () {\n return getEnabledActiveIndex(0);\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n activeIndex = _React$useState2[0],\n setActiveIndex = _React$useState2[1];\n var setActive = function setActive(index) {\n var fromKeyboard = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n setActiveIndex(index);\n var info = {\n source: fromKeyboard ? 'keyboard' : 'mouse'\n };\n\n // Trigger active event\n var flattenItem = memoFlattenOptions[index];\n if (!flattenItem) {\n onActiveValue(null, -1, info);\n return;\n }\n onActiveValue(flattenItem.value, index, info);\n };\n\n // Auto active first item when list length or searchValue changed\n useEffect(function () {\n setActive(defaultActiveFirstOption !== false ? getEnabledActiveIndex(0) : -1);\n }, [memoFlattenOptions.length, searchValue]);\n\n // https://github.com/ant-design/ant-design/issues/34975\n var isSelected = React.useCallback(function (value) {\n return rawValues.has(value) && mode !== 'combobox';\n }, [mode, _toConsumableArray(rawValues).toString(), rawValues.size]);\n\n // Auto scroll to item position in single mode\n useEffect(function () {\n /**\n * React will skip `onChange` when component update.\n * `setActive` function will call root accessibility state update which makes re-render.\n * So we need to delay to let Input component trigger onChange first.\n */\n var timeoutId = setTimeout(function () {\n if (!multiple && open && rawValues.size === 1) {\n var value = Array.from(rawValues)[0];\n var index = memoFlattenOptions.findIndex(function (_ref2) {\n var data = _ref2.data;\n return data.value === value;\n });\n if (index !== -1) {\n setActive(index);\n scrollIntoView(index);\n }\n }\n });\n\n // Force trigger scrollbar visible when open\n if (open) {\n var _listRef$current2;\n (_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 || _listRef$current2.scrollTo(undefined);\n }\n return function () {\n return clearTimeout(timeoutId);\n };\n }, [open, searchValue]);\n\n // ========================== Values ==========================\n var onSelectValue = function onSelectValue(value) {\n if (value !== undefined) {\n onSelect(value, {\n selected: !rawValues.has(value)\n });\n }\n\n // Single mode should always close by select\n if (!multiple) {\n toggleOpen(false);\n }\n };\n\n // ========================= Keyboard =========================\n React.useImperativeHandle(ref, function () {\n return {\n onKeyDown: function onKeyDown(event) {\n var which = event.which,\n ctrlKey = event.ctrlKey;\n switch (which) {\n // >>> Arrow keys & ctrl + n/p on Mac\n case KeyCode.N:\n case KeyCode.P:\n case KeyCode.UP:\n case KeyCode.DOWN:\n {\n var offset = 0;\n if (which === KeyCode.UP) {\n offset = -1;\n } else if (which === KeyCode.DOWN) {\n offset = 1;\n } else if (isPlatformMac() && ctrlKey) {\n if (which === KeyCode.N) {\n offset = 1;\n } else if (which === KeyCode.P) {\n offset = -1;\n }\n }\n if (offset !== 0) {\n var nextActiveIndex = getEnabledActiveIndex(activeIndex + offset, offset);\n scrollIntoView(nextActiveIndex);\n setActive(nextActiveIndex, true);\n }\n break;\n }\n\n // >>> Select\n case KeyCode.ENTER:\n {\n var _item$data;\n // value\n var item = memoFlattenOptions[activeIndex];\n if (item && !(item !== null && item !== void 0 && (_item$data = item.data) !== null && _item$data !== void 0 && _item$data.disabled) && !overMaxCount) {\n onSelectValue(item.value);\n } else {\n onSelectValue(undefined);\n }\n if (open) {\n event.preventDefault();\n }\n break;\n }\n\n // >>> Close\n case KeyCode.ESC:\n {\n toggleOpen(false);\n if (open) {\n event.stopPropagation();\n }\n }\n }\n },\n onKeyUp: function onKeyUp() {},\n scrollTo: function scrollTo(index) {\n scrollIntoView(index);\n }\n };\n });\n\n // ========================== Render ==========================\n if (memoFlattenOptions.length === 0) {\n return /*#__PURE__*/React.createElement(\"div\", {\n role: \"listbox\",\n id: \"\".concat(id, \"_list\"),\n className: \"\".concat(itemPrefixCls, \"-empty\"),\n onMouseDown: onListMouseDown\n }, notFoundContent);\n }\n var omitFieldNameList = Object.keys(fieldNames).map(function (key) {\n return fieldNames[key];\n });\n var getLabel = function getLabel(item) {\n return item.label;\n };\n function getItemAriaProps(item, index) {\n var group = item.group;\n return {\n role: group ? 'presentation' : 'option',\n id: \"\".concat(id, \"_list_\").concat(index)\n };\n }\n var renderItem = function renderItem(index) {\n var item = memoFlattenOptions[index];\n if (!item) {\n return null;\n }\n var itemData = item.data || {};\n var value = itemData.value;\n var group = item.group;\n var attrs = pickAttrs(itemData, true);\n var mergedLabel = getLabel(item);\n return item ? /*#__PURE__*/React.createElement(\"div\", _extends({\n \"aria-label\": typeof mergedLabel === 'string' && !group ? mergedLabel : null\n }, attrs, {\n key: index\n }, getItemAriaProps(item, index), {\n \"aria-selected\": isSelected(value)\n }), value) : null;\n };\n var a11yProps = {\n role: 'listbox',\n id: \"\".concat(id, \"_list\")\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, virtual && /*#__PURE__*/React.createElement(\"div\", _extends({}, a11yProps, {\n style: {\n height: 0,\n width: 0,\n overflow: 'hidden'\n }\n }), renderItem(activeIndex - 1), renderItem(activeIndex), renderItem(activeIndex + 1)), /*#__PURE__*/React.createElement(List, {\n itemKey: \"key\",\n ref: listRef,\n data: memoFlattenOptions,\n height: listHeight,\n itemHeight: listItemHeight,\n fullHeight: false,\n onMouseDown: onListMouseDown,\n onScroll: onPopupScroll,\n virtual: virtual,\n direction: direction,\n innerProps: virtual ? null : a11yProps\n }, function (item, itemIndex) {\n var _classNames;\n var group = item.group,\n groupOption = item.groupOption,\n data = item.data,\n label = item.label,\n value = item.value;\n var key = data.key;\n\n // Group\n if (group) {\n var _data$title;\n var groupTitle = (_data$title = data.title) !== null && _data$title !== void 0 ? _data$title : isTitleType(label) ? label.toString() : undefined;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(itemPrefixCls, \"\".concat(itemPrefixCls, \"-group\")),\n title: groupTitle\n }, label !== undefined ? label : key);\n }\n var disabled = data.disabled,\n title = data.title,\n children = data.children,\n style = data.style,\n className = data.className,\n otherProps = _objectWithoutProperties(data, _excluded);\n var passedProps = omit(otherProps, omitFieldNameList);\n\n // Option\n var selected = isSelected(value);\n var mergedDisabled = disabled || !selected && overMaxCount;\n var optionPrefixCls = \"\".concat(itemPrefixCls, \"-option\");\n var optionClassName = classNames(itemPrefixCls, optionPrefixCls, className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(optionPrefixCls, \"-grouped\"), groupOption), _defineProperty(_classNames, \"\".concat(optionPrefixCls, \"-active\"), activeIndex === itemIndex && !mergedDisabled), _defineProperty(_classNames, \"\".concat(optionPrefixCls, \"-disabled\"), mergedDisabled), _defineProperty(_classNames, \"\".concat(optionPrefixCls, \"-selected\"), selected), _classNames));\n var mergedLabel = getLabel(item);\n var iconVisible = !menuItemSelectedIcon || typeof menuItemSelectedIcon === 'function' || selected;\n\n // https://github.com/ant-design/ant-design/issues/34145\n var content = typeof mergedLabel === 'number' ? mergedLabel : mergedLabel || value;\n // https://github.com/ant-design/ant-design/issues/26717\n var optionTitle = isTitleType(content) ? content.toString() : undefined;\n if (title !== undefined) {\n optionTitle = title;\n }\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, pickAttrs(passedProps), !virtual ? getItemAriaProps(item, itemIndex) : {}, {\n \"aria-selected\": selected,\n className: optionClassName,\n title: optionTitle,\n onMouseMove: function onMouseMove() {\n if (activeIndex === itemIndex || mergedDisabled) {\n return;\n }\n setActive(itemIndex);\n },\n onClick: function onClick() {\n if (!mergedDisabled) {\n onSelectValue(value);\n }\n },\n style: style\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(optionPrefixCls, \"-content\")\n }, typeof optionRender === 'function' ? optionRender(item, {\n index: itemIndex\n }) : content), /*#__PURE__*/React.isValidElement(menuItemSelectedIcon) || selected, iconVisible && /*#__PURE__*/React.createElement(TransBtn, {\n className: \"\".concat(itemPrefixCls, \"-option-state\"),\n customizeIcon: menuItemSelectedIcon,\n customizeIconProps: {\n value: value,\n disabled: mergedDisabled,\n isSelected: selected\n }\n }, selected ? '✓' : null));\n }));\n};\nvar RefOptionList = /*#__PURE__*/React.forwardRef(OptionList);\nif (process.env.NODE_ENV !== 'production') {\n RefOptionList.displayName = 'OptionList';\n}\nexport default RefOptionList;","/* istanbul ignore file */\nexport function isPlatformMac() {\n return /(mac\\sos|macintosh)/i.test(navigator.appVersion);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport { toArray } from \"../utils/commonUtil\";\nimport { injectPropsWithOption } from \"../utils/valueUtil\";\nfunction includes(test, search) {\n return toArray(test).join('').toUpperCase().includes(search);\n}\nexport default (function (options, fieldNames, searchValue, filterOption, optionFilterProp) {\n return React.useMemo(function () {\n if (!searchValue || filterOption === false) {\n return options;\n }\n var fieldOptions = fieldNames.options,\n fieldLabel = fieldNames.label,\n fieldValue = fieldNames.value;\n var filteredOptions = [];\n var customizeFilter = typeof filterOption === 'function';\n var upperSearch = searchValue.toUpperCase();\n var filterFunc = customizeFilter ? filterOption : function (_, option) {\n // Use provided `optionFilterProp`\n if (optionFilterProp) {\n return includes(option[optionFilterProp], upperSearch);\n }\n\n // Auto select `label` or `value` by option type\n if (option[fieldOptions]) {\n // hack `fieldLabel` since `OptionGroup` children is not `label`\n return includes(option[fieldLabel !== 'children' ? fieldLabel : 'label'], upperSearch);\n }\n return includes(option[fieldValue], upperSearch);\n };\n var wrapOption = customizeFilter ? function (opt) {\n return injectPropsWithOption(opt);\n } : function (opt) {\n return opt;\n };\n options.forEach(function (item) {\n // Group should check child options\n if (item[fieldOptions]) {\n // Check group first\n var matchGroup = filterFunc(searchValue, wrapOption(item));\n if (matchGroup) {\n filteredOptions.push(item);\n } else {\n // Check option\n var subOptions = item[fieldOptions].filter(function (subItem) {\n return filterFunc(searchValue, wrapOption(subItem));\n });\n if (subOptions.length) {\n filteredOptions.push(_objectSpread(_objectSpread({}, item), {}, _defineProperty({}, fieldOptions, subOptions)));\n }\n }\n return;\n }\n if (filterFunc(searchValue, wrapOption(item))) {\n filteredOptions.push(item);\n }\n });\n return filteredOptions;\n }, [options, filterOption, optionFilterProp, searchValue, fieldNames]);\n});","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nvar uuid = 0;\n\n/** Is client side and not jsdom */\nexport var isBrowserClient = process.env.NODE_ENV !== 'test' && canUseDom();\n\n/** Get unique id for accessibility usage */\nexport function getUUID() {\n var retId;\n\n // Test never reach\n /* istanbul ignore if */\n if (isBrowserClient) {\n retId = uuid;\n uuid += 1;\n } else {\n retId = 'TEST_OR_SSR';\n }\n return retId;\n}\nexport default function useId(id) {\n // Inner id for accessibility usage. Only work in client side\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerId = _React$useState2[0],\n setInnerId = _React$useState2[1];\n React.useEffect(function () {\n setInnerId(\"rc_select_\".concat(getUUID()));\n }, []);\n return id || innerId;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\", \"value\"],\n _excluded2 = [\"children\"];\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nfunction convertNodeToOption(node) {\n var _ref = node,\n key = _ref.key,\n _ref$props = _ref.props,\n children = _ref$props.children,\n value = _ref$props.value,\n restProps = _objectWithoutProperties(_ref$props, _excluded);\n return _objectSpread({\n key: key,\n value: value !== undefined ? value : key,\n children: children\n }, restProps);\n}\nexport function convertChildrenToData(nodes) {\n var optionOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return toArray(nodes).map(function (node, index) {\n if (! /*#__PURE__*/React.isValidElement(node) || !node.type) {\n return null;\n }\n var _ref2 = node,\n isSelectOptGroup = _ref2.type.isSelectOptGroup,\n key = _ref2.key,\n _ref2$props = _ref2.props,\n children = _ref2$props.children,\n restProps = _objectWithoutProperties(_ref2$props, _excluded2);\n if (optionOnly || !isSelectOptGroup) {\n return convertNodeToOption(node);\n }\n return _objectSpread(_objectSpread({\n key: \"__RC_SELECT_GRP__\".concat(key === null ? index : key, \"__\"),\n label: key\n }, restProps), {}, {\n options: convertChildrenToData(children)\n });\n }).filter(function (data) {\n return data;\n });\n}","import * as React from 'react';\nimport { convertChildrenToData } from \"../utils/legacyUtil\";\n\n/**\n * Parse `children` to `options` if `options` is not provided.\n * Then flatten the `options`.\n */\nvar useOptions = function useOptions(options, children, fieldNames, optionFilterProp, optionLabelProp) {\n return React.useMemo(function () {\n var mergedOptions = options;\n var childrenAsData = !options;\n if (childrenAsData) {\n mergedOptions = convertChildrenToData(children);\n }\n var valueOptions = new Map();\n var labelOptions = new Map();\n var setLabelOptions = function setLabelOptions(labelOptionsMap, option, key) {\n if (key && typeof key === 'string') {\n labelOptionsMap.set(option[key], option);\n }\n };\n var dig = function dig(optionList) {\n var isChildren = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n // for loop to speed up collection speed\n for (var i = 0; i < optionList.length; i += 1) {\n var option = optionList[i];\n if (!option[fieldNames.options] || isChildren) {\n valueOptions.set(option[fieldNames.value], option);\n setLabelOptions(labelOptions, option, fieldNames.label);\n // https://github.com/ant-design/ant-design/issues/35304\n setLabelOptions(labelOptions, option, optionFilterProp);\n setLabelOptions(labelOptions, option, optionLabelProp);\n } else {\n dig(option[fieldNames.options], true);\n }\n }\n };\n dig(mergedOptions);\n return {\n options: mergedOptions,\n valueOptions: valueOptions,\n labelOptions: labelOptions\n };\n }, [options, children, fieldNames, optionFilterProp, optionLabelProp]);\n};\nexport default useOptions;","import * as React from 'react';\n\n/**\n * Same as `React.useCallback` but always return a memoized function\n * but redirect to real function.\n */\nexport default function useRefFunc(callback) {\n var funcRef = React.useRef();\n funcRef.current = callback;\n var cacheFn = React.useCallback(function () {\n return funcRef.current.apply(funcRef, arguments);\n }, []);\n return cacheFn;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar _excluded = [\"id\", \"mode\", \"prefixCls\", \"backfill\", \"fieldNames\", \"inputValue\", \"searchValue\", \"onSearch\", \"autoClearSearchValue\", \"onSelect\", \"onDeselect\", \"dropdownMatchSelectWidth\", \"filterOption\", \"filterSort\", \"optionFilterProp\", \"optionLabelProp\", \"options\", \"optionRender\", \"children\", \"defaultActiveFirstOption\", \"menuItemSelectedIcon\", \"virtual\", \"direction\", \"listHeight\", \"listItemHeight\", \"value\", \"defaultValue\", \"labelInValue\", \"onChange\", \"maxCount\"];\n/**\n * To match accessibility requirement, we always provide an input in the component.\n * Other element will not set `tabIndex` to avoid `onBlur` sequence problem.\n * For focused select, we set `aria-live=\"polite\"` to update the accessibility content.\n *\n * ref:\n * - keyboard: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#Keyboard_interactions\n *\n * New api:\n * - listHeight\n * - listItemHeight\n * - component\n *\n * Remove deprecated api:\n * - multiple\n * - tags\n * - combobox\n * - firstActiveValue\n * - dropdownMenuStyle\n * - openClassName (Not list in api)\n *\n * Update:\n * - `backfill` only support `combobox` mode\n * - `combobox` mode not support `labelInValue` since it's meaningless\n * - `getInputElement` only support `combobox` mode\n * - `onChange` return OptionData instead of ReactNode\n * - `filterOption` `onChange` `onSelect` accept OptionData instead of ReactNode\n * - `combobox` mode trigger `onChange` will get `undefined` if no `value` match in Option\n * - `combobox` mode not support `optionLabelProp`\n */\n\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport BaseSelect, { isMultiple } from \"./BaseSelect\";\nimport OptGroup from \"./OptGroup\";\nimport Option from \"./Option\";\nimport OptionList from \"./OptionList\";\nimport SelectContext from \"./SelectContext\";\nimport useCache from \"./hooks/useCache\";\nimport useFilterOptions from \"./hooks/useFilterOptions\";\nimport useId from \"./hooks/useId\";\nimport useOptions from \"./hooks/useOptions\";\nimport useRefFunc from \"./hooks/useRefFunc\";\nimport { hasValue, isComboNoValue, toArray } from \"./utils/commonUtil\";\nimport { fillFieldNames, flattenOptions, injectPropsWithOption } from \"./utils/valueUtil\";\nimport warningProps, { warningNullOptions } from \"./utils/warningPropsUtil\";\nvar OMIT_DOM_PROPS = ['inputValue'];\nfunction isRawValue(value) {\n return !value || _typeof(value) !== 'object';\n}\nvar Select = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var id = props.id,\n mode = props.mode,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-select' : _props$prefixCls,\n backfill = props.backfill,\n fieldNames = props.fieldNames,\n inputValue = props.inputValue,\n searchValue = props.searchValue,\n onSearch = props.onSearch,\n _props$autoClearSearc = props.autoClearSearchValue,\n autoClearSearchValue = _props$autoClearSearc === void 0 ? true : _props$autoClearSearc,\n onSelect = props.onSelect,\n onDeselect = props.onDeselect,\n _props$dropdownMatchS = props.dropdownMatchSelectWidth,\n dropdownMatchSelectWidth = _props$dropdownMatchS === void 0 ? true : _props$dropdownMatchS,\n filterOption = props.filterOption,\n filterSort = props.filterSort,\n optionFilterProp = props.optionFilterProp,\n optionLabelProp = props.optionLabelProp,\n options = props.options,\n optionRender = props.optionRender,\n children = props.children,\n defaultActiveFirstOption = props.defaultActiveFirstOption,\n menuItemSelectedIcon = props.menuItemSelectedIcon,\n virtual = props.virtual,\n direction = props.direction,\n _props$listHeight = props.listHeight,\n listHeight = _props$listHeight === void 0 ? 200 : _props$listHeight,\n _props$listItemHeight = props.listItemHeight,\n listItemHeight = _props$listItemHeight === void 0 ? 20 : _props$listItemHeight,\n value = props.value,\n defaultValue = props.defaultValue,\n labelInValue = props.labelInValue,\n onChange = props.onChange,\n maxCount = props.maxCount,\n restProps = _objectWithoutProperties(props, _excluded);\n var mergedId = useId(id);\n var multiple = isMultiple(mode);\n var childrenAsData = !!(!options && children);\n var mergedFilterOption = React.useMemo(function () {\n if (filterOption === undefined && mode === 'combobox') {\n return false;\n }\n return filterOption;\n }, [filterOption, mode]);\n\n // ========================= FieldNames =========================\n var mergedFieldNames = React.useMemo(function () {\n return fillFieldNames(fieldNames, childrenAsData);\n }, /* eslint-disable react-hooks/exhaustive-deps */\n [\n // We stringify fieldNames to avoid unnecessary re-renders.\n JSON.stringify(fieldNames), childrenAsData]\n /* eslint-enable react-hooks/exhaustive-deps */);\n\n // =========================== Search ===========================\n var _useMergedState = useMergedState('', {\n value: searchValue !== undefined ? searchValue : inputValue,\n postState: function postState(search) {\n return search || '';\n }\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedSearchValue = _useMergedState2[0],\n setSearchValue = _useMergedState2[1];\n\n // =========================== Option ===========================\n var parsedOptions = useOptions(options, children, mergedFieldNames, optionFilterProp, optionLabelProp);\n var valueOptions = parsedOptions.valueOptions,\n labelOptions = parsedOptions.labelOptions,\n mergedOptions = parsedOptions.options;\n\n // ========================= Wrap Value =========================\n var convert2LabelValues = React.useCallback(function (draftValues) {\n // Convert to array\n var valueList = toArray(draftValues);\n\n // Convert to labelInValue type\n return valueList.map(function (val) {\n var rawValue;\n var rawLabel;\n var rawKey;\n var rawDisabled;\n var rawTitle;\n\n // Fill label & value\n if (isRawValue(val)) {\n rawValue = val;\n } else {\n var _val$value;\n rawKey = val.key;\n rawLabel = val.label;\n rawValue = (_val$value = val.value) !== null && _val$value !== void 0 ? _val$value : rawKey;\n }\n var option = valueOptions.get(rawValue);\n if (option) {\n var _option$key;\n // Fill missing props\n if (rawLabel === undefined) rawLabel = option === null || option === void 0 ? void 0 : option[optionLabelProp || mergedFieldNames.label];\n if (rawKey === undefined) rawKey = (_option$key = option === null || option === void 0 ? void 0 : option.key) !== null && _option$key !== void 0 ? _option$key : rawValue;\n rawDisabled = option === null || option === void 0 ? void 0 : option.disabled;\n rawTitle = option === null || option === void 0 ? void 0 : option.title;\n\n // Warning if label not same as provided\n if (process.env.NODE_ENV !== 'production' && !optionLabelProp) {\n var optionLabel = option === null || option === void 0 ? void 0 : option[mergedFieldNames.label];\n if (optionLabel !== undefined && ! /*#__PURE__*/React.isValidElement(optionLabel) && ! /*#__PURE__*/React.isValidElement(rawLabel) && optionLabel !== rawLabel) {\n warning(false, '`label` of `value` is not same as `label` in Select options.');\n }\n }\n }\n return {\n label: rawLabel,\n value: rawValue,\n key: rawKey,\n disabled: rawDisabled,\n title: rawTitle\n };\n });\n }, [mergedFieldNames, optionLabelProp, valueOptions]);\n\n // =========================== Values ===========================\n var _useMergedState3 = useMergedState(defaultValue, {\n value: value\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n internalValue = _useMergedState4[0],\n setInternalValue = _useMergedState4[1];\n\n // Merged value with LabelValueType\n var rawLabeledValues = React.useMemo(function () {\n var _values$;\n var newInternalValue = multiple && internalValue === null ? [] : internalValue;\n var values = convert2LabelValues(newInternalValue);\n\n // combobox no need save value when it's no value (exclude value equal 0)\n if (mode === 'combobox' && isComboNoValue((_values$ = values[0]) === null || _values$ === void 0 ? void 0 : _values$.value)) {\n return [];\n }\n return values;\n }, [internalValue, convert2LabelValues, mode, multiple]);\n\n // Fill label with cache to avoid option remove\n var _useCache = useCache(rawLabeledValues, valueOptions),\n _useCache2 = _slicedToArray(_useCache, 2),\n mergedValues = _useCache2[0],\n getMixedOption = _useCache2[1];\n var displayValues = React.useMemo(function () {\n // `null` need show as placeholder instead\n // https://github.com/ant-design/ant-design/issues/25057\n if (!mode && mergedValues.length === 1) {\n var firstValue = mergedValues[0];\n if (firstValue.value === null && (firstValue.label === null || firstValue.label === undefined)) {\n return [];\n }\n }\n return mergedValues.map(function (item) {\n var _item$label;\n return _objectSpread(_objectSpread({}, item), {}, {\n label: (_item$label = item.label) !== null && _item$label !== void 0 ? _item$label : item.value\n });\n });\n }, [mode, mergedValues]);\n\n /** Convert `displayValues` to raw value type set */\n var rawValues = React.useMemo(function () {\n return new Set(mergedValues.map(function (val) {\n return val.value;\n }));\n }, [mergedValues]);\n React.useEffect(function () {\n if (mode === 'combobox') {\n var _mergedValues$;\n var strValue = (_mergedValues$ = mergedValues[0]) === null || _mergedValues$ === void 0 ? void 0 : _mergedValues$.value;\n setSearchValue(hasValue(strValue) ? String(strValue) : '');\n }\n }, [mergedValues]);\n\n // ======================= Display Option =======================\n // Create a placeholder item if not exist in `options`\n var createTagOption = useRefFunc(function (val, label) {\n var _ref;\n var mergedLabel = label !== null && label !== void 0 ? label : val;\n return _ref = {}, _defineProperty(_ref, mergedFieldNames.value, val), _defineProperty(_ref, mergedFieldNames.label, mergedLabel), _ref;\n });\n\n // Fill tag as option if mode is `tags`\n var filledTagOptions = React.useMemo(function () {\n if (mode !== 'tags') {\n return mergedOptions;\n }\n\n // >>> Tag mode\n var cloneOptions = _toConsumableArray(mergedOptions);\n\n // Check if value exist in options (include new patch item)\n var existOptions = function existOptions(val) {\n return valueOptions.has(val);\n };\n\n // Fill current value as option\n _toConsumableArray(mergedValues).sort(function (a, b) {\n return a.value < b.value ? -1 : 1;\n }).forEach(function (item) {\n var val = item.value;\n if (!existOptions(val)) {\n cloneOptions.push(createTagOption(val, item.label));\n }\n });\n return cloneOptions;\n }, [createTagOption, mergedOptions, valueOptions, mergedValues, mode]);\n var filteredOptions = useFilterOptions(filledTagOptions, mergedFieldNames, mergedSearchValue, mergedFilterOption, optionFilterProp);\n\n // Fill options with search value if needed\n var filledSearchOptions = React.useMemo(function () {\n if (mode !== 'tags' || !mergedSearchValue || filteredOptions.some(function (item) {\n return item[optionFilterProp || 'value'] === mergedSearchValue;\n })) {\n return filteredOptions;\n }\n // ignore when search value equal select input value\n if (filteredOptions.some(function (item) {\n return item[mergedFieldNames.value] === mergedSearchValue;\n })) {\n return filteredOptions;\n }\n // Fill search value as option\n return [createTagOption(mergedSearchValue)].concat(_toConsumableArray(filteredOptions));\n }, [createTagOption, optionFilterProp, mode, filteredOptions, mergedSearchValue, mergedFieldNames]);\n var orderedFilteredOptions = React.useMemo(function () {\n if (!filterSort) {\n return filledSearchOptions;\n }\n return _toConsumableArray(filledSearchOptions).sort(function (a, b) {\n return filterSort(a, b);\n });\n }, [filledSearchOptions, filterSort]);\n var displayOptions = React.useMemo(function () {\n return flattenOptions(orderedFilteredOptions, {\n fieldNames: mergedFieldNames,\n childrenAsData: childrenAsData\n });\n }, [orderedFilteredOptions, mergedFieldNames, childrenAsData]);\n\n // =========================== Change ===========================\n var triggerChange = function triggerChange(values) {\n var labeledValues = convert2LabelValues(values);\n setInternalValue(labeledValues);\n if (onChange && (\n // Trigger event only when value changed\n labeledValues.length !== mergedValues.length || labeledValues.some(function (newVal, index) {\n var _mergedValues$index;\n return ((_mergedValues$index = mergedValues[index]) === null || _mergedValues$index === void 0 ? void 0 : _mergedValues$index.value) !== (newVal === null || newVal === void 0 ? void 0 : newVal.value);\n }))) {\n var returnValues = labelInValue ? labeledValues : labeledValues.map(function (v) {\n return v.value;\n });\n var returnOptions = labeledValues.map(function (v) {\n return injectPropsWithOption(getMixedOption(v.value));\n });\n onChange(\n // Value\n multiple ? returnValues : returnValues[0],\n // Option\n multiple ? returnOptions : returnOptions[0]);\n }\n };\n\n // ======================= Accessibility ========================\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n activeValue = _React$useState2[0],\n setActiveValue = _React$useState2[1];\n var _React$useState3 = React.useState(0),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n accessibilityIndex = _React$useState4[0],\n setAccessibilityIndex = _React$useState4[1];\n var mergedDefaultActiveFirstOption = defaultActiveFirstOption !== undefined ? defaultActiveFirstOption : mode !== 'combobox';\n var onActiveValue = React.useCallback(function (active, index) {\n var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref2$source = _ref2.source,\n source = _ref2$source === void 0 ? 'keyboard' : _ref2$source;\n setAccessibilityIndex(index);\n if (backfill && mode === 'combobox' && active !== null && source === 'keyboard') {\n setActiveValue(String(active));\n }\n }, [backfill, mode]);\n\n // ========================= OptionList =========================\n var triggerSelect = function triggerSelect(val, selected, type) {\n var getSelectEnt = function getSelectEnt() {\n var _option$key2;\n var option = getMixedOption(val);\n return [labelInValue ? {\n label: option === null || option === void 0 ? void 0 : option[mergedFieldNames.label],\n value: val,\n key: (_option$key2 = option === null || option === void 0 ? void 0 : option.key) !== null && _option$key2 !== void 0 ? _option$key2 : val\n } : val, injectPropsWithOption(option)];\n };\n if (selected && onSelect) {\n var _getSelectEnt = getSelectEnt(),\n _getSelectEnt2 = _slicedToArray(_getSelectEnt, 2),\n wrappedValue = _getSelectEnt2[0],\n _option = _getSelectEnt2[1];\n onSelect(wrappedValue, _option);\n } else if (!selected && onDeselect && type !== 'clear') {\n var _getSelectEnt3 = getSelectEnt(),\n _getSelectEnt4 = _slicedToArray(_getSelectEnt3, 2),\n _wrappedValue = _getSelectEnt4[0],\n _option2 = _getSelectEnt4[1];\n onDeselect(_wrappedValue, _option2);\n }\n };\n\n // Used for OptionList selection\n var onInternalSelect = useRefFunc(function (val, info) {\n var cloneValues;\n\n // Single mode always trigger select only with option list\n var mergedSelect = multiple ? info.selected : true;\n if (mergedSelect) {\n cloneValues = multiple ? [].concat(_toConsumableArray(mergedValues), [val]) : [val];\n } else {\n cloneValues = mergedValues.filter(function (v) {\n return v.value !== val;\n });\n }\n triggerChange(cloneValues);\n triggerSelect(val, mergedSelect);\n\n // Clean search value if single or configured\n if (mode === 'combobox') {\n // setSearchValue(String(val));\n setActiveValue('');\n } else if (!isMultiple || autoClearSearchValue) {\n setSearchValue('');\n setActiveValue('');\n }\n });\n\n // ======================= Display Change =======================\n // BaseSelect display values change\n var onDisplayValuesChange = function onDisplayValuesChange(nextValues, info) {\n triggerChange(nextValues);\n var type = info.type,\n values = info.values;\n if (type === 'remove' || type === 'clear') {\n values.forEach(function (item) {\n triggerSelect(item.value, false, type);\n });\n }\n };\n\n // =========================== Search ===========================\n var onInternalSearch = function onInternalSearch(searchText, info) {\n setSearchValue(searchText);\n setActiveValue(null);\n\n // [Submit] Tag mode should flush input\n if (info.source === 'submit') {\n var formatted = (searchText || '').trim();\n // prevent empty tags from appearing when you click the Enter button\n if (formatted) {\n var newRawValues = Array.from(new Set([].concat(_toConsumableArray(rawValues), [formatted])));\n triggerChange(newRawValues);\n triggerSelect(formatted, true);\n setSearchValue('');\n }\n return;\n }\n if (info.source !== 'blur') {\n if (mode === 'combobox') {\n triggerChange(searchText);\n }\n onSearch === null || onSearch === void 0 || onSearch(searchText);\n }\n };\n var onInternalSearchSplit = function onInternalSearchSplit(words) {\n var patchValues = words;\n if (mode !== 'tags') {\n patchValues = words.map(function (word) {\n var opt = labelOptions.get(word);\n return opt === null || opt === void 0 ? void 0 : opt.value;\n }).filter(function (val) {\n return val !== undefined;\n });\n }\n var newRawValues = Array.from(new Set([].concat(_toConsumableArray(rawValues), _toConsumableArray(patchValues))));\n triggerChange(newRawValues);\n newRawValues.forEach(function (newRawValue) {\n triggerSelect(newRawValue, true);\n });\n };\n\n // ========================== Context ===========================\n var selectContext = React.useMemo(function () {\n var realVirtual = virtual !== false && dropdownMatchSelectWidth !== false;\n return _objectSpread(_objectSpread({}, parsedOptions), {}, {\n flattenOptions: displayOptions,\n onActiveValue: onActiveValue,\n defaultActiveFirstOption: mergedDefaultActiveFirstOption,\n onSelect: onInternalSelect,\n menuItemSelectedIcon: menuItemSelectedIcon,\n rawValues: rawValues,\n fieldNames: mergedFieldNames,\n virtual: realVirtual,\n direction: direction,\n listHeight: listHeight,\n listItemHeight: listItemHeight,\n childrenAsData: childrenAsData,\n maxCount: maxCount,\n optionRender: optionRender\n });\n }, [maxCount, parsedOptions, displayOptions, onActiveValue, mergedDefaultActiveFirstOption, onInternalSelect, menuItemSelectedIcon, rawValues, mergedFieldNames, virtual, dropdownMatchSelectWidth, direction, listHeight, listItemHeight, childrenAsData, optionRender]);\n\n // ========================== Warning ===========================\n if (process.env.NODE_ENV !== 'production') {\n warningProps(props);\n warningNullOptions(mergedOptions, mergedFieldNames);\n }\n\n // ==============================================================\n // == Render ==\n // ==============================================================\n return /*#__PURE__*/React.createElement(SelectContext.Provider, {\n value: selectContext\n }, /*#__PURE__*/React.createElement(BaseSelect, _extends({}, restProps, {\n // >>> MISC\n id: mergedId,\n prefixCls: prefixCls,\n ref: ref,\n omitDomProps: OMIT_DOM_PROPS,\n mode: mode\n // >>> Values\n ,\n displayValues: displayValues,\n onDisplayValuesChange: onDisplayValuesChange\n // >>> Trigger\n ,\n direction: direction\n // >>> Search\n ,\n searchValue: mergedSearchValue,\n onSearch: onInternalSearch,\n autoClearSearchValue: autoClearSearchValue,\n onSearchSplit: onInternalSearchSplit,\n dropdownMatchSelectWidth: dropdownMatchSelectWidth\n // >>> OptionList\n ,\n OptionList: OptionList,\n emptyOptions: !displayOptions.length\n // >>> Accessibility\n ,\n activeValue: activeValue,\n activeDescendantId: \"\".concat(mergedId, \"_list_\").concat(accessibilityIndex)\n })));\n});\nif (process.env.NODE_ENV !== 'production') {\n Select.displayName = 'Select';\n}\nvar TypedSelect = Select;\nTypedSelect.Option = Option;\nTypedSelect.OptGroup = OptGroup;\nexport default TypedSelect;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\n/**\n * Cache `value` related LabeledValue & options.\n */\nexport default (function (labeledValues, valueOptions) {\n var cacheRef = React.useRef({\n values: new Map(),\n options: new Map()\n });\n var filledLabeledValues = React.useMemo(function () {\n var _cacheRef$current = cacheRef.current,\n prevValueCache = _cacheRef$current.values,\n prevOptionCache = _cacheRef$current.options;\n\n // Fill label by cache\n var patchedValues = labeledValues.map(function (item) {\n if (item.label === undefined) {\n var _prevValueCache$get;\n return _objectSpread(_objectSpread({}, item), {}, {\n label: (_prevValueCache$get = prevValueCache.get(item.value)) === null || _prevValueCache$get === void 0 ? void 0 : _prevValueCache$get.label\n });\n }\n return item;\n });\n\n // Refresh cache\n var valueCache = new Map();\n var optionCache = new Map();\n patchedValues.forEach(function (item) {\n valueCache.set(item.value, item);\n optionCache.set(item.value, valueOptions.get(item.value) || prevOptionCache.get(item.value));\n });\n cacheRef.current.values = valueCache;\n cacheRef.current.options = optionCache;\n return patchedValues;\n }, [labeledValues, valueOptions]);\n var getOption = React.useCallback(function (val) {\n return valueOptions.get(val) || cacheRef.current.options.get(val);\n }, [valueOptions]);\n return [filledLabeledValues, getOption];\n});","import Select from \"./Select\";\nimport Option from \"./Option\";\nimport OptGroup from \"./OptGroup\";\nimport BaseSelect from \"./BaseSelect\";\nimport useBaseProps from \"./hooks/useBaseProps\";\nexport { Option, OptGroup, BaseSelect, useBaseProps };\nexport default Select;","const getBuiltInPlacements = popupOverflow => {\n const htmlRegion = popupOverflow === 'scroll' ? 'scroll' : 'visible';\n const sharedConfig = {\n overflow: {\n adjustX: true,\n adjustY: true,\n shiftY: true\n },\n htmlRegion,\n dynamicInset: true\n };\n return {\n bottomLeft: Object.assign(Object.assign({}, sharedConfig), {\n points: ['tl', 'bl'],\n offset: [0, 4]\n }),\n bottomRight: Object.assign(Object.assign({}, sharedConfig), {\n points: ['tr', 'br'],\n offset: [0, 4]\n }),\n topLeft: Object.assign(Object.assign({}, sharedConfig), {\n points: ['bl', 'tl'],\n offset: [0, -4]\n }),\n topRight: Object.assign(Object.assign({}, sharedConfig), {\n points: ['br', 'tr'],\n offset: [0, -4]\n })\n };\n};\nfunction mergedBuiltinPlacements(buildInPlacements, popupOverflow) {\n return buildInPlacements || getBuiltInPlacements(popupOverflow);\n}\nexport default mergedBuiltinPlacements;","import { resetComponent, textEllipsis } from '../../style';\nimport { initMoveMotion, initSlideMotion, slideDownIn, slideDownOut, slideUpIn, slideUpOut } from '../../style/motion';\nconst genItemStyle = token => {\n const {\n optionHeight,\n optionFontSize,\n optionLineHeight,\n optionPadding\n } = token;\n return {\n position: 'relative',\n display: 'block',\n minHeight: optionHeight,\n padding: optionPadding,\n color: token.colorText,\n fontWeight: 'normal',\n fontSize: optionFontSize,\n lineHeight: optionLineHeight,\n boxSizing: 'border-box'\n };\n};\nconst genSingleStyle = token => {\n const {\n antCls,\n componentCls\n } = token;\n const selectItemCls = `${componentCls}-item`;\n const slideUpEnterActive = `&${antCls}-slide-up-enter${antCls}-slide-up-enter-active`;\n const slideUpAppearActive = `&${antCls}-slide-up-appear${antCls}-slide-up-appear-active`;\n const slideUpLeaveActive = `&${antCls}-slide-up-leave${antCls}-slide-up-leave-active`;\n const dropdownPlacementCls = `${componentCls}-dropdown-placement-`;\n return [{\n [`${componentCls}-dropdown`]: Object.assign(Object.assign({}, resetComponent(token)), {\n position: 'absolute',\n top: -9999,\n zIndex: token.zIndexPopup,\n boxSizing: 'border-box',\n padding: token.paddingXXS,\n overflow: 'hidden',\n fontSize: token.fontSize,\n // Fix select render lag of long text in chrome\n // https://github.com/ant-design/ant-design/issues/11456\n // https://github.com/ant-design/ant-design/issues/11843\n fontVariant: 'initial',\n backgroundColor: token.colorBgElevated,\n borderRadius: token.borderRadiusLG,\n outline: 'none',\n boxShadow: token.boxShadowSecondary,\n [`\n ${slideUpEnterActive}${dropdownPlacementCls}bottomLeft,\n ${slideUpAppearActive}${dropdownPlacementCls}bottomLeft\n `]: {\n animationName: slideUpIn\n },\n [`\n ${slideUpEnterActive}${dropdownPlacementCls}topLeft,\n ${slideUpAppearActive}${dropdownPlacementCls}topLeft,\n ${slideUpEnterActive}${dropdownPlacementCls}topRight,\n ${slideUpAppearActive}${dropdownPlacementCls}topRight\n `]: {\n animationName: slideDownIn\n },\n [`${slideUpLeaveActive}${dropdownPlacementCls}bottomLeft`]: {\n animationName: slideUpOut\n },\n [`\n ${slideUpLeaveActive}${dropdownPlacementCls}topLeft,\n ${slideUpLeaveActive}${dropdownPlacementCls}topRight\n `]: {\n animationName: slideDownOut\n },\n '&-hidden': {\n display: 'none'\n },\n [`${selectItemCls}`]: Object.assign(Object.assign({}, genItemStyle(token)), {\n cursor: 'pointer',\n transition: `background ${token.motionDurationSlow} ease`,\n borderRadius: token.borderRadiusSM,\n // =========== Group ============\n '&-group': {\n color: token.colorTextDescription,\n fontSize: token.fontSizeSM,\n cursor: 'default'\n },\n // =========== Option ===========\n '&-option': {\n display: 'flex',\n '&-content': Object.assign({\n flex: 'auto'\n }, textEllipsis),\n '&-state': {\n flex: 'none',\n display: 'flex',\n alignItems: 'center'\n },\n [`&-active:not(${selectItemCls}-option-disabled)`]: {\n backgroundColor: token.optionActiveBg\n },\n [`&-selected:not(${selectItemCls}-option-disabled)`]: {\n color: token.optionSelectedColor,\n fontWeight: token.optionSelectedFontWeight,\n backgroundColor: token.optionSelectedBg,\n [`${selectItemCls}-option-state`]: {\n color: token.colorPrimary\n },\n [`&:has(+ ${selectItemCls}-option-selected:not(${selectItemCls}-option-disabled))`]: {\n borderEndStartRadius: 0,\n borderEndEndRadius: 0,\n [`& + ${selectItemCls}-option-selected:not(${selectItemCls}-option-disabled)`]: {\n borderStartStartRadius: 0,\n borderStartEndRadius: 0\n }\n }\n },\n '&-disabled': {\n [`&${selectItemCls}-option-selected`]: {\n backgroundColor: token.colorBgContainerDisabled\n },\n color: token.colorTextDisabled,\n cursor: 'not-allowed'\n },\n '&-grouped': {\n paddingInlineStart: token.calc(token.controlPaddingHorizontal).mul(2).equal()\n }\n },\n '&-empty': Object.assign(Object.assign({}, genItemStyle(token)), {\n color: token.colorTextDisabled\n })\n }),\n // =========================== RTL ===========================\n '&-rtl': {\n direction: 'rtl'\n }\n })\n },\n // Follow code may reuse in other components\n initSlideMotion(token, 'slide-up'), initSlideMotion(token, 'slide-down'), initMoveMotion(token, 'move-up'), initMoveMotion(token, 'move-down')];\n};\nexport default genSingleStyle;","import { resetIcon } from '../../style';\nimport { mergeToken } from '../../theme/internal';\nimport { unit } from '@ant-design/cssinjs';\nconst FIXED_ITEM_MARGIN = 2;\nconst getSelectItemStyle = token => {\n const {\n multipleSelectItemHeight,\n selectHeight,\n lineWidth\n } = token;\n const selectItemDist = token.calc(selectHeight).sub(multipleSelectItemHeight).div(2).sub(lineWidth).equal();\n return selectItemDist;\n};\nfunction genSizeStyle(token, suffix) {\n const {\n componentCls,\n iconCls\n } = token;\n const selectOverflowPrefixCls = `${componentCls}-selection-overflow`;\n const selectItemHeight = token.multipleSelectItemHeight;\n const selectItemDist = getSelectItemStyle(token);\n const suffixCls = suffix ? `${componentCls}-${suffix}` : '';\n return {\n [`${componentCls}-multiple${suffixCls}`]: {\n fontSize: token.fontSize,\n /**\n * Do not merge `height` & `line-height` under style with `selection` & `search`, since chrome\n * may update to redesign with its align logic.\n */\n // =========================== Overflow ===========================\n [selectOverflowPrefixCls]: {\n position: 'relative',\n display: 'flex',\n flex: 'auto',\n flexWrap: 'wrap',\n maxWidth: '100%',\n '&-item': {\n flex: 'none',\n alignSelf: 'center',\n maxWidth: '100%',\n display: 'inline-flex'\n }\n },\n // ========================= Selector =========================\n [`${componentCls}-selector`]: {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n height: '100%',\n // Multiple is little different that horizontal is follow the vertical\n paddingInline: token.calc(FIXED_ITEM_MARGIN).mul(2).equal(),\n paddingBlock: token.calc(selectItemDist).sub(FIXED_ITEM_MARGIN).equal(),\n borderRadius: token.borderRadius,\n [`${componentCls}-show-search&`]: {\n cursor: 'text'\n },\n [`${componentCls}-disabled&`]: {\n background: token.multipleSelectorBgDisabled,\n cursor: 'not-allowed'\n },\n '&:after': {\n display: 'inline-block',\n width: 0,\n margin: `${unit(FIXED_ITEM_MARGIN)} 0`,\n lineHeight: unit(selectItemHeight),\n visibility: 'hidden',\n content: '\"\\\\a0\"'\n }\n },\n [`\n &${componentCls}-show-arrow ${componentCls}-selector,\n &${componentCls}-allow-clear ${componentCls}-selector\n `]: {\n paddingInlineEnd: token.calc(token.fontSizeIcon).add(token.controlPaddingHorizontal).equal()\n },\n // ======================== Selections ========================\n [`${componentCls}-selection-item`]: {\n display: 'flex',\n alignSelf: 'center',\n flex: 'none',\n boxSizing: 'border-box',\n maxWidth: '100%',\n height: selectItemHeight,\n marginTop: FIXED_ITEM_MARGIN,\n marginBottom: FIXED_ITEM_MARGIN,\n lineHeight: unit(token.calc(selectItemHeight).sub(token.calc(token.lineWidth).mul(2)).equal()),\n borderRadius: token.borderRadiusSM,\n cursor: 'default',\n transition: `font-size ${token.motionDurationSlow}, line-height ${token.motionDurationSlow}, height ${token.motionDurationSlow}`,\n marginInlineEnd: token.calc(FIXED_ITEM_MARGIN).mul(2).equal(),\n paddingInlineStart: token.paddingXS,\n paddingInlineEnd: token.calc(token.paddingXS).div(2).equal(),\n [`${componentCls}-disabled&`]: {\n color: token.multipleItemColorDisabled,\n borderColor: token.multipleItemBorderColorDisabled,\n cursor: 'not-allowed'\n },\n // It's ok not to do this, but 24px makes bottom narrow in view should adjust\n '&-content': {\n display: 'inline-block',\n marginInlineEnd: token.calc(token.paddingXS).div(2).equal(),\n overflow: 'hidden',\n whiteSpace: 'pre',\n // fix whitespace wrapping. custom tags display all whitespace within.\n textOverflow: 'ellipsis'\n },\n '&-remove': Object.assign(Object.assign({}, resetIcon()), {\n display: 'inline-flex',\n alignItems: 'center',\n color: token.colorIcon,\n fontWeight: 'bold',\n fontSize: 10,\n lineHeight: 'inherit',\n cursor: 'pointer',\n [`> ${iconCls}`]: {\n verticalAlign: '-0.2em'\n },\n '&:hover': {\n color: token.colorIconHover\n }\n })\n },\n // ========================== Input ==========================\n [`${selectOverflowPrefixCls}-item + ${selectOverflowPrefixCls}-item`]: {\n [`${componentCls}-selection-search`]: {\n marginInlineStart: 0\n }\n },\n // https://github.com/ant-design/ant-design/issues/44754\n [`${selectOverflowPrefixCls}-item-suffix`]: {\n height: '100%'\n },\n [`${componentCls}-selection-search`]: {\n display: 'inline-flex',\n position: 'relative',\n maxWidth: '100%',\n marginInlineStart: token.calc(token.inputPaddingHorizontalBase).sub(selectItemDist).equal(),\n [`\n &-input,\n &-mirror\n `]: {\n height: selectItemHeight,\n fontFamily: token.fontFamily,\n lineHeight: unit(selectItemHeight),\n transition: `all ${token.motionDurationSlow}`\n },\n '&-input': {\n width: '100%',\n minWidth: 4.1 // fix search cursor missing\n },\n '&-mirror': {\n position: 'absolute',\n top: 0,\n insetInlineStart: 0,\n insetInlineEnd: 'auto',\n zIndex: 999,\n whiteSpace: 'pre',\n // fix whitespace wrapping caused width calculation bug\n visibility: 'hidden'\n }\n },\n // ======================= Placeholder =======================\n [`${componentCls}-selection-placeholder`]: {\n position: 'absolute',\n top: '50%',\n insetInlineStart: token.inputPaddingHorizontalBase,\n insetInlineEnd: token.inputPaddingHorizontalBase,\n transform: 'translateY(-50%)',\n transition: `all ${token.motionDurationSlow}`\n }\n }\n };\n}\nconst genMultipleStyle = token => {\n const {\n componentCls\n } = token;\n const smallToken = mergeToken(token, {\n selectHeight: token.controlHeightSM,\n multipleSelectItemHeight: token.controlHeightXS,\n borderRadius: token.borderRadiusSM,\n borderRadiusSM: token.borderRadiusXS\n });\n const largeToken = mergeToken(token, {\n fontSize: token.fontSizeLG,\n selectHeight: token.controlHeightLG,\n multipleSelectItemHeight: token.multipleItemHeightLG,\n borderRadius: token.borderRadiusLG,\n borderRadiusSM: token.borderRadius\n });\n return [genSizeStyle(token),\n // ======================== Small ========================\n genSizeStyle(smallToken, 'sm'),\n // Padding\n {\n [`${componentCls}-multiple${componentCls}-sm`]: {\n [`${componentCls}-selection-placeholder`]: {\n insetInline: token.calc(token.controlPaddingHorizontalSM).sub(token.lineWidth).equal()\n },\n // https://github.com/ant-design/ant-design/issues/29559\n [`${componentCls}-selection-search`]: {\n marginInlineStart: 2 // Magic Number\n }\n }\n },\n // ======================== Large ========================\n genSizeStyle(largeToken, 'lg')];\n};\nexport default genMultipleStyle;","import { resetComponent } from '../../style';\nimport { mergeToken } from '../../theme/internal';\nimport { unit } from '@ant-design/cssinjs';\nfunction genSizeStyle(token, suffix) {\n const {\n componentCls,\n inputPaddingHorizontalBase,\n borderRadius\n } = token;\n const selectHeightWithoutBorder = token.calc(token.controlHeight).sub(token.calc(token.lineWidth).mul(2)).equal();\n const suffixCls = suffix ? `${componentCls}-${suffix}` : '';\n return {\n [`${componentCls}-single${suffixCls}`]: {\n fontSize: token.fontSize,\n height: token.controlHeight,\n // ========================= Selector =========================\n [`${componentCls}-selector`]: Object.assign(Object.assign({}, resetComponent(token, true)), {\n display: 'flex',\n borderRadius,\n [`${componentCls}-selection-search`]: {\n position: 'absolute',\n top: 0,\n insetInlineStart: inputPaddingHorizontalBase,\n insetInlineEnd: inputPaddingHorizontalBase,\n bottom: 0,\n '&-input': {\n width: '100%',\n WebkitAppearance: 'textfield'\n }\n },\n [`\n ${componentCls}-selection-item,\n ${componentCls}-selection-placeholder\n `]: {\n padding: 0,\n lineHeight: unit(selectHeightWithoutBorder),\n transition: `all ${token.motionDurationSlow}, visibility 0s`,\n alignSelf: 'center'\n },\n [`${componentCls}-selection-placeholder`]: {\n transition: 'none',\n pointerEvents: 'none'\n },\n // For common baseline align\n [['&:after', /* For '' value baseline align */\n `${componentCls}-selection-item:empty:after`, /* For undefined value baseline align */\n `${componentCls}-selection-placeholder:empty:after`].join(',')]: {\n display: 'inline-block',\n width: 0,\n visibility: 'hidden',\n content: '\"\\\\a0\"'\n }\n }),\n [`\n &${componentCls}-show-arrow ${componentCls}-selection-item,\n &${componentCls}-show-arrow ${componentCls}-selection-placeholder\n `]: {\n paddingInlineEnd: token.showArrowPaddingInlineEnd\n },\n // Opacity selection if open\n [`&${componentCls}-open ${componentCls}-selection-item`]: {\n color: token.colorTextPlaceholder\n },\n // ========================== Input ==========================\n // We only change the style of non-customize input which is only support by `combobox` mode.\n // Not customize\n [`&:not(${componentCls}-customize-input)`]: {\n [`${componentCls}-selector`]: {\n width: '100%',\n height: '100%',\n padding: `0 ${unit(inputPaddingHorizontalBase)}`,\n [`${componentCls}-selection-search-input`]: {\n height: selectHeightWithoutBorder\n },\n '&:after': {\n lineHeight: unit(selectHeightWithoutBorder)\n }\n }\n },\n [`&${componentCls}-customize-input`]: {\n [`${componentCls}-selector`]: {\n '&:after': {\n display: 'none'\n },\n [`${componentCls}-selection-search`]: {\n position: 'static',\n width: '100%'\n },\n [`${componentCls}-selection-placeholder`]: {\n position: 'absolute',\n insetInlineStart: 0,\n insetInlineEnd: 0,\n padding: `0 ${unit(inputPaddingHorizontalBase)}`,\n '&:after': {\n display: 'none'\n }\n }\n }\n }\n }\n };\n}\nexport default function genSingleStyle(token) {\n const {\n componentCls\n } = token;\n const inputPaddingHorizontalSM = token.calc(token.controlPaddingHorizontalSM).sub(token.lineWidth).equal();\n return [genSizeStyle(token),\n // ======================== Small ========================\n // Shared\n genSizeStyle(mergeToken(token, {\n controlHeight: token.controlHeightSM,\n borderRadius: token.borderRadiusSM\n }), 'sm'),\n // padding\n {\n [`${componentCls}-single${componentCls}-sm`]: {\n [`&:not(${componentCls}-customize-input)`]: {\n [`${componentCls}-selection-search`]: {\n insetInlineStart: inputPaddingHorizontalSM,\n insetInlineEnd: inputPaddingHorizontalSM\n },\n [`${componentCls}-selector`]: {\n padding: `0 ${unit(inputPaddingHorizontalSM)}`\n },\n // With arrow should provides `padding-right` to show the arrow\n [`&${componentCls}-show-arrow ${componentCls}-selection-search`]: {\n insetInlineEnd: token.calc(inputPaddingHorizontalSM).add(token.calc(token.fontSize).mul(1.5)).equal()\n },\n [`\n &${componentCls}-show-arrow ${componentCls}-selection-item,\n &${componentCls}-show-arrow ${componentCls}-selection-placeholder\n `]: {\n paddingInlineEnd: token.calc(token.fontSize).mul(1.5).equal()\n }\n }\n }\n },\n // ======================== Large ========================\n // Shared\n genSizeStyle(mergeToken(token, {\n controlHeight: token.singleItemHeightLG,\n fontSize: token.fontSizeLG,\n borderRadius: token.borderRadiusLG\n }), 'lg')];\n}","export const prepareComponentToken = token => {\n const {\n fontSize,\n lineHeight,\n controlHeight,\n controlPaddingHorizontal,\n zIndexPopupBase,\n colorText,\n fontWeightStrong,\n controlItemBgActive,\n controlItemBgHover,\n colorBgContainer,\n colorFillSecondary,\n controlHeightLG,\n controlHeightSM,\n colorBgContainerDisabled,\n colorTextDisabled\n } = token;\n return {\n zIndexPopup: zIndexPopupBase + 50,\n optionSelectedColor: colorText,\n optionSelectedFontWeight: fontWeightStrong,\n optionSelectedBg: controlItemBgActive,\n optionActiveBg: controlItemBgHover,\n optionPadding: `${(controlHeight - fontSize * lineHeight) / 2}px ${controlPaddingHorizontal}px`,\n optionFontSize: fontSize,\n optionLineHeight: lineHeight,\n optionHeight: controlHeight,\n selectorBg: colorBgContainer,\n clearBg: colorBgContainer,\n singleItemHeightLG: controlHeightLG,\n multipleItemBg: colorFillSecondary,\n multipleItemBorderColor: 'transparent',\n multipleItemHeight: controlHeightSM,\n multipleItemHeightLG: controlHeight,\n multipleSelectorBgDisabled: colorBgContainerDisabled,\n multipleItemColorDisabled: colorTextDisabled,\n multipleItemBorderColorDisabled: 'transparent',\n showArrowPaddingInlineEnd: Math.ceil(token.fontSize * 1.25)\n };\n};","import { unit } from '@ant-design/cssinjs';\n// =====================================================\n// == Outlined ==\n// =====================================================\nconst genBaseOutlinedStyle = (token, options) => {\n const {\n componentCls,\n antCls,\n controlOutlineWidth\n } = token;\n return {\n [`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: {\n border: `${unit(token.lineWidth)} ${token.lineType} ${options.borderColor}`,\n background: token.selectorBg\n },\n [`&:not(${componentCls}-disabled):not(${componentCls}-customize-input):not(${antCls}-pagination-size-changer)`]: {\n [`&:hover ${componentCls}-selector`]: {\n borderColor: options.hoverBorderHover\n },\n [`${componentCls}-focused& ${componentCls}-selector`]: {\n borderColor: options.activeBorderColor,\n boxShadow: `0 0 0 ${unit(controlOutlineWidth)} ${options.activeShadowColor}`,\n outline: 0\n }\n }\n };\n};\nconst genOutlinedStatusStyle = (token, options) => ({\n [`&${token.componentCls}-status-${options.status}`]: Object.assign({}, genBaseOutlinedStyle(token, options))\n});\nconst genOutlinedStyle = token => ({\n '&-outlined': Object.assign(Object.assign(Object.assign(Object.assign({}, genBaseOutlinedStyle(token, {\n borderColor: token.colorBorder,\n hoverBorderHover: token.colorPrimaryHover,\n activeBorderColor: token.colorPrimary,\n activeShadowColor: token.controlOutline\n })), genOutlinedStatusStyle(token, {\n status: 'error',\n borderColor: token.colorError,\n hoverBorderHover: token.colorErrorHover,\n activeBorderColor: token.colorError,\n activeShadowColor: token.colorErrorOutline\n })), genOutlinedStatusStyle(token, {\n status: 'warning',\n borderColor: token.colorWarning,\n hoverBorderHover: token.colorWarningHover,\n activeBorderColor: token.colorWarning,\n activeShadowColor: token.colorWarningOutline\n })), {\n [`&${token.componentCls}-disabled`]: {\n [`&:not(${token.componentCls}-customize-input) ${token.componentCls}-selector`]: {\n background: token.colorBgContainerDisabled,\n color: token.colorTextDisabled\n }\n },\n [`&${token.componentCls}-multiple ${token.componentCls}-selection-item`]: {\n background: token.multipleItemBg,\n border: `${unit(token.lineWidth)} ${token.lineType} ${token.multipleItemBorderColor}`\n }\n })\n});\n// =====================================================\n// == Filled ==\n// =====================================================\nconst genBaseFilledStyle = (token, options) => {\n const {\n componentCls,\n antCls\n } = token;\n return {\n [`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: {\n background: options.bg,\n border: `${unit(token.lineWidth)} ${token.lineType} transparent`,\n color: options.color\n },\n [`&:not(${componentCls}-disabled):not(${componentCls}-customize-input):not(${antCls}-pagination-size-changer)`]: {\n [`&:hover ${componentCls}-selector`]: {\n background: options.hoverBg\n },\n [`${componentCls}-focused& ${componentCls}-selector`]: {\n background: token.selectorBg,\n borderColor: options.activeBorderColor,\n outline: 0\n }\n }\n };\n};\nconst genFilledStatusStyle = (token, options) => ({\n [`&${token.componentCls}-status-${options.status}`]: Object.assign({}, genBaseFilledStyle(token, options))\n});\nconst genFilledStyle = token => ({\n '&-filled': Object.assign(Object.assign(Object.assign(Object.assign({}, genBaseFilledStyle(token, {\n bg: token.colorFillTertiary,\n hoverBg: token.colorFillSecondary,\n activeBorderColor: token.colorPrimary,\n color: token.colorText\n })), genFilledStatusStyle(token, {\n status: 'error',\n bg: token.colorErrorBg,\n hoverBg: token.colorErrorBgHover,\n activeBorderColor: token.colorError,\n color: token.colorError\n })), genFilledStatusStyle(token, {\n status: 'warning',\n bg: token.colorWarningBg,\n hoverBg: token.colorWarningBgHover,\n activeBorderColor: token.colorWarning,\n color: token.colorWarning\n })), {\n [`&${token.componentCls}-disabled`]: {\n [`&:not(${token.componentCls}-customize-input) ${token.componentCls}-selector`]: {\n borderColor: token.colorBorder,\n background: token.colorBgContainerDisabled,\n color: token.colorTextDisabled\n }\n },\n [`&${token.componentCls}-multiple ${token.componentCls}-selection-item`]: {\n background: token.colorBgContainer,\n border: `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}`\n }\n })\n});\n// =====================================================\n// == Borderless ==\n// =====================================================\nconst genBorderlessStyle = token => ({\n '&-borderless': {\n [`${token.componentCls}-selector`]: {\n background: 'transparent',\n borderColor: 'transparent'\n },\n [`&${token.componentCls}-disabled`]: {\n [`&:not(${token.componentCls}-customize-input) ${token.componentCls}-selector`]: {\n color: token.colorTextDisabled\n }\n },\n [`&${token.componentCls}-multiple ${token.componentCls}-selection-item`]: {\n background: token.multipleItemBg,\n border: `${unit(token.lineWidth)} ${token.lineType} ${token.multipleItemBorderColor}`\n }\n }\n});\nconst genVariantsStyle = token => ({\n [token.componentCls]: Object.assign(Object.assign(Object.assign({}, genOutlinedStyle(token)), genFilledStyle(token)), genBorderlessStyle(token))\n});\nexport default genVariantsStyle;","import { resetComponent, resetIcon, textEllipsis } from '../../style';\nimport { genCompactItemStyle } from '../../style/compact-item';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nimport genDropdownStyle from './dropdown';\nimport genMultipleStyle from './multiple';\nimport genSingleStyle from './single';\nimport { prepareComponentToken } from './token';\nimport genVariantsStyle from './variants';\n// ============================= Selector =============================\nconst genSelectorStyle = token => {\n const {\n componentCls\n } = token;\n return {\n position: 'relative',\n transition: `all ${token.motionDurationMid} ${token.motionEaseInOut}`,\n input: {\n cursor: 'pointer'\n },\n [`${componentCls}-show-search&`]: {\n cursor: 'text',\n input: {\n cursor: 'auto',\n color: 'inherit',\n height: '100%'\n }\n },\n [`${componentCls}-disabled&`]: {\n cursor: 'not-allowed',\n input: {\n cursor: 'not-allowed'\n }\n }\n };\n};\n// ============================== Styles ==============================\n// /* Reset search input style */\nconst getSearchInputWithoutBorderStyle = token => {\n const {\n componentCls\n } = token;\n return {\n [`${componentCls}-selection-search-input`]: {\n margin: 0,\n padding: 0,\n background: 'transparent',\n border: 'none',\n outline: 'none',\n appearance: 'none',\n fontFamily: 'inherit',\n '&::-webkit-search-cancel-button': {\n display: 'none',\n '-webkit-appearance': 'none'\n }\n }\n };\n};\n// =============================== Base ===============================\nconst genBaseStyle = token => {\n const {\n antCls,\n componentCls,\n inputPaddingHorizontalBase,\n iconCls\n } = token;\n return {\n [componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n position: 'relative',\n display: 'inline-block',\n cursor: 'pointer',\n [`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: Object.assign(Object.assign({}, genSelectorStyle(token)), getSearchInputWithoutBorderStyle(token)),\n // ======================== Selection ========================\n [`${componentCls}-selection-item`]: Object.assign(Object.assign({\n flex: 1,\n fontWeight: 'normal',\n position: 'relative',\n userSelect: 'none'\n }, textEllipsis), {\n // https://github.com/ant-design/ant-design/issues/40421\n [`> ${antCls}-typography`]: {\n display: 'inline'\n }\n }),\n // ======================= Placeholder =======================\n [`${componentCls}-selection-placeholder`]: Object.assign(Object.assign({}, textEllipsis), {\n flex: 1,\n color: token.colorTextPlaceholder,\n pointerEvents: 'none'\n }),\n // ========================== Arrow ==========================\n [`${componentCls}-arrow`]: Object.assign(Object.assign({}, resetIcon()), {\n position: 'absolute',\n top: '50%',\n insetInlineStart: 'auto',\n insetInlineEnd: inputPaddingHorizontalBase,\n height: token.fontSizeIcon,\n marginTop: token.calc(token.fontSizeIcon).mul(-1).div(2).equal(),\n color: token.colorTextQuaternary,\n fontSize: token.fontSizeIcon,\n lineHeight: 1,\n textAlign: 'center',\n pointerEvents: 'none',\n display: 'flex',\n alignItems: 'center',\n transition: `opacity ${token.motionDurationSlow} ease`,\n [iconCls]: {\n verticalAlign: 'top',\n transition: `transform ${token.motionDurationSlow}`,\n '> svg': {\n verticalAlign: 'top'\n },\n [`&:not(${componentCls}-suffix)`]: {\n pointerEvents: 'auto'\n }\n },\n [`${componentCls}-disabled &`]: {\n cursor: 'not-allowed'\n },\n '> *:not(:last-child)': {\n marginInlineEnd: 8 // FIXME: magic\n }\n }),\n // ========================== Clear ==========================\n [`${componentCls}-clear`]: {\n position: 'absolute',\n top: '50%',\n insetInlineStart: 'auto',\n insetInlineEnd: inputPaddingHorizontalBase,\n zIndex: 1,\n display: 'inline-block',\n width: token.fontSizeIcon,\n height: token.fontSizeIcon,\n marginTop: token.calc(token.fontSizeIcon).mul(-1).div(2).equal(),\n color: token.colorTextQuaternary,\n fontSize: token.fontSizeIcon,\n fontStyle: 'normal',\n lineHeight: 1,\n textAlign: 'center',\n textTransform: 'none',\n cursor: 'pointer',\n opacity: 0,\n transition: `color ${token.motionDurationMid} ease, opacity ${token.motionDurationSlow} ease`,\n textRendering: 'auto',\n '&:before': {\n display: 'block'\n },\n '&:hover': {\n color: token.colorTextTertiary\n }\n },\n '&:hover': {\n [`${componentCls}-clear`]: {\n opacity: 1\n },\n // Should use the following selector, but since `:has` has poor compatibility,\n // we use `:not(:last-child)` instead, which may cause some problems in some cases.\n // [`${componentCls}-arrow:has(+ ${componentCls}-clear)`]: {\n [`${componentCls}-arrow:not(:last-child)`]: {\n opacity: 0\n }\n }\n }),\n // ========================= Feedback ==========================\n [`${componentCls}-has-feedback`]: {\n [`${componentCls}-clear`]: {\n insetInlineEnd: token.calc(inputPaddingHorizontalBase).add(token.fontSize).add(token.paddingXS).equal()\n }\n }\n };\n};\n// ============================== Styles ==============================\nconst genSelectStyle = token => {\n const {\n componentCls\n } = token;\n return [{\n [componentCls]: {\n // ==================== In Form ====================\n [`&${componentCls}-in-form-item`]: {\n width: '100%'\n }\n }\n },\n // =====================================================\n // == LTR ==\n // =====================================================\n // Base\n genBaseStyle(token),\n // Single\n genSingleStyle(token),\n // Multiple\n genMultipleStyle(token),\n // Dropdown\n genDropdownStyle(token),\n // =====================================================\n // == RTL ==\n // =====================================================\n {\n [`${componentCls}-rtl`]: {\n direction: 'rtl'\n }\n },\n // =====================================================\n // == Space Compact ==\n // =====================================================\n genCompactItemStyle(token, {\n borderElCls: `${componentCls}-selector`,\n focusElCls: `${componentCls}-focused`\n })];\n};\n// ============================== Export ==============================\nexport default genStyleHooks('Select', (token, _ref) => {\n let {\n rootPrefixCls\n } = _ref;\n const selectToken = mergeToken(token, {\n rootPrefixCls,\n inputPaddingHorizontalBase: token.calc(token.paddingSM).sub(1).equal(),\n multipleSelectItemHeight: token.multipleItemHeight,\n selectHeight: token.controlHeight\n });\n return [genSelectStyle(selectToken), genVariantsStyle(selectToken)];\n}, prepareComponentToken, {\n unitless: {\n optionLineHeight: true,\n optionSelectedFontWeight: true\n }\n});","// This icon file is generated automatically.\nvar CheckOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\" } }] }, \"name\": \"check\", \"theme\": \"outlined\" };\nexport default CheckOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CheckOutlinedSvg from \"@ant-design/icons-svg/es/asn/CheckOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CheckOutlined = function CheckOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: CheckOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n CheckOutlined.displayName = 'CheckOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(CheckOutlined);","// This icon file is generated automatically.\nvar CloseOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"fill-rule\": \"evenodd\", \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z\" } }] }, \"name\": \"close\", \"theme\": \"outlined\" };\nexport default CloseOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CloseOutlinedSvg from \"@ant-design/icons-svg/es/asn/CloseOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CloseOutlined = function CloseOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: CloseOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n CloseOutlined.displayName = 'CloseOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(CloseOutlined);","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n// TODO: 4.0 - codemod should help to change `filterOption` to support node props.\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport RcSelect, { OptGroup, Option } from 'rc-select';\nimport omit from \"rc-util/es/omit\";\nimport { useZIndex } from '../_util/hooks/useZIndex';\nimport { getTransitionName } from '../_util/motion';\nimport genPurePanel from '../_util/PurePanel';\nimport { getMergedStatus, getStatusClassNames } from '../_util/statusUtils';\nimport { devUseWarning } from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport DefaultRenderEmpty from '../config-provider/defaultRenderEmpty';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport useSize from '../config-provider/hooks/useSize';\nimport { FormItemInputContext } from '../form/context';\nimport useVariants from '../form/hooks/useVariants';\nimport { useCompactItemContext } from '../space/Compact';\nimport { useToken } from '../theme/internal';\nimport mergedBuiltinPlacements from './mergedBuiltinPlacements';\nimport useStyle from './style';\nimport useIcons from './useIcons';\nimport useShowArrow from './useShowArrow';\nconst SECRET_COMBOBOX_MODE_DO_NOT_USE = 'SECRET_COMBOBOX_MODE_DO_NOT_USE';\nconst InternalSelect = (props, ref) => {\n var _a;\n const {\n prefixCls: customizePrefixCls,\n bordered,\n className,\n rootClassName,\n getPopupContainer,\n popupClassName,\n dropdownClassName,\n listHeight = 256,\n placement,\n listItemHeight: customListItemHeight,\n size: customizeSize,\n disabled: customDisabled,\n notFoundContent,\n status: customStatus,\n builtinPlacements,\n dropdownMatchSelectWidth,\n popupMatchSelectWidth,\n direction: propDirection,\n style,\n allowClear,\n variant: customizeVariant,\n dropdownStyle,\n transitionName,\n tagRender,\n maxCount\n } = props,\n rest = __rest(props, [\"prefixCls\", \"bordered\", \"className\", \"rootClassName\", \"getPopupContainer\", \"popupClassName\", \"dropdownClassName\", \"listHeight\", \"placement\", \"listItemHeight\", \"size\", \"disabled\", \"notFoundContent\", \"status\", \"builtinPlacements\", \"dropdownMatchSelectWidth\", \"popupMatchSelectWidth\", \"direction\", \"style\", \"allowClear\", \"variant\", \"dropdownStyle\", \"transitionName\", \"tagRender\", \"maxCount\"]);\n const {\n getPopupContainer: getContextPopupContainer,\n getPrefixCls,\n renderEmpty,\n direction: contextDirection,\n virtual,\n popupMatchSelectWidth: contextPopupMatchSelectWidth,\n popupOverflow,\n select\n } = React.useContext(ConfigContext);\n const [, token] = useToken();\n const listItemHeight = customListItemHeight !== null && customListItemHeight !== void 0 ? customListItemHeight : token === null || token === void 0 ? void 0 : token.controlHeight;\n const prefixCls = getPrefixCls('select', customizePrefixCls);\n const rootPrefixCls = getPrefixCls();\n const direction = propDirection !== null && propDirection !== void 0 ? propDirection : contextDirection;\n const {\n compactSize,\n compactItemClassnames\n } = useCompactItemContext(prefixCls, direction);\n const [variant, enableVariantCls] = useVariants(customizeVariant, bordered);\n const rootCls = useCSSVarCls(prefixCls);\n const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n const mode = React.useMemo(() => {\n const {\n mode: m\n } = props;\n if (m === 'combobox') {\n return undefined;\n }\n if (m === SECRET_COMBOBOX_MODE_DO_NOT_USE) {\n return 'combobox';\n }\n return m;\n }, [props.mode]);\n const isMultiple = mode === 'multiple' || mode === 'tags';\n const showSuffixIcon = useShowArrow(props.suffixIcon, props.showArrow);\n const mergedPopupMatchSelectWidth = (_a = popupMatchSelectWidth !== null && popupMatchSelectWidth !== void 0 ? popupMatchSelectWidth : dropdownMatchSelectWidth) !== null && _a !== void 0 ? _a : contextPopupMatchSelectWidth;\n // ===================== Form Status =====================\n const {\n status: contextStatus,\n hasFeedback,\n isFormItemInput,\n feedbackIcon\n } = React.useContext(FormItemInputContext);\n const mergedStatus = getMergedStatus(contextStatus, customStatus);\n // ===================== Empty =====================\n let mergedNotFound;\n if (notFoundContent !== undefined) {\n mergedNotFound = notFoundContent;\n } else if (mode === 'combobox') {\n mergedNotFound = null;\n } else {\n mergedNotFound = (renderEmpty === null || renderEmpty === void 0 ? void 0 : renderEmpty('Select')) || /*#__PURE__*/React.createElement(DefaultRenderEmpty, {\n componentName: \"Select\"\n });\n }\n // ===================== Icons =====================\n const {\n suffixIcon,\n itemIcon,\n removeIcon,\n clearIcon\n } = useIcons(Object.assign(Object.assign({}, rest), {\n multiple: isMultiple,\n hasFeedback,\n feedbackIcon,\n showSuffixIcon,\n prefixCls,\n componentName: 'Select'\n }));\n const mergedAllowClear = allowClear === true ? {\n clearIcon\n } : allowClear;\n const selectProps = omit(rest, ['suffixIcon', 'itemIcon']);\n const mergedPopupClassName = classNames(popupClassName || dropdownClassName, {\n [`${prefixCls}-dropdown-${direction}`]: direction === 'rtl'\n }, rootClassName, cssVarCls, rootCls, hashId);\n const mergedSize = useSize(ctx => {\n var _a;\n return (_a = customizeSize !== null && customizeSize !== void 0 ? customizeSize : compactSize) !== null && _a !== void 0 ? _a : ctx;\n });\n // ===================== Disabled =====================\n const disabled = React.useContext(DisabledContext);\n const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n const mergedClassName = classNames({\n [`${prefixCls}-lg`]: mergedSize === 'large',\n [`${prefixCls}-sm`]: mergedSize === 'small',\n [`${prefixCls}-rtl`]: direction === 'rtl',\n [`${prefixCls}-${variant}`]: enableVariantCls,\n [`${prefixCls}-in-form-item`]: isFormItemInput\n }, getStatusClassNames(prefixCls, mergedStatus, hasFeedback), compactItemClassnames, select === null || select === void 0 ? void 0 : select.className, className, rootClassName, cssVarCls, rootCls, hashId);\n // ===================== Placement =====================\n const memoPlacement = React.useMemo(() => {\n if (placement !== undefined) {\n return placement;\n }\n return direction === 'rtl' ? 'bottomRight' : 'bottomLeft';\n }, [placement, direction]);\n // ====================== Warning ======================\n if (process.env.NODE_ENV !== 'production') {\n const warning = devUseWarning('Select');\n warning.deprecated(!dropdownClassName, 'dropdownClassName', 'popupClassName');\n warning.deprecated(dropdownMatchSelectWidth === undefined, 'dropdownMatchSelectWidth', 'popupMatchSelectWidth');\n process.env.NODE_ENV !== \"production\" ? warning(!('showArrow' in props), 'deprecated', '`showArrow` is deprecated which will be removed in next major version. It will be a default behavior, you can hide it by setting `suffixIcon` to null.') : void 0;\n warning.deprecated(!('bordered' in props), 'bordered', 'variant');\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof maxCount !== 'undefined' && !isMultiple), 'usage', '`maxCount` only works with mode `multiple` or `tags`') : void 0;\n }\n // ====================== zIndex =========================\n const [zIndex] = useZIndex('SelectLike', dropdownStyle === null || dropdownStyle === void 0 ? void 0 : dropdownStyle.zIndex);\n // ====================== Render =======================\n return wrapCSSVar( /*#__PURE__*/React.createElement(RcSelect, Object.assign({\n ref: ref,\n virtual: virtual,\n showSearch: select === null || select === void 0 ? void 0 : select.showSearch\n }, selectProps, {\n style: Object.assign(Object.assign({}, select === null || select === void 0 ? void 0 : select.style), style),\n dropdownMatchSelectWidth: mergedPopupMatchSelectWidth,\n transitionName: getTransitionName(rootPrefixCls, 'slide-up', transitionName),\n builtinPlacements: mergedBuiltinPlacements(builtinPlacements, popupOverflow),\n listHeight: listHeight,\n listItemHeight: listItemHeight,\n mode: mode,\n prefixCls: prefixCls,\n placement: memoPlacement,\n direction: direction,\n suffixIcon: suffixIcon,\n menuItemSelectedIcon: itemIcon,\n removeIcon: removeIcon,\n allowClear: mergedAllowClear,\n notFoundContent: mergedNotFound,\n className: mergedClassName,\n getPopupContainer: getPopupContainer || getContextPopupContainer,\n dropdownClassName: mergedPopupClassName,\n disabled: mergedDisabled,\n dropdownStyle: Object.assign(Object.assign({}, dropdownStyle), {\n zIndex\n }),\n maxCount: isMultiple ? maxCount : undefined,\n tagRender: isMultiple ? tagRender : undefined\n })));\n};\nif (process.env.NODE_ENV !== 'production') {\n InternalSelect.displayName = 'Select';\n}\nconst Select = /*#__PURE__*/React.forwardRef(InternalSelect);\n// We don't care debug panel\n/* istanbul ignore next */\nconst PurePanel = genPurePanel(Select);\nSelect.SECRET_COMBOBOX_MODE_DO_NOT_USE = SECRET_COMBOBOX_MODE_DO_NOT_USE;\nSelect.Option = Option;\nSelect.OptGroup = OptGroup;\nSelect._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;\nif (process.env.NODE_ENV !== 'production') {\n Select.displayName = 'Select';\n}\nexport default Select;","/**\n * Since Select, TreeSelect, Cascader is same Select like component.\n * We just use same hook to handle this logic.\n *\n * If `suffixIcon` is not equal to `null`, always show it.\n */\nexport default function useShowArrow(suffixIcon, showArrow) {\n return showArrow !== undefined ? showArrow : suffixIcon !== null;\n}","\"use client\";\n\nimport * as React from 'react';\nimport CheckOutlined from \"@ant-design/icons/es/icons/CheckOutlined\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport DownOutlined from \"@ant-design/icons/es/icons/DownOutlined\";\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport SearchOutlined from \"@ant-design/icons/es/icons/SearchOutlined\";\nimport { devUseWarning } from '../_util/warning';\nexport default function useIcons(_ref) {\n let {\n suffixIcon,\n clearIcon,\n menuItemSelectedIcon,\n removeIcon,\n loading,\n multiple,\n hasFeedback,\n prefixCls,\n showSuffixIcon,\n feedbackIcon,\n showArrow,\n componentName\n } = _ref;\n if (process.env.NODE_ENV !== 'production') {\n const warning = devUseWarning(componentName);\n warning.deprecated(!clearIcon, 'clearIcon', 'allowClear={{ clearIcon: React.ReactNode }}');\n }\n // Clear Icon\n const mergedClearIcon = clearIcon !== null && clearIcon !== void 0 ? clearIcon : /*#__PURE__*/React.createElement(CloseCircleFilled, null);\n // Validation Feedback Icon\n const getSuffixIconNode = arrowIcon => {\n if (suffixIcon === null && !hasFeedback && !showArrow) {\n return null;\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, showSuffixIcon !== false && arrowIcon, hasFeedback && feedbackIcon);\n };\n // Arrow item icon\n let mergedSuffixIcon = null;\n if (suffixIcon !== undefined) {\n mergedSuffixIcon = getSuffixIconNode(suffixIcon);\n } else if (loading) {\n mergedSuffixIcon = getSuffixIconNode( /*#__PURE__*/React.createElement(LoadingOutlined, {\n spin: true\n }));\n } else {\n const iconCls = `${prefixCls}-suffix`;\n mergedSuffixIcon = _ref2 => {\n let {\n open,\n showSearch\n } = _ref2;\n if (open && showSearch) {\n return getSuffixIconNode( /*#__PURE__*/React.createElement(SearchOutlined, {\n className: iconCls\n }));\n }\n return getSuffixIconNode( /*#__PURE__*/React.createElement(DownOutlined, {\n className: iconCls\n }));\n };\n }\n // Checked item icon\n let mergedItemIcon = null;\n if (menuItemSelectedIcon !== undefined) {\n mergedItemIcon = menuItemSelectedIcon;\n } else if (multiple) {\n mergedItemIcon = /*#__PURE__*/React.createElement(CheckOutlined, null);\n } else {\n mergedItemIcon = null;\n }\n let mergedRemoveIcon = null;\n if (removeIcon !== undefined) {\n mergedRemoveIcon = removeIcon;\n } else {\n mergedRemoveIcon = /*#__PURE__*/React.createElement(CloseOutlined, null);\n }\n return {\n clearIcon: mergedClearIcon,\n suffixIcon: mergedSuffixIcon,\n itemIcon: mergedItemIcon,\n removeIcon: mergedRemoveIcon\n };\n}","\"use client\";\n\nimport * as React from 'react';\nimport Select from '../select';\nconst MiniSelect = props => /*#__PURE__*/React.createElement(Select, Object.assign({}, props, {\n showSearch: true,\n size: \"small\"\n}));\nconst MiddleSelect = props => /*#__PURE__*/React.createElement(Select, Object.assign({}, props, {\n showSearch: true,\n size: \"middle\"\n}));\nMiniSelect.Option = Select.Option;\nMiddleSelect.Option = Select.Option;\nexport { MiniSelect, MiddleSelect };","import { unit } from '@ant-design/cssinjs';\nimport { genBasicInputStyle, genInputSmallStyle, initComponentToken, initInputToken } from '../../input/style';\nimport { genFocusOutline, genFocusStyle, resetComponent } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nimport { genBaseOutlinedStyle, genDisabledStyle } from '../../input/style/variants';\nconst genPaginationDisabledStyle = token => {\n const {\n componentCls\n } = token;\n return {\n [`${componentCls}-disabled`]: {\n '&, &:hover': {\n cursor: 'not-allowed',\n [`${componentCls}-item-link`]: {\n color: token.colorTextDisabled,\n cursor: 'not-allowed'\n }\n },\n '&:focus-visible': {\n cursor: 'not-allowed',\n [`${componentCls}-item-link`]: {\n color: token.colorTextDisabled,\n cursor: 'not-allowed'\n }\n }\n },\n [`&${componentCls}-disabled`]: {\n cursor: 'not-allowed',\n [`${componentCls}-item`]: {\n cursor: 'not-allowed',\n '&:hover, &:active': {\n backgroundColor: 'transparent'\n },\n a: {\n color: token.colorTextDisabled,\n backgroundColor: 'transparent',\n border: 'none',\n cursor: 'not-allowed'\n },\n '&-active': {\n borderColor: token.colorBorder,\n backgroundColor: token.itemActiveBgDisabled,\n '&:hover, &:active': {\n backgroundColor: token.itemActiveBgDisabled\n },\n a: {\n color: token.itemActiveColorDisabled\n }\n }\n },\n [`${componentCls}-item-link`]: {\n color: token.colorTextDisabled,\n cursor: 'not-allowed',\n '&:hover, &:active': {\n backgroundColor: 'transparent'\n },\n [`${componentCls}-simple&`]: {\n backgroundColor: 'transparent',\n '&:hover, &:active': {\n backgroundColor: 'transparent'\n }\n }\n },\n [`${componentCls}-simple-pager`]: {\n color: token.colorTextDisabled\n },\n [`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {\n [`${componentCls}-item-link-icon`]: {\n opacity: 0\n },\n [`${componentCls}-item-ellipsis`]: {\n opacity: 1\n }\n }\n },\n [`&${componentCls}-simple`]: {\n [`${componentCls}-prev, ${componentCls}-next`]: {\n [`&${componentCls}-disabled ${componentCls}-item-link`]: {\n '&:hover, &:active': {\n backgroundColor: 'transparent'\n }\n }\n }\n }\n };\n};\nconst genPaginationMiniStyle = token => {\n const {\n componentCls\n } = token;\n return {\n [`&${componentCls}-mini ${componentCls}-total-text, &${componentCls}-mini ${componentCls}-simple-pager`]: {\n height: token.itemSizeSM,\n lineHeight: unit(token.itemSizeSM)\n },\n [`&${componentCls}-mini ${componentCls}-item`]: {\n minWidth: token.itemSizeSM,\n height: token.itemSizeSM,\n margin: 0,\n lineHeight: unit(token.calc(token.itemSizeSM).sub(2).equal())\n },\n [`&${componentCls}-mini:not(${componentCls}-disabled) ${componentCls}-item:not(${componentCls}-item-active)`]: {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n '&:hover': {\n backgroundColor: token.colorBgTextHover\n },\n '&:active': {\n backgroundColor: token.colorBgTextActive\n }\n },\n [`&${componentCls}-mini ${componentCls}-prev, &${componentCls}-mini ${componentCls}-next`]: {\n minWidth: token.itemSizeSM,\n height: token.itemSizeSM,\n margin: 0,\n lineHeight: unit(token.itemSizeSM)\n },\n [`&${componentCls}-mini:not(${componentCls}-disabled)`]: {\n [`${componentCls}-prev, ${componentCls}-next`]: {\n [`&:hover ${componentCls}-item-link`]: {\n backgroundColor: token.colorBgTextHover\n },\n [`&:active ${componentCls}-item-link`]: {\n backgroundColor: token.colorBgTextActive\n },\n [`&${componentCls}-disabled:hover ${componentCls}-item-link`]: {\n backgroundColor: 'transparent'\n }\n }\n },\n [`\n &${componentCls}-mini ${componentCls}-prev ${componentCls}-item-link,\n &${componentCls}-mini ${componentCls}-next ${componentCls}-item-link\n `]: {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n '&::after': {\n height: token.itemSizeSM,\n lineHeight: unit(token.itemSizeSM)\n }\n },\n [`&${componentCls}-mini ${componentCls}-jump-prev, &${componentCls}-mini ${componentCls}-jump-next`]: {\n height: token.itemSizeSM,\n marginInlineEnd: 0,\n lineHeight: unit(token.itemSizeSM)\n },\n [`&${componentCls}-mini ${componentCls}-options`]: {\n marginInlineStart: token.paginationMiniOptionsMarginInlineStart,\n [`&-size-changer`]: {\n top: token.miniOptionsSizeChangerTop\n },\n [`&-quick-jumper`]: {\n height: token.itemSizeSM,\n lineHeight: unit(token.itemSizeSM),\n input: Object.assign(Object.assign({}, genInputSmallStyle(token)), {\n width: token.paginationMiniQuickJumperInputWidth,\n height: token.controlHeightSM\n })\n }\n }\n };\n};\nconst genPaginationSimpleStyle = token => {\n const {\n componentCls\n } = token;\n return {\n [`\n &${componentCls}-simple ${componentCls}-prev,\n &${componentCls}-simple ${componentCls}-next\n `]: {\n height: token.itemSizeSM,\n lineHeight: unit(token.itemSizeSM),\n verticalAlign: 'top',\n [`${componentCls}-item-link`]: {\n height: token.itemSizeSM,\n backgroundColor: 'transparent',\n border: 0,\n '&:hover': {\n backgroundColor: token.colorBgTextHover\n },\n '&:active': {\n backgroundColor: token.colorBgTextActive\n },\n '&::after': {\n height: token.itemSizeSM,\n lineHeight: unit(token.itemSizeSM)\n }\n }\n },\n [`&${componentCls}-simple ${componentCls}-simple-pager`]: {\n display: 'inline-block',\n height: token.itemSizeSM,\n marginInlineEnd: token.marginXS,\n input: {\n boxSizing: 'border-box',\n height: '100%',\n marginInlineEnd: token.marginXS,\n padding: `0 ${unit(token.paginationItemPaddingInline)}`,\n textAlign: 'center',\n backgroundColor: token.itemInputBg,\n border: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`,\n borderRadius: token.borderRadius,\n outline: 'none',\n transition: `border-color ${token.motionDurationMid}`,\n color: 'inherit',\n '&:hover': {\n borderColor: token.colorPrimary\n },\n '&:focus': {\n borderColor: token.colorPrimaryHover,\n boxShadow: `${unit(token.inputOutlineOffset)} 0 ${unit(token.controlOutlineWidth)} ${token.controlOutline}`\n },\n '&[disabled]': {\n color: token.colorTextDisabled,\n backgroundColor: token.colorBgContainerDisabled,\n borderColor: token.colorBorder,\n cursor: 'not-allowed'\n }\n }\n }\n };\n};\nconst genPaginationJumpStyle = token => {\n const {\n componentCls\n } = token;\n return {\n [`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {\n outline: 0,\n [`${componentCls}-item-container`]: {\n position: 'relative',\n [`${componentCls}-item-link-icon`]: {\n color: token.colorPrimary,\n fontSize: token.fontSizeSM,\n opacity: 0,\n transition: `all ${token.motionDurationMid}`,\n '&-svg': {\n top: 0,\n insetInlineEnd: 0,\n bottom: 0,\n insetInlineStart: 0,\n margin: 'auto'\n }\n },\n [`${componentCls}-item-ellipsis`]: {\n position: 'absolute',\n top: 0,\n insetInlineEnd: 0,\n bottom: 0,\n insetInlineStart: 0,\n display: 'block',\n margin: 'auto',\n color: token.colorTextDisabled,\n fontFamily: 'Arial, Helvetica, sans-serif',\n letterSpacing: token.paginationEllipsisLetterSpacing,\n textAlign: 'center',\n textIndent: token.paginationEllipsisTextIndent,\n opacity: 1,\n transition: `all ${token.motionDurationMid}`\n }\n },\n '&:hover': {\n [`${componentCls}-item-link-icon`]: {\n opacity: 1\n },\n [`${componentCls}-item-ellipsis`]: {\n opacity: 0\n }\n }\n },\n [`\n ${componentCls}-prev,\n ${componentCls}-jump-prev,\n ${componentCls}-jump-next\n `]: {\n marginInlineEnd: token.marginXS\n },\n [`\n ${componentCls}-prev,\n ${componentCls}-next,\n ${componentCls}-jump-prev,\n ${componentCls}-jump-next\n `]: {\n display: 'inline-block',\n minWidth: token.itemSize,\n height: token.itemSize,\n color: token.colorText,\n fontFamily: token.fontFamily,\n lineHeight: `${unit(token.itemSize)}`,\n textAlign: 'center',\n verticalAlign: 'middle',\n listStyle: 'none',\n borderRadius: token.borderRadius,\n cursor: 'pointer',\n transition: `all ${token.motionDurationMid}`\n },\n [`${componentCls}-prev, ${componentCls}-next`]: {\n fontFamily: 'Arial, Helvetica, sans-serif',\n outline: 0,\n button: {\n color: token.colorText,\n cursor: 'pointer',\n userSelect: 'none'\n },\n [`${componentCls}-item-link`]: {\n display: 'block',\n width: '100%',\n height: '100%',\n padding: 0,\n fontSize: token.fontSizeSM,\n textAlign: 'center',\n backgroundColor: 'transparent',\n border: `${unit(token.lineWidth)} ${token.lineType} transparent`,\n borderRadius: token.borderRadius,\n outline: 'none',\n transition: `all ${token.motionDurationMid}`\n },\n [`&:hover ${componentCls}-item-link`]: {\n backgroundColor: token.colorBgTextHover\n },\n [`&:active ${componentCls}-item-link`]: {\n backgroundColor: token.colorBgTextActive\n },\n [`&${componentCls}-disabled:hover`]: {\n [`${componentCls}-item-link`]: {\n backgroundColor: 'transparent'\n }\n }\n },\n [`${componentCls}-slash`]: {\n marginInlineEnd: token.paginationSlashMarginInlineEnd,\n marginInlineStart: token.paginationSlashMarginInlineStart\n },\n [`${componentCls}-options`]: {\n display: 'inline-block',\n marginInlineStart: token.margin,\n verticalAlign: 'middle',\n '&-size-changer.-select': {\n display: 'inline-block',\n width: 'auto'\n },\n '&-quick-jumper': {\n display: 'inline-block',\n height: token.controlHeight,\n marginInlineStart: token.marginXS,\n lineHeight: unit(token.controlHeight),\n verticalAlign: 'top',\n input: Object.assign(Object.assign(Object.assign({}, genBasicInputStyle(token)), genBaseOutlinedStyle(token, {\n borderColor: token.colorBorder,\n hoverBorderColor: token.colorPrimaryHover,\n activeBorderColor: token.colorPrimary,\n activeShadow: token.activeShadow\n })), {\n '&[disabled]': Object.assign({}, genDisabledStyle(token)),\n width: token.calc(token.controlHeightLG).mul(1.25).equal(),\n height: token.controlHeight,\n boxSizing: 'border-box',\n margin: 0,\n marginInlineStart: token.marginXS,\n marginInlineEnd: token.marginXS\n })\n }\n }\n };\n};\nconst genPaginationItemStyle = token => {\n const {\n componentCls\n } = token;\n return {\n [`${componentCls}-item`]: {\n display: 'inline-block',\n minWidth: token.itemSize,\n height: token.itemSize,\n marginInlineEnd: token.marginXS,\n fontFamily: token.fontFamily,\n lineHeight: unit(token.calc(token.itemSize).sub(2).equal()),\n textAlign: 'center',\n verticalAlign: 'middle',\n listStyle: 'none',\n backgroundColor: 'transparent',\n border: `${unit(token.lineWidth)} ${token.lineType} transparent`,\n borderRadius: token.borderRadius,\n outline: 0,\n cursor: 'pointer',\n userSelect: 'none',\n a: {\n display: 'block',\n padding: `0 ${unit(token.paginationItemPaddingInline)}`,\n color: token.colorText,\n '&:hover': {\n textDecoration: 'none'\n }\n },\n [`&:not(${componentCls}-item-active)`]: {\n '&:hover': {\n transition: `all ${token.motionDurationMid}`,\n backgroundColor: token.colorBgTextHover\n },\n '&:active': {\n backgroundColor: token.colorBgTextActive\n }\n },\n '&-active': {\n fontWeight: token.fontWeightStrong,\n backgroundColor: token.itemActiveBg,\n borderColor: token.colorPrimary,\n a: {\n color: token.colorPrimary\n },\n '&:hover': {\n borderColor: token.colorPrimaryHover\n },\n '&:hover a': {\n color: token.colorPrimaryHover\n }\n }\n }\n };\n};\nconst genPaginationStyle = token => {\n const {\n componentCls\n } = token;\n return {\n [componentCls]: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token)), {\n 'ul, ol': {\n margin: 0,\n padding: 0,\n listStyle: 'none'\n },\n '&::after': {\n display: 'block',\n clear: 'both',\n height: 0,\n overflow: 'hidden',\n visibility: 'hidden',\n content: '\"\"'\n },\n [`${componentCls}-total-text`]: {\n display: 'inline-block',\n height: token.itemSize,\n marginInlineEnd: token.marginXS,\n lineHeight: unit(token.calc(token.itemSize).sub(2).equal()),\n verticalAlign: 'middle'\n }\n }), genPaginationItemStyle(token)), genPaginationJumpStyle(token)), genPaginationSimpleStyle(token)), genPaginationMiniStyle(token)), genPaginationDisabledStyle(token)), {\n // media query style\n [`@media only screen and (max-width: ${token.screenLG}px)`]: {\n [`${componentCls}-item`]: {\n '&-after-jump-prev, &-before-jump-next': {\n display: 'none'\n }\n }\n },\n [`@media only screen and (max-width: ${token.screenSM}px)`]: {\n [`${componentCls}-options`]: {\n display: 'none'\n }\n }\n }),\n // rtl style\n [`&${token.componentCls}-rtl`]: {\n direction: 'rtl'\n }\n };\n};\nconst genPaginationFocusStyle = token => {\n const {\n componentCls\n } = token;\n return {\n [`${componentCls}:not(${componentCls}-disabled)`]: {\n [`${componentCls}-item`]: Object.assign({}, genFocusStyle(token)),\n [`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {\n '&:focus-visible': Object.assign({\n [`${componentCls}-item-link-icon`]: {\n opacity: 1\n },\n [`${componentCls}-item-ellipsis`]: {\n opacity: 0\n }\n }, genFocusOutline(token))\n },\n [`${componentCls}-prev, ${componentCls}-next`]: {\n [`&:focus-visible ${componentCls}-item-link`]: Object.assign({}, genFocusOutline(token))\n }\n }\n };\n};\nexport const prepareComponentToken = token => Object.assign({\n itemBg: token.colorBgContainer,\n itemSize: token.controlHeight,\n itemSizeSM: token.controlHeightSM,\n itemActiveBg: token.colorBgContainer,\n itemLinkBg: token.colorBgContainer,\n itemActiveColorDisabled: token.colorTextDisabled,\n itemActiveBgDisabled: token.controlItemBgActiveDisabled,\n itemInputBg: token.colorBgContainer,\n miniOptionsSizeChangerTop: 0\n}, initComponentToken(token));\nexport const prepareToken = token => mergeToken(token, {\n inputOutlineOffset: 0,\n paginationMiniOptionsMarginInlineStart: token.calc(token.marginXXS).div(2).equal(),\n paginationMiniQuickJumperInputWidth: token.calc(token.controlHeightLG).mul(1.1).equal(),\n paginationItemPaddingInline: token.calc(token.marginXXS).mul(1.5).equal(),\n paginationEllipsisLetterSpacing: token.calc(token.marginXXS).div(2).equal(),\n paginationSlashMarginInlineStart: token.marginXXS,\n paginationSlashMarginInlineEnd: token.marginSM,\n paginationEllipsisTextIndent: '0.13em' // magic for ui experience\n}, initInputToken(token));\n// ============================== Export ==============================\nexport default genStyleHooks('Pagination', token => {\n const paginationToken = prepareToken(token);\n return [genPaginationStyle(paginationToken), genPaginationFocusStyle(paginationToken)];\n}, prepareComponentToken);","import { genSubStyleComponent } from '../../theme/util/genComponentStyleHook';\nimport { prepareComponentToken, prepareToken } from '.';\nimport { unit } from '@ant-design/cssinjs';\nconst genBorderedStyle = token => {\n const {\n componentCls\n } = token;\n return {\n [`${componentCls}${componentCls}-bordered${componentCls}-disabled:not(${componentCls}-mini)`]: {\n '&, &:hover': {\n [`${componentCls}-item-link`]: {\n borderColor: token.colorBorder\n }\n },\n '&:focus-visible': {\n [`${componentCls}-item-link`]: {\n borderColor: token.colorBorder\n }\n },\n [`${componentCls}-item, ${componentCls}-item-link`]: {\n backgroundColor: token.colorBgContainerDisabled,\n borderColor: token.colorBorder,\n [`&:hover:not(${componentCls}-item-active)`]: {\n backgroundColor: token.colorBgContainerDisabled,\n borderColor: token.colorBorder,\n a: {\n color: token.colorTextDisabled\n }\n },\n [`&${componentCls}-item-active`]: {\n backgroundColor: token.itemActiveBgDisabled\n }\n },\n [`${componentCls}-prev, ${componentCls}-next`]: {\n '&:hover button': {\n backgroundColor: token.colorBgContainerDisabled,\n borderColor: token.colorBorder,\n color: token.colorTextDisabled\n },\n [`${componentCls}-item-link`]: {\n backgroundColor: token.colorBgContainerDisabled,\n borderColor: token.colorBorder\n }\n }\n },\n [`${componentCls}${componentCls}-bordered:not(${componentCls}-mini)`]: {\n [`${componentCls}-prev, ${componentCls}-next`]: {\n '&:hover button': {\n borderColor: token.colorPrimaryHover,\n backgroundColor: token.itemBg\n },\n [`${componentCls}-item-link`]: {\n backgroundColor: token.itemLinkBg,\n borderColor: token.colorBorder\n },\n [`&:hover ${componentCls}-item-link`]: {\n borderColor: token.colorPrimary,\n backgroundColor: token.itemBg,\n color: token.colorPrimary\n },\n [`&${componentCls}-disabled`]: {\n [`${componentCls}-item-link`]: {\n borderColor: token.colorBorder,\n color: token.colorTextDisabled\n }\n }\n },\n [`${componentCls}-item`]: {\n backgroundColor: token.itemBg,\n border: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`,\n [`&:hover:not(${componentCls}-item-active)`]: {\n borderColor: token.colorPrimary,\n backgroundColor: token.itemBg,\n a: {\n color: token.colorPrimary\n }\n },\n '&-active': {\n borderColor: token.colorPrimary\n }\n }\n }\n };\n};\nexport default genSubStyleComponent(['Pagination', 'bordered'], token => {\n const paginationToken = prepareToken(token);\n return [genBorderedStyle(paginationToken)];\n}, prepareComponentToken);","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport DoubleLeftOutlined from \"@ant-design/icons/es/icons/DoubleLeftOutlined\";\nimport DoubleRightOutlined from \"@ant-design/icons/es/icons/DoubleRightOutlined\";\nimport LeftOutlined from \"@ant-design/icons/es/icons/LeftOutlined\";\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport classNames from 'classnames';\nimport RcPagination from 'rc-pagination';\nimport enUS from \"rc-pagination/es/locale/en_US\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useSize from '../config-provider/hooks/useSize';\nimport useBreakpoint from '../grid/hooks/useBreakpoint';\nimport { useLocale } from '../locale';\nimport { MiddleSelect, MiniSelect } from './Select';\nimport useStyle from './style';\nimport { useToken } from '../theme/internal';\nimport BorderedStyle from './style/bordered';\nconst Pagination = props => {\n const {\n prefixCls: customizePrefixCls,\n selectPrefixCls: customizeSelectPrefixCls,\n className,\n rootClassName,\n style,\n size: customizeSize,\n locale: customLocale,\n selectComponentClass,\n responsive,\n showSizeChanger\n } = props,\n restProps = __rest(props, [\"prefixCls\", \"selectPrefixCls\", \"className\", \"rootClassName\", \"style\", \"size\", \"locale\", \"selectComponentClass\", \"responsive\", \"showSizeChanger\"]);\n const {\n xs\n } = useBreakpoint(responsive);\n const [, token] = useToken();\n const {\n getPrefixCls,\n direction,\n pagination = {}\n } = React.useContext(ConfigContext);\n const prefixCls = getPrefixCls('pagination', customizePrefixCls);\n // Style\n const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n const mergedShowSizeChanger = showSizeChanger !== null && showSizeChanger !== void 0 ? showSizeChanger : pagination.showSizeChanger;\n const iconsProps = React.useMemo(() => {\n const ellipsis = /*#__PURE__*/React.createElement(\"span\", {\n className: `${prefixCls}-item-ellipsis`\n }, \"\\u2022\\u2022\\u2022\");\n const prevIcon = /*#__PURE__*/React.createElement(\"button\", {\n className: `${prefixCls}-item-link`,\n type: \"button\",\n tabIndex: -1\n }, direction === 'rtl' ? /*#__PURE__*/React.createElement(RightOutlined, null) : /*#__PURE__*/React.createElement(LeftOutlined, null));\n const nextIcon = /*#__PURE__*/React.createElement(\"button\", {\n className: `${prefixCls}-item-link`,\n type: \"button\",\n tabIndex: -1\n }, direction === 'rtl' ? /*#__PURE__*/React.createElement(LeftOutlined, null) : /*#__PURE__*/React.createElement(RightOutlined, null));\n const jumpPrevIcon = /*#__PURE__*/React.createElement(\"a\", {\n className: `${prefixCls}-item-link`\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-item-container`\n }, direction === 'rtl' ? ( /*#__PURE__*/React.createElement(DoubleRightOutlined, {\n className: `${prefixCls}-item-link-icon`\n })) : ( /*#__PURE__*/React.createElement(DoubleLeftOutlined, {\n className: `${prefixCls}-item-link-icon`\n })), ellipsis));\n const jumpNextIcon = /*#__PURE__*/React.createElement(\"a\", {\n className: `${prefixCls}-item-link`\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-item-container`\n }, direction === 'rtl' ? ( /*#__PURE__*/React.createElement(DoubleLeftOutlined, {\n className: `${prefixCls}-item-link-icon`\n })) : ( /*#__PURE__*/React.createElement(DoubleRightOutlined, {\n className: `${prefixCls}-item-link-icon`\n })), ellipsis));\n return {\n prevIcon,\n nextIcon,\n jumpPrevIcon,\n jumpNextIcon\n };\n }, [direction, prefixCls]);\n const [contextLocale] = useLocale('Pagination', enUS);\n const locale = Object.assign(Object.assign({}, contextLocale), customLocale);\n const mergedSize = useSize(customizeSize);\n const isSmall = mergedSize === 'small' || !!(xs && !mergedSize && responsive);\n const selectPrefixCls = getPrefixCls('select', customizeSelectPrefixCls);\n const extendedClassName = classNames({\n [`${prefixCls}-mini`]: isSmall,\n [`${prefixCls}-rtl`]: direction === 'rtl',\n [`${prefixCls}-bordered`]: token.wireframe\n }, pagination === null || pagination === void 0 ? void 0 : pagination.className, className, rootClassName, hashId, cssVarCls);\n const mergedStyle = Object.assign(Object.assign({}, pagination === null || pagination === void 0 ? void 0 : pagination.style), style);\n return wrapCSSVar( /*#__PURE__*/React.createElement(React.Fragment, null, token.wireframe && /*#__PURE__*/React.createElement(BorderedStyle, {\n prefixCls: prefixCls\n }), /*#__PURE__*/React.createElement(RcPagination, Object.assign({}, iconsProps, restProps, {\n style: mergedStyle,\n prefixCls: prefixCls,\n selectPrefixCls: selectPrefixCls,\n className: extendedClassName,\n selectComponentClass: selectComponentClass || (isSmall ? MiniSelect : MiddleSelect),\n locale: locale,\n showSizeChanger: mergedShowSizeChanger\n }))));\n};\nif (process.env.NODE_ENV !== 'production') {\n Pagination.displayName = 'Pagination';\n}\nexport default Pagination;","\"use client\";\n\nimport Pagination from './Pagination';\nexport default Pagination;","/* eslint-disable no-undefined */\n\nimport throttle from './throttle.js';\n\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\nexport default function (delay, callback, options) {\n\tconst { atBegin = false } = options || {};\n\treturn throttle(delay, callback, { debounceMode: atBegin !== false });\n}\n","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n * are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n * as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n * one final time after the last throttled-function call. (After the throttled-function has not been called for\n * `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n * callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n * false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nexport default function (delay, callback, options) {\n\tconst {\n\t\tnoTrailing = false,\n\t\tnoLeading = false,\n\t\tdebounceMode = undefined\n\t} = options || {};\n\t/*\n\t * After wrapper has stopped being called, this timeout ensures that\n\t * `callback` is executed at the proper times in `throttle` and `end`\n\t * debounce modes.\n\t */\n\tlet timeoutID;\n\tlet cancelled = false;\n\n\t// Keep track of the last time `callback` was executed.\n\tlet lastExec = 0;\n\n\t// Function to clear existing timeout\n\tfunction clearExistingTimeout() {\n\t\tif (timeoutID) {\n\t\t\tclearTimeout(timeoutID);\n\t\t}\n\t}\n\n\t// Function to cancel next exec\n\tfunction cancel(options) {\n\t\tconst { upcomingOnly = false } = options || {};\n\t\tclearExistingTimeout();\n\t\tcancelled = !upcomingOnly;\n\t}\n\n\t/*\n\t * The `wrapper` function encapsulates all of the throttling / debouncing\n\t * functionality and when executed will limit the rate at which `callback`\n\t * is executed.\n\t */\n\tfunction wrapper(...arguments_) {\n\t\tlet self = this;\n\t\tlet elapsed = Date.now() - lastExec;\n\n\t\tif (cancelled) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Execute `callback` and update the `lastExec` timestamp.\n\t\tfunction exec() {\n\t\t\tlastExec = Date.now();\n\t\t\tcallback.apply(self, arguments_);\n\t\t}\n\n\t\t/*\n\t\t * If `debounceMode` is true (at begin) this is used to clear the flag\n\t\t * to allow future `callback` executions.\n\t\t */\n\t\tfunction clear() {\n\t\t\ttimeoutID = undefined;\n\t\t}\n\n\t\tif (!noLeading && debounceMode && !timeoutID) {\n\t\t\t/*\n\t\t\t * Since `wrapper` is being called for the first time and\n\t\t\t * `debounceMode` is true (at begin), execute `callback`\n\t\t\t * and noLeading != true.\n\t\t\t */\n\t\t\texec();\n\t\t}\n\n\t\tclearExistingTimeout();\n\n\t\tif (debounceMode === undefined && elapsed > delay) {\n\t\t\tif (noLeading) {\n\t\t\t\t/*\n\t\t\t\t * In throttle mode with noLeading, if `delay` time has\n\t\t\t\t * been exceeded, update `lastExec` and schedule `callback`\n\t\t\t\t * to execute after `delay` ms.\n\t\t\t\t */\n\t\t\t\tlastExec = Date.now();\n\t\t\t\tif (!noTrailing) {\n\t\t\t\t\ttimeoutID = setTimeout(debounceMode ? clear : exec, delay);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t/*\n\t\t\t\t * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n\t\t\t\t * `callback`.\n\t\t\t\t */\n\t\t\t\texec();\n\t\t\t}\n\t\t} else if (noTrailing !== true) {\n\t\t\t/*\n\t\t\t * In trailing throttle mode, since `delay` time has not been\n\t\t\t * exceeded, schedule `callback` to execute `delay` ms after most\n\t\t\t * recent execution.\n\t\t\t *\n\t\t\t * If `debounceMode` is true (at begin), schedule `clear` to execute\n\t\t\t * after `delay` ms.\n\t\t\t *\n\t\t\t * If `debounceMode` is false (at end), schedule `callback` to\n\t\t\t * execute after `delay` ms.\n\t\t\t */\n\t\t\ttimeoutID = setTimeout(\n\t\t\t\tdebounceMode ? clear : exec,\n\t\t\t\tdebounceMode === undefined ? delay - elapsed : delay\n\t\t\t);\n\t\t}\n\t}\n\n\twrapper.cancel = cancel;\n\n\t// Return the wrapper function.\n\treturn wrapper;\n}\n","import { Keyframes } from '@ant-design/cssinjs';\nimport { resetComponent } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nconst antSpinMove = new Keyframes('antSpinMove', {\n to: {\n opacity: 1\n }\n});\nconst antRotate = new Keyframes('antRotate', {\n to: {\n transform: 'rotate(405deg)'\n }\n});\nconst genSpinStyle = token => {\n const {\n componentCls,\n calc\n } = token;\n return {\n [`${componentCls}`]: Object.assign(Object.assign({}, resetComponent(token)), {\n position: 'absolute',\n display: 'none',\n color: token.colorPrimary,\n fontSize: 0,\n textAlign: 'center',\n verticalAlign: 'middle',\n opacity: 0,\n transition: `transform ${token.motionDurationSlow} ${token.motionEaseInOutCirc}`,\n '&-spinning': {\n position: 'static',\n display: 'inline-block',\n opacity: 1\n },\n [`${componentCls}-text`]: {\n fontSize: token.fontSize,\n paddingTop: calc(calc(token.dotSize).sub(token.fontSize)).div(2).add(2).equal()\n },\n '&-fullscreen': {\n position: 'fixed',\n width: '100vw',\n height: '100vh',\n backgroundColor: token.colorBgMask,\n zIndex: token.zIndexPopupBase,\n inset: 0,\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n justifyContent: 'center',\n opacity: 0,\n visibility: 'hidden',\n transition: `all ${token.motionDurationMid}`,\n '&-show': {\n opacity: 1,\n visibility: 'visible'\n },\n [`${componentCls}-dot ${componentCls}-dot-item`]: {\n backgroundColor: token.colorWhite\n },\n [`${componentCls}-text`]: {\n color: token.colorTextLightSolid\n }\n },\n '&-nested-loading': {\n position: 'relative',\n [`> div > ${componentCls}`]: {\n position: 'absolute',\n top: 0,\n insetInlineStart: 0,\n zIndex: 4,\n display: 'block',\n width: '100%',\n height: '100%',\n maxHeight: token.contentHeight,\n [`${componentCls}-dot`]: {\n position: 'absolute',\n top: '50%',\n insetInlineStart: '50%',\n margin: calc(token.dotSize).mul(-1).div(2).equal()\n },\n [`${componentCls}-text`]: {\n position: 'absolute',\n top: '50%',\n width: '100%',\n textShadow: `0 1px 2px ${token.colorBgContainer}` // FIXME: shadow\n },\n [`&${componentCls}-show-text ${componentCls}-dot`]: {\n marginTop: calc(token.dotSize).div(2).mul(-1).sub(10).equal()\n },\n '&-sm': {\n [`${componentCls}-dot`]: {\n margin: calc(token.dotSizeSM).mul(-1).div(2).equal()\n },\n [`${componentCls}-text`]: {\n paddingTop: calc(calc(token.dotSizeSM).sub(token.fontSize)).div(2).add(2).equal()\n },\n [`&${componentCls}-show-text ${componentCls}-dot`]: {\n marginTop: calc(token.dotSizeSM).div(2).mul(-1).sub(10).equal()\n }\n },\n '&-lg': {\n [`${componentCls}-dot`]: {\n margin: calc(token.dotSizeLG).mul(-1).div(2).equal()\n },\n [`${componentCls}-text`]: {\n paddingTop: calc(calc(token.dotSizeLG).sub(token.fontSize)).div(2).add(2).equal()\n },\n [`&${componentCls}-show-text ${componentCls}-dot`]: {\n marginTop: calc(token.dotSizeLG).div(2).mul(-1).sub(10).equal()\n }\n }\n },\n [`${componentCls}-container`]: {\n position: 'relative',\n transition: `opacity ${token.motionDurationSlow}`,\n '&::after': {\n position: 'absolute',\n top: 0,\n insetInlineEnd: 0,\n bottom: 0,\n insetInlineStart: 0,\n zIndex: 10,\n width: '100%',\n height: '100%',\n background: token.colorBgContainer,\n opacity: 0,\n transition: `all ${token.motionDurationSlow}`,\n content: '\"\"',\n pointerEvents: 'none'\n }\n },\n [`${componentCls}-blur`]: {\n clear: 'both',\n opacity: 0.5,\n userSelect: 'none',\n pointerEvents: 'none',\n [`&::after`]: {\n opacity: 0.4,\n pointerEvents: 'auto'\n }\n }\n },\n // tip\n // ------------------------------\n [`&-tip`]: {\n color: token.spinDotDefault\n },\n // dots\n // ------------------------------\n [`${componentCls}-dot`]: {\n position: 'relative',\n display: 'inline-block',\n fontSize: token.dotSize,\n width: '1em',\n height: '1em',\n '&-item': {\n position: 'absolute',\n display: 'block',\n width: calc(token.dotSize).sub(calc(token.marginXXS).div(2)).div(2).equal(),\n height: calc(token.dotSize).sub(calc(token.marginXXS).div(2)).div(2).equal(),\n backgroundColor: token.colorPrimary,\n borderRadius: '100%',\n transform: 'scale(0.75)',\n transformOrigin: '50% 50%',\n opacity: 0.3,\n animationName: antSpinMove,\n animationDuration: '1s',\n animationIterationCount: 'infinite',\n animationTimingFunction: 'linear',\n animationDirection: 'alternate',\n '&:nth-child(1)': {\n top: 0,\n insetInlineStart: 0,\n animationDelay: '0s'\n },\n '&:nth-child(2)': {\n top: 0,\n insetInlineEnd: 0,\n animationDelay: '0.4s'\n },\n '&:nth-child(3)': {\n insetInlineEnd: 0,\n bottom: 0,\n animationDelay: '0.8s'\n },\n '&:nth-child(4)': {\n bottom: 0,\n insetInlineStart: 0,\n animationDelay: '1.2s'\n }\n },\n '&-spin': {\n transform: 'rotate(45deg)',\n animationName: antRotate,\n animationDuration: '1.2s',\n animationIterationCount: 'infinite',\n animationTimingFunction: 'linear'\n }\n },\n // small\n [`&-sm ${componentCls}-dot`]: {\n fontSize: token.dotSizeSM,\n i: {\n width: calc(calc(token.dotSizeSM).sub(calc(token.marginXXS).div(2))).div(2).equal(),\n height: calc(calc(token.dotSizeSM).sub(calc(token.marginXXS).div(2))).div(2).equal()\n }\n },\n // large\n [`&-lg ${componentCls}-dot`]: {\n fontSize: token.dotSizeLG,\n i: {\n width: calc(calc(token.dotSizeLG).sub(token.marginXXS)).div(2).equal(),\n height: calc(calc(token.dotSizeLG).sub(token.marginXXS)).div(2).equal()\n }\n },\n [`&${componentCls}-show-text ${componentCls}-text`]: {\n display: 'block'\n }\n })\n };\n};\nexport const prepareComponentToken = token => {\n const {\n controlHeightLG,\n controlHeight\n } = token;\n return {\n contentHeight: 400,\n dotSize: controlHeightLG / 2,\n dotSizeSM: controlHeightLG * 0.35,\n dotSizeLG: controlHeight\n };\n};\n// ============================== Export ==============================\nexport default genStyleHooks('Spin', token => {\n const spinToken = mergeToken(token, {\n spinDotDefault: token.colorTextDescription\n });\n return [genSpinStyle(spinToken)];\n}, prepareComponentToken);","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport { debounce } from 'throttle-debounce';\nimport { cloneElement, isValidElement } from '../_util/reactNode';\nimport { devUseWarning } from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style/index';\nconst SpinSizes = ['small', 'default', 'large'];\n// Render indicator\nlet defaultIndicator = null;\nfunction renderIndicator(prefixCls, props) {\n const {\n indicator\n } = props;\n const dotClassName = `${prefixCls}-dot`;\n // should not be render default indicator when indicator value is null\n if (indicator === null) {\n return null;\n }\n if (isValidElement(indicator)) {\n return cloneElement(indicator, {\n className: classNames(indicator.props.className, dotClassName)\n });\n }\n if (isValidElement(defaultIndicator)) {\n return cloneElement(defaultIndicator, {\n className: classNames(defaultIndicator.props.className, dotClassName)\n });\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(dotClassName, `${prefixCls}-dot-spin`)\n }, /*#__PURE__*/React.createElement(\"i\", {\n className: `${prefixCls}-dot-item`,\n key: 1\n }), /*#__PURE__*/React.createElement(\"i\", {\n className: `${prefixCls}-dot-item`,\n key: 2\n }), /*#__PURE__*/React.createElement(\"i\", {\n className: `${prefixCls}-dot-item`,\n key: 3\n }), /*#__PURE__*/React.createElement(\"i\", {\n className: `${prefixCls}-dot-item`,\n key: 4\n }));\n}\nfunction shouldDelay(spinning, delay) {\n return !!spinning && !!delay && !isNaN(Number(delay));\n}\nconst Spin = props => {\n const {\n prefixCls: customizePrefixCls,\n spinning: customSpinning = true,\n delay = 0,\n className,\n rootClassName,\n size = 'default',\n tip,\n wrapperClassName,\n style,\n children,\n fullscreen = false\n } = props,\n restProps = __rest(props, [\"prefixCls\", \"spinning\", \"delay\", \"className\", \"rootClassName\", \"size\", \"tip\", \"wrapperClassName\", \"style\", \"children\", \"fullscreen\"]);\n const {\n getPrefixCls\n } = React.useContext(ConfigContext);\n const prefixCls = getPrefixCls('spin', customizePrefixCls);\n const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n const [spinning, setSpinning] = React.useState(() => customSpinning && !shouldDelay(customSpinning, delay));\n React.useEffect(() => {\n if (customSpinning) {\n const showSpinning = debounce(delay, () => {\n setSpinning(true);\n });\n showSpinning();\n return () => {\n var _a;\n (_a = showSpinning === null || showSpinning === void 0 ? void 0 : showSpinning.cancel) === null || _a === void 0 ? void 0 : _a.call(showSpinning);\n };\n }\n setSpinning(false);\n }, [delay, customSpinning]);\n const isNestedPattern = React.useMemo(() => typeof children !== 'undefined' && !fullscreen, [children, fullscreen]);\n if (process.env.NODE_ENV !== 'production') {\n const warning = devUseWarning('Spin');\n process.env.NODE_ENV !== \"production\" ? warning(!tip || isNestedPattern || fullscreen, 'usage', '`tip` only work in nest or fullscreen pattern.') : void 0;\n }\n const {\n direction,\n spin\n } = React.useContext(ConfigContext);\n const spinClassName = classNames(prefixCls, spin === null || spin === void 0 ? void 0 : spin.className, {\n [`${prefixCls}-sm`]: size === 'small',\n [`${prefixCls}-lg`]: size === 'large',\n [`${prefixCls}-spinning`]: spinning,\n [`${prefixCls}-show-text`]: !!tip,\n [`${prefixCls}-fullscreen`]: fullscreen,\n [`${prefixCls}-fullscreen-show`]: fullscreen && spinning,\n [`${prefixCls}-rtl`]: direction === 'rtl'\n }, className, rootClassName, hashId, cssVarCls);\n const containerClassName = classNames(`${prefixCls}-container`, {\n [`${prefixCls}-blur`]: spinning\n });\n // fix https://fb.me/react-unknown-prop\n const divProps = omit(restProps, ['indicator']);\n const mergedStyle = Object.assign(Object.assign({}, spin === null || spin === void 0 ? void 0 : spin.style), style);\n const spinElement = /*#__PURE__*/React.createElement(\"div\", Object.assign({}, divProps, {\n style: mergedStyle,\n className: spinClassName,\n \"aria-live\": \"polite\",\n \"aria-busy\": spinning\n }), renderIndicator(prefixCls, props), tip && (isNestedPattern || fullscreen) ? ( /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-text`\n }, tip)) : null);\n if (isNestedPattern) {\n return wrapCSSVar( /*#__PURE__*/React.createElement(\"div\", Object.assign({}, divProps, {\n className: classNames(`${prefixCls}-nested-loading`, wrapperClassName, hashId, cssVarCls)\n }), spinning && /*#__PURE__*/React.createElement(\"div\", {\n key: \"loading\"\n }, spinElement), /*#__PURE__*/React.createElement(\"div\", {\n className: containerClassName,\n key: \"container\"\n }, children)));\n }\n return wrapCSSVar(spinElement);\n};\nSpin.setDefaultIndicator = indicator => {\n defaultIndicator = indicator;\n};\nif (process.env.NODE_ENV !== 'production') {\n Spin.displayName = 'Spin';\n}\nexport default Spin;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nfunction renderExpandIcon(locale) {\n return function expandIcon(_ref) {\n let {\n prefixCls,\n onExpand,\n record,\n expanded,\n expandable\n } = _ref;\n const iconPrefix = `${prefixCls}-row-expand-icon`;\n return /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: e => {\n onExpand(record, e);\n e.stopPropagation();\n },\n className: classNames(iconPrefix, {\n [`${iconPrefix}-spaced`]: !expandable,\n [`${iconPrefix}-expanded`]: expandable && expanded,\n [`${iconPrefix}-collapsed`]: expandable && !expanded\n }),\n \"aria-label\": expanded ? locale.collapse : locale.expand,\n \"aria-expanded\": expanded\n });\n };\n}\nexport default renderExpandIcon;","export function getColumnKey(column, defaultKey) {\n if ('key' in column && column.key !== undefined && column.key !== null) {\n return column.key;\n }\n if (column.dataIndex) {\n return Array.isArray(column.dataIndex) ? column.dataIndex.join('.') : column.dataIndex;\n }\n return defaultKey;\n}\nexport function getColumnPos(index, pos) {\n return pos ? `${pos}-${index}` : `${index}`;\n}\nexport function renderColumnTitle(title, props) {\n if (typeof title === 'function') {\n return title(props);\n }\n return title;\n}\n/**\n * Safe get column title\n *\n * Should filter [object Object]\n *\n * @param title\n * @returns\n */\nexport function safeColumnTitle(title, props) {\n const res = renderColumnTitle(title, props);\n if (Object.prototype.toString.call(res) === '[object Object]') return '';\n return res;\n}","// This icon file is generated automatically.\nvar FilterFilled = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\" } }] }, \"name\": \"filter\", \"theme\": \"filled\" };\nexport default FilterFilled;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport FilterFilledSvg from \"@ant-design/icons-svg/es/asn/FilterFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar FilterFilled = function FilterFilled(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: FilterFilledSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n FilterFilled.displayName = 'FilterFilled';\n}\nexport default /*#__PURE__*/React.forwardRef(FilterFilled);","export default function _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError(\"Cannot destructure \" + obj);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectDestructuringEmpty from \"@babel/runtime/helpers/esm/objectDestructuringEmpty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"style\", \"motion\", \"motionNodes\", \"motionType\", \"onMotionStart\", \"onMotionEnd\", \"active\", \"treeNodeRequiredProps\"];\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport * as React from 'react';\nimport { TreeContext } from \"./contextTypes\";\nimport TreeNode from \"./TreeNode\";\nimport useUnmount from \"./useUnmount\";\nimport { getTreeNodeProps } from \"./utils/treeUtil\";\nvar MotionTreeNode = function MotionTreeNode(_ref, ref) {\n var className = _ref.className,\n style = _ref.style,\n motion = _ref.motion,\n motionNodes = _ref.motionNodes,\n motionType = _ref.motionType,\n onOriginMotionStart = _ref.onMotionStart,\n onOriginMotionEnd = _ref.onMotionEnd,\n active = _ref.active,\n treeNodeRequiredProps = _ref.treeNodeRequiredProps,\n props = _objectWithoutProperties(_ref, _excluded);\n var _React$useState = React.useState(true),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n visible = _React$useState2[0],\n setVisible = _React$useState2[1];\n var _React$useContext = React.useContext(TreeContext),\n prefixCls = _React$useContext.prefixCls;\n\n // Calculate target visible here.\n // And apply in effect to make `leave` motion work.\n var targetVisible = motionNodes && motionType !== 'hide';\n useLayoutEffect(function () {\n if (motionNodes) {\n if (targetVisible !== visible) {\n setVisible(targetVisible);\n }\n }\n }, [motionNodes]);\n var triggerMotionStart = function triggerMotionStart() {\n if (motionNodes) {\n onOriginMotionStart();\n }\n };\n\n // Should only trigger once\n var triggerMotionEndRef = React.useRef(false);\n var triggerMotionEnd = function triggerMotionEnd() {\n if (motionNodes && !triggerMotionEndRef.current) {\n triggerMotionEndRef.current = true;\n onOriginMotionEnd();\n }\n };\n\n // Effect if unmount\n useUnmount(triggerMotionStart, triggerMotionEnd);\n\n // Motion end event\n var onVisibleChanged = function onVisibleChanged(nextVisible) {\n if (targetVisible === nextVisible) {\n triggerMotionEnd();\n }\n };\n if (motionNodes) {\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n ref: ref,\n visible: visible\n }, motion, {\n motionAppear: motionType === 'show',\n onVisibleChanged: onVisibleChanged\n }), function (_ref2, motionRef) {\n var motionClassName = _ref2.className,\n motionStyle = _ref2.style;\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: motionRef,\n className: classNames(\"\".concat(prefixCls, \"-treenode-motion\"), motionClassName),\n style: motionStyle\n }, motionNodes.map(function (treeNode) {\n var restProps = Object.assign({}, (_objectDestructuringEmpty(treeNode.data), treeNode.data)),\n title = treeNode.title,\n key = treeNode.key,\n isStart = treeNode.isStart,\n isEnd = treeNode.isEnd;\n delete restProps.children;\n var treeNodeProps = getTreeNodeProps(key, treeNodeRequiredProps);\n return /*#__PURE__*/React.createElement(TreeNode, _extends({}, restProps, treeNodeProps, {\n title: title,\n active: active,\n data: treeNode.data,\n key: key,\n isStart: isStart,\n isEnd: isEnd\n }));\n }));\n });\n }\n return /*#__PURE__*/React.createElement(TreeNode, _extends({\n domRef: ref,\n className: className,\n style: style\n }, props, {\n active: active\n }));\n};\nMotionTreeNode.displayName = 'MotionTreeNode';\nvar RefMotionTreeNode = /*#__PURE__*/React.forwardRef(MotionTreeNode);\nexport default RefMotionTreeNode;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\n\n/**\n * Trigger only when component unmount\n */\nexport default function useUnmount(triggerStart, triggerEnd) {\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n firstMount = _React$useState2[0],\n setFirstMount = _React$useState2[1];\n useLayoutEffect(function () {\n if (firstMount) {\n triggerStart();\n return function () {\n triggerEnd();\n };\n }\n }, [firstMount]);\n useLayoutEffect(function () {\n setFirstMount(true);\n return function () {\n setFirstMount(false);\n };\n }, []);\n}","export function findExpandedKeys() {\n var prev = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var next = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var prevLen = prev.length;\n var nextLen = next.length;\n if (Math.abs(prevLen - nextLen) !== 1) {\n return {\n add: false,\n key: null\n };\n }\n function find(shorter, longer) {\n var cache = new Map();\n shorter.forEach(function (key) {\n cache.set(key, true);\n });\n var keys = longer.filter(function (key) {\n return !cache.has(key);\n });\n return keys.length === 1 ? keys[0] : null;\n }\n if (prevLen < nextLen) {\n return {\n add: true,\n key: find(prev, next)\n };\n }\n return {\n add: false,\n key: find(next, prev)\n };\n}\nexport function getExpandRange(shorter, longer, key) {\n var shorterStartIndex = shorter.findIndex(function (data) {\n return data.key === key;\n });\n var shorterEndNode = shorter[shorterStartIndex + 1];\n var longerStartIndex = longer.findIndex(function (data) {\n return data.key === key;\n });\n if (shorterEndNode) {\n var longerEndIndex = longer.findIndex(function (data) {\n return data.key === shorterEndNode.key;\n });\n return longer.slice(longerStartIndex + 1, longerEndIndex);\n }\n return longer.slice(longerStartIndex + 1);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectDestructuringEmpty from \"@babel/runtime/helpers/esm/objectDestructuringEmpty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"data\", \"selectable\", \"checkable\", \"expandedKeys\", \"selectedKeys\", \"checkedKeys\", \"loadedKeys\", \"loadingKeys\", \"halfCheckedKeys\", \"keyEntities\", \"disabled\", \"dragging\", \"dragOverNodeKey\", \"dropPosition\", \"motion\", \"height\", \"itemHeight\", \"virtual\", \"focusable\", \"activeItem\", \"focused\", \"tabIndex\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onActiveChange\", \"onListChangeStart\", \"onListChangeEnd\"];\n/**\n * Handle virtual list of the TreeNodes.\n */\n\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport VirtualList from 'rc-virtual-list';\nimport * as React from 'react';\nimport MotionTreeNode from \"./MotionTreeNode\";\nimport { findExpandedKeys, getExpandRange } from \"./utils/diffUtil\";\nimport { getKey, getTreeNodeProps } from \"./utils/treeUtil\";\nvar HIDDEN_STYLE = {\n width: 0,\n height: 0,\n display: 'flex',\n overflow: 'hidden',\n opacity: 0,\n border: 0,\n padding: 0,\n margin: 0\n};\nvar noop = function noop() {};\nexport var MOTION_KEY = \"RC_TREE_MOTION_\".concat(Math.random());\nvar MotionNode = {\n key: MOTION_KEY\n};\nexport var MotionEntity = {\n key: MOTION_KEY,\n level: 0,\n index: 0,\n pos: '0',\n node: MotionNode,\n nodes: [MotionNode]\n};\nvar MotionFlattenData = {\n parent: null,\n children: [],\n pos: MotionEntity.pos,\n data: MotionNode,\n title: null,\n key: MOTION_KEY,\n /** Hold empty list here since we do not use it */\n isStart: [],\n isEnd: []\n};\n/**\n * We only need get visible content items to play the animation.\n */\nexport function getMinimumRangeTransitionRange(list, virtual, height, itemHeight) {\n if (virtual === false || !height) {\n return list;\n }\n return list.slice(0, Math.ceil(height / itemHeight) + 1);\n}\nfunction itemKey(item) {\n var key = item.key,\n pos = item.pos;\n return getKey(key, pos);\n}\nfunction getAccessibilityPath(item) {\n var path = String(item.data.key);\n var current = item;\n while (current.parent) {\n current = current.parent;\n path = \"\".concat(current.data.key, \" > \").concat(path);\n }\n return path;\n}\nvar NodeList = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n data = props.data,\n selectable = props.selectable,\n checkable = props.checkable,\n expandedKeys = props.expandedKeys,\n selectedKeys = props.selectedKeys,\n checkedKeys = props.checkedKeys,\n loadedKeys = props.loadedKeys,\n loadingKeys = props.loadingKeys,\n halfCheckedKeys = props.halfCheckedKeys,\n keyEntities = props.keyEntities,\n disabled = props.disabled,\n dragging = props.dragging,\n dragOverNodeKey = props.dragOverNodeKey,\n dropPosition = props.dropPosition,\n motion = props.motion,\n height = props.height,\n itemHeight = props.itemHeight,\n virtual = props.virtual,\n focusable = props.focusable,\n activeItem = props.activeItem,\n focused = props.focused,\n tabIndex = props.tabIndex,\n onKeyDown = props.onKeyDown,\n onFocus = props.onFocus,\n onBlur = props.onBlur,\n onActiveChange = props.onActiveChange,\n onListChangeStart = props.onListChangeStart,\n onListChangeEnd = props.onListChangeEnd,\n domProps = _objectWithoutProperties(props, _excluded);\n\n // =============================== Ref ================================\n var listRef = React.useRef(null);\n var indentMeasurerRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return {\n scrollTo: function scrollTo(scroll) {\n listRef.current.scrollTo(scroll);\n },\n getIndentWidth: function getIndentWidth() {\n return indentMeasurerRef.current.offsetWidth;\n }\n };\n });\n\n // ============================== Motion ==============================\n var _React$useState = React.useState(expandedKeys),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n prevExpandedKeys = _React$useState2[0],\n setPrevExpandedKeys = _React$useState2[1];\n var _React$useState3 = React.useState(data),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n prevData = _React$useState4[0],\n setPrevData = _React$useState4[1];\n var _React$useState5 = React.useState(data),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n transitionData = _React$useState6[0],\n setTransitionData = _React$useState6[1];\n var _React$useState7 = React.useState([]),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n transitionRange = _React$useState8[0],\n setTransitionRange = _React$useState8[1];\n var _React$useState9 = React.useState(null),\n _React$useState10 = _slicedToArray(_React$useState9, 2),\n motionType = _React$useState10[0],\n setMotionType = _React$useState10[1];\n\n // When motion end but data change, this will makes data back to previous one\n var dataRef = React.useRef(data);\n dataRef.current = data;\n function onMotionEnd() {\n var latestData = dataRef.current;\n setPrevData(latestData);\n setTransitionData(latestData);\n setTransitionRange([]);\n setMotionType(null);\n onListChangeEnd();\n }\n\n // Do animation if expanded keys changed\n // layoutEffect here to avoid blink of node removing\n useLayoutEffect(function () {\n setPrevExpandedKeys(expandedKeys);\n var diffExpanded = findExpandedKeys(prevExpandedKeys, expandedKeys);\n if (diffExpanded.key !== null) {\n if (diffExpanded.add) {\n var keyIndex = prevData.findIndex(function (_ref) {\n var key = _ref.key;\n return key === diffExpanded.key;\n });\n var rangeNodes = getMinimumRangeTransitionRange(getExpandRange(prevData, data, diffExpanded.key), virtual, height, itemHeight);\n var newTransitionData = prevData.slice();\n newTransitionData.splice(keyIndex + 1, 0, MotionFlattenData);\n setTransitionData(newTransitionData);\n setTransitionRange(rangeNodes);\n setMotionType('show');\n } else {\n var _keyIndex = data.findIndex(function (_ref2) {\n var key = _ref2.key;\n return key === diffExpanded.key;\n });\n var _rangeNodes = getMinimumRangeTransitionRange(getExpandRange(data, prevData, diffExpanded.key), virtual, height, itemHeight);\n var _newTransitionData = data.slice();\n _newTransitionData.splice(_keyIndex + 1, 0, MotionFlattenData);\n setTransitionData(_newTransitionData);\n setTransitionRange(_rangeNodes);\n setMotionType('hide');\n }\n } else if (prevData !== data) {\n // If whole data changed, we just refresh the list\n setPrevData(data);\n setTransitionData(data);\n }\n }, [expandedKeys, data]);\n\n // We should clean up motion if is changed by dragging\n React.useEffect(function () {\n if (!dragging) {\n onMotionEnd();\n }\n }, [dragging]);\n var mergedData = motion ? transitionData : data;\n var treeNodeRequiredProps = {\n expandedKeys: expandedKeys,\n selectedKeys: selectedKeys,\n loadedKeys: loadedKeys,\n loadingKeys: loadingKeys,\n checkedKeys: checkedKeys,\n halfCheckedKeys: halfCheckedKeys,\n dragOverNodeKey: dragOverNodeKey,\n dropPosition: dropPosition,\n keyEntities: keyEntities\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, focused && activeItem && /*#__PURE__*/React.createElement(\"span\", {\n style: HIDDEN_STYLE,\n \"aria-live\": \"assertive\"\n }, getAccessibilityPath(activeItem)), /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(\"input\", {\n style: HIDDEN_STYLE,\n disabled: focusable === false || disabled,\n tabIndex: focusable !== false ? tabIndex : null,\n onKeyDown: onKeyDown,\n onFocus: onFocus,\n onBlur: onBlur,\n value: \"\",\n onChange: noop,\n \"aria-label\": \"for screen reader\"\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-treenode\"),\n \"aria-hidden\": true,\n style: {\n position: 'absolute',\n pointerEvents: 'none',\n visibility: 'hidden',\n height: 0,\n overflow: 'hidden',\n border: 0,\n padding: 0\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-indent\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: indentMeasurerRef,\n className: \"\".concat(prefixCls, \"-indent-unit\")\n }))), /*#__PURE__*/React.createElement(VirtualList, _extends({}, domProps, {\n data: mergedData,\n itemKey: itemKey,\n height: height,\n fullHeight: false,\n virtual: virtual,\n itemHeight: itemHeight,\n prefixCls: \"\".concat(prefixCls, \"-list\"),\n ref: listRef,\n onVisibleChange: function onVisibleChange(originList, fullList) {\n var originSet = new Set(originList);\n var restList = fullList.filter(function (item) {\n return !originSet.has(item);\n });\n\n // Motion node is not render. Skip motion\n if (restList.some(function (item) {\n return itemKey(item) === MOTION_KEY;\n })) {\n onMotionEnd();\n }\n }\n }), function (treeNode) {\n var pos = treeNode.pos,\n restProps = Object.assign({}, (_objectDestructuringEmpty(treeNode.data), treeNode.data)),\n title = treeNode.title,\n key = treeNode.key,\n isStart = treeNode.isStart,\n isEnd = treeNode.isEnd;\n var mergedKey = getKey(key, pos);\n delete restProps.key;\n delete restProps.children;\n var treeNodeProps = getTreeNodeProps(mergedKey, treeNodeRequiredProps);\n return /*#__PURE__*/React.createElement(MotionTreeNode, _extends({}, restProps, treeNodeProps, {\n title: title,\n active: !!activeItem && key === activeItem.key,\n pos: pos,\n data: treeNode.data,\n isStart: isStart,\n isEnd: isEnd,\n motion: motion,\n motionNodes: key === MOTION_KEY ? transitionRange : null,\n motionType: motionType,\n onMotionStart: onListChangeStart,\n onMotionEnd: onMotionEnd,\n treeNodeRequiredProps: treeNodeRequiredProps,\n onMouseMove: function onMouseMove() {\n onActiveChange(null);\n }\n }));\n }));\n});\nNodeList.displayName = 'NodeList';\nexport default NodeList;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n// TODO: https://www.w3.org/TR/2017/NOTE-wai-aria-practices-1.1-20171214/examples/treeview/treeview-2/treeview-2a.html\n// Fully accessibility support\n\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { TreeContext } from \"./contextTypes\";\nimport DropIndicator from \"./DropIndicator\";\nimport NodeList, { MotionEntity, MOTION_KEY } from \"./NodeList\";\nimport TreeNode from \"./TreeNode\";\nimport { arrAdd, arrDel, calcDropPosition, calcSelectedKeys, conductExpandParent, getDragChildrenKeys, parseCheckedKeys, posToArr } from \"./util\";\nimport { conductCheck } from \"./utils/conductUtil\";\nimport getEntity from \"./utils/keyUtil\";\nimport { convertDataToEntities, convertNodePropsToEventData, convertTreeToData, fillFieldNames, flattenTreeData, getTreeNodeProps, warningWithoutKey } from \"./utils/treeUtil\";\nvar MAX_RETRY_TIMES = 10;\nvar Tree = /*#__PURE__*/function (_React$Component) {\n _inherits(Tree, _React$Component);\n var _super = _createSuper(Tree);\n function Tree() {\n var _this;\n _classCallCheck(this, Tree);\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(_args));\n _defineProperty(_assertThisInitialized(_this), \"destroyed\", false);\n _defineProperty(_assertThisInitialized(_this), \"delayedDragEnterLogic\", void 0);\n _defineProperty(_assertThisInitialized(_this), \"loadingRetryTimes\", {});\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n keyEntities: {},\n indent: null,\n selectedKeys: [],\n checkedKeys: [],\n halfCheckedKeys: [],\n loadedKeys: [],\n loadingKeys: [],\n expandedKeys: [],\n draggingNodeKey: null,\n dragChildrenKeys: [],\n // dropTargetKey is the key of abstract-drop-node\n // the abstract-drop-node is the real drop node when drag and drop\n // not the DOM drag over node\n dropTargetKey: null,\n dropPosition: null,\n // the drop position of abstract-drop-node, inside 0, top -1, bottom 1\n dropContainerKey: null,\n // the container key of abstract-drop-node if dropPosition is -1 or 1\n dropLevelOffset: null,\n // the drop level offset of abstract-drag-over-node\n dropTargetPos: null,\n // the pos of abstract-drop-node\n dropAllowed: true,\n // if drop to abstract-drop-node is allowed\n // the abstract-drag-over-node\n // if mouse is on the bottom of top dom node or no the top of the bottom dom node\n // abstract-drag-over-node is the top node\n dragOverNodeKey: null,\n treeData: [],\n flattenNodes: [],\n focused: false,\n activeKey: null,\n listChanging: false,\n prevProps: null,\n fieldNames: fillFieldNames()\n });\n _defineProperty(_assertThisInitialized(_this), \"dragStartMousePosition\", null);\n _defineProperty(_assertThisInitialized(_this), \"dragNode\", void 0);\n _defineProperty(_assertThisInitialized(_this), \"currentMouseOverDroppableNodeKey\", null);\n _defineProperty(_assertThisInitialized(_this), \"listRef\", /*#__PURE__*/React.createRef());\n _defineProperty(_assertThisInitialized(_this), \"onNodeDragStart\", function (event, node) {\n var _this$state = _this.state,\n expandedKeys = _this$state.expandedKeys,\n keyEntities = _this$state.keyEntities;\n var onDragStart = _this.props.onDragStart;\n var eventKey = node.props.eventKey;\n _this.dragNode = node;\n _this.dragStartMousePosition = {\n x: event.clientX,\n y: event.clientY\n };\n var newExpandedKeys = arrDel(expandedKeys, eventKey);\n _this.setState({\n draggingNodeKey: eventKey,\n dragChildrenKeys: getDragChildrenKeys(eventKey, keyEntities),\n indent: _this.listRef.current.getIndentWidth()\n });\n _this.setExpandedKeys(newExpandedKeys);\n window.addEventListener('dragend', _this.onWindowDragEnd);\n onDragStart === null || onDragStart === void 0 || onDragStart({\n event: event,\n node: convertNodePropsToEventData(node.props)\n });\n });\n /**\n * [Legacy] Select handler is smaller than node,\n * so that this will trigger when drag enter node or select handler.\n * This is a little tricky if customize css without padding.\n * Better for use mouse move event to refresh drag state.\n * But let's just keep it to avoid event trigger logic change.\n */\n _defineProperty(_assertThisInitialized(_this), \"onNodeDragEnter\", function (event, node) {\n var _this$state2 = _this.state,\n expandedKeys = _this$state2.expandedKeys,\n keyEntities = _this$state2.keyEntities,\n dragChildrenKeys = _this$state2.dragChildrenKeys,\n flattenNodes = _this$state2.flattenNodes,\n indent = _this$state2.indent;\n var _this$props = _this.props,\n onDragEnter = _this$props.onDragEnter,\n onExpand = _this$props.onExpand,\n allowDrop = _this$props.allowDrop,\n direction = _this$props.direction;\n var _node$props = node.props,\n pos = _node$props.pos,\n eventKey = _node$props.eventKey;\n var _assertThisInitialize = _assertThisInitialized(_this),\n dragNode = _assertThisInitialize.dragNode;\n\n // record the key of node which is latest entered, used in dragleave event.\n if (_this.currentMouseOverDroppableNodeKey !== eventKey) {\n _this.currentMouseOverDroppableNodeKey = eventKey;\n }\n if (!dragNode) {\n _this.resetDragState();\n return;\n }\n var _calcDropPosition = calcDropPosition(event, dragNode, node, indent, _this.dragStartMousePosition, allowDrop, flattenNodes, keyEntities, expandedKeys, direction),\n dropPosition = _calcDropPosition.dropPosition,\n dropLevelOffset = _calcDropPosition.dropLevelOffset,\n dropTargetKey = _calcDropPosition.dropTargetKey,\n dropContainerKey = _calcDropPosition.dropContainerKey,\n dropTargetPos = _calcDropPosition.dropTargetPos,\n dropAllowed = _calcDropPosition.dropAllowed,\n dragOverNodeKey = _calcDropPosition.dragOverNodeKey;\n if (\n // don't allow drop inside its children\n dragChildrenKeys.indexOf(dropTargetKey) !== -1 ||\n // don't allow drop when drop is not allowed caculated by calcDropPosition\n !dropAllowed) {\n _this.resetDragState();\n return;\n }\n\n // Side effect for delay drag\n if (!_this.delayedDragEnterLogic) {\n _this.delayedDragEnterLogic = {};\n }\n Object.keys(_this.delayedDragEnterLogic).forEach(function (key) {\n clearTimeout(_this.delayedDragEnterLogic[key]);\n });\n if (dragNode.props.eventKey !== node.props.eventKey) {\n // hoist expand logic here\n // since if logic is on the bottom\n // it will be blocked by abstract dragover node check\n // => if you dragenter from top, you mouse will still be consider as in the top node\n event.persist();\n _this.delayedDragEnterLogic[pos] = window.setTimeout(function () {\n if (_this.state.draggingNodeKey === null) return;\n var newExpandedKeys = _toConsumableArray(expandedKeys);\n var entity = getEntity(keyEntities, node.props.eventKey);\n if (entity && (entity.children || []).length) {\n newExpandedKeys = arrAdd(expandedKeys, node.props.eventKey);\n }\n if (!('expandedKeys' in _this.props)) {\n _this.setExpandedKeys(newExpandedKeys);\n }\n onExpand === null || onExpand === void 0 || onExpand(newExpandedKeys, {\n node: convertNodePropsToEventData(node.props),\n expanded: true,\n nativeEvent: event.nativeEvent\n });\n }, 800);\n }\n\n // Skip if drag node is self\n if (dragNode.props.eventKey === dropTargetKey && dropLevelOffset === 0) {\n _this.resetDragState();\n return;\n }\n\n // Update drag over node and drag state\n _this.setState({\n dragOverNodeKey: dragOverNodeKey,\n dropPosition: dropPosition,\n dropLevelOffset: dropLevelOffset,\n dropTargetKey: dropTargetKey,\n dropContainerKey: dropContainerKey,\n dropTargetPos: dropTargetPos,\n dropAllowed: dropAllowed\n });\n onDragEnter === null || onDragEnter === void 0 || onDragEnter({\n event: event,\n node: convertNodePropsToEventData(node.props),\n expandedKeys: expandedKeys\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onNodeDragOver\", function (event, node) {\n var _this$state3 = _this.state,\n dragChildrenKeys = _this$state3.dragChildrenKeys,\n flattenNodes = _this$state3.flattenNodes,\n keyEntities = _this$state3.keyEntities,\n expandedKeys = _this$state3.expandedKeys,\n indent = _this$state3.indent;\n var _this$props2 = _this.props,\n onDragOver = _this$props2.onDragOver,\n allowDrop = _this$props2.allowDrop,\n direction = _this$props2.direction;\n var _assertThisInitialize2 = _assertThisInitialized(_this),\n dragNode = _assertThisInitialize2.dragNode;\n if (!dragNode) {\n return;\n }\n var _calcDropPosition2 = calcDropPosition(event, dragNode, node, indent, _this.dragStartMousePosition, allowDrop, flattenNodes, keyEntities, expandedKeys, direction),\n dropPosition = _calcDropPosition2.dropPosition,\n dropLevelOffset = _calcDropPosition2.dropLevelOffset,\n dropTargetKey = _calcDropPosition2.dropTargetKey,\n dropContainerKey = _calcDropPosition2.dropContainerKey,\n dropAllowed = _calcDropPosition2.dropAllowed,\n dropTargetPos = _calcDropPosition2.dropTargetPos,\n dragOverNodeKey = _calcDropPosition2.dragOverNodeKey;\n if (dragChildrenKeys.indexOf(dropTargetKey) !== -1 || !dropAllowed) {\n // don't allow drop inside its children\n // don't allow drop when drop is not allowed calculated by calcDropPosition\n return;\n }\n\n // Update drag position\n\n if (dragNode.props.eventKey === dropTargetKey && dropLevelOffset === 0) {\n if (!(_this.state.dropPosition === null && _this.state.dropLevelOffset === null && _this.state.dropTargetKey === null && _this.state.dropContainerKey === null && _this.state.dropTargetPos === null && _this.state.dropAllowed === false && _this.state.dragOverNodeKey === null)) {\n _this.resetDragState();\n }\n } else if (!(dropPosition === _this.state.dropPosition && dropLevelOffset === _this.state.dropLevelOffset && dropTargetKey === _this.state.dropTargetKey && dropContainerKey === _this.state.dropContainerKey && dropTargetPos === _this.state.dropTargetPos && dropAllowed === _this.state.dropAllowed && dragOverNodeKey === _this.state.dragOverNodeKey)) {\n _this.setState({\n dropPosition: dropPosition,\n dropLevelOffset: dropLevelOffset,\n dropTargetKey: dropTargetKey,\n dropContainerKey: dropContainerKey,\n dropTargetPos: dropTargetPos,\n dropAllowed: dropAllowed,\n dragOverNodeKey: dragOverNodeKey\n });\n }\n onDragOver === null || onDragOver === void 0 || onDragOver({\n event: event,\n node: convertNodePropsToEventData(node.props)\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onNodeDragLeave\", function (event, node) {\n // if it is outside the droppable area\n // currentMouseOverDroppableNodeKey will be updated in dragenter event when into another droppable receiver.\n if (_this.currentMouseOverDroppableNodeKey === node.props.eventKey && !event.currentTarget.contains(event.relatedTarget)) {\n _this.resetDragState();\n _this.currentMouseOverDroppableNodeKey = null;\n }\n var onDragLeave = _this.props.onDragLeave;\n onDragLeave === null || onDragLeave === void 0 || onDragLeave({\n event: event,\n node: convertNodePropsToEventData(node.props)\n });\n });\n // since stopPropagation() is called in treeNode\n // if onWindowDrag is called, whice means state is keeped, drag state should be cleared\n _defineProperty(_assertThisInitialized(_this), \"onWindowDragEnd\", function (event) {\n _this.onNodeDragEnd(event, null, true);\n window.removeEventListener('dragend', _this.onWindowDragEnd);\n });\n // if onNodeDragEnd is called, onWindowDragEnd won't be called since stopPropagation() is called\n _defineProperty(_assertThisInitialized(_this), \"onNodeDragEnd\", function (event, node) {\n var onDragEnd = _this.props.onDragEnd;\n _this.setState({\n dragOverNodeKey: null\n });\n _this.cleanDragState();\n onDragEnd === null || onDragEnd === void 0 || onDragEnd({\n event: event,\n node: convertNodePropsToEventData(node.props)\n });\n _this.dragNode = null;\n window.removeEventListener('dragend', _this.onWindowDragEnd);\n });\n _defineProperty(_assertThisInitialized(_this), \"onNodeDrop\", function (event, node) {\n var _this$getActiveItem;\n var outsideTree = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var _this$state4 = _this.state,\n dragChildrenKeys = _this$state4.dragChildrenKeys,\n dropPosition = _this$state4.dropPosition,\n dropTargetKey = _this$state4.dropTargetKey,\n dropTargetPos = _this$state4.dropTargetPos,\n dropAllowed = _this$state4.dropAllowed;\n if (!dropAllowed) return;\n var onDrop = _this.props.onDrop;\n _this.setState({\n dragOverNodeKey: null\n });\n _this.cleanDragState();\n if (dropTargetKey === null) return;\n var abstractDropNodeProps = _objectSpread(_objectSpread({}, getTreeNodeProps(dropTargetKey, _this.getTreeNodeRequiredProps())), {}, {\n active: ((_this$getActiveItem = _this.getActiveItem()) === null || _this$getActiveItem === void 0 ? void 0 : _this$getActiveItem.key) === dropTargetKey,\n data: getEntity(_this.state.keyEntities, dropTargetKey).node\n });\n var dropToChild = dragChildrenKeys.indexOf(dropTargetKey) !== -1;\n warning(!dropToChild, \"Can not drop to dragNode's children node. This is a bug of rc-tree. Please report an issue.\");\n var posArr = posToArr(dropTargetPos);\n var dropResult = {\n event: event,\n node: convertNodePropsToEventData(abstractDropNodeProps),\n dragNode: _this.dragNode ? convertNodePropsToEventData(_this.dragNode.props) : null,\n dragNodesKeys: [_this.dragNode.props.eventKey].concat(dragChildrenKeys),\n dropToGap: dropPosition !== 0,\n dropPosition: dropPosition + Number(posArr[posArr.length - 1])\n };\n if (!outsideTree) {\n onDrop === null || onDrop === void 0 || onDrop(dropResult);\n }\n _this.dragNode = null;\n });\n _defineProperty(_assertThisInitialized(_this), \"cleanDragState\", function () {\n var draggingNodeKey = _this.state.draggingNodeKey;\n if (draggingNodeKey !== null) {\n _this.setState({\n draggingNodeKey: null,\n dropPosition: null,\n dropContainerKey: null,\n dropTargetKey: null,\n dropLevelOffset: null,\n dropAllowed: true,\n dragOverNodeKey: null\n });\n }\n _this.dragStartMousePosition = null;\n _this.currentMouseOverDroppableNodeKey = null;\n });\n _defineProperty(_assertThisInitialized(_this), \"triggerExpandActionExpand\", function (e, treeNode) {\n var _this$state5 = _this.state,\n expandedKeys = _this$state5.expandedKeys,\n flattenNodes = _this$state5.flattenNodes;\n var expanded = treeNode.expanded,\n key = treeNode.key,\n isLeaf = treeNode.isLeaf;\n if (isLeaf || e.shiftKey || e.metaKey || e.ctrlKey) {\n return;\n }\n var node = flattenNodes.filter(function (nodeItem) {\n return nodeItem.key === key;\n })[0];\n var eventNode = convertNodePropsToEventData(_objectSpread(_objectSpread({}, getTreeNodeProps(key, _this.getTreeNodeRequiredProps())), {}, {\n data: node.data\n }));\n _this.setExpandedKeys(expanded ? arrDel(expandedKeys, key) : arrAdd(expandedKeys, key));\n _this.onNodeExpand(e, eventNode);\n });\n _defineProperty(_assertThisInitialized(_this), \"onNodeClick\", function (e, treeNode) {\n var _this$props3 = _this.props,\n onClick = _this$props3.onClick,\n expandAction = _this$props3.expandAction;\n if (expandAction === 'click') {\n _this.triggerExpandActionExpand(e, treeNode);\n }\n onClick === null || onClick === void 0 || onClick(e, treeNode);\n });\n _defineProperty(_assertThisInitialized(_this), \"onNodeDoubleClick\", function (e, treeNode) {\n var _this$props4 = _this.props,\n onDoubleClick = _this$props4.onDoubleClick,\n expandAction = _this$props4.expandAction;\n if (expandAction === 'doubleClick') {\n _this.triggerExpandActionExpand(e, treeNode);\n }\n onDoubleClick === null || onDoubleClick === void 0 || onDoubleClick(e, treeNode);\n });\n _defineProperty(_assertThisInitialized(_this), \"onNodeSelect\", function (e, treeNode) {\n var selectedKeys = _this.state.selectedKeys;\n var _this$state6 = _this.state,\n keyEntities = _this$state6.keyEntities,\n fieldNames = _this$state6.fieldNames;\n var _this$props5 = _this.props,\n onSelect = _this$props5.onSelect,\n multiple = _this$props5.multiple;\n var selected = treeNode.selected;\n var key = treeNode[fieldNames.key];\n var targetSelected = !selected;\n\n // Update selected keys\n if (!targetSelected) {\n selectedKeys = arrDel(selectedKeys, key);\n } else if (!multiple) {\n selectedKeys = [key];\n } else {\n selectedKeys = arrAdd(selectedKeys, key);\n }\n\n // [Legacy] Not found related usage in doc or upper libs\n var selectedNodes = selectedKeys.map(function (selectedKey) {\n var entity = getEntity(keyEntities, selectedKey);\n if (!entity) return null;\n return entity.node;\n }).filter(function (node) {\n return node;\n });\n _this.setUncontrolledState({\n selectedKeys: selectedKeys\n });\n onSelect === null || onSelect === void 0 || onSelect(selectedKeys, {\n event: 'select',\n selected: targetSelected,\n node: treeNode,\n selectedNodes: selectedNodes,\n nativeEvent: e.nativeEvent\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onNodeCheck\", function (e, treeNode, checked) {\n var _this$state7 = _this.state,\n keyEntities = _this$state7.keyEntities,\n oriCheckedKeys = _this$state7.checkedKeys,\n oriHalfCheckedKeys = _this$state7.halfCheckedKeys;\n var _this$props6 = _this.props,\n checkStrictly = _this$props6.checkStrictly,\n onCheck = _this$props6.onCheck;\n var key = treeNode.key;\n\n // Prepare trigger arguments\n var checkedObj;\n var eventObj = {\n event: 'check',\n node: treeNode,\n checked: checked,\n nativeEvent: e.nativeEvent\n };\n if (checkStrictly) {\n var checkedKeys = checked ? arrAdd(oriCheckedKeys, key) : arrDel(oriCheckedKeys, key);\n var halfCheckedKeys = arrDel(oriHalfCheckedKeys, key);\n checkedObj = {\n checked: checkedKeys,\n halfChecked: halfCheckedKeys\n };\n eventObj.checkedNodes = checkedKeys.map(function (checkedKey) {\n return getEntity(keyEntities, checkedKey);\n }).filter(function (entity) {\n return entity;\n }).map(function (entity) {\n return entity.node;\n });\n _this.setUncontrolledState({\n checkedKeys: checkedKeys\n });\n } else {\n // Always fill first\n var _conductCheck = conductCheck([].concat(_toConsumableArray(oriCheckedKeys), [key]), true, keyEntities),\n _checkedKeys = _conductCheck.checkedKeys,\n _halfCheckedKeys = _conductCheck.halfCheckedKeys;\n\n // If remove, we do it again to correction\n if (!checked) {\n var keySet = new Set(_checkedKeys);\n keySet.delete(key);\n var _conductCheck2 = conductCheck(Array.from(keySet), {\n checked: false,\n halfCheckedKeys: _halfCheckedKeys\n }, keyEntities);\n _checkedKeys = _conductCheck2.checkedKeys;\n _halfCheckedKeys = _conductCheck2.halfCheckedKeys;\n }\n checkedObj = _checkedKeys;\n\n // [Legacy] This is used for `rc-tree-select`\n eventObj.checkedNodes = [];\n eventObj.checkedNodesPositions = [];\n eventObj.halfCheckedKeys = _halfCheckedKeys;\n _checkedKeys.forEach(function (checkedKey) {\n var entity = getEntity(keyEntities, checkedKey);\n if (!entity) return;\n var node = entity.node,\n pos = entity.pos;\n eventObj.checkedNodes.push(node);\n eventObj.checkedNodesPositions.push({\n node: node,\n pos: pos\n });\n });\n _this.setUncontrolledState({\n checkedKeys: _checkedKeys\n }, false, {\n halfCheckedKeys: _halfCheckedKeys\n });\n }\n onCheck === null || onCheck === void 0 || onCheck(checkedObj, eventObj);\n });\n _defineProperty(_assertThisInitialized(_this), \"onNodeLoad\", function (treeNode) {\n var key = treeNode.key;\n var loadPromise = new Promise(function (resolve, reject) {\n // We need to get the latest state of loading/loaded keys\n _this.setState(function (_ref) {\n var _ref$loadedKeys = _ref.loadedKeys,\n loadedKeys = _ref$loadedKeys === void 0 ? [] : _ref$loadedKeys,\n _ref$loadingKeys = _ref.loadingKeys,\n loadingKeys = _ref$loadingKeys === void 0 ? [] : _ref$loadingKeys;\n var _this$props7 = _this.props,\n loadData = _this$props7.loadData,\n onLoad = _this$props7.onLoad;\n if (!loadData || loadedKeys.indexOf(key) !== -1 || loadingKeys.indexOf(key) !== -1) {\n return null;\n }\n\n // Process load data\n var promise = loadData(treeNode);\n promise.then(function () {\n var currentLoadedKeys = _this.state.loadedKeys;\n var newLoadedKeys = arrAdd(currentLoadedKeys, key);\n\n // onLoad should trigger before internal setState to avoid `loadData` trigger twice.\n // https://github.com/ant-design/ant-design/issues/12464\n onLoad === null || onLoad === void 0 || onLoad(newLoadedKeys, {\n event: 'load',\n node: treeNode\n });\n _this.setUncontrolledState({\n loadedKeys: newLoadedKeys\n });\n _this.setState(function (prevState) {\n return {\n loadingKeys: arrDel(prevState.loadingKeys, key)\n };\n });\n resolve();\n }).catch(function (e) {\n _this.setState(function (prevState) {\n return {\n loadingKeys: arrDel(prevState.loadingKeys, key)\n };\n });\n\n // If exceed max retry times, we give up retry\n _this.loadingRetryTimes[key] = (_this.loadingRetryTimes[key] || 0) + 1;\n if (_this.loadingRetryTimes[key] >= MAX_RETRY_TIMES) {\n var currentLoadedKeys = _this.state.loadedKeys;\n warning(false, 'Retry for `loadData` many times but still failed. No more retry.');\n _this.setUncontrolledState({\n loadedKeys: arrAdd(currentLoadedKeys, key)\n });\n resolve();\n }\n reject(e);\n });\n return {\n loadingKeys: arrAdd(loadingKeys, key)\n };\n });\n });\n\n // Not care warning if we ignore this\n loadPromise.catch(function () {});\n return loadPromise;\n });\n _defineProperty(_assertThisInitialized(_this), \"onNodeMouseEnter\", function (event, node) {\n var onMouseEnter = _this.props.onMouseEnter;\n onMouseEnter === null || onMouseEnter === void 0 || onMouseEnter({\n event: event,\n node: node\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onNodeMouseLeave\", function (event, node) {\n var onMouseLeave = _this.props.onMouseLeave;\n onMouseLeave === null || onMouseLeave === void 0 || onMouseLeave({\n event: event,\n node: node\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onNodeContextMenu\", function (event, node) {\n var onRightClick = _this.props.onRightClick;\n if (onRightClick) {\n event.preventDefault();\n onRightClick({\n event: event,\n node: node\n });\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onFocus\", function () {\n var onFocus = _this.props.onFocus;\n _this.setState({\n focused: true\n });\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n onFocus === null || onFocus === void 0 || onFocus.apply(void 0, args);\n });\n _defineProperty(_assertThisInitialized(_this), \"onBlur\", function () {\n var onBlur = _this.props.onBlur;\n _this.setState({\n focused: false\n });\n _this.onActiveChange(null);\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n onBlur === null || onBlur === void 0 || onBlur.apply(void 0, args);\n });\n _defineProperty(_assertThisInitialized(_this), \"getTreeNodeRequiredProps\", function () {\n var _this$state8 = _this.state,\n expandedKeys = _this$state8.expandedKeys,\n selectedKeys = _this$state8.selectedKeys,\n loadedKeys = _this$state8.loadedKeys,\n loadingKeys = _this$state8.loadingKeys,\n checkedKeys = _this$state8.checkedKeys,\n halfCheckedKeys = _this$state8.halfCheckedKeys,\n dragOverNodeKey = _this$state8.dragOverNodeKey,\n dropPosition = _this$state8.dropPosition,\n keyEntities = _this$state8.keyEntities;\n return {\n expandedKeys: expandedKeys || [],\n selectedKeys: selectedKeys || [],\n loadedKeys: loadedKeys || [],\n loadingKeys: loadingKeys || [],\n checkedKeys: checkedKeys || [],\n halfCheckedKeys: halfCheckedKeys || [],\n dragOverNodeKey: dragOverNodeKey,\n dropPosition: dropPosition,\n keyEntities: keyEntities\n };\n });\n // =========================== Expanded ===========================\n /** Set uncontrolled `expandedKeys`. This will also auto update `flattenNodes`. */\n _defineProperty(_assertThisInitialized(_this), \"setExpandedKeys\", function (expandedKeys) {\n var _this$state9 = _this.state,\n treeData = _this$state9.treeData,\n fieldNames = _this$state9.fieldNames;\n var flattenNodes = flattenTreeData(treeData, expandedKeys, fieldNames);\n _this.setUncontrolledState({\n expandedKeys: expandedKeys,\n flattenNodes: flattenNodes\n }, true);\n });\n _defineProperty(_assertThisInitialized(_this), \"onNodeExpand\", function (e, treeNode) {\n var expandedKeys = _this.state.expandedKeys;\n var _this$state10 = _this.state,\n listChanging = _this$state10.listChanging,\n fieldNames = _this$state10.fieldNames;\n var _this$props8 = _this.props,\n onExpand = _this$props8.onExpand,\n loadData = _this$props8.loadData;\n var expanded = treeNode.expanded;\n var key = treeNode[fieldNames.key];\n\n // Do nothing when motion is in progress\n if (listChanging) {\n return;\n }\n\n // Update selected keys\n var index = expandedKeys.indexOf(key);\n var targetExpanded = !expanded;\n warning(expanded && index !== -1 || !expanded && index === -1, 'Expand state not sync with index check');\n if (targetExpanded) {\n expandedKeys = arrAdd(expandedKeys, key);\n } else {\n expandedKeys = arrDel(expandedKeys, key);\n }\n _this.setExpandedKeys(expandedKeys);\n onExpand === null || onExpand === void 0 || onExpand(expandedKeys, {\n node: treeNode,\n expanded: targetExpanded,\n nativeEvent: e.nativeEvent\n });\n\n // Async Load data\n if (targetExpanded && loadData) {\n var loadPromise = _this.onNodeLoad(treeNode);\n if (loadPromise) {\n loadPromise.then(function () {\n // [Legacy] Refresh logic\n var newFlattenTreeData = flattenTreeData(_this.state.treeData, expandedKeys, fieldNames);\n _this.setUncontrolledState({\n flattenNodes: newFlattenTreeData\n });\n }).catch(function () {\n var currentExpandedKeys = _this.state.expandedKeys;\n var expandedKeysToRestore = arrDel(currentExpandedKeys, key);\n _this.setExpandedKeys(expandedKeysToRestore);\n });\n }\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onListChangeStart\", function () {\n _this.setUncontrolledState({\n listChanging: true\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onListChangeEnd\", function () {\n setTimeout(function () {\n _this.setUncontrolledState({\n listChanging: false\n });\n });\n });\n // =========================== Keyboard ===========================\n _defineProperty(_assertThisInitialized(_this), \"onActiveChange\", function (newActiveKey) {\n var activeKey = _this.state.activeKey;\n var _this$props9 = _this.props,\n onActiveChange = _this$props9.onActiveChange,\n _this$props9$itemScro = _this$props9.itemScrollOffset,\n itemScrollOffset = _this$props9$itemScro === void 0 ? 0 : _this$props9$itemScro;\n if (activeKey === newActiveKey) {\n return;\n }\n _this.setState({\n activeKey: newActiveKey\n });\n if (newActiveKey !== null) {\n _this.scrollTo({\n key: newActiveKey,\n offset: itemScrollOffset\n });\n }\n onActiveChange === null || onActiveChange === void 0 || onActiveChange(newActiveKey);\n });\n _defineProperty(_assertThisInitialized(_this), \"getActiveItem\", function () {\n var _this$state11 = _this.state,\n activeKey = _this$state11.activeKey,\n flattenNodes = _this$state11.flattenNodes;\n if (activeKey === null) {\n return null;\n }\n return flattenNodes.find(function (_ref2) {\n var key = _ref2.key;\n return key === activeKey;\n }) || null;\n });\n _defineProperty(_assertThisInitialized(_this), \"offsetActiveKey\", function (offset) {\n var _this$state12 = _this.state,\n flattenNodes = _this$state12.flattenNodes,\n activeKey = _this$state12.activeKey;\n var index = flattenNodes.findIndex(function (_ref3) {\n var key = _ref3.key;\n return key === activeKey;\n });\n\n // Align with index\n if (index === -1 && offset < 0) {\n index = flattenNodes.length;\n }\n index = (index + offset + flattenNodes.length) % flattenNodes.length;\n var item = flattenNodes[index];\n if (item) {\n var _key4 = item.key;\n _this.onActiveChange(_key4);\n } else {\n _this.onActiveChange(null);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onKeyDown\", function (event) {\n var _this$state13 = _this.state,\n activeKey = _this$state13.activeKey,\n expandedKeys = _this$state13.expandedKeys,\n checkedKeys = _this$state13.checkedKeys,\n fieldNames = _this$state13.fieldNames;\n var _this$props10 = _this.props,\n onKeyDown = _this$props10.onKeyDown,\n checkable = _this$props10.checkable,\n selectable = _this$props10.selectable;\n\n // >>>>>>>>>> Direction\n switch (event.which) {\n case KeyCode.UP:\n {\n _this.offsetActiveKey(-1);\n event.preventDefault();\n break;\n }\n case KeyCode.DOWN:\n {\n _this.offsetActiveKey(1);\n event.preventDefault();\n break;\n }\n }\n\n // >>>>>>>>>> Expand & Selection\n var activeItem = _this.getActiveItem();\n if (activeItem && activeItem.data) {\n var treeNodeRequiredProps = _this.getTreeNodeRequiredProps();\n var expandable = activeItem.data.isLeaf === false || !!(activeItem.data[fieldNames.children] || []).length;\n var eventNode = convertNodePropsToEventData(_objectSpread(_objectSpread({}, getTreeNodeProps(activeKey, treeNodeRequiredProps)), {}, {\n data: activeItem.data,\n active: true\n }));\n switch (event.which) {\n // >>> Expand\n case KeyCode.LEFT:\n {\n // Collapse if possible\n if (expandable && expandedKeys.includes(activeKey)) {\n _this.onNodeExpand({}, eventNode);\n } else if (activeItem.parent) {\n _this.onActiveChange(activeItem.parent.key);\n }\n event.preventDefault();\n break;\n }\n case KeyCode.RIGHT:\n {\n // Expand if possible\n if (expandable && !expandedKeys.includes(activeKey)) {\n _this.onNodeExpand({}, eventNode);\n } else if (activeItem.children && activeItem.children.length) {\n _this.onActiveChange(activeItem.children[0].key);\n }\n event.preventDefault();\n break;\n }\n\n // Selection\n case KeyCode.ENTER:\n case KeyCode.SPACE:\n {\n if (checkable && !eventNode.disabled && eventNode.checkable !== false && !eventNode.disableCheckbox) {\n _this.onNodeCheck({}, eventNode, !checkedKeys.includes(activeKey));\n } else if (!checkable && selectable && !eventNode.disabled && eventNode.selectable !== false) {\n _this.onNodeSelect({}, eventNode);\n }\n break;\n }\n }\n }\n onKeyDown === null || onKeyDown === void 0 || onKeyDown(event);\n });\n /**\n * Only update the value which is not in props\n */\n _defineProperty(_assertThisInitialized(_this), \"setUncontrolledState\", function (state) {\n var atomic = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var forceState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n if (!_this.destroyed) {\n var needSync = false;\n var allPassed = true;\n var newState = {};\n Object.keys(state).forEach(function (name) {\n if (name in _this.props) {\n allPassed = false;\n return;\n }\n needSync = true;\n newState[name] = state[name];\n });\n if (needSync && (!atomic || allPassed)) {\n _this.setState(_objectSpread(_objectSpread({}, newState), forceState));\n }\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"scrollTo\", function (scroll) {\n _this.listRef.current.scrollTo(scroll);\n });\n return _this;\n }\n _createClass(Tree, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.destroyed = false;\n this.onUpdated();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.onUpdated();\n }\n }, {\n key: \"onUpdated\",\n value: function onUpdated() {\n var _this$props11 = this.props,\n activeKey = _this$props11.activeKey,\n _this$props11$itemScr = _this$props11.itemScrollOffset,\n itemScrollOffset = _this$props11$itemScr === void 0 ? 0 : _this$props11$itemScr;\n if (activeKey !== undefined && activeKey !== this.state.activeKey) {\n this.setState({\n activeKey: activeKey\n });\n if (activeKey !== null) {\n this.scrollTo({\n key: activeKey,\n offset: itemScrollOffset\n });\n }\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener('dragend', this.onWindowDragEnd);\n this.destroyed = true;\n }\n }, {\n key: \"resetDragState\",\n value: function resetDragState() {\n this.setState({\n dragOverNodeKey: null,\n dropPosition: null,\n dropLevelOffset: null,\n dropTargetKey: null,\n dropContainerKey: null,\n dropTargetPos: null,\n dropAllowed: false\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$state14 = this.state,\n focused = _this$state14.focused,\n flattenNodes = _this$state14.flattenNodes,\n keyEntities = _this$state14.keyEntities,\n draggingNodeKey = _this$state14.draggingNodeKey,\n activeKey = _this$state14.activeKey,\n dropLevelOffset = _this$state14.dropLevelOffset,\n dropContainerKey = _this$state14.dropContainerKey,\n dropTargetKey = _this$state14.dropTargetKey,\n dropPosition = _this$state14.dropPosition,\n dragOverNodeKey = _this$state14.dragOverNodeKey,\n indent = _this$state14.indent;\n var _this$props12 = this.props,\n prefixCls = _this$props12.prefixCls,\n className = _this$props12.className,\n style = _this$props12.style,\n showLine = _this$props12.showLine,\n focusable = _this$props12.focusable,\n _this$props12$tabInde = _this$props12.tabIndex,\n tabIndex = _this$props12$tabInde === void 0 ? 0 : _this$props12$tabInde,\n selectable = _this$props12.selectable,\n showIcon = _this$props12.showIcon,\n icon = _this$props12.icon,\n switcherIcon = _this$props12.switcherIcon,\n draggable = _this$props12.draggable,\n checkable = _this$props12.checkable,\n checkStrictly = _this$props12.checkStrictly,\n disabled = _this$props12.disabled,\n motion = _this$props12.motion,\n loadData = _this$props12.loadData,\n filterTreeNode = _this$props12.filterTreeNode,\n height = _this$props12.height,\n itemHeight = _this$props12.itemHeight,\n virtual = _this$props12.virtual,\n titleRender = _this$props12.titleRender,\n dropIndicatorRender = _this$props12.dropIndicatorRender,\n onContextMenu = _this$props12.onContextMenu,\n onScroll = _this$props12.onScroll,\n direction = _this$props12.direction,\n rootClassName = _this$props12.rootClassName,\n rootStyle = _this$props12.rootStyle;\n var domProps = pickAttrs(this.props, {\n aria: true,\n data: true\n });\n\n // It's better move to hooks but we just simply keep here\n var draggableConfig;\n if (draggable) {\n if (_typeof(draggable) === 'object') {\n draggableConfig = draggable;\n } else if (typeof draggable === 'function') {\n draggableConfig = {\n nodeDraggable: draggable\n };\n } else {\n draggableConfig = {};\n }\n }\n return /*#__PURE__*/React.createElement(TreeContext.Provider, {\n value: {\n prefixCls: prefixCls,\n selectable: selectable,\n showIcon: showIcon,\n icon: icon,\n switcherIcon: switcherIcon,\n draggable: draggableConfig,\n draggingNodeKey: draggingNodeKey,\n checkable: checkable,\n checkStrictly: checkStrictly,\n disabled: disabled,\n keyEntities: keyEntities,\n dropLevelOffset: dropLevelOffset,\n dropContainerKey: dropContainerKey,\n dropTargetKey: dropTargetKey,\n dropPosition: dropPosition,\n dragOverNodeKey: dragOverNodeKey,\n indent: indent,\n direction: direction,\n dropIndicatorRender: dropIndicatorRender,\n loadData: loadData,\n filterTreeNode: filterTreeNode,\n titleRender: titleRender,\n onNodeClick: this.onNodeClick,\n onNodeDoubleClick: this.onNodeDoubleClick,\n onNodeExpand: this.onNodeExpand,\n onNodeSelect: this.onNodeSelect,\n onNodeCheck: this.onNodeCheck,\n onNodeLoad: this.onNodeLoad,\n onNodeMouseEnter: this.onNodeMouseEnter,\n onNodeMouseLeave: this.onNodeMouseLeave,\n onNodeContextMenu: this.onNodeContextMenu,\n onNodeDragStart: this.onNodeDragStart,\n onNodeDragEnter: this.onNodeDragEnter,\n onNodeDragOver: this.onNodeDragOver,\n onNodeDragLeave: this.onNodeDragLeave,\n onNodeDragEnd: this.onNodeDragEnd,\n onNodeDrop: this.onNodeDrop\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n role: \"tree\",\n className: classNames(prefixCls, className, rootClassName, _defineProperty(_defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-show-line\"), showLine), \"\".concat(prefixCls, \"-focused\"), focused), \"\".concat(prefixCls, \"-active-focused\"), activeKey !== null)),\n style: rootStyle\n }, /*#__PURE__*/React.createElement(NodeList, _extends({\n ref: this.listRef,\n prefixCls: prefixCls,\n style: style,\n data: flattenNodes,\n disabled: disabled,\n selectable: selectable,\n checkable: !!checkable,\n motion: motion,\n dragging: draggingNodeKey !== null,\n height: height,\n itemHeight: itemHeight,\n virtual: virtual,\n focusable: focusable,\n focused: focused,\n tabIndex: tabIndex,\n activeItem: this.getActiveItem(),\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n onKeyDown: this.onKeyDown,\n onActiveChange: this.onActiveChange,\n onListChangeStart: this.onListChangeStart,\n onListChangeEnd: this.onListChangeEnd,\n onContextMenu: onContextMenu,\n onScroll: onScroll\n }, this.getTreeNodeRequiredProps(), domProps))));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, prevState) {\n var prevProps = prevState.prevProps;\n var newState = {\n prevProps: props\n };\n function needSync(name) {\n return !prevProps && name in props || prevProps && prevProps[name] !== props[name];\n }\n\n // ================== Tree Node ==================\n var treeData;\n\n // fieldNames\n var fieldNames = prevState.fieldNames;\n if (needSync('fieldNames')) {\n fieldNames = fillFieldNames(props.fieldNames);\n newState.fieldNames = fieldNames;\n }\n\n // Check if `treeData` or `children` changed and save into the state.\n if (needSync('treeData')) {\n treeData = props.treeData;\n } else if (needSync('children')) {\n warning(false, '`children` of Tree is deprecated. Please use `treeData` instead.');\n treeData = convertTreeToData(props.children);\n }\n\n // Save flatten nodes info and convert `treeData` into keyEntities\n if (treeData) {\n newState.treeData = treeData;\n var entitiesMap = convertDataToEntities(treeData, {\n fieldNames: fieldNames\n });\n newState.keyEntities = _objectSpread(_defineProperty({}, MOTION_KEY, MotionEntity), entitiesMap.keyEntities);\n\n // Warning if treeNode not provide key\n if (process.env.NODE_ENV !== 'production') {\n warningWithoutKey(treeData, fieldNames);\n }\n }\n var keyEntities = newState.keyEntities || prevState.keyEntities;\n\n // ================ expandedKeys =================\n if (needSync('expandedKeys') || prevProps && needSync('autoExpandParent')) {\n newState.expandedKeys = props.autoExpandParent || !prevProps && props.defaultExpandParent ? conductExpandParent(props.expandedKeys, keyEntities) : props.expandedKeys;\n } else if (!prevProps && props.defaultExpandAll) {\n var cloneKeyEntities = _objectSpread({}, keyEntities);\n delete cloneKeyEntities[MOTION_KEY];\n newState.expandedKeys = Object.keys(cloneKeyEntities).map(function (key) {\n return cloneKeyEntities[key].key;\n });\n } else if (!prevProps && props.defaultExpandedKeys) {\n newState.expandedKeys = props.autoExpandParent || props.defaultExpandParent ? conductExpandParent(props.defaultExpandedKeys, keyEntities) : props.defaultExpandedKeys;\n }\n if (!newState.expandedKeys) {\n delete newState.expandedKeys;\n }\n\n // ================ flattenNodes =================\n if (treeData || newState.expandedKeys) {\n var flattenNodes = flattenTreeData(treeData || prevState.treeData, newState.expandedKeys || prevState.expandedKeys, fieldNames);\n newState.flattenNodes = flattenNodes;\n }\n\n // ================ selectedKeys =================\n if (props.selectable) {\n if (needSync('selectedKeys')) {\n newState.selectedKeys = calcSelectedKeys(props.selectedKeys, props);\n } else if (!prevProps && props.defaultSelectedKeys) {\n newState.selectedKeys = calcSelectedKeys(props.defaultSelectedKeys, props);\n }\n }\n\n // ================= checkedKeys =================\n if (props.checkable) {\n var checkedKeyEntity;\n if (needSync('checkedKeys')) {\n checkedKeyEntity = parseCheckedKeys(props.checkedKeys) || {};\n } else if (!prevProps && props.defaultCheckedKeys) {\n checkedKeyEntity = parseCheckedKeys(props.defaultCheckedKeys) || {};\n } else if (treeData) {\n // If `treeData` changed, we also need check it\n checkedKeyEntity = parseCheckedKeys(props.checkedKeys) || {\n checkedKeys: prevState.checkedKeys,\n halfCheckedKeys: prevState.halfCheckedKeys\n };\n }\n if (checkedKeyEntity) {\n var _checkedKeyEntity = checkedKeyEntity,\n _checkedKeyEntity$che = _checkedKeyEntity.checkedKeys,\n checkedKeys = _checkedKeyEntity$che === void 0 ? [] : _checkedKeyEntity$che,\n _checkedKeyEntity$hal = _checkedKeyEntity.halfCheckedKeys,\n halfCheckedKeys = _checkedKeyEntity$hal === void 0 ? [] : _checkedKeyEntity$hal;\n if (!props.checkStrictly) {\n var conductKeys = conductCheck(checkedKeys, true, keyEntities);\n checkedKeys = conductKeys.checkedKeys;\n halfCheckedKeys = conductKeys.halfCheckedKeys;\n }\n newState.checkedKeys = checkedKeys;\n newState.halfCheckedKeys = halfCheckedKeys;\n }\n }\n\n // ================= loadedKeys ==================\n if (needSync('loadedKeys')) {\n newState.loadedKeys = props.loadedKeys;\n }\n return newState;\n }\n }]);\n return Tree;\n}(React.Component);\n_defineProperty(Tree, \"defaultProps\", {\n prefixCls: 'rc-tree',\n showLine: false,\n showIcon: true,\n selectable: true,\n multiple: false,\n checkable: false,\n disabled: false,\n checkStrictly: false,\n draggable: false,\n defaultExpandParent: true,\n autoExpandParent: false,\n defaultExpandAll: false,\n defaultExpandedKeys: [],\n defaultCheckedKeys: [],\n defaultSelectedKeys: [],\n dropIndicatorRender: DropIndicator,\n allowDrop: function allowDrop() {\n return true;\n },\n expandAction: false\n});\n_defineProperty(Tree, \"TreeNode\", TreeNode);\nexport default Tree;","import * as React from 'react';\nexport default function DropIndicator(_ref) {\n var dropPosition = _ref.dropPosition,\n dropLevelOffset = _ref.dropLevelOffset,\n indent = _ref.indent;\n var style = {\n pointerEvents: 'none',\n position: 'absolute',\n right: 0,\n backgroundColor: 'red',\n height: 2\n };\n switch (dropPosition) {\n case -1:\n style.top = 0;\n style.left = -dropLevelOffset * indent;\n break;\n case 1:\n style.bottom = 0;\n style.left = -dropLevelOffset * indent;\n break;\n case 0:\n style.bottom = 0;\n style.left = indent;\n break;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n style: style\n });\n}","import Tree from \"./Tree\";\nimport TreeNode from \"./TreeNode\";\nexport { TreeNode };\nexport default Tree;","// This icon file is generated automatically.\nvar FileOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z\" } }] }, \"name\": \"file\", \"theme\": \"outlined\" };\nexport default FileOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport FileOutlinedSvg from \"@ant-design/icons-svg/es/asn/FileOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar FileOutlined = function FileOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: FileOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n FileOutlined.displayName = 'FileOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(FileOutlined);","// This icon file is generated automatically.\nvar FolderOpenOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 00-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z\" } }] }, \"name\": \"folder-open\", \"theme\": \"outlined\" };\nexport default FolderOpenOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport FolderOpenOutlinedSvg from \"@ant-design/icons-svg/es/asn/FolderOpenOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar FolderOpenOutlined = function FolderOpenOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: FolderOpenOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n FolderOpenOutlined.displayName = 'FolderOpenOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(FolderOpenOutlined);","// This icon file is generated automatically.\nvar FolderOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M880 298.4H521L403.7 186.2a8.15 8.15 0 00-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z\" } }] }, \"name\": \"folder\", \"theme\": \"outlined\" };\nexport default FolderOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport FolderOutlinedSvg from \"@ant-design/icons-svg/es/asn/FolderOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar FolderOutlined = function FolderOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: FolderOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n FolderOutlined.displayName = 'FolderOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(FolderOutlined);","// This icon file is generated automatically.\nvar HolderOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M300 276.5a56 56 0 1056-97 56 56 0 00-56 97zm0 284a56 56 0 1056-97 56 56 0 00-56 97zM640 228a56 56 0 10112 0 56 56 0 00-112 0zm0 284a56 56 0 10112 0 56 56 0 00-112 0zM300 844.5a56 56 0 1056-97 56 56 0 00-56 97zM640 796a56 56 0 10112 0 56 56 0 00-112 0z\" } }] }, \"name\": \"holder\", \"theme\": \"outlined\" };\nexport default HolderOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport HolderOutlinedSvg from \"@ant-design/icons-svg/es/asn/HolderOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar HolderOutlined = function HolderOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: HolderOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n HolderOutlined.displayName = 'HolderOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(HolderOutlined);","import { Keyframes, unit } from '@ant-design/cssinjs';\nimport { getStyle as getCheckboxStyle } from '../../checkbox/style';\nimport { genFocusOutline, resetComponent } from '../../style';\nimport { genCollapseMotion } from '../../style/motion';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\n// ============================ Keyframes =============================\nconst treeNodeFX = new Keyframes('ant-tree-node-fx-do-not-use', {\n '0%': {\n opacity: 0\n },\n '100%': {\n opacity: 1\n }\n});\n// ============================== Switch ==============================\nconst getSwitchStyle = (prefixCls, token) => ({\n [`.${prefixCls}-switcher-icon`]: {\n display: 'inline-block',\n fontSize: 10,\n verticalAlign: 'baseline',\n svg: {\n transition: `transform ${token.motionDurationSlow}`\n }\n }\n});\n// =============================== Drop ===============================\nconst getDropIndicatorStyle = (prefixCls, token) => ({\n [`.${prefixCls}-drop-indicator`]: {\n position: 'absolute',\n // it should displayed over the following node\n zIndex: 1,\n height: 2,\n backgroundColor: token.colorPrimary,\n borderRadius: 1,\n pointerEvents: 'none',\n '&:after': {\n position: 'absolute',\n top: -3,\n insetInlineStart: -6,\n width: 8,\n height: 8,\n backgroundColor: 'transparent',\n border: `${unit(token.lineWidthBold)} solid ${token.colorPrimary}`,\n borderRadius: '50%',\n content: '\"\"'\n }\n }\n});\nexport const genBaseStyle = (prefixCls, token) => {\n const {\n treeCls,\n treeNodeCls,\n treeNodePadding,\n titleHeight,\n nodeSelectedBg,\n nodeHoverBg\n } = token;\n const treeCheckBoxMarginHorizontal = token.paddingXS;\n return {\n [treeCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n background: token.colorBgContainer,\n borderRadius: token.borderRadius,\n transition: `background-color ${token.motionDurationSlow}`,\n [`&${treeCls}-rtl`]: {\n // >>> Switcher\n [`${treeCls}-switcher`]: {\n '&_close': {\n [`${treeCls}-switcher-icon`]: {\n svg: {\n transform: 'rotate(90deg)'\n }\n }\n }\n }\n },\n [`&-focused:not(:hover):not(${treeCls}-active-focused)`]: Object.assign({}, genFocusOutline(token)),\n // =================== Virtual List ===================\n [`${treeCls}-list-holder-inner`]: {\n alignItems: 'flex-start'\n },\n [`&${treeCls}-block-node`]: {\n [`${treeCls}-list-holder-inner`]: {\n alignItems: 'stretch',\n // >>> Title\n [`${treeCls}-node-content-wrapper`]: {\n flex: 'auto'\n },\n // >>> Drag\n [`${treeNodeCls}.dragging`]: {\n position: 'relative',\n '&:after': {\n position: 'absolute',\n top: 0,\n insetInlineEnd: 0,\n bottom: treeNodePadding,\n insetInlineStart: 0,\n border: `1px solid ${token.colorPrimary}`,\n opacity: 0,\n animationName: treeNodeFX,\n animationDuration: token.motionDurationSlow,\n animationPlayState: 'running',\n animationFillMode: 'forwards',\n content: '\"\"',\n pointerEvents: 'none'\n }\n }\n }\n },\n // ===================== TreeNode =====================\n [`${treeNodeCls}`]: {\n display: 'flex',\n alignItems: 'flex-start',\n padding: `0 0 ${unit(treeNodePadding)} 0`,\n outline: 'none',\n '&-rtl': {\n direction: 'rtl'\n },\n // Disabled\n '&-disabled': {\n // >>> Title\n [`${treeCls}-node-content-wrapper`]: {\n color: token.colorTextDisabled,\n cursor: 'not-allowed',\n '&:hover': {\n background: 'transparent'\n }\n }\n },\n [`&-active ${treeCls}-node-content-wrapper`]: {\n background: token.controlItemBgHover\n },\n [`&:not(${treeNodeCls}-disabled).filter-node ${treeCls}-title`]: {\n color: 'inherit',\n fontWeight: 500\n },\n '&-draggable': {\n cursor: 'grab',\n [`${treeCls}-draggable-icon`]: {\n // https://github.com/ant-design/ant-design/issues/41915\n flexShrink: 0,\n width: titleHeight,\n lineHeight: `${unit(titleHeight)}`,\n textAlign: 'center',\n visibility: 'visible',\n opacity: 0.2,\n transition: `opacity ${token.motionDurationSlow}`,\n [`${treeNodeCls}:hover &`]: {\n opacity: 0.45\n }\n },\n [`&${treeNodeCls}-disabled`]: {\n [`${treeCls}-draggable-icon`]: {\n visibility: 'hidden'\n }\n }\n }\n },\n // >>> Indent\n [`${treeCls}-indent`]: {\n alignSelf: 'stretch',\n whiteSpace: 'nowrap',\n userSelect: 'none',\n '&-unit': {\n display: 'inline-block',\n width: titleHeight\n }\n },\n // >>> Drag Handler\n [`${treeCls}-draggable-icon`]: {\n visibility: 'hidden'\n },\n // >>> Switcher\n [`${treeCls}-switcher`]: Object.assign(Object.assign({}, getSwitchStyle(prefixCls, token)), {\n position: 'relative',\n flex: 'none',\n alignSelf: 'stretch',\n width: titleHeight,\n margin: 0,\n lineHeight: `${unit(titleHeight)}`,\n textAlign: 'center',\n cursor: 'pointer',\n userSelect: 'none',\n transition: `all ${token.motionDurationSlow}`,\n borderRadius: token.borderRadius,\n '&-noop': {\n cursor: 'unset'\n },\n [`&:not(${treeCls}-switcher-noop):hover`]: {\n backgroundColor: token.colorBgTextHover\n },\n '&_close': {\n [`${treeCls}-switcher-icon`]: {\n svg: {\n transform: 'rotate(-90deg)'\n }\n }\n },\n '&-loading-icon': {\n color: token.colorPrimary\n },\n '&-leaf-line': {\n position: 'relative',\n zIndex: 1,\n display: 'inline-block',\n width: '100%',\n height: '100%',\n // https://github.com/ant-design/ant-design/issues/31884\n '&:before': {\n position: 'absolute',\n top: 0,\n insetInlineEnd: token.calc(titleHeight).div(2).equal(),\n bottom: token.calc(treeNodePadding).mul(-1).equal(),\n marginInlineStart: -1,\n borderInlineEnd: `1px solid ${token.colorBorder}`,\n content: '\"\"'\n },\n '&:after': {\n position: 'absolute',\n width: token.calc(token.calc(titleHeight).div(2).equal()).mul(0.8).equal(),\n height: token.calc(titleHeight).div(2).equal(),\n borderBottom: `1px solid ${token.colorBorder}`,\n content: '\"\"'\n }\n }\n }),\n // >>> Checkbox\n [`${treeCls}-checkbox`]: {\n top: 'initial',\n marginInlineEnd: treeCheckBoxMarginHorizontal,\n alignSelf: 'flex-start',\n marginTop: token.marginXXS\n },\n // >>> Title\n // add `${treeCls}-checkbox + span` to cover checkbox `${checkboxCls} + span`\n [`${treeCls}-node-content-wrapper, ${treeCls}-checkbox + span`]: {\n position: 'relative',\n zIndex: 'auto',\n minHeight: titleHeight,\n margin: 0,\n padding: `0 ${unit(token.calc(token.paddingXS).div(2).equal())}`,\n color: 'inherit',\n lineHeight: `${unit(titleHeight)}`,\n background: 'transparent',\n borderRadius: token.borderRadius,\n cursor: 'pointer',\n transition: `all ${token.motionDurationMid}, border 0s, line-height 0s, box-shadow 0s`,\n '&:hover': {\n backgroundColor: nodeHoverBg\n },\n [`&${treeCls}-node-selected`]: {\n backgroundColor: nodeSelectedBg\n },\n // Icon\n [`${treeCls}-iconEle`]: {\n display: 'inline-block',\n width: titleHeight,\n height: titleHeight,\n lineHeight: `${unit(titleHeight)}`,\n textAlign: 'center',\n verticalAlign: 'top',\n '&:empty': {\n display: 'none'\n }\n }\n },\n // https://github.com/ant-design/ant-design/issues/28217\n [`${treeCls}-unselectable ${treeCls}-node-content-wrapper:hover`]: {\n backgroundColor: 'transparent'\n },\n // ==================== Draggable =====================\n [`${treeCls}-node-content-wrapper`]: Object.assign({\n lineHeight: `${unit(titleHeight)}`,\n userSelect: 'none'\n }, getDropIndicatorStyle(prefixCls, token)),\n [`${treeNodeCls}.drop-container`]: {\n '> [draggable]': {\n boxShadow: `0 0 0 2px ${token.colorPrimary}`\n }\n },\n // ==================== Show Line =====================\n '&-show-line': {\n // ================ Indent lines ================\n [`${treeCls}-indent`]: {\n '&-unit': {\n position: 'relative',\n height: '100%',\n '&:before': {\n position: 'absolute',\n top: 0,\n insetInlineEnd: token.calc(titleHeight).div(2).equal(),\n bottom: token.calc(treeNodePadding).mul(-1).equal(),\n borderInlineEnd: `1px solid ${token.colorBorder}`,\n content: '\"\"'\n },\n '&-end': {\n '&:before': {\n display: 'none'\n }\n }\n }\n },\n // ============== Cover Background ==============\n [`${treeCls}-switcher`]: {\n background: 'transparent',\n '&-line-icon': {\n // https://github.com/ant-design/ant-design/issues/32813\n verticalAlign: '-0.15em'\n }\n }\n },\n [`${treeNodeCls}-leaf-last`]: {\n [`${treeCls}-switcher`]: {\n '&-leaf-line': {\n '&:before': {\n top: 'auto !important',\n bottom: 'auto !important',\n height: `${unit(token.calc(titleHeight).div(2).equal())} !important`\n }\n }\n }\n }\n })\n };\n};\n// ============================ Directory =============================\nexport const genDirectoryStyle = token => {\n const {\n treeCls,\n treeNodeCls,\n treeNodePadding,\n directoryNodeSelectedBg,\n directoryNodeSelectedColor\n } = token;\n return {\n [`${treeCls}${treeCls}-directory`]: {\n // ================== TreeNode ==================\n [treeNodeCls]: {\n position: 'relative',\n // Hover color\n '&:before': {\n position: 'absolute',\n top: 0,\n insetInlineEnd: 0,\n bottom: treeNodePadding,\n insetInlineStart: 0,\n transition: `background-color ${token.motionDurationMid}`,\n content: '\"\"',\n pointerEvents: 'none'\n },\n '&:hover': {\n '&:before': {\n background: token.controlItemBgHover\n }\n },\n // Elements\n '> *': {\n zIndex: 1\n },\n // >>> Switcher\n [`${treeCls}-switcher`]: {\n transition: `color ${token.motionDurationMid}`\n },\n // >>> Title\n [`${treeCls}-node-content-wrapper`]: {\n borderRadius: 0,\n userSelect: 'none',\n '&:hover': {\n background: 'transparent'\n },\n [`&${treeCls}-node-selected`]: {\n color: directoryNodeSelectedColor,\n background: 'transparent'\n }\n },\n // ============= Selected =============\n '&-selected': {\n [`\n &:hover::before,\n &::before\n `]: {\n background: directoryNodeSelectedBg\n },\n // >>> Switcher\n [`${treeCls}-switcher`]: {\n color: directoryNodeSelectedColor\n },\n // >>> Title\n [`${treeCls}-node-content-wrapper`]: {\n color: directoryNodeSelectedColor,\n background: 'transparent'\n }\n }\n }\n }\n };\n};\n// ============================== Merged ==============================\nexport const genTreeStyle = (prefixCls, token) => {\n const treeCls = `.${prefixCls}`;\n const treeNodeCls = `${treeCls}-treenode`;\n const treeNodePadding = token.calc(token.paddingXS).div(2).equal();\n const treeToken = mergeToken(token, {\n treeCls,\n treeNodeCls,\n treeNodePadding\n });\n return [\n // Basic\n genBaseStyle(prefixCls, treeToken),\n // Directory\n genDirectoryStyle(treeToken)];\n};\nexport const initComponentToken = token => {\n const {\n controlHeightSM\n } = token;\n return {\n titleHeight: controlHeightSM,\n nodeHoverBg: token.controlItemBgHover,\n nodeSelectedBg: token.controlItemBgActive\n };\n};\nexport const prepareComponentToken = token => {\n const {\n colorTextLightSolid,\n colorPrimary\n } = token;\n return Object.assign(Object.assign({}, initComponentToken(token)), {\n directoryNodeSelectedColor: colorTextLightSolid,\n directoryNodeSelectedBg: colorPrimary\n });\n};\nexport default genStyleHooks('Tree', (token, _ref) => {\n let {\n prefixCls\n } = _ref;\n return [{\n [token.componentCls]: getCheckboxStyle(`${prefixCls}-checkbox`, token)\n }, genTreeStyle(prefixCls, token), genCollapseMotion(token)];\n}, prepareComponentToken);","\"use client\";\n\nimport React from 'react';\nexport const offset = 4;\nexport default function dropIndicatorRender(props) {\n const {\n dropPosition,\n dropLevelOffset,\n prefixCls,\n indent,\n direction = 'ltr'\n } = props;\n const startPosition = direction === 'ltr' ? 'left' : 'right';\n const endPosition = direction === 'ltr' ? 'right' : 'left';\n const style = {\n [startPosition]: -dropLevelOffset * indent + offset,\n [endPosition]: 0\n };\n switch (dropPosition) {\n case -1:\n style.top = -3;\n break;\n case 1:\n style.bottom = -3;\n break;\n default:\n // dropPosition === 0\n style.bottom = -3;\n style[startPosition] = indent + offset;\n break;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n style: style,\n className: `${prefixCls}-drop-indicator`\n });\n}","// This icon file is generated automatically.\nvar CaretDownFilled = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\" } }] }, \"name\": \"caret-down\", \"theme\": \"filled\" };\nexport default CaretDownFilled;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CaretDownFilledSvg from \"@ant-design/icons-svg/es/asn/CaretDownFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CaretDownFilled = function CaretDownFilled(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: CaretDownFilledSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n CaretDownFilled.displayName = 'CaretDownFilled';\n}\nexport default /*#__PURE__*/React.forwardRef(CaretDownFilled);","// This icon file is generated automatically.\nvar MinusSquareOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M328 544h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\" } }] }, \"name\": \"minus-square\", \"theme\": \"outlined\" };\nexport default MinusSquareOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport MinusSquareOutlinedSvg from \"@ant-design/icons-svg/es/asn/MinusSquareOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar MinusSquareOutlined = function MinusSquareOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: MinusSquareOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n MinusSquareOutlined.displayName = 'MinusSquareOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(MinusSquareOutlined);","// This icon file is generated automatically.\nvar PlusSquareOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M328 544h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\" } }] }, \"name\": \"plus-square\", \"theme\": \"outlined\" };\nexport default PlusSquareOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport PlusSquareOutlinedSvg from \"@ant-design/icons-svg/es/asn/PlusSquareOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar PlusSquareOutlined = function PlusSquareOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: PlusSquareOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n PlusSquareOutlined.displayName = 'PlusSquareOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(PlusSquareOutlined);","\"use client\";\n\nimport CaretDownFilled from \"@ant-design/icons/es/icons/CaretDownFilled\";\nimport FileOutlined from \"@ant-design/icons/es/icons/FileOutlined\";\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport MinusSquareOutlined from \"@ant-design/icons/es/icons/MinusSquareOutlined\";\nimport PlusSquareOutlined from \"@ant-design/icons/es/icons/PlusSquareOutlined\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { cloneElement, isValidElement } from '../../_util/reactNode';\nconst SwitcherIconCom = props => {\n const {\n prefixCls,\n switcherIcon,\n treeNodeProps,\n showLine\n } = props;\n const {\n isLeaf,\n expanded,\n loading\n } = treeNodeProps;\n if (loading) {\n return /*#__PURE__*/React.createElement(LoadingOutlined, {\n className: `${prefixCls}-switcher-loading-icon`\n });\n }\n let showLeafIcon;\n if (showLine && typeof showLine === 'object') {\n showLeafIcon = showLine.showLeafIcon;\n }\n if (isLeaf) {\n if (!showLine) {\n return null;\n }\n if (typeof showLeafIcon !== 'boolean' && !!showLeafIcon) {\n const leafIcon = typeof showLeafIcon === 'function' ? showLeafIcon(treeNodeProps) : showLeafIcon;\n const leafCls = `${prefixCls}-switcher-line-custom-icon`;\n if (isValidElement(leafIcon)) {\n return cloneElement(leafIcon, {\n className: classNames(leafIcon.props.className || '', leafCls)\n });\n }\n return leafIcon;\n }\n return showLeafIcon ? ( /*#__PURE__*/React.createElement(FileOutlined, {\n className: `${prefixCls}-switcher-line-icon`\n })) : ( /*#__PURE__*/React.createElement(\"span\", {\n className: `${prefixCls}-switcher-leaf-line`\n }));\n }\n const switcherCls = `${prefixCls}-switcher-icon`;\n const switcher = typeof switcherIcon === 'function' ? switcherIcon(treeNodeProps) : switcherIcon;\n if (isValidElement(switcher)) {\n return cloneElement(switcher, {\n className: classNames(switcher.props.className || '', switcherCls)\n });\n }\n if (switcher !== undefined) {\n return switcher;\n }\n if (showLine) {\n return expanded ? ( /*#__PURE__*/React.createElement(MinusSquareOutlined, {\n className: `${prefixCls}-switcher-line-icon`\n })) : ( /*#__PURE__*/React.createElement(PlusSquareOutlined, {\n className: `${prefixCls}-switcher-line-icon`\n }));\n }\n return /*#__PURE__*/React.createElement(CaretDownFilled, {\n className: switcherCls\n });\n};\nexport default SwitcherIconCom;","\"use client\";\n\nimport React from 'react';\nimport HolderOutlined from \"@ant-design/icons/es/icons/HolderOutlined\";\nimport classNames from 'classnames';\nimport RcTree from 'rc-tree';\nimport initCollapseMotion from '../_util/motion';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nimport dropIndicatorRender from './utils/dropIndicator';\nimport SwitcherIconCom from './utils/iconUtil';\nimport { useToken } from '../theme/internal';\nconst Tree = /*#__PURE__*/React.forwardRef((props, ref) => {\n var _a;\n const {\n getPrefixCls,\n direction,\n virtual,\n tree\n } = React.useContext(ConfigContext);\n const {\n prefixCls: customizePrefixCls,\n className,\n showIcon = false,\n showLine,\n switcherIcon,\n blockNode = false,\n children,\n checkable = false,\n selectable = true,\n draggable,\n motion: customMotion,\n style\n } = props;\n const prefixCls = getPrefixCls('tree', customizePrefixCls);\n const rootPrefixCls = getPrefixCls();\n const motion = customMotion !== null && customMotion !== void 0 ? customMotion : Object.assign(Object.assign({}, initCollapseMotion(rootPrefixCls)), {\n motionAppear: false\n });\n const newProps = Object.assign(Object.assign({}, props), {\n checkable,\n selectable,\n showIcon,\n motion,\n blockNode,\n showLine: Boolean(showLine),\n dropIndicatorRender\n });\n const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n const [, token] = useToken();\n const itemHeight = token.paddingXS / 2 + (((_a = token.Tree) === null || _a === void 0 ? void 0 : _a.titleHeight) || token.controlHeightSM);\n const draggableConfig = React.useMemo(() => {\n if (!draggable) {\n return false;\n }\n let mergedDraggable = {};\n switch (typeof draggable) {\n case 'function':\n mergedDraggable.nodeDraggable = draggable;\n break;\n case 'object':\n mergedDraggable = Object.assign({}, draggable);\n break;\n default:\n break;\n // Do nothing\n }\n if (mergedDraggable.icon !== false) {\n mergedDraggable.icon = mergedDraggable.icon || /*#__PURE__*/React.createElement(HolderOutlined, null);\n }\n return mergedDraggable;\n }, [draggable]);\n const renderSwitcherIcon = nodeProps => ( /*#__PURE__*/React.createElement(SwitcherIconCom, {\n prefixCls: prefixCls,\n switcherIcon: switcherIcon,\n treeNodeProps: nodeProps,\n showLine: showLine\n }));\n return wrapCSSVar( /*#__PURE__*/React.createElement(RcTree, Object.assign({\n itemHeight: itemHeight,\n ref: ref,\n virtual: virtual\n }, newProps, {\n // newProps may contain style so declare style below it\n style: Object.assign(Object.assign({}, tree === null || tree === void 0 ? void 0 : tree.style), style),\n prefixCls: prefixCls,\n className: classNames({\n [`${prefixCls}-icon-hide`]: !showIcon,\n [`${prefixCls}-block-node`]: blockNode,\n [`${prefixCls}-unselectable`]: !selectable,\n [`${prefixCls}-rtl`]: direction === 'rtl'\n }, tree === null || tree === void 0 ? void 0 : tree.className, className, hashId, cssVarCls),\n direction: direction,\n checkable: checkable ? /*#__PURE__*/React.createElement(\"span\", {\n className: `${prefixCls}-checkbox-inner`\n }) : checkable,\n selectable: selectable,\n switcherIcon: renderSwitcherIcon,\n draggable: draggableConfig\n }), children));\n});\nif (process.env.NODE_ENV !== 'production') {\n Tree.displayName = 'Tree';\n}\nexport default Tree;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport { fillFieldNames } from \"rc-tree/es/utils/treeUtil\";\nvar Record;\n(function (Record) {\n Record[Record[\"None\"] = 0] = \"None\";\n Record[Record[\"Start\"] = 1] = \"Start\";\n Record[Record[\"End\"] = 2] = \"End\";\n})(Record || (Record = {}));\nfunction traverseNodesKey(treeData, callback, fieldNames) {\n const {\n key: fieldKey,\n children: fieldChildren\n } = fieldNames;\n function processNode(dataNode) {\n const key = dataNode[fieldKey];\n const children = dataNode[fieldChildren];\n if (callback(key, dataNode) !== false) {\n traverseNodesKey(children || [], callback, fieldNames);\n }\n }\n treeData.forEach(processNode);\n}\n/** 计算选中范围,只考虑expanded情况以优化性能 */\nexport function calcRangeKeys(_ref) {\n let {\n treeData,\n expandedKeys,\n startKey,\n endKey,\n fieldNames\n } = _ref;\n const keys = [];\n let record = Record.None;\n if (startKey && startKey === endKey) {\n return [startKey];\n }\n if (!startKey || !endKey) {\n return [];\n }\n function matchKey(key) {\n return key === startKey || key === endKey;\n }\n traverseNodesKey(treeData, key => {\n if (record === Record.End) {\n return false;\n }\n if (matchKey(key)) {\n // Match test\n keys.push(key);\n if (record === Record.None) {\n record = Record.Start;\n } else if (record === Record.Start) {\n record = Record.End;\n return false;\n }\n } else if (record === Record.Start) {\n // Append selection\n keys.push(key);\n }\n return expandedKeys.includes(key);\n }, fillFieldNames(fieldNames));\n return keys;\n}\nexport function convertDirectoryKeysToNodes(treeData, keys, fieldNames) {\n const restKeys = _toConsumableArray(keys);\n const nodes = [];\n traverseNodesKey(treeData, (key, node) => {\n const index = restKeys.indexOf(key);\n if (index !== -1) {\n nodes.push(node);\n restKeys.splice(index, 1);\n }\n return !!restKeys.length;\n }, fillFieldNames(fieldNames));\n return nodes;\n}","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport FileOutlined from \"@ant-design/icons/es/icons/FileOutlined\";\nimport FolderOpenOutlined from \"@ant-design/icons/es/icons/FolderOpenOutlined\";\nimport FolderOutlined from \"@ant-design/icons/es/icons/FolderOutlined\";\nimport classNames from 'classnames';\nimport { conductExpandParent } from \"rc-tree/es/util\";\nimport { convertDataToEntities, convertTreeToData } from \"rc-tree/es/utils/treeUtil\";\nimport { ConfigContext } from '../config-provider';\nimport Tree from './Tree';\nimport { calcRangeKeys, convertDirectoryKeysToNodes } from './utils/dictUtil';\nfunction getIcon(props) {\n const {\n isLeaf,\n expanded\n } = props;\n if (isLeaf) {\n return /*#__PURE__*/React.createElement(FileOutlined, null);\n }\n return expanded ? /*#__PURE__*/React.createElement(FolderOpenOutlined, null) : /*#__PURE__*/React.createElement(FolderOutlined, null);\n}\nfunction getTreeData(_ref) {\n let {\n treeData,\n children\n } = _ref;\n return treeData || convertTreeToData(children);\n}\nconst DirectoryTree = (_a, ref) => {\n var {\n defaultExpandAll,\n defaultExpandParent,\n defaultExpandedKeys\n } = _a,\n props = __rest(_a, [\"defaultExpandAll\", \"defaultExpandParent\", \"defaultExpandedKeys\"]);\n // Shift click usage\n const lastSelectedKey = React.useRef();\n const cachedSelectedKeys = React.useRef();\n const getInitExpandedKeys = () => {\n const {\n keyEntities\n } = convertDataToEntities(getTreeData(props));\n let initExpandedKeys;\n // Expanded keys\n if (defaultExpandAll) {\n initExpandedKeys = Object.keys(keyEntities);\n } else if (defaultExpandParent) {\n initExpandedKeys = conductExpandParent(props.expandedKeys || defaultExpandedKeys || [], keyEntities);\n } else {\n initExpandedKeys = props.expandedKeys || defaultExpandedKeys;\n }\n return initExpandedKeys;\n };\n const [selectedKeys, setSelectedKeys] = React.useState(props.selectedKeys || props.defaultSelectedKeys || []);\n const [expandedKeys, setExpandedKeys] = React.useState(() => getInitExpandedKeys());\n React.useEffect(() => {\n if ('selectedKeys' in props) {\n setSelectedKeys(props.selectedKeys);\n }\n }, [props.selectedKeys]);\n React.useEffect(() => {\n if ('expandedKeys' in props) {\n setExpandedKeys(props.expandedKeys);\n }\n }, [props.expandedKeys]);\n const onExpand = (keys, info) => {\n var _a;\n if (!('expandedKeys' in props)) {\n setExpandedKeys(keys);\n }\n // Call origin function\n return (_a = props.onExpand) === null || _a === void 0 ? void 0 : _a.call(props, keys, info);\n };\n const onSelect = (keys, event) => {\n var _a;\n const {\n multiple,\n fieldNames\n } = props;\n const {\n node,\n nativeEvent\n } = event;\n const {\n key = ''\n } = node;\n const treeData = getTreeData(props);\n // const newState: DirectoryTreeState = {};\n // We need wrap this event since some value is not same\n const newEvent = Object.assign(Object.assign({}, event), {\n selected: true\n });\n // Windows / Mac single pick\n const ctrlPick = (nativeEvent === null || nativeEvent === void 0 ? void 0 : nativeEvent.ctrlKey) || (nativeEvent === null || nativeEvent === void 0 ? void 0 : nativeEvent.metaKey);\n const shiftPick = nativeEvent === null || nativeEvent === void 0 ? void 0 : nativeEvent.shiftKey;\n // Generate new selected keys\n let newSelectedKeys;\n if (multiple && ctrlPick) {\n // Control click\n newSelectedKeys = keys;\n lastSelectedKey.current = key;\n cachedSelectedKeys.current = newSelectedKeys;\n newEvent.selectedNodes = convertDirectoryKeysToNodes(treeData, newSelectedKeys, fieldNames);\n } else if (multiple && shiftPick) {\n // Shift click\n newSelectedKeys = Array.from(new Set([].concat(_toConsumableArray(cachedSelectedKeys.current || []), _toConsumableArray(calcRangeKeys({\n treeData,\n expandedKeys,\n startKey: key,\n endKey: lastSelectedKey.current,\n fieldNames\n })))));\n newEvent.selectedNodes = convertDirectoryKeysToNodes(treeData, newSelectedKeys, fieldNames);\n } else {\n // Single click\n newSelectedKeys = [key];\n lastSelectedKey.current = key;\n cachedSelectedKeys.current = newSelectedKeys;\n newEvent.selectedNodes = convertDirectoryKeysToNodes(treeData, newSelectedKeys, fieldNames);\n }\n (_a = props.onSelect) === null || _a === void 0 ? void 0 : _a.call(props, newSelectedKeys, newEvent);\n if (!('selectedKeys' in props)) {\n setSelectedKeys(newSelectedKeys);\n }\n };\n const {\n getPrefixCls,\n direction\n } = React.useContext(ConfigContext);\n const {\n prefixCls: customizePrefixCls,\n className,\n showIcon = true,\n expandAction = 'click'\n } = props,\n otherProps = __rest(props, [\"prefixCls\", \"className\", \"showIcon\", \"expandAction\"]);\n const prefixCls = getPrefixCls('tree', customizePrefixCls);\n const connectClassName = classNames(`${prefixCls}-directory`, {\n [`${prefixCls}-directory-rtl`]: direction === 'rtl'\n }, className);\n return /*#__PURE__*/React.createElement(Tree, Object.assign({\n icon: getIcon,\n ref: ref,\n blockNode: true\n }, otherProps, {\n showIcon: showIcon,\n expandAction: expandAction,\n prefixCls: prefixCls,\n className: connectClassName,\n expandedKeys: expandedKeys,\n selectedKeys: selectedKeys,\n onSelect: onSelect,\n onExpand: onExpand\n }));\n};\nconst ForwardDirectoryTree = /*#__PURE__*/React.forwardRef(DirectoryTree);\nif (process.env.NODE_ENV !== 'production') {\n ForwardDirectoryTree.displayName = 'DirectoryTree';\n}\nexport default ForwardDirectoryTree;","\"use client\";\n\nimport { TreeNode } from 'rc-tree';\nimport DirectoryTree from './DirectoryTree';\nimport TreePure from './Tree';\nconst Tree = TreePure;\nTree.DirectoryTree = DirectoryTree;\nTree.TreeNode = TreeNode;\nexport default Tree;","\"use client\";\n\nimport SearchOutlined from \"@ant-design/icons/es/icons/SearchOutlined\";\nimport * as React from 'react';\nimport Input from '../../../input';\nfunction FilterSearch(_ref) {\n let {\n value,\n onChange,\n filterSearch,\n tablePrefixCls,\n locale\n } = _ref;\n if (!filterSearch) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: `${tablePrefixCls}-filter-dropdown-search`\n }, /*#__PURE__*/React.createElement(Input, {\n prefix: /*#__PURE__*/React.createElement(SearchOutlined, null),\n placeholder: locale.filterSearchPlaceholder,\n onChange: onChange,\n value: value,\n // for skip min-width of input\n htmlSize: 1,\n className: `${tablePrefixCls}-filter-dropdown-search-input`\n }));\n}\nexport default FilterSearch;","\"use client\";\n\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nconst onKeyDown = event => {\n const {\n keyCode\n } = event;\n if (keyCode === KeyCode.ENTER) {\n event.stopPropagation();\n }\n};\nconst FilterDropdownMenuWrapper = /*#__PURE__*/React.forwardRef((props, ref) => ( /*#__PURE__*/React.createElement(\"div\", {\n className: props.className,\n onClick: e => e.stopPropagation(),\n onKeyDown: onKeyDown,\n ref: ref\n}, props.children)));\nif (process.env.NODE_ENV !== 'production') {\n FilterDropdownMenuWrapper.displayName = 'FilterDropdownMenuWrapper';\n}\nexport default FilterDropdownMenuWrapper;","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport FilterFilled from \"@ant-design/icons/es/icons/FilterFilled\";\nimport classNames from 'classnames';\nimport isEqual from \"rc-util/es/isEqual\";\nimport useSyncState from '../../../_util/hooks/useSyncState';\nimport { devUseWarning } from '../../../_util/warning';\nimport Button from '../../../button';\nimport Checkbox from '../../../checkbox';\nimport { ConfigContext } from '../../../config-provider/context';\nimport Dropdown from '../../../dropdown';\nimport Empty from '../../../empty';\nimport Menu from '../../../menu';\nimport { OverrideProvider } from '../../../menu/OverrideContext';\nimport Radio from '../../../radio';\nimport Tree from '../../../tree';\nimport FilterSearch from './FilterSearch';\nimport FilterDropdownMenuWrapper from './FilterWrapper';\nexport function flattenKeys(filters) {\n let keys = [];\n (filters || []).forEach(_ref => {\n let {\n value,\n children\n } = _ref;\n keys.push(value);\n if (children) {\n keys = [].concat(_toConsumableArray(keys), _toConsumableArray(flattenKeys(children)));\n }\n });\n return keys;\n}\nfunction hasSubMenu(filters) {\n return filters.some(_ref2 => {\n let {\n children\n } = _ref2;\n return children;\n });\n}\nfunction searchValueMatched(searchValue, text) {\n if (typeof text === 'string' || typeof text === 'number') {\n return text === null || text === void 0 ? void 0 : text.toString().toLowerCase().includes(searchValue.trim().toLowerCase());\n }\n return false;\n}\nfunction renderFilterItems(_ref3) {\n let {\n filters,\n prefixCls,\n filteredKeys,\n filterMultiple,\n searchValue,\n filterSearch\n } = _ref3;\n return filters.map((filter, index) => {\n const key = String(filter.value);\n if (filter.children) {\n return {\n key: key || index,\n label: filter.text,\n popupClassName: `${prefixCls}-dropdown-submenu`,\n children: renderFilterItems({\n filters: filter.children,\n prefixCls,\n filteredKeys,\n filterMultiple,\n searchValue,\n filterSearch\n })\n };\n }\n const Component = filterMultiple ? Checkbox : Radio;\n const item = {\n key: filter.value !== undefined ? key : index,\n label: ( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Component, {\n checked: filteredKeys.includes(key)\n }), /*#__PURE__*/React.createElement(\"span\", null, filter.text)))\n };\n if (searchValue.trim()) {\n if (typeof filterSearch === 'function') {\n return filterSearch(searchValue, filter) ? item : null;\n }\n return searchValueMatched(searchValue, filter.text) ? item : null;\n }\n return item;\n });\n}\nfunction wrapStringListType(keys) {\n return keys || [];\n}\nfunction FilterDropdown(props) {\n var _a, _b;\n const {\n tablePrefixCls,\n prefixCls,\n column,\n dropdownPrefixCls,\n columnKey,\n filterMultiple,\n filterMode = 'menu',\n filterSearch = false,\n filterState,\n triggerFilter,\n locale,\n children,\n getPopupContainer,\n rootClassName\n } = props;\n const {\n filterDropdownOpen,\n onFilterDropdownOpenChange,\n filterResetToDefaultFilteredValue,\n defaultFilteredValue,\n // Deprecated\n filterDropdownVisible,\n onFilterDropdownVisibleChange\n } = column;\n const [visible, setVisible] = React.useState(false);\n const filtered = !!(filterState && (((_a = filterState.filteredKeys) === null || _a === void 0 ? void 0 : _a.length) || filterState.forceFiltered));\n const triggerVisible = newVisible => {\n setVisible(newVisible);\n onFilterDropdownOpenChange === null || onFilterDropdownOpenChange === void 0 ? void 0 : onFilterDropdownOpenChange(newVisible);\n onFilterDropdownVisibleChange === null || onFilterDropdownVisibleChange === void 0 ? void 0 : onFilterDropdownVisibleChange(newVisible);\n };\n if (process.env.NODE_ENV !== 'production') {\n const warning = devUseWarning('Table');\n [['filterDropdownVisible', 'filterDropdownOpen', filterDropdownVisible], ['onFilterDropdownVisibleChange', 'onFilterDropdownOpenChange', onFilterDropdownVisibleChange]].forEach(_ref4 => {\n let [deprecatedName, newName, prop] = _ref4;\n warning.deprecated(prop === undefined || prop === null, deprecatedName, newName);\n });\n }\n const mergedVisible = (_b = filterDropdownOpen !== null && filterDropdownOpen !== void 0 ? filterDropdownOpen : filterDropdownVisible) !== null && _b !== void 0 ? _b : visible;\n // ===================== Select Keys =====================\n const propFilteredKeys = filterState === null || filterState === void 0 ? void 0 : filterState.filteredKeys;\n const [getFilteredKeysSync, setFilteredKeysSync] = useSyncState(wrapStringListType(propFilteredKeys));\n const onSelectKeys = _ref5 => {\n let {\n selectedKeys\n } = _ref5;\n setFilteredKeysSync(selectedKeys);\n };\n const onCheck = (keys, _ref6) => {\n let {\n node,\n checked\n } = _ref6;\n if (!filterMultiple) {\n onSelectKeys({\n selectedKeys: checked && node.key ? [node.key] : []\n });\n } else {\n onSelectKeys({\n selectedKeys: keys\n });\n }\n };\n React.useEffect(() => {\n if (!visible) {\n return;\n }\n onSelectKeys({\n selectedKeys: wrapStringListType(propFilteredKeys)\n });\n }, [propFilteredKeys]);\n // ====================== Open Keys ======================\n const [openKeys, setOpenKeys] = React.useState([]);\n const onOpenChange = keys => {\n setOpenKeys(keys);\n };\n // search in tree mode column filter\n const [searchValue, setSearchValue] = React.useState('');\n const onSearch = e => {\n const {\n value\n } = e.target;\n setSearchValue(value);\n };\n // clear search value after close filter dropdown\n React.useEffect(() => {\n if (!visible) {\n setSearchValue('');\n }\n }, [visible]);\n // ======================= Submit ========================\n const internalTriggerFilter = keys => {\n const mergedKeys = keys && keys.length ? keys : null;\n if (mergedKeys === null && (!filterState || !filterState.filteredKeys)) {\n return null;\n }\n if (isEqual(mergedKeys, filterState === null || filterState === void 0 ? void 0 : filterState.filteredKeys, true)) {\n return null;\n }\n triggerFilter({\n column,\n key: columnKey,\n filteredKeys: mergedKeys\n });\n };\n const onConfirm = () => {\n triggerVisible(false);\n internalTriggerFilter(getFilteredKeysSync());\n };\n const onReset = function () {\n let {\n confirm,\n closeDropdown\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n confirm: false,\n closeDropdown: false\n };\n if (confirm) {\n internalTriggerFilter([]);\n }\n if (closeDropdown) {\n triggerVisible(false);\n }\n setSearchValue('');\n if (filterResetToDefaultFilteredValue) {\n setFilteredKeysSync((defaultFilteredValue || []).map(key => String(key)));\n } else {\n setFilteredKeysSync([]);\n }\n };\n const doFilter = function () {\n let {\n closeDropdown\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n closeDropdown: true\n };\n if (closeDropdown) {\n triggerVisible(false);\n }\n internalTriggerFilter(getFilteredKeysSync());\n };\n const onVisibleChange = (newVisible, info) => {\n if (info.source === 'trigger') {\n if (newVisible && propFilteredKeys !== undefined) {\n // Sync filteredKeys on appear in controlled mode (propFilteredKeys !== undefined)\n setFilteredKeysSync(wrapStringListType(propFilteredKeys));\n }\n triggerVisible(newVisible);\n // Default will filter when closed\n if (!newVisible && !column.filterDropdown) {\n onConfirm();\n }\n }\n };\n // ======================== Style ========================\n const dropdownMenuClass = classNames({\n [`${dropdownPrefixCls}-menu-without-submenu`]: !hasSubMenu(column.filters || [])\n });\n const onCheckAll = e => {\n if (e.target.checked) {\n const allFilterKeys = flattenKeys(column === null || column === void 0 ? void 0 : column.filters).map(key => String(key));\n setFilteredKeysSync(allFilterKeys);\n } else {\n setFilteredKeysSync([]);\n }\n };\n const getTreeData = _ref7 => {\n let {\n filters\n } = _ref7;\n return (filters || []).map((filter, index) => {\n const key = String(filter.value);\n const item = {\n title: filter.text,\n key: filter.value !== undefined ? key : String(index)\n };\n if (filter.children) {\n item.children = getTreeData({\n filters: filter.children\n });\n }\n return item;\n });\n };\n const getFilterData = node => {\n var _a;\n return Object.assign(Object.assign({}, node), {\n text: node.title,\n value: node.key,\n children: ((_a = node.children) === null || _a === void 0 ? void 0 : _a.map(item => getFilterData(item))) || []\n });\n };\n let dropdownContent;\n if (typeof column.filterDropdown === 'function') {\n dropdownContent = column.filterDropdown({\n prefixCls: `${dropdownPrefixCls}-custom`,\n setSelectedKeys: selectedKeys => onSelectKeys({\n selectedKeys\n }),\n selectedKeys: getFilteredKeysSync(),\n confirm: doFilter,\n clearFilters: onReset,\n filters: column.filters,\n visible: mergedVisible,\n close: () => {\n triggerVisible(false);\n }\n });\n } else if (column.filterDropdown) {\n dropdownContent = column.filterDropdown;\n } else {\n const selectedKeys = getFilteredKeysSync() || [];\n const getFilterComponent = () => {\n if ((column.filters || []).length === 0) {\n return /*#__PURE__*/React.createElement(Empty, {\n image: Empty.PRESENTED_IMAGE_SIMPLE,\n description: locale.filterEmptyText,\n imageStyle: {\n height: 24\n },\n style: {\n margin: 0,\n padding: '16px 0'\n }\n });\n }\n if (filterMode === 'tree') {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FilterSearch, {\n filterSearch: filterSearch,\n value: searchValue,\n onChange: onSearch,\n tablePrefixCls: tablePrefixCls,\n locale: locale\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: `${tablePrefixCls}-filter-dropdown-tree`\n }, filterMultiple ? ( /*#__PURE__*/React.createElement(Checkbox, {\n checked: selectedKeys.length === flattenKeys(column.filters).length,\n indeterminate: selectedKeys.length > 0 && selectedKeys.length < flattenKeys(column.filters).length,\n className: `${tablePrefixCls}-filter-dropdown-checkall`,\n onChange: onCheckAll\n }, locale.filterCheckall)) : null, /*#__PURE__*/React.createElement(Tree, {\n checkable: true,\n selectable: false,\n blockNode: true,\n multiple: filterMultiple,\n checkStrictly: !filterMultiple,\n className: `${dropdownPrefixCls}-menu`,\n onCheck: onCheck,\n checkedKeys: selectedKeys,\n selectedKeys: selectedKeys,\n showIcon: false,\n treeData: getTreeData({\n filters: column.filters\n }),\n autoExpandParent: true,\n defaultExpandAll: true,\n filterTreeNode: searchValue.trim() ? node => {\n if (typeof filterSearch === 'function') {\n return filterSearch(searchValue, getFilterData(node));\n }\n return searchValueMatched(searchValue, node.title);\n } : undefined\n })));\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FilterSearch, {\n filterSearch: filterSearch,\n value: searchValue,\n onChange: onSearch,\n tablePrefixCls: tablePrefixCls,\n locale: locale\n }), /*#__PURE__*/React.createElement(Menu, {\n selectable: true,\n multiple: filterMultiple,\n prefixCls: `${dropdownPrefixCls}-menu`,\n className: dropdownMenuClass,\n onSelect: onSelectKeys,\n onDeselect: onSelectKeys,\n selectedKeys: selectedKeys,\n getPopupContainer: getPopupContainer,\n openKeys: openKeys,\n onOpenChange: onOpenChange,\n items: renderFilterItems({\n filters: column.filters || [],\n filterSearch,\n prefixCls,\n filteredKeys: getFilteredKeysSync(),\n filterMultiple,\n searchValue\n })\n }));\n };\n const getResetDisabled = () => {\n if (filterResetToDefaultFilteredValue) {\n return isEqual((defaultFilteredValue || []).map(key => String(key)), selectedKeys, true);\n }\n return selectedKeys.length === 0;\n };\n dropdownContent = /*#__PURE__*/React.createElement(React.Fragment, null, getFilterComponent(), /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-dropdown-btns`\n }, /*#__PURE__*/React.createElement(Button, {\n type: \"link\",\n size: \"small\",\n disabled: getResetDisabled(),\n onClick: () => onReset()\n }, locale.filterReset), /*#__PURE__*/React.createElement(Button, {\n type: \"primary\",\n size: \"small\",\n onClick: onConfirm\n }, locale.filterConfirm)));\n }\n // We should not block customize Menu with additional props\n if (column.filterDropdown) {\n dropdownContent = /*#__PURE__*/React.createElement(OverrideProvider, {\n selectable: undefined\n }, dropdownContent);\n }\n const menu = () => ( /*#__PURE__*/React.createElement(FilterDropdownMenuWrapper, {\n className: `${prefixCls}-dropdown`\n }, dropdownContent));\n let filterIcon;\n if (typeof column.filterIcon === 'function') {\n filterIcon = column.filterIcon(filtered);\n } else if (column.filterIcon) {\n filterIcon = column.filterIcon;\n } else {\n filterIcon = /*#__PURE__*/React.createElement(FilterFilled, null);\n }\n const {\n direction\n } = React.useContext(ConfigContext);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-column`\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: `${tablePrefixCls}-column-title`\n }, children), /*#__PURE__*/React.createElement(Dropdown, {\n dropdownRender: menu,\n trigger: ['click'],\n open: mergedVisible,\n onOpenChange: onVisibleChange,\n getPopupContainer: getPopupContainer,\n placement: direction === 'rtl' ? 'bottomLeft' : 'bottomRight',\n rootClassName: rootClassName\n }, /*#__PURE__*/React.createElement(\"span\", {\n role: \"button\",\n tabIndex: -1,\n className: classNames(`${prefixCls}-trigger`, {\n active: filtered\n }),\n onClick: e => {\n e.stopPropagation();\n }\n }, filterIcon)));\n}\nexport default FilterDropdown;","import * as React from 'react';\nimport useForceUpdate from './useForceUpdate';\nexport default function useSyncState(initialValue) {\n const ref = React.useRef(initialValue);\n const forceUpdate = useForceUpdate();\n return [() => ref.current, newValue => {\n ref.current = newValue;\n // re-render\n forceUpdate();\n }];\n}","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport { devUseWarning } from '../../../_util/warning';\nimport { getColumnKey, getColumnPos, renderColumnTitle } from '../../util';\nimport FilterDropdown, { flattenKeys } from './FilterDropdown';\nfunction collectFilterStates(columns, init, pos) {\n let filterStates = [];\n (columns || []).forEach((column, index) => {\n var _a;\n const columnPos = getColumnPos(index, pos);\n if (column.filters || 'filterDropdown' in column || 'onFilter' in column) {\n if ('filteredValue' in column) {\n // Controlled\n let filteredValues = column.filteredValue;\n if (!('filterDropdown' in column)) {\n filteredValues = (_a = filteredValues === null || filteredValues === void 0 ? void 0 : filteredValues.map(String)) !== null && _a !== void 0 ? _a : filteredValues;\n }\n filterStates.push({\n column,\n key: getColumnKey(column, columnPos),\n filteredKeys: filteredValues,\n forceFiltered: column.filtered\n });\n } else {\n // Uncontrolled\n filterStates.push({\n column,\n key: getColumnKey(column, columnPos),\n filteredKeys: init && column.defaultFilteredValue ? column.defaultFilteredValue : undefined,\n forceFiltered: column.filtered\n });\n }\n }\n if ('children' in column) {\n filterStates = [].concat(_toConsumableArray(filterStates), _toConsumableArray(collectFilterStates(column.children, init, columnPos)));\n }\n });\n return filterStates;\n}\nfunction injectFilter(prefixCls, dropdownPrefixCls, columns, filterStates, locale, triggerFilter, getPopupContainer, pos, rootClassName) {\n return columns.map((column, index) => {\n const columnPos = getColumnPos(index, pos);\n const {\n filterMultiple = true,\n filterMode,\n filterSearch\n } = column;\n let newColumn = column;\n if (newColumn.filters || newColumn.filterDropdown) {\n const columnKey = getColumnKey(newColumn, columnPos);\n const filterState = filterStates.find(_ref => {\n let {\n key\n } = _ref;\n return columnKey === key;\n });\n newColumn = Object.assign(Object.assign({}, newColumn), {\n title: renderProps => ( /*#__PURE__*/React.createElement(FilterDropdown, {\n tablePrefixCls: prefixCls,\n prefixCls: `${prefixCls}-filter`,\n dropdownPrefixCls: dropdownPrefixCls,\n column: newColumn,\n columnKey: columnKey,\n filterState: filterState,\n filterMultiple: filterMultiple,\n filterMode: filterMode,\n filterSearch: filterSearch,\n triggerFilter: triggerFilter,\n locale: locale,\n getPopupContainer: getPopupContainer,\n rootClassName: rootClassName\n }, renderColumnTitle(column.title, renderProps)))\n });\n }\n if ('children' in newColumn) {\n newColumn = Object.assign(Object.assign({}, newColumn), {\n children: injectFilter(prefixCls, dropdownPrefixCls, newColumn.children, filterStates, locale, triggerFilter, getPopupContainer, columnPos, rootClassName)\n });\n }\n return newColumn;\n });\n}\nfunction generateFilterInfo(filterStates) {\n const currentFilters = {};\n filterStates.forEach(_ref2 => {\n let {\n key,\n filteredKeys,\n column\n } = _ref2;\n const keyAsString = key;\n const {\n filters,\n filterDropdown\n } = column;\n if (filterDropdown) {\n currentFilters[keyAsString] = filteredKeys || null;\n } else if (Array.isArray(filteredKeys)) {\n const keys = flattenKeys(filters);\n currentFilters[keyAsString] = keys.filter(originKey => filteredKeys.includes(String(originKey)));\n } else {\n currentFilters[keyAsString] = null;\n }\n });\n return currentFilters;\n}\nexport function getFilterData(data, filterStates, childrenColumnName) {\n return filterStates.reduce((currentData, filterState) => {\n const {\n column: {\n onFilter,\n filters\n },\n filteredKeys\n } = filterState;\n if (onFilter && filteredKeys && filteredKeys.length) {\n return currentData\n // shallow copy\n .map(record => Object.assign({}, record)).filter(record => filteredKeys.some(key => {\n const keys = flattenKeys(filters);\n const keyIndex = keys.findIndex(k => String(k) === String(key));\n const realKey = keyIndex !== -1 ? keys[keyIndex] : key;\n // filter children\n if (record[childrenColumnName]) {\n record[childrenColumnName] = getFilterData(record[childrenColumnName], filterStates, childrenColumnName);\n }\n return onFilter(realKey, record);\n }));\n }\n return currentData;\n }, data);\n}\nconst getMergedColumns = rawMergedColumns => rawMergedColumns.flatMap(column => {\n if ('children' in column) {\n return [column].concat(_toConsumableArray(getMergedColumns(column.children || [])));\n }\n return [column];\n});\nfunction useFilter(_ref3) {\n let {\n prefixCls,\n dropdownPrefixCls,\n mergedColumns: rawMergedColumns,\n onFilterChange,\n getPopupContainer,\n locale: tableLocale,\n rootClassName\n } = _ref3;\n const warning = devUseWarning('Table');\n const mergedColumns = React.useMemo(() => getMergedColumns(rawMergedColumns || []), [rawMergedColumns]);\n const [filterStates, setFilterStates] = React.useState(() => collectFilterStates(mergedColumns, true));\n const mergedFilterStates = React.useMemo(() => {\n const collectedStates = collectFilterStates(mergedColumns, false);\n if (collectedStates.length === 0) {\n return collectedStates;\n }\n let filteredKeysIsAllNotControlled = true;\n let filteredKeysIsAllControlled = true;\n collectedStates.forEach(_ref4 => {\n let {\n filteredKeys\n } = _ref4;\n if (filteredKeys !== undefined) {\n filteredKeysIsAllNotControlled = false;\n } else {\n filteredKeysIsAllControlled = false;\n }\n });\n // Return if not controlled\n if (filteredKeysIsAllNotControlled) {\n // Filter column may have been removed\n const keyList = (mergedColumns || []).map((column, index) => getColumnKey(column, getColumnPos(index)));\n return filterStates.filter(_ref5 => {\n let {\n key\n } = _ref5;\n return keyList.includes(key);\n }).map(item => {\n const col = mergedColumns[keyList.findIndex(key => key === item.key)];\n return Object.assign(Object.assign({}, item), {\n column: Object.assign(Object.assign({}, item.column), col),\n forceFiltered: col.filtered\n });\n });\n }\n process.env.NODE_ENV !== \"production\" ? warning(filteredKeysIsAllControlled, 'usage', 'Columns should all contain `filteredValue` or not contain `filteredValue`.') : void 0;\n return collectedStates;\n }, [mergedColumns, filterStates]);\n const filters = React.useMemo(() => generateFilterInfo(mergedFilterStates), [mergedFilterStates]);\n const triggerFilter = filterState => {\n const newFilterStates = mergedFilterStates.filter(_ref6 => {\n let {\n key\n } = _ref6;\n return key !== filterState.key;\n });\n newFilterStates.push(filterState);\n setFilterStates(newFilterStates);\n onFilterChange(generateFilterInfo(newFilterStates), newFilterStates);\n };\n const transformColumns = innerColumns => injectFilter(prefixCls, dropdownPrefixCls, innerColumns, mergedFilterStates, tableLocale, triggerFilter, getPopupContainer, undefined, rootClassName);\n return [transformColumns, mergedFilterStates, filters];\n}\nexport { flattenKeys };\nexport default useFilter;","const extendsObject = function () {\n const result = Object.assign({}, arguments.length <= 0 ? undefined : arguments[0]);\n for (let i = 1; i < arguments.length; i++) {\n const obj = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (obj) {\n Object.keys(obj).forEach(key => {\n const val = obj[key];\n if (val !== undefined) {\n result[key] = val;\n }\n });\n }\n }\n return result;\n};\nexport default extendsObject;","var __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { useState } from 'react';\nimport extendsObject from '../../_util/extendsObject';\nexport const DEFAULT_PAGE_SIZE = 10;\nexport function getPaginationParam(mergedPagination, pagination) {\n const param = {\n current: mergedPagination.current,\n pageSize: mergedPagination.pageSize\n };\n const paginationObj = pagination && typeof pagination === 'object' ? pagination : {};\n Object.keys(paginationObj).forEach(pageProp => {\n const value = mergedPagination[pageProp];\n if (typeof value !== 'function') {\n param[pageProp] = value;\n }\n });\n return param;\n}\nfunction usePagination(total, onChange, pagination) {\n const _a = pagination && typeof pagination === 'object' ? pagination : {},\n {\n total: paginationTotal = 0\n } = _a,\n paginationObj = __rest(_a, [\"total\"]);\n const [innerPagination, setInnerPagination] = useState(() => ({\n current: 'defaultCurrent' in paginationObj ? paginationObj.defaultCurrent : 1,\n pageSize: 'defaultPageSize' in paginationObj ? paginationObj.defaultPageSize : DEFAULT_PAGE_SIZE\n }));\n // ============ Basic Pagination Config ============\n const mergedPagination = extendsObject(innerPagination, paginationObj, {\n total: paginationTotal > 0 ? paginationTotal : total\n });\n // Reset `current` if data length or pageSize changed\n const maxPage = Math.ceil((paginationTotal || total) / mergedPagination.pageSize);\n if (mergedPagination.current > maxPage) {\n // Prevent a maximum page count of 0\n mergedPagination.current = maxPage || 1;\n }\n const refreshPagination = (current, pageSize) => {\n setInnerPagination({\n current: current !== null && current !== void 0 ? current : 1,\n pageSize: pageSize || mergedPagination.pageSize\n });\n };\n const onInternalChange = (current, pageSize) => {\n var _a;\n if (pagination) {\n (_a = pagination.onChange) === null || _a === void 0 ? void 0 : _a.call(pagination, current, pageSize);\n }\n refreshPagination(current, pageSize);\n onChange(current, pageSize || (mergedPagination === null || mergedPagination === void 0 ? void 0 : mergedPagination.pageSize));\n };\n if (pagination === false) {\n return [{}, () => {}];\n }\n return [Object.assign(Object.assign({}, mergedPagination), {\n onChange: onInternalChange\n }), refreshPagination];\n}\nexport default usePagination;","// This icon file is generated automatically.\nvar CaretDownOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\" } }] }, \"name\": \"caret-down\", \"theme\": \"outlined\" };\nexport default CaretDownOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CaretDownOutlinedSvg from \"@ant-design/icons-svg/es/asn/CaretDownOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CaretDownOutlined = function CaretDownOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: CaretDownOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n CaretDownOutlined.displayName = 'CaretDownOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(CaretDownOutlined);","// This icon file is generated automatically.\nvar CaretUpOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z\" } }] }, \"name\": \"caret-up\", \"theme\": \"outlined\" };\nexport default CaretUpOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CaretUpOutlinedSvg from \"@ant-design/icons-svg/es/asn/CaretUpOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CaretUpOutlined = function CaretUpOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: CaretUpOutlinedSvg\n }));\n};\nif (process.env.NODE_ENV !== 'production') {\n CaretUpOutlined.displayName = 'CaretUpOutlined';\n}\nexport default /*#__PURE__*/React.forwardRef(CaretUpOutlined);","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport CaretDownOutlined from \"@ant-design/icons/es/icons/CaretDownOutlined\";\nimport CaretUpOutlined from \"@ant-design/icons/es/icons/CaretUpOutlined\";\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport Tooltip from '../../tooltip';\nimport { getColumnKey, getColumnPos, renderColumnTitle, safeColumnTitle } from '../util';\nconst ASCEND = 'ascend';\nconst DESCEND = 'descend';\nfunction getMultiplePriority(column) {\n if (typeof column.sorter === 'object' && typeof column.sorter.multiple === 'number') {\n return column.sorter.multiple;\n }\n return false;\n}\nfunction getSortFunction(sorter) {\n if (typeof sorter === 'function') {\n return sorter;\n }\n if (sorter && typeof sorter === 'object' && sorter.compare) {\n return sorter.compare;\n }\n return false;\n}\nfunction nextSortDirection(sortDirections, current) {\n if (!current) {\n return sortDirections[0];\n }\n return sortDirections[sortDirections.indexOf(current) + 1];\n}\nfunction collectSortStates(columns, init, pos) {\n let sortStates = [];\n function pushState(column, columnPos) {\n sortStates.push({\n column,\n key: getColumnKey(column, columnPos),\n multiplePriority: getMultiplePriority(column),\n sortOrder: column.sortOrder\n });\n }\n (columns || []).forEach((column, index) => {\n const columnPos = getColumnPos(index, pos);\n if (column.children) {\n if ('sortOrder' in column) {\n // Controlled\n pushState(column, columnPos);\n }\n sortStates = [].concat(_toConsumableArray(sortStates), _toConsumableArray(collectSortStates(column.children, init, columnPos)));\n } else if (column.sorter) {\n if ('sortOrder' in column) {\n // Controlled\n pushState(column, columnPos);\n } else if (init && column.defaultSortOrder) {\n // Default sorter\n sortStates.push({\n column,\n key: getColumnKey(column, columnPos),\n multiplePriority: getMultiplePriority(column),\n sortOrder: column.defaultSortOrder\n });\n }\n }\n });\n return sortStates;\n}\nfunction injectSorter(prefixCls, columns, sorterStates, triggerSorter, defaultSortDirections, tableLocale, tableShowSorterTooltip, pos) {\n return (columns || []).map((column, index) => {\n const columnPos = getColumnPos(index, pos);\n let newColumn = column;\n if (newColumn.sorter) {\n const sortDirections = newColumn.sortDirections || defaultSortDirections;\n const showSorterTooltip = newColumn.showSorterTooltip === undefined ? tableShowSorterTooltip : newColumn.showSorterTooltip;\n const columnKey = getColumnKey(newColumn, columnPos);\n const sorterState = sorterStates.find(_ref => {\n let {\n key\n } = _ref;\n return key === columnKey;\n });\n const sortOrder = sorterState ? sorterState.sortOrder : null;\n const nextSortOrder = nextSortDirection(sortDirections, sortOrder);\n let sorter;\n if (column.sortIcon) {\n sorter = column.sortIcon({\n sortOrder\n });\n } else {\n const upNode = sortDirections.includes(ASCEND) && ( /*#__PURE__*/React.createElement(CaretUpOutlined, {\n className: classNames(`${prefixCls}-column-sorter-up`, {\n active: sortOrder === ASCEND\n })\n }));\n const downNode = sortDirections.includes(DESCEND) && ( /*#__PURE__*/React.createElement(CaretDownOutlined, {\n className: classNames(`${prefixCls}-column-sorter-down`, {\n active: sortOrder === DESCEND\n })\n }));\n sorter = /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(`${prefixCls}-column-sorter`, {\n [`${prefixCls}-column-sorter-full`]: !!(upNode && downNode)\n })\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: `${prefixCls}-column-sorter-inner`,\n \"aria-hidden\": \"true\"\n }, upNode, downNode));\n }\n const {\n cancelSort,\n triggerAsc,\n triggerDesc\n } = tableLocale || {};\n let sortTip = cancelSort;\n if (nextSortOrder === DESCEND) {\n sortTip = triggerDesc;\n } else if (nextSortOrder === ASCEND) {\n sortTip = triggerAsc;\n }\n const tooltipProps = typeof showSorterTooltip === 'object' ? Object.assign({\n title: sortTip\n }, showSorterTooltip) : {\n title: sortTip\n };\n newColumn = Object.assign(Object.assign({}, newColumn), {\n className: classNames(newColumn.className, {\n [`${prefixCls}-column-sort`]: sortOrder\n }),\n title: renderProps => {\n const renderSortTitle = /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-column-sorters`\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: `${prefixCls}-column-title`\n }, renderColumnTitle(column.title, renderProps)), sorter);\n return showSorterTooltip ? ( /*#__PURE__*/React.createElement(Tooltip, Object.assign({}, tooltipProps), renderSortTitle)) : renderSortTitle;\n },\n onHeaderCell: col => {\n const cell = column.onHeaderCell && column.onHeaderCell(col) || {};\n const originOnClick = cell.onClick;\n const originOKeyDown = cell.onKeyDown;\n cell.onClick = event => {\n triggerSorter({\n column,\n key: columnKey,\n sortOrder: nextSortOrder,\n multiplePriority: getMultiplePriority(column)\n });\n originOnClick === null || originOnClick === void 0 ? void 0 : originOnClick(event);\n };\n cell.onKeyDown = event => {\n if (event.keyCode === KeyCode.ENTER) {\n triggerSorter({\n column,\n key: columnKey,\n sortOrder: nextSortOrder,\n multiplePriority: getMultiplePriority(column)\n });\n originOKeyDown === null || originOKeyDown === void 0 ? void 0 : originOKeyDown(event);\n }\n };\n const renderTitle = safeColumnTitle(column.title, {});\n const displayTitle = renderTitle === null || renderTitle === void 0 ? void 0 : renderTitle.toString();\n // Inform the screen-reader so it can tell the visually impaired user which column is sorted\n if (sortOrder) {\n cell['aria-sort'] = sortOrder === 'ascend' ? 'ascending' : 'descending';\n } else {\n cell['aria-label'] = displayTitle || '';\n }\n cell.className = classNames(cell.className, `${prefixCls}-column-has-sorters`);\n cell.tabIndex = 0;\n if (column.ellipsis) {\n cell.title = (renderTitle !== null && renderTitle !== void 0 ? renderTitle : '').toString();\n }\n return cell;\n }\n });\n }\n if ('children' in newColumn) {\n newColumn = Object.assign(Object.assign({}, newColumn), {\n children: injectSorter(prefixCls, newColumn.children, sorterStates, triggerSorter, defaultSortDirections, tableLocale, tableShowSorterTooltip, columnPos)\n });\n }\n return newColumn;\n });\n}\nfunction stateToInfo(sorterStates) {\n const {\n column,\n sortOrder\n } = sorterStates;\n return {\n column,\n order: sortOrder,\n field: column.dataIndex,\n columnKey: column.key\n };\n}\nfunction generateSorterInfo(sorterStates) {\n const list = sorterStates.filter(_ref2 => {\n let {\n sortOrder\n } = _ref2;\n return sortOrder;\n }).map(stateToInfo);\n // =========== Legacy compatible support ===========\n // https://github.com/ant-design/ant-design/pull/19226\n if (list.length === 0 && sorterStates.length) {\n return Object.assign(Object.assign({}, stateToInfo(sorterStates[sorterStates.length - 1])), {\n column: undefined\n });\n }\n if (list.length <= 1) {\n return list[0] || {};\n }\n return list;\n}\nexport function getSortData(data, sortStates, childrenColumnName) {\n const innerSorterStates = sortStates.slice().sort((a, b) => b.multiplePriority - a.multiplePriority);\n const cloneData = data.slice();\n const runningSorters = innerSorterStates.filter(_ref3 => {\n let {\n column: {\n sorter\n },\n sortOrder\n } = _ref3;\n return getSortFunction(sorter) && sortOrder;\n });\n // Skip if no sorter needed\n if (!runningSorters.length) {\n return cloneData;\n }\n return cloneData.sort((record1, record2) => {\n for (let i = 0; i < runningSorters.length; i += 1) {\n const sorterState = runningSorters[i];\n const {\n column: {\n sorter\n },\n sortOrder\n } = sorterState;\n const compareFn = getSortFunction(sorter);\n if (compareFn && sortOrder) {\n const compareResult = compareFn(record1, record2, sortOrder);\n if (compareResult !== 0) {\n return sortOrder === ASCEND ? compareResult : -compareResult;\n }\n }\n }\n return 0;\n }).map(record => {\n const subRecords = record[childrenColumnName];\n if (subRecords) {\n return Object.assign(Object.assign({}, record), {\n [childrenColumnName]: getSortData(subRecords, sortStates, childrenColumnName)\n });\n }\n return record;\n });\n}\nexport default function useFilterSorter(_ref4) {\n let {\n prefixCls,\n mergedColumns,\n onSorterChange,\n sortDirections,\n tableLocale,\n showSorterTooltip\n } = _ref4;\n const [sortStates, setSortStates] = React.useState(collectSortStates(mergedColumns, true));\n const mergedSorterStates = React.useMemo(() => {\n let validate = true;\n const collectedStates = collectSortStates(mergedColumns, false);\n // Return if not controlled\n if (!collectedStates.length) {\n return sortStates;\n }\n const validateStates = [];\n function patchStates(state) {\n if (validate) {\n validateStates.push(state);\n } else {\n validateStates.push(Object.assign(Object.assign({}, state), {\n sortOrder: null\n }));\n }\n }\n let multipleMode = null;\n collectedStates.forEach(state => {\n if (multipleMode === null) {\n patchStates(state);\n if (state.sortOrder) {\n if (state.multiplePriority === false) {\n validate = false;\n } else {\n multipleMode = true;\n }\n }\n } else if (multipleMode && state.multiplePriority !== false) {\n patchStates(state);\n } else {\n validate = false;\n patchStates(state);\n }\n });\n return validateStates;\n }, [mergedColumns, sortStates]);\n // Get render columns title required props\n const columnTitleSorterProps = React.useMemo(() => {\n const sortColumns = mergedSorterStates.map(_ref5 => {\n let {\n column,\n sortOrder\n } = _ref5;\n return {\n column,\n order: sortOrder\n };\n });\n return {\n sortColumns,\n // Legacy\n sortColumn: sortColumns[0] && sortColumns[0].column,\n sortOrder: sortColumns[0] && sortColumns[0].order\n };\n }, [mergedSorterStates]);\n function triggerSorter(sortState) {\n let newSorterStates;\n if (sortState.multiplePriority === false || !mergedSorterStates.length || mergedSorterStates[0].multiplePriority === false) {\n newSorterStates = [sortState];\n } else {\n newSorterStates = [].concat(_toConsumableArray(mergedSorterStates.filter(_ref6 => {\n let {\n key\n } = _ref6;\n return key !== sortState.key;\n })), [sortState]);\n }\n setSortStates(newSorterStates);\n onSorterChange(generateSorterInfo(newSorterStates), newSorterStates);\n }\n const transformColumns = innerColumns => injectSorter(prefixCls, innerColumns, mergedSorterStates, triggerSorter, sortDirections, tableLocale, showSorterTooltip);\n const getSorters = () => generateSorterInfo(mergedSorterStates);\n return [transformColumns, mergedSorterStates, columnTitleSorterProps, getSorters];\n}","import * as React from 'react';\nimport { renderColumnTitle } from '../util';\nfunction fillTitle(columns, columnTitleProps) {\n return columns.map(column => {\n const cloneColumn = Object.assign({}, column);\n cloneColumn.title = renderColumnTitle(column.title, columnTitleProps);\n if ('children' in cloneColumn) {\n cloneColumn.children = fillTitle(cloneColumn.children, columnTitleProps);\n }\n return cloneColumn;\n });\n}\nexport default function useTitleColumns(columnTitleProps) {\n const filledColumns = React.useCallback(columns => fillTitle(columns, columnTitleProps), [columnTitleProps]);\n return [filledColumns];\n}","\"use client\";\n\nimport { genTable } from 'rc-table';\n/**\n * Same as `rc-table` but we modify trigger children update logic instead.\n */\nexport default genTable((prev, next) => {\n const {\n _renderTimes: prevRenderTimes\n } = prev;\n const {\n _renderTimes: nextRenderTimes\n } = next;\n return prevRenderTimes !== nextRenderTimes;\n});","\"use client\";\n\nimport { genVirtualTable } from 'rc-table';\n/**\n * Same as `rc-table` but we modify trigger children update logic instead.\n */\nexport default genVirtualTable((prev, next) => {\n const {\n _renderTimes: prevRenderTimes\n } = prev;\n const {\n _renderTimes: nextRenderTimes\n } = next;\n return prevRenderTimes !== nextRenderTimes;\n});","import { unit } from '@ant-design/cssinjs';\nconst genBorderedStyle = token => {\n const {\n componentCls,\n lineWidth,\n lineType,\n tableBorderColor,\n tableHeaderBg,\n tablePaddingVertical,\n tablePaddingHorizontal,\n calc\n } = token;\n const tableBorder = `${unit(lineWidth)} ${lineType} ${tableBorderColor}`;\n const getSizeBorderStyle = (size, paddingVertical, paddingHorizontal) => ({\n [`&${componentCls}-${size}`]: {\n [`> ${componentCls}-container`]: {\n [`> ${componentCls}-content, > ${componentCls}-body`]: {\n [`\n > table > tbody > tr > th,\n > table > tbody > tr > td\n `]: {\n [`> ${componentCls}-expanded-row-fixed`]: {\n margin: `${unit(calc(paddingVertical).mul(-1).equal())}\n ${unit(calc(calc(paddingHorizontal).add(lineWidth)).mul(-1).equal())}`\n }\n }\n }\n }\n }\n });\n return {\n [`${componentCls}-wrapper`]: {\n [`${componentCls}${componentCls}-bordered`]: Object.assign(Object.assign(Object.assign({\n // ============================ Title =============================\n [`> ${componentCls}-title`]: {\n border: tableBorder,\n borderBottom: 0\n },\n // ============================ Content ============================\n [`> ${componentCls}-container`]: {\n borderInlineStart: tableBorder,\n borderTop: tableBorder,\n [`\n > ${componentCls}-content,\n > ${componentCls}-header,\n > ${componentCls}-body,\n > ${componentCls}-summary\n `]: {\n '> table': {\n // ============================= Cell =============================\n [`\n > thead > tr > th,\n > thead > tr > td,\n > tbody > tr > th,\n > tbody > tr > td,\n > tfoot > tr > th,\n > tfoot > tr > td\n `]: {\n borderInlineEnd: tableBorder\n },\n // ============================ Header ============================\n '> thead': {\n '> tr:not(:last-child) > th': {\n borderBottom: tableBorder\n },\n '> tr > th::before': {\n backgroundColor: 'transparent !important'\n }\n },\n // Fixed right should provides additional border\n [`\n > thead > tr,\n > tbody > tr,\n > tfoot > tr\n `]: {\n [`> ${componentCls}-cell-fix-right-first::after`]: {\n borderInlineEnd: tableBorder\n }\n },\n // ========================== Expandable ==========================\n [`\n > tbody > tr > th,\n > tbody > tr > td\n `]: {\n [`> ${componentCls}-expanded-row-fixed`]: {\n margin: `${unit(calc(tablePaddingVertical).mul(-1).equal())} ${unit(calc(calc(tablePaddingHorizontal).add(lineWidth)).mul(-1).equal())}`,\n '&::after': {\n position: 'absolute',\n top: 0,\n insetInlineEnd: lineWidth,\n bottom: 0,\n borderInlineEnd: tableBorder,\n content: '\"\"'\n }\n }\n }\n }\n }\n },\n // ============================ Scroll ============================\n [`&${componentCls}-scroll-horizontal`]: {\n [`> ${componentCls}-container > ${componentCls}-body`]: {\n '> table > tbody': {\n [`\n > tr${componentCls}-expanded-row,\n > tr${componentCls}-placeholder\n `]: {\n [`> th, > td`]: {\n borderInlineEnd: 0\n }\n }\n }\n }\n }\n }, getSizeBorderStyle('middle', token.tablePaddingVerticalMiddle, token.tablePaddingHorizontalMiddle)), getSizeBorderStyle('small', token.tablePaddingVerticalSmall, token.tablePaddingHorizontalSmall)), {\n // ============================ Footer ============================\n [`> ${componentCls}-footer`]: {\n border: tableBorder,\n borderTop: 0\n }\n }),\n // ============================ Nested ============================\n [`${componentCls}-cell`]: {\n [`${componentCls}-container:first-child`]: {\n // :first-child to avoid the case when bordered and title is set\n borderTop: 0\n },\n // https://github.com/ant-design/ant-design/issues/35577\n '&-scrollbar:not([rowspan])': {\n boxShadow: `0 ${unit(lineWidth)} 0 ${unit(lineWidth)} ${tableHeaderBg}`\n }\n },\n [`${componentCls}-bordered ${componentCls}-cell-scrollbar`]: {\n borderInlineEnd: tableBorder\n }\n }\n };\n};\nexport default genBorderedStyle;","import { textEllipsis } from '../../style';\nconst genEllipsisStyle = token => {\n const {\n componentCls\n } = token;\n return {\n [`${componentCls}-wrapper`]: {\n [`${componentCls}-cell-ellipsis`]: Object.assign(Object.assign({}, textEllipsis), {\n wordBreak: 'keep-all',\n // Fixed first or last should special process\n [`\n &${componentCls}-cell-fix-left-last,\n &${componentCls}-cell-fix-right-first\n `]: {\n overflow: 'visible',\n [`${componentCls}-cell-content`]: {\n display: 'block',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n }\n },\n [`${componentCls}-column-title`]: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n wordBreak: 'keep-all'\n }\n })\n }\n };\n};\nexport default genEllipsisStyle;","// ========================= Placeholder ==========================\nconst genEmptyStyle = token => {\n const {\n componentCls\n } = token;\n return {\n [`${componentCls}-wrapper`]: {\n [`${componentCls}-tbody > tr${componentCls}-placeholder`]: {\n textAlign: 'center',\n color: token.colorTextDisabled,\n [`\n &:hover > th,\n &:hover > td,\n `]: {\n background: token.colorBgContainer\n }\n }\n }\n };\n};\nexport default genEmptyStyle;","// eslint-disable-next-line import/prefer-default-export\nexport const operationUnit = token => ({\n // FIXME: This use link but is a operation unit. Seems should be a colorPrimary.\n // And Typography use this to generate link style which should not do this.\n color: token.colorLink,\n textDecoration: 'none',\n outline: 'none',\n cursor: 'pointer',\n transition: `color ${token.motionDurationSlow}`,\n '&:focus, &:hover': {\n color: token.colorLinkHover\n },\n '&:active': {\n color: token.colorLinkActive\n }\n});","import { unit } from '@ant-design/cssinjs';\nimport { operationUnit } from '../../style';\nconst genExpandStyle = token => {\n const {\n componentCls,\n antCls,\n motionDurationSlow,\n lineWidth,\n paddingXS,\n lineType,\n tableBorderColor,\n tableExpandIconBg,\n tableExpandColumnWidth,\n borderRadius,\n tablePaddingVertical,\n tablePaddingHorizontal,\n tableExpandedRowBg,\n paddingXXS,\n expandIconMarginTop,\n expandIconSize,\n expandIconHalfInner,\n expandIconScale,\n calc\n } = token;\n const tableBorder = `${unit(lineWidth)} ${lineType} ${tableBorderColor}`;\n const expandIconLineOffset = calc(paddingXXS).sub(lineWidth).equal();\n return {\n [`${componentCls}-wrapper`]: {\n [`${componentCls}-expand-icon-col`]: {\n width: tableExpandColumnWidth\n },\n [`${componentCls}-row-expand-icon-cell`]: {\n textAlign: 'center',\n [`${componentCls}-row-expand-icon`]: {\n display: 'inline-flex',\n float: 'none',\n verticalAlign: 'sub'\n }\n },\n [`${componentCls}-row-indent`]: {\n height: 1,\n float: 'left'\n },\n [`${componentCls}-row-expand-icon`]: Object.assign(Object.assign({}, operationUnit(token)), {\n position: 'relative',\n float: 'left',\n boxSizing: 'border-box',\n width: expandIconSize,\n height: expandIconSize,\n padding: 0,\n color: 'inherit',\n lineHeight: unit(expandIconSize),\n background: tableExpandIconBg,\n border: tableBorder,\n borderRadius,\n transform: `scale(${expandIconScale})`,\n transition: `all ${motionDurationSlow}`,\n userSelect: 'none',\n [`&:focus, &:hover, &:active`]: {\n borderColor: 'currentcolor'\n },\n [`&::before, &::after`]: {\n position: 'absolute',\n background: 'currentcolor',\n transition: `transform ${motionDurationSlow} ease-out`,\n content: '\"\"'\n },\n '&::before': {\n top: expandIconHalfInner,\n insetInlineEnd: expandIconLineOffset,\n insetInlineStart: expandIconLineOffset,\n height: lineWidth\n },\n '&::after': {\n top: expandIconLineOffset,\n bottom: expandIconLineOffset,\n insetInlineStart: expandIconHalfInner,\n width: lineWidth,\n transform: 'rotate(90deg)'\n },\n // Motion effect\n '&-collapsed::before': {\n transform: 'rotate(-180deg)'\n },\n '&-collapsed::after': {\n transform: 'rotate(0deg)'\n },\n '&-spaced': {\n '&::before, &::after': {\n display: 'none',\n content: 'none'\n },\n background: 'transparent',\n border: 0,\n visibility: 'hidden'\n }\n }),\n [`${componentCls}-row-indent + ${componentCls}-row-expand-icon`]: {\n marginTop: expandIconMarginTop,\n marginInlineEnd: paddingXS\n },\n [`tr${componentCls}-expanded-row`]: {\n '&, &:hover': {\n [`> th, > td`]: {\n background: tableExpandedRowBg\n }\n },\n // https://github.com/ant-design/ant-design/issues/25573\n [`${antCls}-descriptions-view`]: {\n display: 'flex',\n table: {\n flex: 'auto',\n width: 'auto'\n }\n }\n },\n // With fixed\n [`${componentCls}-expanded-row-fixed`]: {\n position: 'relative',\n margin: `${unit(calc(tablePaddingVertical).mul(-1).equal())} ${unit(calc(tablePaddingHorizontal).mul(-1).equal())}`,\n padding: `${unit(tablePaddingVertical)} ${unit(tablePaddingHorizontal)}`\n }\n }\n };\n};\nexport default genExpandStyle;","import { unit } from '@ant-design/cssinjs';\nimport { resetComponent } from '../../style';\nconst genFilterStyle = token => {\n const {\n componentCls,\n antCls,\n iconCls,\n tableFilterDropdownWidth,\n tableFilterDropdownSearchWidth,\n paddingXXS,\n paddingXS,\n colorText,\n lineWidth,\n lineType,\n tableBorderColor,\n headerIconColor,\n fontSizeSM,\n tablePaddingHorizontal,\n borderRadius,\n motionDurationSlow,\n colorTextDescription,\n colorPrimary,\n tableHeaderFilterActiveBg,\n colorTextDisabled,\n tableFilterDropdownBg,\n tableFilterDropdownHeight,\n controlItemBgHover,\n controlItemBgActive,\n boxShadowSecondary,\n filterDropdownMenuBg,\n calc\n } = token;\n const dropdownPrefixCls = `${antCls}-dropdown`;\n const tableFilterDropdownPrefixCls = `${componentCls}-filter-dropdown`;\n const treePrefixCls = `${antCls}-tree`;\n const tableBorder = `${unit(lineWidth)} ${lineType} ${tableBorderColor}`;\n return [{\n [`${componentCls}-wrapper`]: {\n [`${componentCls}-filter-column`]: {\n display: 'flex',\n justifyContent: 'space-between'\n },\n [`${componentCls}-filter-trigger`]: {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n marginBlock: calc(paddingXXS).mul(-1).equal(),\n marginInline: `${unit(paddingXXS)} ${unit(calc(tablePaddingHorizontal).div(2).mul(-1).equal())}`,\n padding: `0 ${unit(paddingXXS)}`,\n color: headerIconColor,\n fontSize: fontSizeSM,\n borderRadius,\n cursor: 'pointer',\n transition: `all ${motionDurationSlow}`,\n '&:hover': {\n color: colorTextDescription,\n background: tableHeaderFilterActiveBg\n },\n '&.active': {\n color: colorPrimary\n }\n }\n }\n }, {\n // Dropdown\n [`${antCls}-dropdown`]: {\n [tableFilterDropdownPrefixCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n minWidth: tableFilterDropdownWidth,\n backgroundColor: tableFilterDropdownBg,\n borderRadius,\n boxShadow: boxShadowSecondary,\n overflow: 'hidden',\n // Reset menu\n [`${dropdownPrefixCls}-menu`]: {\n // https://github.com/ant-design/ant-design/issues/4916\n // https://github.com/ant-design/ant-design/issues/19542\n maxHeight: tableFilterDropdownHeight,\n overflowX: 'hidden',\n border: 0,\n boxShadow: 'none',\n borderRadius: 'unset',\n backgroundColor: filterDropdownMenuBg,\n '&:empty::after': {\n display: 'block',\n padding: `${unit(paddingXS)} 0`,\n color: colorTextDisabled,\n fontSize: fontSizeSM,\n textAlign: 'center',\n content: '\"Not Found\"'\n }\n },\n [`${tableFilterDropdownPrefixCls}-tree`]: {\n paddingBlock: `${unit(paddingXS)} 0`,\n paddingInline: paddingXS,\n [treePrefixCls]: {\n padding: 0\n },\n [`${treePrefixCls}-treenode ${treePrefixCls}-node-content-wrapper:hover`]: {\n backgroundColor: controlItemBgHover\n },\n [`${treePrefixCls}-treenode-checkbox-checked ${treePrefixCls}-node-content-wrapper`]: {\n '&, &:hover': {\n backgroundColor: controlItemBgActive\n }\n }\n },\n [`${tableFilterDropdownPrefixCls}-search`]: {\n padding: paddingXS,\n borderBottom: tableBorder,\n '&-input': {\n input: {\n minWidth: tableFilterDropdownSearchWidth\n },\n [iconCls]: {\n color: colorTextDisabled\n }\n }\n },\n [`${tableFilterDropdownPrefixCls}-checkall`]: {\n width: '100%',\n marginBottom: paddingXXS,\n marginInlineStart: paddingXXS\n },\n // Operation\n [`${tableFilterDropdownPrefixCls}-btns`]: {\n display: 'flex',\n justifyContent: 'space-between',\n padding: `${unit(calc(paddingXS).sub(lineWidth).equal())} ${unit(paddingXS)}`,\n overflow: 'hidden',\n borderTop: tableBorder\n }\n })\n }\n },\n // Dropdown Menu & SubMenu\n {\n // submenu of table filter dropdown\n [`${antCls}-dropdown ${tableFilterDropdownPrefixCls}, ${tableFilterDropdownPrefixCls}-submenu`]: {\n // Checkbox\n [`${antCls}-checkbox-wrapper + span`]: {\n paddingInlineStart: paddingXS,\n color: colorText\n },\n [`> ul`]: {\n maxHeight: 'calc(100vh - 130px)',\n overflowX: 'hidden',\n overflowY: 'auto'\n }\n }\n }];\n};\nexport default genFilterStyle;","const genFixedStyle = token => {\n const {\n componentCls,\n lineWidth,\n colorSplit,\n motionDurationSlow,\n zIndexTableFixed,\n tableBg,\n zIndexTableSticky,\n calc\n } = token;\n const shadowColor = colorSplit;\n // Follow style is magic of shadow which should not follow token:\n return {\n [`${componentCls}-wrapper`]: {\n [`\n ${componentCls}-cell-fix-left,\n ${componentCls}-cell-fix-right\n `]: {\n position: 'sticky !important',\n zIndex: zIndexTableFixed,\n background: tableBg\n },\n [`\n ${componentCls}-cell-fix-left-first::after,\n ${componentCls}-cell-fix-left-last::after\n `]: {\n position: 'absolute',\n top: 0,\n right: {\n _skip_check_: true,\n value: 0\n },\n bottom: calc(lineWidth).mul(-1).equal(),\n width: 30,\n transform: 'translateX(100%)',\n transition: `box-shadow ${motionDurationSlow}`,\n content: '\"\"',\n pointerEvents: 'none'\n },\n [`${componentCls}-cell-fix-left-all::after`]: {\n display: 'none'\n },\n [`\n ${componentCls}-cell-fix-right-first::after,\n ${componentCls}-cell-fix-right-last::after\n `]: {\n position: 'absolute',\n top: 0,\n bottom: calc(lineWidth).mul(-1).equal(),\n left: {\n _skip_check_: true,\n value: 0\n },\n width: 30,\n transform: 'translateX(-100%)',\n transition: `box-shadow ${motionDurationSlow}`,\n content: '\"\"',\n pointerEvents: 'none'\n },\n [`${componentCls}-container`]: {\n position: 'relative',\n '&::before, &::after': {\n position: 'absolute',\n top: 0,\n bottom: 0,\n zIndex: calc(zIndexTableSticky).add(1).equal({\n unit: false\n }),\n width: 30,\n transition: `box-shadow ${motionDurationSlow}`,\n content: '\"\"',\n pointerEvents: 'none'\n },\n '&::before': {\n insetInlineStart: 0\n },\n '&::after': {\n insetInlineEnd: 0\n }\n },\n [`${componentCls}-ping-left`]: {\n [`&:not(${componentCls}-has-fix-left) ${componentCls}-container::before`]: {\n boxShadow: `inset 10px 0 8px -8px ${shadowColor}`\n },\n [`\n ${componentCls}-cell-fix-left-first::after,\n ${componentCls}-cell-fix-left-last::after\n `]: {\n boxShadow: `inset 10px 0 8px -8px ${shadowColor}`\n },\n [`${componentCls}-cell-fix-left-last::before`]: {\n backgroundColor: 'transparent !important'\n }\n },\n [`${componentCls}-ping-right`]: {\n [`&:not(${componentCls}-has-fix-right) ${componentCls}-container::after`]: {\n boxShadow: `inset -10px 0 8px -8px ${shadowColor}`\n },\n [`\n ${componentCls}-cell-fix-right-first::after,\n ${componentCls}-cell-fix-right-last::after\n `]: {\n boxShadow: `inset -10px 0 8px -8px ${shadowColor}`\n }\n }\n }\n };\n};\nexport default genFixedStyle;","import { unit } from '@ant-design/cssinjs';\nconst genPaginationStyle = token => {\n const {\n componentCls,\n antCls,\n margin\n } = token;\n return {\n [`${componentCls}-wrapper`]: {\n // ========================== Pagination ==========================\n [`${componentCls}-pagination${antCls}-pagination`]: {\n margin: `${unit(margin)} 0`\n },\n [`${componentCls}-pagination`]: {\n display: 'flex',\n flexWrap: 'wrap',\n rowGap: token.paddingXS,\n '> *': {\n flex: 'none'\n },\n '&-left': {\n justifyContent: 'flex-start'\n },\n '&-center': {\n justifyContent: 'center'\n },\n '&-right': {\n justifyContent: 'flex-end'\n }\n }\n }\n };\n};\nexport default genPaginationStyle;","import { unit } from '@ant-design/cssinjs';\nconst genRadiusStyle = token => {\n const {\n componentCls,\n tableRadius\n } = token;\n return {\n [`${componentCls}-wrapper`]: {\n [componentCls]: {\n // https://github.com/ant-design/ant-design/issues/39115#issuecomment-1362314574\n [`${componentCls}-title, ${componentCls}-header`]: {\n borderRadius: `${unit(tableRadius)} ${unit(tableRadius)} 0 0`\n },\n [`${componentCls}-title + ${componentCls}-container`]: {\n borderStartStartRadius: 0,\n borderStartEndRadius: 0,\n // https://github.com/ant-design/ant-design/issues/41975\n [`${componentCls}-header, table`]: {\n borderRadius: 0\n },\n 'table > thead > tr:first-child': {\n 'th:first-child, th:last-child, td:first-child, td:last-child': {\n borderRadius: 0\n }\n }\n },\n '&-container': {\n borderStartStartRadius: tableRadius,\n borderStartEndRadius: tableRadius,\n 'table > thead > tr:first-child': {\n '> *:first-child': {\n borderStartStartRadius: tableRadius\n },\n '> *:last-child': {\n borderStartEndRadius: tableRadius\n }\n }\n },\n '&-footer': {\n borderRadius: `0 0 ${unit(tableRadius)} ${unit(tableRadius)}`\n }\n }\n }\n };\n};\nexport default genRadiusStyle;","const genStyle = token => {\n const {\n componentCls\n } = token;\n return {\n [`${componentCls}-wrapper-rtl`]: {\n direction: 'rtl',\n table: {\n direction: 'rtl'\n },\n [`${componentCls}-pagination-left`]: {\n justifyContent: 'flex-end'\n },\n [`${componentCls}-pagination-right`]: {\n justifyContent: 'flex-start'\n },\n [`${componentCls}-row-expand-icon`]: {\n float: 'right',\n '&::after': {\n transform: 'rotate(-90deg)'\n },\n '&-collapsed::before': {\n transform: 'rotate(180deg)'\n },\n '&-collapsed::after': {\n transform: 'rotate(0deg)'\n }\n },\n [`${componentCls}-container`]: {\n '&::before': {\n insetInlineStart: 'unset',\n insetInlineEnd: 0\n },\n '&::after': {\n insetInlineStart: 0,\n insetInlineEnd: 'unset'\n },\n [`${componentCls}-row-indent`]: {\n float: 'right'\n }\n }\n }\n };\n};\nexport default genStyle;","import { unit } from '@ant-design/cssinjs';\nconst genSelectionStyle = token => {\n const {\n componentCls,\n antCls,\n iconCls,\n fontSizeIcon,\n padding,\n paddingXS,\n headerIconColor,\n headerIconHoverColor,\n tableSelectionColumnWidth,\n tableSelectedRowBg,\n tableSelectedRowHoverBg,\n tableRowHoverBg,\n tablePaddingHorizontal,\n calc\n } = token;\n return {\n [`${componentCls}-wrapper`]: {\n // ========================== Selections ==========================\n [`${componentCls}-selection-col`]: {\n width: tableSelectionColumnWidth,\n [`&${componentCls}-selection-col-with-dropdown`]: {\n width: calc(tableSelectionColumnWidth).add(fontSizeIcon).add(calc(padding).div(4)).equal()\n }\n },\n [`${componentCls}-bordered ${componentCls}-selection-col`]: {\n width: calc(tableSelectionColumnWidth).add(calc(paddingXS).mul(2)).equal(),\n [`&${componentCls}-selection-col-with-dropdown`]: {\n width: calc(tableSelectionColumnWidth).add(fontSizeIcon).add(calc(padding).div(4)).add(calc(paddingXS).mul(2)).equal()\n }\n },\n [`\n table tr th${componentCls}-selection-column,\n table tr td${componentCls}-selection-column,\n ${componentCls}-selection-column\n `]: {\n paddingInlineEnd: token.paddingXS,\n paddingInlineStart: token.paddingXS,\n textAlign: 'center',\n [`${antCls}-radio-wrapper`]: {\n marginInlineEnd: 0\n }\n },\n [`table tr th${componentCls}-selection-column${componentCls}-cell-fix-left`]: {\n zIndex: token.zIndexTableFixed + 1\n },\n [`table tr th${componentCls}-selection-column::after`]: {\n backgroundColor: 'transparent !important'\n },\n [`${componentCls}-selection`]: {\n position: 'relative',\n display: 'inline-flex',\n flexDirection: 'column'\n },\n [`${componentCls}-selection-extra`]: {\n position: 'absolute',\n top: 0,\n zIndex: 1,\n cursor: 'pointer',\n transition: `all ${token.motionDurationSlow}`,\n marginInlineStart: '100%',\n paddingInlineStart: unit(calc(tablePaddingHorizontal).div(4).equal()),\n [iconCls]: {\n color: headerIconColor,\n fontSize: fontSizeIcon,\n verticalAlign: 'baseline',\n '&:hover': {\n color: headerIconHoverColor\n }\n }\n },\n // ============================= Rows =============================\n [`${componentCls}-tbody`]: {\n [`${componentCls}-row`]: {\n [`&${componentCls}-row-selected`]: {\n [`> ${componentCls}-cell`]: {\n background: tableSelectedRowBg,\n '&-row-hover': {\n background: tableSelectedRowHoverBg\n }\n }\n },\n [`> ${componentCls}-cell-row-hover`]: {\n background: tableRowHoverBg\n }\n }\n }\n }\n };\n};\nexport default genSelectionStyle;","import { unit } from '@ant-design/cssinjs';\nconst genSizeStyle = token => {\n const {\n componentCls,\n tableExpandColumnWidth,\n calc\n } = token;\n const getSizeStyle = (size, paddingVertical, paddingHorizontal, fontSize) => ({\n [`${componentCls}${componentCls}-${size}`]: {\n fontSize,\n [`\n ${componentCls}-title,\n ${componentCls}-footer,\n ${componentCls}-cell,\n ${componentCls}-thead > tr > th,\n ${componentCls}-tbody > tr > th,\n ${componentCls}-tbody > tr > td,\n tfoot > tr > th,\n tfoot > tr > td\n `]: {\n padding: `${unit(paddingVertical)} ${unit(paddingHorizontal)}`\n },\n [`${componentCls}-filter-trigger`]: {\n marginInlineEnd: unit(calc(paddingHorizontal).div(2).mul(-1).equal())\n },\n [`${componentCls}-expanded-row-fixed`]: {\n margin: `${unit(calc(paddingVertical).mul(-1).equal())} ${unit(calc(paddingHorizontal).mul(-1).equal())}`\n },\n [`${componentCls}-tbody`]: {\n // ========================= Nest Table ===========================\n [`${componentCls}-wrapper:only-child ${componentCls}`]: {\n marginBlock: unit(calc(paddingVertical).mul(-1).equal()),\n marginInline: `${unit(calc(tableExpandColumnWidth).sub(paddingHorizontal).equal())} ${unit(calc(paddingHorizontal).mul(-1).equal())}`\n }\n },\n // https://github.com/ant-design/ant-design/issues/35167\n [`${componentCls}-selection-extra`]: {\n paddingInlineStart: unit(calc(paddingHorizontal).div(4).equal())\n }\n }\n });\n return {\n [`${componentCls}-wrapper`]: Object.assign(Object.assign({}, getSizeStyle('middle', token.tablePaddingVerticalMiddle, token.tablePaddingHorizontalMiddle, token.tableFontSizeMiddle)), getSizeStyle('small', token.tablePaddingVerticalSmall, token.tablePaddingHorizontalSmall, token.tableFontSizeSmall))\n };\n};\nexport default genSizeStyle;","const genSorterStyle = token => {\n const {\n componentCls,\n marginXXS,\n fontSizeIcon,\n headerIconColor,\n headerIconHoverColor\n } = token;\n return {\n [`${componentCls}-wrapper`]: {\n [`${componentCls}-thead th${componentCls}-column-has-sorters`]: {\n outline: 'none',\n cursor: 'pointer',\n transition: `all ${token.motionDurationSlow}`,\n '&:hover': {\n background: token.tableHeaderSortHoverBg,\n '&::before': {\n backgroundColor: 'transparent !important'\n }\n },\n '&:focus-visible': {\n color: token.colorPrimary\n },\n // https://github.com/ant-design/ant-design/issues/30969\n [`\n &${componentCls}-cell-fix-left:hover,\n &${componentCls}-cell-fix-right:hover\n `]: {\n background: token.tableFixedHeaderSortActiveBg\n }\n },\n [`${componentCls}-thead th${componentCls}-column-sort`]: {\n background: token.tableHeaderSortBg,\n '&::before': {\n backgroundColor: 'transparent !important'\n }\n },\n [`td${componentCls}-column-sort`]: {\n background: token.tableBodySortBg\n },\n [`${componentCls}-column-title`]: {\n position: 'relative',\n zIndex: 1,\n flex: 1\n },\n [`${componentCls}-column-sorters`]: {\n display: 'flex',\n flex: 'auto',\n alignItems: 'center',\n justifyContent: 'space-between',\n '&::after': {\n position: 'absolute',\n inset: 0,\n width: '100%',\n height: '100%',\n content: '\"\"'\n }\n },\n [`${componentCls}-column-sorter`]: {\n marginInlineStart: marginXXS,\n color: headerIconColor,\n fontSize: 0,\n transition: `color ${token.motionDurationSlow}`,\n '&-inner': {\n display: 'inline-flex',\n flexDirection: 'column',\n alignItems: 'center'\n },\n '&-up, &-down': {\n fontSize: fontSizeIcon,\n '&.active': {\n color: token.colorPrimary\n }\n },\n [`${componentCls}-column-sorter-up + ${componentCls}-column-sorter-down`]: {\n marginTop: '-0.3em'\n }\n },\n [`${componentCls}-column-sorters:hover ${componentCls}-column-sorter`]: {\n color: headerIconHoverColor\n }\n }\n };\n};\nexport default genSorterStyle;","import { unit } from '@ant-design/cssinjs';\nconst genStickyStyle = token => {\n const {\n componentCls,\n opacityLoading,\n tableScrollThumbBg,\n tableScrollThumbBgHover,\n tableScrollThumbSize,\n tableScrollBg,\n zIndexTableSticky,\n stickyScrollBarBorderRadius,\n lineWidth,\n lineType,\n tableBorderColor\n } = token;\n const tableBorder = `${unit(lineWidth)} ${lineType} ${tableBorderColor}`;\n return {\n [`${componentCls}-wrapper`]: {\n [`${componentCls}-sticky`]: {\n '&-holder': {\n position: 'sticky',\n zIndex: zIndexTableSticky,\n background: token.colorBgContainer\n },\n '&-scroll': {\n position: 'sticky',\n bottom: 0,\n height: `${unit(tableScrollThumbSize)} !important`,\n zIndex: zIndexTableSticky,\n display: 'flex',\n alignItems: 'center',\n background: tableScrollBg,\n borderTop: tableBorder,\n opacity: opacityLoading,\n '&:hover': {\n transformOrigin: 'center bottom'\n },\n // fake scrollbar style of sticky\n '&-bar': {\n height: tableScrollThumbSize,\n backgroundColor: tableScrollThumbBg,\n borderRadius: stickyScrollBarBorderRadius,\n transition: `all ${token.motionDurationSlow}, transform none`,\n position: 'absolute',\n bottom: 0,\n '&:hover, &-active': {\n backgroundColor: tableScrollThumbBgHover\n }\n }\n }\n }\n }\n };\n};\nexport default genStickyStyle;","import { unit } from '@ant-design/cssinjs';\nconst genSummaryStyle = token => {\n const {\n componentCls,\n lineWidth,\n tableBorderColor,\n calc\n } = token;\n const tableBorder = `${unit(lineWidth)} ${token.lineType} ${tableBorderColor}`;\n return {\n [`${componentCls}-wrapper`]: {\n [`${componentCls}-summary`]: {\n position: 'relative',\n zIndex: token.zIndexTableFixed,\n background: token.tableBg,\n '> tr': {\n '> th, > td': {\n borderBottom: tableBorder\n }\n }\n },\n [`div${componentCls}-summary`]: {\n boxShadow: `0 ${unit(calc(lineWidth).mul(-1).equal())} 0 ${tableBorderColor}`\n }\n }\n };\n};\nexport default genSummaryStyle;","import { unit } from '@ant-design/cssinjs';\nconst genVirtualStyle = token => {\n const {\n componentCls,\n motionDurationMid,\n lineWidth,\n lineType,\n tableBorderColor,\n calc\n } = token;\n const tableBorder = `${unit(lineWidth)} ${lineType} ${tableBorderColor}`;\n const rowCellCls = `${componentCls}-expanded-row-cell`;\n return {\n [`${componentCls}-wrapper`]: {\n // ========================== Row ==========================\n [`${componentCls}-tbody-virtual`]: {\n [`${componentCls}-row`]: {\n display: 'flex',\n boxSizing: 'border-box',\n width: '100%'\n },\n [`${componentCls}-cell`]: {\n borderBottom: tableBorder,\n transition: `background ${motionDurationMid}`\n },\n [`${componentCls}-expanded-row`]: {\n [`${rowCellCls}${rowCellCls}-fixed`]: {\n position: 'sticky',\n insetInlineStart: 0,\n overflow: 'hidden',\n width: `calc(var(--virtual-width) - ${unit(lineWidth)})`,\n borderInlineEnd: 'none'\n }\n }\n },\n // ======================== Border =========================\n [`${componentCls}-bordered`]: {\n [`${componentCls}-tbody-virtual`]: {\n '&:after': {\n content: '\"\"',\n insetInline: 0,\n bottom: 0,\n borderBottom: tableBorder,\n position: 'absolute'\n },\n [`${componentCls}-cell`]: {\n borderInlineEnd: tableBorder,\n [`&${componentCls}-cell-fix-right-first:before`]: {\n content: '\"\"',\n position: 'absolute',\n insetBlock: 0,\n insetInlineStart: calc(lineWidth).mul(-1).equal(),\n borderInlineStart: tableBorder\n }\n }\n },\n // Empty placeholder\n [`&${componentCls}-virtual`]: {\n [`${componentCls}-placeholder ${componentCls}-cell`]: {\n borderInlineEnd: tableBorder,\n borderBottom: tableBorder\n }\n }\n }\n }\n };\n};\nexport default genVirtualStyle;","import { unit } from '@ant-design/cssinjs';\nimport { TinyColor } from '@ctrl/tinycolor';\nimport { clearFix, resetComponent } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nimport genBorderedStyle from './bordered';\nimport genEllipsisStyle from './ellipsis';\nimport genEmptyStyle from './empty';\nimport genExpandStyle from './expand';\nimport genFilterStyle from './filter';\nimport genFixedStyle from './fixed';\nimport genPaginationStyle from './pagination';\nimport genRadiusStyle from './radius';\nimport genRtlStyle from './rtl';\nimport genSelectionStyle from './selection';\nimport genSizeStyle from './size';\nimport genSorterStyle from './sorter';\nimport genStickyStyle from './sticky';\nimport genSummaryStyle from './summary';\nimport genVirtualStyle from './virtual';\nconst genTableStyle = token => {\n const {\n componentCls,\n fontWeightStrong,\n tablePaddingVertical,\n tablePaddingHorizontal,\n tableExpandColumnWidth,\n lineWidth,\n lineType,\n tableBorderColor,\n tableFontSize,\n tableBg,\n tableRadius,\n tableHeaderTextColor,\n motionDurationMid,\n tableHeaderBg,\n tableHeaderCellSplitColor,\n tableFooterTextColor,\n tableFooterBg,\n calc\n } = token;\n const tableBorder = `${unit(lineWidth)} ${lineType} ${tableBorderColor}`;\n return {\n [`${componentCls}-wrapper`]: Object.assign(Object.assign({\n clear: 'both',\n maxWidth: '100%'\n }, clearFix()), {\n [componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n fontSize: tableFontSize,\n background: tableBg,\n borderRadius: `${unit(tableRadius)} ${unit(tableRadius)} 0 0`\n }),\n // https://github.com/ant-design/ant-design/issues/17611\n table: {\n width: '100%',\n textAlign: 'start',\n borderRadius: `${unit(tableRadius)} ${unit(tableRadius)} 0 0`,\n borderCollapse: 'separate',\n borderSpacing: 0\n },\n // ============================= Cell ==============================\n [`\n ${componentCls}-cell,\n ${componentCls}-thead > tr > th,\n ${componentCls}-tbody > tr > th,\n ${componentCls}-tbody > tr > td,\n tfoot > tr > th,\n tfoot > tr > td\n `]: {\n position: 'relative',\n padding: `${unit(tablePaddingVertical)} ${unit(tablePaddingHorizontal)}`,\n overflowWrap: 'break-word'\n },\n // ============================ Title =============================\n [`${componentCls}-title`]: {\n padding: `${unit(tablePaddingVertical)} ${unit(tablePaddingHorizontal)}`\n },\n // ============================ Header ============================\n [`${componentCls}-thead`]: {\n [`\n > tr > th,\n > tr > td\n `]: {\n position: 'relative',\n color: tableHeaderTextColor,\n fontWeight: fontWeightStrong,\n textAlign: 'start',\n background: tableHeaderBg,\n borderBottom: tableBorder,\n transition: `background ${motionDurationMid} ease`,\n \"&[colspan]:not([colspan='1'])\": {\n textAlign: 'center'\n },\n [`&:not(:last-child):not(${componentCls}-selection-column):not(${componentCls}-row-expand-icon-cell):not([colspan])::before`]: {\n position: 'absolute',\n top: '50%',\n insetInlineEnd: 0,\n width: 1,\n height: '1.6em',\n backgroundColor: tableHeaderCellSplitColor,\n transform: 'translateY(-50%)',\n transition: `background-color ${motionDurationMid}`,\n content: '\"\"'\n }\n },\n '> tr:not(:last-child) > th[colspan]': {\n borderBottom: 0\n }\n },\n // ============================ Body ============================\n [`${componentCls}-tbody`]: {\n '> tr': {\n [`> th, > td`]: {\n transition: `background ${motionDurationMid}, border-color ${motionDurationMid}`,\n borderBottom: tableBorder,\n // ========================= Nest Table ===========================\n [`\n > ${componentCls}-wrapper:only-child,\n > ${componentCls}-expanded-row-fixed > ${componentCls}-wrapper:only-child\n `]: {\n [componentCls]: {\n marginBlock: unit(calc(tablePaddingVertical).mul(-1).equal()),\n marginInline: `${unit(calc(tableExpandColumnWidth).sub(tablePaddingHorizontal).equal())}\n ${unit(calc(tablePaddingHorizontal).mul(-1).equal())}`,\n [`${componentCls}-tbody > tr:last-child > td`]: {\n borderBottom: 0,\n '&:first-child, &:last-child': {\n borderRadius: 0\n }\n }\n }\n }\n },\n '> th': {\n position: 'relative',\n color: tableHeaderTextColor,\n fontWeight: fontWeightStrong,\n textAlign: 'start',\n background: tableHeaderBg,\n borderBottom: tableBorder,\n transition: `background ${motionDurationMid} ease`\n }\n }\n },\n // ============================ Footer ============================\n [`${componentCls}-footer`]: {\n padding: `${unit(tablePaddingVertical)} ${unit(tablePaddingHorizontal)}`,\n color: tableFooterTextColor,\n background: tableFooterBg\n }\n })\n };\n};\nexport const prepareComponentToken = token => {\n const {\n colorFillAlter,\n colorBgContainer,\n colorTextHeading,\n colorFillSecondary,\n colorFillContent,\n controlItemBgActive,\n controlItemBgActiveHover,\n padding,\n paddingSM,\n paddingXS,\n colorBorderSecondary,\n borderRadiusLG,\n controlHeight,\n colorTextPlaceholder,\n fontSize,\n fontSizeSM,\n lineHeight,\n lineWidth,\n colorIcon,\n colorIconHover,\n opacityLoading,\n controlInteractiveSize\n } = token;\n const colorFillSecondarySolid = new TinyColor(colorFillSecondary).onBackground(colorBgContainer).toHexShortString();\n const colorFillContentSolid = new TinyColor(colorFillContent).onBackground(colorBgContainer).toHexShortString();\n const colorFillAlterSolid = new TinyColor(colorFillAlter).onBackground(colorBgContainer).toHexShortString();\n const baseColorAction = new TinyColor(colorIcon);\n const baseColorActionHover = new TinyColor(colorIconHover);\n const expandIconHalfInner = controlInteractiveSize / 2 - lineWidth;\n const expandIconSize = expandIconHalfInner * 2 + lineWidth * 3;\n return {\n headerBg: colorFillAlterSolid,\n headerColor: colorTextHeading,\n headerSortActiveBg: colorFillSecondarySolid,\n headerSortHoverBg: colorFillContentSolid,\n bodySortBg: colorFillAlterSolid,\n rowHoverBg: colorFillAlterSolid,\n rowSelectedBg: controlItemBgActive,\n rowSelectedHoverBg: controlItemBgActiveHover,\n rowExpandedBg: colorFillAlter,\n cellPaddingBlock: padding,\n cellPaddingInline: padding,\n cellPaddingBlockMD: paddingSM,\n cellPaddingInlineMD: paddingXS,\n cellPaddingBlockSM: paddingXS,\n cellPaddingInlineSM: paddingXS,\n borderColor: colorBorderSecondary,\n headerBorderRadius: borderRadiusLG,\n footerBg: colorFillAlterSolid,\n footerColor: colorTextHeading,\n cellFontSize: fontSize,\n cellFontSizeMD: fontSize,\n cellFontSizeSM: fontSize,\n headerSplitColor: colorBorderSecondary,\n fixedHeaderSortActiveBg: colorFillSecondarySolid,\n headerFilterHoverBg: colorFillContent,\n filterDropdownMenuBg: colorBgContainer,\n filterDropdownBg: colorBgContainer,\n expandIconBg: colorBgContainer,\n selectionColumnWidth: controlHeight,\n stickyScrollBarBg: colorTextPlaceholder,\n stickyScrollBarBorderRadius: 100,\n expandIconMarginTop: (fontSize * lineHeight - lineWidth * 3) / 2 - Math.ceil((fontSizeSM * 1.4 - lineWidth * 3) / 2),\n headerIconColor: baseColorAction.clone().setAlpha(baseColorAction.getAlpha() * opacityLoading).toRgbString(),\n headerIconHoverColor: baseColorActionHover.clone().setAlpha(baseColorActionHover.getAlpha() * opacityLoading).toRgbString(),\n expandIconHalfInner,\n expandIconSize,\n expandIconScale: controlInteractiveSize / expandIconSize\n };\n};\n// ============================== Export ==============================\nexport default genStyleHooks('Table', token => {\n const {\n colorTextHeading,\n colorSplit,\n colorBgContainer,\n controlInteractiveSize: checkboxSize,\n headerBg,\n headerColor,\n headerSortActiveBg,\n headerSortHoverBg,\n bodySortBg,\n rowHoverBg,\n rowSelectedBg,\n rowSelectedHoverBg,\n rowExpandedBg,\n cellPaddingBlock,\n cellPaddingInline,\n cellPaddingBlockMD,\n cellPaddingInlineMD,\n cellPaddingBlockSM,\n cellPaddingInlineSM,\n borderColor,\n footerBg,\n footerColor,\n headerBorderRadius,\n cellFontSize,\n cellFontSizeMD,\n cellFontSizeSM,\n headerSplitColor,\n fixedHeaderSortActiveBg,\n headerFilterHoverBg,\n filterDropdownBg,\n expandIconBg,\n selectionColumnWidth,\n stickyScrollBarBg,\n calc\n } = token;\n const zIndexTableFixed = 2;\n const tableToken = mergeToken(token, {\n tableFontSize: cellFontSize,\n tableBg: colorBgContainer,\n tableRadius: headerBorderRadius,\n tablePaddingVertical: cellPaddingBlock,\n tablePaddingHorizontal: cellPaddingInline,\n tablePaddingVerticalMiddle: cellPaddingBlockMD,\n tablePaddingHorizontalMiddle: cellPaddingInlineMD,\n tablePaddingVerticalSmall: cellPaddingBlockSM,\n tablePaddingHorizontalSmall: cellPaddingInlineSM,\n tableBorderColor: borderColor,\n tableHeaderTextColor: headerColor,\n tableHeaderBg: headerBg,\n tableFooterTextColor: footerColor,\n tableFooterBg: footerBg,\n tableHeaderCellSplitColor: headerSplitColor,\n tableHeaderSortBg: headerSortActiveBg,\n tableHeaderSortHoverBg: headerSortHoverBg,\n tableBodySortBg: bodySortBg,\n tableFixedHeaderSortActiveBg: fixedHeaderSortActiveBg,\n tableHeaderFilterActiveBg: headerFilterHoverBg,\n tableFilterDropdownBg: filterDropdownBg,\n tableRowHoverBg: rowHoverBg,\n tableSelectedRowBg: rowSelectedBg,\n tableSelectedRowHoverBg: rowSelectedHoverBg,\n zIndexTableFixed,\n zIndexTableSticky: zIndexTableFixed + 1,\n tableFontSizeMiddle: cellFontSizeMD,\n tableFontSizeSmall: cellFontSizeSM,\n tableSelectionColumnWidth: selectionColumnWidth,\n tableExpandIconBg: expandIconBg,\n tableExpandColumnWidth: calc(checkboxSize).add(calc(token.padding).mul(2)).equal(),\n tableExpandedRowBg: rowExpandedBg,\n // Dropdown\n tableFilterDropdownWidth: 120,\n tableFilterDropdownHeight: 264,\n tableFilterDropdownSearchWidth: 140,\n // Virtual Scroll Bar\n tableScrollThumbSize: 8,\n // Mac scroll bar size\n tableScrollThumbBg: stickyScrollBarBg,\n tableScrollThumbBgHover: colorTextHeading,\n tableScrollBg: colorSplit\n });\n return [genTableStyle(tableToken), genPaginationStyle(tableToken), genSummaryStyle(tableToken), genSorterStyle(tableToken), genFilterStyle(tableToken), genBorderedStyle(tableToken), genRadiusStyle(tableToken), genExpandStyle(tableToken), genSummaryStyle(tableToken), genEmptyStyle(tableToken), genSelectionStyle(tableToken), genFixedStyle(tableToken), genStickyStyle(tableToken), genEllipsisStyle(tableToken), genSizeStyle(tableToken), genRtlStyle(tableToken), genVirtualStyle(tableToken)];\n}, prepareComponentToken, {\n unitless: {\n expandIconScale: true\n }\n});","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { INTERNAL_HOOKS } from 'rc-table';\nimport { convertChildrenToColumns } from \"rc-table/es/hooks/useColumns\";\nimport omit from \"rc-util/es/omit\";\nimport useProxyImperativeHandle from '../_util/hooks/useProxyImperativeHandle';\nimport scrollTo from '../_util/scrollTo';\nimport { devUseWarning } from '../_util/warning';\nimport { ConfigContext } from '../config-provider/context';\nimport DefaultRenderEmpty from '../config-provider/defaultRenderEmpty';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport useSize from '../config-provider/hooks/useSize';\nimport useBreakpoint from '../grid/hooks/useBreakpoint';\nimport defaultLocale from '../locale/en_US';\nimport Pagination from '../pagination';\nimport Spin from '../spin';\nimport { useToken } from '../theme/internal';\nimport renderExpandIcon from './ExpandIcon';\nimport useContainerWidth from './hooks/useContainerWidth';\nimport useFilter, { getFilterData } from './hooks/useFilter';\nimport useLazyKVMap from './hooks/useLazyKVMap';\nimport usePagination, { DEFAULT_PAGE_SIZE, getPaginationParam } from './hooks/usePagination';\nimport useSelection from './hooks/useSelection';\nimport useSorter, { getSortData } from './hooks/useSorter';\nimport useTitleColumns from './hooks/useTitleColumns';\nimport RcTable from './RcTable';\nimport RcVirtualTable from './RcTable/VirtualTable';\nimport useStyle from './style';\nconst EMPTY_LIST = [];\nconst InternalTable = (props, ref) => {\n const {\n prefixCls: customizePrefixCls,\n className,\n rootClassName,\n style,\n size: customizeSize,\n bordered,\n dropdownPrefixCls: customizeDropdownPrefixCls,\n dataSource,\n pagination,\n rowSelection,\n rowKey = 'key',\n rowClassName,\n columns,\n children,\n childrenColumnName: legacyChildrenColumnName,\n onChange,\n getPopupContainer,\n loading,\n expandIcon,\n expandable,\n expandedRowRender,\n expandIconColumnIndex,\n indentSize,\n scroll,\n sortDirections,\n locale,\n showSorterTooltip = true,\n virtual\n } = props;\n const warning = devUseWarning('Table');\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof rowKey === 'function' && rowKey.length > 1), 'usage', '`index` parameter of `rowKey` function is deprecated. There is no guarantee that it will work as expected.') : void 0;\n }\n const baseColumns = React.useMemo(() => columns || convertChildrenToColumns(children), [columns, children]);\n const needResponsive = React.useMemo(() => baseColumns.some(col => col.responsive), [baseColumns]);\n const screens = useBreakpoint(needResponsive);\n const mergedColumns = React.useMemo(() => {\n const matched = new Set(Object.keys(screens).filter(m => screens[m]));\n return baseColumns.filter(c => !c.responsive || c.responsive.some(r => matched.has(r)));\n }, [baseColumns, screens]);\n const tableProps = omit(props, ['className', 'style', 'columns']);\n const {\n locale: contextLocale = defaultLocale,\n direction,\n table,\n renderEmpty,\n getPrefixCls,\n getPopupContainer: getContextPopupContainer\n } = React.useContext(ConfigContext);\n const mergedSize = useSize(customizeSize);\n const tableLocale = Object.assign(Object.assign({}, contextLocale.Table), locale);\n const rawData = dataSource || EMPTY_LIST;\n const prefixCls = getPrefixCls('table', customizePrefixCls);\n const dropdownPrefixCls = getPrefixCls('dropdown', customizeDropdownPrefixCls);\n const [, token] = useToken();\n const rootCls = useCSSVarCls(prefixCls);\n const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n const mergedExpandable = Object.assign({\n childrenColumnName: legacyChildrenColumnName,\n expandIconColumnIndex\n }, expandable);\n const {\n childrenColumnName = 'children'\n } = mergedExpandable;\n const expandType = React.useMemo(() => {\n if (rawData.some(item => item === null || item === void 0 ? void 0 : item[childrenColumnName])) {\n return 'nest';\n }\n if (expandedRowRender || expandable && expandable.expandedRowRender) {\n return 'row';\n }\n return null;\n }, [rawData]);\n const internalRefs = {\n body: React.useRef()\n };\n // ============================ Width =============================\n const getContainerWidth = useContainerWidth(prefixCls);\n // ============================= Refs =============================\n const rootRef = React.useRef(null);\n const tblRef = React.useRef(null);\n useProxyImperativeHandle(ref, () => Object.assign(Object.assign({}, tblRef.current), {\n nativeElement: rootRef.current\n }));\n // ============================ RowKey ============================\n const getRowKey = React.useMemo(() => {\n if (typeof rowKey === 'function') {\n return rowKey;\n }\n return record => record === null || record === void 0 ? void 0 : record[rowKey];\n }, [rowKey]);\n const [getRecordByKey] = useLazyKVMap(rawData, childrenColumnName, getRowKey);\n // ============================ Events =============================\n const changeEventInfo = {};\n const triggerOnChange = function (info, action) {\n let reset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var _a, _b, _c;\n const changeInfo = Object.assign(Object.assign({}, changeEventInfo), info);\n if (reset) {\n (_a = changeEventInfo.resetPagination) === null || _a === void 0 ? void 0 : _a.call(changeEventInfo);\n // Reset event param\n if ((_b = changeInfo.pagination) === null || _b === void 0 ? void 0 : _b.current) {\n changeInfo.pagination.current = 1;\n }\n // Trigger pagination events\n if (pagination && pagination.onChange) {\n pagination.onChange(1, (_c = changeInfo.pagination) === null || _c === void 0 ? void 0 : _c.pageSize);\n }\n }\n if (scroll && scroll.scrollToFirstRowOnChange !== false && internalRefs.body.current) {\n scrollTo(0, {\n getContainer: () => internalRefs.body.current\n });\n }\n onChange === null || onChange === void 0 ? void 0 : onChange(changeInfo.pagination, changeInfo.filters, changeInfo.sorter, {\n currentDataSource: getFilterData(getSortData(rawData, changeInfo.sorterStates, childrenColumnName), changeInfo.filterStates, childrenColumnName),\n action\n });\n };\n /**\n * Controlled state in `columns` is not a good idea that makes too many code (1000+ line?) to read\n * state out and then put it back to title render. Move these code into `hooks` but still too\n * complex. We should provides Table props like `sorter` & `filter` to handle control in next big\n * version.\n */\n // ============================ Sorter =============================\n const onSorterChange = (sorter, sorterStates) => {\n triggerOnChange({\n sorter,\n sorterStates\n }, 'sort', false);\n };\n const [transformSorterColumns, sortStates, sorterTitleProps, getSorters] = useSorter({\n prefixCls,\n mergedColumns,\n onSorterChange,\n sortDirections: sortDirections || ['ascend', 'descend'],\n tableLocale,\n showSorterTooltip\n });\n const sortedData = React.useMemo(() => getSortData(rawData, sortStates, childrenColumnName), [rawData, sortStates]);\n changeEventInfo.sorter = getSorters();\n changeEventInfo.sorterStates = sortStates;\n // ============================ Filter ============================\n const onFilterChange = (filters, filterStates) => {\n triggerOnChange({\n filters,\n filterStates\n }, 'filter', true);\n };\n const [transformFilterColumns, filterStates, filters] = useFilter({\n prefixCls,\n locale: tableLocale,\n dropdownPrefixCls,\n mergedColumns,\n onFilterChange,\n getPopupContainer: getPopupContainer || getContextPopupContainer,\n rootClassName: classNames(rootClassName, rootCls)\n });\n const mergedData = getFilterData(sortedData, filterStates, childrenColumnName);\n changeEventInfo.filters = filters;\n changeEventInfo.filterStates = filterStates;\n // ============================ Column ============================\n const columnTitleProps = React.useMemo(() => {\n const mergedFilters = {};\n Object.keys(filters).forEach(filterKey => {\n if (filters[filterKey] !== null) {\n mergedFilters[filterKey] = filters[filterKey];\n }\n });\n return Object.assign(Object.assign({}, sorterTitleProps), {\n filters: mergedFilters\n });\n }, [sorterTitleProps, filters]);\n const [transformTitleColumns] = useTitleColumns(columnTitleProps);\n // ========================== Pagination ==========================\n const onPaginationChange = (current, pageSize) => {\n triggerOnChange({\n pagination: Object.assign(Object.assign({}, changeEventInfo.pagination), {\n current,\n pageSize\n })\n }, 'paginate');\n };\n const [mergedPagination, resetPagination] = usePagination(mergedData.length, onPaginationChange, pagination);\n changeEventInfo.pagination = pagination === false ? {} : getPaginationParam(mergedPagination, pagination);\n changeEventInfo.resetPagination = resetPagination;\n // ============================= Data =============================\n const pageData = React.useMemo(() => {\n if (pagination === false || !mergedPagination.pageSize) {\n return mergedData;\n }\n const {\n current = 1,\n total,\n pageSize = DEFAULT_PAGE_SIZE\n } = mergedPagination;\n process.env.NODE_ENV !== \"production\" ? warning(current > 0, 'usage', '`current` should be positive number.') : void 0;\n // Dynamic table data\n if (mergedData.length < total) {\n if (mergedData.length > pageSize) {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'usage', '`dataSource` length is less than `pagination.total` but large than `pagination.pageSize`. Please make sure your config correct data with async mode.') : void 0;\n return mergedData.slice((current - 1) * pageSize, current * pageSize);\n }\n return mergedData;\n }\n return mergedData.slice((current - 1) * pageSize, current * pageSize);\n }, [!!pagination, mergedData, mergedPagination && mergedPagination.current, mergedPagination && mergedPagination.pageSize, mergedPagination && mergedPagination.total]);\n // ========================== Selections ==========================\n const [transformSelectionColumns, selectedKeySet] = useSelection({\n prefixCls,\n data: mergedData,\n pageData,\n getRowKey,\n getRecordByKey,\n expandType,\n childrenColumnName,\n locale: tableLocale,\n getPopupContainer: getPopupContainer || getContextPopupContainer\n }, rowSelection);\n const internalRowClassName = (record, index, indent) => {\n let mergedRowClassName;\n if (typeof rowClassName === 'function') {\n mergedRowClassName = classNames(rowClassName(record, index, indent));\n } else {\n mergedRowClassName = classNames(rowClassName);\n }\n return classNames({\n [`${prefixCls}-row-selected`]: selectedKeySet.has(getRowKey(record, index))\n }, mergedRowClassName);\n };\n // ========================== Expandable ==========================\n // Pass origin render status into `rc-table`, this can be removed when refactor with `rc-table`\n mergedExpandable.__PARENT_RENDER_ICON__ = mergedExpandable.expandIcon;\n // Customize expandable icon\n mergedExpandable.expandIcon = mergedExpandable.expandIcon || expandIcon || renderExpandIcon(tableLocale);\n // Adjust expand icon index, no overwrite expandIconColumnIndex if set.\n if (expandType === 'nest' && mergedExpandable.expandIconColumnIndex === undefined) {\n mergedExpandable.expandIconColumnIndex = rowSelection ? 1 : 0;\n } else if (mergedExpandable.expandIconColumnIndex > 0 && rowSelection) {\n mergedExpandable.expandIconColumnIndex -= 1;\n }\n // Indent size\n if (typeof mergedExpandable.indentSize !== 'number') {\n mergedExpandable.indentSize = typeof indentSize === 'number' ? indentSize : 15;\n }\n // ============================ Render ============================\n const transformColumns = React.useCallback(innerColumns => transformTitleColumns(transformSelectionColumns(transformFilterColumns(transformSorterColumns(innerColumns)))), [transformSorterColumns, transformFilterColumns, transformSelectionColumns]);\n let topPaginationNode;\n let bottomPaginationNode;\n if (pagination !== false && (mergedPagination === null || mergedPagination === void 0 ? void 0 : mergedPagination.total)) {\n let paginationSize;\n if (mergedPagination.size) {\n paginationSize = mergedPagination.size;\n } else {\n paginationSize = mergedSize === 'small' || mergedSize === 'middle' ? 'small' : undefined;\n }\n const renderPagination = position => ( /*#__PURE__*/React.createElement(Pagination, Object.assign({}, mergedPagination, {\n className: classNames(`${prefixCls}-pagination ${prefixCls}-pagination-${position}`, mergedPagination.className),\n size: paginationSize\n })));\n const defaultPosition = direction === 'rtl' ? 'left' : 'right';\n const {\n position\n } = mergedPagination;\n if (position !== null && Array.isArray(position)) {\n const topPos = position.find(p => p.includes('top'));\n const bottomPos = position.find(p => p.includes('bottom'));\n const isDisable = position.every(p => `${p}` === 'none');\n if (!topPos && !bottomPos && !isDisable) {\n bottomPaginationNode = renderPagination(defaultPosition);\n }\n if (topPos) {\n topPaginationNode = renderPagination(topPos.toLowerCase().replace('top', ''));\n }\n if (bottomPos) {\n bottomPaginationNode = renderPagination(bottomPos.toLowerCase().replace('bottom', ''));\n }\n } else {\n bottomPaginationNode = renderPagination(defaultPosition);\n }\n }\n // >>>>>>>>> Spinning\n let spinProps;\n if (typeof loading === 'boolean') {\n spinProps = {\n spinning: loading\n };\n } else if (typeof loading === 'object') {\n spinProps = Object.assign({\n spinning: true\n }, loading);\n }\n const wrapperClassNames = classNames(cssVarCls, rootCls, `${prefixCls}-wrapper`, table === null || table === void 0 ? void 0 : table.className, {\n [`${prefixCls}-wrapper-rtl`]: direction === 'rtl'\n }, className, rootClassName, hashId);\n const mergedStyle = Object.assign(Object.assign({}, table === null || table === void 0 ? void 0 : table.style), style);\n const emptyText = locale && locale.emptyText || (renderEmpty === null || renderEmpty === void 0 ? void 0 : renderEmpty('Table')) || ( /*#__PURE__*/React.createElement(DefaultRenderEmpty, {\n componentName: \"Table\"\n }));\n // ========================== Render ==========================\n const TableComponent = virtual ? RcVirtualTable : RcTable;\n // >>> Virtual Table props. We set height here since it will affect height collection\n const virtualProps = {};\n const listItemHeight = React.useMemo(() => {\n const {\n fontSize,\n lineHeight,\n padding,\n paddingXS,\n paddingSM\n } = token;\n const fontHeight = Math.floor(fontSize * lineHeight);\n switch (mergedSize) {\n case 'large':\n return padding * 2 + fontHeight;\n case 'small':\n return paddingXS * 2 + fontHeight;\n default:\n return paddingSM * 2 + fontHeight;\n }\n }, [token, mergedSize]);\n if (virtual) {\n virtualProps.listItemHeight = listItemHeight;\n }\n return wrapCSSVar( /*#__PURE__*/React.createElement(\"div\", {\n ref: rootRef,\n className: wrapperClassNames,\n style: mergedStyle\n }, /*#__PURE__*/React.createElement(Spin, Object.assign({\n spinning: false\n }, spinProps), topPaginationNode, /*#__PURE__*/React.createElement(TableComponent, Object.assign({}, virtualProps, tableProps, {\n ref: tblRef,\n columns: mergedColumns,\n direction: direction,\n expandable: mergedExpandable,\n prefixCls: prefixCls,\n className: classNames({\n [`${prefixCls}-middle`]: mergedSize === 'middle',\n [`${prefixCls}-small`]: mergedSize === 'small',\n [`${prefixCls}-bordered`]: bordered,\n [`${prefixCls}-empty`]: rawData.length === 0\n }, cssVarCls, rootCls, hashId),\n data: pageData,\n rowKey: getRowKey,\n rowClassName: internalRowClassName,\n emptyText: emptyText,\n // Internal\n internalHooks: INTERNAL_HOOKS,\n internalRefs: internalRefs,\n transformColumns: transformColumns,\n getContainerWidth: getContainerWidth\n })), bottomPaginationNode)));\n};\nexport default /*#__PURE__*/React.forwardRef(InternalTable);","export default function useContainerWidth(prefixCls) {\n const getContainerWidth = (ele, width) => {\n const container = ele.querySelector(`.${prefixCls}-container`);\n let returnWidth = width;\n if (container) {\n const style = getComputedStyle(container);\n const borderLeft = parseInt(style.borderLeftWidth, 10);\n const borderRight = parseInt(style.borderRightWidth, 10);\n returnWidth = width - borderLeft - borderRight;\n }\n return returnWidth;\n };\n return getContainerWidth;\n}","import * as React from 'react';\nexport default function useLazyKVMap(data, childrenColumnName, getRowKey) {\n const mapCacheRef = React.useRef({});\n function getRecordByKey(key) {\n if (!mapCacheRef.current || mapCacheRef.current.data !== data || mapCacheRef.current.childrenColumnName !== childrenColumnName || mapCacheRef.current.getRowKey !== getRowKey) {\n const kvMap = new Map();\n /* eslint-disable no-inner-declarations */\n function dig(records) {\n records.forEach((record, index) => {\n const rowKey = getRowKey(record, index);\n kvMap.set(rowKey, record);\n if (record && typeof record === 'object' && childrenColumnName in record) {\n dig(record[childrenColumnName] || []);\n }\n });\n }\n /* eslint-enable */\n dig(data);\n mapCacheRef.current = {\n data,\n childrenColumnName,\n kvMap,\n getRowKey\n };\n }\n return mapCacheRef.current.kvMap.get(key);\n }\n return [getRecordByKey];\n}","\"use client\";\n\nimport * as React from 'react';\nimport { EXPAND_COLUMN, Summary } from 'rc-table';\nimport Column from './Column';\nimport ColumnGroup from './ColumnGroup';\nimport { SELECTION_ALL, SELECTION_COLUMN, SELECTION_INVERT, SELECTION_NONE } from './hooks/useSelection';\nimport InternalTable from './InternalTable';\nconst Table = (props, ref) => {\n const renderTimesRef = React.useRef(0);\n renderTimesRef.current += 1;\n return /*#__PURE__*/React.createElement(InternalTable, Object.assign({}, props, {\n ref: ref,\n _renderTimes: renderTimesRef.current\n }));\n};\nconst ForwardTable = /*#__PURE__*/React.forwardRef(Table);\nForwardTable.SELECTION_COLUMN = SELECTION_COLUMN;\nForwardTable.EXPAND_COLUMN = EXPAND_COLUMN;\nForwardTable.SELECTION_ALL = SELECTION_ALL;\nForwardTable.SELECTION_INVERT = SELECTION_INVERT;\nForwardTable.SELECTION_NONE = SELECTION_NONE;\nForwardTable.Column = Column;\nForwardTable.ColumnGroup = ColumnGroup;\nForwardTable.Summary = Summary;\nif (process.env.NODE_ENV !== 'production') {\n ForwardTable.displayName = 'Table';\n}\nexport default ForwardTable;","\"use client\";\n\nimport Table from './Table';\nexport default Table;","import React,{useState} from 'react'\r\nimport Menus from '../../Screens/Customer/Home/Menus/Menus'\r\nimport { Heading } from '../../Reusable/Headings/Heading'\r\nimport { useNavigate } from 'react-router-dom';\r\n\r\nimport { Divider, Radio, Table } from 'antd';\r\nconst columns = [\r\n {\r\n title: 'Chemicals ',\r\n dataIndex: 'chemical',\r\n render: (text) => {text},\r\n },\r\n {\r\n title: 'Quantity',\r\n dataIndex: 'quantity',\r\n render:()=> \r\n },\r\n \r\n];\r\nconst data = [\r\n {\r\n key: '1',\r\n chemical: 'Boric acid',\r\n quantity:' ',\r\n \r\n \r\n },\r\n {\r\n key: '2',\r\n chemical: 'Hydramethylnon',\r\n quantity: '',\r\n \r\n },\r\n {\r\n key: '3',\r\n chemical: 'Permethrin',\r\n quantity: '',\r\n \r\n },\r\n {\r\n key: '4',\r\n chemical: 'Cyfluthrin',\r\n quantity: '',\r\n \r\n },\r\n {\r\n key: '5',\r\n chemical: 'Bifenthrin',\r\n quantity: '',\r\n \r\n },\r\n \r\n];\r\n\r\n// rowSelection object indicates the need for row selection\r\nconst rowSelection = {\r\n onChange: (selectedRowKeys, selectedRows) => {\r\n console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);\r\n },\r\n \r\n};\r\n\r\nconst Chemicals = () => {\r\n const [selectionType, setSelectionType] = useState('checkbox');\r\n let navigate = useNavigate()\r\n return (\r\n
    \r\n \r\n {/* */}\r\n
    \r\n

    \r\n {\" \"}\r\n \r\nIf any chemicals were utilized during the task, please specify from the following list\r\n

    \r\n
    \r\n\r\n
    \r\n {\r\n setSelectionType(value);\r\n }}\r\n value={selectionType}\r\n >\r\n \r\n\r\n \r\n\r\n \r\n
    \r\n\r\n \r\n
    \r\n )\r\n}\r\n\r\nexport default Chemicals\r\n","import React from \"react\";\r\nimport Menus from \"../../Screens/Customer/Home/Menus/Menus\";\r\nimport { useNavigate } from \"react-router-dom\";\r\n\r\nconst Profile = () => {\r\n const navigate = useNavigate();\r\n return (\r\n <>\r\n \r\n
    \r\n
    \r\n
    \r\n

    My Account

    \r\n
    \r\n
    \r\n
    \r\n
    Name
    \r\n
    Email
    \r\n
    Phone
    \r\n
    Address
    \r\n
    Created At
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default Profile;\r\n","import React from 'react'\r\nimport Menus from '../Screens/Customer/Home/Menus/Menus'\r\nimport { Heading } from '../Reusable/Headings/Heading'\r\nimport Caroseuls from '../Reusable/Caroseuls'\r\n// import OurServices from '../Screens/Customer/Services/OurServices/OurServices'\r\n// import MyTask from './Task/MyTask'\r\nimport MyTaskList from './Task/MyTaskList'\r\nconst Home = () => {\r\n return (\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n )\r\n}\r\n\r\nexport default Home\r\n","import React from \"react\";\r\nimport { BrowserRouter, Routes, Route } from \"react-router-dom\";\r\nimport Home from \"../Screens/Customer/Home/Home\";\r\nimport Login from \"../Screens/Login/Login\";\r\nimport AllServicesHistory from \"../Screens/Customer/Services/ServiceHistory/AllServicesHistory/AllServicesHistory\";\r\nimport SpecificHistory from \"../Screens/Customer/Services/ServiceHistory/SpecificHistory/SpecificHistory\";\r\nimport InsideServices from \"../Screens/Customer/Services/OurServices/InsideServices/InsideServices\";\r\nimport MyTask from \"../Technician/Task/MyTask\";\r\nimport MyTaskList from \"../Technician/Task/MyTaskList\";\r\nimport TaskDetails from \"../Technician/TaskDetails/TaskDetails\";\r\nimport ScanQrCode from \"../Technician/ScanQrCode/ScanQrCode\";\r\nimport StartTask from \"../Technician/StartTask/StartTask\";\r\nimport SignnaturePage from \"../Technician/SignaturePage/SignnaturePage\";\r\nimport Chemicals from \"../Technician/chemicalspage/Chemicals\";\r\nimport Profile from \"../Technician/Profile/Profile\";\r\n// =============== Technician ==================\r\nimport TechnicianHome from \"../Technician/Home\";\r\n\r\nconst Routers = () => {\r\n return (\r\n \r\n \r\n {/* ======================== Customers route =============================== */}\r\n\r\n } />\r\n } />\r\n }\r\n />\r\n } />\r\n } />\r\n\r\n {/* ======================= Technician route ========================== */}\r\n \r\n } />\r\n } />\r\n } />\r\n {/* } /> */}\r\n } />\r\n } />\r\n }/>\r\n } />\r\n } />\r\n }/>\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Routers;\r\n","import logo from './logo.svg';\r\nimport './App.css';\r\nimport React, { useEffect, useState } from 'react';\r\nimport SplashScreen from './Screens/SplashScreen/SplashScreen';\r\nimport Routers from './Routes/Routers';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\n\r\nfunction App() {\r\n const [showSplash, setShowSplash] = useState(true);\r\n useEffect(() => {\r\n const timer = setTimeout(() => {\r\n setShowSplash(false);\r\n }, 2000);\r\n return () => clearTimeout(timer);\r\n }, []);\r\n\r\n return (\r\n
    \r\n {/* {showSplash ? (\r\n \r\n ) : (\r\n
    \r\n \r\n
    \r\n )} */}\r\n
    \r\n {/* */}\r\n \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default App;\r\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\nimport 'bootstrap/dist/css/bootstrap.min.css';\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\nroot.render(\n \n \n \n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"names":["module","exports","t","e","n","r","i","s","u","a","o","c","f","h","d","l","$","y","M","name","weekdays","split","months","ordinal","m","String","length","Array","join","v","z","utcOffset","Math","abs","floor","date","year","month","clone","add","ceil","p","w","D","ms","Q","toLowerCase","replace","g","S","_","O","args","arguments","b","locale","$L","utc","$u","x","$x","$offset","this","parse","prototype","$d","Date","NaN","test","match","substring","UTC","init","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","toString","isSame","startOf","endOf","isAfter","isBefore","$g","set","unix","valueOf","getTime","toDate","apply","slice","$locale","weekStart","$set","min","daysInMonth","get","Number","round","subtract","format","invalidDate","meridiem","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","k","forEach","extend","$i","isDayjs","en","Ls","bind","weekYear","isoWeekYear","week","isoWeek","offsetName","LTS","LT","L","LL","LLL","LLLL","zone","offset","indexOf","concat","A","afternoon","milliseconds","SS","SSS","ss","mm","H","HH","hh","DD","Do","day","MM","MMM","map","Error","MMMM","Y","YY","YYYY","Z","ZZ","formats","toUpperCase","regex","parser","exec","call","hours","customParseFormat","parseTwoDigitYear","minutes","seconds","firstDayOfWeek","longDateFormat","localeData","yearStart","weeks","weekday","condition","error","undefined","argIndex","framesToPop","Object","defineProperty","value","_len","validators","_key","_createChainableTypeChecker2","default","_len2","_key2","validator","result","obj","_createChainableTypeChecker","require","__esModule","validate","checkType","isRequired","props","propName","componentName","location","propFullName","componentNameSafe","propFullNameSafe","chainedCheckType","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","secret","err","getShim","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","Symbol","for","q","$$typeof","type","isFragment","isMemo","aa","ca","encodeURIComponent","da","Set","ea","fa","ha","ia","window","document","createElement","ja","hasOwnProperty","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","ta","pa","isNaN","qa","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","assign","Ma","stack","trim","Na","Oa","prepareStackTrace","Reflect","construct","displayName","includes","Pa","tag","render","Qa","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","constructor","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","isArray","fb","options","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","setProperty","keys","charAt","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr","ub","vb","is","wb","xb","target","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","push","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","key","fromCharCode","code","repeat","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","datetime","email","password","range","search","tel","text","time","url","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","instance","listener","of","has","pf","qf","rf","random","sf","capture","passive","J","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","next","Wg","Xg","Yg","interleaved","Zg","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","callback","dh","K","eh","fh","gh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","uh","vh","index","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","P","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","create","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","console","Ni","WeakMap","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","src","Wk","mk","nk","ok","pk","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","React","LeftArrow","_a","customLeftArrow","getState","previous","rtl","cloneElement","carouselState","rtlClassName","className","RightArrow","customRightArrow","__extends","extendStatics","setPrototypeOf","__proto__","__","utils_1","types_1","Dots_1","Arrows_1","CarouselItems_1","common_1","defaultTransitionDuration","defaultTransition","Carousel","_super","_this","containerRef","createRef","listRef","itemWidth","slidesToShow","currentSlide","totalItems","Children","count","deviceType","domLoaded","transform","containerWidth","onResize","handleDown","handleMove","handleOut","onKeyUp","handleEnter","setIsInThrottle","throttle","transitionDuration","goToSlide","onMove","initialX","lastX","isAnimationAllowed","direction","initialY","isInThrottle","transformPlaceHolder","resetTotalItems","notEnoughChildren","max","setState","setContainerAndItemWidth","setTransformDirectly","position","withAnimation","additionalTransfrom","currentTransform","getTransform","setAnimationDirectly","animationAllowed","customTransition","setItemsToShow","keyBoardControl","autoPlay","setInterval","autoPlaySpeed","setClones","forResizing","resetCurrentSlide","childrenArr","toArray","initialSlide","getInitialSlideInInfiniteMode","clones","getClones","correctItemsPosition","shouldCorrectItemPosition","responsive","item","breakpoint","items","widths","innerWidth","screen","screenWidth","offsetWidth","itemWidth_1","getItemClientSideWidth","infinite","setToDomDirectly","nextTransform","_b","itemsToShowTimeout","clearInterval","clonesTimeout","correctClonesPosition","rewind","isInRightEnd","rewindBuffer","isInThrottleTimeout","resetAutoplayInterval","rewindWithAnimation","checkClonesPosition","isReachingTheEnd","isReachingTheStart","nextSlide","nextPosition","transformTimeout","slidesHavePassed","afterChange","beforeChange","populateNextSlides","nextSlides","previousSlide","shouldResetAutoplay","afterChangeTimeout","populatePreviousSlides","afterChangeTimeout2","afterChangeTimeout3","resetMoveStatus","getCords","parsePosition","isMouseMoveEvent","swipeable","draggable","diffX","diffY","populateSlidesOnMouseTouchMove","canContinue","shouldDisableOnMobile","shouldDisableOnDesktop","minimumTouchDrag","isInViewport","getBoundingClientRect","_c","_d","bottom","_e","right","innerHeight","clientHeight","clientWidth","isChildOfCarousel","Element","HTMLInputElement","pauseOnHover","slide","skipCallbacks","skipBeforeChange","skipAfterChange","renderLeftArrow","disbaled","renderRightArrow","renderButtonGroups","customButtonGroup","slideIndex","renderDotsList","renderCarouselItems","arrows","renderArrowsWhenDisabled","removeArrowOnDeviceType","containerClass","sliderClass","renderDotsOutside","renderButtonGroupOutside","getInitialState","shouldRenderOnSSR","shouldRenderAtAll","isLeftEndReach","isInLeftEnd","isRightEndReach","shouldShowArrows","disableLeftArrow","disableRightArrow","Fragment","dir","onMouseMove","onMouseDown","onMouseUp","onMouseEnter","onMouseLeave","onTouchStart","onTouchMove","onTouchEnd","slidesToSlide","itemClass","showDots","dotListClass","focusOnSelect","centerMode","itemAriaLabel","partialVisbile","partialVisible","flexBisis","domFullyLoaded","partialVisibilityGutter","warn","getIfSlideIsVisbile","ariaLabel","clones_1","dots_1","customDot","numberOfDotsToShow","getSlidesToSlide","nextSlidesTable","getLookupTableForNextSlides","lookupTable","getOriginalIndexLookupTableByClones","currentSlides","fill","isActive","cloneIndex","maximumNextSlide","possibileNextSlides","active","Carousel_1","getOriginalCounterPart","table","firstBeginningOfClones","firstEndOfClones","firstCount","secondBeginningOfClones","secondEndOfClones","secondCount","originalEnd","originalCounter","totalSlides","originalFirstSlide","elementWidth_1","getTransformForCenterMode","getTransformForPartialVsibile","shouldRemoveRightGutter","baseTransform","ssr","Boolean","getWidthFromDeviceType","getPartialVisibilityGutter","slidesToScroll","device","serverSideDeviceType","clientSideDeviceType","gutter","paritialVisibilityGutter","toFixed","throttle_1","throwError_1","throwError","next_1","previous_1","mouseOrTouchMove_1","slidesHavePassedRight","slidesHavePassedLeft","isMovingLeft","translateXLimit","nextTranslate","isLastSlide","nextMaximumSlides","common_2","additionalSlides","limit","inThrottle","_interopNamespace","freeze","React__namespace","_extends","_defineProperty","writable","_arrayWithHoles","arr","_iterableToArrayLimit","_i","_s","_arr","_n","_arrayLikeToArray","len","arr2","_unsupportedIterableToArray","minLen","from","_nonIterableRest","TypeError","_slicedToArray","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","propTypes","reactIs","reactIs_production_min","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","ForwardRef","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","shouldUseNative","test1","getOwnPropertyNames","test2","order2","test3","letter","ReactPropTypesSecret_1","checkPropTypes$1","typeSpecs","values","getStack","Function","factoryWithThrowingShims","decodeBase64","base64","enableUnicode","binaryString","atob","binaryView","Uint8Array","charCodeAt","Uint16Array","buffer","createURL","sourcemapArg","enableUnicodeArg","sourcemap","blob","Blob","URL","createObjectURL","createBase64WorkerFactory","Worker","WorkerFactory","_excluded","ownKeys","enumerableOnly","symbols","filter","sym","_objectSpread","getOwnPropertyDescriptors","defineProperties","createWorker","stopMediaStream","stream","getVideoTracks","getAudioTracks","removeTrack","stop","Reader","constraints","onLoad","onScan","resolution","qrArea","other","streamRef","videoEl","canvasEl","ctxRef","requestRef","_React$useState2","setSrc","isProcessingRef","workerRef","worker","onmessage","canvas","terminate","qrAreaStr","check","videoIsPlaying","readyState","HAVE_ENOUGH_DATA","imageData","videoWidth","videoHeight","greatestSize","ratio","getContext","drawImage","getImageData","postMessage","requestAnimationFrame","constraintsStr","isSubscribed","navigator","mediaDevices","getUserMedia","srcObject","cancelAnimationFrame","revokeObjectURL","playsInline","audio","video","factory","loaded","ReferenceError","getPrototypeOf","_sigPad","_excludeOurProps","canvasProps","clearOnResize","getCanvas","_canvas","getTrimmedCanvas","getSignaturePad","_checkClearOnResize","_resizeCanvas","devicePixelRatio","offsetHeight","scale","clear","on","off","isEmpty","fromDataURL","toDataURL","fromData","toData","velocityFilterWeight","minWidth","maxWidth","minDistance","dotSize","penColor","onEnd","onBegin","__self","__source","jsx","jsxs","forceUpdate","escape","_status","_result","only","PureComponent","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","clearRect","putImageData","red","green","blue","alpha","warning","hasOwn","classNames","classes","arg","appendClass","parseValue","newClass","asyncGeneratorStep","gen","reject","_next","_throw","info","_asyncToGenerator","fn","self","toPropertyKey","toPrimitive","_typeof","Point","Bezier","startPoint","control1","control2","endPoint","SignaturePad","opts","_strokeMoveUpdate","wait","timeout","later","leading","remaining","trailing","_strokeUpdate","backgroundColor","_ctx","_handleMouseDown","_mouseButtonDown","_strokeBegin","_handleMouseMove","_handleMouseUp","_strokeEnd","_handleTouchStart","touch","_handleTouchMove","_handleTouchEnd","velocityFrom","distanceTo","sqrt","pow","equals","px","py","cx","_point","cy","xdiff","ydiff","c1","c2","ctx","fillStyle","fillRect","_data","_reset","_isEmpty","dataUrl","image","Image","onload","_toSVG","_handleMouseEvents","_handleTouchEvents","point","_createPoint","lastPointGroup","lastPoint","isLastPointTooClose","_addPoint","curve","_drawCurve","canDrawCurve","points","_drawDot","msTouchAction","touchAction","_lastVelocity","_lastWidth","rect","_calculateCurveControlPoints","c3","_calculateCurveWidths","s1","s2","s3","dx1","dy1","dx2","dy2","m1","m2","l1","l2","cm","tx","ty","velocity","newWidth","_strokeWidth","_drawPoint","moveTo","arc","PI","startWidth","endWidth","widthDelta","drawSteps","beginPath","tt","ttt","uu","uuu","closePath","_fromData","pointGroups","drawCurve","drawDot","group","j","rawPoint","_addPoint2","_this2","maxX","maxY","svg","path","attr","circle","header","dummy","nodes","childNodes","cloneNode","btoa","_this3","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","leafPrototypes","getProto","ns","def","definition","chunkId","all","reduce","promises","miniCssF","globalThis","prop","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","nc","onScriptComplete","prev","onerror","doneFns","head","toStringTag","installedChunks","installedChunkData","promise","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","Action","PopStateEventType","invariant","cond","getHistoryState","usr","idx","createLocation","to","pathname","hash","parsePath","substr","createPath","_ref","parsedPath","hashIndex","searchIndex","getUrlBasedHistory","getLocation","createHref","validateLocation","v5Compat","globalHistory","history","Pop","getIndex","handlePop","nextIndex","delta","origin","replaceState","listen","encodeLocation","Push","historyState","pushState","DOMException","Replace","go","ResultType","matchRoutes","routes","locationArg","basename","stripBasename","branches","flattenRoutes","sort","score","siblings","every","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","matches","matchRouteBranch","safelyDecodeURI","parentsMeta","parentPath","flattenRoute","route","relativePath","caseSensitive","startsWith","joinPaths","computeScore","_route$path","exploded","explodeOptionalSegments","segments","first","rest","isOptional","endsWith","required","restExploded","subpath","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","params","pathnameBase","normalizePathname","pattern","matcher","compiledParams","regexpSource","paramName","RegExp","compilePath","captureGroups","splatValue","decodeURIComponent","safelyDecodeURIComponent","decodeURI","startIndex","nextChar","getInvalidPathError","field","dest","getPathContributingMatches","getResolveToMatches","v7_relativeSplatPath","pathMatches","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","toPathname","routePathnameIndex","toSegments","fromPathname","resolvePathname","normalizeSearch","normalizeHash","resolvePath","hasExplicitTrailingSlash","hasCurrentTrailingSlash","paths","isRouteErrorResponse","status","statusText","internal","validMutationMethodsArr","validRequestMethodsArr","DataRouterContext","DataRouterStateContext","NavigationContext","LocationContext","RouteContext","outlet","isDataRoute","RouteErrorContext","useInRouterContext","useLocation","UNSAFE_invariant","useIsomorphicLayoutEffect","static","useNavigate","router","useDataRouterContext","DataRouterHook","UseNavigateStable","useCurrentRouteId","DataRouterStateHook","activeRef","navigate","fromRouteId","useNavigateStable","dataRouterContext","future","routePathnamesJson","UNSAFE_getResolveToMatches","relative","useNavigateUnstable","useRoutesImpl","dataRouterState","parentMatches","routeMatch","parentParams","parentPathnameBase","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","renderedMatches","_renderMatches","navigationType","DefaultErrorComponent","_state$errors","useDataRouterState","UseRouteError","routeId","errors","useRouteError","lightgrey","preStyles","padding","fontStyle","defaultErrorElement","RenderErrorBoundary","super","revalidation","errorInfo","routeContext","component","RenderedRoute","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","_dataRouterState2","_dataRouterState","errorIndex","findIndex","renderFallback","fallbackIndex","v7_partialHydration","HydrateFallback","hydrateFallbackElement","loaderData","needsToRunLoader","loader","reduceRight","shouldRenderHydrateFallback","alreadyWarned","getChildren","hookName","useRouteContext","thisRoute","Route","_props","Router","_ref5","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","Routes","_ref6","createRoutesFromChildren","treePath","hasErrorBoundary","shouldRevalidate","handle","startTransitionImpl","ReactDOM","BrowserRouter","_ref4","historyRef","createBrowserHistory","setStateImpl","v7_startTransition","newState","DEFAULT_BREAKPOINTS","DEFAULT_MIN_BREAKPOINT","ThemeContext","prefixes","breakpoints","minBreakpoint","useBootstrapPrefix","prefix","defaultPrefix","useIsRTL","Container","bsPrefix","fluid","as","suffix","_jsx","defaultKey","_toPropertyKey","hint","prim","res","_toPrimitive","useUncontrolled","config","fieldName","_extends2","Utils","propsValue","handlerName","_useUncontrolledProp","propValue","handler","wasPropRef","_useState","stateValue","isProp","wasProp","useUncontrolledProp","nextProps","prevState","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","__suppressDeprecationWarning","qsa","selector","useForceUpdate","toFnRef","refA","refB","mergeRefs","NavContext","makeEventKey","eventKey","ATTRIBUTE_PREFIX","dataAttr","property","useEventCallback","useCommittedRef","useButtonProps","_ref2","rel","role","tabIndex","handleClick","isTrivialHref","onKeyDown","Button","asProp","buttonProps","useNavItem","parentOnSelect","SelectableContext","navContext","tabContext","TabContext","contextControllerId","getControllerId","contextControlledId","getControlledId","activeKey","unmountOnExit","mountOnEnter","NavItem","noop","EVENT_KEY_ATTR","Nav","onSelect","needsRefocusRef","listNode","getNextActiveTab","currentListNode","activeChild","querySelector","handleSelect","mergedRef","useMergedRefs","nextActiveChild","Item","useCallbackRef","useMounted","mounted","usePrevious","isReactNative","global","product","Anchor","handleKeyDown","NavLink","navItemProps","uncontrolledProps","initialBsPrefix","variant","justify","navbar","navbarScroll","navbarBsPrefix","cardHeaderBsPrefix","isNavbar","navbarContext","NavbarContext","cardHeaderContext","CardHeaderContext","BaseNav","Link","NavbarBrand","getComputedStyle","psuedoElement","doc","ownerWindow","rUpper","msPattern","hyphenateStyleName","hyphenate","supportedTransforms","css","transforms","getPropertyValue","isTransform","removeProperty","cssText","_setPrototypeOf","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","_React$Component","subClass","superClass","initialStatus","appear","isMounting","enter","appearStatus","in","nextCallback","_proto","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","nodeRef","forceReflow","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","onExit","onExiting","onExited","cancel","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","_ref3","maybeNextCallback","_this$props","childProps","TransitionGroupContext","optionsSupported","onceSupported","once","canUseDOM","eventName","wrappedHandler","__once","onceHandler","emulateTransitionEnd","duration","called","createEvent","initEvent","triggerEvent","remove","transitionEnd","str","mult","parseFloat","parseDuration","removeEmulate","transitionEndListener","funcs","acc","triggerBrowserReflow","TransitionWrapper","childRef","attachRef","componentOrElement","normalize","handleEntering","handleEntered","handleExit","handleExiting","handleExited","handleAddEndListener","innerProps","MARGINS","getDefaultDimensionValue","dimension","elem","margins","parseInt","collapseStyles","inProp","getDimensionValue","computedDimension","createChainedFunction","scroll","NavbarCollapse","Collapse","expanded","NavbarToggle","label","onToggle","matchersByWindow","getMatcher","query","targetWindow","matchers","mql","matchMedia","refCount","media","useMediaQuery","setMatches","handleChange","addListener","removeListener","useBreakpoint","breakpointValues","names","and","getMaxQuery","getNext","breakpointOrMap","breakpointMap","entries","getMinQuery","createBreakpointHook","xs","sm","xl","xxl","useWillUnmount","onUnmount","valueRef","useUpdatedRef","OPEN_DATA_ATTRIBUTE","handleContainerOverflow","isRTL","modals","getScrollbarWidth","getBodyScrollbarWidth","getElement","setModalAttributes","_modal","removeModalAttributes","setContainerStyle","containerState","paddingProp","container","scrollBarWidth","reset","removeContainerStyle","modal","modalIdx","isTopModal","Context","useWindow","resolveContainerRef","hasEnteredRef","combinedRef","ImperativeTransition","exited","setExited","onTransition","isInitialRef","handleTransition","useIsomorphicEffect","stale","initial","isStale","onFinish","renderTransition","runTransition","NoopTransition","manager","useModalManager","provided","modalManager","ModalManager","getManager","dialog","backdrop","setDialogRef","setBackdropRef","Modal","show","keyboard","onBackdropClick","onEscapeKeyDown","backdropTransition","runBackdropTransition","enforceFocus","restoreFocus","restoreFocusOptions","renderDialog","renderBackdrop","providedManager","onShow","onHide","onResolved","resolvedRef","setRef","earlyRef","nextRef","useWaitForDOMRef","prevShow","lastFocusRef","handleShow","removeKeydownListenerRef","handleDocumentKeyDown","removeFocusListenerRef","handleEnforceFocus","_modal$dialog$ownerDo","_modal$dialog","currentActiveElement","handleHide","_lastFocusRef$current","handleBackdropClick","isEscKey","dialogProps","backdropElement","_Fragment","_jsxs","Manager","fadeStyles","Fade","transitionClasses","isAppearing","OffcanvasBody","transitionStyles","OffcanvasToggling","CloseButton","AbstractModalHeader","closeLabel","closeVariant","closeButton","ModalContext","OffcanvasHeader","DivStyledAsH5","divWithClassName","OffcanvasTitle","replaceClassName","origClass","classToRemove","Selector","BootstrapModalManager","adjustAndStore","adjust","actual","restore","classList","baseVal","hasClass","marginProp","sharedManager","getSharedManager","DialogTransition","BackdropTransition","Offcanvas","ariaLabelledby","placement","backdropClassName","propsManager","renderStaticNode","showOffcanvas","setShowOffcanvas","hideResponsiveOffcanvas","modalContext","backdropProps","BaseModal","visibility","Body","Header","Title","NavbarOffcanvas","NavbarText","Navbar","expand","fixed","sticky","collapseOnSelect","controlledProps","handleCollapse","expandClass","Brand","Text","Toggle","find","iter","tar","dequal","foo","bar","ctor","tmp","ArrayBuffer","DataView","byteLength","getInt8","isView","getBasePlacement","getWindow","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","getUAString","uaData","userAgentData","brands","brand","userAgent","isLayoutViewport","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","offsetLeft","offsetTop","getLayoutRect","parent","rootNode","getRootNode","isSameNode","host","getNodeName","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","auto","basePlacements","clippingParents","viewport","popper","reference","variationPlacements","placements","modifierPhases","enabled","phase","_state$modifiersData$","arrowElement","elements","arrow","popperOffsets","modifiersData","basePlacement","axis","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","axisProp","centerOffset","effect","_options$element","requires","requiresIfExists","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","dpr","roundOffsetsByDPR","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","strategy","styles","attributes","_options$scroll","_options$resize","resize","scrollParents","scrollParent","update","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","pageXOffset","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","getScrollParent","listScrollParents","list","_element$ownerDocumen","isBody","updatedList","rectToClientRect","getClientRectFromMixedType","clippingParent","html","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","_loop","fittingPlacement","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","getNodeScroll","modifiers","visited","modifier","dep","depModifier","debounce","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","orderModifiers","merged","existing","mergeByName","_ref$options","cleanupFn","noopFn","_state$elements","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","createPopper","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","computeStyles","eventListeners","flip","disabledApplyStylesModifier","ariaDescribedByModifier","ids","_popper$getAttribute","EMPTY_MODIFIERS","referenceElement","popperElement","prevModifiers","popperInstanceRef","_popperInstanceRef$cu","_popperInstanceRef$cu2","popperState","useSafeState","updateModifier","nextModifiers","getRefTarget","InitialTriggerEvents","click","mouseup","pointerup","onClickOutside","clickTrigger","preventMouseClickOutsideRef","waitingForTrigger","handleMouseCapture","isLeftClickEvent","handleInitialMouse","handleMouse","_ownerWindow$event","_ownerWindow$parent","currentEvent","removeInitialTriggerListener","removeMouseCaptureListener","removeMouseListener","mobileSafariHackListeners","toModifierArray","mergeOptionsWithPopperConfig","enableEvents","containerPadding","popperConfig","_modifiers$eventListe","_modifiers$preventOve","_modifiers$preventOve2","_modifiers$offset","_modifiers$arrow","toModifierMap","useDropdownMenu","DropdownContext","attachArrowRef","hasShownRef","rootCloseEvent","placementOverride","enableEventListeners","usePopper","shouldUsePopper","setMenu","menuElement","toggleElement","menuProps","metadata","hasShown","toggle","arrowProps","useClickOutside","DropdownMenu","$b5e257d569688ac6$var$defaultContext","$b5e257d569688ac6$var$SSRContext","$73SJx$react","$b5e257d569688ac6$var$IsSSRContext","$b5e257d569688ac6$var$canUseDOM","$b5e257d569688ac6$var$componentIds","$b5e257d569688ac6$var$useCounter","$73SJx$useContext","$73SJx$useRef","_React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_ReactCurrentOwner","_React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","currentOwner","prevComponentValue","$b5e257d569688ac6$export$619500959fc48b26","defaultId","didSSR","$73SJx$useState","$b5e257d569688ac6$var$subscribe","$b5e257d569688ac6$var$getSnapshot","$b5e257d569688ac6$var$getServerSnapshot","counter","onStoreChange","isRoleMenu","_el$getAttribute","useDropdownToggle","useSSRSafeId","setToggle","DropdownToggle","useDropdownItem","onSelectCtx","DropdownItem","dropdownItemProps","useRefWithUpdate","Dropdown","defaultShow","rawShow","rawOnToggle","itemSelector","focusFirstItemOnShow","menuRef","toggleRef","lastShow","lastSourceEvent","focusInDropdown","nextShow","originalEvent","focusToggle","maybeFocusFirst","focusType","getNextFocusedChild","eventTarget","useEventListener","_menuRef$current","_toggleRef$current","fromMenu","fromToggle","_menuRef$current2","DropdownDivider","DropdownHeader","DropdownItemText","useWrappedRefWithWarning","getDropdownMenuPlacement","alignEnd","dropDirection","align","showProps","renderOnMount","contextAlign","drop","isInputGroup","InputGroupContext","alignClasses","brkPoint","close","childBsPrefix","dropdownContext","toggleProps","pProps","_4","autoClose","handleToggle","_meta$originalEvent","_meta$originalEvent$t","contextValue","directionClasses","down","up","BaseDropdown","ItemText","Divider","NavDropdown","title","menuRole","renderMenuOnMount","menuVariant","navItemPrefix","Menus","storedemail","sessionStorage","getItem","pestlogo","alt","Caroseuls","superLargeDesktop","desktop","tablet","mobile","caro1","caro2","caro3","caro4","Heading","heading","fontSize","SubHeading","subHeading","subInsideHeading","DefaultContext","IconContext","Tree2Element","tree","GenIcon","IconBase","conf","svgProps","computedSize","stroke","xmlns","FaRegCalendarAlt","ServiceHistory","onhandleClick","Home","bound01","isOnePointZero","isPercent","isPercentage","clamp01","val","boundAlpha","convertToPercentage","pad2","rgbToHsl","hue2rgb","rgbToHsv","rgbToHex","allow3Char","hex","convertDecimalToHex","convertHexToDecimal","parseIntFromHex","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","goldenrod","gold","gray","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavenderblush","lavender","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","inputToRGB","rgb","named","rgba","hsl","hsla","hsv","hsva","hex8","hex6","hex4","hex3","stringInputToObject","isValidCSSUnit","rgbToRgb","mod","hsvToRgb","hslToRgb","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","hueStep","saturationStep","saturationStep2","brightnessStep1","brightnessStep2","lightColorCount","darkColorCount","darkColorMap","toHsv","toHex","getHue","light","hue","getSaturation","saturation","generate","patterns","pColor","colorString","_hsv","_colorString","theme","darkColorString","rgb1","rgb2","amount","mix","presetPrimaryColors","volcano","geekblue","presetPalettes","presetDarkPalettes","primary","canUseDom","APPEND_ORDER","APPEND_PRIORITY","MARK_KEY","containerCache","getMark","mark","getContainer","option","attachTo","findStyles","injectCSS","csp","prepend","_option$priority","mergedOrder","getOrder","isPrependQueue","styleNode","nonce","existStyle","nodePriority","findExistNode","removeCSS","existNode","updateCSS","cachedRealContainer","root","placeholderStyle","syncRealContainer","_option$csp","_option$csp2","_option$csp3","newNode","getRoot","ele","_ele$getRootNode","getShadowRoot","inShadow","warned","preWarningFns","valid","note","method","warningOnce","noteOnce","preMessage","resetWarned","isIconDefinition","icon","normalizeAttrs","attrs","class","camelCase","rootProps","getSecondaryColor","primaryColor","generateColor","normalizeTwoToneColors","twoToneColor","twoToneColorPalette","secondaryColor","calculated","restProps","svgRef","colors","eleRef","_useContext","prefixCls","mergedStyleStr","shadowRoot","useInsertStyles","getTwoToneColors","setTwoToneColors","setTwoToneColor","_normalizeTwoToneColo2","ReactIcon","Icon","_classNames","spin","rotate","_React$useContext","_React$useContext$pre","rootClassName","classString","iconTabIndex","svgStyle","msTransform","getTwoToneColor","UserOutlined","AntdIcon","UserOutlinedSvg","LockOutlined","LockOutlinedSvg","_iterableToArray","_toConsumableArray","isDOM","SVGElement","shouldUpdate","cacheRef","fillRef","composeRef","refList","useComposeRef","supportRef","nodeOrComponent","_type$prototype","_nodeOrComponent$prot","MotionProvider","_classCallCheck","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","_inherits","_getPrototypeOf","_isNativeReflectConstruct","_assertThisInitialized","_possibleConstructorReturn","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","DomWrapper","destroyRef","ignoreDestroy","STATUS_NONE","STATUS_APPEAR","STATUS_ENTER","STATUS_LEAVE","STEP_NONE","STEP_PREPARE","STEP_START","STEP_ACTIVE","STEP_ACTIVATED","STEP_PREPARED","makePrefixMap","styleProp","vendorPrefixes","domSupport","getVendorPrefixes","_document$createEleme","prefixedEventNames","getVendorPrefixedEventName","prefixMap","stylePropList","internalAnimationEndName","internalTransitionEndName","supportTransition","animationEndName","transitionEndName","getTransitionName","transitionName","transitionType","cacheElementRef","callbackRef","onInternalMotionEnd","removeMotionEvents","raf","caf","num","rafUUID","rafIds","cleanup","wrapperRaf","callRef","leftTimes","realId","FULL_STEP_QUEUE","SIMPLE_STEP_QUEUE","SkipStep","DoStep","step","prepareOnly","_useState2","setStep","_useNextFrame","nextFrameRef","cancelNextFrame","nextFrame","nextFrameId","isCanceled","useNextFrame","_useNextFrame2","STEP_QUEUE","nextStep","doNext","transitionSupport","CSSMotion","_props$visible","visible","_props$removeOnLeave","removeOnLeave","forceRender","motionName","leavedClassName","eventProps","supportMotion","contextMotion","isSupportTransition","motion","wrapperNodeRef","_useStatus","_ref$motionEnter","motionEnter","_ref$motionAppear","motionAppear","_ref$motionLeave","motionLeave","motionDeadline","motionLeaveImmediately","onAppearPrepare","onEnterPrepare","onLeavePrepare","onAppearStart","onEnterStart","onLeaveStart","onAppearActive","onEnterActive","onLeaveActive","onAppearEnd","onEnterEnd","onLeaveEnd","onVisibleChanged","asyncVisible","setAsyncVisible","_useState4","setStatus","_useState6","setStyle","mountedRef","deadlineRef","getDomElement","updateMotionEndStatus","deadline","canEnd","currentActive","patchMotionEvents","useDomMotionEvents","getEventHandlers","targetStatus","eventHandlers","_useStepQueue2","useStepQueue","newStep","onPrepare","_eventHandlers$step","startStep","nextEventHandlers","firstMountChangeRef","mergedStyle","useStatus","_useStatus2","statusStep","statusStyle","mergedVisible","renderedRef","motionChildren","setNodeRef","mergedProps","statusSuffix","motionCls","STATUS_ADD","STATUS_KEEP","STATUS_REMOVE","STATUS_REMOVED","wrapKeyToObject","keyObj","parseKeys","_excluded2","MOTION_PROP_NAMES","OriginCSSMotion","CSSMotionList","keyEntities","removeKey","nextKeyEntities","entity","_onVisibleChanged","onAllRemoved","motionProps","changedVisible","parsedKeyObjects","mixedKeyEntities","prevKeys","currentKeys","currentIndex","currentLen","prevKeyObjects","currentKeyObjects","hit","currentKeyObj","matchKey","diffKeys","prevEntity","getCollapsedHeight","getRealHeight","getCurrentHeight","skipOpacityTransition","rootPrefixCls","_regeneratorRuntime","asyncIterator","define","wrap","Generator","makeInvokeMethod","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","isGeneratorFunction","awrap","async","reverse","rval","complete","finish","delegateYield","ret","keepEmpty","obj1","obj2","shallow","refSet","deepEqual","level","circular","newLevel","HOOK_MARK","warningFunc","getFieldValue","getFieldsValue","getFieldError","getFieldWarning","getFieldsError","isFieldsTouched","isFieldTouched","isFieldValidating","isFieldsValidating","resetFields","setFields","setFieldValue","setFieldsValue","validateFields","submit","getInternalHooks","initEntityValue","registerField","useSubscribe","setInitialValues","destroyForm","setCallbacks","registerWatch","getFields","setValidateMessages","setPreserve","getInitialValue","formatRegExp","convertFieldsError","fields","template","isEmptyValue","isNativeStringType","asyncSerialArray","arrLength","original","AsyncValidationError","_Error","_wrapNativeSuper","asyncMap","objArr","_pending","flattenArr","flattenObjArr","firstFields","objArrKeys","objArrLength","total","results","asyncParallelArray","complementError","rule","fieldValue","fullFields","fullField","deepMerge","urlReg","required$1","messages","pattern$2","types","integer","regexp","getYear","word","includeBoundaries","v4","v6seg","v6","v46Exact","v4exact","v6exact","ip","ipv4","ipv6","getUrlRegex","ENUM$1","rules","whitespace","ruleType","enum","lastIndex","mismatch","boolean","float","dateObject","newMessages","invalid","cloned","Schema","_messages","source_","messages$1","series","getValidationMethod","getType","errorFields","doIt","deep","defaultField","addFullField","schema","errorList","suppressWarning","filledErrors","fieldsSchema","paredFieldsSchema","fieldSchema","fieldSchemaList","errs","finalErrors","asyncValidator","suppressValidatorError","_errors","messageIndex","register","typeTemplate","defaultValidateMessages","_toArray","internalSet","removeIfUndefined","_paths","restPath","createEmpty","merge","sources","internalMerge","parentLoopSet","loopSet","isArr","originValue","AsyncValidator","RawAsyncValidator","replaceMessage","kv","CODE_LOGIC_ERROR","validateRule","_x","_x2","_x3","_x4","_x5","_validateRule","_callee2","messageVariables","cloneRule","originValidator","subRuleField","subResults","fillVariableResult","_context2","ruleIndex","validateMessages","t0","mergedMessage","subValue","validateRules","namePath","validateFirst","summaryPromise","filledRules","currentRule","originValidatorFunc","hasPromise","w1","warningOnly","i1","w2","i2","_callee","_x6","_x7","rulePromises","_x9","_finishOnFirstFailed","finishOnFirstFailed","_x8","_finishOnAllFailed","finishOnAllFailed","_callee3","_context3","errorsList","_callee4","_context4","ruleError","getNamePath","cloneByNamePathList","store","namePathList","newStore","containsNamePath","partialMatch","matchNamePath","subNamePath","nameUnit","defaultGetValueFromEvent","valuePropName","move","moveIndex","toIndex","EMPTY_ERRORS","requireUpdate","prevValue","nextValue","Field","resetCount","preserve","isListField","cancelRegisterFunc","_this$props2","_fieldContext$prefixN","fieldContext","prefixName","_this$props3","_this$props3$rules","onMetaChange","_meta","getMeta","isEqual","metaCache","prevStore","_this$props4","_this$props4$dependen","onReset","curValue","namePathMatch","touched","dirty","validatePromise","warnings","triggerMetaEvent","refresh","reRender","validating","dependency","relatedFields","currentValue","triggerName","_ref2$validateOnly","validateOnly","rootPromise","_this$props5","_this$props5$validate","validateDebounce","filteredRules","getRules","validateTrigger","ruleErrors","_ruleErrors$forEach","nextErrors","nextWarnings","_ref4$errors","isList","prevValidating","validated","_meta2","getOnlyChild","getControlled","isFunction","childList","toChildrenArray","_this$props6","trigger","getValueFromEvent","getValueProps","mergedValidateTrigger","mergedGetValueProps","originTriggerFunc","control","newValue","originTrigger","_this$props7","cancelRegister","returnChildNode","_this$getOnlyChild","FieldContext","listContext","ListContext","wrapperListContext","keyManager","parentPrefixName","getKey","pathName","_ref3$value","onChange","getNewValue","operations","indexSet","keysIndex","valueIndex","_move","listValue","SPLIT","cell","NameMap","kvs","cells","_cell$match2","unit","json","FormStore","forceRootUpdate","formHooked","subscribable","initialValues","_this$prevWithoutPres","nextStore","prevWithoutPreserves","updateStore","getFieldEntities","isMergedPreserve","isPreserve","initValue","callbacks","watchList","allValues","process","fieldEntities","pure","nameList","getFieldsMap","INVALIDATE_NAME_PATH","filterFunc","mergedNameList","mergedFilterFunc","mergedStrict","warningUnhooked","strict","getFieldEntitiesForNamePathList","filteredNameList","_isListField","_isList","getErrors","getWarnings","arg0","arg1","isAllFieldsTouched","shortNamePath","fieldNamePath","isNamePathListTouched","entities","namePathListEntities","testField","records","requiredFieldEntities","_requiredFieldEntitie","skipExist","resetWithFieldInitialValue","notifyObservers","notifyWatch","fieldData","fieldPreserve","mergedPreserve","_prevStore","triggerDependenciesUpdate","updateValue","_namePath","mergedInfo","childrenFields","getDependencyChildrenFields","onValuesChange","triggerOnFieldsChange","rootNamePath","dependencies2fields","dependencyNamePath","fillChildren","isFieldDirty","filedErrors","onFieldsChange","changedFields","_ref7","arg2","provideNameList","promiseList","TMP_SPLIT","validateNamePathList","_ref8","recursive","mergedErrors","mergedWarnings","_ref9","hasError","allPromiseFinish","lastValidatePromise","resultNamePathList","_ref10","returnPromise","outOfDate","triggerNamePathList","onFinishFailed","formRef","formStore","getForm","FormContext","triggerFormChange","triggerFormFinish","registerForm","unregisterForm","FormProvider","onFormChange","onFormFinish","formContext","formsRef","forms","newForms","_ref$component","_ref$validateTrigger","_onFieldsChange","_onFinish","formInstance","useForm","_getInternalHooks","childrenNode","mountRef","childrenRenderProps","prevFieldsRef","targetKeys","sourceValue","targetValue","isSimilar","formContextValue","wrapperNode","onSubmit","_restProps$onReset","useWatchWarning","_args$","_form","isFormInstance","valueStr","valueStrRef","isValidForm","namePathRef","getWatchValue","watchValue","nextValueStr","RefForm","FieldForm","List","useWatch","omit","labelAlign","vertical","itemRef","NoStyleItemContext","providerProps","RcFormProvider","FormItemPrefixContext","FormItemInputContext","NoFormStyle","override","formItemInputContext","newFormItemInputContext","newContext","isFormItemInput","hasFeedback","feedbackIcon","VariantContext","useDebounce","cacheValue","setCacheValue","pathKey","Entity","instanceId","opGet","keyPathStr","valueFn","opUpdate","ATTR_TOKEN","ATTR_MARK","CSS_IN_JS_INSTANCE","createCache","cssinjsInstanceId","styleHash","_style$parentNode","CacheEntity","StyleContext","hashPriority","defaultCache","ThemeCache","cacheCallTimes","derivativeOption","_cache2","_cache3","updateCallTimes","derivative","_cache","_this$internalGet","internalGet","MAX_CACHE_SIZE","MAX_CACHE_OFFSET","_this$keys$reduce","callTimes","targetKey","currentCache","derivatives","_cache$value","deleteByPath","sameDerivativeOption","uuid","Theme","token","cacheThemes","createTheme","derivativeArr","resultCache","RESULT_VALUE","flattenTokenCache","flattenToken","token2key","salt","randomSelectorKey","checkContent","supportSelector","styleStr","handleElement","supportCheck","_getComputedStyle$con","_ele$parentNode","_ele","support","content","canLayer","isClientSide","toStyleStr","tokenKey","styleId","_objectSpread2","attrStr","token2CSSVar","serializeCSSVar","cssVars","hashId","scope","transformToken","themeKey","_config$preserve","_config$ignore","ignore","_config$unitless","cssVar","unitless","useInternalLayoutEffect","firstMountRef","useLayoutUpdateEffect","firstMount","useCompatibleInsertionEffect","renderEffect","effectCleanups","cleanupFlag","useGlobalCache","keyPath","cacheFn","onCacheRemove","onCacheEffect","globalCache","fullPathStr","useEffectCleanupRegister","buildCache","useHMR","prevCache","_ref2$","cacheContent","polyfill","times","_ref6$","EMPTY_OVERRIDE","hashPrefix","tokenKeys","TOKEN_THRESHOLD","cleanTokenStyle","tokenKeyList","cleanableKeyList","removeStyleTags","getComputedToken","originToken","overrideToken","mergedDerivativeToken","getDerivativeToken","TOKEN_PREFIX","useCacheToken","tokens","_option$salt","_option$override","formatToken","compute","mergedToken","memoResult","tokenStr","overrideTokenStr","cssVarStr","cachedToken","_cssVar$key","actualToken","cssVarsStr","_transformToken2","_tokenKey","_themeKey","recordCleanToken","_hashId","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","WebkitLineClamp","COMMENT","RULESET","DECLARATION","IMPORT","KEYFRAMES","LAYER","replacement","indexof","charat","begin","strlen","append","serialize","output","line","column","character","characters","peek","caret","alloc","dealloc","delimit","delimiter","escaping","commenter","identifier","compile","rulesets","pseudo","declarations","atrule","variable","scanning","ampersand","comment","declaration","ruleset","post","sizeof","cachePathMap","ATTR_CACHE_MAP","CSS_FILE_STYLE","fromCSSFile","existPath","div","_item$split2","_inlineMapStyle$paren","inlineMapStyle","prepare","MULTI_VALUE","normalizeStyle","parseStyle","interpolation","parentSelectors","injectHash","layer","_config$transformers","transformers","linters","effectStyle","parseKeyframes","keyframes","getName","_parsedStr","flattenStyleList","flattenList","fullList","originStyle","_keyframe","trans","_trans$visit","visit","isCompoundCSSProperty","_value","appendStyle","cssKey","cssValue","styleName","formatValue","actualValue","subInjectHash","mergedKey","nextRoot","hashClassName","hashSelector","_firstPath$match","fullPath","firstPath","htmlElement","injectSelectorHash","_parseStyle4","_parsedStr2","childEffectStyle","layerCells","layerName","uniqueHash","Empty","STYLE_PREFIX","useStyleRegister","styleFn","clientOnly","_info$order","autoClear","mock","ssrInline","isMergedClientSide","_useGlobalCache","cachePath","_getStyleAndHash","_style","getStyleAndHash","_getStyleAndHash2","inlineCacheStyleStr","styleObj","_parseStyle6","parsedStyle","fromHMR","mergedCSSConfig","nonceStr","effectKey","_useGlobalCache2","cachedStyleStr","cachedTokenKey","cachedStyleId","CSS_VAR_PREFIX","_config$scope","stylePath","_ExtractStyleFns","effectStyles","plain","keyStyleText","sharedAttrs","effectStyleStr","realToken","cssVarKey","Keyframe","noSplit","notSplit","textEllipsis","whiteSpace","textOverflow","resetComponent","needInheritFontFamily","boxSizing","margin","colorText","listStyle","fontFamily","genLinkStyle","colorLink","textDecoration","linkDecoration","outline","cursor","motionDurationSlow","colorLinkHover","colorLinkActive","linkHoverDecoration","linkFocusDecoration","colorTextDisabled","genCommonStyle","componentPrefixCls","rootPrefixSelector","genFocusOutline","lineWidthFocus","colorPrimaryBorder","outlineOffset","genFocusStyle","initMotionCommon","animationDuration","animationFillMode","initMotionCommonLeave","initMotion","inKeyframes","outKeyframes","sameLevelPrefix","animationPlayState","pointerEvents","zoomIn","Keyframes","zoomOut","zoomBigIn","zoomBigOut","zoomUpIn","transformOrigin","zoomUpOut","zoomLeftIn","zoomLeftOut","zoomRightIn","zoomRightOut","zoomDownIn","zoomDownOut","zoomMotion","initZoomMotion","antCls","motionDurationFast","motionDurationMid","animationTimingFunction","motionEaseOutCirc","motionEaseInOutCirc","componentCls","motionEaseInOut","enableStatistic","CSSINJS_STATISTIC","recording","objs","statistic","proxy","flush","Proxy","componentToken","useEvent","fnRef","memoFn","_fnRef$current","hasValue","useMergedState","defaultStateValue","postState","innerValue","setInnerValue","mergedValue","postMergedValue","onChangeFn","setPrevValue","defaultIconPrefixCls","ConfigContext","getPrefixCls","defaultGetPrefixCls","suffixCls","customizePrefixCls","iconPrefixCls","ConfigConsumer","controlHeight","controlHeightSM","controlHeightXS","controlHeightLG","defaultPresetColors","colorPrimary","colorSuccess","colorWarning","colorError","colorInfo","colorTextBase","colorBgBase","fontFamilyCode","lineWidth","lineType","motionUnit","motionBase","motionEaseOut","motionEaseOutBack","motionEaseInBack","motionEaseInQuint","motionEaseOutQuint","borderRadius","sizeUnit","sizeStep","sizePopupArrow","zIndexBase","zIndexPopupBase","opacityImage","wireframe","TinyColor","numberInputToObject","originalInput","roundA","gradientType","isDark","getBrightness","isLight","toRgb","getLuminance","RsRGB","GsRGB","BsRGB","getAlpha","setAlpha","isMonochrome","toHsl","toHsvString","toHslString","toHexString","toHex8","allow4Char","rgbaToHex","toHex8String","toHexShortString","allowShortChar","toRgbString","toPercentageRgb","fmt","toPercentageRgbString","rnd","toName","formatSet","formattedString","hasAlpha","toNumber","lighten","brighten","darken","tint","shade","desaturate","saturate","greyscale","analogous","slices","part","complement","monochromatic","modification","splitcomplement","onBackground","background","triad","polyad","tetrad","increment","radiusBase","radiusLG","radiusSM","radiusXS","radiusOuter","borderRadiusXS","borderRadiusSM","borderRadiusLG","borderRadiusOuter","getAlphaColor","baseColor","getSolidColor","brightness","generateColorPalettes","generateNeutralColorPalettes","bgBaseColor","textBaseColor","colorTextSecondary","colorTextTertiary","colorTextQuaternary","colorFill","colorFillSecondary","colorFillTertiary","colorFillQuaternary","colorBgLayout","colorBgContainer","colorBgElevated","colorBgSpotlight","colorBgBlur","colorBorder","colorBorderSecondary","getLineHeight","fontSizePairs","fontSizes","baseSize","intSize","genFontSizes","pair","lineHeights","fontSizeMD","fontSizeSM","fontSizeLG","lineHeightSM","lineHeightLG","fontSizeXL","fontSizeHeading1","fontSizeHeading2","fontSizeHeading3","fontSizeHeading4","fontSizeHeading5","fontHeight","fontHeightLG","fontHeightSM","lineHeightHeading1","lineHeightHeading2","lineHeightHeading3","lineHeightHeading4","lineHeightHeading5","defaultTheme","colorPalettes","colorKey","cur","seed","colorSuccessBase","colorWarningBase","colorErrorBase","colorInfoBase","colorPrimaryBase","primaryColors","successColors","warningColors","errorColors","infoColors","neutralColors","linkColors","colorPrimaryBg","colorPrimaryBgHover","colorPrimaryBorderHover","colorPrimaryHover","colorPrimaryActive","colorPrimaryTextHover","colorPrimaryText","colorPrimaryTextActive","colorSuccessBg","colorSuccessBgHover","colorSuccessBorder","colorSuccessBorderHover","colorSuccessHover","colorSuccessActive","colorSuccessTextHover","colorSuccessText","colorSuccessTextActive","colorErrorBg","colorErrorBgHover","colorErrorBorder","colorErrorBorderHover","colorErrorHover","colorErrorActive","colorErrorTextHover","colorErrorText","colorErrorTextActive","colorWarningBg","colorWarningBgHover","colorWarningBorder","colorWarningBorderHover","colorWarningHover","colorWarningActive","colorWarningTextHover","colorWarningText","colorWarningTextActive","colorInfoBg","colorInfoBgHover","colorInfoBorder","colorInfoBorderHover","colorInfoHover","colorInfoActive","colorInfoTextHover","colorInfoText","colorInfoTextActive","colorBgMask","colorWhite","genColorMapToken","genFontMapToken","sizeXXL","sizeXL","sizeLG","sizeMD","sizeMS","sizeSM","sizeXS","sizeXXS","genSizeMapToken","genControlHeight","lineWidthBold","genRadius","genCommonMapToken","defaultConfig","defaultSeedToken","hashed","DesignTokenContext","isStableColor","frontColor","fR","fG","fB","originAlpha","bR","bG","bB","fA","__rest","derivativeToken","restToken","overrideTokens","seedToken","screenXL","screenXXL","fastDuration","colorFillContent","colorFillContentHover","colorFillAlter","colorBgContainerDisabled","colorBorderBg","colorSplit","colorTextPlaceholder","colorTextHeading","colorTextLabel","colorTextDescription","colorTextLightSolid","colorHighlight","colorBgTextHover","colorBgTextActive","colorIcon","colorIconHover","colorErrorOutline","colorWarningOutline","fontSizeIcon","controlOutlineWidth","controlInteractiveSize","controlItemBgHover","controlItemBgActive","controlItemBgActiveHover","controlItemBgActiveDisabled","controlTmpOutline","controlOutline","fontWeightStrong","opacityLoading","controlPaddingHorizontal","controlPaddingHorizontalSM","paddingXXS","paddingXS","paddingSM","paddingMD","paddingLG","paddingXL","paddingContentHorizontalLG","paddingContentVerticalLG","paddingContentHorizontal","paddingContentVertical","paddingContentHorizontalSM","paddingContentVerticalSM","marginXXS","marginXS","marginSM","marginMD","marginLG","marginXL","marginXXL","boxShadow","boxShadowSecondary","boxShadowTertiary","screenXS","screenXSMin","screenXSMax","screenSM","screenSMMin","screenSMMax","screenMD","screenMDMin","screenMDMax","screenLG","screenLGMin","screenLGMax","screenXLMin","screenXLMax","screenXXLMin","boxShadowPopoverArrow","boxShadowCard","boxShadowDrawerRight","boxShadowDrawerLeft","boxShadowDrawerUp","boxShadowDrawerDown","boxShadowTabsOverflowLeft","boxShadowTabsOverflowRight","boxShadowTabsOverflowTop","boxShadowTabsOverflowBottom","components","componentTheme","componentTokens","mergedComponentToken","useToken","rootDesignToken","mergedTheme","AbstractCalculator","NumCalculator","_AbstractCalculator","_callSuper","CALC_UNIT","CSSCalculator","getResult","lowPriority","force","cssUnit","Calculator","useResetIconStyle","alignItems","textAlign","textTransform","verticalAlign","textRendering","getDefaultComponentToken","getDefaultToken","mergeToken","getComponentToken","defaultToken","customToken","deprecatedTokens","oldTokenKey","newTokenKey","genComponentStyleHook","concatComponent","calc","genCalc","genMaxMin","sharedConfig","wrapSSR","injectStyle","proxyToken","statisticToken","defaultComponentToken","getCompVarPrefix","iconCls","styleInterpolation","resetStyle","genSubStyleComponent","useStyle","genStyleHooks","useCSSVar","genCSSVarRegister","prefixToken","originUnitless","compUnitless","CSSVarRegister","rootCls","useCSSVarRegister","wrapCSSVar","cssVarCls","helpCls","helpItemCls","resetForm","legend","marginBottom","border","borderBottom","paddingTop","genFormSize","formItemCls","minHeight","genFormStyle","paddingInlineEnd","genFormItemStyle","labelRequiredMarkColor","labelColor","labelFontSize","labelHeight","labelColonMarginInlineStart","labelColonMarginInlineEnd","itemMarginBottom","marginInlineEnd","marginInlineStart","writingMode","marginBlock","flexDirection","genHorizontalStyle","genInlineStyle","flexWrap","makeVerticalLayoutLabel","verticalLabelPadding","verticalLabelMargin","makeVerticalLayout","genVerticalStyle","prepareToken","formToken","genFormValidateMotionStyle","genCollapseMotion","EMPTY_LIST","toErrorEntity","errorStatus","help","helpStatus","fieldId","baseClassName","useCSSVarCls","collapseMotion","initCollapseMotion","debounceErrors","debounceWarnings","fullKeyList","helpProps","holderProps","holderClassName","holderStyle","itemProps","itemClassName","itemStyle","DisabledContext","DisabledContextProvider","originDisabled","SizeContext","SizeContextProvider","originSize","customSize","frameElement","parentElement","scrollMode","block","inline","skipOverflowHiddenElements","scrollingElement","scrollX","scrollY","scrollMarginTop","scrollMarginRight","scrollMarginBottom","scrollMarginLeft","borderLeftWidth","borderTopWidth","borderRightWidth","borderBottomWidth","formItemNameBlackList","defaultItemNamePrefixCls","candidate","getFieldId","formName","mergedId","getStatus","defaultValidateStatus","validateStatus","toNamePathStr","rcForm","useRcForm","itemsRef","wrapForm","__INTERNAL__","namePathStr","scrollToField","getElementById","isConnected","behavior","scrollIntoView","getFieldInstance","InternalForm","contextDisabled","contextForm","colon","labelWrap","labelCol","wrapperCol","hideRequiredMark","layout","scrollToFirstError","requiredMark","feedbackIcons","restFormProps","mergedSize","useSize","contextValidateMessages","ValidateMessagesContext","mergedRequiredMark","mergedColon","formClassName","defaultScrollToFirstError","replaceElement","WarningContext","devUseWarning","noopWarning","deprecated","useFormItemStatus","getBBox","_getBBox","_element$getBoundingC","_width","_height","responsiveArray","getResponsiveMap","validateBreakpoints","indexableToken","revBreakpoints","breakpointUpper","screenMin","screenMax","nextBreakpointUpperMin","nextScreenMin","useResponsiveObserver","responsiveMap","subscribers","subUid","screens","matchHandlers","pointMap","subscribe","unsubscribe","paramToken","unregister","matchMediaQuery","genGridColStyle","genGridStyle","sizeCls","genLoopGridColumnsStyle","gridColumns","gridColumnsStyle","insetInlineStart","insetInlineEnd","useRowStyle","flexFlow","justifyContent","prepareRowComponentToken","useColStyle","gridToken","gridMediaSizesMap","genGridMediaStyle","screenSize","pre","prepareColComponentToken","useMergePropByScreen","oriProp","setProp","calcMergeAlignOrJustify","curVal","Row","others","setScreens","curScreens","setCurScreens","mergeAlign","mergeJustify","gutterRef","responsiveObserver","currentGutter","gutters","getGutter","rowStyle","horizontalGutter","marginLeft","marginRight","rowGap","gutterH","gutterV","rowContext","RowContext","sizes","Col","span","pull","sizeClassObj","sizeProps","propSize","paddingLeft","paddingRight","parseFlex","genFallbackStyle","_internalItemRender","formItemRender","extra","onErrorVisibleChanged","mergedWrapperCol","subFormContext","inputDom","formItemContext","errorListDom","ErrorList","extraProps","extraDom","dom","FallbackCmp","QuestionCircleOutlined","QuestionCircleOutlinedSvg","items_per_page","jump_to","jump_to_confirm","page","prev_page","next_page","prev_5","next_5","prev_3","next_3","page_size","today","backToToday","timeSelect","dateSelect","weekSelect","monthSelect","yearSelect","decadeSelect","yearFormat","dateFormat","dayFormat","dateTimeFormat","monthBeforeYear","previousMonth","nextMonth","previousYear","nextYear","previousDecade","nextDecade","previousCentury","nextCentury","placeholder","rangePlaceholder","lang","yearPlaceholder","quarterPlaceholder","monthPlaceholder","weekPlaceholder","rangeYearPlaceholder","rangeQuarterPlaceholder","rangeMonthPlaceholder","rangeWeekPlaceholder","CalendarLocale","timePickerLocale","TimePickerLocale","Pagination","DatePicker","TimePicker","Calendar","Table","filterTitle","filterConfirm","filterReset","filterEmptyText","filterCheckall","filterSearchPlaceholder","emptyText","selectAll","selectInvert","selectNone","selectionAll","sortTitle","collapse","triggerDesc","triggerAsc","cancelSort","Tour","Next","Previous","Finish","okText","cancelText","justOkText","Popconfirm","Transfer","titles","searchPlaceholder","itemUnit","itemsUnit","selectCurrent","removeCurrent","removeAll","Upload","uploading","removeFile","uploadError","previewFile","downloadFile","description","edit","copy","copied","Form","optional","preview","QRCode","expired","scanned","ColorPicker","presetEmpty","useLocale","defaultLocale","fullLocale","LocaleContext","getLocale","defaultLocaleData","localeFromContext","localeCode","exist","Popup","overlayInnerStyle","cached","getScrollBarSize","fresh","inner","outer","outerStyle","widthContained","widthScroll","ensureSize","getTargetScrollBarSize","UNIQUE_ID","useScrollLocker","lock","mergedLock","scrollbarSize","isOverflow","getPortalContainer","open","autoLock","_props$autoDestroy","debug","autoDestroy","shouldRender","setShouldRender","mergedRender","_React$useState4","innerContainer","setInnerContainer","customizeContainer","_useDom","appendedRef","queueCreate","OrderContext","setQueue","mergedQueueCreate","appendFn","_ele$parentElement","useDom","_useDom2","defaultContainer","mergedContainer","nextInline","renderInline","reffedChildren","CollectionContext","MapShim","entry","class_1","__entries__","isBrowser","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","leadingCall","trailingCall","lastCallTime","resolvePending","timeoutCallback","addObserver","observer","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","observe","characterData","subtree","disconnect","getInstance","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","contentRect","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","ResizeObserver","elementListeners","resizeObserver","_elementListeners$get","SingleObserver","elementRef","wrapperRef","onCollectionResize","isRenderProps","mergedChildren","sizeRef","canRef","getDom","_elementRef$current","nativeElement","propsRef","onInternalResize","_propsRef$current","_target$getBoundingCl","fixedWidth","fixedHeight","mergedOffsetWidth","mergedOffsetHeight","sizeInfo","currentElement","RefResizeObserver","Collection","onBatchResize","resizeIdRef","resizeInfosRef","currentId","useOriginId","reactId","innerId","setInnerId","nextId","agent","vendor","opera","Arrow","arrowPos","_arrowPos$x","_arrowPos$y","arrowRef","alignStyle","autoArrow","popupPoints","targetPoints","popupTB","popupLR","targetTB","targetLR","Mask","mask","PopupContent","popup","keepDom","maskMotion","getPopupContainer","portal","onPointerEnter","ready","offsetX","offsetY","offsetR","offsetB","onAlign","stretch","targetWidth","targetHeight","childNode","isNodeVisible","getPopupContainerNeedParams","setShow","AUTO","offsetStyle","_experimental","dynamicInset","alignRight","alignBottom","miscStyle","resizeObserverRef","nextVisible","_motion$onVisibleChan","motionRef","motionClassName","motionStyle","cls","TriggerWrapper","getTriggerDOMNode","canUseRef","isPointsEq","a1","a2","getMotion","getWin","collectScroller","scrollerList","scrollStyle","_getWin$getComputedSt","toNum","getPxValue","getVisibleArea","initArea","visibleArea","HTMLBodyElement","HTMLHtmlElement","_getWin$getComputedSt2","overflowClipMargin","eleRect","eleOutHeight","eleInnerHeight","eleOutWidth","eleInnerWidth","borderTopNum","borderBottomNum","borderLeftNum","borderRightNum","eleScrollWidth","eleScrollHeight","scaledBorderTopWidth","scaledBorderBottomWidth","scaledBorderLeftWidth","scaledBorderRightWidth","clipMarginWidth","clipMarginHeight","clipNum","eleLeft","eleTop","eleRight","eleBottom","getUnitOffset","offsetStr","getNumberOffset","splitPoints","getAlignPoint","topBottom","leftRight","reversePoints","reverseMap","PortalComponent","Trigger","_props$prefixCls","_props$action","showAction","hideAction","popupVisible","defaultPopupVisible","onPopupVisibleChange","afterPopupVisibleChange","mouseEnterDelay","_props$mouseLeaveDela","mouseLeaveDelay","focusDelay","blurDelay","_props$maskClosable","maskClosable","destroyPopupOnHide","popupClassName","popupStyle","popupPlacement","_props$builtinPlaceme","builtinPlacements","popupAlign","getPopupClassNameFromAlign","alignPoint","onPopupClick","onPopupAlign","popupMotion","popupTransitionName","popupAnimation","maskTransitionName","maskAnimation","mergedAutoDestroy","setMobile","isMobile","subPopupElements","parentContext","TriggerContext","registerSubPopup","subPopupEle","popupEle","setPopupEle","setPopupRef","_React$useState6","targetEle","setTargetEle","externalForwardRef","setTargetRef","originChildProps","cloneProps","inPopupOrChild","_getShadowRoot","_getShadowRoot2","childDOM","mergePopupMotion","mergeMaskMotion","_React$useState8","internalOpen","setInternalOpen","mergedOpen","setMergedOpen","nextOpen","openRef","lastTriggerRef","internalTriggerOpen","_lastTriggerRef$curre","delayRef","clearDelay","triggerOpen","_React$useState10","inMotion","setInMotion","_React$useState12","motionPrepareResolve","setMotionPrepareResolve","_React$useState14","mousePos","setMousePos","setMousePosByEvent","_useAlign","arrowX","arrowY","offsetInfo","setOffsetInfo","alignCountRef","prevFlipRef","_popupElement$parentE","_popupElement$parentE2","targetRect","popupElement","_win$getComputedStyle","popupPosition","originLeft","originTop","originRight","originBottom","originOverflow","placementInfo","placeholderElement","popupRect","_doc$documentElement","popupHeight","popupWidth","visibleRegion","scrollRegion","htmlRegion","VISIBLE","VISIBLE_FIRST","isVisibleFirst","scrollRegionArea","visibleRegionArea","adjustCheckVisibleArea","popupMirrorRect","_scaleX","_scaleY","isVisible","targetOffset","_getNumberOffset2","popupOffsetX","popupOffsetY","_getNumberOffset4","targetOffsetX","targetOffsetY","popupPoint","targetAlignPoint","popupAlignPoint","nextAlignInfo","nextOffsetX","nextOffsetY","getIntersectionVisibleArea","visibleL","visibleT","visibleR","visibleB","nextPopupY","nextPopupBottom","nextPopupX","nextPopupRight","originIntersectionVisibleArea","originIntersectionRecommendArea","targetAlignPointTL","popupAlignPointTL","targetAlignPointBR","popupAlignPointBR","adjustX","adjustY","shiftX","shiftY","supportAdjust","syncNextPopupPosition","needAdjustY","sameTB","bt","tmpNextOffsetY","newVisibleArea","newVisibleRecommendArea","_tmpNextOffsetY","_newVisibleArea","_newVisibleRecommendArea","needAdjustX","sameLR","tmpNextOffsetX","_newVisibleArea2","_newVisibleRecommendArea2","lr","_tmpNextOffsetX","_newVisibleArea3","_newVisibleRecommendArea3","numShiftX","numShiftY","popupLeft","popupRight","popupTop","popupBottom","targetLeft","targetRight","targetTop","targetBottom","nextArrowX","nextArrowY","offsetX4Right","offsetY4Bottom","resetReady","ori","useAlign","_useAlign2","alignInfo","_useAction","mergedShowAction","mergedHideAction","showActionSet","hideActionSet","useAction","_useAction2","showActions","hideActions","clickToShow","clickToHide","triggerAlign","onScroll","targetScrollList","popupScrollList","mergedList","notifyScroll","scroller","alignedClassName","isAlignPoint","_builtinPlacements$pl","getAlignPopupClassName","forceAlign","_React$useState16","setTargetWidth","_React$useState18","setTargetHeight","syncTargetSize","wrapperAction","preEvent","_originChildProps$eve","_originChildProps$onC","lockRef","genClickEvents","clickInside","_genClickEvents2","onWinMouseDown","onWinClick","_genClickEvents4","onShadowMouseDown","onShadowClick","targetShadowRoot","useWinClick","onPopupMouseEnter","onPopupMouseLeave","hoverToShow","hoverToHide","_originChildProps$onM","onContextMenu","_originChildProps$onC2","_len3","_key3","mergedChildrenProps","passedProps","_mergedChildrenProps$","_len4","_key4","triggerNode","innerArrow","autoAdjustOverflowTopBottom","autoAdjustOverflowLeftRight","topLeft","leftTop","topRight","rightTop","bottomRight","rightBottom","bottomLeft","leftBottom","Tooltip","overlayClassName","_props$trigger","_props$mouseEnterDela","overlayStyle","onVisibleChange","afterVisibleChange","_props$placement","_props$align","_props$destroyTooltip","destroyTooltipOnHide","defaultVisible","getTooltipContainer","overlay","arrowContent","_props$showArrow","showArrow","triggerRef","CONTAINER_OFFSET","CONTAINER_MAX_OFFSET","containerBaseZIndexOffset","Drawer","Popover","consumerBaseZIndexOffset","SelectLike","ImagePreview","useZIndex","componentType","customZIndex","parentZIndex","zIndexContext","isContainer","isContainerType","getArrowToken","unitWidth","ay","bx","by","dx","dy","ex","ey","fx","fy","shadowWidth","polygonOffset","arrowPolygon","arrowShadowWidth","arrowPath","genRoundedArrow","bgColor","equal","clipPath","_multi_value_","insetInline","_skip_check_","MAX_VERTICAL_CONTENT_RADIUS","getArrowOffsetToken","contentRadius","limitVerticalRadius","arrowOffset","arrowOffsetHorizontal","arrowOffsetVertical","isInject","getArrowStyle","colorBg","arrowDistance","arrowPlacement","PlacementAlignMap","ArrowCenterPlacementAlignMap","DisableAutoArrowList","getPlacements","arrowWidth","autoAdjustOverflow","arrowPointAtCenter","visibleFirst","halfArrowWidth","placementMap","baseOverflow","mergedOverflow","getOverflowOptions","genSpaceStyle","genSpaceGapStyle","spaceGapSmallSize","spaceGapMiddleSize","spaceGapLargeSize","columnGap","spaceToken","genSpaceCompactStyle","SpaceCompactItemContext","useCompactItemContext","compactItemContext","compactItemClassnames","compactDirection","isFirstItem","isLastItem","separator","compactSize","NoCompactStyle","CompactItem","otherProps","directionConfig","clx","PresetColors","genPresetColor","genCss","lightColor","lightBorderColor","darkColor","textColor","genTooltipStyle","tooltipMaxWidth","tooltipColor","tooltipBg","tooltipBorderRadius","zIndexPopup","wordWrap","prepareComponentToken","TooltipToken","inverseColors","parseColor","isInternalColor","isPresetColor","arrowStyle","arrowContentStyle","formattedOverlayInnerStyle","openClassName","afterOpenChange","mergedShowArrow","getContextPopupContainer","tooltipRef","forcePopupAlign","setOpen","defaultOpen","noTitle","tooltipPlacements","mergedArrowPointAtCenter","pointAtCenter","memoOverlay","memoOverlayWrapper","injectFromPopover","tempOpen","childCls","customOverlayClassName","contextZIndex","RcTooltip","vis","onOpenChange","_InternalPanelDoNotUseOrYouWillBeFired","PurePanel","htmlFor","tooltip","formLocale","contextLabelAlign","contextLabelCol","contextColon","mergedLabelCol","mergedLabelAlign","labelClsBasic","labelColClassName","labelChildren","computedColon","tooltipProps","toTooltipProps","restTooltipProps","tooltipNode","isOptionalMark","isRenderMark","labelClassName","CheckCircleFilled","CheckCircleFilledSvg","CloseCircleFilled","CloseCircleFilledSvg","ExclamationCircleFilled","ExclamationCircleFilledSvg","LoadingOutlined","LoadingOutlinedSvg","iconMap","success","StatusProvider","noStyle","itemPrefixCls","mergedValidateStatus","parentIsFormItemInput","parentStatus","parentHasFeedback","parentFeedbackIcon","formItemStatusContext","customIcons","icons","customIconNode","IconNode","ItemHolder","hidden","onSubItemMetaChange","hasHelp","isOnScreen","setMarginBottom","isDebounce","getValidateState","FormItemLabel","FormItemInput","MemoInput","keysA","keysB","propValueA","propValueB","isSimilarControl","FormItem","useChildren","notifyParentMetaChange","contextValidateTrigger","hasName","fieldKeyPathRef","subFieldErrors","setSubFieldErrors","frameRef","batchRef","useFrameState","setMeta","subMeta","uniqueKeys","prevSubFieldErrors","mergedNameKey","warningList","subFieldError","getItemRef","childrenRef","nameStr","originRef","useItemRef","renderLayout","baseChildren","variables","nextMeta","keyInfo","fieldKey","renderMeta","mergedName","ruleEntity","mergedControl","describedbyArr","_a2","_c2","watchingChildProps","operation","useFormInstance","compactItemBorder","parentCls","focusElCls","borderElCls","childCombinator","hoverEffects","mul","compactItemBorderRadius","borderStartEndRadius","borderEndEndRadius","borderStartStartRadius","borderEndStartRadius","genCompactItemStyle","compactCls","initInputToken","inputAffixPadding","initComponentToken","paddingBlock","paddingBlockSM","paddingBlockLG","paddingInline","paddingInlineSM","paddingInlineLG","addonBg","activeBorderColor","hoverBorderColor","activeShadow","errorActiveShadow","warningActiveShadow","hoverBg","activeBg","inputFontSize","inputFontSizeLG","inputFontSizeSM","genHoverStyle","borderColor","genDisabledStyle","genBaseOutlinedStyle","borderWidth","borderStyle","genOutlinedStatusStyle","affixColor","genOutlinedStyle","extraStyles","genOutlinedGroupStatusStyle","addonBorderColor","addonColor","genOutlinedGroupStyle","borderInlineEnd","borderInlineStart","genBorderlessStyle","genBaseFilledStyle","inputColor","genFilledStatusStyle","genFilledStyle","genFilledGroupStatusStyle","genFilledGroupStyle","borderTop","genPlaceholderStyle","userSelect","genInputLargeStyle","genInputSmallStyle","genBasicInputStyle","genInputGroupStyle","borderCollapse","borderSpacing","borderInlineEndWidth","genInputStyle","colorSmallPadding","sub","paddingBottom","genAllowClearStyle","genAffixStyle","genGroupStyle","genSearchInputStyle","searchPrefixCls","borderInlineStartColor","insetBlockStart","insetBlockEnd","genTextAreaStyle","textareaPrefixCls","marginInline","genRangeStyle","inputToken","inputPrefixCls","compact","groupFormItemContext","onFocus","onBlur","resolveOnChange","_currentTarget","_element$props","_element$props2","inputEl","inputElement","addonBefore","addonAfter","readOnly","focused","triggerFocus","allowClear","handleReset","dataAttrs","AffixWrapperComponent","affixWrapper","GroupWrapperComponent","groupWrapper","WrapperComponent","wrapper","GroupAddonComponent","groupAddon","hasAffix","hasPrefixSuffix","clsx","_clsx2","clearIcon","_clsx","needClear","clearIconCls","iconNode","affixWrapperPrefixCls","affixWrapperCls","suffixNode","_containerRef$current","hasAddon","wrapperCls","addonCls","groupWrapperCls","mergedWrapperClassName","mergedGroupClassName","useCount","showCount","mergedConfig","formatter","showFormatter","Input","autoComplete","onPressEnter","htmlSize","maxLength","_props$type","_onCompositionStart","onCompositionStart","onCompositionEnd","setFocused","compositionRef","inputRef","setSelectionRange","_useMergedState2","selection","setSelection","countConfig","mergedMax","valueLength","isOutOfRange","blur","_inputRef$current","_inputRef$current2","select","_inputRef$current3","triggerChange","_inputRef$current4","_inputRef$current5","cutValue","exceedFormatter","_inputRef$current6","onInternalChange","onInternalCompositionEnd","handleFocus","handleBlur","outOfRangeCls","BaseInput","hasMaxLength","dataCount","getSuffix","getInputElement","getStatusClassNames","getMergedStatus","contextStatus","customStatus","useRemovePasswordTimeout","triggerOnMount","removePasswordTimeoutRef","removePasswordTimeout","hasAttribute","timer","Variants","legacyBordered","ctxVariant","mergedVariant","mergedAllowClear","bordered","customDisabled","customVariant","mergedDisabled","mergedStatus","inputHasPrefixSuffix","getAllowClear","enableVariantCls","useVariant","RcInput","EyeInvisibleOutlined","EyeInvisibleOutlinedSvg","EyeOutlined","EyeOutlinedSvg","defaultIconRender","actionMap","hover","Password","visibilityToggle","visibilityControlled","setVisible","customizeInputPrefixCls","suffixIcon","iconRender","iconTrigger","iconProps","getIcon","inputClassName","omittedProps","SearchOutlined","SearchOutlinedSvg","genWaveStyle","fullClone","reactRender","toggleWarning","skip","MARK","modernRender","legacyRender","modernUnmount","_modernUnmount","_container$MARK","legacyUnmount","_unmount","isValidWaveColor","isNotGrey","TARGET_CLS","validateNum","WaveEffect","divRef","setWaveColor","setBorderRadius","setLeft","setTop","setWidth","setHeight","setEnabled","waveStyle","radius","syncPos","nodeStyle","borderTopColor","getTargetWaveColor","isStatic","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","isSmallComponent","holder","showWaveEffect","showWave","wave","targetNode","showEffect","rafId","useWave","GroupSizeContext","rxTwoCNChar","isTwoCNChar","isString","isUnBorderedButtonType","spaceChildren","needInserted","isPrevChildPure","isCurrentChildPure","SPACE","splitCNCharsBySpace","IconWrapper","iconWrapperCls","InnerLoadingIcon","iconClassName","mergedIconCls","getCollapsedWidth","getRealWidth","loading","existIcon","genButtonBorderStyle","buttonTypeCls","borderInlineEndColor","groupBorderColor","onlyIconSize","buttonPaddingHorizontal","buttonPaddingVertical","buttonIconOnlyFontSize","_f","contentFontSize","contentFontSizeSM","contentFontSizeLG","contentLineHeight","contentLineHeightSM","contentLineHeightLG","defaultShadow","primaryShadow","dangerShadow","dangerColor","borderColorDisabled","defaultGhostColor","ghostBg","defaultGhostBorderColor","onlyIconSizeSM","onlyIconSizeLG","linkHoverBg","textHoverBg","defaultColor","defaultBg","defaultBorderColor","defaultBorderColorDisabled","genSharedButtonStyle","backgroundImage","letterSpacing","genHoverActiveButtonStyle","btnCls","hoverStyle","activeStyle","genCircleButtonStyle","paddingInlineStart","genRoundButtonStyle","genGhostButtonStyle","textColorDisabled","genSolidDisabledButtonStyle","genSolidButtonStyle","genPureDisabledButtonStyle","genDefaultButtonStyle","genPrimaryButtonStyle","genDashedButtonStyle","genLinkButtonStyle","genTextButtonStyle","genTypeButtonStyle","genButtonStyle","iconOnlyCls","genSizeBaseButtonStyle","baseToken","genSizeSmallButtonStyle","smallToken","genSizeLargeButtonStyle","largeToken","genBlockButtonStyle","buttonToken","compactItemVerticalBorder","genCompactItemVerticalStyle","genButtonCompactStyle","InternalButton","danger","customizeSize","ghost","htmlType","customClassNames","customStyle","autoInsertSpaceInButton","groupSize","loadingOrDelay","getLoadingConfig","innerLoading","setLoading","hasTwoCNChar","setHasTwoCNChar","buttonRef","delayTimer","buttonText","autoInsertSpace","sizeClassNameMap","large","small","middle","sizeFullName","ctxSize","iconType","linkButtonRestProps","fullStyle","iconClasses","iconStyle","LoadingIcon","kids","buttonNode","CompactCmp","Wave","Group","__ANT_BUTTON","Search","enterButton","onSearch","customOnSearch","customOnChange","composedRef","searchIcon","btnClassName","enterButtonAsElement","isAntdButton","hiddenTextarea","SIZING_STYLE","computedStyleCache","calculateAutoSizeStyle","uiTextNode","useCache","minRows","maxRows","_calculateNodeStyling","paddingSize","borderSize","nodeInfo","sizingStyle","calculateNodeStyling","maxHeight","singleRowHeight","ResizableTextArea","autoSize","onInternalAutoSize","setMergedValue","textareaRef","textArea","_React$useMemo2","needAutoSize","resizeState","setResizeState","autoSizeStyle","setAutoSizeStyle","startResize","textareaStyles","_textareaRef$current","fixFirefoxAutoScroll","resizeRafRef","cleanRaf","mergedAutoSizeStyle","TextArea","_countConfig$max","customValue","_ref$prefixCls","textareaResized","setTextareaResized","resizableTextAreaRef","getTextArea","_resizableTextAreaRef","resizableTextArea","_getTextArea","isPureTextArea","textarea","_getTextArea2","innerRef","RcTextArea","InternalInput","Checkbox","_props$defaultChecked","inputProps","rawValue","setRawValue","genCheckboxStyle","checkboxCls","alignSelf","inset","checkboxSize","getStyle","checkboxToken","InternalCheckbox","indeterminate","skipGroup","checkbox","checkboxGroup","GroupContext","registerValue","cancelValue","checkboxProps","toggleOption","checkboxClass","ariaChecked","RcCheckbox","CheckboxGroup","registeredValues","setRegisteredValues","memoOptions","groupPrefixCls","domProps","optionIndex","opt","prevValues","__ANT_CHECKBOX","Signin","setEmail","remember","setItem","toast","ToastContainer","IoIosArrowBack","isPresetSize","isValidGapNumber","SpaceContext","latestIndex","SpaceContextProvider","Space","space","horizontalSize","verticalSize","isPresetVerticalSize","isPresetHorizontalSize","isValidVerticalSize","isValidHorizontalSize","mergedAlign","spaceContext","gapStyle","CompoundedSpace","Compact","dayjs","advancedFormat","weekOfYear","proto","oldFormat","formatStr","localeMap","bn_BD","by_BY","en_GB","en_US","fr_BE","fr_CA","hy_AM","kmr_IQ","nl_BE","pt_BR","zh_CN","zh_HK","zh_TW","parseLocale","parseNoMatchNotice","generateConfig","getNow","getFixedDate","getEndDate","getWeekDay","getHour","hour","getMinute","minute","getSecond","second","addYear","addMonth","addDate","setYear","setMonth","setDate","setHour","setMinute","setSecond","date1","date2","isValidate","getWeekFirstDay","getWeekFirstDate","getWeek","getShortWeekDays","getShortMonths","_format","localeStr","formatText","weekStr","firstWeek","nextWeek","runtimeLocale","localeList","generateLocale","_ANT_MARK__","clearLocale","newLocale","cloneLocale","changeConfirmLocale","getMemoizedContextValue","dynamicStyleMark","registerTheme","globalPrefixCls","formatColor","fillColor","colorVal","primaryActiveColor","successColor","warningColor","errorColor","infoColor","cssList","componentDisabled","componentSize","useEmptyId","MotionWrapper","needWrapMotionProviderRef","PASSED_PROPS","globalIconPrefixCls","globalTheme","globalHolderRender","getGlobalPrefixCls","ProviderChildren","customCsp","alert","anchor","virtual","dropdownMatchSelectWidth","popupMatchSelectWidth","popupOverflow","legacyLocale","customIconPrefixCls","segmented","calendar","carousel","cascader","typography","descriptions","divider","drawer","skeleton","steps","mentions","progress","slider","breadcrumb","menu","pagination","empty","badge","radio","rate","switch","SWITCH","transfer","avatar","card","tabs","timeline","timePicker","upload","notification","colorPicker","datePicker","rangePicker","dropdown","warningConfig","mergedPrefixCls","parentTheme","themeConfig","parentThemeConfig","inherit","useThemeKey","mergedComponents","mergedCssVar","prevTheme","nextTheme","useTheme","baseConfig","memoedConfig","prevConfig","currentConfig","memoIconContextValue","PropWarning","LocaleProvider","memoTheme","algorithm","themeObj","parsedComponents","parsedToken","ConfigProvider","antLocale","holderRender","isLegacyTheme","useConfig","genPurePanel","defaultPrefixCls","getDropdownCls","postProps","withPureRenderTheme","holderRef","setPopupHeight","setPopupWidth","interval","dropdownCls","CalendarOutlined","CalendarOutlinedSvg","ClockCircleOutlined","ClockCircleOutlinedSvg","SwapRightOutlined","SwapRightOutlinedSvg","propList","ariaPrefix","dataPrefix","pickAttrs","ariaOnly","aria","DECADE_UNIT_DIFF","DECADE_DISTANCE_COUNT","isNullEqual","value1","value2","isSameYear","year1","year2","getQuarter","isSameQuarter","quarter1","quarter2","isSameMonth","month1","month2","isSameDate","isSameWeek","time1","time2","isSameTime","isInRange","startDate","endDate","getClosingViewDate","viewDate","picker","formatList","getCellDateDisabled","cellDate","disabledDate","getDisabledFromRange","currentMode","_date","startMonth","startYear","useValueTexts","_useMemo","firstValueText","fullValueTexts","shallowEqual","_useMemo2","texts","useHoverValue","valueText","internalSetValue","immediately","firstText","onLeave","KeyCode","MAC_ENTER","BACKSPACE","TAB","NUM_CENTER","ENTER","SHIFT","CTRL","ALT","PAUSE","CAPS_LOCK","ESC","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","PRINT_SCREEN","INSERT","DELETE","ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","QUESTION_MARK","META","WIN_KEY_RIGHT","CONTEXT_MENU","NUM_ZERO","NUM_ONE","NUM_TWO","NUM_THREE","NUM_FOUR","NUM_FIVE","NUM_SIX","NUM_SEVEN","NUM_EIGHT","NUM_NINE","NUM_MULTIPLY","NUM_PLUS","NUM_MINUS","NUM_PERIOD","NUM_DIVISION","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","NUMLOCK","SEMICOLON","DASH","EQUALS","COMMA","PERIOD","SLASH","APOSTROPHE","SINGLE_QUOTE","OPEN_SQUARE_BRACKET","BACKSLASH","CLOSE_SQUARE_BRACKET","WIN_KEY","MAC_FF_META","WIN_IME","isTextModifyingKeyEvent","isCharacterKey","scrollIds","scrollTo","perTick","createKeyDownHandler","onLeftRight","onCtrlLeftRight","onUpDown","onPageUpDown","getDefaultFormat","showTime","use12Hours","mergedFormat","getInputSize","defaultSize","globalClickFunc","clickCallbacks","PickerModeMap","quarter","elementsContains","usePickerInput","isClickOutside","forwardKeyDown","_onKeyDown","blurToCancel","changeOnBlur","onCancel","_onFocus","_onBlur","typing","setTyping","preventBlurRef","valueChangedRef","preventDefaultRef","_e$composedPath","composed","composedPath","getTargetFromEvent","clickedOutside","queueFunc","usePresets","presets","legacyRanges","useTextValueMapping","valueTexts","onTextChange","setInnerText","valueTextsRef","resetText","valText","useCellRender","cellRender","monthCellRender","dateRender","mergedCellRender","originNode","leftPad","updateValues","newValues","executeValue","useCellClassName","cellPrefixCls","rangedValue","hoverRangedValue","isInView","isSameCell","offsetCell","currentDate","prevDate","nextDate","rangeStart","rangeEnd","hoverStart","hoverEnd","isRangeHovered","isRangeStart","isRangeEnd","isHoverStart","isHoverEnd","isHoverEdgeStart","isHoverEdgeEnd","setTime","nextTime","setDateTime","defaultDate","newDate","getLastDay","lastDay","monthShow","PanelBody","rowNum","colNum","prefixColumn","rowClassName","baseDate","getCellClassName","getCellText","getCellNode","getCellDate","titleCell","headerCells","PanelContext","onDateMouseEnter","onDateMouseLeave","rows","row","rowStartDate","rowCount","RangeContext","weekFirstDay","monthStartDate","startDateWeekDay","alignStartDate","getWeekStartDate","weekDaysLocale","shortWeekDays","HIDDEN_STYLE","_ref$prevIcon","prevIcon","_ref$nextIcon","nextIcon","_ref$superPrevIcon","superPrevIcon","_ref$superNextIcon","superNextIcon","onSuperPrev","onSuperNext","onPrev","onNext","hideNextBtn","hidePrevBtn","onNextMonth","onPrevMonth","onNextYear","onPrevYear","onYearClick","onMonthClick","hideHeader","headerPrefixCls","monthsLocale","shortMonths","yearNode","monthNode","monthFormat","monthYearNodes","_props$panelName","panelName","keyboardConfig","operationRef","onViewDateChange","onPanelChange","_onSelect","panelPrefixCls","onYearChange","onMonthChange","DateHeader","DateBody","units","hideDisabledOptions","ulRef","liRefs","scrollRef","tryOrNextFrame","waitElementReady","_scrollRef$current","_classNames2","subType","shouldUnitsUpdate","prevUnits","nextUnits","generateUnits","disabledUnits","integerStep","isPM","activeColumnIndex","showHour","showMinute","showSecond","_props$hourStep","hourStep","_props$minuteStep","minuteStep","_props$secondStep","secondStep","disabledHours","disabledMinutes","disabledSeconds","disabledTime","contentPrefixCls","columnPrefixCls","originHour","disabledConfig","mergedDisabledHours","mergedDisabledMinutes","mergedDisabledSeconds","rawHours","memorizedRawHours","_React$useMemo4","AMPMDisabled","hourValue","AMDisabled","PMDisabled","hourMeta","hourLabel","isNewPM","newHour","newMinute","newSecond","newFormattedHour","mergedHour","mergedMinute","mergedSecond","newDisabledMinutes","availableMinute","newDisabledSeconds","availableSecond","utilSetTime","useTimeSelection","addColumnNode","columnValue","onColumnSelect","unitLen","nextUnit","TimeUnitColumn","PMIndex","_props$format","_props$use12Hours","bodyOperationRef","setActiveColumnIndex","columnsCount","TimeHeader","TimeBody","ACTIVE_PANEL","tuple","findValidTime","refValue","disabledRange","maxValidTime","rangeSet","activePanel","setActivePanel","dateOperationRef","timeOperationRef","timeProps","nextActivePanel","activeIndex","getNextActive","onClose","onInternalSelect","selectedDate","_disabledTimes$disabl","_disabledTimes$disabl2","_disabledTimes$disabl3","_disabledTimes","validHour","validMinute","validSeconds","disabledTimes","DatePanel","TimePanel","onPrevDecades","onNextDecades","yearNumber","endYear","DECADE_UNIT_DIFF_DES","decadeYearNumber","startDecadeYear","endDecadeYear","baseDecadeYear","DECADE_COL_COUNT","startDecadeNumber","endDecadeNumber","onDecadesChange","DecadeHeader","DecadeBody","baseMonth","MonthHeader","MonthBody","baseQuarter","quarterFormat","QuarterHeader","QuarterBody","_React$useContext2","rowPrefixCls","YEAR_DECADE_COUNT","onPrevDecade","onNextDecade","onDecadeClick","yearPrefixCls","baseYear","currentYearNumber","sourceMode","onDecadeChange","YearHeader","YearBody","getExtraFooter","renderExtraFooter","getRanges","presetNode","okNode","_ref$components","needConfirmButton","onNow","onOk","okDisabled","showNow","CALENDAR_PANEL_MODE","pickerValue","defaultPickerValue","_ref$picker","_ref$tabIndex","showToday","onPickerValueChange","_onOk","_ref$hourStep","_ref$minuteStep","_ref$secondStep","isHourStepValid","isMinuteStepValid","isSecondStepValid","panelContext","onContextSelect","hideRanges","defaultOpenValue","inRange","panelPosition","panelRef","initRef","_useMergedState3","defaultDateObject","_useMergedState4","setInnerViewDate","setViewDate","getInternalNextMode","nextMode","getNextMode","_useMergedState6","mergedMode","setInnerMode","panelNode","setSourceMode","triggerSelect","onInternalKeyDown","selectable","operationFnc","isDateMode","isSelectable","extraFooter","rangesNode","todayNode","pickerProps","newMode","viewValue","DecadePanel","YearPanel","MonthPanel","QuarterPanel","WeekPanel","DatetimePanel","lowerBoundTime","lowerBoundHour","lowerBoundMinute","getLowerBoundTime","adjustedNow","todayCls","BUILT_IN_PLACEMENTS","dropdownClassName","dropdownAlign","dropdownPrefixCls","PresetPanel","_onClick","onHover","getClearIcon","InnerPicker","inputReadOnly","pickerRef","panelRender","_ref$autoComplete","inputRender","presetList","panelDivRef","inputDivRef","selectedValue","setSelectedValue","postOpen","newOpen","triggerInnerOpen","_useValueTexts2","_useTextValueMapping2","newText","inputDate","triggerTextChange","_usePickerInput","_usePickerInput2","_usePickerInput2$","_useHoverValue2","hoverValue","panelProps","PickerPanel","panel","mergedClearIcon","clearNode","mergedInputProps","inputNode","PickerTrigger","Picker","getStartEndDistance","startNext","getDistance","compareFunc","decade1","decade2","isSameDecade","useRangeViewDates","defaultDates","defaultViewDates","setDefaultViewDates","viewDates","setInternalViewDates","getRangeViewDate","newViewDates","anotherIndex","reorderValues","canValueTrigger","allowEmpty","InnerRangePicker","_classNames3","_classNames4","_ref$separator","_disabledTime","ranges","onCalendarChange","activePickerIndex","startInputDivRef","endInputDivRef","separatorRef","startInputRef","endInputRef","formatDateValue","_useRangeViewDates2","getViewDate","postValues","mergedModes","setInnerModes","triggerModesChange","modes","_useRangeOpen","startSelectedValue","endSelectedValue","firstTimeOpen","setFirstTimeOpen","afferentOpen","setAfferentOpen","mergedActivePickerIndex","setMergedActivePickerIndex","nextActiveIndex","setNextActiveIndex","queryNextIndex","customNextActiveIndex","_ref$current","useRangeOpen","_useRangeOpen2","_triggerOpen","startOpen","endOpen","_useRangeDisabled","weekFirstDate","monthNumber","quarterNumber","disabledStartDate","disabledEndDate","useRangeDisabled","_useRangeDisabled2","popupMinWidth","setPopupMinWidth","triggerOpenAndFocus","sourceIndex","triggerCalendarChangeOnly","startValue","endValue","startStr","endStr","canStartValueTrigger","canEndValueTrigger","sharedTextHooksProps","startValueTexts","firstStartValueText","_useValueTexts4","endValueTexts","firstEndValueText","_onTextChange","startText","triggerStartTextChange","resetStartText","_useTextValueMapping4","endText","triggerEndTextChange","resetEndText","rangeHoverValue","setRangeHoverValue","setHoverRangedValue","startHoverValue","onStartEnter","onStartLeave","_useHoverValue4","endHoverValue","onEndEnter","onEndLeave","delayOpen","setDelayOpen","onInternalBlur","needTriggerIndex","getSharedInputHookProps","elementsRefs","sharedPickerInput","startInputProps","startFocused","startTyping","_usePickerInput4","endInputProps","_usePickerInput4$","endFocused","endTyping","panelDateRender","renderPanel","panelHoverRangedValue","panelShowTime","timeDefaultValues","arrowLeft","panelLeft","arrowMarginLeft","panelWidth","arrowPositionStyle","rangePanel","panels","extraNode","nextViewDate","showDoublePanel","leftPanel","newViewDate","rightPanel","mergedNodes","renderPanels","inputSharedProps","activeBarLeft","activeBarWidth","activeBarPositionStyle","RangePicker","slideUpIn","slideUpOut","slideDownIn","slideDownOut","slideLeftIn","slideLeftOut","slideRightIn","slideRightOut","slideMotion","initSlideMotion","moveDownIn","moveDownOut","moveLeftIn","moveLeftOut","moveRightIn","moveRightOut","moveMotion","initMoveMotion","genPickerPadding","inputHeight","paddingHorizontal","genPickerCellInnerStyle","pickerCellCls","pickerCellInnerCls","cellHeight","cellHoverBg","cellActiveWithRangeBg","cellRangeBorderColor","pickerCellBorderGap","cellHoverWithRangeBg","cellWidth","cellBgDisabled","genPanelStyle","pickerYearMonthCellWidth","pickerControlIconSize","pickerControlIconBorderWidth","textHeight","pickerCellPaddingVertical","withoutTimeCellHeight","pickerQuarterPanelContentHeight","timeColumnHeight","timeColumnWidth","timeCellHeight","pickerDatePanelPaddingHorizontal","pickerControlIconMargin","pickerPanelWidth","commonHoverCellFixedDistance","quarterHoverCellFixedDistance","borderBlockStartWidth","borderBlockEndWidth","borderInlineStartWidth","tableLayout","scrollbarWidth","scrollbarColor","genPickerStatusStyle","genPickerStyle","presetsWidth","presetsMaxWidth","marginTop","pickerToken","initPickerPanelToken","genVariantsStyle","initPanelComponentToken","getPlaceholder","customizePlaceholder","getRangePlaceholder","transPlacement2DropdownAlign","getTimeProps","firstFormat","showTimeObj","mergeAllowClear","defaultClearIcon","defaults","WeekPicker","MonthPicker","YearPicker","QuarterPicker","getPicker","consumerName","customizeGetPopupContainer","consumerStyle","additionalOverrideProps","mergedPicker","contextLocale","enUS","RCPicker","Components","generateSinglePicker","customGetPopupContainer","RCRangePicker","generateRangePicker","MergedDatePicker","generatePicker","dayjsGenerateConfig","postPureProps","PureRangePanel","_InternalRangePanelDoNotUseOrYouWillBeFired","AllServicesHistory","selectedMonth","setSelectedMonth","sortedHistoryByDate","dateA","filteredServiceHistory","onBack","dateString","u8","u16","u32","Uint32Array","fleb","fdeb","clim","freb","revfl","revfd","rev","hMap","co","rvb","sv","r_1","flt","fdt","flm","flrm","fdm","fdrm","bits","bits16","shft","slc","subarray","inflt","dat","buf","st","noBuf","noSt","cbuf","nbuf","final","pos","lm","dm","lbt","dbt","tbts","hLit","hcLen","ldt","clt","clb","clbmsk","clm","lt","dt","lms","dms","mxa","dsym","wbits","wbits16","hTree","t2","i0","maxSym","tr","mbt","ln","lft","cst","i2_1","i2_2","i2_3","cli","cln","clen","wfblk","out","wblk","syms","bs","dlt","mlb","ddt","mdb","lclt","nlc","lcdt","ndc","lcfreq","lct","mlcb","nlcc","flen","ftlen","dtlen","llm","lcts","it","clct","dst","deo","et","dflt","lvl","plvl","lst","msk_1","bs1_1","bs2_1","hsh","lc_1","hv","imod","pimod","rem","ch_1","dif","maxn","maxd","mmd","lin","din","adler","dopt","mem","wbytes","zlh","lv","zlv","zlibSync","unzlibSync","XMLHttpRequest","responseType","response","send","MouseEvent","initMouseEvent","saveAs","HTMLAnchorElement","webkitURL","download","msSaveOrOpenBlob","autoBom","innerText","safari","FileReader","onloadend","readAsDataURL","feldspar","lightslateblue","violetred","example","toRGB","print","modify","perm","processOwnerPassword","encryptionKey","lsbFirstWord","hexToBytes","publish","getTopics","objectNumber","gState","matrix","coords","boundingBox","xStep","yStep","orientation","compress","compressPdf","encryption","userPassword","ownerPassword","userPermissions","userUnit","precision","floatPrecision","defaultPathOperation","filters","putOnlyUsedFonts","__private__","PubSub","getPdfVersion","setPdfVersion","a0","a3","a4","a5","a6","a7","a8","a9","a10","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","c0","c4","c5","c6","c7","c8","c9","c10","legal","ledger","tabloid","getPageFormats","getPageFormat","saveGraphicsState","Vt","_t","Rr","setFontSize","getFontSize","restoreGraphicsState","combineFontStyleAndFontWeight","advancedAPI","compatAPI","isAdvancedAPI","roundToPrecision","hpf","f2","f3","setPrecision","getFileId","setFileId","convertDateToPDFDate","convertPDFDateToDate","setCreationDate","getCreationDate","padd2","padd2Hex","rt","nt","at","ot","ct","setCustomOutputDestination","ht","resetCustomOutputDestination","ft","write","getArrayBuffer","pt","getStandardFonts","gt","mt","vt","R2L","setR2L","getR2L","yt","wt","setZoomMode","getZoomMode","Nt","Lt","setPageMode","getPageMode","At","setLayoutMode","getLayoutMode","setDisplayMode","xt","subject","author","keywords","creator","getDocumentProperty","getDocumentProperties","setDocumentProperties","setProperties","setDocumentProperty","St","Pt","kt","It","Ft","Ct","jt","Ot","Bt","Mt","Et","qt","Dt","Rt","Tt","Ut","hotfixes","zt","Ht","Wt","_matrix","atan2","shx","sx","decompose","sy","shy","translate","skew","inversed","applyToPoint","Cr","applyToRectangle","jr","Matrix","Gt","matrixMult","Yt","unitMatrix","identityMatrix","Jt","ShadingPattern","TilingPattern","addShadingPattern","beginTilingPattern","Br","endTilingPattern","Xt","newObject","Kt","Zt","newObjectDeferred","$t","newAdditionalObject","objId","Qt","decodeColorString","encodeColorString","ch1","ch2","ch3","ch4","pdfColorType","getFilters","putStream","alreadyAppliedFilters","addLength1","objectId","encryptor","additionalKeyValues","API","processDataByFilters","reverseChain","putPage","contentsObjId","rootDictionaryObjId","resourceDictionaryObjId","mediaBox","bottomLeftX","bottomLeftY","topRightX","topRightY","cropBox","bleedBox","trimBox","artBox","pageContext","pageNumber","putPages","font","isAlreadyPutted","postScriptName","encoding","pages","resourcesOid","objectOid","MAX_SAFE_INTEGER","fontName","isStandardFont","pdfEscape","sourceEncoding","outputEncoding","autoencode","codePages","noBOM","beginPage","pr","fr","Lr","kr","Ir","setPage","getNumberOfPages","disableWarning","noFallback","normal","putInfo","putCatalog","putTrailer","oid","putHeader","putXRef","buildDocument","getBlob","filename","save","unescape","pdfObjectUrl","pdfJsUrl","PDFViewerApplication","Ge","getPageInfo","getPageInfoByObjId","getCurrentPageInfo","addPage","insertPage","movePage","deletePage","angle","lineHeightFactor","scaleFactor","TabLen","baseline","splitTextToSize","mutex","activeFontKey","fonts","activeFontSize","rotationDirection","cos","sin","charSpace","_r","setCharSpace","getCharSpace","horizontalScale","renderingMode","usedRenderingMode","pageSize","getWidth","getStringUnitWidth","doKerning","yr","isHex","ut","xr","clip","clipEvenOdd","discardPath","isValidStyle","setDefaultPathOperation","er","rr","fillEvenOdd","fillStroke","fillStrokeEvenOdd","ar","nr","ir","or","setGState","sr","cr","lineTo","ur","curveTo","lines","op","triangle","roundedRect","SQRT2","ellipse","setFont","getFont","getFontList","addFont","dr","getLineWidth","setLineWidth","setLineDash","setLineDashPattern","gr","mr","setLineHeightFactor","vr","getLineHeightFactor","getHorizontalCoordinate","getVerticalCoordinate","wr","getHorizontalCoordinateString","Nr","getVerticalCoordinateString","strokeColor","getStrokeColor","getDrawColor","setStrokeColor","setDrawColor","Ar","getFillColor","setFillColor","Sr","getTextColor","setTextColor","Pr","CapJoinStyles","butt","but","miter","rounded","projecting","project","square","bevel","setLineCap","setLineJoin","setLineMiterLimit","setMiterLimit","GState","Fr","addGState","setCurrentTransformationMatrix","Or","currentPage","pagesContext","qr","outputDestination","Dr","Tr","Er","beginFormObject","endFormObject","Mr","doFormObject","getFormObject","unload","events","getPageWidth","setPageWidth","getPageHeight","setPageHeight","getCoordinateString","collections","newObjectDeferredBegin","getHeight","encryptionOptions","getEncryptor","getPDFVersion","Rectangle","hasHotfix","dictionary","__acroform__","BBox","setBit","clearBit","getBit","getBitForPdf","setBitForPdf","clearBitForPdf","calculateCoordinates","lowerLeft_X","lowerLeft_Y","upperRight_X","upperRight_Y","appearanceStreamContent","DV","_V","maxFontSize","multiline","xForms","acroFormDictionaryRoot","printedOut","isInitialized","annotations","acroformPlugin","FieldNum","_eventID","Fields","hasAnnotation","Kids","Rect","DA","createDefaultAppearanceStream","getKeyValueListForStream","hasAppearanceStream","arrayToPdfArray","_objId","_scope","FT","getOptions","addOption","removeOption","combo","CA","pushButton","caption","appearanceState","_AppearanceType","RadioButton","Circle","createAppearanceStream","optionName","setAppearance","getCA","createOption","Parent","CheckBox","isInteger","On","YesNormal","YesPushDown","Off","OffPushDown","Bezier_C","Cross","calculateCross","x1","x2","x4","x3","addField","AcroFormChoiceField","AcroFormListBox","AcroFormComboBox","AcroFormEditBox","AcroFormButton","AcroFormPushButton","AcroFormRadioButton","AcroFormCheckBox","AcroFormTextField","AcroFormPasswordField","AcroFormAppearance","AcroForm","ChoiceField","ListBox","ComboBox","EditBox","PushButton","TextField","PasswordField","Appearance","__addimage__","PNG","TIFF","JPEG","JPEG2000","GIF87a","GIF89a","WEBP","BMP","getImageFileTypeByImageData","Uint8ClampedArray","colorSpace","INDEXED","palette","sMask","DEVICE_CMYK","bitsPerComponent","decodeParameters","transparency","predictor","addImage_images","loadFile","alias","color_spaces","DEVICE_RGB","DEVICE_GRAY","CAL_GREY","CAL_RGB","LAB","ICC_BASED","PATTERN","SEPARATION","DEVICE_N","decode","DCT_DECODE","FLATE_DECODE","LZW_DECODE","JPX_DECODE","JBIG2_DECODE","ASCII85_DECODE","ASCII_HEX_DECODE","RUN_LENGTH_DECODE","CCITT_FAX_DECODE","image_compression","NONE","FAST","MEDIUM","SLOW","sHashCode","validateStringAsBase64","extractImageFromDataUrl","mimeType","supportsArrayBuffer","isArrayBuffer","isArrayBufferView","Int8Array","Int16Array","Int32Array","Float32Array","Float64Array","binaryStringToUint8Array","arrayBufferToBinaryString","addImage","compression","rotation","convertBase64ToBinaryString","getImageProperties","fileType","bounds","contents","_nameMap","finalBounds","magFactor","createAnnotation","textWithLink","getTextWidth","__arabicParser__","isInArabicSubstitutionA","isArabicLetter","isArabicEndLetter","isArabicAlfLetter","arabicLetterHasIsolatedForm","arabicLetterHasFinalForm","arabicLetterHasInitialForm","arabicLetterHasMedialForm","resolveLigatures","isArabicDiacritic","getCorrectForm","processArabic","autoPrint","addJS","pageWrapXEnabled","pageWrapX","pageWrapYEnabled","pageWrapY","pdf","context2d","__cell__","headerFunction","lastCell","lineNumber","setHeaderFunction","getTextDimensions","cellAddPage","tableHeaderRow","printHeaders","printHeaderRow","headerBackgroundColor","headerTextColor","table_font_size","prompt","setTableHeaderRow","rowStart","cellStart","table_x","table_y","italic","oblique","family","weight","monospace","terminal","cursive","fantasy","serif","trimLeft","isStrokeTransparent","strokeStyle","isFillTransparent","textBaseline","lineJoin","lineCap","globalCompositeOperation","globalAlpha","clip_path","currentPoint","miterLimit","lineDashOffset","lineDash","prevPageLastElemOffset","ignoreClearRect","fontFaces","defaultFontFamily","genericFontFamilies","arial","Arial","verdana","Verdana","helvetica","Helvetica","getLineDash","quadraticCurveTo","y1","bezierCurveTo","y2","isIdentity","startAngle","endAngle","counterclockwise","arcTo","strokeRect","ctxStack","isCanvasGradient","getColor","fillText","strokeText","measureText","setTransform","autoPaging","posY","posX","deltas","createLinearGradient","colorStops","addColorStop","createPattern","createRadialGradient","y3","y4","prevLineDash","overrideMimeType","responseText","loadImageFile","html2canvas","DOMPurify","dompurify","sanitize","convert","setProgress","enableLinks","jsPDF","toContainer","toCanvas","toImg","toPdf","thenList","setPageSize","windowWidth","javascriptEnabled","onrendered","toContext2d","allowTaint","imageTimeout","logging","removeContainer","foreignObjectRendering","useCORS","windowHeight","quality","outputImg","outputPdf","doCallback","setMargin","getPageSize","updateProgress","thenCore","thenExternal","catchExternal","using","export","run","createNamedDestinations","makeRef","genIds_r","renderRoot","renderItems","objStart","count_r","objEnd","makeString","processJPEG","numcomponents","imgData","readUInt32","colorType","compressionMethod","filterMethod","interlaceMethod","numFrames","numPlays","frames","read","xOffset","yOffset","readUInt16","disposeOp","blendOp","indexed","grayscale","hasAlphaChannel","pixelBitlength","decodePixels","decodePalette","copyToImageData","_decodedPalette","decodeFrames","createImageData","renderFrame","animate","_timeout","stopAnimation","_png","has_local_palette","palette_offset","palette_size","data_offset","data_length","transparent_index","interlaced","disposal","loopCount","frameInfo","decodeAndBlitFrameBGRA","decodeAndBlitFrameRGBA","encode","datav","is_with_alpha","bottom_up","flag","parseHeader","parseBGR","Ur","zr","Hr","Hn","Wn","Vn","Gn","Ed","Cd","RGBA","Sd","Tn","Sn","An","qn","Rn","Un","memory","$n","Gr","Wr","Vr","Zr","$r","Yr","En","Qr","tn","Dn","nn","xn","zn","rn","Xr","VP8LMapColor32b","Jr","VP8LMapColor8b","Kr","Qn","Xn","Zn","Jn","Yn","Kn","Kd","Ud","Gd","ga","put","Cn","Pn","kn","In","Fn","an","cn","un","hn","sn","dn","pn","gn","mn","vn","bn","yn","wn","Nn","Ln","Bn","jn","Mn","Predictor0","Predictor1","Predictor2","Predictor3","Predictor4","Predictor5","Predictor6","Predictor7","Predictor8","Predictor9","Predictor10","Predictor11","Predictor12","Predictor13","PredictorAdd0","PredictorAdd1","PredictorAdd2","ColorIndexInverseTransform","MapARGB","VP8LColorIndexInverseTransformAlpha","MapAlpha","VP8LPredictorsAdd","VP8LPredictors","VP8LPredictorsAdd_C","VP8LPredictors_C","UpsampleRgbLinePair","UpsampleBgrLinePair","UpsampleRgbaLinePair","UpsampleBgraLinePair","UpsampleArgbLinePair","UpsampleRgba4444LinePair","UpsampleRgb565LinePair","WebPDecodeRGBA","src_off","src_size","feature_flags","canvas_width","canvas_height","bgcolor","loop_count","offset_x","offset_y","dispose","blend","rgbaoutput","dataurl","loop_counter","imgwidth","imgheight","processPNG","processGIF89A","processGIF87A","fileSize","getUint32","reserved","headerSize","getInt32","planes","getUint16","bitPP","rawSize","importantColors","getUint8","quad","bit1","bit4","bit8","bit15","bit16","bit24","bit32","getData","processBMP","processWEBP","processRGBA","setLanguage","languageSettings","sq","hy","ast","az","eu","my","cv","cs","eo","fo","fur","gu","hu","iu","ks","km","ky","tlh","ko","mo","nv","no","om","qu","rm","ro","ru","sz","so","es","sw","tig","ts","hsb","vo","zu","languageCode","getCharWidthsArray","Unicode","fof","kerning","widthOfString","widthOfGlyph","characterToGlyph","textIndent","lineIndent","__fontmetrics__","uncompress","WinAnsiEncoding","Courier","ZapfDingbats","existsFileInVFS","getFileFromVFS","TTFFont","glyIdsUsed","addSvgAsImage","ignoreMouse","ignoreAnimation","ignoreDimensions","canvg","fromString","putTotalPages","pdfEscape16","viewerPreferences","HideToolbar","explicitSet","valueSet","pdfVersion","HideMenubar","HideWindowUI","FitWindow","CenterWindow","DisplayDocTitle","NonFullScreenPageMode","Direction","ViewArea","ViewClip","PrintArea","PrintClip","PrintScaling","Duplex","PickTrayByPDFSize","PrintPageRange","NumCopies","viewerpreferences","configuration","__metadata__","namespaceuri","metadata_object_number","addMetadata","toUnicode","subset","PDFObject","stemV","italicAngle","ascender","decender","capHeight","rawData","hmtx","unitsPerEm","cmap","unicode","codeMap","vFS","addFileToVFS","__bidiEngine__","EN","AN","hiLevel","doBidiReorder","isInputVisual","isOutputVisual","isInputRtl","isOutputRtl","isSymmetricSwapping","readString","registerTTF","directory","hhea","maxp","os2","loca","glyf","exists","lineGap","xMin","yMin","xMax","yMax","italic_angle","xHeight","familyClass","isSerif","isScript","isFixedPitch","forGlyph","advance","readByte","writeByte","writeUInt32","readInt32","writeInt32","writeUInt16","readInt16","writeInt16","writeString","readShort","writeShort","readLongLong","writeLongLong","readInt","writeInt","scalarType","tableCount","searchRange","entrySelector","rangeShift","tables","checksum","__super__","file","raw","revision","checkSumAdjustment","magicNumber","created","modified","macStyle","lowestRecPPEM","fontDirectionHint","indexToLocFormat","glyphDataFormat","platformID","encodingID","language","isUnicode","old","new","charMap","subtable","maxGlyphID","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","metricDataFormat","numberOfMetrics","averageCharWidth","weightClass","widthClass","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","panose","charRange","vendorID","firstCharIndex","lastCharIndex","ascent","descent","winAscent","winDescent","codePageRange","defaultChar","breakChar","maxContext","underlinePosition","underlineThickness","minMemType42","maxMemType42","minMemType1","maxMemType1","glyphNameIndex","numGlyphs","languageID","nameID","strings","copyright","fontSubfamily","uniqueSubfamily","postscriptName","trademark","manufacturer","designer","vendorUrl","designerUrl","license","licenseUrl","preferredFamily","preferredSubfamily","compatibleFull","sampleText","maxPoints","maxContours","maxCompositePoints","maxComponentContours","maxZones","maxTwilightPoints","maxStorage","maxFunctionDefs","maxInstructionDefs","maxStackElements","maxSizeOfInstructions","maxComponentElements","maxComponentDepth","metrics","lsb","leftSideBearings","glyphFor","lengthOf","numberOfContours","compound","glyphIDs","glyphOffsets","unicodes","generateCmap","glyphsFor","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","alignDirection","alignPropType","DropdownButton","SpecificHistory","specificHistoryLabel","formData","downloadPdf","downloadCSV","csvData","InsideServices","MyTask","tasks","phone","customer","s5","s6","task","Tasdetails","serviceName","companyName","s7","s4","s8","s9","MyTaskList","setData","handleViewDetails","recalc","scrollDiv","ModalBody","ModalDialog","contentClassName","centered","fullscreen","scrollable","dialogClass","fullScreenClass","ModalFooter","ModalHeader","DivStyledAsH4","ModalTitle","dialogClassName","dialogAs","Dialog","dataBsTheme","ariaDescribedby","modalStyle","animateStaticModal","setAnimateStaticModal","waitingForMouseUpRef","ignoreBackdropClickRef","removeStaticModalAnimationRef","setModalRef","getModalManager","updateDialogStyle","containerIsOverflowing","modalIsOverflowing","getScrollbarSize","handleWindowResize","handleDialogMouseDown","handleMouseUp","handleStaticModalAnimation","handleStaticBackdropClick","baseModalStyle","Footer","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","modalTitle","modalContent","onConfirm","handleClose","handleConfirm","TaskDetails","setTask","showForm","setShowForm","startTask","setStartTask","handleAddTeamMemberClick","handleStart","Model","handleScan","App","setResult","QrScanner","facingMode","QrFrame","handleScanAgain","StartTask","isRunning","setIsRunning","stopTask","setStopTask","prevTime","newSeconds","newMinutes","formatTime","pauseTimer","handleshow","resumeTimer","handlestop","SignnaturePage","sigRef","signature","setSignature","showSignaturePad","setShowSignaturePad","handleSignatureEnd","clearSignature","SignatureCanvas","handleToggleChange","RadioGroupContext","RadioGroupContextProvider","RadioOptionTypeContext","RadioOptionTypeContextProvider","getGroupRadioStyle","getRadioBasicStyle","wrapperMarginInlineEnd","radioSize","dotColorDisabled","radioColor","radioBgColor","radioInnerPrefixCls","radioDotDisabledSize","radioSizeCalc","marginBlockStart","borderBlockStart","getRadioButtonStyle","buttonColor","buttonPaddingInline","buttonBg","buttonCheckedBg","buttonSolidCheckedColor","buttonCheckedBgDisabled","buttonCheckedColorDisabled","buttonSolidCheckedBg","buttonSolidCheckedHoverBg","buttonSolidCheckedActiveBg","radioFocusShadow","radioToken","radioButtonFocusShadow","dotPadding","InternalRadio","groupContext","radioOptionTypeContext","radioPrefixCls","isButtonType","optionType","radioProps","wrapperClassString","RadioGroup","buttonStyle","childrenToRender","Radio","ev","lastValue","__ANT_RADIO","genSharedDividerStyle","sizePaddingEdgeHorizontal","textPaddingInline","orientationMargin","verticalMarginInline","dividerHorizontalGutterMargin","dividerHorizontalWithTextGutterMargin","borderBlockStartColor","borderBlockEnd","dividerToken","dashed","orientationPrefix","hasChildren","hasCustomMarginLeft","hasCustomMarginRight","memoizedOrientationMargin","innerStyle","EXPAND_COLUMN","INTERNAL_HOOKS","eventSelector","nextSelectorValue","createImmutable","ImmutableContext","useImmutableMark","makeImmutable","shouldTriggerRender","refAble","ImmutableComponent","refProps","renderTimesRef","responseImmutable","propsAreEqual","_createImmutable","RenderBlock","timesRef","keysRef","useRenderTimes","renderWithProps","INTERNAL_KEY_PREFIX","getColumnsKey","columnKeys","dataIndex","validateValue","record","renderIndex","shouldCellUpdate","perfRecord","PerfContext","retData","returnCellProps","renderData","isRenderCell","prevRecord","nextRecord","Cell","_legacyCellProps$colS","_legacyCellProps$rowS","_additionalProps$titl","ellipsis","rowType","colSpan","rowSpan","fixLeft","fixRight","firstFixLeft","lastFixLeft","firstFixRight","lastFixRight","appendNode","_props$additionalProp","additionalProps","isSticky","TableContext","supportSticky","allColumnsFixedLeft","_useCellRender2","legacyCellProps","fixedStyle","isFixLeft","isFixRight","mergedColSpan","mergedRowSpan","_useHoverState","rowIndex","cellStartRow","cellRowSpan","startRow","endRow","hoverStartRow","hoverEndRow","useHoverState","_useHoverState2","hovering","_additionalProps$onMo","_additionalProps$onMo2","ellipsisConfig","showTitle","getTitleFromCellRenderChildren","mergedClassName","mergedChildNode","getCellFixedInfo","colStart","colEnd","stickyOffsets","curColumns","startColumn","endColumn","nextColumn","prevColumn","canLastFix","Summary","_ref$colSpan","SummaryContext","scrollColumnIndex","flattenColumns","fixedInfo","lastColumnIndex","scrollColumn","summaryContext","scrollbar","FooterComponents","isStyleNameSupport","styleNameList","isStyleValueSupport","fillRecords","indent","childrenColumnName","expandedKeys","getRowKey","useFlattenRecords","useRowInfo","rowKey","recordIndex","computeRowClassName","expandableType","onTriggerExpand","rowExpandable","onRow","expandRowByClick","nestExpandable","rowSupportExpand","mergedExpandable","hasNestChildren","onInternalTriggerExpand","rowProps","onRowClick","columnsKey","expandable","cellComponent","fixHeader","fixColumn","componentWidth","horizonScroll","contentNode","getCellProps","rowInfo","colIndex","appendCellNode","additionalCellProps","fixedInfoList","expandIconColumnIndex","indentSize","expandIcon","onExpand","onCell","BodyRow","_props$indent","RowComponent","rowComponent","scopeCellComponent","expandedRowClassName","expandedRowRender","expandedRef","expandRowNode","baseRowNode","columnClassName","_getCellProps","rowScope","expandContent","computedExpandedRowClassName","ExpandedRow","MeasureCell","columnKey","onColumnResize","cellRef","MeasureRow","infoList","measureColumnWidth","getComponent","emptyNode","flattenData","perfRef","trComponent","tdComponent","thComponent","INTERNAL_COL_DEFINE","colWidths","cols","mustInsert","columCount","restAdditionalProps","columnType","FixedHolder","noData","stickyTopOffset","stickyBottomOffset","stickyClassName","maxContentScroll","combinationScrollBarSize","setScrollRef","onWheel","_scrollRef$current2","allFlattenColumnsWithWidth","lastColumn","ScrollBarColumn","onHeaderCell","columnsWithScrollbar","flattenColumnsWithScrollbar","headerStickyOffsets","mergedColumnWidth","cloneColumns","useColumnWidth","ColGroup","HeaderRow","CellComponent","tdCellComponent","onHeaderRow","cellIndex","rootColumns","fillRowCells","currentColIndex","colSpans","subColumns","hasSubColumns","parseHeaderRows","parseColWidth","totalWidth","convertChildrenToColumns","nodeChildren","filterHiddenColumns","flatColumns","parentKey","parsedFixed","subColum","transformColumns","columnTitle","columnWidth","baseColumns","withExpandColumns","expandColIndex","expandColumnIndex","fixedColumn","expandColumn","recordExpandable","mergedColumns","finalColumns","revertForRtl","_useWidthColumns","missWidthCount","colWidth","maxFitWidth","restWidth","restCount","avgWidth","realTotal","filledColumns","colAvgWidth","useWidthColumns","_useWidthColumns2","realScrollWidth","renderExpandIcon","expandClassName","useExpand","mergedData","expandableConfig","legacyExpandableConfig","showExpandColumn","getExpandableProps","expandedRowKeys","defaultExpandedRowKeys","defaultExpandAllRows","onExpandedRowsChange","mergedExpandIcon","mergedChildrenColumnName","internalHooks","__PARENT_RENDER_ICON__","_React$useState","dig","findAllChildrenKeys","innerExpandedKeys","setInnerExpandedKeys","mergedExpandedKeys","newExpandedKeys","hasKey","useLayoutState","defaultState","stateRef","lastPromiseRef","updateBatchRef","prevBatch","batchUpdater","leftOffsets","rightOffsets","_end","addEventListenerWrap","eventType","getOffset","box","docElem","StickyScrollBar","_scrollBodyRef$curren","_scrollBodyRef$curren2","scrollBodyRef","offsetScroll","bodyScrollWidth","bodyWidth","scrollBarRef","_useLayoutState2","isHiddenScrollBar","scrollState","setScrollState","refState","setActive","_window","onContainerScroll","tableOffsetTop","tableBottomOffset","currentClientOffset","setScrollLeft","onMouseUpListener","onMouseMoveListener","onScrollListener","onResizeListener","bodyNode","DEFAULT_PREFIX","EMPTY_DATA","EMPTY_SCROLL_TARGET","defaultEmpty","tableProps","footer","summary","showHeader","internalRefs","tailor","getContainerWidth","hasData","useInternalHooks","defaultComponent","customizeScrollBody","_useHover","setStartRow","setEndRow","useHover","_useHover2","_useExpand2","setComponentWidth","_useColumns2","useColumns","flattenScrollX","mergedScrollX","columnContext","fullTableRef","scrollHeaderRef","scrollBodyContainerRef","_scrollBodyRef$curren3","scrollXStyle","scrollYStyle","scrollTableStyle","scrollSummaryRef","pingedLeft","setPingedLeft","pingedRight","setPingedRight","colsWidths","updateColsWidths","pureColWidths","useStickyOffsets","stickyRef","_useSticky","_ref$offsetHeader","offsetHeader","_ref$offsetSummary","offsetSummary","_ref$offsetScroll","_ref$getContainer","useSticky","summaryNode","fixFooter","newWidths","_useTimeoutLock2","timeoutRef","cleanUp","useTimeoutLock","setScrollTarget","getScrollTarget","forceScroll","_stickyRef$current","mergedScrollLeft","compareTarget","measureTarget","triggerOnScroll","setScrollbarSize","setSupportSticky","styleValue","groupTableNode","renderFixedHeaderTable","fixedHolderPassProps","renderFixedFooterTable","TableComponent","mergedTableLayout","headerProps","bodyTable","bodyColGroup","captionElement","dataProps","ariaProps","bodyContent","fixedHolderProps","fullTable","Panel","mergedWidth","useFixedInfo","TableContextValue","RefTable","genTable","ImmutableTable","Column","ColumnGroup","Filler","onInnerResize","getPageXY","horizontal","ScrollBar","scrollOffset","scrollRange","onStartMove","onStopMove","spinSize","containerSize","propsThumbStyle","thumbStyle","dragging","setDragging","pageXY","setPageXY","startTop","setStartTop","isLTR","scrollbarRef","thumbRef","visibleTimeoutRef","delayHidden","enableScrollRange","enableOffsetRange","canScroll","onThumbMouseDown","onScrollbarTouchStart","scrollbarEle","thumbEle","enableScrollRangeRef","enableOffsetRangeRef","moveRafId","_stateRef$current","stateDragging","statePageY","stateStartTop","newTop","tmpEnableScrollRange","tmpEnableOffsetRange","ptg","newScrollTop","scrollbarPrefixCls","containerStyle","refFunc","CacheMap","maps","MAX_TIMES","useDiffItem","onDiff","prevData","setPrevData","diffItem","setDiffItem","originList","targetList","shortList","longList","originLen","targetLen","notExistKey","__EMPTY_ITEM__","getItemKey","diffIndex","shortKey","findListDiffIndex","isScrollAtTop","isScrollAtBottom","lockTimeoutRef","scrollPingRef","smoothOffset","originScroll","useFrameWheel","inVirtual","horizontalScroll","onWheelDelta","offsetRef","wheelValueRef","isMouseScrollRef","useOriginScroll","wheelDirectionRef","wheelDirectionCleanRef","mergedDeltaX","mergedDeltaY","absX","absY","isFF","patchMultiple","onWheelY","onWheelX","SMOOTH_PTG","MIN_SIZE","getSpinSize","ScrollStyle","overflowAnchor","RawList","itemHeight","_props$fullHeight","fullHeight","itemKey","_props$component","onVirtualScroll","extraRender","useVirtual","componentRef","fillerInnerRef","setOffsetTop","setOffsetLeft","scrollMoving","setScrollMoving","onScrollbarStartMove","onScrollbarStopMove","syncScrollTop","alignedTop","maxScrollHeightRef","keepInRange","rangeRef","diffItemRef","_useHeights","onItemAdd","onItemRemove","updatedMark","setUpdatedMark","instanceRef","heightsRef","collectRafRef","cancelRaf","collectHeight","sync","doCollect","useHeights","_useHeights2","setInstanceRef","heights","heightUpdatedMark","_React$useMemo","_fillerInnerRef$curre","startOffset","endIndex","itemTop","dataLen","cacheHeight","currentItemBottom","fillerOffset","setSize","verticalScrollBarRef","horizontalScrollBarRef","horizontalScrollBarSpinSize","verticalScrollBarSpinSize","maxScrollHeight","getVirtualScrollInfo","lastVirtualScrollInfoRef","triggerScroll","nextInfo","onScrollBar","newScrollOffset","newOffset","keepInHorizontalRange","nextOffsetLeft","tmpOffsetLeft","offsetXY","fromHorizontal","_useFrameWheel2","onRawWheel","onFireFoxScroll","cleanUpEvents","touchedRef","touchYRef","intervalRef","currentY","_listRef$current","useMobileTouchMove","onMozMousePixelScroll","componentEle","delayHideScrollBar","_verticalScrollBarRef","_horizontalScrollBarR","_scrollTo","triggerFlash","syncState","setSyncState","targetAlign","originAlign","needCollectHeight","newTargetAlign","stackTop","itemBottom","leftHeight","_cacheHeight","lastTop","_arg$offset","useScrollTo","getScrollInfo","renderList","getSize","key2Index","bottomList","startKey","endKey","_heights$get","useGetSize","extraContent","listChildren","renderFunc","componentStyle","containerProps","verticalScrollBar","verticalScrollBarThumb","horizontalScrollBar","horizontalScrollBarThumb","StaticContext","GridContext","inverse","columnsOffset","cellStyle","_additionalCellProps$","_additionalCellProps$2","concatColWidth","getColumnWidth","marginOffset","needHide","cellSpan","BodyLine","rowCellCls","rowNode","VirtualCell","Grid","_useContext2","listItemHeight","columnsWidth","_listRef$current2","_listRef$current3","getRowSpan","_flattenData$index","_cellProps$rowSpan","cellProps","gridContext","tblPrefixCls","horizontalScrollBarStyle","VirtualList","firstRowSpanColumns","lastRowSpanColumns","_loop2","spanLines","_loop3","_i2","endItemIndex","endItemKey","renderBody","VirtualTable","RefVirtualTable","genVirtualTable","DownOutlined","DownOutlinedSvg","TreeContext","Indent","isStart","isEnd","getEntity","getPosition","fillFieldNames","fieldNames","mergedTitle","_title","convertTreeToData","rootNodes","treeNode","isTreeNode","_treeNode$props","dataNode","parsedChildren","flattenTreeData","treeNodeList","_fillFieldNames","fieldTitles","fieldChildren","expandedKeySet","fieldTitle","flattenNode","convertDataToEntities","dataNodes","initWrapper","processEntity","onProcessFinished","externalGetKey","childrenPropName","mergedExternalGetKey","posEntities","syntheticGetKey","_mergedConfig","_fillFieldNames2","mergeChildrenPropName","processNode","pathNodes","connectNodes","parentPos","subNode","subIndex","traverseDataNodes","getTreeNodeProps","selectedKeys","loadedKeys","loadingKeys","checkedKeys","halfCheckedKeys","dragOverNodeKey","dropPosition","halfChecked","dragOver","dragOverGapTop","dragOverGapBottom","convertNodePropsToEventData","eventData","ICON_OPEN","ICON_CLOSE","InternalTreeNode","dragNodeHighlight","onNodeClick","onCheck","onNodeDoubleClick","onNodeSelect","disableCheckbox","onNodeCheck","isCheckable","targetChecked","onNodeMouseEnter","onNodeMouseLeave","onNodeContextMenu","onNodeDragStart","onNodeDragEnter","onNodeDragOver","onNodeDragLeave","onNodeDragEnd","onNodeDrop","onNodeExpand","selectHandle","isLeaf","loadData","checkable","treeCheckable","_this$props$context","onNodeLoad","nodeDraggable","_this$props$context2","switcherIconFromProps","switcherIcon","switcherIconFromCtx","_switcherIconDom","renderSwitcherIconDom","switcherCls","switcherIconDom","$custom","getNodeState","$icon","titleNode","_this$props6$title","_this$props$context3","showIcon","treeIcon","titleRender","wrapClass","currentIcon","renderIcon","$title","setSelectHandle","onSelectorClick","onDoubleClick","onSelectorDoubleClick","renderDropIndicator","_this$props$context4","dropLevelOffset","dropIndicatorRender","showIndicator","mergedIndent","cacheIndent","syncLoadData","treeSelectable","_this$props8","domRef","_this$props$context5","filterTreeNode","dropContainerKey","dropTargetKey","draggingNodeKey","dataOrAriaAttributeProps","isEndNode","mergedDraggable","isDraggable","draggableWithoutDisabled","ariaSelected","onDragStart","onDragEnter","onDragOver","onDragLeave","onDrop","onDragEnd","renderDragHandler","renderSwitcher","renderCheckbox","renderSelector","ContextTreeNode","arrDel","arrAdd","posToArr","getDragChildrenKeys","dragNodeKey","dragChildrenKeys","isLastChild","treeNodeEntity","posArr","calcDropPosition","dragNode","startMousePosition","allowDrop","flattenedNodes","expandKeys","_abstractDropNodeEnti","_getBoundingClientRec","rawDropLevelOffset","filteredExpandKeys","_keyEntities$key","abstractDropNodeEntity","nodeIndex","flattenedNode","prevNodeKey","initialAbstractDropNodeKey","abstractDragOverEntity","abstractDragDataNode","abstractDropDataNode","dropAllowed","isFirstChild","dropNode","dropTargetPos","calcSelectedKeys","parseCheckedKeys","keyProps","conductExpandParent","keyList","conductUp","removeFromCheckedKeys","filteredKeys","isCheckDisabled","conductCheck","getCheckDisabled","syntheticGetCheckDisabled","warningMissKeys","hasEntity","levelEntities","maxLevel","levelSet","_entity$children","childEntity","visitedKeys","_level","allChecked","partialChecked","fillConductCheck","halfKeys","_entity$children2","_level2","cleanConductCheck","RightOutlined","RightOutlinedSvg","Overlay","overlayNode","_children$props","_props$arrow","_props$placements","Placements","triggerVisible","setTriggerVisible","overlayRef","handleVisibleChange","newVisible","focusMenuRef","handleCloseMenuAndReturnFocus","_triggerRef$current","_triggerRef$current$f","focusMenu","_overlayRef$current","focusResult","useAccessibility","getMenuElement","getOpenClassName","triggerHideAction","minOverlayWidthMatchTrigger","getMinOverlayWidthMatchTrigger","onOverlayClick","UNDEFINED","InternalItem","invalidate","renderItem","responsiveDisabled","registerSize","mergedHidden","internalRegisterSize","overflowStyle","overflowProps","itemNode","useBatcher","updateFuncRef","channel","channelUpdate","useEffectState","notifyEffectUpdate","setStateValue","OverflowContext","_excluded3","InternalRawItem","_restProps","contextClassName","restContext","RawItem","RESPONSIVE","INVALIDATE","defaultRenderRest","omittedItems","Overflow","_props$data","renderRawItem","_props$itemWidth","maxCount","renderRest","renderRawRest","itemComponent","fullySSR","_useEffectState2","setContainerWidth","mergedContainerWidth","_useEffectState4","itemWidths","setItemWidths","_useEffectState6","prevRestWidth","setPrevRestWidth","_useEffectState8","setRestWidth","_useEffectState10","suffixWidth","setSuffixWidth","suffixFixedStart","setSuffixFixedStart","displayCount","setDisplayCount","mergedDisplayCount","restReady","setRestReady","mergedRestWidth","isResponsive","shouldResponsive","showRest","mergedRenderItem","updateDisplayCount","suffixFixedStartVal","notReady","getItemWidth","currentItemWidth","displayRest","suffixStyle","restNode","itemSharedProps","internalRenderItemNode","restContextProps","mergedRenderRest","overflowNode","ForwardOverflow","IdContext","getMenuId","useMenuId","MenuContext","InheritableContextProvider","locked","inheritableContext","mergeProps","EmptyList","PathRegisterContext","useMeasure","PathTrackerContext","useFullPath","parentKeyPath","PathUserContext","focusable","includePositive","isFocusableElement","isContentEditable","tabIndexAttr","tabIndexNum","getFocusNodeList","ArrowKeys","getFocusableElements","getNextFocusElement","parentQueryContainer","focusMenuElement","sameLevelFocusableMenuElementList","focusIndex","refreshElements","key2element","element2key","isRtl","getKeys","getKeyPath","triggerActiveKey","triggerAccessibilityOpen","originOnKeyDown","rafRef","refreshedElements","_refreshedElements","getFocusElement","focusMenuKey","offsetObj","isRootLevel","_inline","_horizontal","_vertical","_offsets","inlineTrigger","inlineSub","horizontalSub","verticalSub","tryFocus","focusTargetElement","targetElement","focusableElements","findContainerUL","controlId","parentMenuElement","PATH_SPLIT","getPathStr","OVERFLOW_KEY","useKeyRecords","internalForceUpdate","key2pathRef","path2keyRef","overflowKeys","setOverflowKeys","updateRef","registerPath","connectedPath","unregisterPath","refreshOverflowKeys","includeOverflow","isSubPathKey","pathKeys","getSubPathKeys","useMemoCallback","funRef","_funRef$current","uniquePrefix","internalId","useActive","onActive","onInactive","domEvent","useDirectionStyle","inlineIndent","warnItemProp","restInfo","LegacyMenuItem","attribute","InternalMenuItem","warnKey","itemIcon","domDataId","onItemClick","overflowDisabled","contextItemIcon","_internalRenderMenuItem","PrivateContext","itemCls","legacyMenuItemRef","mergedEleRef","connectedKeys","getEventInfo","mergedItemIcon","_useActive","activeProps","directionStyle","optionRoleProps","renderNode","isSelected","MenuItem","measure","connectedKeyPath","InternalSubMenuList","SubMenuList","parseChildren","_eventKey","_child$props","placementsRtl","defaultMotions","popupPlacementMap","PopupTrigger","popupOffset","subMenuOpenDelay","subMenuCloseDelay","triggerSubMenuAction","forceSubMenuRender","innerVisible","setInnerVisible","targetMotion","targetMotionRef","mergedMotion","visibleRef","InlineSubMenuList","fixedMode","sameModeRef","setDestroy","originOnVisibleChanged","MenuContextProvider","InternalSubMenu","internalPopupClose","onTitleClick","onTitleMouseEnter","onTitleMouseLeave","openKeys","contextExpandIcon","_internalRenderSubMenuItem","subMenuPrefixCls","popupRef","originOpen","childrenSelected","childrenActive","setChildrenActive","triggerChildrenActive","newActive","mergedActive","onMergedItemClick","popupId","isOpen","isSubMenu","triggerModeRef","triggerMode","SubMenu","InternalMenuItemGroup","MenuItemGroup","convertItemsToNodes","parseItems","_childList$","_ref$mode","inlineCollapsed","disabledOverflow","_ref$subMenuOpenDelay","_ref$subMenuCloseDela","defaultOpenKeys","defaultActiveFirst","_ref$selectable","_ref$multiple","defaultSelectedKeys","onDeselect","_ref$inlineIndent","_ref$triggerSubMenuAc","_ref$overflowedIndica","overflowedIndicator","overflowedIndicatorPopupClassName","openAnimation","openTransitionName","setMounted","setUUID","newId","useUUID","_useMergedState","mergedOpenKeys","setMergedOpenKeys","triggerOpenKeys","doUpdate","inlineCacheOpenKeys","setInlineCacheOpenKeys","mergedInlineCollapsed","isInlineMode","internalMode","setInternalMode","internalInlineCollapsed","setInternalInlineCollapsed","lastVisibleIndex","setLastVisibleIndex","allVisible","_useKeyRecords","registerPathContext","pathUserContext","mergedActiveKey","setMergedActiveKey","_childList$find","_elementToFocus$focus","_refreshElements","shouldFocusKey","elementToFocus","_useMergedState5","mergedSelectKeys","setMergedSelectKeys","onInternalClick","newSelectKeys","selectInfo","triggerSelection","onInternalOpenChange","newOpenKeys","subPathKeys","privateContext","wrappedChildList","omitItems","originOmitItems","newLastIndex","ExportMenu","ItemGroup","SiderContext","EllipsisOutlined","EllipsisOutlinedSvg","firstLevel","disableMenuItemTitleTooltip","isInlineCollapsed","siderCollapsed","tooltipTitle","childrenLength","returnNode","wrapNode","renderItemChildren","customTheme","contextTheme","titleIsSpan","RcSubMenu","MenuDivider","useItems","OverrideContext","OverrideProvider","supportNodeRef","horizontalLineHeight","itemPaddingInline","menuArrowOffset","accessibilityFocus","getThemeStyle","themeSuffix","itemColor","itemSelectedColor","groupTitleColor","itemBg","subMenuItemBg","itemSelectedBg","activeBarHeight","activeBarBorderWidth","itemHoverColor","itemDisabledColor","dangerItemColor","dangerItemHoverColor","dangerItemSelectedColor","dangerItemActiveBg","dangerItemSelectedBg","popupBg","itemHoverBg","itemActiveBg","menuSubMenuBg","horizontalItemSelectedColor","horizontalItemSelectedBg","horizontalItemBorderRadius","horizontalItemHoverBg","borderBottomColor","insetBlock","getVerticalInlineStyle","itemMarginInline","menuArrowSize","itemMarginBlock","paddingWithArrow","dropdownWidth","collapsedWidth","collapsedIconSize","inlineItemStyle","listStylePosition","listStyleType","genMenuItemStyle","iconSize","iconMarginInlineEnd","genSubMenuArrowStyle","getBaseStyle","subMenuItemBorderRadius","menuPanelMaskInset","groupTitleLineHeight","groupTitleFontSize","itemBorderRadius","colorTextDark","radiusItem","radiusSubMenuItem","colorItemText","colorItemTextHover","colorItemTextHoverHorizontal","horizontalItemHoverColor","colorGroupTitle","colorItemTextSelected","colorItemTextSelectedHorizontal","colorItemBg","colorItemBgHover","colorItemBgActive","colorSubItemBg","colorItemBgSelected","colorItemBgSelectedHorizontal","colorActiveBarWidth","colorActiveBarHeight","colorActiveBarBorderSize","colorItemTextDisabled","colorDangerItemText","colorDangerItemTextHover","colorDangerItemTextSelected","colorDangerItemBgActive","colorDangerItemBgSelected","darkItemDisabledColor","darkItemColor","darkDangerItemColor","darkItemBg","darkPopupBg","darkSubMenuItemBg","darkItemSelectedColor","darkItemSelectedBg","darkDangerItemSelectedBg","darkItemHoverBg","darkGroupTitleColor","darkItemHoverColor","darkDangerItemHoverColor","darkDangerItemSelectedColor","darkDangerItemActiveBg","menuToken","menuHorizontalHeight","menuDarkToken","getHorizontalStyle","getVerticalStyle","getRTLStyle","InternalMenu","overrideObj","_internalDisableMenuItemTitleTooltip","mergedSelectable","menuClassName","beClone","RcMenu","menuCls","genBaseStyle","dropdownArrowDistance","dropdownEdgeChildPadding","backgroundClip","dropdownToken","genStatusStyle","dropdownRender","memoTransitionName","memoPlacement","dropdownTrigger","triggerActions","onInnerOpenChange","overlayClassNameCustomized","onMenuClick","RcDropdown","renderOverlay","buttonsRender","buttonPrefixCls","dropdownProps","leftButton","rightButton","leftButtonToRender","rightButtonToRender","InternalDropdown","SELECTION_COLUMN","SELECTION_ALL","SELECTION_INVERT","SELECTION_NONE","useSelection","rowSelection","preserveSelectedRowKeys","selectedRowKeys","defaultSelectedRowKeys","getCheckboxProps","onSelectionChange","onSelectAll","onSelectInvert","onSelectNone","onSelectMultiple","selectionColWidth","selectionType","selections","renderCell","customizeRenderCell","hideSelectAll","checkStrictly","pageData","getRecordByKey","expandType","tableLocale","multipleSelect","updatePrevSelectedIndex","prevSelectedIndex","setPrevSelectedIndex","currentSelectedIndex","configPrevSelectedIndex","rangeKeys","shouldSelected","rangeKey","changedKeys","useMultipleSelect","mergedSelectedKeys","setMergedSelectedKeys","preserveRecordsRef","updatePreserveRecordsCache","newCache","convertData","keysSet","preserveRecords","flattedData","checkboxPropsMap","isCheckboxDisabled","derivedSelectedKeys","derivedHalfSelectedKeys","derivedSelectedKeySet","derivedHalfSelectedKeySet","setSelectedKeys","availableKeys","triggerSingleSelection","mergedSelections","checkProps","keySet","recordKeys","checkedCurrentAll","checkedCurrentSome","onSelectAllChange","changeKeys","columnTitleCheckbox","customizeSelections","onSelectionClick","allDisabledData","allDisabled","allDisabledAndChecked","allDisabledSomeChecked","mergedIndeterminate","isMultiple","recordKey","originCheckedKeys","nextCheckedKeys","tempKeySet","restColumns","selectionColumnIndex","prevCol","nextCol","mergedFixed","columnCls","selectionColumn","renderSelectionCell","useProxyImperativeHandle","refObj","_antProxy","isWindow","Document","getScroll","frameFunc","nextScrollTop","easeInOutCubic","themeStyle","viewBox","fillRule","rx","ry","Simple","shadowColor","contentColor","genSharedEmptyStyle","emptyImgHeight","emptyImgHeightMD","emptyImgHeightSM","emptyToken","emptyImgCls","defaultEmptyImg","DefaultEmptyImg","simpleEmptyImg","SimpleEmptyImg","imageStyle","des","imageNode","PRESENTED_IMAGE_DEFAULT","PRESENTED_IMAGE_SIMPLE","refreshOnChange","screensRef","supportScreens","DoubleLeftOutlined","DoubleLeftOutlinedSvg","DoubleRightOutlined","DoubleRightOutlinedSvg","LeftOutlined","LeftOutlinedSvg","defaultPageSizeOptions","_props$pageSizeOption","pageSizeOptions","changeSize","goButton","quickGo","Select","selectComponentClass","selectPrefixCls","buildOptionText","goInputText","setGoInputText","getValidValue","mergeBuildOptionText","KEYCODE","changeSelect","goInput","gotoButton","Option","showSearch","optionLabelProp","onKeyPress","itemRender","pager","defaultItemRender","isFinite","calculatePage","_pageSize","_classNames5","_props$selectPrefixCl","currentProp","_props$defaultCurrent","defaultCurrent","_props$total","pageSizeProp","_props$defaultPageSiz","defaultPageSize","_props$onChange","hideOnSinglePage","_props$showPrevNextJu","showPrevNextJumpers","showQuickJumper","showLessItems","_props$showTitle","_props$onShowSizeChan","onShowSizeChange","_props$locale","zhCN","_props$totalBoundaryS","totalBoundaryShowSizeChanger","simple","showTotal","showSizeChangerProp","showSizeChanger","_props$itemRender","jumpPrevIcon","jumpNextIcon","paginationRef","setCurrent","internalInputVal","setInternalInputVal","jumpPrevPage","jumpNextPage","getItemIcon","inputValue","allPages","shouldDisplayQuickJumper","handleKeyUp","newPage","hasPrev","hasNext","prevHandle","nextHandle","jumpPrevHandle","jumpNextHandle","runIfEnter","restParams","handleGoTO","jumpPrev","totalText","jumpNext","pagerList","pagerProps","prevPage","nextPage","simplePager","pageBufferSize","Pager","prevItemTitle","nextItemTitle","jumpPrevContent","jumpNextContent","lastOne","prevButton","renderPrev","prevDisabled","nextDisabled","nextTabIndex","nextButton","renderNext","Options","newCurrent","nextCurrent","customizeIcon","customizeIconProps","_onMouseDown","WebkitUserSelect","unselectable","BaseSelectContext","useLock","_inputNode2","editable","activeDescendantId","_onChange","onPaste","_onCompositionEnd","_inputNode","originProps","onOriginKeyDown","onOriginChange","onOriginMouseDown","onOriginCompositionStart","onOriginCompositionEnd","isBrowserClient","isTitleType","getTitle","_value$key","onPreventMouseDown","searchValue","autoClearSearchValue","removeIcon","maxTagCount","maxTagTextLength","_props$maxTagPlacehol","maxTagPlaceholder","omittedValues","tagRender","onToggleOpen","onRemove","onInputChange","onInputPaste","onInputKeyDown","onInputMouseDown","onInputCompositionStart","onInputCompositionEnd","measureRef","inputWidth","setInputWidth","selectionPrefixCls","inputEditable","defaultRenderSelector","itemDisabled","closable","TransBtn","selectionNode","valueItem","displayLabel","strLabel","customizeRenderSelector","activeValue","inputChanged","setInputChanged","combobox","hasTextInput","selectionTitle","placeholderNode","compositionStatusRef","tokenWithEnter","onSearchSubmit","_useLock2","getInputMouseDown","setInputMouseDown","pastedTextRef","triggerOnSearch","sharedProps","currentKeyCode","replacedText","selectNode","MultipleSelector","SingleSelector","inputMouseDown","SelectTrigger","dropdownStyle","_props$direction","popupNode","mergedBuiltinPlacements","getBuiltInPlacements","mergedTransitionName","isNumberPopupWidth","getPopupElement","childrenAsData","mergedLabel","groupLabel","injectPropsWithOption","newOption","DEFAULT_OMIT_PROPS","BaseSelect","_customizeRawInputEle","omitDomProps","displayValues","onDisplayValuesChange","emptyOptions","_props$notFoundConten","notFoundContent","onClear","getRawInputElement","onDropdownVisibleChange","onActiveValueChange","onSearchSplit","tokenSeparators","OptionList","_props$showAction","mergedShowSearch","selectorDomRef","selectorRef","blurRef","_useDelayReset","setBool","cancelLatest","useDelayReset","_useDelayReset2","mockFocused","setMockFocused","cancelSetMockFocused","_selectorRef$current","_selectorRef$current2","mergedSearchValue","_displayValues$","customizeInputElement","customizeRawInputElement","customizeRawInputRef","rendered","setRendered","innerOpen","setInnerOpen","emptyListContent","tokenSeparator","SelectContext","rawValues","onInternalSearch","searchText","fromTyping","isCompositing","newSearchText","separatedList","separate","restTokens","prevList","unitStr","getSeparatedContent","patchLabels","getClearLock","setClearLock","focusRef","activeTimeoutIds","timeoutId","onTriggerVisibleChange","customizedTrigger","onGlobalMouseDown","useSelectTriggerControl","_triggerRef$current2","arrowNode","baseSelectContext","toggleOpen","showSuffixIcon","_useAllowClear","onClearMouseDown","useAllowClear","_selectorRef$current4","optionList","selectorNode","_selectorRef$current3","restArgs","clearLock","cloneDisplayValues","removedDisplayValue","OptGroup","isSelectOptGroup","isSelectOption","_useBaseProps","onPopupScroll","flattenOptions","onActiveValue","defaultActiveFirstOption","menuItemSelectedIcon","listHeight","optionRender","memoFlattenOptions","overMaxCount","onListMouseDown","getEnabledActiveIndex","setActiveIndex","fromKeyboard","flattenItem","onSelectValue","appVersion","_item$data","omitFieldNameList","getLabel","getItemAriaProps","itemData","a11yProps","itemIndex","groupOption","_data$title","groupTitle","optionPrefixCls","optionClassName","iconVisible","optionTitle","retId","getUUID","convertChildrenToData","optionOnly","_ref2$props","_ref$props","convertNodeToOption","optionFilterProp","mergedOptions","valueOptions","labelOptions","setLabelOptions","labelOptionsMap","isChildren","useRefFunc","funcRef","OMIT_DOM_PROPS","backfill","_props$autoClearSearc","_props$dropdownMatchS","filterOption","filterSort","_props$listHeight","_props$listItemHeight","labelInValue","mergedFilterOption","mergedFieldNames","setSearchValue","parsedOptions","useOptions","convert2LabelValues","draftValues","rawLabel","rawKey","rawDisabled","rawTitle","_val$value","isRawValue","_option$key","internalValue","setInternalValue","rawLabeledValues","_values$","isComboNoValue","_useCache","labeledValues","_cacheRef$current","prevValueCache","prevOptionCache","patchedValues","_prevValueCache$get","valueCache","optionCache","_useCache2","mergedValues","getMixedOption","firstValue","_item$label","_mergedValues$","strValue","createTagOption","filledTagOptions","cloneOptions","existOptions","filteredOptions","fieldOptions","fieldLabel","customizeFilter","upperSearch","wrapOption","subOptions","subItem","useFilterOptions","filledSearchOptions","orderedFilteredOptions","displayOptions","isGroupOption","grpLabel","newVal","_mergedValues$index","returnValues","returnOptions","setActiveValue","accessibilityIndex","setAccessibilityIndex","mergedDefaultActiveFirstOption","_ref2$source","getSelectEnt","_option$key2","_getSelectEnt2","wrappedValue","_option","_getSelectEnt4","_wrappedValue","_option2","cloneValues","mergedSelect","selectContext","realVirtual","nextValues","formatted","newRawValues","words","patchValues","newRawValue","TypedSelect","buildInPlacements","genItemStyle","optionHeight","optionFontSize","optionLineHeight","optionPadding","selectItemCls","slideUpEnterActive","slideUpAppearActive","slideUpLeaveActive","dropdownPlacementCls","fontVariant","optionActiveBg","optionSelectedColor","optionSelectedFontWeight","optionSelectedBg","genSizeStyle","selectOverflowPrefixCls","selectItemHeight","multipleSelectItemHeight","selectItemDist","selectHeight","getSelectItemStyle","multipleSelectorBgDisabled","multipleItemColorDisabled","multipleItemBorderColorDisabled","inputPaddingHorizontalBase","multipleItemHeightLG","selectHeightWithoutBorder","WebkitAppearance","showArrowPaddingInlineEnd","genSingleStyle","inputPaddingHorizontalSM","singleItemHeightLG","selectorBg","hoverBorderHover","activeShadowColor","multipleItemBg","multipleItemBorderColor","genSelectorStyle","getSearchInputWithoutBorderStyle","appearance","genSelectStyle","genMultipleStyle","genDropdownStyle","selectToken","multipleItemHeight","clearBg","CheckOutlined","CheckOutlinedSvg","CloseOutlined","CloseOutlinedSvg","SECRET_COMBOBOX_MODE_DO_NOT_USE","InternalSelect","customListItemHeight","propDirection","customizeVariant","renderEmpty","contextDirection","contextPopupMatchSelectWidth","useVariants","useShowArrow","mergedPopupMatchSelectWidth","mergedNotFound","DefaultRenderEmpty","getSuffixIconNode","arrowIcon","mergedSuffixIcon","mergedRemoveIcon","useIcons","selectProps","mergedPopupClassName","RcSelect","MiniSelect","MiddleSelect","genPaginationDisabledStyle","itemActiveBgDisabled","itemActiveColorDisabled","genPaginationMiniStyle","itemSizeSM","paginationMiniOptionsMarginInlineStart","miniOptionsSizeChangerTop","paginationMiniQuickJumperInputWidth","genPaginationSimpleStyle","paginationItemPaddingInline","itemInputBg","inputOutlineOffset","genPaginationJumpStyle","paginationEllipsisLetterSpacing","paginationEllipsisTextIndent","itemSize","paginationSlashMarginInlineEnd","paginationSlashMarginInlineStart","genPaginationItemStyle","genPaginationStyle","genPaginationFocusStyle","itemLinkBg","paginationToken","genBorderedStyle","customizeSelectPrefixCls","customLocale","mergedShowSizeChanger","iconsProps","isSmall","extendedClassName","BorderedStyle","RcPagination","_ref$atBegin","atBegin","timeoutID","_ref$noTrailing","noTrailing","_ref$noLeading","noLeading","_ref$debounceMode","debounceMode","cancelled","lastExec","clearExistingTimeout","arguments_","elapsed","_ref2$upcomingOnly","upcomingOnly","antSpinMove","antRotate","genSpinStyle","contentHeight","textShadow","dotSizeSM","dotSizeLG","spinDotDefault","animationDirection","animationDelay","spinToken","defaultIndicator","Spin","spinning","customSpinning","tip","wrapperClassName","setSpinning","shouldDelay","showSpinning","isNestedPattern","spinClassName","containerClassName","divProps","spinElement","indicator","dotClassName","renderIndicator","setDefaultIndicator","iconPrefix","getColumnKey","getColumnPos","renderColumnTitle","FilterFilled","FilterFilledSvg","_objectDestructuringEmpty","MotionTreeNode","motionNodes","motionType","onOriginMotionStart","onMotionStart","onOriginMotionEnd","onMotionEnd","treeNodeRequiredProps","targetVisible","triggerMotionEndRef","triggerMotionEnd","triggerStart","triggerEnd","setFirstMount","useUnmount","treeNodeProps","TreeNode","getExpandRange","shorter","longer","shorterStartIndex","shorterEndNode","longerStartIndex","longerEndIndex","MOTION_KEY","MotionNode","MotionEntity","MotionFlattenData","getMinimumRangeTransitionRange","NodeList","activeItem","onActiveChange","onListChangeStart","onListChangeEnd","indentMeasurerRef","getIndentWidth","prevExpandedKeys","setPrevExpandedKeys","transitionData","setTransitionData","transitionRange","setTransitionRange","setMotionType","dataRef","latestData","diffExpanded","prevLen","nextLen","findExpandedKeys","keyIndex","rangeNodes","newTransitionData","_keyIndex","_rangeNodes","_newTransitionData","getAccessibilityPath","originSet","Tree","_args","treeData","flattenNodes","listChanging","_this$state","dragStartMousePosition","setExpandedKeys","onWindowDragEnd","_this$state2","_node$props","currentMouseOverDroppableNodeKey","_calcDropPosition","delayedDragEnterLogic","resetDragState","_this$state3","_calcDropPosition2","cleanDragState","_this$getActiveItem","outsideTree","_this$state4","abstractDropNodeProps","getTreeNodeRequiredProps","getActiveItem","dropToChild","dropResult","dragNodesKeys","dropToGap","_this$state5","nodeItem","eventNode","expandAction","triggerExpandActionExpand","_this$state6","targetSelected","selectedNodes","selectedKey","setUncontrolledState","checkedObj","_this$state7","oriCheckedKeys","oriHalfCheckedKeys","eventObj","checkedNodes","checkedKey","_conductCheck","_checkedKeys","_halfCheckedKeys","_conductCheck2","checkedNodesPositions","loadPromise","_ref$loadedKeys","_ref$loadingKeys","newLoadedKeys","loadingRetryTimes","currentLoadedKeys","onRightClick","_this$state8","_this$state9","_this$state10","targetExpanded","newFlattenTreeData","expandedKeysToRestore","newActiveKey","_this$props9","_this$props9$itemScro","itemScrollOffset","_this$state11","_this$state12","_this$state13","_this$props10","offsetActiveKey","atomic","forceState","destroyed","needSync","allPassed","onUpdated","_this$props11","_this$props11$itemScr","draggableConfig","_this$state14","_this$props12","showLine","_this$props12$tabInde","rootStyle","entitiesMap","checkedKeyEntity","autoExpandParent","defaultExpandParent","defaultExpandAll","cloneKeyEntities","defaultExpandedKeys","defaultCheckedKeys","_checkedKeyEntity","_checkedKeyEntity$che","_checkedKeyEntity$hal","conductKeys","FileOutlined","FileOutlinedSvg","FolderOpenOutlined","FolderOpenOutlinedSvg","FolderOutlined","FolderOutlinedSvg","HolderOutlined","HolderOutlinedSvg","treeNodeFX","getSwitchStyle","getDropIndicatorStyle","treeCls","treeNodeCls","treeNodePadding","titleHeight","nodeSelectedBg","nodeHoverBg","treeCheckBoxMarginHorizontal","genDirectoryStyle","directoryNodeSelectedBg","directoryNodeSelectedColor","genTreeStyle","treeToken","getCheckboxStyle","startPosition","CaretDownFilled","CaretDownFilledSvg","MinusSquareOutlined","MinusSquareOutlinedSvg","PlusSquareOutlined","PlusSquareOutlinedSvg","showLeafIcon","leafIcon","leafCls","switcher","blockNode","customMotion","newProps","RcTree","nodeProps","SwitcherIconCom","Record","traverseNodesKey","calcRangeKeys","None","End","Start","convertDirectoryKeysToNodes","restKeys","getTreeData","DirectoryTree","lastSelectedKey","cachedSelectedKeys","getInitExpandedKeys","initExpandedKeys","connectClassName","newEvent","ctrlPick","shiftPick","newSelectedKeys","TreePure","filterSearch","tablePrefixCls","FilterDropdownMenuWrapper","flattenKeys","searchValueMatched","renderFilterItems","filterMultiple","wrapStringListType","filterMode","filterState","triggerFilter","filterDropdownOpen","onFilterDropdownOpenChange","filterResetToDefaultFilteredValue","defaultFilteredValue","filterDropdownVisible","onFilterDropdownVisibleChange","filtered","forceFiltered","propFilteredKeys","getFilteredKeysSync","setFilteredKeysSync","useSyncState","onSelectKeys","setOpenKeys","internalTriggerFilter","mergedKeys","confirm","closeDropdown","doFilter","dropdownMenuClass","onCheckAll","allFilterKeys","getFilterData","dropdownContent","filterIcon","filterDropdown","clearFilters","getFilterComponent","FilterSearch","getResetDisabled","collectFilterStates","filterStates","columnPos","filteredValues","filteredValue","injectFilter","newColumn","renderProps","FilterDropdown","generateFilterInfo","currentFilters","keyAsString","originKey","currentData","onFilter","realKey","getMergedColumns","rawMergedColumns","flatMap","onFilterChange","setFilterStates","mergedFilterStates","collectedStates","filteredKeysIsAllNotControlled","filteredKeysIsAllControlled","newFilterStates","innerColumns","DEFAULT_PAGE_SIZE","paginationTotal","paginationObj","innerPagination","setInnerPagination","mergedPagination","extendsObject","maxPage","refreshPagination","CaretDownOutlined","CaretDownOutlinedSvg","CaretUpOutlined","CaretUpOutlinedSvg","ASCEND","DESCEND","getMultiplePriority","sorter","getSortFunction","collectSortStates","sortStates","multiplePriority","sortOrder","defaultSortOrder","injectSorter","sorterStates","triggerSorter","defaultSortDirections","tableShowSorterTooltip","sortDirections","showSorterTooltip","sorterState","nextSortOrder","nextSortDirection","sortIcon","upNode","downNode","sortTip","renderSortTitle","originOnClick","originOKeyDown","renderTitle","safeColumnTitle","displayTitle","stateToInfo","generateSorterInfo","getSortData","innerSorterStates","cloneData","runningSorters","record1","record2","compareFn","compareResult","subRecords","fillTitle","columnTitleProps","cloneColumn","useTitleColumns","_renderTimes","prevRenderTimes","nextRenderTimes","tableBorderColor","tableHeaderBg","tablePaddingVertical","tablePaddingHorizontal","tableBorder","getSizeBorderStyle","paddingVertical","tablePaddingVerticalMiddle","tablePaddingHorizontalMiddle","tablePaddingVerticalSmall","tablePaddingHorizontalSmall","wordBreak","operationUnit","tableExpandIconBg","tableExpandColumnWidth","tableExpandedRowBg","expandIconMarginTop","expandIconSize","expandIconHalfInner","expandIconScale","expandIconLineOffset","tableFilterDropdownWidth","tableFilterDropdownSearchWidth","headerIconColor","tableHeaderFilterActiveBg","tableFilterDropdownBg","tableFilterDropdownHeight","filterDropdownMenuBg","tableFilterDropdownPrefixCls","treePrefixCls","zIndexTableFixed","tableBg","zIndexTableSticky","tableRadius","headerIconHoverColor","tableSelectionColumnWidth","tableSelectedRowBg","tableSelectedRowHoverBg","tableRowHoverBg","getSizeStyle","tableFontSizeMiddle","tableFontSizeSmall","tableHeaderSortHoverBg","tableFixedHeaderSortActiveBg","tableHeaderSortBg","tableBodySortBg","tableScrollThumbBg","tableScrollThumbBgHover","tableScrollThumbSize","tableScrollBg","stickyScrollBarBorderRadius","genTableStyle","tableFontSize","tableHeaderTextColor","tableHeaderCellSplitColor","tableFooterTextColor","tableFooterBg","overflowWrap","headerBg","headerColor","headerSortActiveBg","headerSortHoverBg","bodySortBg","rowHoverBg","rowSelectedBg","rowSelectedHoverBg","rowExpandedBg","cellPaddingBlock","cellPaddingInline","cellPaddingBlockMD","cellPaddingInlineMD","cellPaddingBlockSM","cellPaddingInlineSM","footerBg","footerColor","headerBorderRadius","cellFontSize","cellFontSizeMD","cellFontSizeSM","headerSplitColor","fixedHeaderSortActiveBg","headerFilterHoverBg","filterDropdownBg","expandIconBg","selectionColumnWidth","stickyScrollBarBg","tableToken","genSummaryStyle","genSorterStyle","genFilterStyle","genRadiusStyle","genExpandStyle","genEmptyStyle","genSelectionStyle","genFixedStyle","genStickyStyle","genEllipsisStyle","genRtlStyle","genVirtualStyle","colorFillSecondarySolid","colorFillContentSolid","colorFillAlterSolid","baseColorAction","baseColorActionHover","InternalTable","customizeDropdownPrefixCls","dataSource","legacyChildrenColumnName","needResponsive","returnWidth","useContainerWidth","rootRef","tblRef","mapCacheRef","kvMap","useLazyKVMap","changeEventInfo","triggerOnChange","changeInfo","resetPagination","scrollToFirstRowOnChange","currentDataSource","transformSorterColumns","sorterTitleProps","getSorters","onSorterChange","setSortStates","mergedSorterStates","validateStates","patchStates","multipleMode","columnTitleSorterProps","sortColumns","sortColumn","sortState","newSorterStates","useSorter","sortedData","transformFilterColumns","useFilter","mergedFilters","filterKey","transformTitleColumns","usePagination","onPaginationChange","pageProp","getPaginationParam","transformSelectionColumns","selectedKeySet","topPaginationNode","bottomPaginationNode","spinProps","paginationSize","renderPagination","defaultPosition","topPos","bottomPos","isDisable","wrapperClassNames","RcVirtualTable","RcTable","virtualProps","internalRowClassName","mergedRowClassName","ForwardTable","chemical","quantity","selectedRows","Chemicals","setSelectionType","Profile","Routers","Login","TechnicianHome","ScanQrCode","showSplash","setShowSplash","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","reportWebVitals"],"sourceRoot":""}