forked from blhough/srjc-scheduler
-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.js.map
executable file
·1 lines (1 loc) · 336 KB
/
main.js.map
1
{"version":3,"file":"main.js","sources":["..\\_schedule.js","..\\_course.js","..\\_class.js","..\\_session.js","..\\_canvas.js","..\\_info.js","..\\_add.js","..\\_custom.js","..\\_print.js","..\\main.js","..\\libs\\jquery-1.11.2.js","..\\_button.js"],"names":[],"mappings":"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UAAW,UAAW,UAAW,SAAU,UAAW,aAAc,aAAc,YAAa,aAAc,aAAc,aAAc,aAAc,WAAY,UAAW,YAAa,UAAW,YAAa,UAAW,WAAY,WAAY,WAAY,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,UAAW,WAAY,UAAW,QAAS,QAAS,QAAS,UAAW,SAAU,SAAU,SAAU,UAAW,WAAY,UAAW,UAAW,UAAW,aAAc,UAAW,WAAY,WAAY,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAAY,QAAS,UAAW,QAAS,UAAW,QAAS,YAAa,YAAa,WAAY,YAAa,QAAS,OAAQ,WAAY,WAAY,WAAY,SAAU,SAAU,SAAU,WAAY,WAAY,WAAY,YAAa,YAAa,WAAY,YAAa,YAAa,YAAa,YAAa,WAAY,YAAa,WAAY,YAAa,YAAa,WAAY,WAAY,YAAa,YAAa,WAAY,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,SAAU,WAAY,WAAY,WAAY,YAAa,YAAa,YAAa,WAAY,WAAY,QAAS,QAAS,SAAU,YAAa,YAAa,YAAa,YAAa,aAAc,aAAc,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,aAAc,aAAc,aAAc,aAAc,UAAW,YAAa,aAAc,YAAa,YAAa,YAAa,WAAY,WAAY,UAAW,aAAc,aAAc,aAAc,aAAc,YAAa,YAAa,UAAW,UAAW,aAAc,YAAa,YAAa,aAAc,aAAc,aAAc,aAAc,YAAa,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,YAAa,SAAU,UAAW,QAAS,QAAS,QAAS,WAAY,QAAS,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,UAAW,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,WAAY,WAAY,WAAY,aAAc,aAAc,SAAU,UAAW,UAAW,WAAY,WAAY,UAAW,SAAU,SAAU,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,aAAc,WAAY,UAAW,UAAW,UAAW,UAAW,UAAW,YAAa,YAAa,YAAa,UAAW,aAAc,aAAc,aAAc,YAAa,UAAW,UAAW,SAAU,UAAW,SAAU,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,UAAW,UAAW,YAAa,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAAa,UAAW,UAAW,UAAW,WAAY,WAAY,WAAY,WAAY,UAAW,UAAW,WAAY,YAAa,UAAW,UAAW,UAAW,UAAW,SAAU,YAAa,YAAa,aAAc,YAAa,YAAa,WAAY,UAAW,YAAa,UAAW,UAAW,UAAW,UAAW,SAAU,WAAY,UAAW,WAAY,WAAY,UAAW,UAAW,UAAW,UAAW,UAAW,SAAU,UAAW,WAAY,YAAa,aAAc,aAAc,aAAc,YAAa,YAAa,WAAY,WAAY,WAAY,aAAc,UAAW,UAAW,WAAY,UAAW,WAAY,WAAY,YAAa,UAAW,WAAY,UAAW,YAAa,YAAa,WAAY,UAAW,YAAa,YAAa,WAAY,YAAa,WAAY,WAAY,UAAW,UAAW,YAAa,YAAa,UAAW,UAAW,UAAW,YAAa,UAAW,YAAa,YAAa,UAAW,UAAW,YAAa,YAAa,UAAW,UAAW,UAAW,WAAY,YAAa,YAAa,WAAY,UAAW,UAAW,WAAY,WAAY,UAAW,WAAY,UAAW,UAAW,UAAW,UAAW,UAAW,YAAa,aAAc,aAAc,WAAY,WAAY,YAAa,YAAa,YAAa,WAAY,WAAY,aAAc,WAAY,WAAY,WAAY,WAAY,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAAY,YAAa,YAAa,YAAa,YAAa,YAAa,SAAU,SAAU,SAAU,WAAY,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SAAU,UAAW,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,WAAY,WAAY,YAAa,YAAa,YAAa,YAAa,UAAW,UAAW,UAAW,WAAY,WAAY,SAAU,WAAY,UAAW,UAAW,UAAW,UAAW,QAAS,QAAS,WAAY,UAAW,WAAY,YAAa,UAAW,UAAW,UAAW,UAAW,YAAa,YAAa,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,WAAY,YAAa,WAAY,UAAW,UAAW,UAAW,UAAW,UAAW,WAAY,UAAW,UAAW,UAAW,UAAW,YAAa,WAAY,WAAY,YAAa,SAAU,SAAU,SAAU,SAAU,SAAU,WAAY,WAAY,WAAY,WAAY,UAAW,YAAa,YAAa,aAAc,aAAc,YAAa,YAAa,YAAa,YAAa,YAAa,WAAY,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,WAAY,WAAY,WAAY,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,UAAW,WAAY,UAAW,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,YAAa,YAAa,YAAa,YAAa,WAAY,WAAY,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,SAAU,SAAU,SAAU,SAAU,UAAW,WAAY,SAAU,WAAY,UAAW,UAAW,SAAU,SAAU,SAAU,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,UAAW,YAAa,YAAa,WAAY,WAAY,UAAW,UAAW,UAAW,UAAW,SAAU,UAAW,UAAW,SAAU,UAAW,SAAU,UAAW,SAAU,UAAW,UAAW,WAAY,SAAU,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,YAAa,UAAW,WAAY,SAAU,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAAY,UAAW,UAAW,WAAY,WAAY,SAAU,SAAU,SAAU,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,YAAa,YAAa,YAAa,YAAa,aAAc,aAAc,UAAW,UAAW,WAAY,SAAU,SAAU,SAAU,WAAY,WAAY,SAAU,UAAW,UAAW,UAAW,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UAAW,UAAW,UAAW,SAAU,SAAU,SAAU,SAAU,SAAU,YAAa,aAAc,YAAa,YAAa,YAAa,aAAc,UAAW,UAAW,UAAW,SAAU,SAAU,UAAW,SAAU,SAAU,SAAU,SAAU,SAAU,UAAW,UAAW,WAAY,UAAW,WAAY,UAAW,UAAW,UAAW,UAAW,UAAW,WAAY,WAAY,YAAa,SAAU,SAAU,SAAU,SAAU,SAAU,UAAW,SAAU,UAAW,UAAW,WAAY,WAAY,UAAW,WAAY,WAAY,UAAW,UAAW,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,YAAa,YAAa,WAAY,UAAW,UAAW,UAAW,QAAS,QAAS,QAAS,QAAS,SAAU,UAAW,SAAU,UAAW,YAAa,SAAU,SAAU,QAAS,SAAU,QAAS,QAAS,SAAU,UAAW,UAAW,SAAU,SAAU,SAAU,SAAU,UAAW,WAAY,WAAY,UAAW,UAAW,WAAY,WAAY,WAAY,WAAY,UAAW,SAAU,UAAW,UAAW,YAAa,YAAa,YAAa,WAAY,SAAU,WAAY,WAAY,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,UAAW,SAAU,UAAW,UAAW,WAAY,WAAY,UAAW,YAAa,YAAa,YAAa,YAAa,YAAa,UAAW,UAAW,UAAW,UAAW,WAAY,UAAW,SAAU,QAAS,UAAW,UAAW,SAAU,SAAU,SAAU,aAAc,aAAc,aAAc,YAAa,YAAa,UAAW,UAAW,UAAW,WAAY,SAAU,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAU,YAAa,WAAY,UAAW,UAAW,WAAY,UAAW,UAAW,UAAW,WAAY,WAAY,YAClxY,KACA,EAAqB,EACrB,EAAW,EACX,EAAa,EAGb,GACA,UAAS,EAAA,YACT,aAAY,EAAA,eACZ,OAAM,EAAA,YACN,WAAU,EAAA,gBACV,eAAc,EAAA,qBACd,eAAc,EAAA,iBACd,YAAW,EAAA,cAIf,MAAK,KAAO,WAER,EAAK,cAGT,KAAK,WAAa,WAEd,EAAE,aAAa,MAAO,WAElB,EAAK,cAAc,KAGvB,EAAE,UAAU,KAAM,WAEd,EAAK,cAAc,KAGvB,EAAE,UAAU,MAAO,WAEf,EAAK,oBAAoB,KAG7B,EAAE,eAAe,MAAO,WAEpB,EAAK,uBAGT,EAAE,YAAY,MAAO,WAEjB,EAAE,UAAU,IAAG,IACf,EAAK,cAAc,GACnB,EAAK,oBAAoB,KAG7B,EAAE,UAAU,GAAE,QAAW,WAErB,GAAI,GAAQ,EAAE,UAAU,KAEd,MAAL,EAED,EAAK,uBAAwB,GAI7B,EAAE,eAAe,KAAI,MAI7B,EAAE,eAAe,GAAE,QAAQ,gCAAoC,WAE3D,EAAK,kBAAiB,EAAK,SAAI,EAIhC,UAAW,QAAS,SAAU,GAEX,IAAb,EAAE,QAEE,GAE6B,EAAzB,EAAqB,IAEtB,EAAE,iBACF,EAAE,eAAe,SAAQ,SAAa,KAAkB,KAAU,YAAW,UAC7E,EAAE,eAAe,SAAQ,SAAa,EAAkB,KAAS,SAAQ,UAGzE,EAAE,WAAW,OAAO,SAEhB,WAAa,EAAqB,GAAM,GACzC,MAKQ,IAAb,EAAE,QAEH,GAEI,EAAqB,IAEtB,EAAE,iBACF,EAAE,eAAe,SAAQ,SAAa,IAAkB,KAAS,YAAW,UAC5E,EAAE,eAAe,SAAQ,SAAa,EAAkB,KAAS,SAAQ,UAGzE,EAAE,WAAW,OAAO,SAEhB,WAAa,EAAqB,GAAM,GACzC,MAMQ,IAAb,EAAE,QAEH,IAED,EAAE,iBACF,EAAK,kBAAmB,EAAE,eAAe,SAAQ,SAAa,EAAkB,iCAChF,QAAQ,IAAG,UAGI,IAAb,EAAE,SAEH,IAED,EAAE,UAAU,IAAG,IACf,EAAK,cAAc,GACnB,EAAK,oBAAoB,OAOzC,KAAK,aAAe,SAAU,GAEV,SAAX,GAED,GAAgB,EAChB,KAAK,aAAc,IAEb,GAEN,GAAe,EACf,EAAE,UAAU,SAAQ,UACpB,EAAE,aAAa,YAAW,UAC1B,EAAE,OAAO,SAAQ,UACjB,EAAE,UAAU,QACZ,EAAE,eAAe,KAAI,MAIrB,GAAe,EACK,KAAf,EAAE,UAAU,QAEb,EAAE,UAAU,YAAW,UACvB,EAAE,aAAa,SAAQ,UACvB,EAAE,OAAO,YAAW,UACpB,KAAK,oBAAoB,MAKrC,KAAK,mBAAqB,SAAU,GAEhB,SAAX,GAED,GAAsB,EACtB,KAAK,mBAAoB,IAEnB,GAEN,GAAqB,EAErB,EAAE,WAAW,SAAQ,UACrB,EAAE,eAAe,YAAW,QAI5B,GAAqB,EACrB,EAAE,WAAW,YAAW,UACxB,EAAE,eAAe,SAAQ,QAOjC,KAAK,kBAAoB,SAAQ,GAE7B,GAAI,GAAW,EAAO,KAAI,aAE1B,SAAQ,IAAK,GAAW,EAEtB,MAEE,IAAG,6CACH,WAAY,WAAQ,EAEZ,SAAQ,YAKhB,MAEI,IAAK,GAET,QAAS,IACT,SAAU,SAAU,GAEhB,GAAI,GAAa,EAAS,YAAY,GAGlC,YAAW,WACf,EAAgB,KAAM,EAMtB,KAEI,QAAQ,IAAK,GACb,EAAa,EAAK,gBAAiB,GACnC,QAAQ,IAAK,GACb,KAAK,SAAS,UAAW,EAAY,GAAW,EAE5C,OAAM,sBAAoB,EAC1B,SAAQ,UAEhB,MAAQ,GAEJ,QAAQ,KAAI,uBACI,EACZ,YAAW,UAAS,EACpB,SAAQ,SAAQ,EAEhB,OAAM,sBAEV,EAAgB,MAChB,WAAY,WAAQ,EAEZ,YAAW,SAAQ,EACnB,SAAQ,QAAW,UACxB,KAIP,WASJ,MAAO,WAEH,QAAQ,KAAI,2BAKxB,KAAK,gBAAkB,SAAU,GAI7B,MAFA,GAAa,EAAW,OACxB,EAAa,EAAW,MAAK,cAIjC,KAAK,uBAAyB,SAAU,GAEpC,GAAI,MACA,EAAM,EAAc,OACpB,EAAK,EAET,GAAS,EAAO,cAChB,EAAS,EAAO,QAAO,cAAa,QAOpC,KAAM,GALF,GAAY,EAAO,OAKb,EAAI,EAAO,EAAJ,EAAS,IAEtB,EAAQ,EAAe,GAElB,EAAM,UAAW,EAAG,KAAgB,GAErC,EAAS,KAAM,EAIvB,GAAK,kBAAmB,IAK5B,KAAK,kBAAoB,SAAU,GAI/B,GAFA,EAAa,EAAS,OAEF,IAAf,EAGD,WADA,GAAE,eAAe,KAAI,gCAKrB,GAAE,eAAe,KAAI,GAIzB,KAAM,GAAI,GAAI,EAAO,EAAJ,EAAgB,IAAC,CAE9B,GAAG,GAAI,EAAA,QACH,EAAS,EAAU,EAAC,GAEpB,KAAI,aAAgB,GACnB,OAAQ,GACR,SAAU,EAAE,gBACf,EAAK,QAAS,EAAQ,GAAe,KAAO,EAEtC,OAAM,sBAAoB,EAC1B,SAAQ;CAKpB,EAAE,eAAe,SAAQ,YAAe,SAAQ,UAChD,EAAW,EAAE,eAAe,SAAQ,YAAe,cAEnD,EAAqB,GCrV7B,QAAS,UAEL,KAAK,WAEL,IAAI,GAAO,KAKP,GACA,gBAAe,EAAA,sBACf,OAAM,EAAA,WACN,UAAS,EAAA,WACT,SAAQ,EAAA,cAIZ,MAAK,KAAO,WAER,EAAK,cAGT,KAAK,WAAa,WAEd,EAAE,gBAAgB,MAAO,WAErB,EAAK,eACL,QAAQ,IAAK,EAAK,UAGtB,EAAE,SAAS,MAAO,WAEd,EAAK,YACL,QAAQ,IAAG,gBAKnB,KAAK,aAAe,SAAU,GAEV,SAAX,GAED,EAAK,QAAU,EAAK,OACpB,KAAK,aAAc,EAAK,SAElB,GAEN,EAAK,QAAS,EACd,EAAE,UAAU,SAAQ,UACpB,EAAE,OAAO,SAAQ,YAIjB,EAAK,QAAS,EACd,EAAE,UAAU,YAAW,UACvB,EAAE,OAAO,YAAW,YAO5B,KAAK,UAAY,WAEb,GAAI,GAAS,GAAI,MACjB,MAAK,SAAS,KAAM,GACpB,EAAO,QAMf,QAAS,SAEL,KAAK,MAAK,GACV,KAAK,MAAK,GACV,KAAK,kBACL,KAAI,KAAQ,IAEZ,IAAI,GAAO,KAEP,GACA,UAAS,EAAA,gBAKb,MAAK,KAAO,WAER,EAAK,MAAQ,YACb,EAAI,KAAQ,EAAK,iBAAkB,EAAK,QAI5C,KAAK,iBAAmB,SAAU,GAE9B,GAAG,GAAU,EAAA,UAET,QAAK,yBAEL,SAAU,EAAE,UAAmC,GAEzC,OAAM,2zDAwEhB,IAAI,GAAC,EAAa,QAalB,OAbwB,GACd,OAAM,OAAM,EAEZ,KAAI,aAAgB,IAAG,aAAa,OAAY,EAAM,IAAG,KAAY,EAAS,IAAA,OAAe,EAAM,IAAM,IAAE,MAAA,EAC3G,IAAG,aAAa,OAAY,EAAM,IAAG,MAAY,EAAM,IAAM,GAAC,OAAe,EAAM,IAAM,IAAE,MAErG,WAAY,WAAQ,EAEN,YAAW,QAAO,EAClB,OAAQ,EAAC,OACpB,IAGG,GAMd,QAAS,iBCjMT,QAAS,SAEL,GAAI,GAAO,KACP,EAAiB,OAAO,WAAU,SAClC,KAIA,GACA,UAAS,EAAA,cACT,MAAK,EAAA,cACL,MAAK,EAAA,oBAKT,MAAK,KAAO,WAER,EAAK,aAEL,EAAK,cACL,EAAK,cAGT,KAAK,WAAa,WAGd,EAAE,MAAM,MAAO,WAEX,OAAO,UAGX,OAAO,cAAgB,WAEnB,EAAK,eAGT,OAAO,aAAe,WAElB,EAAK,cAGT,EAAe,YAAa,SAAU,GAE7B,EAAI,QAEL,EAAK,cAIL,EAAK,gBAOjB,KAAK,YAAc,WAEf,EAAE,UAAU,SAAQ,QAEpB,IAAI,GAAW,KAAK,SAAS,SACzB,EAAa,EAAS,MAC1B,GAAc,OAAQ,EAAI,EAAc,OACxC,IAAI,GAAa,KAAM,EAAI,CAE3B,KAAO,EAAI,EAAO,EAAJ,EAAgB,IAEzB,EAAa,EAAU,GACxB,EAAc,KAAM,EAAW,UAC/B,EAAW,gBAAgB,EAI/B,KAAO,EAAI,EAAO,EAAJ,EAAgB,IAEzB,EAAa,EAAU,IAG4B,IAA/C,EAAU,KAAM,KAAI,eAAgB,QAA0E,IAA1D,EAAU,KAAM,KAAI,0BAA2B,SAErG,EAAU,KAAM,MAOvB,MAAK,OAAO,QAAQ,GAGpB,KAAK,cACL,QAAQ,IAAG,iBAGf,KAAK,WAAa,WAKd,IAAM,GAHF,GAAW,KAAK,SAAS,SACzB,EAAa,EAAS,OAEhB,EAAI,EAAO,EAAJ,EAAgB,IAE7B,EAAU,GAAI,eAAgB,EAAe,IAC7C,EAAU,GAAC,KAAQ,MAIvB,GAAE,UAAU,YAAW,SACvB,KAAK,OAAO,SACZ,QAAQ,IAAG,gBAKf,KAAK,YAAc,WAEf,EAAE,MAAM,MAAK,UACb,EAAE,MAAM,KAAI,oKAKZ,KAAM,GAHF,GAAW,KAAK,SAAS,SACzB,EAAa,EAAS,OAEhB,EAAI,EAAO,EAAJ,EAAgB,IAK7B,IAAM,GAHF,GAAW,EAAU,GAAI,SACzB,EAAa,EAAS,OAEhB,EAAI,EAAO,EAAJ,EAAgB,IAG7B,GAAK,EAAU,GAAI,OAAM,CAErB,GAAI,GAAY,EAAU,EAE1B,GAAE,MAAM,OAAM,qDAA8D,EAAU,MAAM,IAAG,oBAAyC,EAAU,GAAI,YAAW,yBAA8B,EAAU,KAAI,yBAA8B,EAAK,YAAa,GAAS,yBAAgC,EAAK,YAAa,GAAS,yBAAgC,EAAK,aAAc,GAAS,yBAAgC,EAAK,WAAY,GAAS,yBAAgC,EAAU,MAAK,yBAA8B,EAAK,aAAc,GAAS,yBAAgC,EAAU,UAAS,qBAEhkB,KAAd,EAAU,MAEX,EAAE,MAAM,OAAM,+DAAmE,EAAU,KAAI,qBAO/G,EAAE,MAAM,OAAM,oFAAwF,EAAK,gBAAa,qEAA4E,EAAK,gBAAa,oDAG1N,KAAK,cAAgB,WAQjB,IAAM,GANF,GAAU,EACV,GAAO,EAEP,EAAW,KAAK,SAAS,SACzB,EAAa,EAAS,OAEhB,EAAI,EAAO,EAAJ,EAAgB,IAK7B,IAAM,GAHF,GAAW,EAAU,GAAI,SACzB,EAAa,EAAS,OAEhB,EAAI,EAAO,EAAJ,EAAgB,IAE7B,GAAK,EAAU,GAAI,OAKf,IAAM,GAHF,GAAY,EAAU,GAAI,UAC1B,EAAc,EAAU,OAElB,EAAI,EAAO,EAAJ,EAAiB,IAAC,CAE/B,GAAI,GAAc,EAAW,EAE7B,IAA+B,IAA1B,EAAY,WAA2C,IAAxB,EAAY,QAAa,CAEzD,GAAI,GAAyC,GAAlC,WAAY,EAAY,MAE7B,OAAO,GAMT,GAAO,EAJP,GAAW,MAOf,CAIA,IAAM,GAFF,GAAQ,EAEF,EAAI,EAAG,EAAI,EAAY,MAAM,OAAQ,IAEZ,GAA1B,EAAY,MAAO,IAEpB,GAIR,KAAa,EAAY,QAAU,EAAY,WAAc,GASjF,MAHA,SAAQ,IAAG,WAAe,GAE1B,GAAW,GACN,KAAS,EACH,EAAQ,QAAS,GAAC,IAElB,EAAQ,QAAS,IAIhC,KAAK,cAAgB,WAOjB,IAAM,GALF,GAAQ,EAER,EAAW,KAAK,SAAS,SACzB,EAAa,EAAS,OAEhB,EAAI,EAAO,EAAJ,EAAgB,IAM7B,IAAM,GAHF,GAAW,EAAU,GAAI,SACzB,EAAa,EAEP,EAAI,EAAO,EAAJ,EAAgB,IAE7B,GAAK,EAAU,GAAI,OAAM,CAErB,GAAS,WAAY,EAAU,GAAI,OACnC,QAAQ,IAAG,UAAc,EAAU,GAAI,MACvC,OAKZ,MAAO,GAAM,QAAS,IAK1B,KAAK,YAAc,SAAU,GAEzB,EAAC,EAKD,KAAM,GAHF,GAAY,EAAK,UACjB,EAAc,EAAU,OAElB,EAAI,EAAO,EAAJ,EAAiB,IAE9B,GAAK,EAAW,GAAI,MACf,GAAK,EAAc,IAEpB,GAAC,OAIT,OAAO,IAGX,KAAK,YAAc,SAAU,GAEzB,EAAC,EAKD,KAAM,GAHF,GAAY,EAAK,UACjB,EAAc,EAAU,OAElB,EAAI,EAAO,EAAJ,EAAiB,IAE9B,GAAK,EAAW,GAAI,MACf,GAAK,EAAc,IAEpB,GAAC,OAIT,OAAO,IAGX,KAAK,aAAe,SAAU,GAE1B,EAAC,EAKD,KAAM,GAHF,GAAY,EAAK,UACjB,EAAc,EAAU,OAElB,EAAI,EAAO,EAAJ,EAAiB,IAE9B,GAAK,EAAW,GAAI,WACf,GAAK,EAAc,IAEpB,GAAC,OAIT,OAAO,IAGX,KAAK,WAAa,SAAU,GAExB,EAAC,EAKD,KAAM,GAHF,GAAY,EAAK,UACjB,EAAc,EAAU,OAElB,EAAI,EAAO,EAAJ,EAAiB,IAE9B,GAAK,EAAW,GAAI,SACf,GAAK,EAAc,IAEpB,GAAC,OAIT,OAAO,IAGX,KAAK,aAAe,SAAU,GAE1B,EAAC,EAKD,KAAM,GAHF,GAAY,EAAK,UACjB,EAAc,EAAU,OAElB,EAAI,EAAO,EAAJ,EAAiB,IAE9B,GAAK,EAAW,GAAI,MACf,GAAK,EAAc,IAEpB,GAAC,OAIT,OAAO,ICrUf,QAAS,QAEL,GAAI,GAAO,IACX,MAAK,SAAW,KAChB,KAAK,KAAO,KACZ,KAAK,OAAS,KACd,KAAK,IAAM,KACX,KAAK,OAAS,KAGd,KAAK,KAAO,WAER,EAAK,SAAW,GAAI,UACpB,EAAK,OAAS,GAAI,QAClB,EAAK,KAAO,GAAI,MAChB,EAAK,IAAM,GAAI,KACf,EAAK,OAAS,GAAI,QAClB,EAAK,MAAQ,GAAI,OAEjB,EAAK,IAAI,OACT,EAAK,OAAO,OACZ,EAAK,OAAO,OACZ,EAAK,MAAM,QAAI,EAAA,WAGJ,MAAO,WAElB,GAAI,IAAK,sIAAuI,iIAAiI,uIACjR,GAAK,SAAS,UAAW,EAAK,SAAY,KA2BlD,QAAS,YAAY,GAEjB,GAAI,GAAM,CAEV,QAAS,GAEL,IAAK,GACD,GAAO,EACP,MACJ,KAAK,GACD,GAAO,EACP,MACJ,KAAK,GACD,GAAO,EACP,MACJ,KAAK,GACD,GAAO,GACP,MACJ,KAAK,GACD,GAAO,GACP,MACJ,KAAK,GACD,GAAO,GACP,MACJ,KAAK,GACD,GAAO,GACP,MACJ,KAAK,GACD,GAAO,GACP,MACJ,KAAK,IACD,GAAO,GACP,MACJ,KAAK,IACD,GAAO,GACP,MACJ,KAAK,IACD,GAAO,IAIf,MAAO,IC9FV,SAAU,EAAQ,GAEA,gBAAN,SAA4C,gBAAd,QAAO,QAQhD,OAAO,QAAU,EAAO,SACvB,EAAS,GAAQ,GACjB,SAAU,GACT,IAAM,EAAE,SACP,KAAM,IAAI,OAAK,2CAEhB,OAAO,GAAS,IAGlB,EAAS,IAII,mBAAN,QAAyB,OAAS,KAAM,SAAU,EAAQ,GAqhBnE,QAAS,GAAa,GACrB,GAAI,GAAS,EAAI,OAChB,EAAO,GAAO,KAAM,EAErB,OAAS,aAAJ,GAAuB,GAAO,SAAU,IACrC,EAGc,IAAjB,EAAI,UAAkB,GACnB,EAGG,UAAJ,GAA+B,IAAX,GACb,gBAAN,IAAuB,EAAS,GAAO,EAAS,IAAO,GAmiEhE,QAAS,GAAQ,EAAU,EAAW,GACrC,GAAK,GAAO,WAAY,GACvB,MAAO,IAAO,KAAM,EAAU,SAAU,EAAM,GAE7C,QAAS,EAAU,KAAM,EAAM,EAAG,KAAW,GAK/C,IAAK,EAAU,SACd,MAAO,IAAO,KAAM,EAAU,SAAU,GACvC,MAAS,KAAS,IAAgB,GAKpC,IAAqB,gBAAT,GAAqB,CAChC,GAAK,GAAU,KAAM,GACpB,MAAO,IAAO,OAAQ,EAAW,EAAU,EAG5C,GAAY,GAAO,OAAQ,EAAW,GAGvC,MAAO,IAAO,KAAM,EAAU,SAAU,GACvC,MAAS,IAAO,QAAS,EAAM,IAAe,IAAQ,IAiTxD,QAAS,GAAS,EAAK,GACtB,EACC,GAAM,EAAK,SACF,GAAwB,IAAjB,EAAI,SAErB,OAAO,GA8ER,QAAS,GAAe,GACvB,GAAI,GAAS,GAAc,KAI3B,OAHA,IAAO,KAAM,EAAQ,MAAO,QAAmB,SAAU,EAAG,GAC3D,EAAQ,IAAS,IAEX,EA2YR,QAAS,KACH,GAAS,kBACb,GAAS,oBAAmB,mBAAsB,GAAW,GAC7D,EAAO,oBAAmB,OAAU,GAAW,KAG/C,GAAS,YAAW,qBAAwB,GAC5C,EAAO,YAAW,SAAY,IAOhC,QAAS,MAEH,GAAS,kBAA8B,SAAV,MAAM,MAAsC,aAAnB,GAAS,cACnE,IACA,GAAO,SA+JT,QAAS,GAAU,EAAM,EAAK,GAG7B,GAAc,SAAT,GAAwC,IAAlB,EAAK,SAAc,CAE7C,GAAI,GAAI,QAAa,EAAI,QAAS,GAAU,OAAU,aAItD,IAFA,EAAO,EAAK,aAAc,GAEV,gBAAJ,GAAgB,CAC3B,IACC,EAAW,SAAJ,GAAkB,EACpB,UAAJ,GAAmB,EACf,SAAJ,EAAkB,MAEjB,EAAI,KAAU,GAAQ,EACvB,GAAO,KAAM,GAAS,GAAO,UAAW,GACxC,EACA,MAAO,IAGT,GAAO,KAAM,EAAM,EAAK,OAGxB,GAAO,OAIT,MAAO,GAIR,QAAS,GAAmB,GAC3B,GAAI,EACJ,KAAM,IAAQ,GAGb,IAAS,SAAJ,IAAmB,GAAO,cAAe,EAAI,MAGzC,WAAJ,EACJ,OAAO,CAIT,QAAO,EAGR,QAAS,GAAc,EAAM,EAAM,EAAM,GACxC,GAAM,GAAO,WAAY,GAAzB,CAIA,GAAI,GAAK,EACR,EAAc,GAAO,QAIrB,EAAS,EAAK,SAId,EAAQ,EAAS,GAAO,MAAQ,EAIhC,EAAK,EAAS,EAAM,GAAgB,EAAM,IAAiB,CAI5D,IAAO,GAAO,EAAM,KAAS,GAAQ,EAAM,GAAI,OAAmB,SAAT,GAAiC,gBAAJ,GAgEtF,MA5DM,KAIJ,EADI,EACC,EAAM,GAAgB,EAAW,OAAS,GAAO,OAEjD,GAID,EAAO,KAGZ,EAAO,GAAO,MAAgB,OAAQ,GAAO,QAK9B,gBAAJ,IAAgC,kBAAJ,MAClC,EACJ,EAAO,GAAO,GAAO,OAAQ,EAAO,GAAM,GAE1C,EAAO,GAAK,KAAO,GAAO,OAAQ,EAAO,GAAK,KAAM,IAItD,EAAY,EAAO,GAKb,IACC,EAAU,OACf,EAAU,SAGX,EAAY,EAAU,MAGT,SAAT,IACJ,EAAW,GAAO,UAAW,IAAW,GAKzB,gBAAJ,IAGX,EAAM,EAAW,GAGL,MAAP,IAGJ,EAAM,EAAW,GAAO,UAAW,MAGpC,EAAM,EAGA,GAGR,QAAS,GAAoB,EAAM,EAAM,GACxC,GAAM,GAAO,WAAY,GAAzB,CAIA,GAAI,GAAW,EACd,EAAS,EAAK,SAGd,EAAQ,EAAS,GAAO,MAAQ,EAChC,EAAK,EAAS,EAAM,GAAO,SAAY,GAAO,OAI/C,IAAM,EAAO,GAAb,CAIA,GAAK,IAEJ,EAAY,EAAM,EAAO,GAAO,EAAO,GAAK,MAE9B,CAGP,GAAO,QAAS,GAsBrB,EAAO,EAAK,OAAQ,GAAO,IAAK,EAAM,GAAO,YAnBxC,IAAQ,GACZ,GAAS,IAIT,EAAO,GAAO,UAAW,GAExB,EADI,IAAQ,IACH,GAEF,EAAK,MAAK,MAapB,EAAI,EAAK,MACT,MAAQ,WACA,GAAW,EAAK,GAKxB,IAAK,GAAO,EAAkB,IAAc,GAAO,cAAc,GAChE,QAMG,UACE,GAAO,GAAK,KAIb,EAAmB,EAAO,QAM5B,EACJ,GAAO,WAAa,IAAQ,GAIjB,GAAQ,eAAiB,GAAS,EAAM,aAE5C,GAAO,GAId,EAAO,GAAO,QA+YhB,QAAS,KACR,OAAO,EAGR,QAAS,KACR,OAAO,EAGR,QAAS,KACR,IACC,MAAO,IAAS,cACf,MAAQ,KA8+BX,QAAS,GAAoB,GAC5B,GAAI,GAAO,GAAU,MAAK,KACzB,EAAW,EAAS,wBAErB,IAAK,EAAS,cACb,KAAQ,EAAK,QACZ,EAAS,cACR,EAAK,MAIR,OAAO,GAyCR,QAAS,GAAQ,EAAS,GACzB,GAAI,GAAO,EACV,EAAI,EACJ,QAAe,GAAQ,uBAAyB,GAAe,EAAQ,qBAAsB,GAAG,WACxF,GAAQ,mBAAqB,GAAe,EAAQ,iBAAkB,GAAG,KAChF,MAEF,KAAM,EACL,IAAM,KAAY,EAAQ,EAAQ,YAAc,EAA8B,OAApB,EAAO,EAAM,IAAa,KAC7E,GAAO,GAAO,SAAU,EAAM,GACnC,EAAM,KAAM,GAEZ,GAAO,MAAO,EAAO,EAAQ,EAAM,GAKtC,OAAe,UAAR,GAAqB,GAAO,GAAO,SAAU,EAAS,GAC5D,GAAO,OAAS,GAAW,GAC3B,EAIF,QAAS,GAAmB,GACtB,GAAe,KAAM,EAAK,QAC9B,EAAK,eAAiB,EAAK,SAM7B,QAAS,GAAoB,EAAM,GAClC,MAAO,IAAO,SAAU,EAAI,UAC3B,GAAO,SAA+B,KAArB,EAAQ,SAAkB,EAAU,EAAQ,WAAU,MAEvE,EAAK,qBAAoB,SAAU,IAClC,EAAK,YAAa,EAAK,cAAc,cAAa,UACnD,EAIF,QAAS,GAAe,GAEvB,MADA,GAAK,MAA6C,OAArC,GAAO,KAAK,KAAM,EAAI,SAAmB,IAAU,EAAK,KAC9D,EAER,QAAS,GAAe,GACvB,GAAI,GAAQ,GAAkB,KAAM,EAAK,KAMzC,OALK,GACJ,EAAK,KAAO,EAAM,GAElB,EAAK,gBAAe,QAEd,EAIR,QAAS,GAAe,EAAO,GAG9B,IAFA,GAAI,GACH,EAAI,EACwB,OAApB,EAAO,EAAM,IAAa,IAClC,GAAO,MAAO,EAAI,cAAiB,GAAe,GAAO,MAAO,EAAY,GAAC,eAI/E,QAAS,GAAgB,EAAK,GAE7B,GAAuB,IAAlB,EAAK,UAAmB,GAAO,QAAS,GAA7C,CAIA,GAAI,GAAM,EAAG,EACZ,EAAU,GAAO,MAAO,GACxB,EAAU,GAAO,MAAO,EAAM,GAC9B,EAAS,EAAQ,MAElB,IAAK,EAAM,OACH,GAAQ,OACf,EAAQ,SAER,KAAM,IAAQ,GACb,IAAM,EAAI,EAAG,EAAI,EAAQ,GAAO,OAAY,EAAJ,EAAO,IAC9C,GAAO,MAAM,IAAK,EAAM,EAAM,EAAQ,GAAQ,IAM5C,EAAQ,OACZ,EAAQ,KAAO,GAAO,UAAY,EAAQ,QAI5C,QAAS,GAAoB,EAAK,GACjC,GAAI,GAAU,EAAG,CAGjB,IAAuB,IAAlB,EAAK,SAAV,CAOA,GAHA,EAAW,EAAK,SAAS,eAGnB,GAAQ,cAAgB,EAAM,GAAO,SAAO,CACjD,EAAO,GAAO,MAAO,EAErB,KAAM,IAAK,GAAK,OACf,GAAO,YAAa,EAAM,EAAG,EAAK,OAInC,GAAK,gBAAiB,GAAO,SAIjB,WAAR,GAAyB,EAAK,OAAS,EAAI,MAC/C,EAAe,GAAO,KAAO,EAAI,KACjC,EAAe,IAII,WAAR,GACN,EAAK,aACT,EAAK,UAAY,EAAI,WAOjB,GAAQ,YAAgB,EAAI,YAAc,GAAO,KAAK,EAAK,aAC/D,EAAK,UAAY,EAAI,YAGH,UAAR,GAAwB,GAAe,KAAM,EAAI,OAK5D,EAAK,eAAiB,EAAK,QAAU,EAAI,QAIpC,EAAK,QAAU,EAAI,QACvB,EAAK,MAAQ,EAAI,QAKC,WAAR,EACX,EAAK,gBAAkB,EAAK,SAAW,EAAI,iBAIxB,UAAR,GAAgC,aAAR,KACnC,EAAK,aAAe,EAAI,eAghB1B,QAAS,GAAe,EAAM,GAC7B,GAAI,GACH,EAAO,GAAQ,EAAI,cAAe,IAAS,SAAU,EAAI,MAGzD,EAAU,EAAO,0BAA6B,EAAQ,EAAO,wBAAyB,EAAM,KAI3F,EAAM,QAAU,GAAO,IAAK,EAAM,GAAC,UAMrC,OAFA,GAAK,SAEE,EAOR,QAAS,GAAgB,GACxB,GAAI,GAAM,GACT,EAAU,GAAa,EA0BxB,OAxBM,KACL,EAAU,EAAe,EAAU,GAGvB,SAAP,GAAuB,IAG3B,IAAU,IAAU,GAAM,mDAAsD,SAAU,EAAI,iBAG9F,GAAQ,GAAQ,GAAI,eAAiB,GAAQ,GAAI,iBAAkB,SAGnE,EAAI,QACJ,EAAI,QAEJ,EAAU,EAAe,EAAU,GACnC,GAAO,UAIR,GAAa,GAAa,GAGpB,EA2KR,QAAS,GAAc,EAAa,GAEnC,OACC,IAAK,WACJ,GAAI,GAAY,GAEhB,IAAkB,MAAb,EAML,MAAK,cAIG,MAAK,KAML,KAAK,IAAM,GAAQ,MAAO,KAAM,aAgM3C,QAAS,GAAgB,EAAO,GAG/B,GAAK,IAAQ,GACZ,MAAO,EAQR,KAJA,GAAI,GAAU,EAAK,OAAO,GAAG,cAAgB,EAAK,MAAM,GACvD,EAAW,EACX,EAAI,GAAY,OAET,KAEP,GADA,EAAO,GAAa,GAAM,EACrB,IAAQ,GACZ,MAAO,EAIT,OAAO,GAGR,QAAS,GAAU,EAAU,GAM5B,IALA,GAAI,GAAS,EAAM,EAClB,KACA,EAAQ,EACR,EAAS,EAAS,OAEH,EAAR,EAAgB,IACvB,EAAO,EAAU,GACX,EAAK,QAIX,EAAQ,GAAU,GAAO,MAAO,EAAI,cACpC,EAAU,EAAK,MAAM,QAChB,GAGE,EAAQ,IAAkB,SAAP,IACxB,EAAK,MAAM,QAAO,IAMI,KAAlB,EAAK,MAAM,SAAkB,GAAU,KAC3C,EAAQ,GAAU,GAAO,MAAO,EAAI,aAAgB,EAAe,EAAK,cAGzE,EAAS,GAAU,IAEd,GAAkB,SAAP,IAAuB,IACtC,GAAO,MAAO,EAAI,aAAgB,EAAS,EAAU,GAAO,IAAK,EAAI,aAOxE,KAAM,EAAQ,EAAW,EAAR,EAAgB,IAChC,EAAO,EAAU,GACX,EAAK,QAGL,GAA0B,SAAlB,EAAK,MAAM,SAAwC,KAAlB,EAAK,MAAM,UACzD,EAAK,MAAM,QAAU,EAAO,EAAQ,IAAK,GAAA,QAI3C,OAAO,GAGR,QAAS,GAAmB,EAAM,EAAO,GACxC,GAAI,GAAU,GAAU,KAAM,EAC9B,OAAO,GAEN,KAAK,IAAK,EAAG,EAAS,IAAQ,GAAY,KAAU,EAAS,IAAC,MAC9D,EAGF,QAAS,GAAsB,EAAM,EAAM,EAAO,EAAa,GAS9D,IARA,GAAI,GAAI,KAAY,EAAW,SAAU,WAExC,EAEI,UAAJ,EAAmB,EAAI,EAEvB,EAAM,EAEK,EAAJ,EAAO,GAAK,EAET,WAAL,IACJ,GAAO,GAAO,IAAK,EAAM,EAAQ,GAAW,IAAK,EAAM,IAGnD,GAEM,YAAL,IACJ,GAAO,GAAO,IAAK,EAAI,UAAc,GAAW,IAAK,EAAM,IAIlD,WAAL,IACJ,GAAO,GAAO,IAAK,EAAI,SAAa,GAAW,GAAC,SAAc,EAAM,MAIrE,GAAO,GAAO,IAAK,EAAI,UAAc,GAAW,IAAK,EAAM,GAGjD,YAAL,IACJ,GAAO,GAAO,IAAK,EAAI,SAAa,GAAW,GAAC,SAAc,EAAM,IAKvE,OAAO,GAGR,QAAS,GAAkB,EAAM,EAAM,GAGtC,GAAI,IAAmB,EACtB,EAAU,UAAJ,EAAmB,EAAK,YAAc,EAAK,aACjD,EAAS,GAAW,GACpB,EAAc,GAAQ,WAAyD,eAA5C,GAAO,IAAK,EAAI,aAAe,EAAO,EAK1E,IAAY,GAAP,GAAmB,MAAP,EAAW,CAQ3B,GANA,EAAM,GAAQ,EAAM,EAAM,IACf,EAAN,GAAkB,MAAP,KACf,EAAM,EAAK,MAAO,IAId,GAAU,KAAK,GACnB,MAAO,EAKR,GAAmB,IAAiB,GAAQ,qBAAuB,IAAQ,EAAK,MAAO,IAGvF,EAAM,WAAY,IAAS,EAI5B,MAAS,GACR,EACC,EACA,EACA,IAAW,EAAW,SAAU,WAChC,EACA,GAAM,KA6ST,QAAS,GAAO,EAAM,EAAS,EAAM,EAAK,GACzC,MAAO,IAAI,GAAM,UAAU,KAAM,EAAM,EAAS,EAAM,EAAK,GAwK5D,QAAS,KAIR,MAHA,YAAW,WACV,GAAQ,SAEA,GAAQ,GAAO,MAIzB,QAAS,GAAO,EAAM,GACrB,GAAI,GACH,GAAU,OAAQ,GAClB,EAAI,CAKL,KADA,EAAe,EAAe,EAAI,EACtB,EAAJ,EAAQ,GAAK,EAAI,EACxB,EAAQ,GAAW,GACnB,EAAK,SAAa,GAAU,EAAK,UAAc,GAAU,CAO1D,OAJK,KACJ,EAAM,QAAU,EAAM,MAAQ,GAGxB,EAGR,QAAS,GAAa,EAAO,EAAM,GAKlC,IAJA,GAAI,GACH,GAAe,GAAU,QAAe,OAAQ,GAAQ,MACxD,EAAQ,EACR,EAAS,EAAW,OACL,EAAR,EAAgB,IACvB,GAAM,EAAQ,EAAY,GAAQ,KAAM,EAAW,EAAM,GAGxD,MAAO,GAKV,QAAS,GAAkB,EAAM,EAAO,GAEvC,GAAI,GAAM,EAAO,EAAQ,EAAO,EAAO,EAAS,EAAS,EACxD,EAAO,KACP,KACA,EAAQ,EAAK,MACb,EAAS,EAAK,UAAY,GAAU,GACpC,EAAW,GAAO,MAAO,EAAI,SAGxB,GAAK,QACV,EAAQ,GAAO,YAAa,EAAI,MACT,MAAlB,EAAM,WACV,EAAM,SAAW,EACjB,EAAU,EAAM,MAAM,KACtB,EAAM,MAAM,KAAO,WACZ,EAAM,UACX,MAIH,EAAM,WAEN,EAAK,OAAO,WAGX,EAAK,OAAO,WACX,EAAM,WACA,GAAO,MAAO,EAAI,MAAS,QAChC,EAAM,MAAM,YAOO,IAAlB,EAAK,WAAc,UAAkB,IAAK,SAAe,MAK7D,EAAK,UAAa,EAAM,SAAU,EAAM,UAAW,EAAM,WAIzD,EAAU,GAAO,IAAK,EAAI,WAG1B,EAAsB,SAAP,EACd,GAAO,MAAO,EAAI,eAAoB,EAAgB,EAAK,UAAa,EAExD,WAAZ,GAAqD,SAAxB,GAAO,IAAK,EAAI,WAI3C,GAAQ,wBAAuD,WAA7B,EAAgB,EAAK,UAG5D,EAAM,KAAO,EAFb,EAAM,QAAO,iBAOX,EAAK,WACT,EAAM,SAAQ,SACR,GAAQ,oBACb,EAAK,OAAO,WACX,EAAM,SAAW,EAAK,SAAU,GAChC,EAAM,UAAY,EAAK,SAAU,GACjC,EAAM,UAAY,EAAK,SAAU,KAMpC,KAAM,IAAQ,GAEb,GADA,EAAQ,EAAO,GACV,GAAS,KAAM,GAAK,CAGxB,SAFO,GAAO,GACd,EAAS,GAAe,WAAL,EACd,KAAY,EAAM,OAAQ,QAAS,CAGvC,GAAU,SAAL,IAAoB,GAAiC,SAArB,EAAU,GAG9C,QAFA,IAAS,EAKX,EAAM,GAAS,GAAY,EAAU,IAAU,GAAO,MAAO,EAAM,OAInE,GAAU,MAIZ,IAAM,GAAO,cAAe,GAwC+C,YAAvD,SAAP,EAAqB,EAAgB,EAAK,UAAa,KACnE,EAAM,QAAU,OAzCe,CAC1B,EACF,UAAe,KAChB,EAAS,EAAS,QAGnB,EAAW,GAAO,MAAO,EAAI,aAIzB,IACJ,EAAS,QAAU,GAEf,EACJ,GAAQ,GAAO,OAEf,EAAK,KAAK,WACT,GAAQ,GAAO,SAGjB,EAAK,KAAK,WACT,GAAI,EACJ,IAAO,YAAa,EAAI,SACxB,KAAM,IAAQ,GACb,GAAO,MAAO,EAAM,EAAM,EAAM,KAGlC,KAAM,IAAQ,GACb,EAAQ,EAAa,EAAS,EAAU,GAAS,EAAG,EAAM,GAElD,IAAQ,KACf,EAAU,GAAS,EAAM,MACpB,IACJ,EAAM,IAAM,EAAM,MAClB,EAAM,MAAY,UAAJ,GAAwB,WAAJ,EAAoB,EAAI,KAW/D,QAAS,GAAY,EAAO,GAC3B,GAAI,GAAO,EAAM,EAAQ,EAAO,CAGhC,KAAM,IAAS,GAed,GAdA,EAAO,GAAO,UAAW,GACzB,EAAS,EAAe,GACxB,EAAQ,EAAO,GACV,GAAO,QAAS,KACpB,EAAS,EAAO,GAChB,EAAQ,EAAO,GAAU,EAAO,IAG5B,IAAU,IACd,EAAO,GAAS,QACT,GAAO,IAGf,EAAQ,GAAO,SAAU,GACpB,GAAK,UAAgB,GAAK,CAC9B,EAAQ,EAAM,OAAQ,SACf,GAAO,EAId,KAAM,IAAS,GACN,IAAS,KAChB,EAAO,GAAU,EAAO,GACxB,EAAe,GAAU,OAI3B,GAAe,GAAS,EAK3B,QAAS,GAAW,EAAM,EAAY,GACrC,GAAI,GACH,EACA,EAAQ,EACR,EAAS,GAAoB,OAC7B,EAAW,GAAO,WAAW,OAAQ,iBAE7B,GAAK,OAEb,EAAO,WACN,GAAK,EACJ,OAAO,CAUR,KARA,GAAI,GAAc,IAAS,IAC1B,EAAY,KAAK,IAAK,EAAG,EAAU,UAAY,EAAU,SAAW,GAEpE,EAAO,EAAY,EAAU,UAAY,EACzC,EAAU,EAAI,EACd,EAAQ,EACR,EAAS,EAAU,OAAO,OAEX,EAAR,EAAiB,IACxB,EAAU,OAAQ,GAAQ,IAAK,EAKhC,OAFA,GAAS,WAAY,GAAQ,EAAW,EAAS,IAElC,EAAV,GAAe,EACZ,GAEP,EAAS,YAAa,GAAQ,KACvB,IAGT,EAAY,EAAS,SACpB,KAAM,EACN,MAAO,GAAO,UAAY,GAC1B,KAAM,GAAO,QAAQ,GAAQ,kBAAqB,GAClD,mBAAoB,EACpB,gBAAiB,EACjB,UAAW,IAAS,IACpB,SAAU,EAAQ,SAClB,UACA,YAAa,SAAU,EAAM,GAC5B,GAAI,GAAQ,GAAO,MAAO,EAAM,EAAU,KAAM,EAAM,EACpD,EAAU,KAAK,cAAe,IAAU,EAAU,KAAK,OAEzD,OADA,GAAU,OAAO,KAAM,GAChB,GAER,KAAM,SAAU,GACf,GAAI,GAAQ,EAGX,EAAS,EAAU,EAAU,OAAO,OAAS,CAC9C,IAAK,EACJ,MAAO,KAGR,KADA,GAAU,EACM,EAAR,EAAiB,IACxB,EAAU,OAAQ,GAAQ,IAAK,EAUhC,OALK,GACJ,EAAS,YAAa,GAAQ,EAAW,IAEzC,EAAS,WAAY,GAAQ,EAAW,IAElC,QAGT,EAAQ,EAAU,KAInB,KAFA,EAAY,EAAO,EAAU,KAAK,eAElB,EAAR,EAAiB,IAExB,GADA,EAAS,GAAqB,GAAQ,KAAM,EAAW,EAAM,EAAO,EAAU,MAE7E,MAAO,EAmBT,OAfA,IAAO,IAAK,EAAO,EAAa,GAE3B,GAAO,WAAY,EAAU,KAAK,QACtC,EAAU,KAAK,MAAM,KAAM,EAAM,GAGlC,GAAO,GAAG,MACT,GAAO,OAAQ,GACd,KAAM,EACN,KAAM,EACN,MAAO,EAAU,KAAK,SAKjB,EAAU,SAAU,EAAU,KAAK,UACxC,KAAM,EAAU,KAAK,KAAM,EAAU,KAAK,UAC1C,KAAM,EAAU,KAAK,MACrB,OAAQ,EAAU,KAAK,QA6rC1B,QAAS,GAA6B,GAGrC,MAAO,UAAU,EAAoB,GAEN,gBAAlB,KACX,EAAO,EACP,EAAkB,IAGnB,IAAI,GACH,EAAI,EACJ,EAAY,EAAmB,cAAc,MAAO,OAErD,IAAK,GAAO,WAAY,GAEvB,KAAS,EAAW,EAAU,MAEN,MAAlB,EAAS,OAAQ,IACrB,EAAW,EAAS,MAAO,IAAC,KAC3B,EAAW,GAAa,EAAW,QAAkB,QAAS,KAI9D,EAAW,GAAa,EAAW,QAAkB,KAAM,IAQjE,QAAS,GAA+B,EAAW,EAAS,EAAiB,GAK5E,QAAS,GAAS,GACjB,GAAI,EAYJ,OAXA,GAAW,IAAa,EACxB,GAAO,KAAM,EAAW,OAAkB,SAAU,EAAG,GACtD,GAAI,GAAsB,EAAoB,EAAS,EAAiB,EACxE,OAA+B,gBAAnB,IAAqC,GAAqB,EAAW,GAIrE,IACD,EAAW,GADf,QAHN,EAAQ,UAAU,QAAS,GAC3B,EAAS,IACF,KAKF,EAhBR,GAAI,MACH,EAAqB,IAAc,EAkBpC,OAAO,GAAS,EAAQ,UAAW,MAAU,EAAS,MAAW,EAAO,KAMzE,QAAS,GAAY,EAAQ,GAC5B,GAAI,GAAM,EACT,EAAc,GAAO,aAAa,eAEnC,KAAM,IAAO,GACQ,SAAf,EAAK,MACP,EAAa,GAAQ,EAAW,IAAS,OAAgB,GAAQ,EAAK,GAO1E,OAJK,IACJ,GAAO,QAAQ,EAAM,EAAQ,GAGvB,EAOR,QAAS,GAAqB,EAAG,EAAO,GAMvC,IALA,GAAI,GAAe,EAAI,EAAe,EACrC,EAAW,EAAE,SACb,EAAY,EAAE,UAGK,MAAZ,EAAW,IAClB,EAAU,QACE,SAAP,IACJ,EAAK,EAAE,UAAY,EAAM,kBAAiB,gBAK5C,IAAK,EACJ,IAAM,IAAQ,GACb,GAAK,EAAU,IAAU,EAAU,GAAO,KAAM,GAAE,CACjD,EAAU,QAAS,EACnB,OAMH,GAAK,EAAW,IAAO,GACtB,EAAgB,EAAW,OACtB,CAEL,IAAM,IAAQ,GAAS,CACtB,IAAM,EAAW,IAAO,EAAE,WAAY,EAAI,IAAS,EAAU,IAAC,CAC7D,EAAgB,CAChB,OAEK,IACL,EAAgB,GAIlB,EAAgB,GAAiB,EAMlC,MAAK,IACC,IAAkB,EAAW,IACjC,EAAU,QAAS,GAEb,EAAW,IAJnB,OAWD,QAAS,GAAa,EAAG,EAAU,EAAO,GACzC,GAAI,GAAO,EAAS,EAAM,EAAK,EAC9B,KAEA,EAAY,EAAE,UAAU,OAGzB,IAAK,EAAW,GACf,IAAM,IAAQ,GAAE,WACf,EAAY,EAAK,eAAkB,EAAE,WAAY,EAOnD,KAHA,EAAU,EAAU,QAGZ,GAcP,GAZK,EAAE,eAAgB,KACtB,EAAO,EAAE,eAAgB,IAAc,IAIlC,GAAQ,GAAa,EAAE,aAC5B,EAAW,EAAE,WAAY,EAAU,EAAE,WAGtC,EAAO,EACP,EAAU,EAAU,QAKnB,GAAY,MAAP,EAEJ,EAAU,MAGJ,IAAS,MAAJ,GAAgB,IAAS,EAAO,CAM3C,GAHA,EAAO,EAAY,EAAI,IAAS,IAAa,EAAU,KAAS,IAG1D,EACL,IAAM,IAAS,GAId,GADA,EAAM,EAAM,MAAK,KACZ,EAAK,KAAQ,IAGjB,EAAO,EAAY,EAAI,IAAS,EAAK,KACpC,EAAU,KAAS,EAAK,KAChB,CAEH,KAAS,EACb,EAAO,EAAY,GAGR,EAAY,MAAY,IACnC,EAAU,EAAK,GACf,EAAU,QAAS,EAAK,IAEzB,OAOJ,GAAK,KAAS,EAGb,GAAK,GAAQ,EAAC,UACb,EAAW,EAAM,OAEjB,KACC,EAAW,EAAM,GAChB,MAAQ,GACT,OAAS,MAAK,cAAiB,MAAO,EAAO,EAAC,sBAA2B,EAAI,OAAY,IAQ/F,OAAS,MAAK,UAAa,KAAM,GAymBlC,QAAS,GAAa,EAAQ,EAAK,EAAa,GAC/C,GAAI,EAEJ,IAAK,GAAO,QAAS,GAEpB,GAAO,KAAM,EAAK,SAAU,EAAG,GACzB,GAAe,GAAS,KAAM,GAElC,EAAK,EAAQ,GAIb,EAAa,EAAM,KAAmB,gBAAD,GAAiB,EAAC,IAAA,IAAe,EAAG,EAAa,SAIlF,IAAM,GAA+B,WAAhB,GAAO,KAAM,GAQxC,EAAK,EAAQ,OANb,KAAM,IAAQ,GACb,EAAa,EAAM,IAAS,EAAI,IAAQ,EAAK,GAAQ,EAAa,GA8PrE,QAAS,KACR,IACC,MAAO,IAAI,GAAO,eACjB,MAAO,KAGV,QAAS,KACR,IACC,MAAO,IAAI,GAAO,cAAa,qBAC9B,MAAO,KA8SV,QAAS,GAAW,GACnB,MAAO,IAAO,SAAU,GACvB,EACkB,IAAlB,EAAK,SACJ,EAAK,aAAe,EAAK,cACzB,EA3xTH,GAAI,MAEA,EAAQ,EAAW,MAEnB,EAAS,EAAW,OAEpB,EAAO,EAAW,KAElB,EAAU,EAAW,QAErB,KAEA,GAAW,EAAW,SAEtB,GAAS,EAAW,eAEpB,MAKH,GAAO,SAGP,GAAS,SAAU,EAAU,GAG5B,MAAO,IAAI,IAAO,GAAG,KAAM,EAAU,IAKtC,GAAK,qCAGL,GAAS,QACT,GAAU,eAGV,GAAa,SAAU,EAAK,GAC3B,MAAO,GAAO,cAGhB,IAAO,GAAK,GAAO,WAElB,OAAQ,GAER,YAAa,GAGb,SAAQ,GAGR,OAAQ,EAER,QAAS,WACR,MAAO,GAAM,KAAM,OAKpB,IAAK,SAAU,GACd,MAAc,OAAP,EAGE,EAAN,EAAU,KAAM,EAAM,KAAK,QAAW,KAAM,GAG9C,EAAM,KAAM,OAKd,UAAW,SAAU,GAGpB,GAAI,GAAM,GAAO,MAAO,KAAK,cAAe,EAO5C,OAJA,GAAI,WAAa,KACjB,EAAI,QAAU,KAAK,QAGZ,GAMR,KAAM,SAAU,EAAU,GACzB,MAAO,IAAO,KAAM,KAAM,EAAU,IAGrC,IAAK,SAAU,GACd,MAAO,MAAK,UAAW,GAAO,IAAI,KAAM,SAAU,EAAM,GACvD,MAAO,GAAS,KAAM,EAAM,EAAG,OAIjC,MAAO,WACN,MAAO,MAAK,UAAW,EAAM,MAAO,KAAM,aAG3C,MAAO,WACN,MAAO,MAAK,GAAI,IAGjB,KAAM,WACL,MAAO,MAAK,GAAE,KAGf,GAAI,SAAU,GACb,GAAI,GAAM,KAAK,OACd,GAAK,GAAU,EAAJ,EAAQ,EAAM,EAC1B,OAAO,MAAK,UAAW,GAAK,GAAS,EAAJ,GAAY,KAAK,SAGnD,IAAK,WACJ,MAAO,MAAK,YAAc,KAAK,YAAY,OAK5C,KAAM,EACN,KAAM,EAAW,KACjB,OAAQ,EAAW,QAGpB,GAAO,OAAS,GAAO,GAAG,OAAS,WAClC,GAAI,GAAK,EAAa,EAAM,EAAM,EAAS,EAC1C,EAAS,UAAU,OACnB,EAAI,EACJ,EAAS,UAAU,OACnB,GAAO,CAsBR,KAnBkB,iBAAN,KACX,EAAO,EAGP,EAAS,UAAW,OACpB,KAIiB,gBAAN,IAAwB,GAAO,WAAW,KACrD,MAII,IAAM,IACV,EAAS,KACT,KAGW,EAAJ,EAAY,IAEnB,GAAmC,OAA7B,EAAU,UAAW,IAE1B,IAAM,IAAQ,GACb,EAAM,EAAQ,GACd,EAAO,EAAS,GAGX,IAAW,IAKX,GAAQ,IAAU,GAAO,cAAc,KAAU,EAAc,GAAO,QAAQ,MAC7E,GACJ,GAAc,EACd,EAAQ,GAAO,GAAO,QAAQ,GAAO,MAGrC,EAAQ,GAAO,GAAO,cAAc,GAAO,KAI5C,EAAQ,GAAS,GAAO,OAAQ,EAAM,EAAO,IAGzB,SAAT,IACX,EAAQ,GAAS,GAOrB,OAAO,IAGR,GAAO,QAEN,QAAO,UAAe,GAAU,KAAK,UAAW,QAAO,MAAO,IAG9D,SAAS,EAET,MAAO,SAAU,GAChB,KAAM,IAAI,OAAO,IAGlB,KAAM,aAKN,WAAY,SAAU,GACrB,MAAsB,aAAf,GAAO,KAAK,IAGpB,QAAS,MAAM,SAAW,SAAU,GACnC,MAAsB,UAAf,GAAO,KAAK,IAGpB,SAAU,SAAU,GAEnB,MAAc,OAAP,GAAe,GAAO,EAAI,QAGlC,UAAW,SAAU,GAKpB,OAAQ,GAAO,QAAS,IAAU,EAAM,WAAY,GAAQ,GAAM,GAGnE,cAAe,SAAU,GACxB,GAAI,EACJ,KAAM,IAAQ,GACb,OAAO,CAER,QAAO,GAGR,cAAe,SAAU,GACxB,GAAI,EAKJ,KAAM,GAAsB,WAAf,GAAO,KAAK,IAAqB,EAAI,UAAY,GAAO,SAAU,GAC9E,OAAO,CAGR,KAEC,GAAK,EAAI,cACP,GAAO,KAAK,EAAG,iBACf,GAAO,KAAK,EAAI,YAAY,UAAS,iBACtC,OAAO,EAEP,MAAQ,GAET,OAAO,EAKR,GAAK,GAAQ,QACZ,IAAM,IAAO,GACZ,MAAO,IAAO,KAAM,EAAK,EAM3B,KAAM,IAAO,IAEb,MAAe,UAAR,GAAqB,GAAO,KAAM,EAAK,IAG/C,KAAM,SAAU,GACf,MAAY,OAAP,EACG,EAAG,GAEM,gBAAH,IAA8B,kBAAH,GACxC,EAAY,GAAS,KAAK,KAAG,eACtB,IAMT,WAAY,SAAU,GAChB,GAAQ,GAAO,KAAM,KAIvB,EAAO,YAAc,SAAU,GAChC,EAAa,KAAI,KAAM,EAAQ,KAC3B,IAMP,UAAW,SAAU,GACpB,MAAO,GAAO,QAAS,GAAS,OAAU,QAAS,GAAY,KAGhE,SAAU,SAAU,EAAM,GACzB,MAAO,GAAK,UAAY,EAAK,SAAS,gBAAkB,EAAK,eAI9D,KAAM,SAAU,EAAK,EAAU,GAC9B,GAAI,GACH,EAAI,EACJ,EAAS,EAAI,OACb,EAAU,EAAa,EAExB,IAAK,GACJ,GAAK,EACJ,KAAY,EAAJ,IACP,EAAQ,EAAS,MAAO,EAAK,GAAK,GAE7B,KAAU,GAHI,SAQpB,KAAM,IAAK,GAGV,GAFA,EAAQ,EAAS,MAAO,EAAK,GAAK,GAE7B,KAAU,EACd,UAOH,IAAK,EACJ,KAAY,EAAJ,IACP,EAAQ,EAAS,KAAM,EAAK,GAAK,EAAG,EAAK,IAEpC,KAAU,GAHI,SAQpB,KAAM,IAAK,GAGV,GAFA,EAAQ,EAAS,KAAM,EAAK,GAAK,EAAG,EAAK,IAEpC,KAAU,EACd,KAMJ,OAAO,IAIR,KAAM,SAAU,GACf,MAAe,OAAR,EAAY,IAEhB,EAAI,IAAQ,QAAS,GAAK,KAI9B,UAAW,SAAU,EAAK,GACzB,GAAI,GAAM,KAaV,OAXY,OAAP,IACC,EAAa,OAAO,IACxB,GAAO,MAAO,EACH,gBAAH,IACL,GAAQ,GAGX,EAAK,KAAM,EAAK,IAIX,GAGR,QAAS,SAAU,EAAM,EAAK,GAC7B,GAAI,EAEJ,IAAK,EAAG,CACP,GAAK,EACJ,MAAO,GAAQ,KAAM,EAAK,EAAM,EAMjC,KAHA,EAAM,EAAI,OACV,EAAI,EAAQ,EAAJ,EAAQ,KAAK,IAAK,EAAG,EAAM,GAAM,EAAI,EAEjC,EAAJ,EAAS,IAEhB,GAAK,IAAK,IAAO,EAAK,KAAQ,EAC7B,MAAO,GAKV,MAAM,IAGP,MAAO,SAAU,EAAO,GAKvB,IAJA,GAAI,IAAO,EAAO,OACjB,EAAI,EACJ,EAAI,EAAM,OAEC,EAAJ,GACP,EAAO,KAAQ,EAAQ,IAKxB,IAAK,IAAQ,EACZ,KAAsB,SAAd,EAAO,IACd,EAAO,KAAQ,EAAQ,IAMzB,OAFA,GAAM,OAAS,EAER,GAGR,KAAM,SAAU,EAAO,EAAU,GAShC,IARA,GAAI,GACH,KACA,EAAI,EACJ,EAAS,EAAM,OACf,GAAkB,EAIP,EAAJ,EAAY,IACnB,GAAmB,EAAU,EAAO,GAAK,GACpC,IAAoB,GACxB,EAAQ,KAAM,EAAO,GAIvB,OAAO,IAIR,IAAK,SAAU,EAAO,EAAU,GAC/B,GAAI,GACH,EAAI,EACJ,EAAS,EAAM,OACf,EAAU,EAAa,GACvB,IAGD,IAAK,EACJ,KAAY,EAAJ,EAAY,IACnB,EAAQ,EAAU,EAAO,GAAK,EAAG,GAEnB,MAAT,GACJ,EAAI,KAAM,OAMZ,KAAM,IAAK,GACV,EAAQ,EAAU,EAAO,GAAK,EAAG,GAEnB,MAAT,GACJ,EAAI,KAAM,EAMb,OAAO,GAAO,SAAW,IAI1B,KAAM,EAIN,MAAO,SAAU,EAAI,GACpB,GAAI,GAAM,EAAO,CAUjB,OARmB,gBAAP,KACX,EAAM,EAAI,GACV,EAAU,EACV,EAAK,GAKA,GAAO,WAAY,IAKzB,EAAO,EAAM,KAAM,UAAW,GAC9B,EAAQ,WACP,MAAO,GAAG,MAAO,GAAW,KAAM,EAAK,OAAQ,EAAM,KAAM,cAI5D,EAAM,KAAO,EAAG,KAAO,EAAG,MAAQ,GAAO,OAElC,GAZC,QAeT,IAAK,WACJ,OAAM,GAAQ,OAKf,QAAS,KAIV,GAAO,KAAI,gEAAiE,MAAK,KAAO,SAAS,EAAG,GACnG,EAAU,WAAe,EAAI,KAAW,EAAK,eAkB9C,IAAI,IASe,SAER,GA0LX,QAAS,GAAQ,EAAU,EAAS,EAAS,GAC5C,GAAI,GAAO,EAAM,EAAG,EAEnB,EAAG,EAAQ,EAAK,EAAK,EAAY,CAUlC,KARO,EAAU,EAAQ,eAAiB,EAAU,KAAmB,GACtE,EAAa,GAGd,EAAU,GAAW,EACrB,EAAU,MACV,EAAW,EAAQ,SAEC,gBAAR,KAA0B,GACxB,IAAb,GAA+B,IAAb,GAA+B,KAAb,EAEpC,MAAO,EAGR,KAAM,GAAQ,EAAc,CAG3B,GAAkB,KAAb,IAAoB,EAAQ,GAAW,KAAM,IAEjD,GAAM,EAAI,EAAM,IACf,GAAkB,IAAb,EAAc,CAIlB,GAHA,EAAO,EAAQ,eAAgB,IAG1B,IAAQ,EAAK,WAQjB,MAAO,EALP,IAAK,EAAK,KAAO,EAEhB,MADA,GAAQ,KAAM,GACP,MAOT,IAAK,EAAQ,gBAAkB,EAAO,EAAQ,cAAc,eAAgB,KAC3E,EAAU,EAAS,IAAU,EAAK,KAAO,EAEzC,MADA,GAAQ,KAAM,GACP,MAKH,CAAA,GAAK,EAAM,GAEjB,MADA,GAAK,MAAO,EAAS,EAAQ,qBAAsB,IAC5C,CAGD,KAAM,EAAI,EAAM,KAAO,EAAQ,uBAErC,MADA,GAAK,MAAO,EAAS,EAAQ,uBAAwB,IAC9C,EAKT,GAAK,EAAQ,OAAS,IAAc,EAAU,KAAM,IAAQ,CAS3D,GARA,EAAM,EAAM,EACZ,EAAa,EACb,EAA2B,IAAb,GAAkB,EAMd,IAAb,GAA8C,WAA5B,EAAQ,SAAS,cAAyB,CAWhE,IAVA,EAAS,EAAU,IAEb,EAAM,EAAQ,aAAY,OAC/B,EAAM,EAAI,QAAS,GAAO,QAE1B,EAAQ,aAAY,KAAQ,GAE7B,EAAG,QAAa,EAAG,MAEnB,EAAI,EAAO,OACH,KACP,EAAO,GAAK,EAAM,EAAY,EAAO,GAEtC,GAAa,GAAS,KAAM,IAAc,EAAa,EAAQ,aAAgB,EAC/E,EAAc,EAAO,KAAI,KAG1B,GAAK,EACJ,IAIC,MAHA,GAAK,MAAO,EACX,EAAW,iBAAkB,IAEvB,EACN,MAAM,IACN,QACK,GACL,EAAQ,gBAAe,QAQ5B,MAAO,GAAQ,EAAS,QAAS,GAAK,MAAU,EAAS,EAAS,GASnE,QAAS,KAGR,QAAS,GAAO,EAAK,GAMpB,MAJK,GAAK,KAAM,EAAG,KAAW,EAAK,mBAE3B,GAAO,EAAK,SAEZ,EAAO,EAAG,KAAW,EAR9B,GAAI,KAUJ,OAAO,GAOR,QAAS,GAAc,GAEtB,MADA,GAAI,IAAY,EACT,EAOR,QAAS,GAAQ,GAChB,GAAI,GAAM,EAAS,cAAa,MAEhC,KACC,QAAS,EAAI,GACZ,MAAO,GACR,OAAO,EACN,QAEI,EAAI,YACR,EAAI,WAAW,YAAa,GAG7B,EAAM,MASR,QAAS,GAAW,EAAO,GAI1B,IAHA,GAAI,GAAM,EAAM,MAAK,KACpB,EAAI,EAAM,OAEH,KACP,EAAK,WAAY,EAAI,IAAO,EAU9B,QAAS,GAAc,EAAG,GACzB,GAAI,GAAM,GAAK,EACd,EAAO,GAAsB,IAAf,EAAE,UAAiC,IAAf,EAAE,YAChC,EAAE,aAAe,KACjB,EAAE,aAAe,EAGtB,IAAK,EACJ,MAAO,EAIR,IAAK,EACJ,KAAS,EAAM,EAAI,aAClB,GAAK,IAAQ,EACZ,MAAM,EAKT,OAAO,GAAI,EAAC,GAOb,QAAS,GAAmB,GAC3B,MAAO,UAAU,GAChB,GAAI,GAAO,EAAK,SAAS,aACzB,OAAW,UAAJ,GAAoB,EAAK,OAAS,GAQ3C,QAAS,GAAoB,GAC5B,MAAO,UAAU,GAChB,GAAI,GAAO,EAAK,SAAS,aACzB,QAAY,UAAJ,GAAwB,WAAJ,IAAsB,EAAK,OAAS,GAQlE,QAAS,GAAwB,GAChC,MAAO,GAAa,SAAU,GAE7B,MADA,IAAY,EACL,EAAa,SAAU,EAAM,GAMnC,IALA,GAAI,GACH,EAAe,KAAQ,EAAK,OAAQ,GACpC,EAAI,EAAa,OAGV,KACF,EAAO,EAAI,EAAa,MAC5B,EAAK,KAAO,EAAQ,GAAK,EAAK,SAYnC,QAAS,GAAa,GACrB,MAAO,IAA8C,mBAA5B,GAAQ,sBAAwC,EAg/B1E,QAAS,MAuET,QAAS,GAAY,GAIpB,IAHA,GAAI,GAAI,EACP,EAAM,EAAO,OACb,EAAQ,GACG,EAAJ,EAAS,IAChB,GAAY,EAAO,GAAG,KAEvB,OAAO,GAGR,QAAS,GAAe,EAAS,EAAY,GAC5C,GAAI,GAAM,EAAW,IACpB,EAAmB,GAAW,eAAH,EAC3B,EAAW,GAEZ,OAAO,GAAW,MAEjB,SAAU,EAAM,EAAS,GACxB,KAAS,EAAO,EAAM,IACrB,GAAuB,IAAlB,EAAK,UAAkB,EAC3B,MAAO,GAAS,EAAM,EAAS,IAMlC,SAAU,EAAM,EAAS,GACxB,GAAI,GAAU,EACb,GAAa,EAAS,EAGvB,IAAK,GACJ,KAAS,EAAO,EAAM,IACrB,IAAuB,IAAlB,EAAK,UAAkB,IACtB,EAAS,EAAM,EAAS,GAC5B,OAAO,MAKV,MAAS,EAAO,EAAM,IACrB,GAAuB,IAAlB,EAAK,UAAkB,EAAgB,CAE3C,GADA,EAAa,EAAM,KAAc,EAAM,QACjC,EAAW,EAAY,KAC5B,EAAU,KAAQ,GAAW,EAAU,KAAQ,EAG/C,MAAQ,GAAU,GAAM,EAAU,EAMlC,IAHA,EAAY,GAAQ,EAGd,EAAU,GAAM,EAAS,EAAM,EAAS,GAC7C,OAAO,IASf,QAAS,GAAgB,GACxB,MAAO,GAAS,OAAS,EACxB,SAAU,EAAM,EAAS,GAExB,IADA,GAAI,GAAI,EAAS,OACT,KACP,IAAM,EAAS,GAAI,EAAM,EAAS,GACjC,OAAO,CAGT,QAAO,GAER,EAAS,GAGX,QAAS,GAAkB,EAAU,EAAU,GAG9C,IAFA,GAAI,GAAI,EACP,EAAM,EAAS,OACJ,EAAJ,EAAS,IAChB,EAAQ,EAAU,EAAS,GAAI,EAEhC,OAAO,GAGR,QAAS,GAAU,EAAW,EAAK,EAAQ,EAAS,GAOnD,IANA,GAAI,GACH,KACA,EAAI,EACJ,EAAM,EAAU,OAChB,EAAgB,MAAP,EAEE,EAAJ,EAAS,KACV,EAAO,EAAU,OAChB,GAAU,EAAQ,EAAM,EAAS,MACtC,EAAa,KAAM,GACd,GACJ,EAAI,KAAM,GAMd,OAAO,GAGR,QAAS,GAAY,EAAW,EAAU,EAAS,EAAY,EAAY,GAO1E,MANK,KAAe,EAAY,KAC/B,EAAa,EAAY,IAErB,IAAe,EAAY,KAC/B,EAAa,EAAY,EAAY,IAE/B,EAAa,SAAU,EAAM,EAAS,EAAS,GACrD,GAAI,GAAM,EAAG,EACZ,KACA,KACA,EAAc,EAAQ,OAGtB,EAAQ,GAAQ,EAAkB,GAAQ,IAAS,EAAQ,UAAa,GAAY,MAGpF,GAAY,IAAe,GAAS,EAEnC,EADA,EAAU,EAAO,EAAQ,EAAW,EAAS,GAG9C,EAAa,EAEZ,IAAgB,EAAO,EAAY,GAAe,MAMjD,EACD,CAQF,IALK,GACJ,EAAS,EAAW,EAAY,EAAS,GAIrC,EAMJ,IALA,EAAO,EAAU,EAAY,GAC7B,EAAY,KAAU,EAAS,GAG/B,EAAI,EAAK,OACD,MACD,EAAO,EAAK,MACjB,EAAY,EAAQ,MAAS,EAAW,EAAQ,IAAO,GAK1D,IAAK,GACJ,GAAK,GAAc,EAAS,CAC3B,GAAK,EAAU,CAId,IAFA,KACA,EAAI,EAAW,OACP,MACD,EAAO,EAAW,KAEvB,EAAK,KAAO,EAAU,GAAK,EAG7B,GAAY,KAAO,KAAkB,EAAM,GAK5C,IADA,EAAI,EAAW,OACP,MACD,EAAO,EAAW,MACtB,EAAO,EAAa,GAAS,EAAM,GAAS,EAAO,IAAC,KAErD,EAAK,KAAU,EAAQ,GAAQ,SAOlC,GAAa,EACZ,IAAe,EACd,EAAW,OAAQ,EAAa,EAAW,QAC3C,GAEG,EACJ,EAAY,KAAM,EAAS,EAAY,GAEvC,EAAK,MAAO,EAAS,KAMzB,QAAS,GAAmB,GAwB3B,IAvBA,GAAI,GAAc,EAAS,EAC1B,EAAM,EAAO,OACb,EAAkB,EAAK,SAAU,EAAO,GAAG,MAC3C,EAAmB,GAAmB,EAAK,SAAQ,KACnD,EAAI,EAAkB,EAAI,EAG1B,EAAe,EAAe,SAAU,GACvC,MAAO,KAAS,GACd,GAAkB,GACrB,EAAkB,EAAe,SAAU,GAC1C,MAAO,IAAS,EAAc,GAAI,IAChC,GAAkB,GACrB,GAAa,SAAU,EAAM,EAAS,GACrC,GAAI,IAAS,IAAqB,GAAO,IAAY,MACnD,EAAe,GAAS,SACxB,EAAc,EAAM,EAAS,GAC7B,EAAiB,EAAM,EAAS,GAGlC,OADA,GAAe,KACR,IAGG,EAAJ,EAAS,IAChB,GAAM,EAAU,EAAK,SAAU,EAAO,GAAG,MACxC,GAAa,EAAc,EAAgB,GAAY,QAClD,CAIL,GAHA,EAAU,EAAK,OAAQ,EAAO,GAAG,MAAO,MAAO,KAAM,EAAO,GAAG,SAG1D,EAAS,GAAO,CAGpB,IADA,IAAM,EACM,EAAJ,IACF,EAAK,SAAU,EAAO,GAAG,MADd,KAKjB,MAAO,GACN,EAAI,GAAK,EAAgB,GACzB,EAAI,GAAK,EAER,EAAO,MAAO,EAAG,EAAI,GAAI,QAAS,MAA2B,MAApB,EAAQ,EAAI,GAAI,KAAI,IAAA,MAC5D,QAAS,GAAK,MAChB,EACI,EAAJ,GAAS,EAAmB,EAAO,MAAO,EAAG,IACzC,EAAJ,GAAW,EAAoB,EAAS,EAAO,MAAO,IAClD,EAAJ,GAAW,EAAY,IAGzB,EAAS,KAAM,GAIjB,MAAO,GAAgB,GAGxB,QAAS,GAA0B,EAAiB,GACnD,GAAI,GAAQ,EAAY,OAAS,EAChC,EAAY,EAAgB,OAAS,EACrC,EAAe,SAAU,EAAM,EAAS,EAAK,EAAS,GACrD,GAAI,GAAM,EAAG,EACZ,EAAe,EACf,EAAC,IACD,EAAY,MACZ,KACA,EAAgB,EAEhB,EAAQ,GAAQ,GAAa,EAAK,KAAS,IAAA,IAAS,GAEpD,EAAiB,GAA4B,MAAjB,EAAwB,EAAI,KAAK,UAAY,GACzE,EAAM,EAAM,MAUb,KARK,IACJ,EAAmB,IAAY,GAAY,GAOpC,IAAM,GAA4B,OAApB,EAAO,EAAM,IAAa,IAAC,CAChD,GAAK,GAAa,EAAI,CAErB,IADA,EAAI,EACK,EAAU,EAAgB,MAClC,GAAK,EAAS,EAAM,EAAS,GAAG,CAC/B,EAAQ,KAAM,EACd,OAGG,IACJ,EAAU,GAKP,KAEE,GAAQ,GAAW,IACxB,IAII,GACJ,EAAU,KAAM,IAOnB,GADA,GAAgB,EACX,GAAS,IAAM,EAAY,CAE/B,IADA,EAAI,EACK,EAAU,EAAY,MAC9B,EAAS,EAAW,EAAY,EAAS,EAG1C,IAAK,EAAI,CAER,GAAK,EAAe,EACnB,KAAQ,KACA,EAAU,IAAM,EAAW,KACjC,EAAW,GAAK,EAAI,KAAM,GAM7B,GAAa,EAAU,GAIxB,EAAK,MAAO,EAAS,GAGhB,IAAc,GAAQ,EAAW,OAAS,GAC5C,EAAe,EAAY,OAAW,GAExC,EAAO,WAAY,GAUrB,MALK,KACJ,EAAU,EACV,EAAmB,GAGb,EAGT,OAAO,GACN,EAAc,GACd,EA50DF,GAAI,GACH,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAGA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAGA,EAAO,SAAc,EAAI,GAAI,MAC7B,EAAe,EAAO,SACtB,EAAU,EACV,EAAO,EACP,EAAa,IACb,EAAa,IACb,EAAgB,IAChB,EAAY,SAAU,EAAG,GAIxB,MAHK,KAAM,IACV,GAAe,GAET,GAIR,EAAe,GAAK,GAGpB,KAAc,eACd,KACA,EAAM,EAAI,IACV,EAAc,EAAI,KAClB,EAAO,EAAI,KACX,EAAQ,EAAI,MAGZ,GAAU,SAAU,EAAM,GAGzB,IAFA,GAAI,GAAI,EACP,EAAM,EAAK,OACA,EAAJ,EAAS,IAChB,GAAK,EAAK,KAAO,EAChB,MAAO,EAGT,OAAM,IAGP,GAAQ,6HAKR,GAAU,sBAEV,GAAiB,mCAKjB,GAAa,GAAkB,QAAO,IAAI,MAG1C,GAAU,MAAW,GAAU,KAAU,GAAiB,OAAY,GAC/C,gBACJ,GACyE,2DAC9B,GAAU,OAAY,GAAU,OAG9F,GAAO,KAAU,GAAiB,wFAKJ,GAAU,eAMxC,GAAc,GAAI,QAAQ,GAAU,IAAA,KACpC,GAAQ,GAAI,QAAM,IAAQ,GAAU,8BAAmC,GAAU,KAAA,KAEjF,GAAS,GAAI,QAAM,IAAQ,GAAU,KAAU,GAAU,KACzD,GAAe,GAAI,QAAM,IAAQ,GAAU,WAAgB,GAAU,IAAS,GAAU,KAExF,GAAmB,GAAI,QAAM,IAAQ,GAAU,iBAAsB,GAAU,OAAA,KAE/E,GAAU,GAAI,QAAQ,IACtB,GAAc,GAAI,QAAM,IAAQ,GAAU,KAE1C,IAAS,GACF,GAAI,QAAM,MAAU,GAAiB,KAAA,MAClC,GAAI,QAAM,QAAY,GAAiB,KAAA,IACzC,GAAI,QAAM,KAAS,GAAkB,QAAO,IAAI,MAAK,KAAA,KACpD,GAAI,QAAM,IAAQ,IAAU,OAC1B,GAAI,QAAM,IAAQ,IAAO,MAC1B,GAAI,QAAM,yDAA6D,GAAU,+BACxD,GAAU,cAAmB,GAAU,aACzD,GAAU,SAAA,KAAe,KACjC,GAAI,QAAM,OAAW,GAAQ,KAAA,KAEK,aAC1B,GAAI,QAAM,IAAQ,GAAU,mDAC3C,GAAU,mBAAwB,GAAU,mBAAA,MAG9C,GAAO,sCACP,GAAO,SAEP,GAAO,yBAGP,GAAU,mCAEV,GAAQ,OACR,GAAO,QAGP,GAAY,GAAI,QAAM,qBAAyB,GAAU,MAAW,GAAU,OAAA,MAC9E,GAAY,SAAU,EAAG,EAAS,GACjC,GAAI,GAAI,KAAU,EAAU,KAI5B,OAAO,KAAS,GAAQ,EACvB,EACO,EAAP,EAEC,OAAO,aAAc,EAAO,OAE5B,OAAO,aAAc,GAAQ,GAAK,MAAe,KAAP,EAAe,QAO5D,GAAgB,WACf,IAIF,KACC,EAAK,MACH,EAAM,EAAM,KAAM,EAAa,YAChC,EAAa,YAId,EAAK,EAAa,WAAW,QAAS,SACrC,MAAQ,IACT,GAAS,MAAO,EAAI,OAGnB,SAAU,EAAQ,GACjB,EAAY,MAAO,EAAQ,EAAM,KAAK,KAKvC,SAAU,EAAQ,GAIjB,IAHA,GAAI,GAAI,EAAO,OACd,EAAI,EAEI,EAAO,KAAO,EAAI,OAC3B,EAAO,OAAS,EAAI,IAoQvB,EAAU,EAAO,WAOjB,EAAQ,EAAO,MAAQ,SAAU,GAGhC,GAAI,GAAkB,IAAS,EAAK,eAAiB,GAAM,eAC3D,OAAO,GAA0C,SAAxB,EAAgB,UAAsB,GAQhE,EAAc,EAAO,YAAc,SAAU,GAC5C,GAAI,GAAY,EACf,EAAM,EAAO,EAAK,eAAiB,EAAO,CAG3C,OAAK,KAAQ,GAA6B,IAAjB,EAAI,UAAmB,EAAI,iBAKpD,EAAW,EACX,EAAU,EAAI,gBACd,EAAS,EAAI,YAMR,GAAU,IAAW,EAAO,MAE3B,EAAO,iBACX,EAAO,iBAAgB,SAAY,IAAe,GACvC,EAAO,aAClB,EAAO,YAAW,WAAc,KAMlC,GAAkB,EAAO,GAQzB,EAAQ,WAAa,EAAO,SAAU,GAErC,MADA,GAAI,UAAS,KACL,EAAI,aAAY,eAOzB,EAAQ,qBAAuB,EAAO,SAAU,GAE/C,MADA,GAAI,YAAa,EAAI,cAAa,MAC1B,EAAI,qBAAoB,KAAM,SAIvC,EAAQ,uBAAyB,GAAQ,KAAM,EAAI,wBAMnD,EAAQ,QAAU,EAAO,SAAU,GAElC,MADA,GAAQ,YAAa,GAAM,GAAK,GACxB,EAAI,oBAAsB,EAAI,kBAAmB,GAAU,SAI/D,EAAQ,SACZ,EAAK,KAAQ,GAAK,SAAU,EAAI,GAC/B,GAAkC,mBAAtB,GAAQ,gBAAkC,EAAc,CACnE,GAAI,GAAI,EAAQ,eAAgB,EAGhC,OAAO,IAAK,EAAE,YAAe,QAG/B,EAAK,OAAU,GAAK,SAAU,GAC7B,GAAI,GAAS,EAAG,QAAS,GAAW,GACpC,OAAO,UAAU,GAChB,MAAO,GAAK,aAAY,QAAW,YAM9B,GAAK,KAAQ,GAEpB,EAAK,OAAU,GAAM,SAAU,GAC9B,GAAI,GAAS,EAAG,QAAS,GAAW,GACpC,OAAO,UAAU,GAChB,GAAI,GAAmC,mBAArB,GAAK,kBAAoC,EAAK,iBAAgB,KAChF,OAAO,IAAQ,EAAK,QAAU,KAMjC,EAAK,KAAS,IAAK,EAAQ,qBAC1B,SAAU,EAAK,GACd,MAAwC,mBAA5B,GAAQ,qBACZ,EAAQ,qBAAsB,GAG1B,EAAQ,IACZ,EAAQ,iBAAkB,GAD3B,QAKR,SAAU,EAAK,GACd,GAAI,GACH,KACA,EAAI,EAEJ,EAAU,EAAQ,qBAAsB,EAGzC,IAAQ,MAAH,EAAG,CACP,KAAS,EAAO,EAAQ,MACA,IAAlB,EAAK,UACT,EAAI,KAAM,EAIZ,OAAO,GAER,MAAO,IAIT,EAAK,KAAW,MAAK,EAAQ,wBAA0B,SAAU,EAAW,GAC3E,MAAK,GACG,EAAQ,uBAAwB,GADxC,QAWD,KAOA,MAEM,EAAQ,IAAM,GAAQ,KAAM,EAAI,qBAGrC,EAAO,SAAU,GAMhB,EAAQ,YAAa,GAAM,UAAS,UAAe,EAAO,qBACxC,EAAO,iEAOpB,EAAI,iBAAgB,wBAAyB,QACjD,EAAU,KAAI,SAAa,GAAU,gBAKhC,EAAI,iBAAgB,cAAe,QACxC,EAAU,KAAI,MAAU,GAAU,aAAkB,GAAQ,KAIvD,EAAI,iBAAgB,QAAY,EAAO,MAAU,QACtD,EAAU,KAAI,MAMT,EAAI,iBAAgB,YAAa,QACtC,EAAU,KAAI,YAMT,EAAI,iBAAgB,KAAS,EAAO,MAAU,QACnD,EAAU,KAAI,cAIhB,EAAO,SAAU,GAGhB,GAAI,GAAQ,EAAI,cAAa,QAC7B,GAAM,aAAY,OAAO,UACzB,EAAI,YAAa,GAAQ,aAAY,OAAO,KAIvC,EAAI,iBAAgB,YAAa,QACrC,EAAU,KAAI,OAAW,GAAU,eAK9B,EAAI,iBAAgB,YAAa,QACtC,EAAU,KAAI,WAAW,aAI1B,EAAI,iBAAgB,QACpB,EAAU,KAAI;KAIV,EAAQ,gBAAkB,GAAQ,KAAO,EAAU,EAAQ,SAChE,EAAQ,uBACR,EAAQ,oBACR,EAAQ,kBACR,EAAQ,qBAER,EAAO,SAAU,GAGhB,EAAQ,kBAAoB,EAAQ,KAAM,EAAG,OAI7C,EAAQ,KAAM,EAAG,aACjB,EAAc,KAAI,KAAQ,MAI5B,EAAY,EAAU,QAAU,GAAI,QAAQ,EAAU,KAAI,MAC1D,EAAgB,EAAc,QAAU,GAAI,QAAQ,EAAc,KAAI,MAItE,EAAa,GAAQ,KAAM,EAAQ,yBAKnC,EAAW,GAAc,GAAQ,KAAM,EAAQ,UAC9C,SAAU,EAAG,GACZ,GAAI,GAAuB,IAAf,EAAE,SAAiB,EAAE,gBAAkB,EAClD,EAAM,GAAK,EAAE,UACd,OAAO,KAAM,MAAW,GAAwB,IAAjB,EAAI,YAClC,EAAM,SACL,EAAM,SAAU,GAChB,EAAE,yBAA8D,GAAnC,EAAE,wBAAyB,MAG3D,SAAU,EAAG,GACZ,GAAK,EACJ,KAAS,EAAI,EAAE,YACd,GAAK,IAAM,EACV,OAAO,CAIV,QAAO,GAOT,EAAY,EACZ,SAAU,EAAG,GAGZ,GAAK,IAAM,EAEV,MADA,IAAe,EACR,CAIR,IAAI,IAAW,EAAE,yBAA2B,EAAE,uBAC9C,OAAK,GACG,GAIR,GAAY,EAAE,eAAiB,MAAU,EAAE,eAAiB,GAC3D,EAAE,wBAAyB,GAG3B,EAGc,EAAV,IACF,EAAQ,cAAgB,EAAE,wBAAyB,KAAQ,EAGxD,IAAM,GAAO,EAAE,gBAAkB,GAAgB,EAAS,EAAc,GACtE,GAEF,IAAM,GAAO,EAAE,gBAAkB,GAAgB,EAAS,EAAc,GACrE,EAID,EACJ,GAAS,EAAW,GAAM,GAAS,EAAW,GAChD,EAGe,EAAV,EAAW,GAAQ,IAE3B,SAAU,EAAG,GAEZ,GAAK,IAAM,EAEV,MADA,IAAe,EACR,CAGR,IAAI,GACH,EAAI,EACJ,EAAM,EAAE,WACR,EAAM,EAAE,WACR,GAAO,GACP,GAAO,EAGR,KAAM,IAAQ,EACb,MAAO,KAAM,EAAG,GACf,IAAM,EAAM,EACZ,EAAG,GACH,EAAM,EACN,EACE,GAAS,EAAW,GAAM,GAAS,EAAW,GAChD,CAGK,IAAK,IAAQ,EACnB,MAAO,GAAc,EAAG,EAKzB,KADA,EAAM,EACG,EAAM,EAAI,YAClB,EAAG,QAAS,EAGb,KADA,EAAM,EACG,EAAM,EAAI,YAClB,EAAG,QAAS,EAIb,MAAQ,EAAG,KAAO,EAAG,IACpB,GAGD,OAAO,GAEN,EAAc,EAAG,GAAI,EAAG,IAGxB,EAAG,KAAO,EAAY,GACtB,EAAG,KAAO,EAAe,EACzB,GAGK,GA1WC,GA6WT,EAAO,QAAU,SAAU,EAAM,GAChC,MAAO,GAAQ,EAAM,KAAM,KAAM,IAGlC,EAAO,gBAAkB,SAAU,EAAM,GASxC,IAPO,EAAK,eAAiB,KAAW,GACvC,EAAa,GAId,EAAO,EAAK,QAAS,GAAgB,aAEhC,EAAQ,kBAAmB,GAC5B,GAAkB,EAAc,KAAM,IACtC,GAAkB,EAAU,KAAM,IAErC,IACC,GAAI,GAAM,EAAQ,KAAM,EAAM,EAG9B,IAAK,GAAO,EAAQ,mBAGlB,EAAK,UAAuC,KAA3B,EAAK,SAAS,SAChC,MAAO,GAEP,MAAO,IAGV,MAAO,GAAQ,EAAM,EAAU,MAAQ,IAAS,OAAS,GAG1D,EAAO,SAAW,SAAU,EAAS,GAKpC,OAHO,EAAQ,eAAiB,KAAc,GAC7C,EAAa,GAEP,EAAU,EAAS,IAG3B,EAAO,KAAO,SAAU,EAAM,IAEtB,EAAK,eAAiB,KAAW,GACvC,EAAa,EAGd,IAAI,GAAK,EAAK,WAAY,EAAK,eAE9B,EAAM,GAAM,EAAO,KAAM,EAAK,WAAY,EAAK,eAC9C,EAAI,EAAM,GAAO,GACjB,MAEF,OAAe,UAAR,EACN,EACA,EAAQ,aAAe,EACtB,EAAK,aAAc,IAClB,EAAM,EAAK,iBAAiB,KAAU,EAAI,UAC1C,EAAI,MACJ,MAGJ,EAAO,MAAQ,SAAU,GACxB,KAAM,IAAI,OAAK,0CAA8C,IAO9D,EAAO,WAAa,SAAU,GAC7B,GAAI,GACH,KACA,EAAI,EACJ,EAAI,CAOL,IAJA,GAAgB,EAAQ,iBACxB,GAAa,EAAQ,YAAc,EAAQ,MAAO,GAClD,EAAQ,KAAM,GAET,EAAY,CAChB,KAAS,EAAO,EAAQ,MAClB,IAAS,EAAS,KACtB,EAAI,EAAW,KAAM,GAGvB,MAAQ,KACP,EAAQ,OAAQ,EAAY,GAAK,GAQnC,MAFA,GAAY,KAEL,GAOR,EAAU,EAAO,QAAU,SAAU,GACpC,GAAI,GACH,EAAG,GACH,EAAI,EACJ,EAAW,EAAK,QAEjB,IAAM,GAMC,GAAkB,IAAb,GAA+B,IAAb,GAA+B,KAAb,EAAe,CAG9D,GAA4B,gBAAhB,GAAK,YAChB,MAAO,GAAK,WAGZ,KAAM,EAAO,EAAK,WAAY,EAAM,EAAO,EAAK,YAC/C,GAAO,EAAS,OAGZ,IAAkB,IAAb,GAA+B,IAAb,EAC7B,MAAO,GAAK,cAhBZ,MAAS,EAAO,EAAK,MAEpB,GAAO,EAAS,EAkBlB,OAAO,IAGR,EAAO,EAAO,WAGb,YAAa,GAEb,aAAc,EAEd,MAAO,GAEP,cAEA,QAEA,UAAQ,KACA,IAAG,aAAgB,OAAO,GAAI,KAC9B,IAAG,cAAa,KAChB,IAAG,kBAAqB,OAAO,GAAI,KACnC,IAAG,oBAGX,WAAS,KACA,SAAU,GAUjB,MATA,GAAM,GAAK,EAAM,GAAG,QAAS,GAAW,IAGxC,EAAM,IAAO,EAAM,IAAM,EAAM,IAAM,EAAM,IAAC,IAAU,QAAS,GAAW,IAE9D,OAAP,EAAM,KACV,EAAM,GAAC,IAAU,EAAM,GAAC,KAGlB,EAAM,MAAO,EAAG,IAAC,MAGhB,SAAU,GA6BlB,MAlBA,GAAM,GAAK,EAAM,GAAG,cAEK,QAApB,EAAM,GAAG,MAAO,EAAG,IAEjB,EAAM,IACX,EAAO,MAAO,EAAM,IAKrB,EAAM,KAAQ,EAAM,GAAK,EAAM,IAAM,EAAM,IAAM,GAAK,GAAa,SAAP,EAAM,IAAwB,QAAP,EAAM,KACzF,EAAM,KAAU,EAAM,GAAK,EAAM,IAAe,QAAP,EAAM,KAGpC,EAAM,IACjB,EAAO,MAAO,EAAM,IAGd,GAAK,OAGH,SAAU,GACnB,GAAI,GACH,GAAY,EAAM,IAAM,EAAM,EAE/B,OAAK,IAAgB,MAAG,KAAM,EAAM,IAC5B,MAIH,EAAM,GACV,EAAM,GAAK,EAAM,IAAM,EAAM,IAAC,GAGnB,GAAY,GAAQ,KAAM,KAEpC,EAAS,EAAU,GAAU,MAE7B,EAAS,EAAS,QAAO,IAAO,EAAS,OAAS,GAAW,EAAS,UAGvE,EAAM,GAAK,EAAM,GAAG,MAAO,EAAG,GAC9B,EAAM,GAAK,EAAS,MAAO,EAAG,IAIxB,EAAM,MAAO,EAAG,MAIzB,QAAM,IAEE,SAAU,GAChB,GAAI,GAAW,EAAiB,QAAS,GAAW,IAAY,aAChE,OAAuB,MAAhB,EACN,WAAa,OAAO,GACpB,SAAU,GACT,MAAO,GAAK,UAAY,EAAK,SAAS,gBAAkB,IAAQ,MAI1D,SAAU,GAClB,GAAI,GAAU,EAAY,EAAS,IAEnC,OAAO,KACL,EAAU,GAAI,QAAM,MAAU,GAAU,IAAS,EAAS,IAAS,GAAU,SAC9E,EAAY,EAAW,SAAU,GAChC,MAAO,GAAQ,KAA2B,gBAAd,GAAK,WAA0B,EAAK,WAAqC,mBAAjB,GAAK,cAAgC,EAAK,aAAY,UAAO,OAAA,KAI5I,SAAU,EAAM,EAAU,GACjC,MAAO,UAAU,GAChB,GAAI,GAAS,EAAO,KAAM,EAAM,EAEhC,OAAe,OAAV,EACW,OAAR,EAEF,GAIN,GAAM,GAES,MAAR,EAAmB,IAAW,EAC5B,OAAR,EAAoB,IAAW,EACvB,OAAR,EAAoB,GAAqC,IAA5B,EAAO,QAAS,GACrC,OAAR,EAAoB,GAAS,EAAO,QAAS,GAAK,GAC1C,OAAR,EAAoB,GAAS,EAAO,OAAQ,EAAM,UAAa,EACvD,OAAR,GAAQ,IAAoB,EAAO,QAAS,GAAW,KAAA,KAAgB,QAAS,GAAK,GAC7E,OAAR,EAAoB,IAAW,GAAS,EAAO,MAAO,EAAG,EAAM,OAAS,KAAQ,EAAK,KACrF,IAZO,IAYF,MAIC,SAAU,EAAM,EAAM,EAAU,EAAO,GAC/C,GAAI,GAAyB,QAAhB,EAAK,MAAO,EAAG,GAC3B,EAAwB,SAAd,EAAK,MAAK,IACpB,EAAa,YAAJ,CAEV,OAAiB,KAAV,GAAwB,IAAT,EAGrB,SAAU,GACT,QAAS,EAAK,YAGf,SAAU,EAAM,EAAS,GACxB,GAAI,GAAO,EAAY,EAAM,EAAM,EAAW,EAC7C,EAAM,IAAW,EAAO,cAAe,kBACvC,EAAS,EAAK,WACd,EAAO,GAAU,EAAK,SAAS,cAC/B,GAAY,IAAQ,CAErB,IAAK,EAAM,CAGV,GAAK,EAAM,CACV,KAAQ,GAAG,CAEV,IADA,EAAO,EACE,EAAO,EAAM,IACrB,GAAK,EAAS,EAAK,SAAS,gBAAkB,EAAyB,IAAlB,EAAK,SACzD,OAAO,CAIT,GAAQ,EAAU,SAAJ,IAAoB,GAAK,cAExC,OAAO,EAMR,GAHA,GAAU,EAAU,EAAO,WAAa,EAAO,WAG1C,GAAW,GAQf,IANA,EAAa,EAAQ,KAAc,EAAQ,OAC3C,EAAQ,EAAY,OACpB,EAAY,EAAM,KAAO,GAAW,EAAM,GAC1C,EAAO,EAAM,KAAO,GAAW,EAAM,GACrC,EAAO,GAAa,EAAO,WAAY,GAE9B,IAAS,GAAa,GAAQ,EAAM,KAG3C,EAAO,EAAY,IAAM,EAAM,OAGhC,GAAuB,IAAlB,EAAK,YAAoB,GAAQ,IAAS,EAAI,CAClD,EAAY,IAAW,EAAS,EAAW,EAC3C,YAKI,IAAK,IAAa,GAAS,EAAM,KAAc,EAAM,QAAkB,KAAW,EAAM,KAAO,EACrG,EAAO,EAAM,OAKb,OAAS,IAAS,GAAa,GAAQ,EAAM,KAC3C,EAAO,EAAY,IAAM,EAAM,UAEzB,EAAS,EAAK,SAAS,gBAAkB,EAAyB,IAAlB,EAAK,cAAsB,IAE5E,KACH,EAAM,KAAc,EAAM,QAAkB,IAAW,EAAS,IAG7D,IAAS,MASjB,MADA,IAAQ,EACD,IAAS,GAAW,EAAO,IAAU,GAAK,EAAO,GAAS,KAAC,OAK5D,SAAU,EAAQ,GAK3B,GAAI,GACH,EAAK,EAAK,QAAS,IAAY,EAAK,WAAY,EAAO,gBACtD,EAAO,MAAK,uBAA2B,EAKzC,OAAK,GAAI,GACD,EAAI,GAIP,EAAG,OAAS,GAChB,GAAS,EAAQ,EAAM,GAAM,GACtB,EAAK,WAAW,eAAgB,EAAO,eAC7C,EAAa,SAAU,EAAM,GAI5B,IAHA,GAAI,GACH,EAAU,EAAI,EAAM,GACpB,EAAI,EAAQ,OACL,KACP,EAAM,GAAS,EAAM,EAAQ,IAC7B,EAAM,KAAW,EAAS,GAAQ,EAAQ,MAG5C,SAAU,GACT,MAAO,GAAI,EAAM,EAAG,KAIhB,IAIT,SAC+B,IACvB,EAAa,SAAU,GAI7B,GAAI,MACH,KACA,EAAU,EAAS,EAAS,QAAS,GAAK,MAE3C,OAAO,GAAS,GACf,EAAa,SAAU,EAAM,EAAS,EAAS,GAM9C,IALA,GAAI,GACH,EAAY,EAAS,EAAM,KAAM,MACjC,EAAI,EAAK,OAGF,MACD,EAAO,EAAU,MACtB,EAAK,KAAO,EAAQ,GAAK,MAI5B,SAAU,EAAM,EAAS,GAKxB,MAJA,GAAM,GAAK,EACX,EAAS,EAAO,KAAM,EAAK,GAE3B,EAAM,GAAK,MACH,EAAQ,SAAG,IAIf,EAAa,SAAU,GAC7B,MAAO,UAAU,GAChB,MAAO,GAAQ,EAAU,GAAO,OAAS,KAAC,SAIhC,EAAa,SAAU,GAElC,MADA,GAAO,EAAK,QAAS,GAAW,IACzB,SAAU,GAChB,OAAS,EAAK,aAAe,EAAK,WAAa,EAAS,IAAS,QAAS,GAAI,MAUlC,KACtC,EAAc,SAAU,GAM/B,MAJM,IAAY,KAAK,GAAI,KAC1B,EAAO,MAAK,qBAAyB,GAEtC,EAAO,EAAK,QAAS,GAAW,IAAY,cACrC,SAAU,GAChB,GAAI,EACJ,GACC,IAAM,EAAW,EAChB,EAAK,KACL,EAAK,aAAY,aAAgB,EAAK,aAAY,QAGlD,MADA,GAAW,EAAS,cACb,IAAa,GAA2C,IAAnC,EAAS,QAAS,EAAI,YAEzC,EAAO,EAAK,aAAiC,IAAlB,EAAK,SAC3C,QAAO,KAIO,OACN,SAAU,GACnB,GAAI,GAAO,EAAO,UAAY,EAAO,SAAS,IAC9C,OAAO,IAAQ,EAAK,MAAO,KAAQ,EAAK,IAAE,KAGnC,SAAU,GACjB,MAAO,KAAS,GAAO,MAGf,SAAU,GAClB,MAAO,KAAS,EAAS,iBAAmB,EAAS,UAAY,EAAS,gBAAkB,EAAK,MAAQ,EAAK,OAAS,EAAK,WAGxG,QACV,SAAU,GACpB,MAAO,GAAK,YAAa,GAAK,SAGnB,SAAU,GACrB,MAAO,GAAK,YAAa,GAAI,QAGnB,SAAU,GAGpB,GAAI,GAAW,EAAK,SAAS,aAC7B,OAAgB,UAAR,KAA0B,EAAK,SAAqB,WAAR,KAA2B,EAAK,UAAQ,SAGjF,SAAU,GAOrB,MAJK,GAAK,YACT,EAAK,WAAW,cAGV,EAAK,YAAa,GAGf,MACF,SAAU,GAKlB,IAAM,EAAO,EAAK,WAAY,EAAM,EAAO,EAAK,YAC/C,GAAK,EAAK,SAAW,EACpB,OAAO,CAGT,QAAO,GAAI,OAGF,SAAU,GACnB,OAAQ,EAAK,QAAc,MAAI,IAGV,OACZ,SAAU,GACnB,MAAO,IAAQ,KAAM,EAAK,WAAQ,MAG1B,SAAU,GAClB,MAAO,IAAQ,KAAM,EAAK,WAAQ,OAGzB,SAAU,GACnB,GAAI,GAAO,EAAK,SAAS,aACzB,OAAW,UAAJ,GAA6B,WAAT,EAAK,MAAyB,WAAJ,GAAgB,KAG9D,SAAU,GACjB,GAAI,EACJ,OAAgC,UAAzB,EAAK,SAAS,eACX,SAAT,EAAK,OAImC,OAArC,EAAO,EAAK,aAAY,UAAqC,SAAhB,EAAK,gBAG9B,MAChB,EAAuB,WAC/B,OAAS,KAAC,KAGH,EAAuB,SAAU,EAAc,GACtD,OAAS,EAAS,KAAC,GAGd,EAAuB,SAAU,EAAc,EAAQ,GAC5D,OAAoB,EAAX,EAAe,EAAW,EAAS,KAAQ,KAG7C,EAAuB,SAAU,EAAc,GAEtD,IADA,GAAI,GAAI,EACI,EAAJ,EAAY,GAAK,EACxB,EAAa,KAAM,EAEpB,OAAO,KAAY,IAGb,EAAuB,SAAU,EAAc,GAErD,IADA,GAAI,GAAI,EACI,EAAJ,EAAY,GAAK,EACxB,EAAa,KAAM,EAEpB,OAAO,KAAY,GAGd,EAAuB,SAAU,EAAc,EAAQ,GAE5D,IADA,GAAI,GAAe,EAAX,EAAe,EAAW,EAAS,IACjC,GAAK,GACd,EAAa,KAAM,EAEpB,OAAO,KAAY,GAGd,EAAuB,SAAU,EAAc,EAAQ,GAE5D,IADA,GAAI,GAAe,EAAX,EAAe,EAAW,EAAS,IACjC,EAAI,GACb,EAAa,KAAM,EAEpB,OAAO,OAKV,EAAK,QAAY,IAAK,EAAK,QAAW,EAGtC,KAAM,KAAO,OAAO,EAAM,UAAU,EAAM,MAAM,EAAM,UAAU,EAAM,OAAO,GAC5E,EAAK,QAAS,GAAM,EAAmB,EAExC,KAAM,KAAO,QAAQ,EAAM,OAAO,GACjC,EAAK,QAAS,GAAM,EAAoB,EA4lBzC,OAvlBA,GAAW,UAAY,EAAK,QAAU,EAAK,QAC3C,EAAK,WAAa,GAAI,GAEtB,EAAW,EAAO,SAAW,SAAU,EAAU,GAChD,GAAI,GAAS,EAAO,EAAQ,EAC3B,EAAO,EAAQ,EACf,EAAS,EAAY,EAAQ,IAE9B,IAAK,EACJ,MAAO,GAAY,EAAI,EAAO,MAAO,EAOtC,KAJA,EAAQ,EACR,KACA,EAAa,EAAK,UAEV,GAAK,GAGN,IAAY,EAAQ,GAAO,KAAM,OACjC,IAEJ,EAAQ,EAAM,MAAO,EAAM,GAAG,SAAY,GAE3C,EAAO,KAAO,OAGf,GAAU,GAGJ,EAAQ,GAAa,KAAM,MAChC,EAAU,EAAM,QAChB,EAAO,MACN,MAAO,EAEP,KAAM,EAAM,GAAG,QAAS,GAAK,OAE9B,EAAQ,EAAM,MAAO,EAAQ,QAI9B,KAAM,IAAQ,GAAK,SACZ,EAAQ,GAAW,GAAO,KAAM,KAAc,EAAY,MAC9D,EAAQ,EAAY,GAAQ,MAC7B,EAAU,EAAM,QAChB,EAAO,MACN,MAAO,EACP,KAAM,EACN,QAAS,IAEV,EAAQ,EAAM,MAAO,EAAQ,QAI/B,KAAM,EACL,MAOF,MAAO,GACN,EAAM,OACN,EACC,EAAO,MAAO,GAEd,EAAY,EAAU,GAAS,MAAO,IAwWzC,EAAU,EAAO,QAAU,SAAU,EAAU,GAC9C,GAAI,GACH,KACA,KACA,EAAS,EAAe,EAAQ,IAEjC,KAAM,EAAM,CAMX,IAJM,IACL,EAAQ,EAAU,IAEnB,EAAI,EAAM,OACF,KACP,EAAS,EAAmB,EAAM,IAC7B,EAAQ,GACZ,EAAY,KAAM,GAElB,EAAgB,KAAM,EAKxB,GAAS,EAAe,EAAU,EAA0B,EAAiB,IAG7E,EAAO,SAAW,EAEnB,MAAO,IAYR,EAAS,EAAO,OAAS,SAAU,EAAU,EAAS,EAAS,GAC9D,GAAI,GAAG,EAAQ,EAAO,EAAM,EAC3B,EAA0B,kBAAR,IAA2B,EAC7C,GAAS,GAAQ,EAAW,EAAW,EAAS,UAAY,EAK7D,IAHA,EAAU,MAGY,IAAjB,EAAM,OAAY,CAItB,GADA,EAAS,EAAM,GAAK,EAAM,GAAG,MAAO,GAC/B,EAAO,OAAS,GAA6B,QAAvB,EAAQ,EAAO,IAAI,MAC5C,EAAQ,SAAgC,IAArB,EAAQ,UAAkB,GAC7C,EAAK,SAAU,EAAO,GAAG,MAAI,CAG9B,GADA,GAAY,EAAK,KAAQ,GAAI,EAAM,QAAQ,GAAG,QAAQ,GAAW,IAAY,QAAkB,IACzF,EACL,MAAO,EAGI,KACX,EAAU,EAAQ,YAGnB,EAAW,EAAS,MAAO,EAAO,QAAQ,MAAM,QAKjD,IADA,EAAI,GAAuB,aAAG,KAAM,GAAa,EAAI,EAAO,OACpD,MACP,EAAQ,EAAO,IAGV,EAAK,SAAW,EAAO,EAAM,QAGlC,IAAM,EAAO,EAAK,KAAM,MAEjB,EAAO,EACZ,EAAM,QAAQ,GAAG,QAAS,GAAW,IACrC,GAAS,KAAM,EAAO,GAAG,OAAU,EAAa,EAAQ,aAAgB,IAAO,CAM/E,GAFA,EAAO,OAAQ,EAAG,GAClB,EAAW,EAAK,QAAU,EAAY,IAChC,EAEL,MADA,GAAK,MAAO,EAAS,GACd,CAGR,QAeJ,OAPE,GAAY,EAAS,EAAU,IAChC,EACA,GACC,EACD,EACA,GAAS,KAAM,IAAc,EAAa,EAAQ,aAAgB,GAE5D,GAMR,EAAQ,WAAa,EAAQ,MAAK,IAAK,KAAM,GAAY,KAAI,MAAS,EAItE,EAAQ,mBAAqB,EAG7B,IAIA,EAAQ,aAAe,EAAO,SAAU,GAEvC,MAAuE,GAAhE,EAAK,wBAAyB,EAAS,cAAa,UAMtD,EAAO,SAAU,GAEtB,MADA,GAAI,UAAS,mBAC2B,MAAjC,EAAI,WAAW,aAAY,WAElC,EAAS,yBAA4B,SAAU,EAAM,EAAM,GAC1D,MAAM,GAAN,OACQ,EAAK,aAAc,EAAsB,SAAhB,EAAK,cAA2B,EAAI,KAOjE,EAAQ,YAAe,EAAO,SAAU,GAG7C,MAFA,GAAI,UAAS,WACb,EAAI,WAAW,aAAY,QAAQ,IACO,KAAnC,EAAI,WAAW,aAAY,YAElC,EAAS,QAAW,SAAU,EAAM,EAAM,GACzC,MAAM,IAAkC,UAAzB,EAAK,SAAS,cAA7B,OACQ,EAAK,eAOT,EAAO,SAAU,GACtB,MAAuC,OAAhC,EAAI,aAAY,eAEvB,EAAW,GAAU,SAAU,EAAM,EAAM,GAC1C,GAAI,EACJ,OAAM,GAAN,OACQ,EAAM,MAAW,EAAO,EAAK,eACjC,EAAM,EAAK,iBAAkB,KAAW,EAAI,UAC7C,EAAI,MACL,OAKG,GAEH,EAIJ,IAAO,KAAO,GACd,GAAO,KAAO,GAAO,UACrB,GAAO,KAAI,KAAQ,GAAO,KAAK,QAC/B,GAAO,OAAS,GAAO,WACvB,GAAO,KAAO,GAAO,QACrB,GAAO,SAAW,GAAO,MACzB,GAAO,SAAW,GAAO,QAIzB,IAAI,IAAgB,GAAO,KAAK,MAAM,aAElC,GAAU,6BAIV,GAAS,gBAgCb,IAAO,OAAS,SAAU,EAAM,EAAO,GACtC,GAAI,GAAO,EAAO,EAMlB,OAJK,KACJ,EAAI,QAAa,EAAI,KAGE,IAAjB,EAAM,QAAkC,IAAlB,EAAK,SACjC,GAAO,KAAK,gBAAiB,EAAM,IAAW,MAC9C,GAAO,KAAK,QAAS,EAAM,GAAO,KAAM,EAAO,SAAU,GACxD,MAAyB,KAAlB,EAAK,aAIf,GAAO,GAAG,QACT,KAAM,SAAU,GACf,GAAI,GACH,KACA,EAAO,KACP,EAAM,EAAK,MAEZ,IAAoB,gBAAR,GACX,MAAO,MAAK,UAAW,GAAQ,GAAW,OAAO,WAChD,IAAM,EAAI,EAAO,EAAJ,EAAS,IACrB,GAAK,GAAO,SAAU,EAAM,GAAK,MAChC,OAAO,IAMX,KAAM,EAAI,EAAO,EAAJ,EAAS,IACrB,GAAO,KAAM,EAAU,EAAM,GAAK,EAMnC,OAFA,GAAM,KAAK,UAAW,EAAM,EAAI,GAAO,OAAQ,GAAQ,GACvD,EAAI,SAAW,KAAK,SAAW,KAAK,SAAQ,IAAS,EAAW,EACzD,GAER,OAAQ,SAAU,GACjB,MAAO,MAAK,UAAW,EAAO,KAAM,OAAgB,KAErD,IAAK,SAAU,GACd,MAAO,MAAK,UAAW,EAAO,KAAM,OAAgB,KAErD,GAAI,SAAU,GACb,QAAS,EACR,KAIe,gBAAR,IAAyB,GAAc,KAAM,GACnD,GAAQ,GACR,OACD,GACC,SASJ,IAAI,IAGH,GAAW,EAAO,SAKlB,GAAU,sCAEV,GAAO,GAAO,GAAG,KAAO,SAAU,EAAU,GAC3C,GAAI,GAAO,CAGX,KAAM,EACL,MAAO,KAIR,IAAoB,gBAAR,GAAoB,CAU/B,GAPC,EAFqB,MAAjB,EAAS,OAAO,IAAkD,MAApC,EAAS,OAAQ,EAAS,OAAS,IAAe,EAAS,QAAU,GAE7F,KAAM,EAAU,MAGlB,GAAW,KAAM,IAIrB,IAAU,EAAM,IAAO,EAsDrB,OAAM,GAAW,EAAQ,QACtB,GAAW,IAAa,KAAM,GAKhC,KAAK,YAAa,GAAU,KAAM,EAzDzC,IAAK,EAAM,GAAC,CAYX,GAXA,EAAU,YAAmB,IAAS,EAAQ,GAAK,EAInD,GAAO,MAAO,KAAM,GAAO,UAC1B,EAAM,GACN,GAAW,EAAQ,SAAW,EAAQ,eAAiB,EAAU,IACjE,IAII,GAAW,KAAM,EAAM,KAAQ,GAAO,cAAe,GACzD,IAAM,IAAS,GAET,GAAO,WAAY,KAAM,IAC7B,KAAM,GAAS,EAAS,IAIxB,KAAK,KAAM,EAAO,EAAS,GAK9B,OAAO,MAQP,GAJA,EAAO,GAAS,eAAgB,EAAM,IAIjC,GAAQ,EAAK,WAAU,CAG3B,GAAK,EAAK,KAAO,EAAM,GACtB,MAAO,IAAW,KAAM,EAIzB,MAAK,OAAS,EACd,KAAK,GAAK,EAKX,MAFA,MAAK,QAAU,GACf,KAAK,SAAW,EACT,KAcH,MAAK,GAAS,UACpB,KAAK,QAAU,KAAK,GAAK,EACzB,KAAK,OAAS,EACP,MAII,GAAO,WAAY,GACA,mBAAhB,IAAW,MACxB,GAAW,MAAO,GAElB,EAAU,KAGe,SAAtB,EAAS,WACb,KAAK,SAAW,EAAS,SACzB,KAAK,QAAU,EAAS,SAGlB,GAAO,UAAW,EAAU,OAIrC,IAAK,UAAY,GAAO,GAGxB,GAAa,GAAQ,GAGrB,IAAI,IAAY,iCAEf,IACC,UAAU,EACV,UAAU,EACV,MAAM,EACN,MAAM,EAGR,IAAO,QACN,IAAK,SAAU,EAAM,EAAK,GAIzB,IAHA,GAAI,MACH,EAAM,EAAM,GAEL,GAAwB,IAAjB,EAAI,WAA6B,SAAV,GAAwC,IAAjB,EAAI,WAAmB,GAAQ,GAAM,GAAI,KAC/E,IAAjB,EAAI,UACR,EAAQ,KAAM,GAEf,EAAM,EAAI,EAEX,OAAO,IAGR,QAAS,SAAU,EAAG,GAGrB,IAFA,GAAI,MAEI,EAAG,EAAI,EAAE,YACI,IAAf,EAAE,UAAkB,IAAM,GAC9B,EAAE,KAAM,EAIV,OAAO,MAIT,GAAO,GAAG,QACT,IAAK,SAAU,GACd,GAAI,GACH,EAAU,GAAQ,EAAQ,MAC1B,EAAM,EAAQ,MAEf,OAAO,MAAK,OAAO,WAClB,IAAM,EAAI,EAAO,EAAJ,EAAS,IACrB,GAAK,GAAO,SAAU,KAAM,EAAQ,IACnC,OAAO,KAMX,QAAS,SAAU,EAAW,GAS7B,IARA,GAAI,GACH,EAAI,EACJ,EAAI,KAAK,OACT,KACA,EAAM,GAAc,KAAM,IAA+B,gBAAT,GAC/C,GAAQ,EAAW,GAAW,KAAK,SACnC,EAEU,EAAJ,EAAO,IACd,IAAM,EAAM,KAAK,GAAI,GAAO,IAAQ,EAAS,EAAM,EAAI,WAEtD,GAAK,EAAI,SAAW,KAAO,EAC1B,EAAI,MAAM,GAAG,GAGI,IAAjB,EAAI,UACH,GAAO,KAAK,gBAAgB,EAAK,IAAS,CAE3C,EAAQ,KAAM,EACd,OAKH,MAAO,MAAK,UAAW,EAAQ,OAAS,EAAI,GAAO,OAAQ,GAAY,IAKxE,MAAO,SAAU,GAGhB,MAAM,GAKU,gBAAJ,GACJ,GAAO,QAAS,KAAK,GAAI,GAAQ,IAIlC,GAAO,QAEb,EAAK,OAAS,EAAK,GAAK,EAAM,MAXrB,KAAK,IAAM,KAAK,GAAG,WAAe,KAAK,QAAQ,UAAU,OAAM,IAc1E,IAAK,SAAU,EAAU,GACxB,MAAO,MAAK,UACX,GAAO,OACN,GAAO,MAAO,KAAK,MAAO,GAAQ,EAAU,OAK/C,QAAS,SAAU,GAClB,MAAO,MAAK,IAAiB,MAAZ,EAChB,KAAK,WAAa,KAAK,WAAW,OAAO,OAa5C,GAAO,MACN,OAAQ,SAAU,GACjB,GAAI,GAAS,EAAK,UAClB,OAAO,IAA8B,KAApB,EAAO,SAAkB,EAAS,MAEpD,QAAS,SAAU,GAClB,MAAO,IAAO,IAAK,EAAI,eAExB,aAAc,SAAU,EAAM,EAAG,GAChC,MAAO,IAAO,IAAK,EAAI,aAAgB,IAExC,KAAM,SAAU,GACf,MAAO,GAAS,EAAI,gBAErB,KAAM,SAAU,GACf,MAAO,GAAS,EAAI,oBAErB,QAAS,SAAU,GAClB,MAAO,IAAO,IAAK,EAAI,gBAExB,QAAS,SAAU,GAClB,MAAO,IAAO,IAAK,EAAI,oBAExB,UAAW,SAAU,EAAM,EAAG,GAC7B,MAAO,IAAO,IAAK,EAAI,cAAiB,IAEzC,UAAW,SAAU,EAAM,EAAG,GAC7B,MAAO,IAAO,IAAK,EAAI,kBAAqB,IAE7C,SAAU,SAAU,GACnB,MAAO,IAAO,SAAW,EAAK,gBAAmB,WAAY,IAE9D,SAAU,SAAU,GACnB,MAAO,IAAO,QAAS,EAAK,aAE7B,SAAU,SAAU,GACnB,MAAO,IAAO,SAAU,EAAI,UAC3B,EAAK,iBAAmB,EAAK,cAAc,SAC3C,GAAO,SAAW,EAAK,cAEvB,SAAU,EAAM,GAClB,GAAO,GAAI,GAAS,SAAU,EAAO,GACpC,GAAI,GAAM,GAAO,IAAK,KAAM,EAAI,EAsBhC,OApBmB,UAAd,EAAK,MAAK,MACd,EAAW,GAGP,GAA2B,gBAAR,KACvB,EAAM,GAAO,OAAQ,EAAU,IAG3B,KAAK,OAAS,IAEZ,GAAkB,KACvB,EAAM,GAAO,OAAQ,IAIjB,GAAa,KAAM,KACvB,EAAM,EAAI,YAIL,KAAK,UAAW,KAGzB,IAAI,IAAS,OAKT,KAiCJ,IAAO,UAAY,SAAU,GAI5B,EAAwB,gBAAP,GACd,GAAc,IAAa,EAAe,GAC5C,GAAO,UAAY,EAEpB,IACC,GAEA,EAEA,EAEA,EAEA,EAEA,EAEA,KAEA,GAAS,EAAQ,SAEjB,EAAO,SAAU,GAOhB,IANA,EAAS,EAAQ,QAAU,EAC3B,GAAQ,EACR,EAAc,GAAe,EAC7B,EAAc,EACd,EAAe,EAAK,OACpB,GAAS,EACD,GAAsB,EAAd,EAA4B,IAC3C,GAAK,EAAM,GAAc,MAAO,EAAM,GAAK,EAAM,OAAU,GAAS,EAAQ,YAAW,CACtF,GAAS,CACT,OAGF,GAAS,EACJ,IACC,EACC,EAAM,QACV,EAAM,EAAM,SAEF,EACX,KAEA,EAAK,YAKR,GAEC,IAAK,WACJ,GAAK,EAAI,CAER,GAAI,GAAQ,EAAK,QAAM,QACb,GAAK,GACd,GAAO,KAAM,EAAM,SAAU,EAAG,GAC/B,GAAI,GAAO,GAAO,KAAM,EACf,cAAJ,EACE,EAAQ,QAAW,EAAK,IAAK,IAClC,EAAK,KAAM,GAED,GAAO,EAAI,QAAc,WAAJ,GAEhC,EAAK,MAGJ,WAGC,EACJ,EAAe,EAAK,OAGT,IACX,EAAc,EACd,EAAM,IAGR,MAAO,OAGR,OAAQ,WAkBP,MAjBK,IACJ,GAAO,KAAM,UAAW,SAAU,EAAG,GAEpC,IADA,GAAI,IACM,EAAQ,GAAO,QAAS,EAAK,EAAM,IAAK,IACjD,EAAK,OAAQ,EAAO,GAEf,IACU,GAAT,GACJ,IAEa,GAAT,GACJ,OAME,MAIR,IAAK,SAAU,GACd,MAAO,GAAK,GAAO,QAAS,EAAI,GAAI,MAAc,IAAQ,EAAK,SAGhE,MAAO,WAGN,MAFA,MACA,EAAe,EACR,MAGR,QAAS,WAER,MADA,GAAO,EAAQ,EAAS,OACjB,MAGR,SAAU,WACT,OAAQ,GAGT,KAAM,WAKL,MAJA,GAAQ,OACF,GACL,EAAK,UAEC,MAGR,OAAQ,WACP,OAAQ,GAGT,SAAU,SAAU,EAAS,GAU5B,OATK,GAAW,IAAS,IACxB,EAAO,MACP,GAAS,EAAS,EAAK,MAAQ,EAAK,QAAU,GACzC,EACJ,EAAM,KAAM,GAEZ,EAAM,IAGD,MAGR,KAAM,WAEL,MADA,GAAK,SAAU,KAAM,WACd,MAGR,MAAO,WACN,QAAS,GAIZ,OAAO,IAIR,GAAO,QAEN,SAAU,SAAU,GACnB,GAAI,KACiD,UACzC,OAAW,GAAO,UAAS,eAAa,aAAa,SACtD,OAAW,GAAO,UAAS,eAAa,aAAa,SACrD,WAAe,GAAO,UAAS,YAEzC,EAAK,UACL,GACC,MAAO,WACN,MAAO,IAER,OAAQ,WAEP,MADA,GAAS,KAAM,WAAY,KAAM,WAC1B,MAER,KAAM,WACL,GAAI,GAAM,SACV,OAAO,IAAO,SAAS,SAAU,GAChC,GAAO,KAAM,EAAQ,SAAU,EAAG,GACjC,GAAI,GAAK,GAAO,WAAY,EAAK,KAAS,EAAK,EAE/C,GAAU,EAAM,IAAK,WACpB,GAAI,GAAW,GAAM,EAAG,MAAO,KAAM,UAChC,IAAY,GAAO,WAAY,EAAS,SAC5C,EAAS,UACP,KAAM,EAAS,SACf,KAAM,EAAS,QACf,SAAU,EAAS,QAErB,EAAU,EAAO,GAAC,QAAe,OAAS,EAAU,EAAS,UAAY,KAAM,GAAO,GAAa,eAItG,EAAM,OACJ,WAIJ,QAAS,SAAU,GAClB,MAAc,OAAP,EAAc,GAAO,OAAQ,EAAK,GAAY,IAGvD,IAwCD,OArCA,GAAQ,KAAO,EAAQ,KAGvB,GAAO,KAAM,EAAQ,SAAU,EAAG,GACjC,GAAI,GAAO,EAAO,GACjB,EAAc,EAAO,EAGtB,GAAS,EAAM,IAAO,EAAK,IAGtB,GACJ,EAAK,IAAI,WAER,EAAQ,GAGN,EAAY,EAAJ,GAAS,GAAI,QAAS,EAAQ,GAAK,GAAI,MAInD,EAAU,EAAM,IAAO,WAEtB,MADA,GAAU,EAAM,GAAC,QAAc,OAAS,EAAW,EAAU,KAAM,WAC5D,MAER,EAAU,EAAM,GAAC,QAAe,EAAK,WAItC,EAAQ,QAAS,GAGZ,GACJ,EAAK,KAAM,EAAU,GAIf,GAIR,KAAM,SAAU,GACf,GAwBC,GAAgB,EAAkB,EAxB/B,EAAI,EACP,EAAgB,EAAM,KAAM,WAC5B,EAAS,EAAc,OAGvB,EAAuB,IAAX,GAAkB,GAAe,GAAO,WAAY,EAAY,SAAc,EAAS,EAGnG,EAAyB,IAAd,EAAkB,EAAc,GAAO,WAGlD,EAAa,SAAU,EAAG,EAAU,GACnC,MAAO,UAAU,GAChB,EAAU,GAAM,KAChB,EAAQ,GAAM,UAAU,OAAS,EAAI,EAAM,KAAM,WAAc,EAC1D,IAAW,EACf,EAAS,WAAY,EAAU,KAEhB,GACf,EAAS,YAAa,EAAU,IAQpC,IAAK,EAAS,EAIb,IAHA,EAAiB,GAAI,OAAO,GAC5B,EAAmB,GAAI,OAAO,GAC9B,EAAkB,GAAI,OAAO,GACjB,EAAJ,EAAY,IACd,EAAe,IAAO,GAAO,WAAY,EAAe,GAAI,SAChE,EAAe,GAAI,UACjB,KAAM,EAAY,EAAG,EAAiB,IACtC,KAAM,EAAS,QACf,SAAU,EAAY,EAAG,EAAkB,MAE3C,CAUL,OAJM,IACL,EAAS,YAAa,EAAiB,GAGjC,EAAS,YAMlB,IAAI,GAEJ,IAAO,GAAG,MAAQ,SAAU,GAI3B,MAFA,IAAO,MAAM,UAAU,KAAM,GAEtB,MAGR,GAAO,QAEN,SAAS,EAIT,UAAW,EAGX,UAAW,SAAU,GACf,EACJ,GAAO,YAEP,GAAO,OAAO,IAKhB,MAAO,SAAU,GAGhB,GAAK,KAAS,KAAS,GAAO,WAAY,GAAO,QAAjD,CAKA,IAAM,GAAS,KACd,MAAO,YAAY,GAAO,MAI3B,IAAO,SAAU,EAGZ,KAAS,KAAU,GAAO,UAAY,IAK3C,GAAU,YAAa,IAAY,KAG9B,GAAO,GAAG,iBACd,GAAQ,IAAW,eAAc,SACjC,GAAQ,IAAW,IAAG,eA8BzB,GAAO,MAAM,QAAU,SAAU,GAChC,IAAM,GAOL,GALA,GAAY,GAAO,WAKK,aAAnB,GAAS,WAEb,WAAY,GAAO,WAGb,IAAK,GAAS,iBAEpB,GAAS,iBAAgB,mBAAsB,GAAW,GAG1D,EAAO,iBAAgB,OAAU,GAAW,OAGvC,CAEL,GAAS,YAAW,qBAAwB,GAG5C,EAAO,YAAW,SAAY,EAI9B,IAAI,IAAM,CAEV,KACC,EAA6B,MAAvB,EAAO,cAAwB,GAAS,gBAC7C,MAAM,IAEH,GAAO,EAAI,WAAQ,QACb,KACT,IAAM,GAAO,QAAO,CAEnB,IAGC,EAAI,SAAQ,QACX,MAAM,GACP,MAAO,YAAY,EAAe,IAInC,IAGA,GAAO,YAMZ,MAAO,IAAU,QAAS,GAI3B,IAMI,IANA,GAAe,WAOnB,KAAM,KAAK,IAAQ,IAClB,KAED,IAAQ,QAAW,MAAD,GAIlB,GAAQ,wBAAyB,EAGjC,GAAO,WAEN,GAAI,GAAK,EAAK,EAAM,CAEpB,GAAO,GAAS,qBAAoB,QAAY,GAC1C,GAAS,EAAK,QAMpB,EAAM,GAAS,cAAa,OAC5B,EAAY,GAAS,cAAa,OAClC,EAAU,MAAM,QAAO,iEACvB,EAAK,YAAa,GAAY,YAAa,SAE/B,GAAI,MAAM,OAAS,KAK9B,EAAI,MAAM,QAAO,gEAEjB,GAAQ,uBAAyB,EAA0B,IAApB,EAAI,YACtC,IAIJ,EAAK,MAAM,KAAO,IAIpB,EAAK,YAAa,MAAS,WAO3B,GAAI,GAAM,GAAS,cAAa,MAGhC,IAA6B,MAAzB,GAAQ,cAAqB,CAEhC,GAAQ,eAAgB,CACxB,WACQ,GAAI,KACV,MAAO,GACR,GAAQ,eAAgB,GAK1B,EAAM,QAOP,GAAO,WAAa,SAAU,GAC7B,GAAI,GAAS,GAAO,QAAS,EAAK,SAAQ,KAAQ,eACjD,GAAY,EAAK,UAAY,CAG9B,OAAoB,KAAb,GAA+B,IAAb,GACxB,GAGC,GAAU,KAAW,GAAQ,EAAK,aAAY,aAAgB,EAIjE,IAAI,IAAM,gCACT,GAAU,UAqOX,IAAO,QACN,SAIA,QAAM,WACM,EAAI,UACL,EAC6D,UAChE,8CAGR,QAAS,SAAU,GAElB,MADA,GAAO,EAAK,SAAW,GAAO,MAAO,EAAK,GAAO,UAAa,EAAM,GAAO,WAClE,IAAS,EAAmB,IAGtC,KAAM,SAAU,EAAM,EAAM,GAC3B,MAAO,GAAc,EAAM,EAAM,IAGlC,WAAY,SAAU,EAAM,GAC3B,MAAO,GAAoB,EAAM,IAIlC,MAAO,SAAU,EAAM,EAAM,GAC5B,MAAO,GAAc,EAAM,EAAM,GAAM,IAGxC,YAAa,SAAU,EAAM,GAC5B,MAAO,GAAoB,EAAM,GAAM,MAIzC,GAAO,GAAG,QACT,KAAM,SAAU,EAAK,GACpB,GAAI,GAAG,EAAM,EACZ,EAAO,KAAK,GACZ,EAAQ,GAAQ,EAAK,UAMtB,IAAa,SAAR,EAAiB,CACrB,GAAK,KAAK,SACT,EAAO,GAAO,KAAM,GAEG,IAAlB,EAAK,WAAmB,GAAO,MAAO,EAAI,gBAAc,CAE5D,IADA,EAAI,EAAM,OACF,KAIF,EAAO,KACX,EAAO,EAAO,GAAI,KACe,IAA5B,EAAK,QAAO,WAChB,EAAO,GAAO,UAAW,EAAK,MAAM,IACpC,EAAU,EAAM,EAAM,EAAM,KAI/B,IAAO,MAAO,EAAI,eAAiB,GAIrC,MAAO,GAIR,MAAe,gBAAH,GACJ,KAAK,KAAK,WAChB,GAAO,KAAM,KAAM,KAId,UAAU,OAAS,EAGzB,KAAK,KAAK,WACT,GAAO,KAAM,KAAM,EAAK,KAKzB,EAAO,EAAU,EAAM,EAAK,GAAO,KAAM,EAAM,IAAU,QAG3D,WAAY,SAAU,GACrB,MAAO,MAAK,KAAK,WAChB,GAAO,WAAY,KAAM,QAM5B,GAAO,QACN,MAAO,SAAU,EAAM,EAAM,GAC5B,GAAI,EAEJ,OAAK,IACJ,GAAS,GAAI,MAAO,QACpB,EAAQ,GAAO,MAAO,EAAM,GAGvB,KACE,GAAS,GAAO,QAAQ,GAC7B,EAAQ,GAAO,MAAO,EAAM,EAAM,GAAO,UAAU,IAEnD,EAAM,KAAM,IAGP,OAZR,QAgBD,QAAS,SAAU,EAAM,GACxB,EAAO,GAAI,IAEX,IAAI,GAAQ,GAAO,MAAO,EAAM,GAC/B,EAAc,EAAM,OACpB,EAAK,EAAM,QACX,EAAQ,GAAO,YAAa,EAAM,GAClC,EAAO,WACN,GAAO,QAAS,EAAM,GAIjB,gBAAF,IACJ,EAAK,EAAM,QACX,KAGI,IAIK,OAAJ,GACJ,EAAM,QAAO,oBAIP,GAAM,KACb,EAAG,KAAM,EAAM,EAAM,KAGhB,GAAe,GACpB,EAAM,MAAM,QAKd,YAAa,SAAU,EAAM,GAC5B,GAAI,GAAM,EAAI,YACd,OAAO,IAAO,MAAO,EAAM,IAAS,GAAO,MAAO,EAAM,GACvD,MAAO,GAAO,UAAS,eAAgB,IAAI,WAC1C,GAAO,YAAa,EAAM,EAAI,SAC9B,GAAO,YAAa,EAAM,UAM9B,GAAO,GAAG,QACT,MAAO,SAAU,EAAM,GACtB,GAAI,GAAS,CAQb,OANgB,gBAAJ,KACX,EAAO,EACP,EAAI,KACJ,KAGI,UAAU,OAAS,EAChB,GAAO,MAAO,KAAK,GAAI,GAGf,SAAT,EACN,KACA,KAAK,KAAK,WACT,GAAI,GAAQ,GAAO,MAAO,KAAM,EAAM,EAGtC,IAAO,YAAa,KAAM,GAEjB,OAAJ,GAAwB,eAAP,EAAM,IAC3B,GAAO,QAAS,KAAM,MAI1B,QAAS,SAAU,GAClB,MAAO,MAAK,KAAK,WAChB,GAAO,QAAS,KAAM,MAGxB,WAAY,SAAU,GACrB,MAAO,MAAK,MAAO,GAAI,UAIxB,QAAS,SAAU,EAAM,GACxB,GAAI,GACH,EAAQ,EACR,EAAQ,GAAO,WACf,EAAW,KACX,EAAI,KAAK,OACT,EAAU,aACC,GACT,EAAM,YAAa,GAAY,IAUlC,KANgB,gBAAJ,KACX,EAAM,EACN,EAAO,QAER,EAAO,GAAI,KAEH,KACP,EAAM,GAAO,MAAO,EAAU,GAAK,EAAI,cAClC,GAAO,EAAI,QACf,IACA,EAAI,MAAM,IAAK,GAIjB,OADA,KACO,EAAM,QAAS,KAGxB,IAAI,IAAI,sCAA2C,OAE/C,IAAS,MAAS,QAAS,SAAU,QAErC,GAAW,SAAU,EAAM,GAI7B,MADA,GAAO,GAAM,EACoB,SAA1B,GAAO,IAAK,EAAI,aAA6B,GAAO,SAAU,EAAK,cAAe,IAOvF,GAAS,GAAO,OAAS,SAAU,EAAO,EAAI,EAAK,EAAO,EAAW,EAAU,GAClF,GAAI,GAAI,EACP,EAAS,EAAM,OACf,EAAc,MAAP,CAGR,IAAqB,WAAhB,GAAO,KAAM,GAAiB,CAClC,GAAY,CACZ,KAAM,IAAK,GACV,GAAO,OAAQ,EAAO,EAAI,EAAG,EAAI,IAAI,EAAM,EAAU,OAIhD,IAAe,SAAV,IACX,GAAY,EAEN,GAAO,WAAY,KACxB,GAAM,GAGF,IAEC,GACJ,EAAG,KAAM,EAAO,GAChB,EAAK,OAIL,EAAO,EACP,EAAK,SAAU,EAAM,EAAK,GACzB,MAAO,GAAK,KAAM,GAAQ,GAAQ,MAKhC,GACJ,KAAY,EAAJ,EAAY,IACnB,EAAI,EAAM,GAAI,EAAK,EAAM,EAAQ,EAAM,KAAM,EAAM,GAAI,EAAG,EAAI,EAAM,GAAI,IAK3E,OAAO,GACN,EAGA,EACC,EAAG,KAAM,GACT,EAAS,EAAI,EAAM,GAAI,GAAQ,GAE9B,GAAc,yBAA2B,WAM5C,GAAI,GAAQ,GAAS,cAAa,SACjC,EAAM,GAAS,cAAa,OAC5B,EAAW,GAAS,wBAsDrB,IAnDA,EAAI,UAAS,qEAGb,GAAQ,kBAAgD,IAA5B,EAAI,WAAW,SAI3C,GAAQ,OAAS,EAAI,qBAAoB,SAAY,OAIrD,GAAQ,gBAAkB,EAAI,qBAAoB,QAAW,OAI7D,GAAQ,WACoD,kBAA3D,GAAS,cAAa,OAAU,WAAW,GAAO,UAInD,EAAM,KAAI,WACV,EAAM,SAAU,EAChB,EAAS,YAAa,GACtB,GAAQ,cAAgB,EAAM,QAI9B,EAAI,UAAS,yBACb,GAAQ,iBAAmB,EAAI,WAAW,GAAO,UAAU,aAG3D,EAAS,YAAa,GACtB,EAAI,UAAS,mDAIb,GAAQ,WAAa,EAAI,WAAW,GAAO,WAAW,GAAO,UAAU,QAKvE,GAAQ,cAAe,EAClB,EAAI,cACR,EAAI,YAAW,UAAa,WAC3B,GAAQ,cAAe,IAGxB,EAAI,WAAW,GAAO,SAIM,MAAzB,GAAQ,cAAqB,CAEhC,GAAQ,eAAgB,CACxB,WACQ,GAAI,KACV,MAAO,GACR,GAAQ,eAAgB,OAAK,WAO/B,GAAI,GAAG,EACN,EAAM,GAAS,cAAa,MAG7B,KAAM,KAAO,QAAQ,EAAM,QAAQ,EAAM,SAAS,GACjD,EAAS,KAAU,GAEZ,GAAS,EAAC,WAAiB,IAAa,MAE9C,EAAI,aAAc,EAAS,KAC3B,GAAS,EAAC,WAAiB,EAAI,WAAY,GAAY,WAAY,EAKrE,GAAM,OAIP,IAAI,IAAU,+BACb,GAAS,OACT,GAAW,uCACX,GAAW,kCACX,GAAc,sBAoBf,IAAO,OAEN,UAEA,IAAK,SAAU,EAAM,EAAO,EAAS,EAAM,GAC1C,GAAI,GAAK,EAAQ,EAAG,EACnB,EAAS,EAAa,EACtB,EAAU,EAAM,EAAY,EAC5B,EAAW,GAAO,MAAO,EAG1B,IAAM,EAAN,CAmCA,IA9BK,EAAQ,UACZ,EAAc,EACd,EAAU,EAAY,QACtB,EAAW,EAAY,UAIlB,EAAQ,OACb,EAAQ,KAAO,GAAO,SAIhB,EAAS,EAAS,UACxB,EAAS,EAAS,YAEZ,EAAc,EAAS,UAC7B,EAAc,EAAS,OAAS,SAAU,GAGzC,aAAc,MAAW,IAAkB,GAAK,GAAO,MAAM,YAAc,EAAE,KAE5E,OADA,GAAO,MAAM,SAAS,MAAO,EAAY,KAAM,YAIjD,EAAY,KAAO,GAIpB,GAAU,GAAK,IAAS,MAAO,MAAS,IACxC,EAAI,EAAM,OACF,KACP,EAAM,GAAe,KAAM,EAAM,QACjC,EAAO,EAAW,EAAI,GACtB,GAAe,EAAI,IAAC,IAAU,MAAK,KAAQ,OAGrC,IAKN,EAAU,GAAO,MAAM,QAAS,OAGhC,GAAS,EAAW,EAAQ,aAAe,EAAQ,WAAc,EAGjE,EAAU,GAAO,MAAM,QAAS,OAGhC,EAAY,GAAO,QAClB,KAAM,EACN,SAAU,EACV,KAAM,EACN,QAAS,EACT,KAAM,EAAQ,KACd,SAAU,EACV,aAAc,GAAY,GAAO,KAAK,MAAM,aAAa,KAAM,GAC/D,UAAW,EAAW,KAAI,MACxB,IAGI,EAAW,EAAQ,MACzB,EAAW,EAAQ,MACnB,EAAS,cAAgB,EAGnB,EAAQ,OAAS,EAAQ,MAAM,KAAM,EAAM,EAAM,EAAY,MAAkB,IAE/E,EAAK,iBACT,EAAK,iBAAkB,EAAM,GAAa,GAE/B,EAAK,aAChB,EAAK,YAAW,KAAS,EAAM,KAK7B,EAAQ,MACZ,EAAQ,IAAI,KAAM,EAAM,GAElB,EAAU,QAAQ,OACvB,EAAU,QAAQ,KAAO,EAAQ,OAK9B,EACJ,EAAS,OAAQ,EAAS,gBAAiB,EAAG,GAE9C,EAAS,KAAM,GAIhB,GAAO,MAAM,OAAQ,IAAS,EAI/B,GAAO,OAIR,OAAQ,SAAU,EAAM,EAAO,EAAS,EAAU,GACjD,GAAI,GAAG,EAAW,EACjB,EAAW,EAAG,EACd,EAAS,EAAU,EACnB,EAAY,EACZ,EAAW,GAAO,QAAS,IAAU,GAAO,MAAO,EAEpD,IAAM,IAAc,EAAS,EAAS,QAAtC,CAOA,IAFA,GAAU,GAAK,IAAS,MAAO,MAAS,IACxC,EAAI,EAAM,OACF,KAMP,GALA,EAAM,GAAe,KAAM,EAAM,QACjC,EAAO,EAAW,EAAI,GACtB,GAAe,EAAI,IAAC,IAAU,MAAK,KAAQ,OAGrC,EAAN,CAcA,IAPA,EAAU,GAAO,MAAM,QAAS,OAChC,GAAS,EAAW,EAAQ,aAAe,EAAQ,WAAc,EACjE,EAAW,EAAQ,OACnB,EAAM,EAAI,IAAM,GAAI,QAAM,UAAc,EAAW,KAAI,iBAAA,WAGvD,EAAY,EAAI,EAAS,OACjB,KACP,EAAY,EAAU,IAEf,GAAe,IAAa,EAAU,UACzC,GAAW,EAAQ,OAAS,EAAU,MACtC,IAAO,EAAI,KAAM,EAAU,YAC3B,GAAY,IAAa,EAAU,WAAoB,OAAR,IAAqB,EAAU,YACjF,EAAS,OAAQ,EAAG,GAEf,EAAU,UACd,EAAS,gBAEL,EAAQ,QACZ,EAAQ,OAAO,KAAM,EAAM,GAOzB,KAAc,EAAS,SACrB,EAAQ,UAAY,EAAQ,SAAS,KAAM,EAAM,EAAY,EAAS,WAAa,GACxF,GAAO,YAAa,EAAM,EAAM,EAAS,cAGnC,GAAQ,QAtCf,KAAM,IAAQ,GACb,GAAO,MAAM,OAAQ,EAAM,EAAO,EAAO,GAAK,EAAS,GAAU,EA0C/D,IAAO,cAAe,WACnB,GAAS,OAIhB,GAAO,YAAa,EAAI,aAI1B,QAAS,SAAU,EAAO,EAAM,EAAM,GACrC,GAAI,GAAQ,EAAQ,EACnB,EAAY,EAAS,EAAK,EAC1B,GAAc,GAAQ,IACtB,EAAO,GAAO,KAAM,EAAK,QAAa,EAAM,KAAO,EACnD,EAAa,GAAO,KAAM,EAAK,aAAkB,EAAM,UAAU,MAAK,OAKvE,IAHA,EAAM,EAAM,EAAO,GAAQ,GAGJ,IAAlB,EAAK,UAAoC,IAAlB,EAAK,WAK5B,GAAY,KAAM,EAAO,GAAO,MAAM,aAItC,EAAK,QAAO,MAAS,IAEzB,EAAa,EAAK,MAAK,KACvB,EAAO,EAAW,QAClB,EAAW,QAEZ,EAAS,EAAK,QAAO,KAAQ,GAAC,KAAW,EAGzC,EAAQ,EAAO,GAAO,SACrB,EACA,GAAI,IAAO,MAAO,EAAkB,gBAAL,IAAsB,GAGtD,EAAM,UAAY,EAAe,EAAI,EACrC,EAAM,UAAY,EAAW,KAAI,KACjC,EAAM,aAAe,EAAM,UAC1B,GAAI,QAAM,UAAc,EAAW,KAAI,iBAAA,WACvC,KAGD,EAAM,OAAS,OACT,EAAM,SACX,EAAM,OAAS,GAIhB,EAAe,MAAR,GACJ,GACF,GAAO,UAAW,GAAQ,IAG3B,EAAU,GAAO,MAAM,QAAS,OAC1B,IAAgB,EAAQ,SAAW,EAAQ,QAAQ,MAAO,EAAM,MAAW,GAAjF,CAMA,IAAM,IAAiB,EAAQ,WAAa,GAAO,SAAU,GAAI,CAMhE,IAJA,EAAa,EAAQ,cAAgB,EAC/B,GAAY,KAAM,EAAa,KACpC,EAAM,EAAI,YAEH,EAAK,EAAM,EAAI,WACtB,EAAU,KAAM,GAChB,EAAM,CAIF,MAAS,EAAK,eAAiB,KACnC,EAAU,KAAM,EAAI,aAAe,EAAI,cAAgB,GAMzD,IADA,EAAI,GACK,EAAM,EAAU,QAAU,EAAM,wBAExC,EAAM,KAAO,EAAI,EAChB,EACA,EAAQ,UAAY,EAGrB,GAAW,GAAO,MAAO,EAAG,eAAsB,EAAM,OAAU,GAAO,MAAO,EAAG,UAC9E,GACJ,EAAO,MAAO,EAAK,GAIpB,EAAS,GAAU,EAAK,GACnB,GAAU,EAAO,OAAS,GAAO,WAAY,KACjD,EAAM,OAAS,EAAO,MAAO,EAAK,GAC7B,EAAM,UAAW,GACrB,EAAM,iBAOT,IAHA,EAAM,KAAO,GAGP,IAAiB,EAAM,wBAErB,EAAQ,UAAY,EAAQ,SAAS,MAAO,EAAU,MAAO,MAAW,IAC9E,GAAO,WAAY,IAKd,GAAU,EAAM,KAAW,GAAO,SAAU,GAAI,CAGpD,EAAM,EAAM,GAEP,IACJ,EAAM,GAAW,MAIlB,GAAO,MAAM,UAAY,CACzB,KACC,EAAM,KACL,MAAQ,IAIV,GAAO,MAAM,UAAY,OAEpB,IACJ,EAAM,GAAW,GAMrB,MAAO,GAAM,SAGd,SAAU,SAAU,GAGnB,EAAQ,GAAO,MAAM,IAAK,EAE1B,IAAI,GAAG,EAAK,EAAW,EAAS,EAC/B,KACA,EAAO,EAAM,KAAM,WACnB,GAAa,GAAO,MAAO,KAAI,eAAsB,EAAM,UAC3D,EAAU,GAAO,MAAM,QAAS,EAAM,SAOvC,IAJA,EAAK,GAAK,EACV,EAAM,eAAiB,MAGlB,EAAQ,aAAe,EAAQ,YAAY,KAAM,KAAM,MAAY,EAAxE,CASA,IAJA,EAAe,GAAO,MAAM,SAAS,KAAM,KAAM,EAAO,GAGxD,EAAI,GACK,EAAU,EAAc,QAAW,EAAM,wBAIjD,IAHA,EAAM,cAAgB,EAAQ,KAE9B,EAAI,GACK,EAAY,EAAQ,SAAU,QAAW,EAAM,mCAIjD,EAAM,cAAgB,EAAM,aAAa,KAAM,EAAU,cAE9D,EAAM,UAAY,EAClB,EAAM,KAAO,EAAU,KAEvB,IAAS,GAAO,MAAM,QAAS,EAAU,eAAkB,QAAU,EAAU,SAC5E,MAAO,EAAQ,KAAM,GAEX,SAAR,IACE,EAAM,OAAS,MAAS,IAC7B,EAAM,iBACN,EAAM,mBAYX,OAJK,GAAQ,cACZ,EAAQ,aAAa,KAAM,KAAM,GAG3B,EAAM,SAGd,SAAU,SAAU,EAAO,GAC1B,GAAI,GAAK,EAAW,EAAS,EAC5B,KACA,EAAgB,EAAS,cACzB,EAAM,EAAM,MAKb,IAAK,GAAiB,EAAI,YAAc,EAAM,QAAoB,UAAV,EAAM,MAG7D,KAAQ,GAAO,KAAM,EAAM,EAAI,YAAc,KAK5C,GAAsB,IAAjB,EAAI,WAAmB,EAAI,YAAa,GAAkB,UAAV,EAAM,MAAe,CAEzE,IADA,KACM,EAAI,EAAO,EAAJ,EAAmB,IAC/B,EAAY,EAAU,GAGtB,EAAM,EAAU,SAAQ,IAEA,SAAnB,EAAS,KACb,EAAS,GAAQ,EAAU,aAC1B,GAAQ,EAAK,MAAO,MAAO,IAAS,EACpC,GAAO,KAAM,EAAK,KAAM,MAAQ,IAAQ,QAErC,EAAS,IACb,EAAQ,KAAM,EAGX,GAAQ,QACZ,EAAa,MAAO,KAAM,EAAK,SAAU,IAW7C,MAJK,GAAgB,EAAS,QAC7B,EAAa,MAAO,KAAM,KAAM,SAAU,EAAS,MAAO,KAGpD,GAGR,IAAK,SAAU,GACd,GAAK,EAAO,GAAO,SAClB,MAAO,EAIR,IAAI,GAAG,EAAM,EACZ,EAAO,EAAM,KACb,EAAgB,EAChB,EAAU,KAAK,SAAU,EAa1B,KAXM,IACL,KAAK,SAAU,GAAS,EACvB,GAAY,KAAM,GAAS,KAAK,WAChC,GAAU,KAAM,GAAS,KAAK,aAGhC,EAAO,EAAQ,MAAQ,KAAK,MAAM,OAAQ,EAAQ,OAAU,KAAK,MAEjE,EAAQ,GAAI,IAAO,MAAO,GAE1B,EAAI,EAAK,OACD,KACP,EAAO,EAAM,GACb,EAAO,GAAS,EAAe,EAmBhC,OAdM,GAAM,SACX,EAAM,OAAS,EAAc,YAAc,IAKb,IAA1B,EAAM,OAAO,WACjB,EAAM,OAAS,EAAM,OAAO,YAK7B,EAAM,UAAY,EAAM,QAEjB,EAAQ,OAAS,EAAQ,OAAQ,EAAO,GAAkB,GAIlE,MAAK,wHAA0H,MAAK,KAEpI,YAEA,UACC,MAAK,4BAA8B,MAAK,KACxC,OAAQ,SAAU,EAAO,GAOxB,MAJoB,OAAf,EAAM,QACV,EAAM,MAA6B,MAArB,EAAS,SAAmB,EAAS,SAAW,EAAS,SAGjE,IAIT,YACC,MAAK,mGAAqG,MAAK,KAC/G,OAAQ,SAAU,EAAO,GACxB,GAAI,GAAM,EAAU,EACnB,EAAS,EAAS,OAClB,EAAc,EAAS,WAuBxB,OApBoB,OAAf,EAAM,OAAqC,MAApB,EAAS,UACpC,EAAW,EAAM,OAAO,eAAiB,GACzC,EAAM,EAAS,gBACf,EAAO,EAAS,KAEhB,EAAM,MAAQ,EAAS,SAAY,GAAO,EAAI,YAAc,GAAQ,EAAK,YAAc,IAAQ,GAAO,EAAI,YAAc,GAAQ,EAAK,YAAc,GACnJ,EAAM,MAAQ,EAAS,SAAY,GAAO,EAAI,WAAc,GAAQ,EAAK,WAAc,IAAQ,GAAO,EAAI,WAAc,GAAQ,EAAK,WAAc,KAI9I,EAAM,eAAiB,IAC5B,EAAM,cAAgB,IAAgB,EAAM,OAAS,EAAS,UAAY,GAKrE,EAAM,OAAoB,SAAX,IACpB,EAAM,MAAmB,EAAT,EAAa,EAAe,EAAT,EAAa,EAAe,EAAT,EAAa,EAAI,GAGjE,IAIT,SACC,MAEC,UAAU,GAEX,OAEC,QAAS,WACR,GAAK,OAAS,KAAuB,KAAK,MACzC,IAEC,MADA,MAAK,SACE,EACN,MAAQ,MAOZ,aAAY,WAEb,MACC,QAAS,WACR,MAAK,QAAS,KAAuB,KAAK,MACzC,KAAK,QACE,GAFR,QAKD,aAAY,YAEb,OAEC,QAAS,WACR,MAAK,IAAO,SAAU,KAAI,UAAwB,aAAT,KAAK,MAAuB,KAAK,OACzE,KAAK,SACE,GAFR,QAOD,SAAU,SAAU,GACnB,MAAO,IAAO,SAAU,EAAM,OAAM,OAItC,cACC,aAAc,SAAU,GAID,SAAjB,EAAM,QAAwB,EAAM,gBACxC,EAAM,cAAc,YAAc,EAAM,WAM5C,SAAU,SAAU,EAAM,EAAM,EAAO,GAItC,GAAI,GAAI,GAAO,OACd,GAAI,IAAO,MACX,GAEC,KAAM,EACN,aAAa,EACb,kBAGG,GACJ,GAAO,MAAM,QAAS,EAAG,KAAM,GAE/B,GAAO,MAAM,SAAS,KAAM,EAAM,GAE9B,EAAE,sBACN,EAAM,mBAKT,GAAO,YAAc,GAAS,oBAC7B,SAAU,EAAM,EAAM,GAChB,EAAK,qBACT,EAAK,oBAAqB,EAAM,GAAQ,IAG1C,SAAU,EAAM,EAAM,GACrB,GAAI,GAAI,KAAU,CAEb,GAAK,oBAIG,GAAM,KAAW,KAC5B,EAAM,GAAS,MAGhB,EAAK,YAAa,EAAM,KAI3B,GAAO,MAAQ,SAAU,EAAK,GAE7B,MAAO,gBAAgB,IAAO,OAKzB,GAAO,EAAI,MACf,KAAK,cAAgB,EACrB,KAAK,KAAO,EAAI,KAIhB,KAAK,mBAAqB,EAAI,kBACH,SAAzB,EAAI,kBAEJ,EAAI,eAAgB,EACrB,EACA,GAID,KAAK,KAAO,EAIR,GACJ,GAAO,OAAQ,KAAM,GAItB,KAAK,UAAY,GAAO,EAAI,WAAa,GAAO,WAGhD,KAAM,GAAO,UAAY,IA/BjB,GAAI,IAAO,MAAO,EAAK,IAoChC,GAAO,MAAM,WACZ,mBAAoB,EACpB,qBAAsB,EACtB,8BAA+B,EAE/B,eAAgB,WACf,GAAI,GAAI,KAAK,aAEb,MAAK,mBAAqB,EACpB,IAKD,EAAE,eACN,EAAE,iBAKF,EAAE,aAAc,IAGlB,gBAAiB,WAChB,GAAI,GAAI,KAAK,aAEb,MAAK,qBAAuB,EACtB,IAID,EAAE,iBACN,EAAE,kBAKH,EAAE,cAAe,IAElB,yBAA0B,WACzB,GAAI,GAAI,KAAK,aAEb,MAAK,8BAAgC,EAEhC,GAAK,EAAE,0BACX,EAAE,2BAGH,KAAK,oBAKP,GAAO,MACN,WAAU,YACV,WAAU,WACV,aAAY,cACZ,aAAY,cACV,SAAU,EAAM,GAClB,GAAO,MAAM,QAAS,IACrB,aAAc,EACd,SAAU,EAEV,OAAQ,SAAU,GACjB,GAAI,GACH,EAAS,KACT,EAAU,EAAM,cAChB,EAAY,EAAM,SASnB,SALM,GAAY,IAAY,IAAW,GAAO,SAAU,EAAQ,MACjE,EAAM,KAAO,EAAU,SACvB,EAAM,EAAU,QAAQ,MAAO,KAAM,WACrC,EAAM,KAAO,GAEP,MAMJ,GAAQ,gBAEb,GAAO,MAAM,QAAQ,QACpB,MAAO,WAEN,MAAK,IAAO,SAAU,KAAI,SAClB,MAIR,IAAO,MAAM,IAAK,KAAI,iCAAoC,SAAU,GAEnE,GAAI,GAAO,EAAE,OACZ,EAAO,GAAO,SAAU,EAAI,UAAe,GAAO,SAAU,EAAI,UAAe,EAAK,KAAO,MACvF,KAAS,GAAO,MAAO,EAAI,mBAC/B,GAAO,MAAM,IAAK,EAAI,iBAAoB,SAAU,GACnD,EAAM,gBAAiB,IAExB,GAAO,MAAO,EAAI,iBAAmB,OAMxC,aAAc,SAAU,GAElB,EAAM,uBACH,GAAM,eACR,KAAK,aAAe,EAAM,WAC9B,GAAO,MAAM,SAAQ,SAAY,KAAK,WAAY,GAAO,KAK5D,SAAU,WAET,MAAK,IAAO,SAAU,KAAI,SAClB,MAIR,IAAO,MAAM,OAAQ,KAAI,eAMtB,GAAQ,gBAEb,GAAO,MAAM,QAAQ,QAEpB,MAAO,WAEN,MAAK,IAAW,KAAM,KAAK,YAIZ,aAAT,KAAK,MAAgC,UAAT,KAAK,QACrC,GAAO,MAAM,IAAK,KAAI,yBAA4B,SAAU,GACtB,YAAhC,EAAM,cAAc,eACxB,KAAK,eAAgB,KAGvB,GAAO,MAAM,IAAK,KAAI,gBAAmB,SAAU,GAC7C,KAAK,gBAAkB,EAAM,YACjC,KAAK,eAAgB,GAGtB,GAAO,MAAM,SAAQ,SAAY,KAAM,GAAO,OAGzC,OAGR,IAAO,MAAM,IAAK,KAAI,yBAA4B,SAAU,GAC3D,GAAI,GAAO,EAAE,MAER,IAAW,KAAM,EAAK,YAAe,GAAO,MAAO,EAAI,mBAC3D,GAAO,MAAM,IAAK,EAAI,iBAAoB,SAAU,IAC9C,KAAK,YAAe,EAAM,aAAgB,EAAM,WACpD,GAAO,MAAM,SAAQ,SAAY,KAAK,WAAY,GAAO,KAG3D,GAAO,MAAO,EAAI,iBAAmB,OAKxC,OAAQ,SAAU,GACjB,GAAI,GAAO,EAAM,MAGjB,OAAK,QAAS,GAAQ,EAAM,aAAe,EAAM,WAAuB,UAAT,EAAK,MAA6B,aAAT,EAAK,KACrF,EAAM,UAAU,QAAQ,MAAO,KAAM,WAD7C,QAKD,SAAU,WAGT,MAFA,IAAO,MAAM,OAAQ,KAAI,aAEjB,GAAW,KAAM,KAAK,aAM3B,GAAQ,gBACb,GAAO,MAAO,MAAK,UAAa,KAAI,YAAgB,SAAU,EAAM,GAGnE,GAAI,GAAU,SAAU,GACtB,GAAO,MAAM,SAAU,EAAK,EAAM,OAAQ,GAAO,MAAM,IAAK,IAAS,GAGvE,IAAO,MAAM,QAAS,IACrB,MAAO,WACN,GAAI,GAAM,KAAK,eAAiB,KAC/B,EAAW,GAAO,MAAO,EAAK,EAEzB,IACL,EAAI,iBAAkB,EAAM,GAAS,GAEtC,GAAO,MAAO,EAAK,GAAO,GAAY,GAAM,IAE7C,SAAU,WACT,GAAI,GAAM,KAAK,eAAiB,KAC/B,EAAW,GAAO,MAAO,EAAK,GAAQ,CAEjC,GAIL,GAAO,MAAO,EAAK,EAAK,IAHxB,EAAI,oBAAqB,EAAM,GAAS,GACxC,GAAO,YAAa,EAAK,QAS9B,GAAO,GAAG,QAET,GAAI,SAAU,EAAO,EAAU,EAAM,EAAiB,GACrD,GAAI,GAAM,CAGV,IAAiB,gBAAL,GAAiB,CAER,gBAAR,KAEX,EAAO,GAAQ,EACf,EAAW,OAEZ,KAAM,IAAQ,GACb,KAAK,GAAI,EAAM,EAAU,EAAM,EAAO,GAAQ,EAE/C,OAAO,MAmBR,GAhBa,MAAR,GAAsB,MAAN,GAEpB,EAAK,EACL,EAAO,EAAW,QACD,MAAN,IACS,gBAAR,IAEX,EAAK,EACL,EAAO,SAGP,EAAK,EACL,EAAO,EACP,EAAW,SAGR,KAAO,EACX,EAAK,MACC,KAAM,EACZ,MAAO,KAaR,OAVa,KAAR,IACJ,EAAS,EACT,EAAK,SAAU,GAGd,MADA,MAAS,IAAK,GACP,EAAO,MAAO,KAAM,YAG5B,EAAG,KAAO,EAAO,OAAU,EAAO,KAAO,GAAO,SAE1C,KAAK,KAAM,WACjB,GAAO,MAAM,IAAK,KAAM,EAAO,EAAI,EAAM;IAG3C,IAAK,SAAU,EAAO,EAAU,EAAM,GACrC,MAAO,MAAK,GAAI,EAAO,EAAU,EAAM,EAAI,IAE5C,IAAK,SAAU,EAAO,EAAU,GAC/B,GAAI,GAAW,CACf,IAAK,GAAS,EAAM,gBAAkB,EAAM,UAQ3C,MANA,GAAY,EAAM,UAClB,GAAQ,EAAM,gBAAiB,IAC9B,EAAU,UAAY,EAAU,SAAQ,IAAS,EAAU,UAAY,EAAU,SACjF,EAAU,SACV,EAAU,SAEJ,IAER,IAAiB,gBAAL,GAAiB,CAE5B,IAAM,IAAQ,GACb,KAAK,IAAK,EAAM,EAAU,EAAO,GAElC,OAAO,MAUR,OARK,KAAa,GAAwB,kBAAR,MAEjC,EAAK,EACL,EAAW,QAEP,KAAO,IACX,EAAK,GAEC,KAAK,KAAK,WAChB,GAAO,MAAM,OAAQ,KAAM,EAAO,EAAI,MAIxC,QAAS,SAAU,EAAM,GACxB,MAAO,MAAK,KAAK,WAChB,GAAO,MAAM,QAAS,EAAM,EAAM,SAGpC,eAAgB,SAAU,EAAM,GAC/B,GAAI,GAAO,KAAK,EAChB,OAAK,GACG,GAAO,MAAM,QAAS,EAAM,EAAM,GAAM,GADhD,SAqBF,IAAI,IAAS,6JAEZ,GAAa,6BACb,GAAe,GAAI,QAAM,OAAU,GAAS,WAAS,KACrD,GAAkB,OAClB,GAAS,0EACT,GAAQ,YACR,GAAM,UACN,GAAK,YACL,GAAY,0BAEZ,GAAQ,oCACR,GAAW,4BACX,GAAiB,cACjB,GAAY,2CAGZ,IACC,QAAU,EAAC,+BAA6B,aACxC,QAAU,EAAC,aAAY,eACvB,MAAQ,EAAC,QAAO,UAChB,OAAS,EAAC,WAAU,aACpB,OAAS,EAAC,UAAS,YACnB,IAAM,EAAC,iBAAgB,oBACvB,KAAO,EAAC,mCAAkC,uBAC1C,IAAM,EAAC,qBAAoB,yBAI3B,SAAU,GAAQ,eAAkB,EAAC,GAAA,KAAe,EAAC,SAAQ,WAE9D,GAAe,EAAoB,IACnC,GAAc,GAAa,YAAa,GAAS,cAAa,OAE/D,IAAQ,SAAW,GAAQ,OAC3B,GAAQ,MAAQ,GAAQ,MAAQ,GAAQ,SAAW,GAAQ,QAAU,GAAQ,MAC7E,GAAQ,GAAK,GAAQ,GAiKrB,GAAO,QACN,MAAO,SAAU,EAAM,EAAe,GACrC,GAAI,GAAc,EAAM,EAAO,EAAG,EACjC,EAAS,GAAO,SAAU,EAAK,cAAe,EAW/C,IATK,GAAQ,YAAc,GAAO,SAAS,KAAU,GAAa,KAAI,IAAQ,EAAK,SAAQ,KAC1F,EAAQ,EAAK,WAAW,IAIxB,GAAY,UAAY,EAAK,UAC7B,GAAY,YAAa,EAAQ,GAAY,eAGvC,GAAQ,cAAiB,GAAQ,gBACnB,IAAlB,EAAK,UAAoC,KAAlB,EAAK,UAAqB,GAAO,SAAS,IAOnE,IAJA,EAAe,EAAQ,GACvB,EAAc,EAAQ,GAGhB,EAAI,EAA8B,OAA1B,EAAO,EAAY,MAAe,EAE1C,EAAa,IACjB,EAAoB,EAAM,EAAa,GAM1C,IAAK,EACJ,GAAK,EAIJ,IAHA,EAAc,GAAe,EAAQ,GACrC,EAAe,GAAgB,EAAQ,GAEjC,EAAI,EAA8B,OAA1B,EAAO,EAAY,IAAa,IAC7C,EAAgB,EAAM,EAAa,QAGpC,GAAgB,EAAM,EAaxB,OARA,GAAe,EAAQ,EAAK,UACvB,EAAa,OAAS,GAC1B,EAAe,GAAe,GAAU,EAAQ,EAAI,WAGrD,EAAe,EAAc,EAAO,KAG7B,GAGR,cAAe,SAAU,EAAO,EAAS,EAAS,GAWjD,IAVA,GAAI,GAAG,EAAM,EACZ,EAAK,EAAK,EAAO,EACjB,EAAI,EAAM,OAGV,EAAO,EAAoB,GAE3B,KACA,EAAI,EAEO,EAAJ,EAAO,IAGd,GAFA,EAAO,EAAO,GAET,GAAiB,IAAT,EAGZ,GAAsB,WAAjB,GAAO,KAAM,GACjB,GAAO,MAAO,EAAO,EAAK,UAAa,GAAS,OAG1C,IAAM,GAAM,KAAM,GAInB,CAWL,IAVA,EAAM,GAAO,EAAK,YAAa,EAAQ,cAAa,QAGpD,GAAO,GAAS,KAAM,KAAI,GAAA,KAAmB,GAAI,cACjD,EAAO,GAAS,IAAS,GAAQ,SAEjC,EAAI,UAAY,EAAK,GAAK,EAAK,QAAS,GAAS,aAAkB,EAAK,GAGxE,EAAI,EAAK,GACD,KACP,EAAM,EAAI,SASX,KALM,GAAQ,mBAAqB,GAAmB,KAAM,IAC3D,EAAM,KAAM,EAAQ,eAAgB,GAAmB,KAAM,GAAO,MAI/D,GAAQ,MAYb,IATA,EAAU,UAAH,GAAoB,GAAO,KAAM,GAIjC,YAAN,EAAK,IAAqB,GAAO,KAAM,GAEtC,EADA,EAJD,EAAI,WAOL,EAAI,GAAQ,EAAK,WAAW,OACpB,KACF,GAAO,SAAW,EAAQ,EAAK,WAAW,GAAC,WAAkB,EAAM,WAAW,QAClF,EAAK,YAAa,EAWrB,KANA,GAAO,MAAO,EAAO,EAAI,YAGzB,EAAI,YAAW,GAGP,EAAI,YACX,EAAI,YAAa,EAAI,WAItB,GAAM,EAAK,cAtDX,GAAM,KAAM,EAAQ,eAAgB,GAuEvC,KAXK,GACJ,EAAK,YAAa,GAKb,GAAQ,eACb,GAAO,KAAM,EAAQ,EAAK,SAAa,GAGxC,EAAI,EACK,EAAO,EAAO,MAItB,KAAK,GAA4C,KAA/B,GAAO,QAAS,EAAM,MAIxC,EAAW,GAAO,SAAU,EAAK,cAAe,GAGhD,EAAM,EAAQ,EAAK,YAAa,GAAI,UAG/B,GACJ,EAAe,GAIX,GAEJ,IADA,EAAI,EACK,EAAO,EAAK,MACf,GAAY,KAAM,EAAK,MAAI,KAC/B,EAAQ,KAAM,EAQlB,OAFA,GAAM,KAEC,GAGR,UAAW,SAAU,EAAsB,GAQ1C,IAPA,GAAI,GAAM,EAAM,EAAI,EACnB,EAAI,EACJ,EAAc,GAAO,QACrB,EAAQ,GAAO,MACf,EAAgB,GAAQ,cACxB,EAAU,GAAO,MAAM,QAEK,OAApB,EAAO,EAAM,IAAa,IAClC,IAAK,GAAc,GAAO,WAAY,MAErC,EAAK,EAAM,GACX,EAAO,GAAM,EAAO,IAEX,CACR,GAAK,EAAK,OACT,IAAM,IAAQ,GAAK,OACb,EAAS,GACb,GAAO,MAAM,OAAQ,EAAM,GAI3B,GAAO,YAAa,EAAM,EAAM,EAAK,OAMnC,GAAO,WAEJ,GAAO,GAKT,QACG,GAAM,SAEK,GAAK,kBAAoB,GAC3C,EAAK,gBAAiB,GAGtB,EAAM,GAAgB,KAGvB,EAAW,KAAM,QAQvB,GAAO,GAAG,QACT,KAAM,SAAU,GACf,MAAO,IAAQ,KAAM,SAAU,GAC9B,MAAiB,UAAV,EACN,GAAO,KAAM,MACb,KAAK,QAAQ,QAAU,KAAK,IAAM,KAAK,GAAG,eAAiB,IAAW,eAAgB,KACrF,KAAM,EAAO,UAAU,SAG3B,OAAQ,WACP,MAAO,MAAK,SAAU,UAAW,SAAU,GAC1C,GAAuB,IAAlB,KAAK,UAAoC,KAAlB,KAAK,UAAqC,IAAlB,KAAK,SAAc,CACtE,GAAI,GAAS,EAAoB,KAAM,EACvC,GAAO,YAAa,OAKvB,QAAS,WACR,MAAO,MAAK,SAAU,UAAW,SAAU,GAC1C,GAAuB,IAAlB,KAAK,UAAoC,KAAlB,KAAK,UAAqC,IAAlB,KAAK,SAAc,CACtE,GAAI,GAAS,EAAoB,KAAM,EACvC,GAAO,aAAc,EAAM,EAAO,gBAKrC,OAAQ,WACP,MAAO,MAAK,SAAU,UAAW,SAAU,GACrC,KAAK,YACT,KAAK,WAAW,aAAc,EAAM,SAKvC,MAAO,WACN,MAAO,MAAK,SAAU,UAAW,SAAU,GACrC,KAAK,YACT,KAAK,WAAW,aAAc,EAAM,KAAK,gBAK5C,OAAQ,SAAU,EAAU,GAK3B,IAJA,GAAI,GACH,EAAQ,EAAW,GAAO,OAAQ,EAAU,MAAS,KACrD,EAAI,EAEwB,OAApB,EAAO,EAAM,IAAa,IAE5B,GAA8B,IAAlB,EAAK,UACtB,GAAO,UAAW,EAAQ,IAGtB,EAAK,aACJ,GAAY,GAAO,SAAU,EAAK,cAAe,IACrD,EAAe,EAAQ,EAAI,WAE5B,EAAK,WAAW,YAAa,GAI/B,OAAO,OAGR,MAAO,WAIN,IAHA,GAAI,GACH,EAAI,EAEuB,OAAnB,EAAO,KAAK,IAAa,IAAC,CAOlC,IALuB,IAAlB,EAAK,UACT,GAAO,UAAW,EAAQ,GAAM,IAIzB,EAAK,YACZ,EAAK,YAAa,EAAK,WAKnB,GAAK,SAAW,GAAO,SAAU,EAAI,YACzC,EAAK,QAAQ,OAAS,GAIxB,MAAO,OAGR,MAAO,SAAU,EAAe,GAI/B,MAHA,GAAiC,MAAjB,GAAwB,EAAQ,EAChD,EAAyC,MAArB,EAA4B,EAAgB,EAEzD,KAAK,IAAI,WACf,MAAO,IAAO,MAAO,KAAM,EAAe,MAI5C,KAAM,SAAU,GACf,MAAO,IAAQ,KAAM,SAAU,GAC9B,GAAI,GAAO,KAAM,OAChB,EAAI,EACJ,EAAI,KAAK,MAEV,IAAe,SAAV,EACJ,MAAyB,KAAlB,EAAK,SACX,EAAK,UAAU,QAAS,GAAa,IACrC,MAIF,MAAiB,gBAAL,IAAuB,GAAa,KAAM,KACnD,GAAQ,eAAkB,GAAa,KAAM,KAC7C,GAAQ,mBAAsB,GAAmB,KAAM,IACxD,IAAU,GAAS,KAAM,KAAK,GAAA,KAAmB,GAAI,gBAAW,CAEjE,EAAQ,EAAM,QAAS,GAAS,YAEhC,KACC,KAAW,EAAJ,EAAO,IAEb,EAAO,KAAK,OACW,IAAlB,EAAK,WACT,GAAO,UAAW,EAAQ,GAAM,IAChC,EAAK,UAAY,EAInB,GAAO,EAGN,MAAM,KAGJ,GACJ,KAAK,QAAQ,OAAQ,IAEpB,KAAM,EAAO,UAAU,SAG3B,YAAa,WACZ,GAAI,GAAM,UAAW,EAcrB,OAXA,MAAK,SAAU,UAAW,SAAU,GACnC,EAAM,KAAK,WAEX,GAAO,UAAW,EAAQ,OAErB,GACJ,EAAI,aAAc,EAAM,QAKnB,IAAQ,EAAI,QAAU,EAAI,UAAY,KAAO,KAAK,UAG1D,OAAQ,SAAU,GACjB,MAAO,MAAK,OAAQ,GAAU,IAG/B,SAAU,SAAU,EAAM,GAGzB,EAAO,EAAO,SAAW,EAEzB,IAAI,GAAO,EAAM,EAChB,EAAS,EAAK,EACd,EAAI,EACJ,EAAI,KAAK,OACT,EAAM,KACN,EAAW,EAAI,EACf,EAAQ,EAAK,GACb,EAAa,GAAO,WAAY,EAGjC,IAAK,GACD,EAAI,GAAiB,gBAAL,KAChB,GAAQ,YAAc,GAAS,KAAM,GACxC,MAAO,MAAK,KAAK,SAAU,GAC1B,GAAI,GAAO,EAAI,GAAI,EACd,KACJ,EAAK,GAAK,EAAM,KAAM,KAAM,EAAO,EAAK,SAEzC,EAAK,SAAU,EAAM,IAIvB,IAAK,IACJ,EAAW,GAAO,cAAe,EAAM,KAAM,GAAI,eAAe,EAAO,MACvE,EAAQ,EAAS,WAEmB,IAA/B,EAAS,WAAW,SACxB,EAAW,GAGP,GAAK,CAMT,IALA,EAAU,GAAO,IAAK,EAAQ,EAAQ,UAAc,GACpD,EAAa,EAAQ,OAIT,EAAJ,EAAO,IACd,EAAO,EAEF,IAAM,IACV,EAAO,GAAO,MAAO,GAAM,GAAM,GAG5B,GACJ,GAAO,MAAO,EAAS,EAAQ,EAAI,YAIrC,EAAS,KAAM,KAAK,GAAI,EAAM,EAG/B,IAAK,EAOJ,IANA,EAAM,EAAS,EAAQ,OAAS,GAAI,cAGpC,GAAO,IAAK,EAAS,GAGf,EAAI,EAAO,EAAJ,EAAgB,IAC5B,EAAO,EAAS,GACX,GAAY,KAAM,EAAK,MAAI,MAC9B,GAAO,MAAO,EAAI,eAAoB,GAAO,SAAU,EAAK,KAExD,EAAK,IAEJ,GAAO,UACX,GAAO,SAAU,EAAK,KAGvB,GAAO,YAAc,EAAK,MAAQ,EAAK,aAAe,EAAK,WAAS,IAAS,QAAS,GAAY,KAOtG,GAAW,EAAQ,KAIrB,MAAO,SAIT,GAAO,MACN,SAAQ,SACR,UAAS,UACT,aAAY,SACZ,YAAW,QACX,WAAU,eACR,SAAU,EAAM,GAClB,GAAO,GAAI,GAAS,SAAU,GAO7B,IANA,GAAI,GACH,EAAI,EACJ,KACA,EAAS,GAAQ,GACjB,EAAO,EAAO,OAAS,EAEX,GAAL,EAAW,IAClB,EAAQ,IAAM,EAAO,KAAO,KAAK,OAAM,GACvC,GAAQ,EAAO,IAAM,GAAY,GAGjC,EAAK,MAAO,EAAK,EAAM,MAGxB,OAAO,MAAK,UAAW,KAKzB,IAAI,IACH,OA0Dc,WAKd,GAAI,EAEJ,IAAQ,iBAAmB,WAC1B,GAA4B,MAAvB,EACJ,MAAO,EAIR,IAAsB,CAGtB,IAAI,GAAK,EAAM,CAGf,OADA,GAAO,GAAS,qBAAoB,QAAY,GAC1C,GAAS,EAAK,OAMpB,EAAM,GAAS,cAAa,OAC5B,EAAY,GAAS,cAAa,OAClC,EAAU,MAAM,QAAO,iEACvB,EAAK,YAAa,GAAY,YAAa,SAI/B,GAAI,MAAM,OAAS,KAE9B,EAAI,MAAM,QAEkB,iJAI5B,EAAI,YAAa,GAAS,cAAa,QAAY,MAAM,MAAK,MAC9D,EAA0C,IAApB,EAAI,aAG3B,EAAK,YAAa,GAEX,GA3BP,UA+BF,IAMI,IAAW,GANX,GAAO,UAEP,GAAY,GAAI,QAAM,KAAS,GAAI,kBAAe,KAKrD,GAAS,2BAEL,GAAO,kBACX,GAAY,SAAU,GAIrB,MAAK,GAAK,cAAc,YAAY,OAC5B,EAAK,cAAc,YAAY,iBAAkB,EAAM,MAGxD,EAAO,iBAAkB,EAAM,OAGvC,GAAS,SAAU,EAAM,EAAM,GAC9B,GAAI,GAAO,EAAU,EAAU,EAC9B,EAAQ,EAAK,KAqCd,OAnCA,GAAW,GAAY,GAAW,GAGlC,EAAM,EAAW,EAAS,iBAAkB,IAAU,EAAU,GAAS,OAEpE,IAEI,KAAH,GAAe,GAAO,SAAU,EAAK,cAAe,KACxD,EAAM,GAAO,MAAO,EAAM,IAOtB,GAAU,KAAM,IAAS,GAAQ,KAAM,KAG3C,EAAQ,EAAM,MACd,EAAW,EAAM,SACjB,EAAW,EAAM,SAGjB,EAAM,SAAW,EAAM,SAAW,EAAM,MAAQ,EAChD,EAAM,EAAS,MAGf,EAAM,MAAQ,EACd,EAAM,SAAW,EACjB,EAAM,SAAW,IAMJ,SAAR,EACN,EACA,EAAG,KAEM,GAAS,gBAAgB,eACpC,GAAY,SAAU,GACrB,MAAO,GAAK,cAGb,GAAS,SAAU,EAAM,EAAM,GAC9B,GAAI,GAAM,EAAI,EAAQ,EACrB,EAAQ,EAAK,KAyCd,OAvCA,GAAW,GAAY,GAAW,GAClC,EAAM,EAAW,EAAU,GAAS,OAIxB,MAAP,GAAe,GAAS,EAAO,KACnC,EAAM,EAAO,IAUT,GAAU,KAAM,KAAU,GAAU,KAAM,KAG9C,EAAO,EAAM,KACb,EAAK,EAAK,aACV,EAAS,GAAM,EAAG,KAGb,IACJ,EAAG,KAAO,EAAK,aAAa,MAE7B,EAAM,KAAW,aAAJ,EAAkB,MAAY,EAC3C,EAAM,EAAM,UAAS,KAGrB,EAAM,KAAO,EACR,IACJ,EAAG,KAAO,IAMG,SAAR,EACN,EACA,EAAG,IAAA,SA6B8C,WAwEnD,QAAS,KAER,GAAI,GAAK,EAAM,EAAW,CAE1B,GAAO,GAAS,qBAAoB,QAAY,GAC1C,GAAS,EAAK,QAMpB,EAAM,GAAS,cAAa,OAC5B,EAAY,GAAS,cAAa,OAClC,EAAU,MAAM,QAAO,iEACvB,EAAK,YAAa,GAAY,YAAa,GAE3C,EAAI,MAAM,QAEkB,uKAO5B,EAAmB,GAAuB,EAC1C,GAAyB,EAGpB,EAAO,mBACX,EAAqE,QAAhD,EAAO,iBAAkB,EAAK,WAAe,IAClE,EACmE,SAAhE,EAAO,iBAAkB,EAAK,QAAY,MAAK,QAAY,MAM9D,EAAW,EAAI,YAAa,GAAS,cAAa,QAGlD,EAAS,MAAM,QAAU,EAAI,MAAM,QAEP,8HAG5B,EAAS,MAAM,YAAc,EAAS,MAAM,MAAK,IACjD,EAAI,MAAM,MAAK,MAEf,GACE,YAAc,EAAO,iBAAkB,EAAU,WAAe,aAElE,EAAI,YAAa,IAUlB,EAAI,UAAS,8CACb,EAAW,EAAI,qBAAoB,MACnC,EAAU,GAAI,MAAM,QAAO,2CAC3B,EAA0D,IAA/B,EAAU,GAAI,aACpC,IACJ,EAAU,GAAI,MAAM,QAAO,GAC3B,EAAU,GAAI,MAAM,QAAO,OAC3B,EAA0D,IAA/B,EAAU,GAAI,cAG1C,EAAK,YAAa,IAxInB,GAAI,GAAK,EAAO,EAAG,EAAkB,EACpC,EAA0B,CAG3B,GAAM,GAAS,cAAa,OAC5B,EAAI,UAAS,qEACb,EAAI,EAAI,qBAAoB,KAAS,GACrC,EAAQ,GAAK,EAAE,MAGT,IAIN,EAAM,QAAO,wBAIb,GAAQ,QAAuB,QAAb,EAAM,QAIxB,GAAQ,WAAa,EAAM,SAE3B,EAAI,MAAM,eAAc,cACxB,EAAI,WAAW,GAAO,MAAM,eAAc,GAC1C,GAAQ,gBAA0C,gBAAxB,EAAI,MAAM,eAIpC,GAAQ,UAA2B,KAAf,EAAM,WAAsC,KAAlB,EAAM,cAC9B,KAArB,EAAM,gBAEP,GAAO,OAAO,IACb,sBAAuB,WAItB,MAHiC,OAA5B,GACJ,IAEM,GAGR,kBAAmB,WAIlB,MAH6B,OAAxB,GACJ,IAEM,GAGR,cAAe,WAId,MAHyB,OAApB,GACJ,IAEM,GAIR,oBAAqB,WAIpB,MAH+B,OAA1B,GACJ,IAEM,SAmFV,GAAO,KAAO,SAAU,EAAM,EAAS,EAAU,GAChD,GAAI,GAAK,EACR,IAGD,KAAM,IAAQ,GACb,EAAK,GAAS,EAAK,MAAO,GAC1B,EAAK,MAAO,GAAS,EAAS,EAG/B,GAAM,EAAS,MAAO,EAAM,MAG5B,KAAM,IAAQ,GACb,EAAK,MAAO,GAAS,EAAK,EAG3B,OAAO,GAIR,IACE,IAAM,kBACP,GAAQ,wBAIR,GAAY,4BACZ,GAAY,GAAI,QAAM,KAAS,GAAI,SAAA,KACnC,GAAU,GAAI,QAAM,YAAgB,GAAI,IAAA,KAExC,IAAY,SAAQ,WAAc,WAAU,SAAY,QAAO,SAC/D,IACC,cAAa,IACb,WAAU,OAGX,IAAW,SAAY,IAAK,MAAO,KAuKpC,IAAO,QAGN,UACC,SACC,IAAK,SAAU,EAAM,GACpB,GAAK,EAAQ,CAEZ,GAAI,GAAM,GAAQ,EAAI,UACtB,OAAU,KAAH,EAAG,IAAgB,MAO9B,WAAS,aACO,EAAI,aACJ,EAAI,UACP,EAAI,YACF,EAAI,YACJ,EAAI,YACJ,EAAI,SACP,EAAI,OACN,EAAI,SACF,EAAI,QACL,EAAI,QACJ,EAAI,MACN,GAKT,UACgC,QACtB,GAAQ,SAAQ,WAAY,cAItC,MAAO,SAAU,EAAM,EAAM,EAAO,GAEnC,GAAM,GAA0B,IAAlB,EAAK,UAAoC,IAAlB,EAAK,UAAmB,EAAK,MAAlE,CAKA,GAAI,GAAK,EAAM,EACd,EAAW,GAAO,UAAW,GAC7B,EAAQ,EAAK,KASd,IAPA,EAAO,GAAO,SAAU,KAAgB,GAAO,SAAU,GAAa,EAAgB,EAAO,IAI7F,EAAQ,GAAO,SAAU,IAAU,GAAO,SAAU,GAGrC,SAAV,EAsCJ,MAAK,IAAK,OAAa,IAAqD,UAA3C,EAAM,EAAM,IAAK,GAAM,EAAO,IACvD,EAID,EAAO,EAhCd,IAVA,QAAc,GAGL,WAAJ,IAAsB,EAAM,GAAQ,KAAM,MAC9C,GAAU,EAAI,GAAK,GAAM,EAAI,GAAK,WAAY,GAAO,IAAK,EAAM,IAEhE,EAAI,UAIS,MAAT,GAAiB,IAAU,IAKvB,WAAJ,GAAsB,GAAO,UAAW,KAC5C,GAAK,MAKA,GAAQ,iBAAwB,KAAL,GAA+C,IAA/B,EAAK,QAAO,gBAC5D,EAAO,GAAI,aAIN,GAAK,OAAe,IAAwD,UAA7C,EAAQ,EAAM,IAAK,EAAM,EAAO,MAIpE,IACC,EAAO,GAAS,EACf,MAAM,OAcX,IAAK,SAAU,EAAM,EAAM,EAAO,GACjC,GAAI,GAAK,EAAK,EACb,EAAW,GAAO,UAAW,EAyB9B,OAtBA,GAAO,GAAO,SAAU,KAAgB,GAAO,SAAU,GAAa,EAAgB,EAAK,MAAO,IAIlG,EAAQ,GAAO,SAAU,IAAU,GAAO,SAAU,GAG/C,GAAK,OAAa,KACtB,EAAM,EAAM,IAAK,GAAM,EAAM,IAIjB,SAAR,IACJ,EAAM,GAAQ,EAAM,EAAM,IAInB,WAAH,GAAoB,IAAQ,MAChC,EAAM,GAAoB,IAIjB,KAAL,GAAgB,GACpB,EAAM,WAAY,GACX,KAAU,GAAQ,GAAO,UAAW,GAAQ,GAAO,EAAI,GAExD,KAIT,GAAO,MAAI,SAAU,SAAc,SAAU,EAAG,GAC/C,GAAO,SAAU,IAChB,IAAK,SAAU,EAAM,EAAU,GAC9B,MAAK,GAGG,GAAa,KAAM,GAAO,IAAK,EAAI,aAAwC,IAArB,EAAK,YACjE,GAAO,KAAM,EAAM,GAAS,WAC3B,MAAO,GAAkB,EAAM,EAAM,KAEtC,EAAkB,EAAM,EAAM,GAPhC,QAWD,IAAK,SAAU,EAAM,EAAO,GAC3B,GAAI,GAAS,GAAS,GAAW,EACjC,OAAO,GAAmB,EAAM,EAAO,EACtC,EACC,EACA,EACA,EACA,GAAQ,WAAyD,eAA5C,GAAO,IAAK,EAAI,aAAe,EAAO,GAC3D,GACG,OAMF,GAAQ,UACb,GAAO,SAAS,SACf,IAAK,SAAU,EAAM,GAEpB,MAAO,IAAS,MAAO,GAAY,EAAK,aAAe,EAAK,aAAa,OAAS,EAAK,MAAM,SAAM,IAChG,IAAO,WAAY,OAAM,IAAG,GAC9B,EAAQ,IAAK,IAGf,IAAK,SAAU,EAAM,GACpB,GAAI,GAAQ,EAAK,MAChB,EAAe,EAAK,aACpB,EAAU,GAAO,UAAW,GAAK,iBAAgC,IAAR,EAAW,IAAA,GACpE,EAAS,GAAgB,EAAa,QAAU,EAAM,QAAM,EAI7D,GAAM,KAAO,GAIN,GAAS,GAAU,KAAL,IACgB,KAAnC,GAAO,KAAM,EAAO,QAAS,GAAM,MACnC,EAAM,kBAKP,EAAM,gBAAe,UAGX,KAAL,GAAgB,IAAiB,EAAa,UAMpD,EAAM,OAAS,GAAO,KAAM,GAC3B,EAAO,QAAS,GAAQ,GACxB,EAAM,IAAS,MAKnB,GAAO,SAAS,YAAc,EAAc,GAAQ,oBACnD,SAAU,EAAM,GACf,MAAK,GAGG,GAAO,KAAM,GAAI,QAAY,gBACnC,IAAU,EAAI,gBAJhB,SAUF,GAAO,MACN,OAAM,GACN,QAAO,GACP,OAAM,SACJ,SAAU,EAAQ,GACpB,GAAO,SAAU,EAAS,IACzB,OAAQ,SAAU,GAOjB,IANA,GAAI,GAAI,EACP,KAGA,EAAoB,gBAAL,GAAqB,EAAM,MAAK,MAAU,GAE9C,EAAJ,EAAO,IACd,EAAU,EAAS,GAAW,GAAM,GACnC,EAAO,IAAO,EAAO,EAAI,IAAO,EAAO,EAGzC,OAAO,KAIH,GAAQ,KAAM,KACnB,GAAO,SAAU,EAAS,GAAS,IAAM,KAI3C,GAAO,GAAG,QACT,IAAK,SAAU,EAAM,GACpB,MAAO,IAAQ,KAAM,SAAU,EAAM,EAAM,GAC1C,GAAI,GAAQ,EACX,KACA,EAAI,CAEL,IAAK,GAAO,QAAS,GAAI,CAIxB,IAHA,EAAS,GAAW,GACpB,EAAM,EAAK,OAEC,EAAJ,EAAS,IAChB,EAAK,EAAM,IAAQ,GAAO,IAAK,EAAM,EAAM,IAAK,EAAO,EAGxD,OAAO,GAGR,MAAiB,UAAV,EACN,GAAO,MAAO,EAAM,EAAM,GAC1B,GAAO,IAAK,EAAM,IACjB,EAAM,EAAO,UAAU,OAAS,IAEpC,KAAM,WACL,MAAO,GAAU,MAAM,IAExB,KAAM,WACL,MAAO,GAAU,OAElB,OAAQ,SAAU,GACjB,MAAiB,iBAAL,GACJ,EAAQ,KAAK,OAAS,KAAK,OAG5B,KAAK,KAAK,WACX,GAAU,MACd,GAAQ,MAAO,OAEf,GAAQ,MAAO,YAUnB,GAAO,MAAQ,EAEf,EAAM,WACL,YAAa,EACb,KAAM,SAAU,EAAM,EAAS,EAAM,EAAK,EAAQ,GACjD,KAAK,KAAO,EACZ,KAAK,KAAO,EACZ,KAAK,OAAS,GAAM,QACpB,KAAK,QAAU,EACf,KAAK,MAAQ,KAAK,IAAM,KAAK,MAC7B,KAAK,IAAM,EACX,KAAK,KAAO,IAAU,GAAO,UAAW,GAAI,GAAA,OAE7C,IAAK,WACJ,GAAI,GAAQ,EAAM,UAAW,KAAK,KAElC,OAAO,IAAS,EAAM,IACrB,EAAM,IAAK,MACX,EAAM,UAAU,SAAS,IAAK,OAEhC,IAAK,SAAU,GACd,GAAI,GACH,EAAQ,EAAM,UAAW,KAAK,KAoB/B,OAjBC,MAAK,IAAM,EADP,KAAK,QAAQ,SACE,GAAO,OAAQ,KAAK,QACtC,EAAS,KAAK,QAAQ,SAAW,EAAS,EAAG,EAAG,KAAK,QAAQ,UAG3C,EAEpB,KAAK,KAAQ,KAAK,IAAM,KAAK,OAAU,EAAQ,KAAK,MAE/C,KAAK,QAAQ,MACjB,KAAK,QAAQ,KAAK,KAAM,KAAK,KAAM,KAAK,IAAK,MAGzC,GAAS,EAAM,IACnB,EAAM,IAAK,MAEX,EAAM,UAAU,SAAS,IAAK,MAExB,OAIT,EAAM,UAAU,KAAK,UAAY,EAAM,UAEvC,EAAM,WACL,UACC,IAAK,SAAU,GACd,GAAI,EAEJ,OAAiC,OAA5B,EAAM,KAAM,EAAM,OACpB,EAAM,KAAK,OAA2C,MAAlC,EAAM,KAAK,MAAO,EAAM,OAQ/C,EAAS,GAAO,IAAK,EAAM,KAAM,EAAM,KAAI,IAEnC,GAAgB,SAAN,EAAwB,EAAJ,GAT9B,EAAM,KAAM,EAAM,OAW3B,IAAK,SAAU,GAGT,GAAO,GAAG,KAAM,EAAM,MAC1B,GAAO,GAAG,KAAM,EAAM,MAAQ,GACnB,EAAM,KAAK,QAAgE,MAArD,EAAM,KAAK,MAAO,GAAO,SAAU,EAAM,QAAoB,GAAO,SAAU,EAAM,OACrH,GAAO,MAAO,EAAM,KAAM,EAAM,KAAM,EAAM,IAAM,EAAM,MAExD,EAAM,KAAM,EAAM,MAAS,EAAM,OASrC,EAAM,UAAU,UAAY,EAAM,UAAU,YAC3C,IAAK,SAAU,GACT,EAAM,KAAK,UAAY,EAAM,KAAK,aACtC,EAAM,KAAM,EAAM,MAAS,EAAM,OAKpC,GAAO,QACN,OAAQ,SAAU,GACjB,MAAO,IAER,MAAO,SAAU,GAChB,MAAO,GAAM,KAAK,IAAK,EAAI,KAAK,IAAO,IAIzC,GAAO,GAAK,EAAM,UAAU,KAG5B,GAAO,GAAG,OAKV,IACC,IAAO,GACP,GAAQ,yBACR,GAAS,GAAI,QAAM,iBAAqB,GAAI,cAAU,KACtD,GAAI,cACJ,IAAwB,GACxB,IAAQ,KACA,SAAU,EAAM,GACtB,GAAI,GAAQ,KAAK,YAAa,EAAM,GACnC,EAAS,EAAM,MACf,EAAQ,GAAO,KAAM,GACrB,EAAO,GAAS,EAAO,KAAS,GAAO,UAAW,GAAI,GAAA,MAGtD,GAAU,GAAO,UAAW,IAAc,OAAJ,IAAkB,IACvD,GAAO,KAAM,GAAO,IAAK,EAAM,KAAM,IACtC,EAAQ,EACR,EAAgB,EAEjB,IAAK,GAAS,EAAO,KAAQ,EAAI,CAEhC,EAAO,GAAQ,EAAO,GAGtB,EAAQ,MAGR,GAAS,GAAU,CAEnB,GAGC,GAAQ,GAAK,KAGb,GAAgB,EAChB,GAAO,MAAO,EAAM,KAAM,EAAM,EAAQ,SAI/B,KAAW,EAAQ,EAAM,MAAQ,IAAqB,IAAV,KAAiB,GAaxE,MATK,KACJ,EAAQ,EAAM,OAAS,IAAU,GAAU,EAC3C,EAAM,KAAO,EAEb,EAAM,IAAM,EAAO,GAClB,GAAU,EAAO,GAAM,GAAM,EAAO,IACnC,EAAO,IAGH,IA0UV,IAAO,UAAY,GAAO,OAAQ,GACjC,QAAS,SAAU,EAAO,GACpB,GAAO,WAAY,IACvB,EAAW,EACX,GAAK,MAEL,EAAQ,EAAM,MAAK,IAOpB,KAJA,GAAI,GACH,EAAQ,EACR,EAAS,EAAM,OAEA,EAAR,EAAiB,IACxB,EAAO,EAAO,GACd,GAAU,GAAS,GAAU,OAC7B,GAAU,GAAO,QAAS,IAI5B,UAAW,SAAU,EAAU,GACzB,EACJ,GAAoB,QAAS,GAE7B,GAAoB,KAAM,MAK7B,GAAO,MAAQ,SAAU,EAAO,EAAQ,GACvC,GAAI,GAAM,GAAqB,gBAAL,GAAqB,GAAO,UAAY,IACjE,SAAU,IAAO,GAAM,GACtB,GAAO,WAAY,IAAW,EAC/B,SAAU,EACV,OAAQ,GAAM,GAAU,IAAW,GAAO,WAAY,IAAY,EAwBnE,OArBA,GAAI,SAAW,GAAO,GAAG,IAAM,EAAuB,gBAAZ,GAAI,SAAwB,EAAI,SACzE,EAAI,WAAY,IAAO,GAAG,OAAS,GAAO,GAAG,OAAQ,EAAI,UAAa,GAAO,GAAG,OAAO,UAGtE,MAAb,EAAI,OAAiB,EAAI,SAAU,KACvC,EAAI,MAAK,MAIV,EAAI,IAAM,EAAI,SAEd,EAAI,SAAW,WACT,GAAO,WAAY,EAAI,MAC3B,EAAI,IAAI,KAAM,MAGV,EAAI,OACR,GAAO,QAAS,KAAM,EAAI,QAIrB,GAGR,GAAO,GAAG,QACT,OAAQ,SAAU,EAAO,EAAI,EAAQ,GAGpC,MAAO,MAAK,OAAQ,IAAW,IAAG,UAAa,GAAI,OAGjD,MAAM,SAAU,QAAS,GAAM,EAAO,EAAQ,IAEjD,QAAS,SAAU,EAAM,EAAO,EAAQ,GACvC,GAAI,GAAQ,GAAO,cAAe,GACjC,EAAS,GAAO,MAAO,EAAO,EAAQ,GACtC,EAAc,WAEb,GAAI,GAAO,EAAW,KAAM,GAAO,UAAY,GAAQ,IAGlD,GAAS,GAAO,MAAO,KAAI,YAC/B,EAAK,MAAM,GAKd,OAFC,GAAY,OAAS,EAEf,GAAS,EAAO,SAAU,EAChC,KAAK,KAAM,GACX,KAAK,MAAO,EAAO,MAAO,IAE5B,KAAM,SAAU,EAAM,EAAY,GACjC,GAAI,GAAY,SAAU,GACzB,GAAI,GAAO,EAAM,WACV,GAAM,KACb,EAAM,GAYP,OATgB,gBAAJ,KACX,EAAU,EACV,EAAa,EACb,EAAO,QAEH,GAAc,KAAS,GAC3B,KAAK,MAAO,GAAI,SAGV,KAAK,KAAK,WAChB,GAAI,IAAU,EACb,EAAgB,MAAR,GAAgB,EAAI,aAC5B,EAAS,GAAO,OAChB,EAAO,GAAO,MAAO,KAEtB,IAAK,EACC,EAAM,IAAW,EAAM,GAAQ,MACnC,EAAW,EAAM,QAGlB,KAAM,IAAS,GACT,EAAM,IAAW,EAAM,GAAQ,MAAQ,GAAK,KAAM,IACtD,EAAW,EAAM,GAKpB,KAAM,EAAQ,EAAO,OAAQ,KACvB,EAAQ,GAAQ,OAAS,MAAiB,MAAR,GAAgB,EAAQ,GAAQ,QAAU,IAChF,EAAQ,GAAQ,KAAK,KAAM,GAC3B,GAAU,EACV,EAAO,OAAQ,EAAO,KAOnB,IAAY,IAChB,GAAO,QAAS,KAAM,MAIzB,OAAQ,SAAU,GAIjB,MAHK,MAAS,IACb,EAAO,GAAI,MAEL,KAAK,KAAK,WAChB,GAAI,GACH,EAAO,GAAO,MAAO,MACrB,EAAQ,EAAM,EAAI,SAClB,EAAQ,EAAM,EAAI,cAClB,EAAS,GAAO,OAChB,EAAS,EAAQ,EAAM,OAAS,CAajC,KAVA,EAAK,QAAS,EAGd,GAAO,MAAO,KAAM,MAEf,GAAS,EAAM,MACnB,EAAM,KAAK,KAAM,MAAM,GAIlB,EAAQ,EAAO,OAAQ,KACvB,EAAQ,GAAQ,OAAS,MAAQ,EAAQ,GAAQ,QAAU,IAC/D,EAAQ,GAAQ,KAAK,MAAM,GAC3B,EAAO,OAAQ,EAAO,GAKxB,KAAM,EAAQ,EAAW,EAAR,EAAgB,IAC3B,EAAO,IAAW,EAAO,GAAQ,QACrC,EAAO,GAAQ,OAAO,KAAM,YAKvB,GAAK,YAKf,GAAO,MAAI,SAAU,OAAQ,QAAa,SAAU,EAAG,GACtD,GAAI,GAAQ,GAAO,GAAI,EACvB,IAAO,GAAI,GAAS,SAAU,EAAO,EAAQ,GAC5C,MAAgB,OAAT,GAA6B,iBAAL,GAC9B,EAAM,MAAO,KAAM,WACnB,KAAK,QAAS,EAAO,GAAM,GAAQ,EAAO,EAAQ,MAKrD,GAAO,MACN,UAAW,EAAK,QAChB,QAAS,EAAK,QACd,YAAa,EAAK,UAClB,QAAU,QAAO,QACjB,SAAW,QAAO,QAClB,YAAc,QAAO,WACnB,SAAU,EAAM,GAClB,GAAO,GAAI,GAAS,SAAU,EAAO,EAAQ,GAC5C,MAAO,MAAK,QAAS,EAAO,EAAO,EAAQ,MAI7C,GAAO,UACP,GAAO,GAAG,KAAO,WAChB,GAAI,GACH,EAAS,GAAO,OAChB,EAAI,CAIL,KAFA,GAAQ,GAAO,MAEP,EAAI,EAAO,OAAQ,IAC1B,EAAQ,EAAQ,GAEV,KAAW,EAAQ,KAAQ,GAChC,EAAO,OAAQ,IAAK,EAIhB,GAAO,QACZ,GAAO,GAAG,OAEX,GAAQ,QAGT,GAAO,GAAG,MAAQ,SAAU,GAC3B,GAAO,OAAO,KAAM,GACf,IACJ,GAAO,GAAG,QAEV,GAAO,OAAO,OAIhB,GAAO,GAAG,SAAW,GAErB,GAAO,GAAG,MAAQ,WACX,KACL,GAAU,YAAa,GAAO,GAAG,KAAM,GAAO,GAAG,YAInD,GAAO,GAAG,KAAO,WAChB,cAAe,IACf,GAAU,MAGX,GAAO,GAAG,QACT,KAAM,IACN,KAAM,IAEN,SAAU,KAMX,GAAO,GAAG,MAAQ,SAAU,EAAM,GAIjC,MAHA,GAAO,GAAO,GAAK,GAAO,GAAG,OAAQ,IAAU,EAAO,EACtD,EAAO,GAAI,KAEJ,KAAK,MAAO,EAAM,SAAU,EAAM,GACxC,GAAI,GAAU,WAAY,EAAM,EAChC,GAAM,KAAO,WACZ,aAAc,OAAO,WAQvB,GAAI,GAAO,EAAK,EAAQ,EAAG,CAG3B,GAAM,GAAS,cAAa,OAC5B,EAAI,aAAY,YAAY,KAC5B,EAAI,UAAS,qEACb,EAAI,EAAI,qBAAoB,KAAO,GAGnC,EAAS,GAAS,cAAa,UAC/B,EAAM,EAAO,YAAa,GAAS,cAAa,WAChD,EAAQ,EAAI,qBAAoB,SAAW,GAE3C,EAAE,MAAM,QAAO,UAGf,GAAQ,gBAA+B,MAAb,EAAI,UAI9B,GAAQ,MAAK,MAAS,KAAM,EAAE,aAAY,UAI1C,GAAQ,eAAqC,OAApB,EAAE,aAAY,QAGvC,GAAQ,UAAY,EAAM,MAI1B,GAAQ,YAAc,EAAI,SAG1B,GAAQ,UAAY,GAAS,cAAa,QAAS,QAInD,EAAO,UAAW,EAClB,GAAQ,aAAe,EAAI,SAI3B,EAAQ,GAAS,cAAa,SAC9B,EAAM,aAAY,QAAQ,IAC1B,GAAQ,MAAkC,KAA1B,EAAM,aAAY,SAGlC,EAAM,MAAK,IACX,EAAM,aAAY,OAAO,SACzB,GAAQ,WAAwB,MAAX,EAAM,QAI5B,IAAI,IAAO,KAEX,IAAO,GAAG,QACT,IAAK,SAAU,GACd,GAAI,GAAO,EAAK,EACf,EAAO,KAAK,EAEb,EAAA,GAAM,UAAU,OAsBhB,MAFA,GAAa,GAAO,WAAY,GAEzB,KAAK,KAAK,SAAU,GAC1B,GAAI,EAEmB,KAAlB,KAAK,WAKT,EADI,EACE,EAAM,KAAM,KAAM,EAAG,GAAQ,MAAO,OAEpC,EAIK,MAAP,EACJ,EAAG,GACkB,gBAAH,GAClB,GAAG,GACQ,GAAO,QAAS,KAC3B,EAAM,GAAO,IAAK,EAAK,SAAU,GAChC,MAAgB,OAAT,EAAa,GAAQ,EAAK,MAInC,EAAQ,GAAO,SAAU,KAAK,OAAU,GAAO,SAAU,KAAK,SAAS,eAGjE,GAAK,OAAe,IAA8C,SAApC,EAAM,IAAK,KAAM,EAAG,WACvD,KAAK,MAAQ,KAjDd,IAAK,EAGJ,MAFA,GAAQ,GAAO,SAAU,EAAK,OAAU,GAAO,SAAU,EAAK,SAAS,eAElE,GAAK,OAAa,IAAgD,UAAtC,EAAM,EAAM,IAAK,EAAI,UAC9C,GAGR,EAAM,EAAK,MAEM,gBAAH,GAEb,EAAI,QAAQ,GAAO,IAEZ,MAAP,EAAW,GAAQ,OA0CxB,GAAO,QACN,UACC,QACC,IAAK,SAAU,GACd,GAAI,GAAM,GAAO,KAAK,KAAM,EAAI,QAChC,OAAc,OAAP,EACN,EAGA,GAAO,KAAM,GAAO,KAAM,MAG7B,QACC,IAAK,SAAU,GAYd,IAXA,GAAI,GAAO,EACV,EAAU,EAAK,QACf,EAAQ,EAAK,cACb,EAAe,eAAT,EAAK,MAAiC,EAAR,EACpC,EAAS,EAAM,QACf,EAAM,EAAM,EAAQ,EAAI,EAAQ,OAChC,EAAY,EAAR,EACH,EACA,EAAM,EAAQ,EAGJ,EAAJ,EAAS,IAIhB,GAHA,EAAS,EAAS,MAGX,EAAO,UAAY,IAAM,IAE5B,GAAQ,YAAe,EAAO,SAA+C,OAApC,EAAO,aAAY,cAC3D,EAAO,WAAW,UAAa,GAAO,SAAU,EAAO,WAAU,aAAW,CAMhF,GAHA,EAAQ,GAAQ,GAAS,MAGpB,EACJ,MAAO,EAIR,GAAO,KAAM,GAIf,MAAO,IAGR,IAAK,SAAU,EAAM,GAMpB,IALA,GAAI,GAAW,EACd,EAAU,EAAK,QACf,EAAS,GAAO,UAAW,GAC3B,EAAI,EAAQ,OAEL,KAGP,GAFA,EAAS,EAAS,GAEb,GAAO,QAAS,GAAO,SAAS,OAAO,IAAK,GAAU,IAAY,EAMtE,IACC,EAAO,SAAW,GAAY,EAE7B,MAAQ,GAGT,EAAO,iBAIR,GAAO,UAAW,CASpB,OAJM,KACL,EAAK,cAAa,IAGZ,OAOX,GAAO,MAAI,QAAS,YAAiB,WACpC,GAAO,SAAU,OAChB,IAAK,SAAU,EAAM,GACpB,MAAK,IAAO,QAAS,GACX,EAAK,QAAU,GAAO,QAAS,GAAO,GAAM,MAAO,IAAW,EADxE,SAKI,GAAQ,UACb,GAAO,SAAU,MAAO,IAAM,SAAU,GAGvC,MAAsC,QAA/B,EAAK,aAAY,SAAkB,KAAU,EAAK,SAQ5D,IAAI,IAAU,GACb,GAAa,GAAO,KAAK,WACzB,GAAW,0BACX,GAAkB,GAAQ,gBAC1B,GAAc,GAAQ,KAEvB,IAAO,GAAG,QACT,KAAM,SAAU,EAAM,GACrB,MAAO,IAAQ,KAAM,GAAO,KAAM,EAAM,EAAO,UAAU,OAAS,IAGnE,WAAY,SAAU,GACrB,MAAO,MAAK,KAAK,WAChB,GAAO,WAAY,KAAM,QAK5B,GAAO,QACN,KAAM,SAAU,EAAM,EAAM,GAC3B,GAAI,GAAO,EACV,EAAQ,EAAK,QAGd,IAAM,GAAkB,IAAV,GAAyB,IAAV,GAAyB,IAAV,EAK5C,aAAY,GAAK,eAAiB,GAC1B,GAAO,KAAM,EAAM,EAAM,IAKlB,IAAV,GAAgB,GAAO,SAAU,KACrC,EAAO,EAAK,cACZ,EAAQ,GAAO,UAAW,KACvB,GAAO,KAAK,MAAM,KAAK,KAAM,GAAS,GAAW,KAGtC,SAAV,EAaO,GAAK,OAAa,IAA6C,QAAnC,EAAM,EAAM,IAAK,EAAM,IACvD,GAGP,EAAM,GAAO,KAAK,KAAM,EAAM,GAGhB,MAAP,EACN,OACA,GApBc,OAAV,EAGO,GAAK,OAAa,IAAoD,UAA1C,EAAM,EAAM,IAAK,EAAM,EAAO,IAC9D,GAGP,EAAK,aAAc,EAAM,EAAK,IACvB,OAPP,IAAO,WAAY,EAAM,KAuB5B,WAAY,SAAU,EAAM,GAC3B,GAAI,GAAM,EACT,EAAI,EACJ,EAAY,GAAS,EAAM,MAAO,GAEnC,IAAK,GAA+B,IAAlB,EAAK,SACtB,KAAS,EAAO,EAAU,MACzB,EAAW,GAAO,QAAS,IAAU,EAGhC,GAAO,KAAK,MAAM,KAAK,KAAM,GAE5B,IAAe,KAAoB,GAAY,KAAM,GACzD,EAAM,IAAa,EAInB,EAAM,GAAO,UAAS,WAAe,IACpC,EAAM,IAAa,EAKrB,GAAO,KAAM,EAAM,EAAI,IAGxB,EAAK,gBAAiB,GAAkB,EAAO,IAKlD,WACC,MACC,IAAK,SAAU,EAAM,GACpB,IAAM,GAAQ,YAAmB,UAAL,GAAqB,GAAO,SAAS,EAAI,SAAQ,CAG5E,GAAI,GAAM,EAAK,KAKf,OAJA,GAAK,aAAY,OAAU,GACtB,IACJ,EAAK,MAAQ,GAEP,QAQZ,IACC,IAAK,SAAU,EAAM,EAAO,GAa3B,MAZK,MAAU,EAEd,GAAO,WAAY,EAAM,GACd,IAAe,KAAoB,GAAY,KAAM,GAEhE,EAAK,cAAe,IAAmB,GAAO,QAAS,IAAU,EAAM,GAIvE,EAAM,GAAO,UAAS,WAAe,IAAW,EAAM,IAAS,EAGzD,IAKT,GAAO,KAAM,GAAO,KAAK,MAAM,KAAK,OAAO,MAAK,QAAY,SAAU,EAAG,GAExE,GAAI,GAAS,GAAY,IAAU,GAAO,KAAK,IAE/C,IAAY,GAAS,IAAe,KAAoB,GAAY,KAAM,GACzE,SAAU,EAAM,EAAM,GACrB,GAAI,GAAK,CAUT,OATM,KAEL,EAAS,GAAY,GACrB,GAAY,GAAS,EACrB,EAAqC,MAA/B,EAAQ,EAAM,EAAM,GACzB,EAAK,cACL,KACD,GAAY,GAAS,GAEf,GAER,SAAU,EAAM,EAAM,GACrB,MAAM,GAAN,OACQ,EAAM,GAAO,UAAS,WAAe,IAC3C,EAAK,cACL,QAMC,IAAgB,KACrB,GAAO,UAAU,OAChB,IAAK,SAAU,EAAM,EAAO,GAC3B,MAAK,IAAO,SAAU,EAAI,cAEzB,EAAK,aAAe,GAGb,IAAY,GAAS,IAAK,EAAM,EAAO,MAO5C,KAIL,IACC,IAAK,SAAU,EAAM,EAAO,GAE3B,GAAI,GAAM,EAAK,iBAAkB,EAUjC,OATM,IACL,EAAK,iBACH,EAAM,EAAK,cAAc,gBAAiB,IAI7C,EAAI,MAAQ,GAAK,GAGR,UAAJ,GAAoB,IAAU,EAAK,aAAc,GAC9C,EADR,SAOF,GAAW,GAAK,GAAW,KAAO,GAAW,OAC5C,SAAU,EAAM,EAAM,GACrB,GAAI,EACJ,OAAM,GAAN,QACS,EAAM,EAAK,iBAAkB,KAAoB,KAAT,EAAI,MACnD,EAAI,MACJ,MAKJ,GAAO,SAAS,QACf,IAAK,SAAU,EAAM,GACpB,GAAI,GAAM,EAAK,iBAAkB,EACjC,OAAK,IAAO,EAAI,UACR,EAAI,MADZ,QAID,IAAK,GAAS,KAKf,GAAO,UAAU,iBAChB,IAAK,SAAU,EAAM,EAAO,GAC3B,GAAS,IAAK,EAAW,KAAL,GAAe,EAAQ,EAAO,KAMpD,GAAO,MAAI,QAAS,UAAe,SAAU,EAAG,GAC/C,GAAO,UAAW,IACjB,IAAK,SAAU,EAAM,GACpB,MAAU,KAAL,GACJ,EAAK,aAAc,EAAI,QAChB,GAFR,YASE,GAAQ,QACb,GAAO,UAAU,OAChB,IAAK,SAAU,GAId,MAAO,GAAK,MAAM,SAAW,QAE9B,IAAK,SAAU,EAAM,GACpB,MAAS,GAAK,MAAM,QAAU,EAAK,KAQtC,IAAI,IAAU,6CACb,GAAU,eAEX,IAAO,GAAG,QACT,KAAM,SAAU,EAAM,GACrB,MAAO,IAAQ,KAAM,GAAO,KAAM,EAAM,EAAO,UAAU,OAAS,IAGnE,WAAY,SAAU,GAErB,MADA,GAAO,GAAO,QAAS,IAAU,EAC1B,KAAK,KAAK,WAEhB,IACC,KAAM,GAAS,aACR,MAAM,GACZ,MAAO,UAKZ,GAAO,QACN,SAAO,MACF,UAAW,QACT,aAGP,KAAM,SAAU,EAAM,EAAM,GAC3B,GAAI,GAAK,EAAO,EACf,EAAQ,EAAK,QAGd,IAAM,GAAkB,IAAV,GAAyB,IAAV,GAAyB,IAAV,EAY5C,MARA,GAAmB,IAAV,IAAgB,GAAO,SAAU,GAErC,IAEJ,EAAO,GAAO,QAAS,IAAU,EACjC,EAAQ,GAAO,UAAW,IAGZ,SAAV,EACG,GAAK,OAAa,IAAoD,UAA1C,EAAM,EAAM,IAAK,EAAM,EAAO,IAChE,EACE,EAAM,GAAS,EAGX,GAAK,OAAa,IAA6C,QAAnC,EAAM,EAAM,IAAK,EAAM,IACzD,EACA,EAAM,IAIT,WACC,UACC,IAAK,SAAU,GAId,GAAI,GAAW,GAAO,KAAK,KAAM,EAAI,WAErC,OAAO,GACN,SAAU,EAAU,IACpB,GAAW,KAAM,EAAK,WAAc,GAAW,KAAM,EAAK,WAAc,EAAK,KAC5E,EAAC,QASD,GAAQ,gBAEb,GAAO,MAAI,OAAQ,OAAY,SAAU,EAAG,GAC3C,GAAO,UAAW,IACjB,IAAK,SAAU,GACd,MAAO,GAAK,aAAc,EAAM,OAS9B,GAAQ,cACb,GAAO,UAAU,UAChB,IAAK,SAAU,GACd,GAAI,GAAS,EAAK,UAUlB,OARK,KACJ,EAAO,cAGF,EAAO,YACX,EAAO,WAAW,eAGb,QAKV,GAAO,MAAI,WACD,WACA,YACC,cACE,cACA,UACJ,UACA,SACD,cACK,mBAEV,WACF,GAAO,QAAS,KAAK,eAAkB,OAIlC,GAAQ,UACb,GAAO,QAAQ,QAAO,WAMvB,IAAI,IAAM,aAEV,IAAO,GAAG,QACT,SAAU,SAAU,GACnB,GAAI,GAAS,EAAM,EAAK,EAAO,EAAG,EACjC,EAAI,EACJ,EAAM,KAAK,OACX,EAAsB,gBAAL,IAAsB,CAExC,IAAK,GAAO,WAAY,GACvB,MAAO,MAAK,KAAK,SAAU,GAC1B,GAAQ,MAAO,SAAU,EAAM,KAAM,KAAM,EAAG,KAAK,aAIrD,IAAK,EAIJ,IAFA,GAAY,GAAK,IAAS,MAAO,QAErB,EAAJ,EAAS,IAOhB,GANA,EAAO,KAAM,GACb,EAAwB,IAAlB,EAAK,WAAoB,EAAK,WAAS,IACpC,EAAK,UAAS,KAAS,QAAS,GAAM,KAAA,KAIvC,CAEP,IADA,EAAI,EACK,EAAQ,EAAQ,MACnB,EAAI,QAAO,IAAQ,EAAK,KAAW,IACvC,GAAO,EAAK,IAKd,GAAa,GAAO,KAAM,GACrB,EAAK,YAAc,IACvB,EAAK,UAAY,GAMrB,MAAO,OAGR,YAAa,SAAU,GACtB,GAAI,GAAS,EAAM,EAAK,EAAO,EAAG,EACjC,EAAI,EACJ,EAAM,KAAK,OACX,EAA+B,IAArB,UAAU,QAA4B,gBAAL,IAAsB,CAElE,IAAK,GAAO,WAAY,GACvB,MAAO,MAAK,KAAK,SAAU,GAC1B,GAAQ,MAAO,YAAa,EAAM,KAAM,KAAM,EAAG,KAAK,aAGxD,IAAK,EAGJ,IAFA,GAAY,GAAK,IAAS,MAAO,QAErB,EAAJ,EAAS,IAQhB,GAPA,EAAO,KAAM,GAEb,EAAwB,IAAlB,EAAK,WAAoB,EAAK,WAAS,IACpC,EAAK,UAAS,KAAS,QAAS,GAAM,KAAA,IAIvC,CAEP,IADA,EAAI,EACK,EAAQ,EAAQ,MAExB,KAAQ,EAAI,QAAO,IAAQ,EAAK,MAAY,GAC3C,EAAM,EAAI,QAAO,IAAQ,EAAK,IAAA,IAKhC,GAAa,EAAQ,GAAO,KAAM,GAAG,GAChC,EAAK,YAAc,IACvB,EAAK,UAAY,GAMrB,MAAO,OAGR,YAAa,SAAU,EAAO,GAC7B,GAAI,SAAc,EAElB,OAAoB,iBAAR,IAA8B,WAAJ,EAC9B,EAAW,KAAK,SAAU,GAAU,KAAK,YAAa,GAItD,KAAK,KADR,GAAO,WAAY,GACN,SAAU,GAC1B,GAAQ,MAAO,YAAa,EAAM,KAAK,KAAM,EAAG,KAAK,UAAW,GAAW,IAI5D,WAChB,GAAS,WAAJ,EAOJ,IALA,GAAI,GACH,EAAI,EACJ,EAAO,GAAQ,MACf,EAAa,EAAM,MAAO,QAElB,EAAY,EAAY,MAE3B,EAAK,SAAU,GACnB,EAAK,YAAa,GAElB,EAAK,SAAU,QAKN,IAAS,IAAoB,YAAJ,KAC/B,KAAK,WAET,GAAO,MAAO,KAAI,gBAAmB,KAAK,WAO3C,KAAK,UAAY,KAAK,WAAa,KAAU,EAAK,GAAQ,GAAO,MAAO,KAAI,kBAAgB,OAK/F,SAAU,SAAU,GAInB,IAHA,GAAI,GAAS,IAAS,EAAQ,IAC7B,EAAI,EACJ,EAAI,KAAK,OACE,EAAJ,EAAO,IACd,GAA0B,IAArB,KAAK,GAAG,WAAc,IAAW,KAAK,GAAG,UAAS,KAAQ,QAAQ,GAAM,KAAO,QAAS,IAAe,EAC3G,OAAO,CAIT,QAAO,KAUT,GAAO,KAAI,0MAEuD,MAAK,KAAO,SAAU,EAAG,GAG1F,GAAO,GAAI,GAAS,SAAU,EAAM,GACnC,MAAO,WAAU,OAAS,EACzB,KAAK,GAAI,EAAM,KAAM,EAAM,GAC3B,KAAK,QAAS,MAIjB,GAAO,GAAG,QACT,MAAO,SAAU,EAAQ,GACxB,MAAO,MAAK,WAAY,GAAS,WAAY,GAAS,IAGvD,KAAM,SAAU,EAAO,EAAM,GAC5B,MAAO,MAAK,GAAI,EAAO,KAAM,EAAM,IAEpC,OAAQ,SAAU,EAAO,GACxB,MAAO,MAAK,IAAK,EAAO,KAAM,IAG/B,SAAU,SAAU,EAAU,EAAO,EAAM,GAC1C,MAAO,MAAK,GAAI,EAAO,EAAU,EAAM,IAExC,WAAY,SAAU,EAAU,EAAO,GAEtC,MAA4B,KAArB,UAAU,OAAe,KAAK,IAAK,EAAQ,MAAW,KAAK,IAAK,EAAO,GAAQ,KAAU,KAKlG,IAAI,IAAQ,GAAO,MAEf,GAAM,KAIN,GAAY,kIAEhB,IAAO,UAAY,SAAU,GAE5B,GAAK,EAAO,MAAQ,EAAO,KAAK,MAG/B,MAAO,GAAO,KAAK,MAAO,EAAI,GAG/B,IAAI,GACH,EAAQ,KACR,EAAM,GAAO,KAAM,EAAI,GAIxB,OAAO,KAAQ,GAAO,KAAM,EAAI,QAAS,GAAc,SAAU,EAAO,EAAO,EAAM,GAQpF,MALK,IAAmB,IACvB,EAAQ,GAIM,IAAV,EACG,GAIR,EAAkB,GAAQ,EAM1B,IAAU,GAAS,EAGb,OAEJ,SAAQ,UAAc,KACxB,GAAO,MAAK,iBAAqB,IAKnC,GAAO,SAAW,SAAU,GAC3B,GAAI,GAAK,CACT,KAAM,GAAmB,gBAAJ,GACpB,MAAO,KAER,KACM,EAAO,WACX,EAAM,GAAI,WACV,EAAM,EAAI,gBAAiB,EAAI,cAE/B,EAAM,GAAI,eAAa,oBACvB,EAAI,MAAK,QACT,EAAI,QAAS,IAEb,MAAO,GACR,EAAM,OAKP,MAHM,IAAQ,EAAI,kBAAmB,EAAI,qBAAoB,eAAkB,QAC9E,GAAO,MAAK,gBAAoB,GAE1B,EAIR,IAEC,IACA,GAEA,GAAK,OACL,GAAG,gBACH,GAAQ,gCAER,GAAc,4DACd,GAAU,iBACV,GAAS,QACT,GAAI,4DAWJ,MAOA,MAGA,GAAQ,KAAQ,OAAM,IAIvB,KACC,GAAe,SAAS,KACvB,MAAO,IAGR,GAAe,GAAS,cAAa,KACrC,GAAa,KAAI,GACjB,GAAe,GAAa,KAI7B,GAAe,GAAK,KAAM,GAAa,mBAoOvC,GAAO,QAGN,OAAQ,EAGR,gBACA,QAEA,cACC,IAAK,GACL,KAAI,MACJ,QAAS,GAAe,KAAM,GAAc,IAC5C,QAAQ,EACR,aAAa,EACb,OAAO,EACP,YAAW,mDAaX,SAAO,IACD,GACL,KAAI,aACJ,KAAI,YACJ,IAAG,4BACH,KAAI,qCAGL,UACC,IAAG,MACH,KAAI,OACJ,KAAI,QAGL,gBACC,IAAG,cACH,KAAI,eACJ,KAAI,gBAKL,YAE4B,SACjB,OAE+B,aAC5B,EAEwB,YACxB,GAAO,UAEA,WACR,GAAO,UAOpB,aACC,KAAK,EACL,SAAS,IAOX,UAAW,SAAU,EAAQ,GAC5B,MAAO,GAGN,EAAY,EAAY,EAAQ,GAAO,cAAgB,GAGvD,EAAY,GAAO,aAAc,IAGnC,cAAe,EAA6B,IAC5C,cAAe,EAA6B,IAG5C,KAAM,SAAU,EAAK,GAoRpB,QAAS,GAAM,EAAQ,EAAkB,EAAW,GACnD,GAAI,GAAW,EAAS,EAAO,EAAU,EACxC,EAAa,CAGC,KAAV,IAKL,EAAQ,EAGH,GACJ,aAAc,GAKf,EAAY,OAGZ,EAAwB,GAAO,GAG/B,EAAM,WAAa,EAAS,EAAI,EAAI,EAGpC,EAAY,GAAU,KAAgB,IAAT,GAA2B,MAAX,EAGxC,IACJ,EAAW,EAAqB,EAAG,EAAO,IAI3C,EAAW,EAAa,EAAG,EAAU,EAAO,GAGvC,GAGC,EAAE,aACN,EAAW,EAAM,kBAAiB,iBAC7B,IACJ,GAAO,aAAc,GAAa,GAEnC,EAAW,EAAM,kBAAiB,QAC7B,IACJ,GAAO,KAAM,GAAa,IAKZ,MAAX,GAAwB,SAAN,EAAE,KACxB,EAAU,YAGY,MAAX,EACX,EAAU,eAIV,EAAa,EAAS,MACtB,EAAU,EAAS,KACnB,EAAQ,EAAS,MACjB,GAAa,KAKd,EAAQ,GACH,IAAW,KACf,EAAU,QACI,EAAT,IACJ,EAAS,KAMZ,EAAM,OAAS,EACf,EAAM,YAAe,GAAoB,GAAU,GAG9C,EACJ,EAAS,YAAa,GAAmB,EAAS,EAAY,IAE9D,EAAS,WAAY,GAAmB,EAAO,EAAY,IAI5D,EAAM,WAAY,GAClB,EAAa,OAER,GACJ,EAAmB,QAAS,EAAS,cAAe,aACjD,EAAO,EAAG,EAAY,EAAU,IAIpC,EAAiB,SAAU,GAAmB,EAAO,IAEhD,IACJ,EAAmB,QAAO,gBAAoB,EAAO,MAE3C,GAAO,QAChB,GAAO,MAAM,QAAO,cA5XR,gBAAH,KACX,EAAU,EACV,EAAM,QAIP,EAAU,KAEV,IACC,GAEA,EAEA,EAEA,EAEA,EAGA,EAEA,EAEA,EAEA,EAAI,GAAO,aAAe,GAE1B,EAAkB,EAAE,SAAW,EAE/B,EAAqB,EAAE,UAAa,EAAgB,UAAY,EAAgB,QAC/E,GAAQ,GACR,GAAO,MAER,EAAW,GAAO,WAClB,EAAmB,GAAO,UAAS,eAEnC,EAAa,EAAE,eAEf,KACA,KAEA,EAAQ,EAER,EAAQ,WAER,GACC,WAAY,EAGZ,kBAAmB,SAAU,GAC5B,GAAI,EACJ,IAAe,IAAV,EAAW,CACf,IAAM,EAEL,IADA,KACS,EAAQ,GAAS,KAAM,IAC/B,EAAiB,EAAM,GAAG,eAAkB,EAAO,EAGrD,GAAQ,EAAiB,EAAI,eAE9B,MAAgB,OAAT,EAAgB,KAAO,GAI/B,sBAAuB,WACtB,MAAiB,KAAV,EAAc,EAAwB,MAI9C,iBAAkB,SAAU,EAAM,GACjC,GAAI,GAAQ,EAAK,aAKjB,OAJM,KACL,EAAO,EAAqB,GAAU,EAAqB,IAAW,EACtE,EAAgB,GAAS,GAEnB,MAIR,iBAAkB,SAAU,GAI3B,MAHM,KACL,EAAE,SAAW,GAEP,MAIR,WAAY,SAAU,GACrB,GAAI,EACJ,IAAK,EACJ,GAAa,EAAR,EACJ,IAAM,IAAQ,GAEb,EAAY,IAAW,EAAY,GAAQ,EAAK,QAIjD,GAAM,OAAQ,EAAK,EAAM,QAG3B,OAAO,OAIR,MAAO,SAAU,GAChB,GAAI,GAAY,GAAc,CAK9B,OAJK,IACJ,EAAU,MAAO,GAElB,EAAM,EAAG,GACF,MAwCV,IAnCA,EAAS,QAAS,GAAQ,SAAW,EAAiB,IACtD,EAAM,QAAU,EAAM,KACtB,EAAM,MAAQ,EAAM,KAMpB,EAAE,MAAU,GAAO,EAAE,KAAO,IAAY,IAAU,QAAS,GAAK,IAAO,QAAS,GAAW,GAAc,GAAC,MAG1G,EAAE,KAAO,EAAQ,QAAU,EAAQ,MAAQ,EAAE,QAAU,EAAE,KAGzD,EAAE,UAAY,GAAO,KAAM,EAAE,UAAQ,KAAU,cAAc,MAAO,MAAS,IAGvD,MAAjB,EAAE,cACN,EAAQ,GAAK,KAAM,EAAE,IAAI,eACzB,EAAE,eAAkB,GACjB,EAAO,KAAQ,GAAc,IAAO,EAAO,KAAQ,GAAc,KAChE,EAAO,KAAiB,UAAR,EAAO,GAAa,KAAQ,WAC3C,GAAc,KAAwB,UAAf,GAAc,GAAa,KAAQ,UAK3D,EAAE,MAAQ,EAAE,aAA4B,gBAAN,GAAE,OACxC,EAAE,KAAO,GAAO,MAAO,EAAE,KAAM,EAAE,cAIlC,EAA+B,GAAY,EAAG,EAAS,GAGxC,IAAV,EACJ,MAAO,EAKR,GAAc,GAAO,OAAS,EAAE,OAG3B,GAAmC,IAApB,GAAO,UAC1B,GAAO,MAAM,QAAO,aAIrB,EAAE,KAAO,EAAE,KAAK,cAGhB,EAAE,YAAc,GAAW,KAAM,EAAE,MAInC,EAAW,EAAE,IAGP,EAAE,aAGF,EAAE,OACN,EAAa,EAAE,MAAS,GAAO,KAAM,GAAQ,IAAA,KAAmB,EAAE,WAE3D,GAAE,MAIL,EAAE,SAAU,IAChB,EAAE,IAAM,GAAI,KAAM,GAGjB,EAAS,QAAS,GAAG,OAAW,MAGhC,GAAa,GAAO,KAAM,GAAQ,IAAA,KAAA,KAA0B,OAK1D,EAAE,aACD,GAAO,aAAc,IACzB,EAAM,iBAAgB,oBAAuB,GAAO,aAAc,IAE9D,GAAO,KAAM,IACjB,EAAM,iBAAgB,gBAAmB,GAAO,KAAM,MAKnD,EAAE,MAAQ,EAAE,YAAc,EAAE,eAAgB,GAAS,EAAQ,cACjE,EAAM,iBAAgB,eAAkB,EAAE,aAI3C,EAAM,iBAAgB,SAErB,EAAE,UAAW,IAAO,EAAE,QAAS,EAAE,UAAU,IAC1C,EAAE,QAAS,EAAE,UAAU,KAAuB,MAAd,EAAE,UAAW,GAAC,KAAoB,GAAQ,WAAY,IACtF,EAAE,QAAO,KAIX,KAAM,IAAK,GAAE,QACZ,EAAM,iBAAkB,EAAG,EAAE,QAAS,GAIvC,IAAK,EAAE,aAAgB,EAAE,WAAW,KAAM,EAAiB,EAAO,MAAQ,GAAmB,IAAV,GAElF,MAAO,GAAM,OAId,GAAQ,OAGR,KAAM,KAAO,QAAS,EAAG,MAAO,EAAG,SAAU,GAC5C,EAAO,GAAK,EAAG,GAOhB,IAHA,EAAY,EAA+B,GAAY,EAAG,EAAS,GAK7D,CACL,EAAM,WAAa,EAGd,GACJ,EAAmB,QAAO,YAAgB,EAAO,IAG7C,EAAE,OAAS,EAAE,QAAU,IAC3B,EAAe,WAAW,WACzB,EAAM,MAAK,YACT,EAAE,SAGN,KACC,EAAQ,EACR,EAAU,KAAM,EAAgB,GAC/B,MAAQ,GAET,KAAa,EAAR,GAIJ,KAAM,EAHN,GAAI,GAAM,QArBZ,GAAI,GAAI,eA8IT,OAAO,IAGR,QAAS,SAAU,EAAK,EAAM,GAC7B,MAAO,IAAO,IAAK,EAAK,EAAM,EAAQ,SAGvC,UAAW,SAAU,EAAK,GACzB,MAAO,IAAO,IAAK,EAAK,OAAW,EAAQ,aAI7C,GAAO,MAAI,MAAQ,QAAa,SAAU,EAAG,GAC5C,GAAQ,GAAW,SAAU,EAAK,EAAM,EAAU,GAQjD,MANK,IAAO,WAAY,KACvB,EAAO,GAAQ,EACf,EAAW,EACX,EAAO,QAGD,GAAO,MACb,IAAK,EACL,KAAM,EACN,SAAU,EACV,KAAM,EACN,QAAS,OAMZ,GAAO,SAAW,SAAU,GAC3B,MAAO,IAAO,MACb,IAAK,EACL,KAAI,MACJ,SAAQ,SACR,OAAO,EACP,QAAQ,EAAK,UACH,KAKZ,GAAO,GAAG,QACT,QAAS,SAAU,GAClB,GAAK,GAAO,WAAY,GACvB,MAAO,MAAK,KAAK,SAAS,GACzB,GAAO,MAAM,QAAS,EAAK,KAAK,KAAM,KAIxC,IAAK,KAAK,GAAC,CAEV,GAAI,GAAO,GAAQ,EAAM,KAAK,GAAG,eAAgB,GAAG,GAAG,OAAM,EAExD,MAAK,GAAG,YACZ,EAAK,aAAc,KAAK,IAGzB,EAAK,IAAI,WAGR,IAFA,GAAI,GAAO,KAEH,EAAK,YAA2C,IAA7B,EAAK,WAAW,UAC1C,EAAO,EAAK,UAGb,OAAO,KACL,OAAQ,MAGZ,MAAO,OAGR,UAAW,SAAU,GACpB,MACQ,MAAK,KADR,GAAO,WAAY,GACN,SAAS,GACzB,GAAO,MAAM,UAAW,EAAK,KAAK,KAAM,KAIzB,WAChB,GAAI,GAAO,GAAQ,MAClB,EAAW,EAAK,UAEZ;EAAS,OACb,EAAS,QAAS,GAGlB,EAAK,OAAQ,MAKhB,KAAM,SAAU,GACf,GAAI,GAAa,GAAO,WAAY,EAEpC,OAAO,MAAK,KAAK,SAAS,GACzB,GAAQ,MAAO,QAAS,EAAa,EAAK,KAAK,KAAM,GAAK,MAI5D,OAAQ,WACP,MAAO,MAAK,SAAS,KAAK,WACnB,GAAO,SAAU,KAAI,SAC1B,GAAQ,MAAO,YAAa,KAAK,cAEhC,SAKL,GAAO,KAAK,QAAQ,OAAS,SAAU,GAGtC,MAAO,GAAK,aAAe,GAAK,EAAK,cAAgB,IAClD,GAAQ,yBACwD,UAA/D,EAAK,OAAS,EAAK,MAAM,SAAY,GAAO,IAAK,EAAI,aAG1D,GAAO,KAAK,QAAQ,QAAU,SAAU,GACvC,OAAQ,GAAO,KAAK,QAAQ,OAAQ,GAMrC,IAAI,IAAG,OACN,GAAQ,QACR,GAAK,SACL,GAAe,wCACf,GAAY,oCAgCb,IAAO,MAAQ,SAAU,EAAG,GAC3B,GAAI,GACH,KACA,EAAM,SAAU,EAAK,GAEpB,EAAQ,GAAO,WAAY,GAAU,IAAqB,MAAT,EAAa,GAAQ,EACtE,EAAG,EAAE,QAAW,mBAAoB,GAAG,IAAW,mBAAoB,GASxE,IALqB,SAAhB,IACJ,EAAc,GAAO,cAAgB,GAAO,aAAa,aAIrD,GAAO,QAAS,IAAS,EAAE,SAAW,GAAO,cAAe,GAEhE,GAAO,KAAM,EAAG,WACf,EAAK,KAAK,KAAM,KAAK,aAMtB,KAAM,IAAU,GACf,EAAa,EAAQ,EAAG,GAAU,EAAa,EAKjD,OAAO,GAAE,KAAI,KAAQ,QAAS,GAAG,MAGlC,GAAO,GAAG,QACT,UAAW,WACV,MAAO,IAAO,MAAO,KAAK,mBAE3B,eAAgB,WACf,MAAO,MAAK,IAAI,WAEf,GAAI,GAAW,GAAO,KAAM,KAAI,WAChC,OAAO,GAAW,GAAO,UAAW,GAAa,OAEjD,OAAO,WACP,GAAI,GAAO,KAAK,IAEhB,OAAO,MAAK,OAAS,GAAQ,MAAO,GAAE,cACrC,GAAa,KAAM,KAAK,YAAe,GAAgB,KAAM,KAC3D,KAAK,UAAY,GAAe,KAAM,MAEzC,IAAI,SAAU,EAAG,GACjB,GAAI,GAAM,GAAQ,MAAO,KAEzB,OAAc,OAAP,EACN,KACA,GAAO,QAAS,GACf,GAAO,IAAK,EAAK,SAAU,GAC1B,OAAS,KAAM,EAAK,KAAM,MAAO,EAAI,QAAS,GAAK,YAElD,KAAM,EAAK,KAAM,MAAO,EAAI,QAAS,GAAK,WAC5C,SAOL,GAAO,aAAa,IAA+B,SAAzB,EAAO,cAEhC,WAGC,OAAQ,KAAK,SAO0C,wCACd,KAAM,KAAK,OAEnD,KAAuB,KAGzB,CAED,IAAI,IAAQ,EACX,MACA,GAAe,GAAO,aAAa,KAK/B,GAAO,aACX,EAAO,YAAW,WAAc,WAC/B,IAAM,GAAI,KAAO,IAChB,GAAc,GAAO,QAAW,KAMnC,GAAQ,OAAS,IAAY,mBAA2B,IACxD,GAAe,GAAQ,OAAS,GAG3B,IAEJ,GAAO,cAAc,SAAU,GAE9B,IAAM,EAAQ,aAAe,GAAQ,KAAI,CAExC,GAAI,EAEJ,QACC,KAAM,SAAU,EAAS,GACxB,GAAI,GACH,EAAM,EAAQ,MACd,IAAO,EAMR,IAHA,EAAI,KAAM,EAAQ,KAAM,EAAQ,IAAK,EAAQ,MAAO,EAAQ,SAAU,EAAQ,UAGzE,EAAQ,UACZ,IAAM,IAAK,GAAQ,UAClB,EAAK,GAAM,EAAQ,UAAW,EAK3B,GAAQ,UAAY,EAAI,kBAC5B,EAAI,iBAAkB,EAAQ,UAQzB,EAAQ,aAAgB,EAAO,sBACpC,EAAO,oBAAkB,iBAI1B,KAAM,IAAK,GAOY,SAAjB,EAAS,IACb,EAAI,iBAAkB,EAAG,EAAS,GAAC,GAOrC,GAAI,KAAQ,EAAQ,YAAc,EAAQ,MAAU,MAGpD,EAAW,SAAU,EAAG,GACvB,GAAI,GAAQ,EAAY,CAGxB,IAAK,IAAc,GAA8B,IAAnB,EAAI,YAOjC,SALO,IAAc,GACrB,EAAW,OACX,EAAI,mBAAqB,GAAO,KAG3B,EACoB,IAAnB,EAAI,YACR,EAAI,YAEA,CACL,KACA,EAAS,EAAI,OAKe,gBAAhB,GAAI,eACf,EAAU,KAAO,EAAI,aAKtB,KACC,EAAa,EAAI,WAChB,MAAO,GAER,EAAU,GAQL,IAAU,EAAQ,SAAY,EAAQ,YAGrB,OAAX,IACX,EAAS,KAHT,EAAS,EAAU,KAAO,IAAM,IAS9B,GACJ,EAAU,EAAQ,EAAY,EAAW,EAAI,0BAIzC,EAAQ,MAGiB,IAAnB,EAAI,WAGf,WAAY,GAGZ,EAAI,mBAAqB,GAAc,GAAO,EAP9C,KAWF,MAAO,WACD,GACJ,EAAU,QAAW,QAyB3B,GAAO,WACN,SACC,OAAM,6FAEP,UACC,OAAM,uBAEP,YAAU,cACM,SAAU,GAExB,MADA,IAAO,WAAY,GACZ,MAMV,GAAO,cAAa,SAAY,SAAU,GACxB,SAAZ,EAAE,QACN,EAAE,OAAQ,GAEN,EAAE,cACN,EAAE,KAAI,MACN,EAAE,QAAS,KAKb,GAAO,cAAa,SAAY,SAAS,GAGxC,GAAK,EAAE,YAAW,CAEjB,GAAI,GACH,EAAO,GAAS,MAAQ,GAAM,QAAS,IAAM,GAAS,eAEvD,QAEC,KAAM,SAAU,EAAG,GAElB,EAAS,GAAS,cAAa,UAE/B,EAAO,OAAQ,EAEV,EAAE,gBACN,EAAO,QAAU,EAAE,eAGpB,EAAO,IAAM,EAAE,IAGf,EAAO,OAAS,EAAO,mBAAqB,SAAU,EAAG,IAEnD,IAAY,EAAO,YAAU,kBAAsB,KAAM,EAAO,eAGpE,EAAO,OAAS,EAAO,mBAAqB,KAGvC,EAAO,YACX,EAAO,WAAW,YAAa,GAIhC,EAAS,KAGH,GACL,EAAU,IAAG,aAOhB,EAAK,aAAc,EAAQ,EAAK,aAGjC,MAAO,WACD,GACJ,EAAO,OAAQ,QAAW,OAU/B,IAAI,OACH,GAAM,mBAGP,IAAO,WACN,MAAK,WACL,cAAe,WACd,GAAI,GAAW,GAAa,OAAW,GAAO,QAAO,IAAW,IAEhE,OADA,MAAM,IAAa,EACZ,KAKT,GAAO,cAAa,aAAgB,SAAU,EAAG,EAAkB,GAElE,GAAI,GAAc,EAAa,EAC9B,EAAW,EAAE,SAAU,IAAW,GAAO,KAAM,EAAE,KAAG,MAEtC,gBAAN,GAAE,QAAwB,EAAE,aAAW,IAAS,QAAO,sCAAyC,GAAO,KAAM,EAAE,OAAI,OAI5H,OAAK,IAA0B,UAAd,EAAE,UAAW,IAG7B,EAAe,EAAE,cAAgB,GAAO,WAAY,EAAE,eACrD,EAAE,gBACF,EAAE,cAGE,EACJ,EAAG,GAAa,EAAG,GAAW,QAAS,GAAM,KAAS,GAC3C,EAAE,SAAU,IACvB,EAAE,MAAS,GAAO,KAAM,EAAE,KAAG,IAAA,KAAmB,EAAE,MAAK,IAAS,GAIjE,EAAE,WAAU,eAAkB,WAI7B,MAHM,IACL,GAAO,MAAO,EAAY,mBAEpB,EAAmB,IAI3B,EAAE,UAAW,GAAC,OAGd,EAAc,EAAQ,GACtB,EAAQ,GAAiB,WACxB,EAAoB,WAIrB,EAAM,OAAO,WAEZ,EAAQ,GAAiB,EAGpB,EAAG,KAEP,EAAE,cAAgB,EAAiB,cAGnC,GAAa,KAAM,IAIf,GAAqB,GAAO,WAAY,IAC5C,EAAa,EAAmB,IAGjC,EAAoB,EAAc,SAI7B,UAtDP,SAgED,GAAO,UAAY,SAAU,EAAM,EAAS,GAC3C,IAAM,GAAmB,gBAAJ,GACpB,MAAO,KAEW,kBAAP,KACX,EAAc,EACd,GAAU,GAEX,EAAU,GAAW,EAErB,IAAI,GAAS,GAAW,KAAM,GAC7B,GAAW,KAGZ,OAAK,IACK,EAAQ,cAAe,EAAO,MAGxC,EAAS,GAAO,eAAiB,GAAQ,EAAS,GAE7C,GAAW,EAAQ,QACvB,GAAQ,GAAU,SAGZ,GAAO,SAAW,EAAO,aAKjC,IAAI,IAAQ,GAAO,GAAG,IAKtB,IAAO,GAAG,KAAO,SAAU,EAAK,EAAQ,GACvC,GAAe,gBAAH,IAAoB,GAC/B,MAAO,IAAM,MAAO,KAAM,UAG3B,IAAI,GAAU,EAAU,EACvB,EAAO,KACP,EAAM,EAAI,QAAO,IA+ClB,OA7CK,IAAO,IACX,EAAW,GAAO,KAAM,EAAI,MAAO,EAAK,EAAI,SAC5C,EAAM,EAAI,MAAO,EAAG,IAIhB,GAAO,WAAY,IAGvB,EAAW,EACX,EAAS,QAGE,GAAuB,gBAAN,KAC5B,EAAI,QAIA,EAAK,OAAS,GAClB,GAAO,MACN,IAAK,EAGL,KAAM,EACN,SAAQ,OACR,KAAM,IACJ,KAAK,SAAU,GAGjB,EAAW,UAEX,EAAK,KAAM,EAIV,GAAM,SAAU,OAAQ,GAAO,UAAW,IAAiB,KAAM,GAGjE,KAEC,SAAU,GAAY,SAAU,EAAO,GACzC,EAAK,KAAM,EAAU,IAAc,EAAM,aAAc,EAAQ,MAI1D,MAOR,GAAO,MAAI,YAAc,WAAY,eAAgB,YAAa,cAAe,YAAiB,SAAU,EAAG,GAC9G,GAAO,GAAI,GAAS,SAAU,GAC7B,MAAO,MAAK,GAAI,EAAM,MAOxB,GAAO,KAAK,QAAQ,SAAW,SAAU,GACxC,MAAO,IAAO,KAAK,GAAO,OAAQ,SAAU,GAC3C,MAAO,KAAS,EAAG,OACjB,OAOJ,IAAI,IAAU,EAAO,SAAS,eAa9B,IAAO,QACN,UAAW,SAAU,EAAM,EAAS,GACnC,GAAI,GAAa,EAAS,EAAW,EAAQ,EAAW,EAAY,EACnE,EAAW,GAAO,IAAK,EAAI,YAC3B,EAAU,GAAQ,GAClB,IAGY,YAAR,IACJ,EAAK,MAAM,SAAQ,YAGpB,EAAY,EAAQ,SACpB,EAAY,GAAO,IAAK,EAAI,OAC5B,EAAa,GAAO,IAAK,EAAI,QAC7B,GAA8B,aAAR,GAAmC,UAAR,IAChD,GAAO,QAAO,QAAW,EAAW,IAAU,GAG1C,GACJ,EAAc,EAAQ,WACtB,EAAS,EAAY,IACrB,EAAU,EAAY,OAEtB,EAAS,WAAY,IAAe,EACpC,EAAU,WAAY,IAAgB,GAGlC,GAAO,WAAY,KACvB,EAAU,EAAQ,KAAM,EAAM,EAAG,IAGd,MAAf,EAAQ,MACZ,EAAM,IAAQ,EAAQ,IAAM,EAAU,IAAQ,GAE1B,MAAhB,EAAQ,OACZ,EAAM,KAAS,EAAQ,KAAO,EAAU,KAAS,GAGhD,SAAc,GACf,EAAQ,MAAM,KAAM,EAAM,GAE1B,EAAQ,IAAK,KAKhB,GAAO,GAAG,QACT,OAAQ,SAAU,GACjB,GAAK,UAAU,OACd,MAAmB,UAAZ,EACN,KACA,KAAK,KAAK,SAAU,GACnB,GAAO,OAAO,UAAW,KAAM,EAAS,IAI3C,IAAI,GAAS,EACZ,GAAQ,IAAK,EAAG,KAAM,GACtB,EAAO,KAAM,GACb,EAAM,GAAQ,EAAK,aAEpB,IAAM,EAON,MAHA,GAAU,EAAI,gBAGR,GAAO,SAAU,EAAS,UAMpB,GAAK,wBAA0B,KAC1C,EAAM,EAAK,yBAEZ,EAAM,EAAW,IAEhB,IAAK,EAAI,KAAS,EAAI,aAAe,EAAQ,YAAiB,EAAQ,WAAc,GACpF,KAAM,EAAI,MAAS,EAAI,aAAe,EAAQ,aAAiB,EAAQ,YAAc,KAX9E,GAeT,SAAU,WACT,GAAM,KAAM,GAAZ,CAIA,GAAI,GAAc,EACjB,GAAiB,IAAK,EAAG,KAAM,GAC/B,EAAO,KAAM,EAwBd,OArBgC,UAA3B,GAAO,IAAK,EAAI,YAEpB,EAAS,EAAK,yBAGd,EAAe,KAAK,eAGpB,EAAS,KAAK,SACR,GAAO,SAAU,EAAc,GAAC,UACrC,EAAe,EAAa,UAI7B,EAAa,KAAQ,GAAO,IAAK,EAAc,GAAC,kBAAsB,GACtE,EAAa,MAAQ,GAAO,IAAK,EAAc,GAAC,mBAAuB,KAOvE,IAAM,EAAO,IAAO,EAAa,IAAM,GAAO,IAAK,EAAI,aAAe,GACtE,KAAM,EAAO,KAAO,EAAa,KAAO,GAAO,IAAK,EAAI,cAAgB,MAI1E,aAAc,WACb,MAAO,MAAK,IAAI,WAGf,IAFA,GAAI,GAAe,KAAK,cAAgB,GAEhC,IAAmB,GAAO,SAAU,EAAY,SAAiD,WAAnC,GAAO,IAAK,EAAY,aAC7F,EAAe,EAAa,YAE7B,OAAO,IAAgB,QAM1B,GAAO,MAAQ,WAAU,cAAiB,UAAS,eAAmB,SAAU,EAAQ,GACvF,GAAI,GAAG,IAAO,KAAM,EAEpB,IAAO,GAAI,GAAW,SAAU,GAC/B,MAAO,IAAQ,KAAM,SAAU,EAAM,EAAQ,GAC5C,GAAI,GAAM,EAAW,EAErB,OAAa,UAAR,EACG,EAAO,IAAQ,GAAO,EAAK,GACjC,EAAI,SAAS,gBAAiB,GAC9B,EAAM,QAGH,EACJ,EAAI,SACF,EAAY,GAAQ,GAAM,aAApB,EACP,EAAM,EAAM,GAAQ,GAAM,aAI3B,EAAM,GAAW,IAEhB,EAAQ,EAAK,UAAU,OAAQ,SAQpC,GAAO,MAAI,MAAQ,QAAa,SAAU,EAAG,GAC5C,GAAO,SAAU,GAAS,EAAc,GAAQ,cAC/C,SAAU,EAAM,GACf,MAAK,IACJ,EAAW,GAAQ,EAAM,GAElB,GAAU,KAAM,GACtB,GAAQ,GAAO,WAAY,GAAI,KAC/B,GALF,WAaH,GAAO,MAAQ,OAAM,SAAY,MAAK,SAAa,SAAU,EAAM,GAClE,GAAO,MAAQ,QAAO,QAAY,EAAM,QAAS,EAAI,GAAA,QAAgB,GAAQ,SAAU,EAAc,GAEpG,GAAO,GAAI,GAAa,SAAU,EAAQ,GACzC,GAAI,GAAY,UAAU,SAAY,GAA6B,iBAAN,IAC5D,EAAQ,IAAkB,KAAW,GAAQ,KAAU,EAAI,SAAU,SAEtE,OAAO,IAAQ,KAAM,SAAU,EAAM,EAAM,GAC1C,GAAI,EAEJ,OAAK,IAAO,SAAU,GAId,EAAK,SAAS,gBAAe,SAAa,GAI3B,IAAlB,EAAK,UACT,EAAM,EAAK,gBAIJ,KAAK,IACX,EAAK,KAAI,SAAa,GAAQ,EAAG,SAAa,GAC9C,EAAK,KAAI,SAAa,GAAQ,EAAG,SAAa,GAC9C,EAAG,SAAa,KAID,SAAV,EAEN,GAAO,IAAK,EAAM,EAAM,GAGxB,GAAO,MAAO,EAAM,EAAM,EAAO,IAChC,EAAM,EAAY,EAAS,OAAW,EAAW,WAOvD,GAAO,GAAG,KAAO,WAChB,MAAO,MAAK,QAGb,GAAO,GAAG,QAAU,GAAO,GAAG,QAkBZ,kBAAN,SAAyB,OAAO,KAC3C,OAAM,YAAgB,WACrB,MAAO,KAOT,IAEC,IAAU,EAAO,OAGjB,GAAK,EAAM,CAwBZ,OAtBA,IAAO,WAAa,SAAU,GAS7B,MARK,GAAM,IAAO,KACjB,EAAM,EAAK,IAGP,GAAQ,EAAO,SAAW,KAC9B,EAAO,OAAS,IAGV,UAMI,KAAa,KACxB,EAAO,OAAS,EAAM,EAAK,IAMrB,KVvmUP,QAAQ,IAAG,sBAkEX,KAAK,SAAW,SAAU,EAAO,EAAa,EAAa,GAEvD,KAAK,MAAQ,EACb,KAAK,YAAc,EACnB,KAAK,YAAc,EACnB,KAAK,MAAQ,GCvEjB,QAAQ,IAAG,mBAKX,IAAI,YAAa,EAwBb,SAEA,GAAI,OAAO,EAAG,GAAI,IAClB,GAAI,OAAO,IAAK,GAAI,IACpB,GAAI,OAAO,IAAK,GAAI,IAIpB,GAAI,OAAO,GAAI,GAAI,IACnB,GAAI,OAAO,IAAK,GAAI,IACpB,GAAI,OAAO,IAAK,GAAI,IACpB,GAAI,OAAO,GAAI,GAAI,IACnB,GAAI,OAAO,IAAK,GAAI,IACpB,GAAI,OAAO,GAAI,GAAI,IACnB,GAAI,OAAO,IAAK,GAAI,IAEpB,GAAI,OAAO,IAAK,GAAI,IACpB,GAAI,OAAO,IAAK,GAAI,IAEpB,GAAI,OAAO,IAAK,GAAI,IACpB,GAAI,OAAO,GAAI,GAAI,IACnB,GAAI,OAAO,GAAI,GAAI,IAEnB,GAAI,OAAO,GAAI,GAAI,IACnB,GAAI,OAAO,IAAK,GAAI,IACpB,GAAI,OAAO,IAAK,GAAI,ICtDxB,SAAQ,IAAG,mBCAX,QAAQ,IAAG,qBCAX,QAAQ,IAAG,oBCAX,QAAQ,IAAG,kBCAX,QAAQ,IAAG,iBKAX,QAAQ,IAAG,oBAAkB,EAAA,oBAMD,MAAO,WAE9B,QAAQ,IAAG,kBJRhB,QAAQ,IAAG,oBCAX,QAAQ,IAAG,mBCAX,QAAQ,IAAG,iBAEX,IAAI,cAAe,WAAY,GAAM,GACjC,WAAa,WAAY,GAAM,EAE/B,aAAe,WAAY,GAAM,GACjC,WAAa,WAAY,GAAM,GAE/B,WAAa,WAAY,GAAM,GAC/B,SAAW,WAAY,IAAO,EAwC9B,KAAO,GAAI,KAAI,GAEhB,WAEC,WAAY,WAER,KAAK,QACN,MAwDP,IAAI,UAAsB,mBAAJ,MAAuB,KAAK,UAAY,SAAU,GACtE,GAAI,KAMJ,OANO,GACL,KAAM,EAAK,SAAU,EAAK,GAC1B,GAAI,GAAO,EAAG,IACd,IAAI,EAAM,cAAe,GAAQ,SAAU,GAAQ,EACnD,EAAI,KAAM,KAEN,KAAS,EAAI,KAAI,MAAA","sourcesContent":["console.log( \"Schedule.js loaded\" );\r\n\r\n\r\nfunction Schedule()\r\n{\r\n // public \r\n this.courses_ = [];\r\n this.divStyle = new DivStyle();\r\n\r\n var self = this;\r\n\r\n\r\n // private\r\n\r\n\r\n\r\n // public //\r\n this.AddCourse = function( courseText_, courseTitle, activeClassNum )\r\n {\r\n var courseObj = new Course( courseTitle );\r\n this.courses_.push( courseObj );\r\n courseObj.Init( self, courseText_, activeClassNum );\r\n\r\n console.log( courseObj.classes_ );\r\n };\r\n\r\n this.DrawSchedule = function( refresh, divStyle )\r\n {\r\n var coursesLen = self.courses_.length;\r\n\r\n for ( var i = 0; i < coursesLen; i++ )\r\n {\r\n self.DrawCourse( refresh, divStyle, i );\r\n }\r\n };\r\n\r\n this.HideSchedule = function()\r\n {\r\n var coursesLen = self.courses_.length;\r\n\r\n for ( var i = 0; i < coursesLen; i++ )\r\n {\r\n self.HideCourse( i );\r\n }\r\n };\r\n\r\n // public //\r\n this.DrawCourse = function( refresh, divStyle, i )\r\n {\r\n self.courses_[ i ].DrawCourse( refresh, divStyle );\r\n };\r\n\r\n this.HideCourse = function( i )\r\n {\r\n self.courses_[ i ].HideCourse();\r\n };\r\n}\r\n\r\n\r\nfunction Style( hue, sat, lit )\r\n{\r\n this.hue = hue;\r\n this.sat = sat;\r\n this.lit = lit;\r\n}\r\n\r\nthis.DivStyle = function( style, borderColor, borderWidth, alpha )\r\n{\r\n this.style = style;\r\n this.borderColor = borderColor;\r\n this.borderWidth = borderWidth;\r\n this.alpha = alpha;\r\n};\r\n\r\n\r\n\r\n","console.log( \"Course.js loaded\" );\r\n\r\n\r\n\r\n\r\nvar styleIndex = 0;\r\n// var Styles_ = [\r\n// new Style( 2, 79, 57 ),\r\n// new Style( 108, 61, 54 ),\r\n// new Style( 197, 56, 56 ),\r\n// new Style( 295, 67, 63 ),\r\n// new Style( 40, 64, 58 ),\r\n// new Style( 150, 50, 52 ),\r\n// new Style( 271, 52, 70 ),\r\n// new Style( 18, 76, 56 ),\r\n// new Style( 221, 63, 65 ),\r\n// new Style( 75, 53, 47 ),\r\n// new Style( 176, 61, 47 ),\r\n// new Style( 47, 80, 53 ),\r\n// new Style( 352, 80, 64 ),\r\n// new Style( 113, 40, 45 ),\r\n// new Style( 188, 70, 54 ),\r\n// new Style( 96, 80, 47 ),\r\n// new Style( 330, 71, 65 ),\r\n// new Style( 31, 70, 52 ),\r\n// new Style( 216, 51, 65 ),\r\n// new Style( 250, 79, 71 )\r\n// ];\r\n\r\nvar Styles_ = [\r\n\r\n new Style( 2, 75, 57 ), //red\r\n new Style( 102, 66, 54 ), // green\r\n new Style( 198, 65, 56 ), // blue\r\n // new Style( 5, 82, 64 ),\r\n // new Style( 114, 85, 59 ),\r\n // new Style( 226, 91, 70 ),\r\n new Style( 44, 78, 54 ), //gold\r\n new Style( 286, 73, 62 ), // magenta\r\n new Style( 150, 61, 52 ), //green blue\r\n new Style( 26, 80, 52 ), // orange\r\n new Style( 258, 70, 68 ), // purp\r\n new Style( 60, 74, 52 ), // yellow\r\n new Style( 309, 77, 67 ), // pink\r\n\r\n new Style( 184, 70, 57 ), // sky blue\r\n new Style( 121, 47, 47 ), // darker green\r\n\r\n new Style( 352, 80, 66 ), // light red\r\n new Style( 47, 80, 53 ), // goldenrod\r\n new Style( 96, 80, 58 ), // light green\r\n //new Style( 330, 71, 65 ),\r\n new Style( 33, 70, 58 ), // light orange\r\n new Style( 216, 51, 65 ), // light blue purple\r\n new Style( 240, 79, 70 )\r\n\r\n];\r\n\r\nfunction NextStyle()\r\n{\r\n if ( styleIndex === 18 )\r\n {\r\n styleIndex = 0;\r\n }\r\n return Styles_[ styleIndex++ ];\r\n}\r\n\r\n\r\n\r\nfunction Course( courseTitle )\r\n{\r\n this.courseTitle = courseTitle;\r\n this.courseSubtitle = \"test test\";\r\n this.classes_ = [];\r\n this.$div = null;\r\n this.visible = true;\r\n this.expanded = true;\r\n this.unlocked = true;\r\n this.classDeletedNum = 0;\r\n this.style = new Style();\r\n this.divStyle = new DivStyle( new Style() );\r\n this.parent = null;\r\n this.STYLE = null;\r\n\r\n\r\n\r\n\r\n var self = this;\r\n\r\n var _ = {\r\n exp: $( \"#add-box\" ),\r\n vis: $( \"#add-button\" ),\r\n lck: $( \".add-bar\" ),\r\n rmv: $( \"#add-results\" ),\r\n addResultsList: $( \"#add-results-list\" ),\r\n collapseButton: $( \".add-collapse\" ),\r\n closeButton: $( \".add-close\" ),\r\n header: $( \".course-header\" ),\r\n };\r\n\r\n\r\n\r\n // public //\r\n this.Init = function( parent, courseText_, activeClassNum )\r\n {\r\n this.parent = parent;\r\n self.style = NextStyle();\r\n this.STYLE = $.extend(\r\n {}, this.style );\r\n self.$div = self.AddCourseElement( self );\r\n self.classes_ = self.AddClasses( courseText_, activeClassNum, self );\r\n self.RefreshStyle();\r\n this.BindEvents();\r\n };\r\n\r\n\r\n\r\n this.BindEvents = function()\r\n {\r\n self.$div.find( \".course-collapse\" ).click( function()\r\n {\r\n self.ToggleExpanded();\r\n self.RefreshStyle();\r\n console.info( self.courseTitle + \" expanded: \" + self.expanded );\r\n } );\r\n\r\n self.$div.find( \".course-title\" ).dblclick( function()\r\n {\r\n self.ToggleExpanded();\r\n self.RefreshStyle();\r\n console.info( self.courseTitle + \" expanded: \" + self.expanded );\r\n } );\r\n\r\n self.$div.find( \".course-visible\" ).click( function()\r\n {\r\n self.ToggleVisible( this );\r\n self.RefreshStyle();\r\n console.info( self.courseTitle + \" visible: \" + self.visible );\r\n } );\r\n\r\n self.$div.find( \".course-lock\" ).click( function()\r\n {\r\n self.ToggleLock( this );\r\n self.RefreshStyle();\r\n console.info( self.courseTitle + \" lock\" );\r\n } );\r\n\r\n self.$div.find( \".course-remove\" ).click( function()\r\n {\r\n console.info( self.courseTitle + \" remove\" );\r\n } );\r\n };\r\n\r\n\r\n\r\n this.ToggleExpanded = function( active )\r\n {\r\n var $par = self.$div;\r\n\r\n if ( active === undefined )\r\n {\r\n self.expanded = !self.expanded;\r\n self.ToggleExpanded( self.expanded );\r\n }\r\n else if ( active )\r\n {\r\n self.expanded = true;\r\n $par.find('.course-collapse').removeClass( \"active\" );\r\n $par.find( \".class-button\" ).removeClass( \"class-mini\" );\r\n $par.find( \".class-button\" ).removeClass( \"class-solo\" );\r\n\r\n\r\n }\r\n else\r\n {\r\n self.expanded = false;\r\n $par.find('.course-collapse').addClass( \"active\" );\r\n $par.find( \".class-button:not(.active)\" ).addClass( \"class-mini\" );\r\n $par.find( \".class-button.active\" ).addClass( \"class-solo\" );\r\n self.RefreshStyle();\r\n }\r\n };\r\n\r\n\r\n\r\n this.ToggleVisible = function( div, active )\r\n {\r\n if ( active === undefined )\r\n {\r\n self.visible = !self.visible;\r\n self.ToggleVisible( div, self.visible );\r\n }\r\n else if ( active )\r\n {\r\n self.visible = true;\r\n $( div ).removeClass( \"active\" );\r\n }\r\n else\r\n {\r\n self.visible = false;\r\n $( div ).addClass( \"active\" );\r\n }\r\n };\r\n\r\n\r\n this.ToggleLock = function( div, active )\r\n {\r\n if ( active === undefined )\r\n {\r\n self.unlocked = !self.unlocked;\r\n self.ToggleLock( div, self.unlocked );\r\n }\r\n else if ( active )\r\n {\r\n self.unlocked = true;\r\n $( div ).removeClass( \"active\" );\r\n }\r\n else\r\n {\r\n self.unlocked = false;\r\n $( div ).addClass( \"active\" );\r\n }\r\n };\r\n\r\n\r\n\r\n this.RefreshStyle = function()\r\n {\r\n if ( self.visible )\r\n {\r\n self.style.sat = self.STYLE.sat;\r\n self.style.lit = self.STYLE.lit;\r\n }\r\n else\r\n {\r\n self.style.sat = -100;\r\n self.style.lit = 50;\r\n }\r\n\r\n if ( self.unlocked )\r\n {\r\n self.$div.css( 'background', 'hsl(' + this.style.hue + ', ' + ( this.style.sat - 9 ) + '%, ' + ( this.style.lit + 28 ) + '%)' );\r\n }\r\n else\r\n {\r\n self.$div.css( 'background', 'hsl(' + this.style.hue + ', ' + ( this.style.sat + 35 ) + '%, ' + ( this.style.lit + 17 ) + '%)' );\r\n }\r\n\r\n\r\n\r\n var classesLen = self.classes_.length;\r\n for ( var i = 0; i < classesLen; i++ )\r\n {\r\n self.classes_[ i ].RefreshStyle();\r\n }\r\n };\r\n\r\n this.AddCourseElement = function( courseObj )\r\n {\r\n var $courseDiv = $( \"<div/>\",\r\n {\r\n class: 'course-wrap hide',\r\n\r\n } ).appendTo( \"#course-panel\" ); // create a course div\r\n\r\n $courseDiv.data( \"course\", courseObj );\r\n\r\n $courseDiv.append( '<div class=\"course-header\">' +\r\n '<div class=\"course-title\">' + courseObj.courseTitle + '</div>' +\r\n '<div class=\"course-button-wrap\">' +\r\n '<div class=\"course-button course-remove icon\">x</div>' +\r\n '<div class=\"course-button course-lock icon\">l</div>' +\r\n '<div class=\"course-button course-visible icon\">v</div>' +\r\n '<div class=\"course-button course-collapse icon\">u</div>' +\r\n '</div>' +\r\n '</div>' +\r\n '<div class=\"class-wrap\"></div>'\r\n );\r\n\r\n setTimeout( function()\r\n {\r\n $courseDiv.removeClass( 'hide' );\r\n }, 20 );\r\n\r\n\r\n return $courseDiv;\r\n };\r\n\r\n // public //\r\n this.AddClasses = function( courseText_, activeClassNum, courseObj )\r\n {\r\n var courseTextLen = courseText_.length;\r\n var classes_ = [];\r\n\r\n for ( var i = 0; i < courseTextLen; i++ )\r\n {\r\n var firstChar = courseText_[ i ].charAt( 1 );\r\n\r\n console.log( firstChar );\r\n\r\n if ( firstChar >= '0' && firstChar <= '9' )\r\n {\r\n classes_.push( self.AddClass( courseText_[ i ], ( i === activeClassNum ), courseObj ) );\r\n }\r\n else\r\n {\r\n classes_[ classes_.length - 1 ].note = courseText_[ i ].match( /<(.*)>/ )[ 1 ];\r\n }\r\n }\r\n\r\n return classes_;\r\n };\r\n\r\n this.ParseClassData = function( data, sessionNum )\r\n {\r\n parsed = [];\r\n\r\n for ( var j = 0; j < sessionNum; j++ ) // for number of sessions parse times as strings\r\n {\r\n var temp = data.match( /.*?(>|┃|―)/ )[ 0 ]; // pull a session of data\r\n\r\n data = data.replace( /.*?(>|┃|―)/, \"\" ); // remove day from string\r\n\r\n parsed.push( temp.substring( 0, temp.length - 1 ) );\r\n\r\n if ( data.length <= 1 ) // if missed tab\r\n {\r\n break;\r\n }\r\n }\r\n\r\n return parsed;\r\n };\r\n\r\n // public //\r\n this.AddClass = function( courseText, isActive, courseObj )\r\n {\r\n var classObj = new Class();\r\n var i;\r\n var stringTempArr = [];\r\n\r\n // try\r\n // {\r\n\r\n // sect number //////////////////////////////////////////////////////////////////////////////\r\n\r\n classObj.sect = courseText.match( /\\d{4}/ )[ 0 ]; // pull sect number\r\n\r\n courseText = courseText.replace( /.*?(>|―)/, \"\" ); // remove sect number\r\n\r\n\r\n\r\n\r\n var stringTemp = courseText.match( /.*?(>|―)/ )[ 0 ]; // pull until first tab\r\n\r\n //courseText = courseText.replace( /.*?(>|―)/ , \"\" ); // remove up to first tab\r\n\r\n stringTemp = stringTemp.replace( /Th/g, \"R\" ); // replace Th with R\r\n\r\n stringTemp = stringTemp.replace( /Sat/g, \"S\" ); // replace Sat with S\r\n\r\n stringTemp = stringTemp.replace( /Sun/g, \"N\" ); // replace Sat with S\r\n\r\n stringTemp = stringTemp.replace( /TBA/g, \"X\" ); // replace TBA with X\r\n\r\n stringTempArr.splice( 0, stringTempArr.length ); // clear array\r\n\r\n stringTempArr = self.ParseClassData( stringTemp, 20 );\r\n\r\n //console.log( stringTempArr );\r\n\r\n var sessionLength = stringTempArr.length; // number of class sessions\r\n\r\n //console.log( stringTempArr.length );\r\n\r\n\r\n // Days of the week //////////////////////////////////////////////////////////////////////////\r\n\r\n loop1: for ( i = 0; i < sessionLength; i++ ) // for number of class sessions create session object\r\n {\r\n var sessionObj = new Session( self.divStyle ); // create new session object\r\n classObj.sessions_.push( sessionObj ); // push session object into class.sessions array\r\n\r\n\r\n var charTemp = \"\"; // temp chracter for parsing days of the week\r\n\r\n while ( true ) // parses the days of the week\r\n {\r\n charTemp = stringTempArr[ i ].charAt( 0 ); // get first character of stringTemp\r\n\r\n switch ( charTemp.toUpperCase() )\r\n // assign values to days array, 1 = true\r\n {\r\n case \"M\":\r\n sessionObj.days_[ 0 ] = 1;\r\n break;\r\n\r\n case \"T\":\r\n sessionObj.days_[ 1 ] = 1;\r\n break;\r\n\r\n case \"W\":\r\n sessionObj.days_[ 2 ] = 1;\r\n break;\r\n\r\n case \"R\":\r\n sessionObj.days_[ 3 ] = 1;\r\n break;\r\n\r\n case \"F\":\r\n sessionObj.days_[ 4 ] = 1;\r\n break;\r\n\r\n case \"S\":\r\n sessionObj.days_[ 5 ] = 1;\r\n //isSaturday = true;\r\n break;\r\n\r\n case \"N\":\r\n sessionObj.days_[ 6 ] = 1;\r\n //isSunday = true;\r\n break;\r\n }\r\n\r\n if ( stringTempArr[ i ].length == 1 ) // break both loops\r\n {\r\n break;\r\n }\r\n\r\n stringTempArr[ i ] = stringTempArr[ i ].substring( 1, stringTempArr[ i ].length ); // remove first character from stringTemp\r\n\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n stringTemp = courseText.match( /.*?(>|―)/ )[ 0 ]; // pull until first tab\r\n\r\n courseText = courseText.replace( /.*?(>|―)/, \"\" ); // remove days\r\n\r\n stringTempArr.splice( 0, stringTempArr.length ); // clear array\r\n\r\n stringTempArr = self.ParseClassData( stringTemp, sessionLength ); // repopulate the array with class data seperated at &\r\n\r\n //console.log( stringTempArr );\r\n\r\n\r\n\r\n\r\n // days as string /////////////////////////////////////////////////////////////////\r\n\r\n for ( i = 0; i < sessionLength; i++ ) // for number of sessions parse instructor name\r\n {\r\n classObj.sessions_[ i ].daysS = stringTempArr[ i ];\r\n }\r\n\r\n\r\n\r\n\r\n stringTemp = courseText.match( /.*?(>|―)/ )[ 0 ]; // pull until next tab\r\n\r\n courseText = courseText.replace( /.*?(>|―)/, \"\" ); // remove up to first tab\r\n\r\n stringTempArr.splice( 0, stringTempArr.length ); // clear array\r\n\r\n stringTempArr = self.ParseClassData( stringTemp, sessionLength ); // repopulate the array with class data seperated at &\r\n\r\n //console.log( stringTempArr );\r\n\r\n\r\n\r\n // Times /////////////////////////////////////////////////////////////////////////\r\n\r\n for ( i = 0; i < sessionLength; i++ ) // for number of sessions parse class times\r\n {\r\n try\r\n {\r\n var hour, min, ampm;\r\n\r\n stringTemp = stringTempArr[ i ];\r\n classObj.sessions_[ i ].timeS = stringTemp;\r\n\r\n hour = Number( stringTemp.match( /\\d\\d?/ )[ 0 ] ); // parses start hour\r\n\r\n stringTemp = stringTemp.replace( /.*?:/, \"\" ); // removes start hour\r\n\r\n min = Number( stringTemp.match( /\\d\\d/ )[ 0 ] ); // parses start minutes\r\n\r\n stringTemp = stringTemp.replace( /.*?\\s/, \"\" ); // removes start minutes\r\n\r\n ampm = stringTemp.match( /\\s*?[amp]{2}/ )[ 0 ]; // parses start am or pm\r\n\r\n stringTemp = stringTemp.replace( /\\s\\-\\s/, \"\" ); // removes start am or pm\r\n\r\n if ( ampm.toLowerCase() == \"pm\" ) // if pm\r\n {\r\n if ( hour != 12 )\r\n {\r\n hour += 12; // add 12 hours\r\n }\r\n }\r\n else\r\n {\r\n if ( hour == 12 )\r\n {\r\n hour = 0;\r\n }\r\n }\r\n\r\n classObj.sessions_[ i ].timeStart = hour * 60 + min - 360; // assign start time in minutes relative to 7AM\r\n\r\n\r\n // same but with end times ///////////////////////////////////\r\n\r\n hour = Number( stringTemp.match( /\\d\\d?/ )[ 0 ] );\r\n\r\n stringTemp = stringTemp.replace( /.*?:/, \"\" );\r\n\r\n min = Number( stringTemp.match( /\\d\\d/ )[ 0 ] );\r\n\r\n stringTemp = stringTemp.replace( /.*?\\s/, \"\" );\r\n\r\n ampm = stringTemp.match( /\\s*?[amp]{2}/ )[ 0 ];\r\n\r\n if ( ampm.toLowerCase() == \"pm\" )\r\n {\r\n if ( hour != 12 )\r\n {\r\n hour += 12;\r\n }\r\n }\r\n else\r\n {\r\n if ( hour == 12 )\r\n {\r\n hour = 0;\r\n }\r\n }\r\n\r\n classObj.sessions_[ i ].timeEnd = hour * 60 + min - 360; // assign end time in minutes relative to 7AM\r\n\r\n }\r\n catch ( err )\r\n {\r\n console.log( \"error adding times\" + i );\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n stringTemp = courseText.match( /.*?(>|―)/ )[ 0 ]; // pull until first tab\r\n\r\n courseText = courseText.replace( /.*?(>|―)/, \"\" ); // remove instructor\r\n\r\n stringTempArr.splice( 0, stringTempArr.length ); // clear array\r\n\r\n stringTempArr = self.ParseClassData( stringTemp, sessionLength ); // repopulate the array with class data seperated at &\r\n\r\n //console.log( stringTempArr );\r\n\r\n\r\n\r\n // instructor /////////////////////////////////////////////////////////////////\r\n\r\n for ( i = 0; i < sessionLength; i++ ) // for number of sessions_ parse instructor name\r\n {\r\n classObj.sessions_[ i ].instructor = stringTempArr[ i ]; // assign instructor to class\r\n }\r\n\r\n\r\n\r\n\r\n // try\r\n // {\r\n stringTemp = courseText.match( /.*?(>|―)/ )[ 0 ]; // pull until first tab\r\n\r\n courseText = courseText.replace( /.*?(>|―)/, \"\" ); // remove room number\r\n\r\n stringTempArr.splice( 0, stringTempArr.length ); // clear array\r\n\r\n stringTempArr = self.ParseClassData( stringTemp, sessionLength ); // repopulate the array with class data seperated at &\r\n\r\n //console.log( stringTempArr );\r\n\r\n\r\n\r\n\r\n // room number /////////////////////////////////////////////////////////\r\n\r\n for ( i = 0; i < sessionLength; i++ )\r\n {\r\n classObj.sessions_[ i ].location = stringTempArr[ i ]; // assing room number to classObj\r\n }\r\n // }\r\n // catch ( err ) // if room number missing\r\n // {\r\n // console.warn( \"Class locations missing\" );\r\n // }\r\n\r\n\r\n\r\n // try\r\n // {\r\n stringTemp = courseText.match( /.*?(>|―)/ )[ 0 ]; // pull until first tab\r\n\r\n courseText = courseText.replace( /.*?(>|―)/, \"\" ); // remove units\r\n\r\n\r\n\r\n\r\n // units ////////////////////////////////////////////////////////////////////////\r\n\r\n classObj.units = stringTemp.substring( 0, stringTemp.length - 1 ); // parses units and assing to class \r\n // }\r\n // catch ( err ) // if units missing\r\n // {\r\n // console.warn( \"Class units missing\" );\r\n // }\r\n\r\n\r\n\r\n\r\n // try\r\n // {\r\n stringTemp = courseText.match( /.*?(>|―)/ )[ 0 ]; // pull until first tab\r\n\r\n courseText = courseText.replace( /.*?(>|―)/, \"\" ); // remove status\r\n\r\n\r\n\r\n // status ///////////////////////////////////////////////////////////////////////////\r\n\r\n classObj.status = stringTemp.substring( 0, stringTemp.length - 1 ); // parses status and assigns to class \r\n // }\r\n // catch ( err ) // if status missing\r\n // {\r\n // console.warn( \"Class status missing\" );\r\n // }\r\n\r\n\r\n\r\n\r\n // try\r\n // {\r\n stringTemp = courseText.match( /.*?(>|―)/ )[ 0 ]; // pull until first tab\r\n\r\n courseText = courseText.replace( /.*?(>|―)/, \"\" ); // remove seats\r\n\r\n\r\n\r\n // seats /////////////////////////////////////////////////////////////////////////////////\r\n\r\n classObj.seats = stringTemp.substring( 0, stringTemp.length - 1 ); // parses seats and assing to class\r\n // }\r\n // catch ( err ) // if seats missing\r\n // {\r\n // console.warn( \"Available number of seats missing\" );\r\n // }\r\n\r\n\r\n\r\n\r\n stringTemp = courseText.match( /.*?(>|―)/ )[ 0 ]; // pull until first tab\r\n\r\n courseText = courseText.replace( /.*?(>|―)/, \"\" ); // remove dates\r\n\r\n stringTempArr.splice( 0, stringTempArr.length ); // clear array\r\n\r\n stringTempArr = self.ParseClassData( stringTemp, sessionLength ); // repopulate the array with class data seperated at &\r\n\r\n //console.log( stringTempArr );\r\n\r\n\r\n\r\n for ( i = 0; i < sessionLength; i++ ) // for number of session parse dates as days from jan 1\r\n {\r\n var month, day;\r\n\r\n classObj.sessions_[ i ].dateS = stringTempArr[ i ]; // assing date to class\r\n\r\n stringTemp = stringTempArr[ i ];\r\n\r\n month = MonthToDay( Number( stringTemp.match( /\\d\\d?/ )[ 0 ] ) ); // parses the start month and converts it to days from jan 1st\r\n\r\n stringTemp = stringTemp.replace( /\\d\\d?\\//, \"\" ); // removes start month\r\n\r\n day = Number( stringTemp.match( /\\d\\d?/ )[ 0 ] ); // parses start day\r\n\r\n stringTemp = stringTemp.replace( /\\d\\d?\\-/, \"\" ); // removes start day\r\n\r\n classObj.sessions_[ i ].dateStart = month + day; // assign start date as number of days from jan 1st\r\n\r\n\r\n // same but for end date\r\n\r\n month = MonthToDay( Number( stringTemp.match( /\\d\\d?/ )[ 0 ] ) );\r\n\r\n stringTemp = stringTemp.replace( /\\d\\d?\\//, \"\" );\r\n\r\n day = Number( stringTemp.match( /\\d\\d?/ )[ 0 ] );\r\n\r\n classObj.sessions_[ i ].dateEnd = month + day;\r\n }\r\n\r\n\r\n\r\n\r\n try\r\n {\r\n stringTemp = courseText.match( /.*?(>|―)/ )[ 0 ]; // pull until first tab\r\n\r\n courseText = courseText.replace( /.*?(>|―)/, \"\" ); // remove final exam\r\n\r\n\r\n // final exam //////////////////////////////////////////////////////////////////////////////\r\n\r\n classObj.finalExam = stringTemp.match( /\\d\\d?\\/\\d\\d?\\/\\d{4}/ )[ 0 ]; // parse final exam and assing to class\r\n }\r\n catch ( err ) // if final exam missing\r\n {\r\n console.warn( \"error adding final exam date\" );\r\n }\r\n\r\n\r\n\r\n // try\r\n // {\r\n // if ( courseText.length > 0 ) // if class data remaing\r\n // {\r\n // stringTemp = courseText.match( /.*?(>)/ )[ 0 ]; // pull until first tab\r\n\r\n // classObj.note = stringTemp.substring( 0, stringTemp.length - 1 ).trim(); // parse note and assing to class\r\n // }\r\n // }\r\n // catch ( err ) // if error adding note\r\n // {\r\n // console.warn( \"error adding class notes\" );\r\n // } \r\n\r\n classObj.Init( courseObj );\r\n\r\n\r\n return classObj;\r\n // }\r\n // catch ( err )\r\n // {\r\n // courseTemp.classes.pop();\r\n // console.warn( \"error_AddClass\" + err );\r\n // }\r\n\r\n };\r\n\r\n\r\n // public //\r\n this.DrawCourse = function( refresh, divStyle )\r\n {\r\n var classesLen = self.classes_.length;\r\n\r\n for ( var i = 0; i < classesLen; i++ )\r\n {\r\n self.DrawClass( refresh, divStyle, i );\r\n }\r\n };\r\n\r\n this.HideCourse = function()\r\n {\r\n var classesLen = self.classes_.length;\r\n\r\n for ( var i = 0; i < classesLen; i++ )\r\n {\r\n self.HideClass( i );\r\n }\r\n };\r\n\r\n // public //\r\n this.DrawClass = function( refresh, divStyle, i )\r\n {\r\n self.classes_[ i ].DrawClass( refresh, divStyle );\r\n };\r\n\r\n this.HideClass = function( i )\r\n {\r\n self.classes_[ i ].HideClass();\r\n };\r\n\r\n}\r\n","console.log( \"Class.js loaded\" );\r\n\r\n\r\nfunction Class()\r\n{\r\n this.active = false; // drawn on screen\r\n this.hover = false;\r\n this.press = false;\r\n this.note = \"\"; // class note\r\n this.sect = 0; // class section number\r\n this.seats = 0; // setats available\r\n this.units = \"\"; // class unots\r\n this.status = \"\"; // class status, open/closed/wait/etc\r\n this.finalExam = \"\"; // class final exam date\r\n this.sessions_ = []; // class sessions array\r\n this.$div = null; // div of button\r\n this.$parent = null; // course div\r\n this.parent = null;\r\n this.style = null;\r\n this.classDiv = null;\r\n this.divStyle = new DivStyle();\r\n this.sessionDivs_ = [];\r\n\r\n var self = this;\r\n\r\n\r\n this.Init = function( courseObj )\r\n {\r\n self.parent = courseObj;\r\n self.$parent = courseObj.$div;\r\n self.style = courseObj.style;\r\n self.$div = self.AddClassElement( self, self.$parent );\r\n self.BindEvents();\r\n\r\n for ( var i = 0; i < self.sessions_.length; i++ )\r\n {\r\n self.sessions_[ i ].Init( self, self.style );\r\n }\r\n };\r\n\r\n this.BindEvents = function()\r\n {\r\n self.$div.mouseenter( function()\r\n {\r\n self.hover = true;\r\n\r\n self.RefreshStyle();\r\n self.RefreshDivStyle();\r\n self.PopulateInfo();\r\n console.info( self.sect + \"mouseenter\" );\r\n } );\r\n\r\n self.$div.mouseleave( function()\r\n {\r\n self.hover = false;\r\n self.press = false;\r\n\r\n self.RefreshStyle();\r\n self.RefreshDivStyle();\r\n console.info( self.sect + \"mouseleave\" );\r\n } );\r\n\r\n self.$div.mouseup( function()\r\n {\r\n self.press = false;\r\n\r\n self.RefreshStyle();\r\n console.info( self.sect + \"mouseup\" );\r\n } );\r\n\r\n self.$div.mousedown( function()\r\n {\r\n self.press = true;\r\n\r\n self.RefreshStyle();\r\n console.info( self.sect + \"mousedown\" );\r\n } );\r\n\r\n self.$div.click( function()\r\n {\r\n self.ToggleActive( this );\r\n console.info( self.sect + \"mouseclick\" );\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 this.AddClassElement = function( classObj, $courseDiv )\r\n {\r\n var $classDiv = $( \"<div/>\",\r\n {\r\n class: \"class-button class-mini\"\r\n } );\r\n\r\n $classDiv.data( \"class\", classObj );\r\n\r\n $classDiv.append( '<span class=\"class-title\">' +\r\n ( classObj.sect + ' - ' + classObj.sessions_[ 0 ].instructor ) +\r\n '</span> <div class=\"class-close-button icon\">x</div>'\r\n );\r\n\r\n $courseDiv.children( \".class-wrap\" ).append( $classDiv );\r\n setTimeout( function()\r\n {\r\n $classDiv.removeClass( 'class-mini' );\r\n }, 1 );\r\n\r\n return $classDiv;\r\n };\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n this.ToggleActive = function( div, active )\r\n {\r\n if ( active === undefined )\r\n {\r\n self.active = !self.active;\r\n this.ToggleActive( div, self.active );\r\n }\r\n else\r\n {\r\n var classes_ = self.parent.classes_;\r\n var classesLen = classes_.length;\r\n var clas = null;\r\n var i = 0;\r\n if ( active )\r\n {\r\n\r\n for ( i = 0; i < classesLen; i++ )\r\n {\r\n clas = classes_[ i ];\r\n if ( clas.active )\r\n {\r\n clas.active = false;\r\n clas.RefreshStyle();\r\n clas.HideClass();\r\n }\r\n }\r\n $( div ).parent().children().removeClass( \"active\" );\r\n\r\n self.active = true;\r\n $( div ).addClass( \"active\" );\r\n self.RefreshStyle();\r\n self.DrawClass();\r\n }\r\n else\r\n {\r\n for ( i = 0; i < classesLen; i++ )\r\n {\r\n clas = classes_[ i ];\r\n if ( clas.active )\r\n {\r\n clas.active = false;\r\n clas.RefreshStyle();\r\n clas.HideClass();\r\n }\r\n }\r\n\r\n $( div ).parent().children().removeClass( \"active\" );\r\n console.log( self.parent.expanded );\r\n\r\n if ( !self.parent.expanded )\r\n {\r\n $( div ).addClass( \"class-mini\" );\r\n $( div ).removeClass( \"class-solo\" );\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 this.RefreshStyle = function()\r\n {\r\n if ( self.press )\r\n {\r\n self.$div.css( 'background', 'hsl(' + ( self.style.hue ) + ', ' + ( self.style.sat + 20 ) + '%, ' + ( self.style.lit - 10 ) + '%)' );\r\n }\r\n else if ( self.active )\r\n {\r\n self.$div.css( 'background', 'hsl(' + ( self.style.hue ) + ', ' + ( self.style.sat + 35 ) + '%, ' + ( self.style.lit + 7 ) + '%)' );\r\n }\r\n else if ( self.hover )\r\n {\r\n self.$div.css( 'background', 'hsl(' + ( self.style.hue ) + ', ' + ( self.style.sat + 25 ) + '%, ' + ( self.style.lit + 20 ) + '%)' );\r\n }\r\n else\r\n {\r\n self.$div.css( 'background', 'hsl(' + ( self.style.hue ) + ', ' + ( self.style.sat - 25 ) + '%, ' + ( self.style.lit + 20 ) + '%)' );\r\n }\r\n };\r\n\r\n\r\n\r\n\r\n\r\n this.DrawClass = function()\r\n {\r\n var sessionsLen = self.sessions_.length;\r\n var sessionDivsLen = self.sessionDivs_.length;\r\n var index = 0;\r\n\r\n for ( var i = 0; i < sessionsLen; i++ )\r\n {\r\n for ( var j = 0; j < 7; j++ )\r\n {\r\n if ( self.sessions_[ i ].days_[ j ] === 1 )\r\n {\r\n if ( index >= sessionDivsLen )\r\n {\r\n self.sessionDivs_.push( new SessionDiv( self.sessions_[ i ], j ) );\r\n }\r\n else\r\n {\r\n self.sessionDivs_[ index ].Update( self.sessions_[ i ], j );\r\n }\r\n\r\n index++;\r\n }\r\n }\r\n }\r\n\r\n self.sessionDivs_.splice( index + 1, sessionDivsLen );\r\n\r\n srjc.canvas.DrawSessionDivs( self.sessionDivs_ );\r\n };\r\n\r\n\r\n this.HideClass = function()\r\n {\r\n var sessionDivsLen = self.sessionDivs_.length;\r\n\r\n for ( var i = 0; i < sessionDivsLen; i++ )\r\n {\r\n self.sessionDivs_[ i ].$div.remove();\r\n }\r\n\r\n self.sessionDivs_.splice( 0, sessionDivsLen ); // clear array\r\n };\r\n\r\n\r\n\r\n\r\n // this.DrawClass = function( refresh, divStyle )\r\n // {\r\n // var sessionsLen = self.sessions_.length;\r\n\r\n // for ( var i = 0; i < sessionsLen; i++ )\r\n // {\r\n // self.DrawSession( refresh, divStyle, i );\r\n // }\r\n\r\n // self.DrawClassConflicts();\r\n // };\r\n\r\n // this.HideClass = function()\r\n // {\r\n // var sessionsLen = self.sessions_.length;\r\n\r\n // for ( var i = 0; i < sessionsLen; i++ )\r\n // {\r\n // self.HideSession( i );\r\n // }\r\n // };\r\n\r\n // // public //\r\n // this.DrawSession = function( refresh, divStyle, i )\r\n // {\r\n // self.sessions_[ i ].DrawSession( refresh, divStyle );\r\n // };\r\n\r\n // this.HideSession = function( i )\r\n // {\r\n // self.sessions_[ i ].HideSession();\r\n // };\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // this.DrawSession = function( sessionNum )\r\n // {\r\n // for ( var day = 0; day < 7; day++ )\r\n // {\r\n // if ( self.sessions_[ sessionNum ].days_[ day ] == 1 )\r\n // {\r\n // srjc.canvas.SessionAdd( new self.SessionDiv( self, day, self.sessions_[ sessionNum ].dateStart,\r\n // self.sessions_[ sessionNum ].dateEnd,\r\n // self.sessions_[ sessionNum ].timeStart,\r\n // self.sessions_[ sessionNum ].timeEnd,\r\n // self.style ) );\r\n // }\r\n // }\r\n // };\r\n\r\n // public //\r\n // this.ClassDiv = function()\r\n // {\r\n // this.parent = self.parent;\r\n // this.current = false;\r\n // this.$divs_ = [];\r\n\r\n // this.sessionDivs_ = [];\r\n\r\n // this.divStyle = new self.DivStyle();\r\n\r\n // var sessionsLen = self.sessions_.length;\r\n\r\n // for ( var i = 0; i < sessionsLen; i++ )\r\n // {\r\n // this.sessionDivs_.push( new self.SessionDiv( self.sessions_[ i ] ) );\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 // public //\r\n this.RefreshDivStyle = function()\r\n {\r\n var divStyle = self.divStyle;\r\n if ( self.hover )\r\n {\r\n divStyle.borderWidth = 2;\r\n divStyle.borderColor = 'white';\r\n divStyle.alpha = 1;\r\n\r\n // self.parent.DrawCourse( true,\r\n // {\r\n // style:\r\n // {\r\n // sat: 20\r\n // },\r\n // alpha: 0.3\r\n // } );\r\n\r\n self.DrawClass();\r\n }\r\n else if ( self.active )\r\n {\r\n divStyle.borderWidth = 1;\r\n divStyle.borderColor = 'black';\r\n divStyle.alpha = 0.8;\r\n\r\n //self.parent.DrawCourse( true );\r\n self.DrawClass();\r\n }\r\n else\r\n {\r\n // self.parent.DrawCourse( true );\r\n self.HideClass();\r\n }\r\n };\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // public //\r\n this.PopulateInfo = function()\r\n {\r\n srjc.info.PopulateInfo( self );\r\n };\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n this.DrawClassConflicts = function( skip )\r\n {\r\n var sessionList_;\r\n\r\n for ( var i = 0; i < 7; i++ )\r\n {\r\n sessionList_ = self.GenerateSessionList( i, skip );\r\n\r\n if ( sessionList_.length <= 1 )\r\n {\r\n continue;\r\n }\r\n\r\n var sessionListLen = sessionList_.length;\r\n\r\n for ( var j = 0; j < sessionListLen; j++ )\r\n {\r\n var ds, de, ts, te, session = sessionList_[ j ];\r\n\r\n ds = session.dateStart;\r\n de = session.dateEnd;\r\n\r\n ts = session.timeStart;\r\n te = session.timeEnd;\r\n\r\n for ( var k = j + 1; k < sessionList_.length; k++ )\r\n {\r\n var ds2, de2, ts2, te2, session2 = sessionList_[ k ];\r\n\r\n ds2 = session2.dateStart;\r\n de2 = session2.dateEnd;\r\n\r\n ts2 = session2.timeStart;\r\n te2 = session2.timeEnd;\r\n\r\n if ( self.CheckClassConflict( ds, de, ts, te, ds2, de2, ts2, te2 ) )\r\n {\r\n var days_ = [];\r\n days_[ i ] = 1;\r\n\r\n var sessionDiv = new SessionDiv(\r\n {\r\n dateStart: Math.max( ds, ds2 ),\r\n dateEnd: Math.min( de, de2 ),\r\n timeStart: Math.max( ts, ts2 ),\r\n timeEnd: Math.min( te, te2 ),\r\n days_: days_,\r\n } );\r\n\r\n // srjc.canvas.DrawSession( false, sessionDiv,\r\n // {\r\n // style: new Style( 0, 0, 0 ),\r\n // borderColor: 'red',\r\n // borderWidth: 3,\r\n // alpha: 0.8\r\n // } );\r\n\r\n //DrawRect2( x1, y1, x2, y2, \"red\", 3, true, \"hsla(0,0%,0%,.35)\" );\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n\r\n\r\n\r\n this.GenerateSessionList = function( day )\r\n {\r\n var sessionList_ = [];\r\n\r\n var courses_ = self.parent.parent.courses_;\r\n var coursesLen = courses_.length;\r\n\r\n var classes_ = null;\r\n var sessions_ = null;\r\n\r\n var classesLen = null;\r\n var sessionsLen = null;\r\n\r\n var i = 0,\r\n j = 0,\r\n k = 0;\r\n\r\n for ( i = 0; i < coursesLen; i++ )\r\n {\r\n if ( courses_[ i ].visible )\r\n {\r\n classes_ = courses_[ i ].classes_;\r\n classesLen = classes_.length;\r\n\r\n for ( j = 0; j < classesLen; j++ )\r\n {\r\n if ( classes_[ j ].active || classes_[ j ].hover )\r\n {\r\n sessions_ = classes_[ j ].sessions_;\r\n sessionsLen = sessions_.length;\r\n\r\n for ( k = 0; k < sessionsLen; k++ )\r\n {\r\n if ( sessions_[ k ].days_[ day ] === 1 )\r\n {\r\n sessionList_.push( sessions_[ k ] );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return sessionList_;\r\n };\r\n\r\n\r\n this.CheckClassConflict = function( ds, de, ts, te, ds2, de2, ts2, te2 )\r\n {\r\n if ( ( ts2 < te ) && ( te2 > ts ) )\r\n {\r\n return ( ( ds2 <= de ) && ( de2 >= ds ) );\r\n }\r\n\r\n return false;\r\n };\r\n\r\n\r\n}\r\n\r\n\r\nfunction SessionDiv( session, day )\r\n{\r\n var self = this;\r\n var semStart, semEnd;\r\n\r\n if ( session.dateStart < 152 )\r\n {\r\n semStart = SPRING_START;\r\n semEnd = SPRING_END;\r\n }\r\n else if ( session.dateStart < 213 )\r\n {\r\n semStart = SUMMER_START;\r\n semEnd = SUMMER_END;\r\n }\r\n else\r\n {\r\n semStart = FALL_START;\r\n semEnd = FALL_END;\r\n }\r\n\r\n this.widthPre = Math.max( 2, session.dateEnd - session.dateStart ) +\r\n Math.min( session.dateStart - semStart, 0 ) -\r\n Math.max( session.dateEnd - semEnd, 0 );\r\n\r\n this.xPre = Math.max( session.dateStart - semStart, 0 );\r\n\r\n this.heightPre = session.timeEnd - session.timeStart;\r\n this.semLen = ( semEnd - semStart );\r\n\r\n this.$div = $( \"<div/>\",\r\n {\r\n class: \"drawClass\",\r\n } ).appendTo('#canvas');\r\n\r\n\r\n\r\n this.x = 0;\r\n this.y = 0;\r\n this.width = 0;\r\n this.height = 0;\r\n this.day = day;\r\n this.current = false;\r\n\r\n this.days_ = session.days_;\r\n this.timeStart = session.timeStart;\r\n\r\n this.divStyle = session.divStyle;\r\n\r\n if ( session.parent !== undefined )\r\n {\r\n this.divStyle_ = [ session.divStyle, session.parent.divStyle, session.parent.parent.divStyle, session.parent.parent.parent.divStyle ];\r\n }\r\n\r\n this.Update = function( session, day )\r\n {\r\n if ( session.dateStart < 152 )\r\n {\r\n semStart = SPRING_START;\r\n semEnd = SPRING_END;\r\n }\r\n else if ( session.dateStart < 213 )\r\n {\r\n semStart = SUMMER_START;\r\n semEnd = SUMMER_END;\r\n }\r\n else\r\n {\r\n semStart = FALL_START;\r\n semEnd = FALL_END;\r\n }\r\n\r\n self.widthPre = Math.max( 2, session.dateEnd - session.dateStart ) +\r\n Math.min( session.dateStart - semStart, 0 ) -\r\n Math.max( session.dateEnd - semEnd, 0 );\r\n\r\n self.xPre = Math.max( session.dateStart - semStart, 0 );\r\n\r\n self.heightPre = session.timeEnd - session.timeStart;\r\n self.semLen = ( semEnd - semStart );\r\n\r\n self.day = day;\r\n\r\n self.days_ = session.days_;\r\n self.timeStart = session.timeStart;\r\n\r\n self.divStyle = session.divStyle;\r\n\r\n if ( session.parent !== undefined )\r\n {\r\n self.divStyle_ = [ session.divStyle, session.parent.divStyle, session.parent.parent.divStyle, session.parent.parent.parent.divStyle ];\r\n }\r\n\r\n };\r\n}\r\n","console.log( \"Session.js loaded\" );\r\n\r\n\r\nfunction Session()\r\n{\r\n this.days_ = [];\r\n this.daysS = \"\";\r\n this.timeStart = 0;\r\n this.timeS = \"\";\r\n this.timeEnd = 0;\r\n this.instructor = \"\";\r\n this.location = 0;\r\n this.dateStart = 0;\r\n this.dateS = \"\";\r\n this.dateEnd = 0;\r\n this.sessionDiv = null;\r\n this.style = null;\r\n this.divStyle = null;\r\n this.parent = null;\r\n\r\n\r\n var self = this;\r\n\r\n\r\n // public //\r\n this.Init = function( parent, style )\r\n {\r\n self.parent = parent;\r\n self.style = style;\r\n console.log( self.style );\r\n self.divStyle = new DivStyle( self.style, 'black', 1, 0.8 );\r\n self.sessionDiv = new SessionDiv( self );\r\n };\r\n\r\n // public //\r\n this.DrawSession = function( refresh, divStyle )\r\n {\r\n srjc.canvas.DrawSession( refresh, self.sessionDiv, divStyle );\r\n };\r\n\r\n this.HideSession = function()\r\n {\r\n srjc.canvas.HideSession( self.sessionDiv );\r\n };\r\n\r\n\r\n\r\n\r\n\r\n\r\n // public //\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\n// function SessionDiv( session )\r\n// {\r\n// var semStart, semEnd;\r\n\r\n// if ( session.dateStart < 152 )\r\n// {\r\n// semStart = SPRING_START;\r\n// semEnd = SPRING_END;\r\n// }\r\n// else if ( session.dateStart < 213 )\r\n// {\r\n// semStart = SUMMER_START;\r\n// semEnd = SUMMER_END;\r\n// }\r\n// else\r\n// {\r\n// semStart = FALL_START;\r\n// semEnd = FALL_END;\r\n// }\r\n\r\n// this.widthPre = Math.max( 2, session.dateEnd - session.dateStart ) +\r\n// Math.min( session.dateStart - semStart, 0 ) -\r\n// Math.max( session.dateEnd - semEnd, 0 );\r\n\r\n// this.xPre = Math.max( session.dateStart - semStart, 0 );\r\n\r\n// this.heightPre = session.timeEnd - session.timeStart;\r\n// this.semLen = ( semEnd - semStart );\r\n\r\n// this.$divs_ = [];\r\n// this.x_ = [];\r\n// this.y = 0;\r\n// this.width = 0;\r\n// this.height = 0;\r\n// this.current = false;\r\n\r\n// this.days_ = session.days_;\r\n// this.timeStart = session.timeStart;\r\n\r\n// if ( session.parent !== undefined )\r\n// {\r\n// this.divStyle_ = [ session.divStyle, session.parent.divStyle, session.parent.parent.divStyle, session.parent.parent.parent.divStyle ];\r\n// }\r\n// }\r\n","console.log( \"Canvas.js loaded\" );\r\n\r\n\r\nfunction Canvas()\r\n{\r\n\r\n var self = this;\r\n var cellW = 0,\r\n cellH = 0;\r\n var classes_ = [];\r\n var panelsMinW = parseInt( $( \"#second-panel\" ).css( 'min-width' ) ) + parseInt( $( \"#third-panel\" ).css( 'min-width' ) ) + 2;\r\n\r\n console.log( panelsMinW );\r\n var _ = {\r\n main: $( \"#main\" ),\r\n container: $( \"#container\" ),\r\n canvas: $( \"#canvas\" ),\r\n table: $( \"#time-table\" ),\r\n timesheet: $( \"#timesheet\" ),\r\n firstPanel: $( \"#first-panel\" ),\r\n secondPanel: $( \"#second-panel\" ),\r\n thirdPanel: $( \"#third-panel\" ),\r\n firstCell: $( \"#time-table tr:first-child th:first-child\" ),\r\n cells: $( \"#time-table tr:first-child th:not(th:first-child)\" ),\r\n rows: $( \"#time-table tr\" ),\r\n footer: $( '#footer' ),\r\n\r\n\r\n };\r\n\r\n this.Init = function()\r\n {\r\n self.BindEvents();\r\n _.container.removeClass( 'loading' );\r\n $( \".spinner\" ).hide();\r\n self.Redraw();\r\n };\r\n\r\n this.BindEvents = function()\r\n {\r\n $( window ).resize( function()\r\n {\r\n self.Redraw();\r\n self.Clear();\r\n } );\r\n };\r\n\r\n\r\n // public //\r\n this.Clear = function()\r\n {\r\n _.canvas.html( \"\" ); // remove all class divs\r\n };\r\n\r\n // public //\r\n this.Redraw = function( isPrint )\r\n {\r\n $( '#footer' ).outerHeight( 30 + 'px' );\r\n //_.container.css( 'align-items' , 'flex-start' );\r\n\r\n var mainW = _.main.width();\r\n \r\n //mainW = 1700;\r\n\r\n // if ( isPrint )\r\n // {\r\n // cellW = Math.floor( ( mainW - _.thirdPanel.outerWidth() - 47 ) / 7 );\r\n // cellH = 36;\r\n // }\r\n // else\r\n // {\r\n // cellW = Math.floor( Math.min( ( mainW * 0.5 - 47 ) / 7, ( mainW - panelsMinW - 47 ) / 7 ) );\r\n // cellH = Math.floor( ( _.timesheet.height() ) / 19 );\r\n // }\r\n\r\n if ( !isPrint )\r\n {\r\n cellW = Math.floor( Math.min( ( mainW * 0.5 - 47 ) / 7, ( mainW - panelsMinW - 47 ) / 7 ) );\r\n cellH = Math.floor( ( _.timesheet.height() ) / 19 );\r\n //_.main.removeAttr('style');\r\n }\r\n else\r\n {\r\n cellW = Math.floor( ( mainW - ( _.thirdPanel.outerWidth() ) - 47 ) / 7 );\r\n cellH = 36;\r\n console.log( _.secondPanel.width() );\r\n }\r\n\r\n\r\n\r\n\r\n _.firstCell.width( \"40px\" );\r\n _.cells.width( cellW + \"px\" );\r\n _.timesheet.width( ( cellW * 7 + 47 ) + \"px\" );\r\n _.rows.height( cellH + \"px\" );\r\n _.footer.outerHeight( ( 30 + Math.max( 0, ( Math.round( _.timesheet.height() ) - Math.round( _.table.height() ) ) ) ) + 'px' );\r\n _.main.height( _.table.height() );\r\n //_.container.css( 'align-items' , 'center' );\r\n\r\n if ( cellW <= 75 )\r\n {\r\n $( \"th:nth-child(2) div\" ).html( \"Mon\" );\r\n $( \"th:nth-child(3) div\" ).html( \"Tue\" );\r\n $( \"th:nth-child(4) div\" ).html( \"Wed\" );\r\n $( \"th:nth-child(5) div\" ).html( \"Thu\" );\r\n $( \"th:nth-child(6) div\" ).html( \"Fri\" );\r\n $( \"th:nth-child(7) div\" ).html( \"Sat\" );\r\n $( \"th:nth-child(8) div\" ).html( \"Sun\" );\r\n }\r\n else\r\n {\r\n $( \"th:nth-child(2) div\" ).html( \"Monday\" );\r\n $( \"th:nth-child(3) div\" ).html( \"Tuesday\" );\r\n $( \"th:nth-child(4) div\" ).html( \"Wedneday\" );\r\n $( \"th:nth-child(5) div\" ).html( \"Thursday\" );\r\n $( \"th:nth-child(6) div\" ).html( \"Friday\" );\r\n $( \"th:nth-child(7) div\" ).html( \"Saturday\" );\r\n $( \"th:nth-child(8) div\" ).html( \"Sunday\" );\r\n }\r\n\r\n\r\n };\r\n\r\n \r\n /* // public //\r\n this.ClassAdd = function( classDiv )\r\n {\r\n\r\n if ( $.inArray( classDiv, classes_ ) <= -1 )\r\n {\r\n classes_.push( classDiv );\r\n }\r\n\r\n console.log( classes_.length );\r\n self.ClassUpdate( classDiv );\r\n };\r\n\r\n this.ClassRemove = function( classDiv )\r\n {\r\n var index = $.inArray( classDiv, classes_ );\r\n\r\n if ( index > -1 )\r\n {\r\n $.each( classes_[ index ].$divs_, function( ind, value )\r\n {\r\n value.remove();\r\n } );\r\n classes_.splice( index, 1 );\r\n }\r\n\r\n //self.ClassUpdate(classDiv);\r\n };\r\n\r\n\r\n\r\n // public //\r\n this.SessionAdd = function( sessionDiv )\r\n {\r\n sessions_.push( sessionDiv );\r\n self.SessionUpdate( sessionDiv );\r\n\r\n };\r\n\r\n\r\n // public //\r\n this.ClassesUpdate = function( forceUpdate )\r\n {\r\n var classesLen = classes_.length;\r\n\r\n for ( var i = 0; i < classesLen; i++ )\r\n {\r\n if ( !classes_[ i ].current || forceUpdate )\r\n {\r\n self.ClassUpdate( classes_[ i ] );\r\n }\r\n\r\n }\r\n };\r\n\r\n // public //\r\n this.ClassUpdate = function( classDiv )\r\n {\r\n var sessionsLen = classDiv.sessionDivs_.length;\r\n //_.canvas.html(\"\");\r\n\r\n var $divs_ = [];\r\n var divsLen = 0;\r\n\r\n for ( var i = 0; i < sessionsLen; i++ )\r\n {\r\n $divs_ = self.SessionUpdate( classDiv.sessionDivs_[ i ], classDiv.divStyle );\r\n\r\n divsLen = $divs_.length;\r\n\r\n for ( var j = 0; j < divsLen; j++ )\r\n {\r\n classDiv.$divs_.push( $divs_.pop() );\r\n }\r\n\r\n\r\n\r\n }\r\n };\r\n\r\n this.SessionUpdate = function( sessionDiv, divStyle )\r\n {\r\n\r\n\r\n // var width = Math.max(2, sessionDiv.dateEnd - sessionDiv.dateStart) + Math.min(sessionDiv.dateStart - semStart, 0) - Math.max(sessionDiv.dateEnd - semEnd, 0);\r\n // console.log(width + \"width 1\");\r\n\r\n // var dateStart = Math.max(sessionDiv.dateStart - semStart, 0);\r\n // console.log(dateStart + \"dateStart\");\r\n\r\n // sessionDiv.x = 40 + (cellW + 1) * sessionDiv.day + dateStart * (cellW / (semEnd - semStart));\r\n // console.log(sessionDiv.x + \"x\");\r\n\r\n // sessionDiv.y = cellH + (sessionDiv.timeStart) * (cellH / 60) - 1;\r\n // console.log(sessionDiv.y + \"y\");\r\n\r\n // sessionDiv.width = width * (cellW / (semEnd - semStart));\r\n // console.log(sessionDiv.width + \"width 2\");\r\n\r\n // sessionDiv.height = (sessionDiv.timeEnd - sessionDiv.timeStart) * (cellH / 60) - 1;\r\n // console.log(sessionDiv.height + \"height\");\r\n\r\n var daysLen = sessionDiv.days_.length;\r\n sessionDiv.x_.splice( 0, sessionDiv.x_.length );\r\n\r\n for ( var i = 0; i < daysLen; i++ )\r\n {\r\n if ( sessionDiv.days_[ i ] === 1 )\r\n {\r\n sessionDiv.x_.push( 40 + ( cellW + 1 ) * i + sessionDiv.xPre * ( cellW / sessionDiv.semLen ) );\r\n }\r\n }\r\n\r\n sessionDiv.y = cellH + ( sessionDiv.timeStart ) * ( cellH / 60 ) - 1;\r\n // console.log(sessionDiv.y + \"y\");\r\n\r\n sessionDiv.width = sessionDiv.widthPre * ( cellW / sessionDiv.semLen ) - divStyle.borderWidth * 2 + 2;\r\n // console.log(sessionDiv.width + \"width 2\");\r\n\r\n sessionDiv.height = sessionDiv.heightPre * ( cellH / 60 ) - divStyle.borderWidth * 2 + 1;\r\n // console.log(sessionDiv.height + \"height\");\r\n\r\n divStyle.innerColor = 'hsla(' + ( divStyle.style.hue ) + ', ' + ( divStyle.style.sat + 25 ) + '%, ' + ( divStyle.style.lit + 5 ) + '%,' + ( divStyle.style.alf ) + ')';\r\n sessionDiv.current = true;\r\n\r\n return ( self.SessionDraw( sessionDiv, divStyle ) );\r\n\r\n };\r\n\r\n\r\n\r\n // private //\r\n this.SessionDraw = function( sessionDiv, divStyle )\r\n {\r\n var xLen = sessionDiv.x_.length;\r\n var $divs_ = [];\r\n\r\n for ( var i = 0; i < xLen; i++ )\r\n {\r\n\r\n var $div = $( \"<div/>\",\r\n {\r\n class: \"drawClass\",\r\n } ); // create a course div\r\n\r\n $div.width( sessionDiv.width + \"px\" );\r\n $div.height( sessionDiv.height + \"px\" );\r\n\r\n $div.css( \"top\", sessionDiv.y + \"px\" );\r\n $div.css( \"left\", sessionDiv.x_[ i ] + \"px\" );\r\n\r\n $div.css( \"box-shadow\", \"inset 0 0 0 1000px \" + divStyle.innerColor );\r\n $div.css( \"border-color\", divStyle.borderColor );\r\n $div.css( \"border-width\", divStyle.borderWidth + \"px\" );\r\n\r\n\r\n /*\r\n if ( info !== undefined )\r\n {\r\n $div.html( \"<div><p>\" + info + \"</p></div>\" );\r\n $div.data( \"parent\", parent ); // bind class object to button\r\n $div.data( \"sessionNum\", sessionNum );\r\n }\r\n *\r\n $divs_.push( $div );\r\n _.canvas.append( $div );\r\n }\r\n\r\n return ( $divs_ );\r\n };\r\n\r\n*/\r\n\r\n // public //\r\n // public //\r\n this.DrawSessionDivs = function( sessionDivs_ )\r\n {\r\n var sessionDivsLen = sessionDivs_.length;\r\n\r\n for ( var i = 0; i < sessionDivsLen; i++ )\r\n {\r\n this.DrawSessionDiv( sessionDivs_[ i ] );\r\n }\r\n };\r\n\r\n\r\n\r\n this.DrawSessionDiv = function( sessionDiv )\r\n {\r\n //console.log( sessionDiv );\r\n\r\n // if ( divStyle === undefined )\r\n // {\r\n // divStyle = new DivStyle();\r\n // }\r\n\r\n // if ( sessionDiv.divStyle_ !== undefined )\r\n // {\r\n // divStyle = self.CompileDivStyle( divStyle, sessionDiv.divStyle_ );\r\n // }\r\n\r\n //console.log( divStyle );\r\n\r\n self.SessionDivUpdate( sessionDiv );\r\n var divStyle = sessionDiv.divStyle;\r\n\r\n //var xLen = sessionDiv.x_.length;\r\n //var sessionsLen = sessionDiv.$divs_.length;\r\n //var $divs_ = [];\r\n var $div = sessionDiv.$div;\r\n\r\n\r\n $div.width( sessionDiv.width + \"px\" );\r\n $div.height( sessionDiv.height + \"px\" );\r\n\r\n $div.css( \"top\", sessionDiv.y + \"px\" );\r\n $div.css( \"left\", sessionDiv.x + \"px\" );\r\n\r\n $div.css( \"box-shadow\", \"inset 0 0 0 1000px \" + divStyle.innerColor );\r\n $div.css( \"border-color\", divStyle.borderColor );\r\n $div.css( \"border-width\", divStyle.borderWidth + \"px\" );\r\n\r\n\r\n console.log( \"drawSession\" );\r\n\r\n };\r\n\r\n // public //\r\n this.HideSession = function( sessionDiv )\r\n {\r\n\r\n var sessionsLen = sessionDiv.$divs_.length;\r\n for ( i = 0; i < sessionsLen; i++ )\r\n {\r\n sessionDiv.$divs_.pop().remove();\r\n }\r\n };\r\n\r\n this.SessionDivUpdate = function( sessionDiv )\r\n {\r\n var divStyle = sessionDiv.divStyle;\r\n\r\n sessionDiv.x = 40 + ( cellW + 1 ) * sessionDiv.day + sessionDiv.xPre * ( cellW / sessionDiv.semLen );\r\n\r\n sessionDiv.y = cellH + ( sessionDiv.timeStart ) * ( cellH / 60 ) - 1;\r\n // console.log(sessionDiv.y + \"y\");\r\n\r\n sessionDiv.width = sessionDiv.widthPre * ( cellW / sessionDiv.semLen ) - divStyle.borderWidth * 2 + 2;\r\n // console.log(sessionDiv.width + \"width 2\");\r\n\r\n sessionDiv.height = sessionDiv.heightPre * ( cellH / 60 ) - divStyle.borderWidth * 2 + 1;\r\n // console.log(sessionDiv.height + \"height\");\r\n\r\n divStyle.innerColor = 'hsla(' + ( divStyle.style.hue ) + ', ' + ( divStyle.style.sat + 30 ) + '%, ' + ( divStyle.style.lit + 10 ) + '%,' + ( divStyle.alpha ) + ')';\r\n sessionDiv.current = true;\r\n };\r\n\r\n\r\n // public //\r\n this.CompileDivStyle = function( divStyle, divStyle_ )\r\n {\r\n var style = $.extend(\r\n {}, divStyle_[ 0 ].style, divStyle_[ 1 ].style, divStyle_[ 2 ].style, divStyle_[ 3 ].style, divStyle.style );\r\n var divStyleComp = $.extend(\r\n {}, divStyle_[ 0 ], divStyle_[ 1 ], divStyle_[ 2 ], divStyle_[ 3 ], divStyle );\r\n divStyleComp.style = style;\r\n return ( divStyleComp );\r\n };\r\n\r\n\r\n}\r\n","console.log( \"Info.js loaded\" );\r\n\r\n\r\nfunction Info()\r\n{\r\n\tvar self = this;\r\n\r\n\tvar _ = {\r\n\t\tinfoPanel: $( \"#info-panel\" ),\r\n\t\tinfo: $( \"#info\" ),\r\n\t};\r\n\r\n\tthis.Init = function( courseObj )\r\n\t{\r\n\t\tself.BindEvents();\r\n\t};\r\n\r\n\tthis.BindEvents = function() {\r\n\r\n\t};\r\n\r\n\t// public //\r\n\tthis.PopulateInfo = function( classe )\r\n\t{\r\n\r\n\t\tvar info = \"\";\r\n\t\tvar weekdays = \"MTWTFSS\";\r\n\r\n\t\tinfo += '<div class=\"info-title\">' + classe.parent.courseTitle + '</div>';\r\n\t\tinfo += '<div class=\"info-subtitle\">' + classe.parent.courseSubtitle + '</div>';\r\n\t\tinfo += '<div class=\"info-sect\">Sect: ' + classe.sect + '</div>';\r\n\r\n\t\tvar sessionsLen = classe.sessions_.length;\r\n\t\tvar session;\r\n\r\n\t\tfor ( var i = 0; i < sessionsLen; i++ )\r\n\t\t{\r\n\t\t\tsession = classe.sessions_[ i ]; \r\n\t\t\tinfo += '<div class=\"info-session\">';\r\n\t\t\tinfo += '<div class=\"info-days-wrap\">Days:';\r\n\r\n\t\t\tfor ( var j = 0; j < 7; j++ )\r\n\t\t\t{\r\n\t\t\t\tif ( session.days_[ j ] === 1 )\r\n\t\t\t\t{\r\n\t\t\t\t\tinfo += '<span class=\"info-day active\" style=\"background:hsl(' + ( classe.style.hue ) + ', ' + ( classe.style.sat ) + '%, ' + ( classe.style.lit + 30 ) + '%)\">' + weekdays.charAt( j ) + '</span>';\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tinfo += '<span class=\"info-day\">' + weekdays.charAt( j ) + '</span>';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tinfo += '</div>';\r\n\t\t\tinfo += '<div class=\"info-hours\">Hours: ' + session.timeS + '</div>';\r\n info += '<div class=\"info-instructor\">Instructor: ' + session.instructor + '</div>';\r\n info += '<div class=\"info-location\">Location: ' + session.location + '</div>';\r\n info += '<div class=\"info-dates\">Dates: ' + session.dateS + '</div>';\r\n info += '</div>';\r\n\t\t}\r\n\r\n\t\tinfo += '<div class=\"info-units\">Units: ' + classe.units + '</div>';\r\n info += '<div class=\"info-status\">Status: ' + classe.status + '</div>';\r\n info += '<div class=\"info-seats\">Seats: ' + classe.seats + '</div>';\r\n info += '<div class=\"info-final\">Final: ' + classe.finalExam + '</div>';\r\n info += '<div class=\"info-notes\">Notes: ' + classe.note + '</div>';\r\n\r\n\t\t_.info.html( info );\r\n\r\n\t\t $('.info-effect').css( \"box-shadow\" , '0 0 120px hsl(' + ( classe.style.hue ) + ', ' + ( classe.style.sat ) + '%, ' + ( classe.style.lit + 20 ) + '%),' +\r\n\t\t \t'0 0 150px hsl(' + ( classe.style.hue ) + ', ' + ( classe.style.sat ) + '%, ' + ( classe.style.lit + 20 ) + '%),' +\r\n\t\t \t'0 0 200px hsl(' + ( classe.style.hue ) + ', ' + ( classe.style.sat ) + '%, ' + ( classe.style.lit + 20 ) + '%)' );\r\n\r\n\r\n\r\n\r\n\t};\r\n\r\n}\r\n","console.log( \"Add.js loaded\" );\r\n\r\n\r\nfunction Add()\r\n{\r\n var self = this;\r\n var searchActive = false;\r\n var resultsPanelActive = false;\r\n var courseTitles_ = [ \"AGBUS 2\", \"AGBUS 51\", \"AGBUS 52\", \"AGBUS 61\", \"AGBUS 62\", \"AGBUS 7\", \"AGMEC 89\", \"AGRI 10\", \"AGRI 20\", \"AGRI 56\", \"AGRI 60\", \"AGRI 98\", \"AGRI 99\", \"AGRI 99I\", \"AJ 203\", \"AJ 21\", \"AJ 22\", \"AJ 222A\", \"AJ 222B\", \"AJ 223\", \"AJ 25\", \"AJ 299.88\", \"AJ 305\", \"AJ 348\", \"AJ 350\", \"AJ 351\", \"AJ 353\", \"AJ 354\", \"AJ 355\", \"AJ 361\", \"AJ 363\", \"AJ 364\", \"AJ 365\", \"AJ 369\", \"AJ 53\", \"AJ 54A\", \"AJ 54B\", \"AJ 55\", \"AJ 56\", \"AJ 70\", \"AJ 71\", \"AJ 714\", \"AJ 715\", \"AJ 98\", \"AJ 99I\", \"ANAT 1\", \"ANAT 140\", \"ANAT 40\", \"ANAT 58\", \"ANHLT 120\", \"ANHLT 121\", \"ANHLT 126\", \"ANHLT 141\", \"ANHLT 142\", \"ANHLT 151\", \"ANHLT 161\", \"ANHLT 50\", \"ANHLT 52\", \"ANSCI 2\", \"ANSCI 20\", \"ANSCI 26\", \"ANSCI 50\", \"ANSCI 91\", \"ANTHRO 1\", \"ANTHRO 1L\", \"ANTHRO 2\", \"ANTHRO 21\", \"ANTHRO 3\", \"ANTHRO 30\", \"ANTHRO 31\", \"ANTHRO 43\", \"AODS 90\", \"AODS 91\", \"APE 701\", \"APE 709\", \"APE 710\", \"APTECH 43\", \"APTECH 45\", \"APTECH 46\", \"APTECH 57\", \"APTECH 59\", \"APTECH 63\", \"APTECH 65\", \"ARCH 12\", \"ARCH 2.3\", \"ARCH 25B\", \"ARCH 26A\", \"ARCH 26B\", \"ARCH 27\", \"ART 1.1\", \"ART 1.2\", \"ART 12\", \"ART 13\", \"ART 14A\", \"ART 14B\", \"ART 14C\", \"ART 19\", \"ART 2.1\", \"ART 2.2\", \"ART 2.3\", \"ART 21\", \"ART 23\", \"ART 24\", \"ART 27A\", \"ART 27B\", \"ART 28A\", \"ART 28B\", \"ART 28C\", \"ART 3\", \"ART 31A\", \"ART 31B\", \"ART 31C\", \"ART 31D\", \"ART 33A\", \"ART 33B\", \"ART 34A\", \"ART 34B\", \"ART 4\", \"ART 49\", \"ART 5\", \"ART 75\", \"ART 7A\", \"ART 7B\", \"ART 82\", \"ASL 1\", \"ASL 2\", \"ASL 3\", \"ASL 4\", \"ASTRON 12\", \"ASTRON 3\", \"ASTRON 3L\", \"ASTRON 4\", \"ASTRON 4L\", \"ATHL 1\", \"ATHL 11\", \"ATHL 13\", \"ATHL 14\", \"ATHL 15L\", \"ATHL 22.1L\", \"ATHL 22.2L\", \"ATHL 24\", \"ATHL 29L\", \"ATHL 3\", \"ATHL 31\", \"ATHL 31L\", \"ATHL 33\", \"ATHL 34\", \"ATHL 37\", \"ATHL 38\", \"ATHL 41\", \"ATHL 42\", \"AUTO 108\", \"AUTO 125\", \"AUTO 194\", \"AUTO 51\", \"AUTO 52\", \"AUTO 53\", \"AUTO 54\", \"AUTO 56\", \"AUTO 80\", \"AUTO 99\", \"BAD 1\", \"BAD 10\", \"BAD 18\", \"BAD 2\", \"BAD 52\", \"BAD 53\", \"BAD 57\", \"BAD 98\", \"BAD 99\", \"BAD 99I\", \"BBK 50\", \"BBK 51\", \"BBK 52.1\", \"BBK 53.1\", \"BBK 53.2\", \"BEHSC 49\", \"BGN 101\", \"BGN 102\", \"BGN 110\", \"BGN 111\", \"BGN 112\", \"BGN 201\", \"BGN 203\", \"BGN 204\", \"BGN 205\", \"BGN 71\", \"BGN 81\", \"BIO 10\", \"BIO 100\", \"BIO 12\", \"BIO 13\", \"BIO 2.1\", \"BIO 2.2\", \"BIO 2.3\", \"BIO 25\", \"BIO 49\", \"BIO 85.2\", \"BMG 100\", \"BMG 103\", \"BMG 104\", \"BMG 52\", \"BMG 53\", \"BMG 54\", \"BMG 61\", \"BMG 63.1\", \"BMG 63.4\", \"BMG 66.4\", \"BMG 67.4\", \"BMK 50\", \"BMK 51\", \"BMK 54\", \"BMK 57\", \"BMK 59\", \"BOT 154\", \"BOT 154.1\", \"BOT 770\", \"BOT 85.1\", \"BOT 85.4\", \"BOT 85.5\", \"BOT 99.1I\", \"BOT 99.2I\", \"BOT 99.3I\", \"BOTANY 60\", \"CEST 192\", \"CEST 63\", \"CEST 64\", \"CEST 65\", \"CEST 81\", \"CEST 98\", \"CEST 99I\", \"CFS 98\", \"CHEM 100\", \"CHEM 12B\", \"CHEM 1A\", \"CHEM 1B\", \"CHEM 42\", \"CHEM 49\", \"CHEM 60\", \"CHEM 8\", \"CHLD 10\", \"CHLD 110.1\", \"CHLD 110.2\", \"CHLD 111A\", \"CHLD 160.1\", \"CHLD 185.2\", \"CHLD 185.3\", \"CHLD 217.2\", \"CHLD 220\", \"CHLD 51\", \"CHLD 55.2\", \"CHLD 66\", \"CHLD 66.2\", \"CHLD 68\", \"CHLD 711\", \"CHLD 714\", \"CHLD 715\", \"CHLD 79.2\", \"CHLD 79.4\", \"CHLD 90.1\", \"CHLD 90.2\", \"CHLD 90.3\", \"CHLD 90.4\", \"CHW 152\", \"CHW 152L\", \"CHW 153\", \"CI 51\", \"CI 53\", \"CI 54\", \"COMM 10\", \"COMM 5\", \"COMM 6\", \"COMM 7\", \"COMM 98\", \"CONS 183\", \"CONS 62\", \"CONS 98\", \"COUN 10\", \"COUN 162.1\", \"COUN 20\", \"COUN 270\", \"COUN 355\", \"COUN 53\", \"COUN 60\", \"COUN 62\", \"COUN 74\", \"COUN 80\", \"COUN 87\", \"COUN 90\", \"COUN 91\", \"COUN 92\", \"COUN 93\", \"COUN 94\", \"COUN 95\", \"COUN 98\", \"COUN 99I\", \"CS 10\", \"CS 101A\", \"CS 11\", \"CS 110A\", \"CS 12\", \"CS 165.31\", \"CS 167.11\", \"CS 17.11\", \"CS 19.21B\", \"CS 49\", \"CS 5\", \"CS 50.21\", \"CS 50.31\", \"CS 50.32\", \"CS 50A\", \"CS 50B\", \"CS 50C\", \"CS 55.11\", \"CS 55.13\", \"CS 57.11\", \"CS 60.11A\", \"CS 60.11B\", \"CS 61.11\", \"CS 61.11A\", \"CS 61.11B\", \"CS 62.11A\", \"CS 62.11B\", \"CS 63.11\", \"CS 63.11A\", \"CS 65.11\", \"CS 70.11A\", \"CS 70.11B\", \"CS 70.12\", \"CS 71.11\", \"CS 72.11A\", \"CS 72.11B\", \"CS 74.11\", \"CS 74.21A\", \"CS 74.21B\", \"CS 74.21D\", \"CS 74.31A\", \"CS 74.41A\", \"CS 74.42A\", \"CS 770\", \"CS 80.15\", \"CS 81.21\", \"CS 81.62\", \"CS 82.21A\", \"CS 82.21C\", \"CS 82.21D\", \"CS 82.55\", \"CS 84.13\", \"CS 98\", \"CS 99\", \"CS 99I\", \"CSKLS 100\", \"CSKLS 312\", \"CSKLS 313\", \"CSKLS 334\", \"CSKLS 368A\", \"CSKLS 368B\", \"CSKLS 371\", \"CSKLS 372\", \"CSKLS 731\", \"CSKLS 732\", \"CSKLS 733\", \"CSKLS 770\", \"CSKLS312.1\", \"CSKLS312.2\", \"CSKLS367.1\", \"CSKLS367.2\", \"CUL 250\", \"CUL 250.1\", \"CUL 252.13\", \"CUL 252.3\", \"CUL 253.1\", \"CUL 253.5\", \"CUL 253A\", \"CUL 253B\", \"CUL 254\", \"CUL 254.10\", \"CUL 254.11\", \"CUL 254.12\", \"CUL 254.13\", \"CUL 254.6\", \"CUL 254.9\", \"CUL 255\", \"CUL 256\", \"CUL 256.10\", \"CUL 256.5\", \"CUL 256.6\", \"CUL 260.15\", \"CUL 260.17\", \"CUL 260.19\", \"CUL 260.20\", \"CUL 270.3\", \"CUL 275.48\", \"CUL 275.84\", \"CUL 285.11\", \"CUL 285.12\", \"CUL 285.21\", \"CUL 285.22\", \"CUL 285.23\", \"CUL 287.6\", \"CUL 98\", \"CUL 99I\", \"DA 63\", \"DA 64\", \"DA 65\", \"DA 66.1A\", \"DA 67\", \"DANCE 10.2\", \"DANCE 11.1\", \"DANCE 11.2\", \"DANCE 11.3\", \"DANCE 11.4\", \"DANCE 11.5\", \"DANCE 11.6\", \"DANCE 13.1\", \"DANCE 13.2\", \"DANCE 13.3\", \"DANCE 13.4\", \"DANCE 13.5\", \"DANCE 13.6\", \"DANCE 16.1\", \"DANCE 16.2\", \"DANCE 16.3\", \"DANCE 16.4\", \"DANCE 16.5\", \"DANCE 16.6\", \"DANCE 2\", \"DANCE 21.1\", \"DANCE 21.2\", \"DANCE 21.3\", \"DANCE 21.4\", \"DANCE 21.5\", \"DANCE 21.6\", \"DANCE 27\", \"DANCE 28\", \"DANCE 41\", \"DANCE 88.1\", \"DANCE 88.2\", \"DE 55B\", \"DET 179\", \"DET 181\", \"DET 182A\", \"DET 182B\", \"DET 189\", \"DH 71B\", \"DH 71E\", \"DH 72\", \"DH 74\", \"DH 75\", \"DH 76\", \"DH 83\", \"DH 85\", \"DH 86\", \"DIET 106.2\", \"DIET 176\", \"DIET 50\", \"DIET 52\", \"DIET 57\", \"DIET 70\", \"DIET 99\", \"DRD 250.2\", \"DRD 360.1\", \"DRD 360.2\", \"DRD 363\", \"DRD 370.1B\", \"DRD 370.2B\", \"DRD 370.3B\", \"DRD 390.3\", \"DRD 705\", \"DRD 761\", \"ECON 1\", \"ECON 12\", \"ECON 2\", \"EDUC 55\", \"ELEC 154\", \"ELEC 156\", \"ELEC 180\", \"ELEC 51A\", \"ELEC 60B\", \"ELEC 60D\", \"ELEC 98\", \"EMC 100\", \"EMC 103\", \"EMC 104.1\", \"EMC 105\", \"EMC 108\", \"EMC 109\", \"EMC 114\", \"EMC 115\", \"EMC 116\", \"EMC 116.1\", \"EMC 118\", \"EMC 119\", \"EMC 124\", \"EMC 130B\", \"EMC 130C\", \"EMC 130D\", \"EMC 131B\", \"EMC 132\", \"ENGL 10\", \"ENGL 100\", \"ENGL 100X\", \"ENGL 1A\", \"ENGL 1B\", \"ENGL 25\", \"ENGL 27\", \"ENGL 3\", \"ENGL 30.2\", \"ENGL 302X\", \"ENGL 305.1\", \"ENGL 305X\", \"ENGL 306X\", \"ENGL 307\", \"ENGL 33\", \"ENGL 46.2\", \"ENGL 49\", \"ENGL 4A\", \"ENGL 4B\", \"ENGL 4C\", \"ENGL 5\", \"ENGL 770\", \"ENGR 10\", \"ENGR 101\", \"ENGR 102\", \"ENGR 16\", \"ENGR 25\", \"ENGR 34\", \"ENGR 45\", \"ENGR 49\", \"ENGR 6\", \"ENVS 12\", \"ENVST 40\", \"EQSCI 101\", \"EQSCI 102A\", \"EQSCI 102B\", \"EQSCI 102C\", \"EQSCI 120\", \"EQSCI 151\", \"EQSCI 25\", \"EQSCI 52\", \"EQSCI 53\", \"ERTHS 85.2\", \"ESL 100\", \"ESL 308\", \"ESL 308B\", \"ESL 310\", \"ESL 310A\", \"ESL 310B\", \"ESL 311CP\", \"ESL 312\", \"ESL 313R\", \"ESL 314\", \"ESL 315CP\", \"ESL 315GR\", \"ESL 315R\", \"ESL 316\", \"ESL 317CP\", \"ESL 317GR\", \"ESL 317R\", \"ESL 320CP\", \"ESL 320R\", \"ESL 320W\", \"ESL 332\", \"ESL 335\", \"ESL 390.1\", \"ESL 390.4\", \"ESL 701\", \"ESL 712\", \"ESL 713\", \"ESL 713CP\", \"ESL 714\", \"ESL 714CP\", \"ESL 714RW\", \"ESL 715\", \"ESL 716\", \"ESL 716CP\", \"ESL 716RW\", \"ESL 722\", \"ESL 732\", \"ESL 735\", \"FASH 106\", \"FASH 121A\", \"FASH 121B\", \"FASH 152\", \"FASH 53\", \"FASH 60\", \"FASH 70A\", \"FASH 70B\", \"FDNT 10\", \"FDNT 162\", \"FDNT 60\", \"FDNT 61\", \"FDNT 62\", \"FDNT 70\", \"FDNT 75\", \"FIRE 107B\", \"FIRE 200.1\", \"FIRE 200.2\", \"FIRE 201\", \"FIRE 203\", \"FIRE 204A\", \"FIRE 204B\", \"FIRE 204C\", \"FIRE 206\", \"FIRE 208\", \"FIRE 208.1\", \"FIRE 209\", \"FIRE 241\", \"FIRE 258\", \"FIRE 708\", \"FIRE 71\", \"FIRE 72\", \"FIRE 73\", \"FIRE 74\", \"FIRE 76\", \"FIRE 77\", \"FIRE 78\", \"FIRE 99I\", \"FLORS 114\", \"FLORS 116\", \"FLORS 83A\", \"FLORS 83B\", \"FLORS 83C\", \"FREN 1\", \"FREN 2\", \"FREN 4\", \"FREN 50C\", \"GD 20\", \"GD 51\", \"GD 52\", \"GD 57\", \"GD 58\", \"GD 60\", \"GD 63\", \"GD 65\", \"GD 72\", \"GEOG 3\", \"GEOG 4\", \"GEOG 7\", \"GEOL 1\", \"GEOL 1L\", \"GERM 1\", \"GERM 2\", \"GERM 3\", \"GERM 4\", \"GIS 40\", \"GIS 51\", \"GIS 52\", \"GIS 56\", \"HIST 1.1\", \"HIST 1.2\", \"HIST 17.1\", \"HIST 17.2\", \"HIST 18.1\", \"HIST 18.2\", \"HIST 20\", \"HIST 21\", \"HIST 33\", \"HIST 4.1\", \"HIST 4.2\", \"HIST 5\", \"HIST 8.2\", \"HLC 111\", \"HLC 140\", \"HLC 160\", \"HLC 211\", \"HLE 5\", \"HLE 6\", \"HORT 112\", \"HORT 12\", \"HORT 180\", \"HORT 50.1\", \"HORT 56\", \"HORT 66\", \"HORT 70\", \"HORT 80\", \"HORT 92.1\", \"HORT 92.2\", \"HORT 94\", \"HOSP 50\", \"HOSP 53\", \"HOSP 54\", \"HOSP 63\", \"HOSP 80\", \"HR 60\", \"HR 61\", \"HR 62\", \"HR 63\", \"HR 64\", \"HR 65\", \"HR 66\", \"HUMAN 21\", \"HUMAN 4.2\", \"HUMAN 49\", \"HUMAN 5\", \"HUMAN 6\", \"HUMAN 7\", \"HUMAN 8\", \"IED 190\", \"INDE 128\", \"INDE 20\", \"INDE 50\", \"INDE 52\", \"INDE 63\", \"INDE 64.1\", \"INDE 99I\", \"INTDIS 4\", \"INTDIS 90\", \"ITAL 1\", \"ITAL 2\", \"ITAL 4\", \"JOUR 1\", \"JOUR 2\", \"JOUR 52A\", \"JOUR 52B\", \"JOUR 52C\", \"JOUR 52D\", \"JOUR 55\", \"KAQUA 1.1\", \"KAQUA 1.2\", \"KAQUA 10.1\", \"KAQUA 10.2\", \"KAQUA 2.1\", \"KAQUA 2.3\", \"KAQUA 3.1\", \"KAQUA 3.2\", \"KCOMB 1.1\", \"KCOMB 10\", \"KCOMB 2.1\", \"KCOMB 2.2\", \"KCOMB 2.3\", \"KCOMB 4.1\", \"KFIT 10.1\", \"KFIT 11.1\", \"KFIT 12.1\", \"KFIT 17.1\", \"KFIT 20.1\", \"KFIT 3.1\", \"KFIT 3.2\", \"KFIT 3.3\", \"KFIT 30.1\", \"KFIT 31.1\", \"KFIT 32.1\", \"KFIT 35.1\", \"KFIT 36.1\", \"KFIT 37.1\", \"KFIT 4.1\", \"KFIT 5.1\", \"KFIT 5.2\", \"KFIT 50\", \"KFIT 6.1\", \"KFIT 6.2\", \"KFIT 7.1\", \"KFIT 7.2\", \"KFIT 8.1\", \"KFIT 8.2\", \"KINDV 2.1\", \"KINDV 2.2\", \"KINDV 3.1\", \"KINDV 3.2\", \"KINDV 4.1\", \"KINDV 4.2\", \"KINDV 4.3\", \"KINES 1\", \"KINES 21\", \"KINES 3\", \"KINES 4\", \"KINES 49\", \"KINES 50\", \"KINES 53\", \"KINES 55\", \"KINES 59\", \"KINES 62A\", \"KINES 62B\", \"KINES 62C\", \"KINES 62D\", \"KINES 64\", \"KINES 82\", \"KTEAM 4.1\", \"KTEAM 4.2\", \"KTEAM 4.3\", \"KTEAM 6.1\", \"KTEAM 6.2\", \"KTEAM 6.3\", \"KTEAM 7.1\", \"KTEAM 8.1\", \"KTEAM 8.2\", \"KTEAM 9.1\", \"LIR 10\", \"MA 160\", \"MA 161\", \"MA 162\", \"MA 163B\", \"MA 163BL\", \"MA 164\", \"MA 166.4\", \"MA 167A\", \"MA 167B\", \"MA 168\", \"MA 169\", \"MA 171\", \"MACH 51A\", \"MACH 51B\", \"MACH 770\", \"MACH 80A\", \"MATH 10\", \"MATH 101\", \"MATH 15\", \"MATH 150A\", \"MATH 150B\", \"MATH 151\", \"MATH 155\", \"MATH 16\", \"MATH 1A\", \"MATH 1B\", \"MATH 1C\", \"MATH 2\", \"MATH 25\", \"MATH 27\", \"MATH 4\", \"MATH 49\", \"MATH 5\", \"MATH 58\", \"MATH 6\", \"MATH 70\", \"MATH 71\", \"MATH 770\", \"MATH 9\", \"MEDIA 10\", \"MEDIA 14\", \"MEDIA 15\", \"MEDIA 19\", \"MEDIA 20\", \"MEDIA 4\", \"METRO 10\", \"METRO 10L\", \"MICRO 5\", \"MICRO 60\", \"MUSC 1\", \"MUSC 15\", \"MUSC 18\", \"MUSC 2A\", \"MUSC 2B\", \"MUSC 2D\", \"MUSC 3A\", \"MUSC 3B\", \"MUSC 3D\", \"MUSC 49\", \"MUSC 4B\", \"MUSC 50\", \"MUSC 51B\", \"MUSC 5A\", \"MUSC 5B\", \"MUSC 6.2\", \"MUSC 60B\", \"MUSC 7\", \"MUSC 8\", \"MUSC 9\", \"MUSCP 11A\", \"MUSCP 11B\", \"MUSCP 11D\", \"MUSCP 17A\", \"MUSCP 17B\", \"MUSCP 21A\", \"MUSCP 21B\", \"MUSCP 21C\", \"MUSCP 21D\", \"MUSCP 23A\", \"MUSCP 23B\", \"MUSCP 23C\", \"MUSCP 23D\", \"MUSCP 30A\", \"MUSCP 30B\", \"MUSCP 30C\", \"MUSCP 30D\", \"MUSCP 32A\", \"MUSCP 32B\", \"MUSCP 32C\", \"MUSCP 32D\", \"MUSCP 33A\", \"MUSCP 33B\", \"MUSCP 33C\", \"MUSCP 33D\", \"MUSCP 40.1\", \"MUSCP 40.2\", \"MUSCP 40.3\", \"MUSCP 40.4\", \"MUSCP 40.5\", \"MUSCP 40.6\", \"MUSCP 40.7\", \"MUSCP 42A\", \"MUSCP 42B\", \"MUSCP 42C\", \"MUSCP 42D\", \"MUSCP19.1A\", \"MUSCP19.1B\", \"NR 74.1\", \"NR 74.2\", \"NR 75.1A\", \"NR 75B\", \"NR 75C\", \"NR 75D\", \"NRA 150A\", \"NRA 150B\", \"NRM 12\", \"NRM 131\", \"NRM 132\", \"NRM 142\", \"NRM 51\", \"NRM 60\", \"NRM 84\", \"NRM 86\", \"NRM 91\", \"NRM 98\", \"NRM 99\", \"NRM 99I\", \"NRV 51L\", \"NRV 58A\", \"OA 501\", \"OA 502\", \"OA 505\", \"OA 507\", \"OA 581\", \"PHARM 153\", \"PHARM 154B\", \"PHARM 155\", \"PHARM 156\", \"PHARM 255\", \"PHARM256.1\", \"PHIL 10\", \"PHIL 11\", \"PHIL 21\", \"PHIL 3\", \"PHIL 4\", \"PHIL 49\", \"PHIL 5\", \"PHIL 6\", \"PHIL 7\", \"PHIL 8\", \"PHYS 1\", \"PHYS 11\", \"PHYS 20\", \"PHYS 20L\", \"PHYS 21\", \"PHYS 21L\", \"PHYS 40\", \"PHYS 41\", \"PHYS 42\", \"PHYS 43\", \"PHYS 49\", \"PHYSC 21\", \"PHYSIO 1\", \"PHYSIO 58\", \"PLS 50\", \"PLS 51\", \"PLS 52\", \"PLS 54\", \"PLS 65\", \"PLS 99I\", \"POLS 1\", \"POLS 18\", \"POLS 25\", \"PSYCH 1A\", \"PSYCH 1B\", \"PSYCH 3\", \"PSYCH 30\", \"PSYCH 34\", \"PSYCH 4\", \"PSYCH 5\", \"PSYCH 52\", \"PSYCH 56\", \"PSYCH 57\", \"PSYCH 7\", \"RADT 100\", \"RADT 61B\", \"RADT 61BL\", \"RADT 62BL\", \"RADT 63A\", \"RADT 65\", \"RADT 66\", \"RADT 98\", \"RE 50\", \"RE 51\", \"RE 52\", \"RE 57\", \"RELS 1\", \"RELS 15\", \"RELS 3\", \"RELS 32\", \"RELS 6.66\", \"SE 580\", \"SE 712\", \"SOC 1\", \"SOC 10\", \"SOC 2\", \"SOC 3\", \"SOC 30\", \"SOCS 12\", \"SOCS 49\", \"SPAN 1\", \"SPAN 2\", \"SPAN 3\", \"SPAN 4\", \"SPAN 49\", \"SPAN 50A\", \"SPAN 50B\", \"SPCH 1A\", \"SPCH 3A\", \"SPCH 52A\", \"SPCH 52B\", \"SPCH 52C\", \"SPCH 52D\", \"SPCH 60\", \"SPCH 9\", \"SURV 57\", \"SURV 59\", \"SUSAG 103\", \"SUSAG 109\", \"SUSAG 119\", \"SUSAG 50\", \"THAR 1\", \"THAR 10A\", \"THAR 10B\", \"THAR 11.1\", \"THAR 11.2\", \"THAR 11.3\", \"THAR 11.4\", \"THAR 11.8\", \"THAR 13.1\", \"THAR 19\", \"THAR 2\", \"THAR 20\", \"THAR 21\", \"THAR 22A\", \"THAR 22B\", \"THAR 25\", \"THAR 25.1\", \"THAR 25.2\", \"THAR 25.3\", \"THAR 25.4\", \"THAR 25.5\", \"THAR 26\", \"THAR 27\", \"THAR 28\", \"THAR 49\", \"THAR 50L\", \"THAR 63\", \"VE 713\", \"VIT 1\", \"VIT 113\", \"VIT 131\", \"VIT 52\", \"VIT 53\", \"VIT 55\", \"WELD 171.1\", \"WELD 171.2\", \"WELD 171.3\", \"WELD 175A\", \"WELD 175B\", \"WELD 70\", \"WELD 98\", \"WEOC 99\", \"WEOC 99I\", \"WINE 1\", \"WINE 102\", \"WINE 110\", \"WINE 111\", \"WINE 119\", \"WINE 125\", \"WINE 130\", \"WINE 131\", \"WINE 3\", \"WINE 42.2\", \"WINE 55A\", \"WINE 62\", \"WINE 70\", \"WRKEX 97\", \"WTR 104\", \"WTR 110\", \"WTR 111\", \"WWTR 121\", \"WWTR 122\", \"WWTR 124\" ];\r\n var currentCourses_ = [];\r\n var resultsSelectorPos = 0;\r\n var liHeight = 0;\r\n var resultsLen = 0;\r\n // elements \r\n /* private */\r\n var _ = {\r\n searchBox: $( \"#add-box\" ),\r\n searchButton: $( \"#add-button\" ),\r\n addBar: $( \".add-bar\" ),\r\n addResults: $( \"#add-results\" ),\r\n addResultsList: $( \"#add-results-list\" ),\r\n collapseButton: $( \".add-collapse\" ),\r\n closeButton: $( \".add-close\" ),\r\n };\r\n\r\n\r\n this.Init = function()\r\n {\r\n self.BindEvents();\r\n };\r\n\r\n this.BindEvents = function()\r\n {\r\n _.searchButton.click( function()\r\n {\r\n self.ToggleSearch( true );\r\n } );\r\n\r\n _.searchBox.blur( function()\r\n {\r\n self.ToggleSearch( false );\r\n } );\r\n\r\n _.searchBox.focus( function()\r\n {\r\n self.ToggleResultsPanel( true );\r\n } );\r\n\r\n _.collapseButton.click( function()\r\n {\r\n self.ToggleResultsPanel();\r\n } );\r\n\r\n _.closeButton.click( function()\r\n {\r\n _.searchBox.val( \"\" );\r\n self.ToggleSearch( false );\r\n self.ToggleResultsPanel( false );\r\n } );\r\n\r\n _.searchBox.on( \"input\", function()\r\n {\r\n var value = _.searchBox.val();\r\n\r\n if ( value !== \"\" )\r\n {\r\n self.AutoCompleteCourseName( value );\r\n }\r\n else\r\n {\r\n _.addResultsList.html( \"\" );\r\n }\r\n } );\r\n\r\n _.addResultsList.on( \"click\", \"li:not(.loading):not(.loaded)\", function()\r\n {\r\n self.RequestCourseData( $( this ) );\r\n } );\r\n\r\n\r\n $( document ).keydown( function( e )\r\n { // 38-up, 40-down\r\n if ( e.keyCode == 40 )\r\n {\r\n if ( resultsPanelActive )\r\n {\r\n if ( resultsSelectorPos + 1 < resultsLen )\r\n {\r\n e.preventDefault();\r\n _.addResultsList.children( 'li:eq(' + resultsSelectorPos++ +')' ).removeClass( 'active' );\r\n _.addResultsList.children( 'li:eq(' + resultsSelectorPos + ')' ).addClass( 'active' );\r\n\r\n\r\n _.addResults.stop().animate(\r\n {\r\n scrollTop: ( resultsSelectorPos - 2 ) * liHeight\r\n }, 150 );\r\n\r\n }\r\n }\r\n }\r\n else if ( e.keyCode == 38 )\r\n {\r\n if ( resultsPanelActive )\r\n {\r\n if ( resultsSelectorPos > 0 )\r\n {\r\n e.preventDefault();\r\n _.addResultsList.children( 'li:eq(' + resultsSelectorPos--+')' ).removeClass( 'active' );\r\n _.addResultsList.children( 'li:eq(' + resultsSelectorPos + ')' ).addClass( 'active' );\r\n\r\n\r\n _.addResults.stop().animate(\r\n {\r\n scrollTop: ( resultsSelectorPos - 2 ) * liHeight\r\n }, 150 );\r\n\r\n\r\n }\r\n }\r\n }\r\n else if ( e.keyCode == 13 )\r\n {\r\n if ( resultsPanelActive )\r\n {\r\n e.preventDefault();\r\n self.RequestCourseData( _.addResultsList.children( 'li:eq(' + resultsSelectorPos + '):not(.loading):not(.loaded)' ) );\r\n console.log( \"enter\" );\r\n }\r\n }\r\n else if ( e.keyCode == 27 )\r\n {\r\n if ( resultsPanelActive )\r\n {\r\n _.searchBox.val( \"\" );\r\n self.ToggleSearch( false );\r\n self.ToggleResultsPanel( false );\r\n }\r\n }\r\n } );\r\n\r\n };\r\n\r\n this.ToggleSearch = function( active )\r\n {\r\n if ( active === undefined )\r\n {\r\n searchActive = !searchActive;\r\n this.ToggleSearch( searchActive );\r\n }\r\n else if ( active )\r\n {\r\n searchActive = true;\r\n _.searchBox.addClass( \"active\" );\r\n _.searchButton.removeClass( \"active\" );\r\n _.addBar.addClass( \"active\" );\r\n _.searchBox.focus();\r\n _.addResultsList.html( \"\" );\r\n }\r\n else\r\n {\r\n searchActive = false;\r\n if ( _.searchBox.val() === \"\" )\r\n {\r\n _.searchBox.removeClass( \"active\" );\r\n _.searchButton.addClass( \"active\" );\r\n _.addBar.removeClass( \"active\" );\r\n this.ToggleResultsPanel( false );\r\n }\r\n }\r\n };\r\n\r\n this.ToggleResultsPanel = function( active )\r\n {\r\n if ( active === undefined )\r\n {\r\n resultsPanelActive = !resultsPanelActive;\r\n this.ToggleResultsPanel( resultsPanelActive );\r\n }\r\n else if ( active )\r\n {\r\n resultsPanelActive = true;\r\n\r\n _.addResults.addClass( \"active\" );\r\n _.collapseButton.removeClass( 'up' );\r\n }\r\n else\r\n {\r\n resultsPanelActive = false;\r\n _.addResults.removeClass( \"active\" );\r\n _.collapseButton.addClass( 'up' );\r\n }\r\n };\r\n\r\n\r\n\r\n\r\n this.RequestCourseData = function( $li )\r\n {\r\n var courseTitle = $li.attr( \"data-value\" );\r\n\r\n console.log( courseTitle );\r\n\r\n $.ajax(\r\n {\r\n url: 'http://srjcscheduler.com/php/addCourse.php',\r\n beforeSend: function()\r\n {\r\n $li.addClass( 'loading' );\r\n //$( '#loader' ).hide();\r\n //$( '#fountainG' ).show();\r\n //$( \"#B_addCourse div\" ).addClass( \"disabled\" );\r\n },\r\n data:\r\n {\r\n cls: courseTitle\r\n },\r\n timeout: 4000,\r\n complete: function( response )\r\n {\r\n var courseText = response.responseText;\r\n\r\n\r\n $li.removeClass( 'loading' );\r\n currentCourses_.push( courseTitle );\r\n\r\n\r\n\r\n\r\n\r\n try\r\n {\r\n console.log( courseText );\r\n courseText = self.ParseCourseText( courseText );\r\n console.log( courseText );\r\n srjc.schedule.AddCourse( courseText, courseTitle );\r\n\r\n $li.append( '<span>Added</span>' );\r\n $li.addClass( 'loaded' );\r\n }\r\n catch ( err )\r\n {\r\n console.warn( \"error adding course\" );\r\n // remoce course\r\n $li.removeClass( 'loaded' );\r\n $li.addClass( 'error' );\r\n\r\n $li.append( '<span>Error</span>' );\r\n\r\n currentCourses_.pop();\r\n setTimeout( function()\r\n {\r\n $li.removeClass( 'error' );\r\n $li.children( 'span' ).remove();\r\n }, 2000 );\r\n\r\n\r\n }\r\n finally\r\n {\r\n\r\n\r\n\r\n }\r\n\r\n\r\n },\r\n error: function()\r\n {\r\n console.warn( \"error adding course\" );\r\n }\r\n } );\r\n };\r\n\r\n this.ParseCourseText = function( courseText )\r\n {\r\n courseText = courseText.trim();\r\n courseText = courseText.match( /<(.*?)>/gm );\r\n return courseText;\r\n };\r\n\r\n this.AutoCompleteCourseName = function( search )\r\n {\r\n var results_ = [];\r\n var len = courseTitles_.length;\r\n var value = \"\";\r\n\r\n search = search.toUpperCase();\r\n search = search.replace( /([A-Z])(\\d)/, '$1 $2' );\r\n\r\n var searchLen = search.length;\r\n\r\n\r\n //console.log( search );\r\n\r\n for ( var i = 0; i < len; i++ )\r\n {\r\n value = courseTitles_[ i ];\r\n\r\n if ( value.substring( 0, searchLen ) === search )\r\n {\r\n results_.push( value );\r\n }\r\n }\r\n //console.log( results_ );\r\n self.CreateResultsList( results_ );\r\n\r\n };\r\n\r\n // public //\r\n this.CreateResultsList = function( results_ )\r\n {\r\n resultsLen = results_.length;\r\n\r\n if ( resultsLen === 0 )\r\n {\r\n _.addResultsList.html( \"<span>No Courses Found</span>\" );\r\n return;\r\n }\r\n else\r\n {\r\n _.addResultsList.html( \"\" );\r\n }\r\n\r\n\r\n for ( var i = 0; i < resultsLen; i++ )\r\n {\r\n var $li = $( \"<li>\" );\r\n var result = results_[ i ];\r\n\r\n $li.attr( \"data-value\", result )\r\n .append( result )\r\n .appendTo( _.addResultsList );\r\n if ( $.inArray( result, currentCourses_ ) > -1 )\r\n {\r\n $li.append( '<span>Added</span>' );\r\n $li.addClass( 'loaded' );\r\n }\r\n\r\n }\r\n\r\n _.addResultsList.children( 'li:eq(0)' ).addClass( 'active' );\r\n liHeight = _.addResultsList.children( 'li:eq(0)' ).outerHeight();\r\n\r\n resultsSelectorPos = 0;\r\n };\r\n\r\n\r\n\r\n}\r\n","console.log( \"Custom.js loaded\" );\r\n\r\n\r\nfunction Custom()\r\n{\r\n this.customs_ = [];\r\n\r\n var self = this;\r\n var active = false;\r\n\r\n\r\n\r\n var _ = {\r\n addCustomButton: $( \"#add-custom-button\" ),\r\n shadow: $( \"#shadow\" ),\r\n customDiv: $( \"#custom\" ),\r\n newEvent: $( \"#new-event\" ),\r\n };\r\n\r\n\r\n this.Init = function()\r\n {\r\n self.BindEvents();\r\n };\r\n\r\n this.BindEvents = function()\r\n {\r\n _.addCustomButton.click( function()\r\n {\r\n self.ToggleActive();\r\n console.log( self.active );\r\n } );\r\n\r\n _.newEvent.click( function()\r\n {\r\n self.AddCustom();\r\n console.log( \"new event\" );\r\n } );\r\n\r\n };\r\n\r\n this.ToggleActive = function( active )\r\n {\r\n if ( active === undefined )\r\n {\r\n self.active = !self.active;\r\n this.ToggleActive( self.active );\r\n }\r\n else if ( active )\r\n {\r\n self.active = true;\r\n _.customDiv.addClass( \"active\" );\r\n _.shadow.addClass( \"active\" );\r\n }\r\n else\r\n {\r\n self.active = false;\r\n _.customDiv.removeClass( \"active\" );\r\n _.shadow.removeClass( \"active\" );\r\n\r\n }\r\n };\r\n\r\n\r\n\r\n this.AddCustom = function()\r\n {\r\n var custom = new Event();\r\n this.customs_.push( custom );\r\n custom.Init();\r\n };\r\n\r\n}\r\n\r\n\r\nfunction Event()\r\n{\r\n this.title = '';\r\n this.label = '';\r\n this.eventSessions_ = [];\r\n this.$div = null;\r\n\r\n var self = this;\r\n\r\n var _ = {\r\n parentDiv: $( \"#events-wrap\" ),\r\n\r\n };\r\n\r\n\r\n this.Init = function()\r\n {\r\n self.style = NextStyle();\r\n self.$div = self.AddCustomElement( self.style );\r\n //self.BindEvents();\r\n };\r\n\r\n this.AddCustomElement = function( style )\r\n {\r\n var $eventDiv = $( \"<div/>\",\r\n {\r\n class: 'custom-box-wrap hide',\r\n\r\n } ).appendTo( _.parentDiv ); // create a course div\r\n\r\n $eventDiv.append(\r\n '<span> Custom Event 1 </span>' +\r\n '<div class=\"custom-event-wrap\">' +\r\n '<div class=\"cell-row cell-header\">' +\r\n ' <div class=\"cell\">Title</div>' +\r\n ' <div class=\"cell\">Label</div>' +\r\n '</div>' +\r\n '<div class=\"cell-row\">' +\r\n ' <div class=\"cell\">' +\r\n ' <div class=\"inter-cell\">' +\r\n ' <input type=\"text\" />' +\r\n ' </div>' +\r\n ' </div>' +\r\n ' <div class=\"cell\">' +\r\n ' <div class=\"inter-cell\">' +\r\n ' <input type=\"text\" />' +\r\n ' </div>' +\r\n ' </div>' +\r\n '</div>' +\r\n '<div class=\"cell-row cell-header\">' +\r\n ' <div class=\"cell\">Hours</div>' +\r\n ' <div class=\"cell\">Days</div>' +\r\n '</div>' +\r\n '<div class=\"cell-row\">' +\r\n ' <div class=\"cell\">' +\r\n ' <div class=\"inter-cell\">' +\r\n ' <input class=\"time\" type=\"time\" step=\"900\" />-' +\r\n ' <input class=\"time\" type=\"time\" step=\"900\" />' +\r\n ' </div>' +\r\n ' </div>' +\r\n '' +\r\n ' <div class=\"cell\">' +\r\n ' <div class=\"inter-cell\">' +\r\n ' <div class=\"button b-days\">' +\r\n ' <div class=\"button-inside active\">M</div>' +\r\n ' </div>' +\r\n ' <div class=\"button b-days\">' +\r\n ' <div class=\"button-inside\">T</div>' +\r\n ' </div>' +\r\n ' <div class=\"button b-days\">' +\r\n ' <div class=\"button-inside active\">W</div>' +\r\n ' </div>' +\r\n ' <div class=\"button b-days\">' +\r\n ' <div class=\"button-inside\">T</div>' +\r\n ' </div>' +\r\n ' <div class=\"button b-days\">' +\r\n ' <div class=\"button-inside\">F</div>' +\r\n ' </div>' +\r\n ' <div class=\"button b-days\">' +\r\n ' <div class=\"button-inside\">S</div>' +\r\n ' </div>' +\r\n ' <div class=\"button b-days\">' +\r\n ' <div class=\"button-inside\">S</div>' +\r\n ' </div>' +\r\n ' </div>' +\r\n ' </div>' +\r\n '</div>' +\r\n '<div class=\"cell-row add\">' +\r\n ' <div class=\"cell\">' +\r\n ' <div class=\"inter-cell\">' +\r\n ' <div class=\"button-wrap\">' +\r\n ' <div class=\"button\">' +\r\n ' <div class=\"button-inside add-time\">Add Time' +\r\n ' </div>' +\r\n ' </div>' +\r\n ' </div>' +\r\n ' </div>' +\r\n ' </div>' +\r\n '</div>' +\r\n '</div>'\r\n );\r\n\r\n var h = $eventDiv.height();\r\n $eventDiv.height( \"0px\" );\r\n\r\n $eventDiv.find( \".add-time\" ).css( 'background', 'hsl(' + style.hue + ', ' + ( style.sat ) + '%, ' + ( style.lit + 28 ) + '%)' );\r\n $eventDiv.css( 'background', 'hsl(' + style.hue + ', ' + ( style.sat + 5 ) + '%, ' + ( style.lit + 17 ) + '%)' );\r\n\r\n setTimeout( function()\r\n {\r\n $eventDiv.removeClass( 'hide' );\r\n $eventDiv.height( h + \"px\" );\r\n }, 20 );\r\n\r\n\r\n return $eventDiv;\r\n };\r\n\r\n}\r\n\r\n\r\nfunction EventSession()\r\n{\r\n\r\n}\r\n","console.log( \"Print.js loaded\" );\r\n\r\n\r\nfunction Print()\r\n{\r\n var self = this;\r\n var mediaQueryList = window.matchMedia( 'print' );\r\n var expandedCache = [];\r\n\r\n // elements \r\n /* private */\r\n var _ = {\r\n container: $( \"#container\" ),\r\n table: $( \"#tableInfo\" ),\r\n print: $( \".b-print>div>div\" ),\r\n\r\n };\r\n\r\n\r\n this.Init = function()\r\n {\r\n self.BindEvents();\r\n\r\n self.beforePrint();\r\n self.afterPrint();\r\n };\r\n\r\n this.BindEvents = function()\r\n {\r\n\r\n _.print.click( function()\r\n {\r\n window.print();\r\n } );\r\n\r\n window.onbeforeprint = function()\r\n {\r\n self.beforePrint();\r\n };\r\n\r\n window.onafterprint = function()\r\n {\r\n self.afterPrint();\r\n };\r\n\r\n mediaQueryList.addListener( function( mql )\r\n {\r\n if ( mql.matches )\r\n {\r\n self.beforePrint();\r\n }\r\n else\r\n {\r\n self.afterPrint();\r\n }\r\n } );\r\n\r\n\r\n };\r\n\r\n this.beforePrint = function()\r\n {\r\n _.container.addClass( 'print' );\r\n\r\n var courses_ = srjc.schedule.courses_;\r\n var coursesLen = courses_.length;\r\n expandedCache.splice( 0 , expandedCache.length );\r\n var tempCourse = null, i = 0;\r\n\r\n for ( i = 0; i < coursesLen; i++ )\r\n {\r\n tempCourse = courses_[ i ];\r\n expandedCache.push( tempCourse.expanded );\r\n tempCourse.ToggleExpanded( false );\r\n \r\n }\r\n\r\n for ( i = 0; i < coursesLen; i++ )\r\n {\r\n tempCourse = courses_[ i ];\r\n\r\n \r\n if ( tempCourse.$div.find('.class-solo').length === 0 || tempCourse.$div.find('.course-visible.active').length !== 0 )\r\n {\r\n tempCourse.$div.hide();\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n srjc.canvas.Redraw( true );\r\n\r\n\r\n this.CreateTable();\r\n console.log(\"before print\");\r\n };\r\n\r\n this.afterPrint = function()\r\n {\r\n var courses_ = srjc.schedule.courses_;\r\n var coursesLen = courses_.length;\r\n\r\n for ( var i = 0; i < coursesLen; i++ )\r\n {\r\n courses_[ i ].ToggleExpanded( expandedCache[ i ] );\r\n courses_[ i ].$div.show();\r\n }\r\n\r\n\r\n _.container.removeClass( 'print' );\r\n srjc.canvas.Redraw();\r\n console.log(\"after print\");\r\n };\r\n\r\n\r\n\r\n this.CreateTable = function()\r\n {\r\n _.table.width( '1100px' );\r\n _.table.html( \"<tr><th>Course</th><th>Sect</th><th>Days</th><th>Hours</th><th>Instructor</th><th>location</th><th>units</th><th>Date Begin/End</th><th>Date Final Exam</th></tr>\" );\r\n\r\n var courses_ = srjc.schedule.courses_;\r\n var coursesLen = courses_.length;\r\n\r\n for ( var i = 0; i < coursesLen; i++ )\r\n {\r\n var classes_ = courses_[ i ].classes_;\r\n var classesLen = classes_.length;\r\n\r\n for ( var j = 0; j < classesLen; j++ )\r\n {\r\n\r\n if ( classes_[ j ].active )\r\n {\r\n var tempClass = classes_[ j ];\r\n //$div.css( \"box-shadow\" , \"inset 0 0 0 1000px \" + col2 );\r\n _.table.append( \"<tr><td style='box-shadow: inset 0 0 0 1000px\" + \" hsl(\" + tempClass.style.hue + \",\" + 90 + \"%,\" + 60 + \"%)'><span>\" + courses_[ i ].courseTitle + \"</span></td><td><span>\" + tempClass.sect + \"</span></td><td><span>\" + self.GetDaysText( tempClass ) + \"</span></td><td><span>\" + self.GetTimeText( tempClass ) + \"</span></td><td><span>\" + self.GetInstrText( tempClass ) + \"</span></td><td><span>\" + self.GetLocText( tempClass ) + \"</span></td><td><span>\" + tempClass.units + \"</span></td><td><span>\" + self.GetDatesText( tempClass ) + \"</span></td><td><span>\" + tempClass.finalExam + \"</span></td></tr>\" );\r\n\r\n if ( tempClass.note !== \"\" )\r\n {\r\n _.table.append( \"<tr><td colspan='2'></td><td class='wrap' colspan='7'><span>\" + tempClass.note + \"</span></td></tr>\" );\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n _.table.append( \"<tr><td colspan='3'><span><strong>Totals: </strong></span></td><td><span><strong>\" + self.GetTotalHours() + \" hours</strong></span></td><td colspan='2'></td><td><span><strong>\" + self.GetTotalUnits() + \"</strong></span></td><td colspan='2'></td></tr>\" );\r\n };\r\n\r\n this.GetTotalHours = function()\r\n {\r\n var minutes = 0;\r\n var plus = false;\r\n\r\n var courses_ = srjc.schedule.courses_;\r\n var coursesLen = courses_.length;\r\n\r\n for ( var i = 0; i < coursesLen; i++ )\r\n {\r\n var classes_ = courses_[ i ].classes_;\r\n var classesLen = classes_.length;\r\n\r\n for ( var j = 0; j < classesLen; j++ )\r\n {\r\n if ( classes_[ j ].active )\r\n {\r\n var sessions_ = classes_[ j ].sessions_;\r\n var sessionsLen = sessions_.length;\r\n\r\n for ( var k = 0; k < sessionsLen; k++ )\r\n {\r\n var tempSession = sessions_[ k ];\r\n\r\n if ( tempSession.timeStart === 0 && tempSession.timeEnd === 0 )\r\n {\r\n var temp = parseFloat( tempSession.timeS ) * 60;\r\n\r\n if ( !isNaN( temp ) )\r\n {\r\n minutes += temp;\r\n }\r\n else\r\n {\r\n plus = true;\r\n }\r\n }\r\n else\r\n {\r\n var multi = 0;\r\n\r\n for ( var l = 0; l < tempSession.days_.length; l++ )\r\n {\r\n if ( tempSession.days_[ l ] == 1 )\r\n {\r\n multi++;\r\n }\r\n }\r\n\r\n minutes += ( tempSession.timeEnd - tempSession.timeStart ) * multi;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n console.log( \"minuts: \" + minutes );\r\n\r\n minutes /= 60;\r\n if ( plus === true )\r\n return minutes.toFixed( 1 ) + \"+\";\r\n else\r\n return minutes.toFixed( 1 );\r\n };\r\n\r\n\r\n this.GetTotalUnits = function()\r\n {\r\n var units = 0;\r\n\r\n var courses_ = srjc.schedule.courses_;\r\n var coursesLen = courses_.length;\r\n\r\n for ( var i = 0; i < coursesLen; i++ )\r\n {\r\n\r\n var classes_ = courses_[ i ].classes_;\r\n var classesLen = classesLen;\r\n\r\n for ( var j = 0; j < classesLen; j++ )\r\n {\r\n if ( classes_[ j ].active )\r\n {\r\n units += parseFloat( classes_[ j ].units );\r\n console.log( \"untis: \" + classes_[ j ].units );\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return units.toFixed( 1 );\r\n };\r\n\r\n\r\n\r\n this.GetDaysText = function( temp )\r\n {\r\n s = \"\";\r\n\r\n var sessions_ = temp.sessions_;\r\n var sessionsLen = sessions_.length;\r\n\r\n for ( var i = 0; i < sessionsLen; i++ )\r\n {\r\n s += sessions_[ i ].daysS;\r\n if ( i != sessionsLen - 1 )\r\n {\r\n s += \"<br>\";\r\n }\r\n }\r\n\r\n return s;\r\n };\r\n\r\n this.GetTimeText = function( temp )\r\n {\r\n s = \"\";\r\n\r\n var sessions_ = temp.sessions_;\r\n var sessionsLen = sessions_.length;\r\n\r\n for ( var i = 0; i < sessionsLen; i++ )\r\n {\r\n s += sessions_[ i ].timeS;\r\n if ( i != sessionsLen - 1 )\r\n {\r\n s += \"<br>\";\r\n }\r\n }\r\n\r\n return s;\r\n };\r\n\r\n this.GetInstrText = function( temp )\r\n {\r\n s = \"\";\r\n\r\n var sessions_ = temp.sessions_;\r\n var sessionsLen = sessions_.length;\r\n\r\n for ( var i = 0; i < sessionsLen; i++ )\r\n {\r\n s += sessions_[ i ].instructor;\r\n if ( i != sessionsLen - 1 )\r\n {\r\n s += \"<br>\";\r\n }\r\n }\r\n\r\n return s;\r\n };\r\n\r\n this.GetLocText = function( temp )\r\n {\r\n s = \"\";\r\n\r\n var sessions_ = temp.sessions_;\r\n var sessionsLen = sessions_.length;\r\n\r\n for ( var i = 0; i < sessionsLen; i++ )\r\n {\r\n s += sessions_[ i ].location;\r\n if ( i != sessionsLen - 1 )\r\n {\r\n s += \"<br>\";\r\n }\r\n }\r\n\r\n return s;\r\n };\r\n\r\n this.GetDatesText = function( temp )\r\n {\r\n s = \"\";\r\n\r\n var sessions_ = temp.sessions_;\r\n var sessionsLen = sessions_.length;\r\n\r\n for ( var i = 0; i < sessionsLen; i++ )\r\n {\r\n s += sessions_[ i ].dateS;\r\n if ( i != sessionsLen - 1 )\r\n {\r\n s += \"<br>\";\r\n }\r\n }\r\n\r\n return s;\r\n };\r\n}\r\n","console.log( \"Main.js loaded\" );\r\n\r\nvar SPRING_START = MonthToDay( 1 ) + 19; // January 1\r\nvar SPRING_END = MonthToDay( 5 ) + 8; // May 10\r\n\r\nvar SUMMER_START = MonthToDay( 6 ) + 20; // june 20\r\nvar SUMMER_END = MonthToDay( 7 ) + 27; // july 27\r\n\r\nvar FALL_START = MonthToDay( 8 ) + 26; // august 26\r\nvar FALL_END = MonthToDay( 12 ) + 9; // december 9\r\n\r\n\r\nfunction SRJC()\r\n{\r\n var self = this;\r\n this.schedule = null;\r\n this.info = null;\r\n this.canvas = null;\r\n this.add = null;\r\n this.custom = null;\r\n\r\n // public //\r\n this.Init = function()\r\n {\r\n self.schedule = new Schedule();\r\n self.canvas = new Canvas();\r\n self.info = new Info();\r\n self.add = new Add();\r\n self.custom = new Custom();\r\n self.print = new Print();\r\n\r\n self.add.Init();\r\n self.custom.Init();\r\n self.canvas.Init();\r\n self.print.Init();\r\n };\r\n\r\n $( '#footer' ).click( function()\r\n {\r\n var temp_ = [ \"<4336―MW┃MW―9:00 am - 10:30 am┃12:00 pm - 3:00 pm―Omrcen T┃Omrcen T―1999┃1948―5.00―Restricted―2―01/12-05/13┃01/12-05/13―5/20/2015―>\",\"<4337―MW┃TTh―9:00 am - 10:30 am┃7:30 am - 10:30 am―Omrcen T┃Omrcen T―1999┃1948―5.00―Open―9―01/12-05/14┃01/12-05/14―5/20/2015―>\",\"<4338―MW┃TTh―9:00 am - 10:30 am┃12:00 pm - 3:00 pm―Omrcen T┃Omrcen T―1999┃1948―5.00―Restricted―4―01/12-05/14┃01/12-05/14―5/20/2015―>\" ];\r\n self.schedule.AddCourse( temp_, \"MATH 2\", 1 );\r\n //self.add.RequestCourseData( \"PHYS 40\" );\r\n } );\r\n\r\n\r\n\r\n}\r\n\r\n\r\nvar srjc = new SRJC();\r\n\r\n$( function() // document has been loaded\r\n {\r\n setTimeout( function()\r\n {\r\n srjc.Init();\r\n }, 200 );\r\n //srjc.Init();\r\n } );\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nfunction MonthToDay( month )\r\n{\r\n var day = 0;\r\n\r\n switch ( month )\r\n {\r\n case 2:\r\n day += 31;\r\n break;\r\n case 3:\r\n day += 59;\r\n break;\r\n case 4:\r\n day += 90;\r\n break;\r\n case 5:\r\n day += 120;\r\n break;\r\n case 6:\r\n day += 151;\r\n break;\r\n case 7:\r\n day += 181;\r\n break;\r\n case 8:\r\n day += 212;\r\n break;\r\n case 9:\r\n day += 243;\r\n break;\r\n case 10:\r\n day += 273;\r\n break;\r\n case 11:\r\n day += 304;\r\n break;\r\n case 12:\r\n day += 334;\r\n break;\r\n }\r\n\r\n return day;\r\n}\r\n\r\n\r\nvar printObj = typeof JSON !== \"undefined\" ? JSON.stringify : function( obj ) {\r\n var arr = [];\r\n $.each( obj, function( key, val ) {\r\n var next = key + \": \";\r\n next += $.isPlainObject( val ) ? printObj( val ) : val;\r\n arr.push( next );\r\n });\r\n return \"{ \" + arr.join( \", \" ) + \" }\";\r\n};\r\n\r\n\r\n\r\n","/*!\n * jQuery JavaScript Library v1.11.2\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-12-17T15:27Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper window is present,\n\t\t// execute the factory and get jQuery\n\t\t// For environments that do not inherently posses a window with a document\n\t\t// (such as Node.js), expose a jQuery-making factory as module.exports\n\t\t// This accentuates the need for the creation of a real window\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Can't do this because several apps including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n// Support: Firefox 18+\n//\n\nvar deletedIds = [];\n\nvar slice = deletedIds.slice;\n\nvar concat = deletedIds.concat;\n\nvar push = deletedIds.push;\n\nvar indexOf = deletedIds.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\tversion = \"1.11.2\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android<4.1, IE<9\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: deletedIds.sort,\n\tsplice: deletedIds.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar src, copyIsArray, copy, name, options, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\t/* jshint eqeqeq: false */\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\treturn !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Handle iteration over inherited properties before own properties.\n\t\tif ( support.ownLast ) {\n\t\t\tfor ( key in obj ) {\n\t\t\t\treturn hasOwn.call( obj, key );\n\t\t\t}\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call(obj) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && jQuery.trim( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisArray = isArraylike( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android<4.1, IE<9\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArraylike( Object(arr) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( indexOf ) {\n\t\t\t\treturn indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\twhile ( j < len ) {\n\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)\n\t\tif ( len !== len ) {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tisArray = isArraylike( elems ),\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar args, proxy, tmp;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: function() {\n\t\treturn +( new Date() );\n\t},\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n});\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nfunction isArraylike( obj ) {\n\tvar length = obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\tif ( obj.nodeType === 1 && length ) {\n\t\treturn true;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.2.0-pre\n * http://sizzlejs.com/\n *\n * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-12-16\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// http://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar match, elem, m, nodeType,\n\t\t// QSA vars\n\t\ti, groups, old, nid, newContext, newSelector;\n\n\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\n\tcontext = context || document;\n\tresults = results || [];\n\tnodeType = context.nodeType;\n\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\tif ( !seed && documentIsHTML ) {\n\n\t\t// Try to shortcut find operations when possible (e.g., not under DocumentFragment)\n\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document (jQuery #6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\n\t\t// QSA path\n\t\tif ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\t\t\tnid = old = expando;\n\t\t\tnewContext = context;\n\t\t\tnewSelector = nodeType !== 1 && selector;\n\n\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t// IE 8 doesn't work on object elements\n\t\t\tif ( nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t} else {\n\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t}\n\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\ti = groups.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tgroups[i] = nid + toSelector( groups[i] );\n\t\t\t\t}\n\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;\n\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t}\n\n\t\t\tif ( newSelector ) {\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch(qsaError) {\n\t\t\t\t} finally {\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.removeAttribute(\"id\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {Function(string, Object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = attrs.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// If no document and documentElement is available, return\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Set our document\n\tdocument = doc;\n\tdocElem = doc.documentElement;\n\tparent = doc.defaultView;\n\n\t// Support: IE>8\n\t// If iframe document is assigned to \"document\" variable and if iframe has been reloaded,\n\t// IE will throw \"permission denied\" error when accessing \"document\" variable, see jQuery #13936\n\t// IE6-8 do not support the defaultView property so parent will be undefined\n\tif ( parent && parent !== parent.top ) {\n\t\t// IE11 does not have attachEvent, so all must suffer\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Support tests\n\t---------------------------------------------------------------------- */\n\tdocumentIsHTML = !isXML( doc );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( doc.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( doc.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !doc.getElementsByName || !doc.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [ m ] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\f]' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = doc.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully does not implement inclusive descendent\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === doc ? -1 :\n\t\t\t\tb === doc ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn doc;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, diff, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && cache[2];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\t\t\t\t\t\tif ( (oldCache = outerCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\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}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Keep `i` a string if there are no elements so `matchedCount` will be \"00\" below\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is no seed and only one group\n\tif ( match.length === 1 ) {\n\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\trsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"<input/>\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = (/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/);\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t});\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t});\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;\n\t});\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t}));\n};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tret = [],\n\t\t\tself = this,\n\t\t\tlen = self.length;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], false) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], true) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n});\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\n\t\t\t\t\t// scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[1],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn typeof rootjQuery.ready !== \"undefined\" ?\n\t\t\t\trootjQuery.ready( selector ) :\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.extend({\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\njQuery.fn.extend({\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && (pos ?\n\t\t\t\t\tpos.index(cur) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector(cur, selectors)) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.unique(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter(selector)\n\t\t);\n\t}\n});\n\nfunction sibling( cur, dir ) {\n\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\n\treturn cur;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tret = jQuery.unique( ret );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tret = ret.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\nvar rnotwhite = (/\\S+/g);\n\n\n\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t});\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\t\t// Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\n\t\t\t\t\t(function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== \"string\" ) {\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t})( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t}\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}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\tfiringLength = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[1] ](function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[1] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[0] ] = function() {\n\t\t\t\tdeferred[ tuple[0] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[0] + \"With\" ] = list.fireWith;\n\t\t});\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\n\t\t\t\t\t} else if ( !(--remaining) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend({\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( !document.body ) {\n\t\t\treturn setTimeout( jQuery.ready );\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n});\n\n/**\n * Clean-up method for dom ready events\n */\nfunction detach() {\n\tif ( document.addEventListener ) {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", completed, false );\n\t\twindow.removeEventListener( \"load\", completed, false );\n\n\t} else {\n\t\tdocument.detachEvent( \"onreadystatechange\", completed );\n\t\twindow.detachEvent( \"onload\", completed );\n\t}\n}\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\t// readyState === \"complete\" is good enough for us to call the dom ready in oldIE\n\tif ( document.addEventListener || event.type === \"load\" || document.readyState === \"complete\" ) {\n\t\tdetach();\n\t\tjQuery.ready();\n\t}\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// we once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jqu